Changes for page Demo for Smart Office, Factory
Last modified by Hera Guo on 2024/11/11 17:08
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 11 added, 0 removed)
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 interface141 +**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