Last modified by Hera Guo on 2024/11/11 17:08

From version 18.1
edited by Hera Guo
on 2024/11/04 17:42
Change comment: There is no comment for this version
To version 19.1
edited by Hera Guo
on 2024/11/05 09:51
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -131,16 +131,479 @@
131 131  
132 132  === 4.1.2.Page Configuration ===
133 133  
134 -1、Configure the interface of the third layer Davies.
134 +==== 4.1.2.1、Configure the interface of the third layer Davies. ====
135 135  
136 136  
137 -2、Configure the interface of the second layer asset
137 +==== 4.1.2.2、Configure the interface of the second layer asset ====
138 138  
139 +**Equipment distribution diagram:**
139 139  
140 -3、Configure the first layer menu interface
141 +**Data:**
141 141  
142 -Map:
143 +[[image:1730770392454-317.png||height="745" width="1439"]]
143 143  
145 +Tooltip function:
146 +
147 +{{code language="none"}}
148 +var msg = data
149 +if(msg.Label=="gateway" && msg.type == "gateway"){
150 + var stauts
151 + if (msg.gatewaystauts=="true"){
152 + stauts = "Connect"
153 + }
154 + else{
155 + stauts = "Disconnected"
156 + }
157 + var str = "<b>"+msg.entityName+"</b><br/><b>"+stauts+"</b><br/>"
158 + return str
159 +}
160 +else if(msg.type=="gxhl01" && msg.Label!="gateway"){
161 + var str = "<b>"+msg.entityName+"</b><br/><b>"+msg.Label+"</b><br/><b>Bat:</b>"+msg.BatV+"V<br/><b>Temperature:</b>"+ msg.TempC_SHT+ "°C<br/><b>Humidity:</b>"+msg.Hum_SHT+"%"
162 + return str
163 +}
164 +else{
165 + var str = "<b>"+msg.entityName+"</b><br/><b>"+msg.Label+"</b><br/><b>Bat:</b>"+msg.BatV+"V<br/><b>Temperature:</b>"+ msg.temperature+ "°C<br/><b>Humidity:"+msg.humidity+"%"+"</b><br/>"+
166 + "<b>Co2:"+msg.co2+"</b></br><b>Air_Pressure:"+msg.air_pressure
167 +
168 + return str
169 +}
170 +{{/code}}
171 +
172 +==== Marker image function: ====
173 +
174 +{{code language="none"}}
175 +var res
176 +var msg = data
177 +if(msg.Label=="gateway" && msg.type=="gateway"){
178 + if (msg.gatewaystauts == "true"){
179 + res = {
180 + url: images[3],
181 + size: 40
182 +}
183 +}
184 +else{
185 + res = {
186 + url: images[2],
187 + size: 40
188 +}
189 +}}
190 +else if(msg.Label!="gateway" && msg.type=="gxhl01" ){
191 + if (msg.active=="false"){
192 + res = {
193 + url: images[1],
194 + size: 40
195 +}}
196 +else{
197 + res = {
198 + url: images[0],
199 + size: 40
200 +}
201 +}
202 +}
203 +else if(msg.type=="LWL02"){
204 + if (msg.WATER_LEAK_STATUS=="0"){
205 + res = {
206 + url: images[6],
207 + size: 40
208 +}}
209 +else{
210 + res = {
211 + url: images[7],
212 + size: 40
213 +}
214 +}
215 +}
216 +else if(msg.type=="LDS02"){
217 + if (msg.DOOR_OPEN_STATUS=="0"){
218 + res = {
219 + url: images[5],
220 + size: 40
221 +}}
222 +else{
223 + res = {
224 + url: images[8],
225 + size: 40
226 +}
227 +}
228 +}
229 +else if(msg.type=="LDS12"){
230 + res = {
231 + url: images[10],
232 + size: 40
233 +}}
234 +else if(msg.type=="SE01"){
235 + res = {
236 + url: images[9],
237 + size: 40
238 +}}
239 +else if(msg.type=="PB01"){
240 + res = {
241 + url: images[11],
242 + size: 40
243 +}}
244 +else if(msg.type=="S31b"){
245 + res = {
246 + url: images[12],
247 + size: 40
248 +}}
249 +else if(msg.type=="LHT65N"){
250 + res = {
251 + url: images[13],
252 + size: 40
253 +}}
254 +else{
255 + res = {
256 + url: images[4],
257 + size: 40
258 +}
259 +}
260 +return res;
261 +{{/code}}
262 +
263 +==== [[image:1730770875793-351.png]] ====
264 +
265 +==== Actions ====
266 +
267 +{{code language="none"}}
268 +var entitySubType;
269 +var $injector = widgetContext.$scope.$injector;
270 +$injector.get(widgetContext.servicesMap.get('entityService')).getEntity(entityId.entityType, entityId.id)
271 + .subscribe(function(data) {
272 + entitySubType = data.type;
273 + console.log(entitySubType)
274 + if (entitySubType == 'gateway') {
275 + openDashboardStates('gateway_detail');
276 + } else if (entitySubType == 'gxhl01') {
277 + openDashboardStates('detail');
278 + }
279 + else if(entitySubType == 'AQS01-dragino-office'){
280 + openDashboardStates("aqs01_detail")
281 + }
282 + else if (entitySubType == 'LDS12') {
283 + openDashboardStates('lds12_detail');
284 + }
285 + else if (entitySubType == 'LDS02') {
286 + openDashboardStates('lds02_detail');
287 + }
288 + else if (entitySubType == 'SE01') {
289 + openDashboardStates('se01_detail');
290 + }
291 + else if (entitySubType == 'PB01') {
292 + openDashboardStates('pb01_detail');
293 + }
294 + else if (entitySubType == 'LWL02') {
295 + openDashboardStates('lwl02_detail');
296 + }
297 + else if (entitySubType == 'LPS8N') {
298 + openDashboardStates('lps8n_detail');
299 + }
300 + else if (entitySubType == 'LHT65N') {
301 + openDashboardStates('lht65n_detail');
302 + }
303 + else if (entitySubType == 'S31b') {
304 + openDashboardStates('s31b_detail');
305 + }
306 + });
307 +
308 +function openDashboardStates(statedId) {
309 + var stateParams = widgetContext.stateController.getStateParams();
310 + var params = {
311 + entityId: entityId,
312 + entityName: entityName
313 + };
314 +
315 + if (stateParams.city) {
316 + params.city = stateParams.city;
317 + }
318 +
319 + widgetContext.stateController.openState(statedId, params, false);
320 +}
321 +
322 +{{/code}}
323 +
324 +[[image:1730771103096-522.png]]
325 +
326 +Device List
327 +
328 +Data:
329 +
330 +[[image:1730771199343-553.png]]
331 +
332 +Actions:
333 +
334 +[[image:1730771228766-212.png]]
335 +
336 +==== Edit device: ====
337 +
338 +{{code language="none"}}
339 +let $injector = widgetContext.$scope.$injector;
340 +let customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));
341 +let deviceService = $injector.get(widgetContext.servicesMap.get('deviceService'));
342 +let attributeService = $injector.get(widgetContext.servicesMap.get('attributeService'));
343 +
344 +openEditDeviceDialog();
345 +
346 +function openEditDeviceDialog() {
347 + customDialog.customDialog(htmlTemplate, EditDeviceDialogController).subscribe();
348 +}
349 +
350 +function EditDeviceDialogController(instance) {
351 + let vm = instance;
352 +
353 + vm.device = null;
354 + vm.attributes = {};
355 +
356 + vm.editDeviceFormGroup = vm.fb.group({
357 + deviceName: ['', [vm.validators.required]],
358 + deviceType: ['', [vm.validators.required]],
359 + deviceLabel: [''],
360 + attributes: vm.fb.group({
361 + latitude: [null],
362 + longitude: [null]
363 + })
364 + });
365 +
366 + vm.cancel = function() {
367 + vm.dialogRef.close(null);
368 + };
369 +
370 + vm.save = function() {
371 + vm.editDeviceFormGroup.markAsPristine();
372 + if (vm.editDeviceFormGroup.get('deviceType').value !== vm.device.type) {
373 + delete vm.device.deviceProfileId;
374 + }
375 + vm.device.name = vm.editDeviceFormGroup.get('deviceName').value,
376 + vm.device.type = vm.editDeviceFormGroup.get('deviceType').value,
377 + vm.device.label = vm.editDeviceFormGroup.get('deviceLabel').value
378 + deviceService.saveDevice(vm.device).subscribe(
379 + function () {
380 + saveAttributes().subscribe(
381 + function () {
382 + widgetContext.updateAliases();
383 + vm.dialogRef.close(null);
384 + }
385 + );
386 + }
387 + );
388 + };
389 +
390 + getEntityInfo();
391 +
392 + function getEntityInfo() {
393 + deviceService.getDevice(entityId.id).subscribe(
394 + function (device) {
395 + attributeService.getEntityAttributes(entityId, 'SERVER_SCOPE',
396 + ['latitude', 'longitude']).subscribe(
397 + function (attributes) {
398 + for (let i = 0; i < attributes.length; i++) {
399 + vm.attributes[attributes[i].key] = attributes[i].value;
400 + }
401 + vm.device = device;
402 + vm.editDeviceFormGroup.patchValue(
403 + {
404 + deviceName: vm.device.name,
405 + deviceType: vm.device.type,
406 + deviceLabel: vm.device.label,
407 + attributes: {
408 + latitude: vm.attributes.latitude,
409 + longitude: vm.attributes.longitude
410 + }
411 + }, {emitEvent: false}
412 + );
413 + }
414 + );
415 + }
416 + );
417 + }
418 +
419 + function saveAttributes() {
420 + let attributes = vm.editDeviceFormGroup.get('attributes').value;
421 + let attributesArray = [];
422 + for (let key in attributes) {
423 + attributesArray.push({key: key, value: attributes[key]});
424 + }
425 + if (attributesArray.length > 0) {
426 + return attributeService.saveEntityAttributes(entityId, 'SERVER_SCOPE', attributesArray);
427 + } else {
428 + return widgetContext.rxjs.of([]);
429 + }
430 + }
431 +}
432 +{{/code}}
433 +
434 +==== [[image:1730771256045-238.png]] ====
435 +
436 +Delete device:
437 +
438 +{{code language="none"}}
439 +let $injector = widgetContext.$scope.$injector;
440 +let dialogs = $injector.get(widgetContext.servicesMap.get('dialogs'));
441 +let deviceService = $injector.get(widgetContext.servicesMap.get('deviceService'));
442 +
443 +openDeleteDeviceDialog();
444 +
445 +function openDeleteDeviceDialog() {
446 + let title = "Are you sure you want to delete the device " + entityName + "?";
447 + let content = "Be careful, after the confirmation, the device and all related data will become unrecoverable!";
448 + dialogs.confirm(title, content, 'Cancel', 'Delete').subscribe(
449 + function (result) {
450 + if (result) {
451 + deleteDevice();
452 + }
453 + }
454 + );
455 +}
456 +
457 +function deleteDevice() {
458 + deviceService.deleteDevice(entityId.id).subscribe(
459 + function () {
460 + widgetContext.updateAliases();
461 + }
462 + );
463 +}
464 +
465 +{{/code}}
466 +
467 +[[image:1730771318657-502.png]]
468 +
469 +jump
470 +
471 +{{code language="none"}}
472 +console.log(entityName)
473 +var entitySubType;
474 +var $injector = widgetContext.$scope.$injector;
475 +//console.log($injector)
476 +$injector.get(widgetContext.servicesMap.get('entityService')).getEntity(entityId.entityType, entityId.id)
477 + .subscribe(function(data) {
478 + console.log(data)
479 + entitySubType = data.type;
480 + console.log(entitySubType)
481 + if (entitySubType == 'AQS01-dragino-office') {
482 + openDashboardStates('aqs01_detail');
483 + }else if (entitySubType == 'gateway') {
484 + openDashboardStates('gateway_detail');
485 + } else if (entitySubType == 'gxhl01') {
486 + openDashboardStates('detail');
487 +
488 + } else if (entitySubType == 'tank-type1') {
489 + openDashboardStates('test1');
490 + }
491 + else if (entitySubType == 'LDS12') {
492 + openDashboardStates('lds12_detail');
493 + }
494 + else if (entitySubType == 'LDS02') {
495 + openDashboardStates('lds02_detail');
496 + }
497 + else if (entitySubType == 'SE01') {
498 + openDashboardStates('se01_detail');
499 + }
500 + else if (entitySubType == 'PB01') {
501 + openDashboardStates('pb01_detail');
502 + }
503 + else if (entitySubType == 'LWL02') {
504 + openDashboardStates('lwl02_detail');
505 + }
506 + else if (entitySubType == 'LPS8N') {
507 + openDashboardStates('lps8n_detail');
508 + }
509 + else if (entitySubType == 'LHT65N') {
510 + openDashboardStates('lht65n_detail');
511 + }
512 + else if (entitySubType == 'S31b') {
513 + openDashboardStates('s31b_detail');
514 + }
515 + });
516 +
517 +function openDashboardStates(statedId) {
518 + var stateParams = widgetContext.stateController.getStateParams();
519 + //console.log(stateParams)
520 + var params = {
521 + entityId: entityId,
522 + entityName: entityName
523 + };
524 + widgetContext.stateController.updateState(statedId, params, false);
525 +}
526 +{{/code}}
527 +
528 +==== [[image:1730771386258-676.png]] ====
529 +
530 +Add device:
531 +
532 +{{code language="none"}}
533 +let $injector = widgetContext.$scope.$injector;
534 +let customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));
535 +let deviceService = $injector.get(widgetContext.servicesMap.get('deviceService'));
536 +let attributeService = $injector.get(widgetContext.servicesMap.get('attributeService'));
537 +
538 +openAddDeviceDialog();
539 +
540 +function openAddDeviceDialog() {
541 + customDialog.customDialog(htmlTemplate, AddDeviceDialogController).subscribe();
542 +}
543 +
544 +function AddDeviceDialogController(instance) {
545 + let vm = instance;
546 +
547 + vm.addDeviceFormGroup = vm.fb.group({
548 + deviceName: ['', [vm.validators.required]],
549 + deviceType: ['', [vm.validators.required]],
550 + deviceLabel: [''],
551 + attributes: vm.fb.group({
552 + latitude: [null],
553 + longitude: [null]
554 + })
555 + });
556 +
557 + vm.cancel = function() {
558 + vm.dialogRef.close(null);
559 + };
560 +
561 + vm.save = function() {
562 + vm.addDeviceFormGroup.markAsPristine();
563 + let device = {
564 + name: vm.addDeviceFormGroup.get('deviceName').value,
565 + type: vm.addDeviceFormGroup.get('deviceType').value,
566 + label: vm.addDeviceFormGroup.get('deviceLabel').value
567 + };
568 + deviceService.saveDevice(device).subscribe(
569 + function (device) {
570 + saveAttributes(device.id).subscribe(
571 + function () {
572 + widgetContext.updateAliases();
573 + vm.dialogRef.close(null);
574 + }
575 + );
576 + }
577 + );
578 + };
579 +
580 + function saveAttributes(entityId) {
581 + let attributes = vm.addDeviceFormGroup.get('attributes').value;
582 + let attributesArray = [];
583 + for (let key in attributes) {
584 + attributesArray.push({key: key, value: attributes[key]});
585 + }
586 + if (attributesArray.length > 0) {
587 + return attributeService.saveEntityAttributes(entityId, "SERVER_SCOPE", attributesArray);
588 + } else {
589 + return widgetContext.rxjs.of([]);
590 + }
591 + }
592 +}
593 +{{/code}}
594 +
595 +==== [[image:1730771441589-122.png]] ====
596 +
597 +==== Asset Alarm: ====
598 +
599 +Data:
600 +
601 +[[image:1730771504586-433.png]]
602 +
603 +==== 4.1.2.3、Configure the first layer menu interface ====
604 +
605 +**Map:**
606 +
144 144  Data:
145 145  
146 146  [[image:1730710271230-716.png||height="729" width="1427"]]
1730770392454-317.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.hera
Size
... ... @@ -1,0 +1,1 @@
1 +195.6 KB
Content
1730770636230-829.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.hera
Size
... ... @@ -1,0 +1,1 @@
1 +290.6 KB
Content
1730770875793-351.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.hera
Size
... ... @@ -1,0 +1,1 @@
1 +305.2 KB
Content
1730771103096-522.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.hera
Size
... ... @@ -1,0 +1,1 @@
1 +197.9 KB
Content
1730771199343-553.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.hera
Size
... ... @@ -1,0 +1,1 @@
1 +108.5 KB
Content
1730771228766-212.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.hera
Size
... ... @@ -1,0 +1,1 @@
1 +46.8 KB
Content
1730771256045-238.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.hera
Size
... ... @@ -1,0 +1,1 @@
1 +69.1 KB
Content
1730771318657-502.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.hera
Size
... ... @@ -1,0 +1,1 @@
1 +60.4 KB
Content
1730771386258-676.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.hera
Size
... ... @@ -1,0 +1,1 @@
1 +46.4 KB
Content
1730771441589-122.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.hera
Size
... ... @@ -1,0 +1,1 @@
1 +57.6 KB
Content
1730771504586-433.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.hera
Size
... ... @@ -1,0 +1,1 @@
1 +151.2 KB
Content