Skip to content

Commit 0ec3783

Browse files
author
Martin Vach
committed
Merge branch 'stage' of https://github.com/Z-Wave-Me/ExpertUI
# Conflicts: # app/lang/language.ru.json
2 parents 9e05db7 + 2218097 commit 0ec3783

File tree

561 files changed

+68527
-196185
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

561 files changed

+68527
-196185
lines changed

Gruntfile.js

Lines changed: 149 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
11
module.exports = function (grunt) {
2+
// Application type : default/installer
3+
var pkg = grunt.file.readJSON('package.json');
4+
var app_type = pkg.app_type;
5+
var app_cfg = pkg.type_cfg[pkg.app_type];
6+
var app_version = pkg.v;
7+
var git_message = pkg.v;
8+
var app_rc = (pkg.rc ? pkg.rc + 1 : 0);
29

10+
if (app_rc) {
11+
app_version += '-RC-' + app_rc;
12+
git_message += '-RC-' + pkg.rc;
13+
}
314
// Project configuration.
415
grunt.initConfig({
5-
pkg: grunt.file.readJSON('package.json'),
16+
//pkg: grunt.file.readJSON('package.json'),
617
// Banner
718
banner: 'Copyright: Z-Wave Europe, Created: <%= grunt.template.today("dd-mm-yyyy HH:MM:ss") %>',
819
// Clean dir
920
clean: {
1021
options: {force: true},
11-
build: ["dist/"]
22+
build: [app_cfg.dir + '/']
1223
},
1324
// NG templates
1425
ngtemplates: {
@@ -28,39 +39,37 @@ module.exports = function (grunt) {
2839
}
2940
},
3041
src: 'app/views/**/*.html',
31-
dest: 'dist/app/js/templates.js'
42+
dest: app_cfg.dir + '/app/js/templates.js'
3243
}
3344
},
3445
// Concat
3546
concat: {
36-
indexhtml: {
37-
src: ['index.tpl.html'],
38-
dest: 'dist/index.html'
39-
},
4047
css: {
4148
src: [
4249
'app/css/main.css'
4350
],
44-
dest: 'dist/app/css/build.css'
51+
dest: app_cfg.dir + '/app/css/build.css'
4552
},
4653
js: {
4754
src: [
4855
// Vendors
4956
'vendor/jquery/jquery-1.11.1.min.js',
5057
'vendor/underscore/underscore-1.8.3/underscore-min.js',
51-
'vendor/cytoscape/cytoscape.js',
52-
'vendor/upload/angular-file-upload-shim.js',
58+
'vendor/cytoscape/cytoscape.min.js',
59+
'vendor/justgagejs/raphael-2.1.4.min.js',
60+
'vendor/justgagejs/justgage.js',
61+
'vendor/upload/angular-file-upload-shim.min.js',
5362
'vendor/alertify/alertify.min.js',
5463
// Angular
5564
'vendor/angular/angular-1.2.14/angular.min.js',
56-
'vendor/upload/angular-file-upload.js',
65+
'vendor/upload/angular-file-upload.min.js',
5766
'vendor/angular/angular-1.2.14/angular-route.min.js',
5867
'vendor/angular/angular-1.2.14/angular-resource.min.js',
5968
'vendor/angular/angular-1.2.14/angular-cookies.min.js',
6069
// Bootstrap
6170
'vendor/bootstrap/bootstrap.min.js',
6271
// XML
63-
'vendor/xml/xml2json.js',
72+
'vendor/xml/xml2json.min.js',
6473
// Z-Wave old ExpertU
6574
'vendor/zwave/pyzw.js',
6675
'vendor/zwave/pyzw_zwave_ui.js',
@@ -69,11 +78,12 @@ module.exports = function (grunt) {
6978
// APP
7079
'app/app.js',
7180
'app/routes.js',
72-
'dist/app/js/templates.js',
81+
app_cfg.dir + '/app/js/templates.js',
7382
'app/modules/qAllSettled.js',
7483
'app/directives/directives.js',
7584
'app/directives/angular-slider.js',
7685
'app/directives/dir-pagination.js',
86+
'app/directives/double-scroll-bars.min.js',
7787
'app/filters/filters.js',
7888
'app/factories/factories.js',
7989
'app/services/services.js',
@@ -97,9 +107,10 @@ module.exports = function (grunt) {
97107
'app/controllers/association.js',
98108
'app/controllers/control.js',
99109
'app/controllers/statistics.js',
100-
'app/controllers/routing.js',
110+
'app/controllers/neighbor.js',
101111
'app/controllers/reorganization.js',
102112
'app/controllers/timing.js',
113+
'app/controllers/linkstatus.js',
103114
'app/controllers/controllerinfo.js',
104115
'app/controllers/queue.js',
105116
'app/controllers/interviewcommand.js',
@@ -120,14 +131,15 @@ module.exports = function (grunt) {
120131
'app/jquery/jquery-app.js'
121132

122133
],
123-
dest: 'dist/app/js/build.js'
134+
dest: app_cfg.dir + '/app/js/build.js'
124135
}
125136
},
126137
json_generator: {
127138
target: {
128139
dest: "app/info.json",
129140
options: {
130-
name: 'Expert UI',
141+
name: app_cfg.name,
142+
version: app_version,
131143
built: '<%= grunt.template.today("dd-mm-yyyy HH:MM:ss") %>',
132144
timestamp: '<%= Math.floor(Date.now() / 1000) %>'
133145
}
@@ -142,35 +154,50 @@ module.exports = function (grunt) {
142154
'app/images/**',
143155
//'app/views/**',
144156
'app/lang/**'
145-
], dest: 'dist/'
157+
], dest: app_cfg.dir + '/'
146158
},
147-
{src:[ 'storage/**'],dest: 'dist/'},
148-
{expand: true, src: ['app/config.js'], dest: 'dist/app/js/', flatten: true}
149-
/*{src: ['storage/img/**'], dest: 'dist/'},
150-
{src: ['storage/demo/**'], dest: 'dist/'},
151-
{src: ['storage/data/**'], dest: 'dist/'}*/
159+
{src: ['storage/**'], dest: app_cfg.dir + '/'},
160+
{expand: true, src: ['app/config.js'], dest: app_cfg.dir + '/app/js/', flatten: true}
161+
/*{src: ['storage/img/**'], dest: app_cfg.dir + '/'},
162+
{src: ['storage/demo/**'], dest: app_cfg.dir + '/'},
163+
{src: ['storage/data/**'], dest: app_cfg.dir + '/'}*/
152164
]
153165
},
154166
info: {
155167
files: [
156-
{src: ['app/info.json'], dest: 'dist/app/info.json'}
168+
{src: ['app/info.json'], dest: app_cfg.dir + '/app/info.json'}
157169
]
158170
},
159171
fonts: {
160172
files: [
161-
{expand: true, src: ['app/fonts/*'], dest: 'dist/app/fonts/', flatten: true}
173+
{expand: true, src: ['app/fonts/*'], dest: app_cfg.dir + '/app/fonts/', flatten: true}
162174
]
163175
},
164176
angmap: {
165177
files: [
166-
{expand: true, src: ['vendor/angular/angular-1.2.14/angular-cookies.min.js.map'], dest: 'dist/app/js/', flatten: true},
167-
{expand: true, src: ['vendor/angular/angular-1.2.14/angular.min.js.map'], dest: 'dist/app/js/', flatten: true},
168-
{expand: true, src: ['vendor/angular/angular-1.2.14/angular-route.min.js.map'], dest: 'dist/app/js/', flatten: true}
178+
{
179+
expand: true,
180+
src: ['vendor/angular/angular-1.2.14/angular-cookies.min.js.map'],
181+
dest: app_cfg.dir + '/app/js/',
182+
flatten: true
183+
},
184+
{
185+
expand: true,
186+
src: ['vendor/angular/angular-1.2.14/angular.min.js.map'],
187+
dest: app_cfg.dir + '/app/js/',
188+
flatten: true
189+
},
190+
{
191+
expand: true,
192+
src: ['vendor/angular/angular-1.2.14/angular-route.min.js.map'],
193+
dest: app_cfg.dir + '/app/js/',
194+
flatten: true
195+
}
169196
]
170197
},
171198
licence: {
172199
files: [
173-
{src: ['LICENCE.md'], dest: 'dist/LICENCE.md'}
200+
{src: ['LICENCE.md'], dest: app_cfg.dir + '/LICENCE.md'}
174201
]
175202
}
176203
},
@@ -184,9 +211,9 @@ module.exports = function (grunt) {
184211
files: [
185212
{
186213
expand: true,
187-
cwd: 'dist/app/css/',
214+
cwd: app_cfg.dir + '/app/css/',
188215
src: ['*.css', '!*.min.css'],
189-
dest: 'dist/app/css/',
216+
dest: app_cfg.dir + '/app/css/',
190217
ext: '.css'
191218
}
192219
]
@@ -199,7 +226,7 @@ module.exports = function (grunt) {
199226
banner: '/* <%= banner %> */'
200227
},
201228
files: {
202-
src: [ 'dist/app/js/templates.js','dist/app/js/config.js','dist/app/js/build.js']
229+
src: [app_cfg.dir + '/app/js/templates.js', app_cfg.dir + '/app/js/config.js', app_cfg.dir + '/app/js/build.js']
203230
}
204231
},
205232
html: {
@@ -208,9 +235,94 @@ module.exports = function (grunt) {
208235
banner: '<!-- <%= banner %> -->'
209236
},
210237
files: {
211-
src: [ 'dist/index.html']
238+
src: [app_cfg.dir + '/index.html']
239+
}
240+
}
241+
},
242+
htmlbuild: {
243+
dist: {
244+
src: 'index.html',
245+
dest: app_cfg.dir + '/',
246+
options: {
247+
sections: {
248+
dist_head: 'app/views/dist_head.txt'
249+
}
250+
}
251+
252+
}
253+
},
254+
replace: {
255+
dist: {
256+
options: {
257+
patterns: [
258+
{
259+
match: /'app_type': 'default'/g,
260+
replacement: function () {
261+
return '\'app_type\': \'' + app_type + '\'';
262+
}
263+
},
264+
{
265+
match: /'app_type': 'installer'/g,
266+
replacement: function () {
267+
return '\'app_type\': \'' + app_type + '\'';
268+
}
269+
},
270+
{
271+
match: /'dev_host': \[([^\]]+)]/g,
272+
replacement: function () {
273+
return '\'dev_host\': \[\]';
274+
}
275+
},
276+
{
277+
match: 'dev',
278+
replacement: 'live'
279+
},
280+
{
281+
match: 'app_name',
282+
replacement: app_cfg.name
283+
},
284+
{
285+
match: 'app_version',
286+
replacement: app_version
287+
},
288+
{
289+
match: 'app_built',
290+
replacement: '<%= grunt.template.today("dd-mm-yyyy HH:MM:ss") %>'
291+
}
292+
]
293+
},
294+
files: [
295+
{expand: true, flatten: true, src: ['app/config.js'], dest: app_cfg.dir + '/app/js/'}
296+
]
297+
}
298+
},
299+
modify_json: {
300+
file: {
301+
expand: true,
302+
//cwd: 'test/',
303+
src: ['package.json'],
304+
options: {
305+
add: true,
306+
fields: {
307+
"rc": app_rc,
308+
"built": '<%= grunt.template.today("dd-mm-yyyy HH:MM:ss") %>'
309+
},
310+
indent: 2
212311
}
213312
}
313+
},
314+
'release-it': {
315+
options: {
316+
pkgFiles: ['package.json'],
317+
commitMessage: 'Release ' + app_cfg.name + ' ' + git_message,
318+
tagName: '%s',
319+
tagAnnotation: 'Release ' + app_cfg.name + ' ' + git_message,
320+
buildCommand: false
321+
}
322+
},
323+
clean: {
324+
options: {force: true},
325+
build: ['dist/storage/data/docs/']
214326
}
215327
});
216328
// Load the plugin that provides the "uglify" task.
@@ -226,8 +338,12 @@ module.exports = function (grunt) {
226338
grunt.loadNpmTasks('grunt-string-replace');
227339
grunt.loadNpmTasks('grunt-banner');
228340
grunt.loadNpmTasks('grunt-json-generator');
341+
grunt.loadNpmTasks('grunt-html-build');
342+
grunt.loadNpmTasks('grunt-replace');
343+
grunt.loadNpmTasks('grunt-release-it');
344+
grunt.loadNpmTasks('grunt-modify-json');
229345

230346
// Default task(s).
231347
//grunt.registerTask('default', ['clean','concat','copy','cssmin','string-replace']);
232-
grunt.registerTask('default', ['clean', 'ngtemplates','concat', 'json_generator','copy', 'cssmin','usebanner']);
348+
grunt.registerTask('default', ['clean', 'ngtemplates', 'concat', 'json_generator', 'copy', 'cssmin', 'usebanner', 'htmlbuild', 'replace', 'modify_json', 'clean']);
233349
};

README.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,37 @@ zwave-expertui
33

44
This User Interfaces allows to operate a Smart Home Network based on Z-Wave devices. It utilizes the software architecture "Z-Way", certified as Z-Wave Plus Controller.
55

6+
## v1.3.0
7+
#### New features
8+
- Progress bar in the firmware update tab.
9+
- Thermostat SetPoint has step of 0.5 deg
10+
- Analytics: Zniffer, Background noise, Noise Meter, Zniffer History.
11+
- Settings: Time and date format, Firmware Update, Bug report.
12+
- Network: Statistics visualization, Link status.
13+
14+
#### Changes
15+
- Firmware update: Target ID as select.
16+
- Neighbors: Completely refactored.
17+
18+
#### Fixes
19+
- Switches are duplicated.
20+
- Door lock open status is not shown.
21+
- Not available selection for two dongles.
22+
- The wakeup is shown, but device is mains powered.
23+
- Expert commands with multiple parameters are wrong.
24+
- Water Meters are not shown in the list of Meters question.
25+
- Can't configure second parameter.
26+
- In expert commands SwitchBinary 0 is sent instead of 255.
27+
- In routing table timestamps are not updated.
28+
- When I press Update on motion and tamper th clock is not becoming red.
29+
- F/w update UI is shown, but device don't have FirmwareUpgrade CC.
30+
- Thermostat widget sends wrong command.
31+
632
## v1.2.0
733
#### New features
834
- Notifications page.
935
- UZB: Button for uploading bootloader/firmware.
1036
- Interview progress bar.
11-
- CIT: network name, time format, firmware update, time zone, busy indicator, interview progressbar, network statitstics, primiscuous mode, bug report.
1237
- Icons in the menu.
1338
- Enhanced display on mobile devices and tablets.
1439
- Spinner indicators.

0 commit comments

Comments
 (0)