Browse Source

devices list make all tables same

remove full screen from buttons widget
gateway config tabs changes jumping
mat slider label level fix
empty static for gateway
Rpc command change style fix
change config modal change selector
gateway config modal on mobile fix
config dialog -> gateway page bug fix
pull/8337/head
Maksym Dudnik 3 years ago
parent
commit
bebee3e43b
  1. 186
      application/src/main/data/json/demo/dashboards/gateway_list.json
  2. 2
      application/src/main/data/json/system/widget_bundles/gateway_widgets.json
  3. 3
      ui-ngx/src/app/shared/components/device/gateway-configuration.component.html
  4. 4
      ui-ngx/src/app/shared/components/device/gateway-configuration.component.scss
  5. 8
      ui-ngx/src/app/shared/components/device/gateway-service-rpc.component.html
  6. 6
      ui-ngx/src/app/shared/components/device/gateway-service-rpc.component.scss
  7. 4
      ui-ngx/src/app/shared/components/device/gateway-statistics.component.html
  8. 1
      ui-ngx/src/app/shared/components/device/gateway-statistics.component.scss
  9. 2
      ui-ngx/src/app/shared/components/device/gateway-statistics.component.ts
  10. 2
      ui-ngx/src/app/shared/components/dialog/gateway-remote-configuration-dialog.ts
  11. 1
      ui-ngx/src/assets/locale/locale.constant-en_US.json

186
application/src/main/data/json/demo/dashboards/gateway_list.json

@ -175,9 +175,9 @@
"useShowWidgetActionFunction": null,
"showWidgetActionFunction": "return true;",
"type": "customPretty",
"customHtml": "<div class=\"container\">\n <tb-gateway-configuration [device]=\"entityId\" [dialogRef]=\"dialogRef\"></tb-gateway-configuration>\n</div>\n",
"customCss": ".container {\n width: 800px;\n height: 80vh;\n}",
"customFunction": "let $injector = widgetContext.$scope.$injector;\r\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\r\nlet deviceService = $injector.get(widgetContext.servicesMap.get('deviceService'));\r\nlet data = {};\r\n\r\nopenEditEntityDialog();\r\n\r\nfunction openEditEntityDialog() {\r\n customDialog.customDialog(htmlTemplate, EditEntityDialogController).subscribe();\r\n}\r\n\r\nfunction EditEntityDialogController(instance) {\r\n let vm = instance;\r\n vm.entityId = entityId;\r\n\r\n vm.close = function() {\r\n vm.dialogRef.close(null);\r\n };\r\n\r\n\r\n}",
"customHtml": "<div [ngClass]=\"ctx.isMobile ? 'container-mobile' : 'container'\">\n <tb-gateway-configuration [device]=\"entityId\" [dialogRef]=\"dialogRef\"></tb-gateway-configuration>\n</div>\n",
"customCss": ".container {\n width: 800px;\n height: 80vh;\n}\n\n.container-mobile {\n height: 100%;\n}",
"customFunction": "let $injector = widgetContext.$scope.$injector;\r\nlet customDialog = $injector.get(widgetContext.servicesMap.get('customDialog'));\r\nlet deviceService = $injector.get(widgetContext.servicesMap.get('deviceService'));\r\nlet data = {};\r\n\r\nopenEditEntityDialog();\r\n\r\nfunction openEditEntityDialog() {\r\n customDialog.customDialog(htmlTemplate, EditEntityDialogController).subscribe();\r\n}\r\n\r\nfunction EditEntityDialogController(instance) {\r\n let vm = instance;\r\n vm.ctx = widgetContext;\r\n vm.entityId = entityId;\r\n\r\n vm.close = function() {\r\n vm.dialogRef.close(null);\r\n };\r\n\r\n\r\n}",
"customResources": [],
"openInSeparateDialog": false,
"openInPopover": false,
@ -537,9 +537,9 @@
"padding": "8px",
"settings": {
"useMarkdownTextFunction": true,
"markdownTextFunction": "var blockData = '';\n\nfunction createDataBlock(value, label, mobile) {\n blockData += `\n <mat-card style=\"flex-grow: 1; width: ${mobile? '100%': 'auto'}; min-height: ${mobile? 'auto': '57px'}\">\n <div class=\"divider\"></div>\n <mat-divider vertical style=\"height:100%\"></mat-divider>\n <mat-card-header>\n <mat-card-subtitle>${label}</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content> ${value}</mat-card-content>\n </mat-card>`;\n}\ncreateDataBlock(data[0].Name, \"Gateway Name\", ctx.isMobile);\ncreateDataBlock(data[0].Type, \"Gateway Type\");\ncreateDataBlock(data[0].active, \"Status\");\ncreateDataBlock(data[1]?data[1].count:0, \"Active Devices\");\ncreateDataBlock(data[2]?data[2][\"count 2\"]:0, \"Inactive Devices\");\ncreateDataBlock(data[0].active_connectors?JSON.parse(data[0].active_connectors).length:0, \"Enabled Connectors\");\ncreateDataBlock(data[0].inactive_connectors?JSON.parse(data[0].inactive_connectors).length:0, \"Disabled Connectors\");\nreturn `<div fxLayout=\"row wrap\" fxLayoutGap=\"8px\" class=\"container\">${blockData}</div>`;",
"markdownTextFunction": "var blockData = '';\n\nfunction createDataBlock(value, label, mobile) {\n blockData += `\n <mat-card style=\"flex-grow: 1; width: ${mobile? '100%': 'auto'}; min-height: ${mobile? 'auto': '57px'}\">\n <div class=\"divider\"></div>\n <mat-divider vertical style=\"height:100%\"></mat-divider>\n <mat-card-header>\n <mat-card-subtitle>${label}</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content> ${value}</mat-card-content>\n </mat-card>`;\n}\ncreateDataBlock(data[0].Name, \"Gateway Name\", ctx.isMobile);\ncreateDataBlock(data[0].Type, \"Gateway Type\");\ncreateDataBlock(data[0].active, \"Status\");\ncreateDataBlock(data[1]?data[1].count:0, \"Active Devices\");\ncreateDataBlock(data[2]?data[2][\"count 2\"]:0, \"Inactive Devices\");\ncreateDataBlock(data[0].active_connectors?JSON.parse(data[0].active_connectors).length:0, \"Enabled Connectors\");\ncreateDataBlock(data[0].inactive_connectors?JSON.parse(data[0].inactive_connectors).length:0, \"Disabled Connectors\");\nreturn `<div fxLayout=\"row wrap\" fxLayoutGap=\"8px\" class=\"cards-container\">${blockData}</div>`;",
"applyDefaultMarkdownStyle": false,
"markdownCss": ".divider {\n position: absolute;\n width: 3px;\n top: 8px;\n border-radius: 2px;\n bottom: 8px;\n border: 1px solid rgba(31, 70, 144, 1);\n background-color: rgba(31, 70, 144, 1);\n left: 10px;\n}\n.mdc-card {\n position: relative;\n padding-left: 10px;\n margin-bottom: 1px;\n}\n\n.mat-mdc-card-subtitle {\n font-weight: 400;\n font-size: 12px;\n}\n\n.mat-mdc-card-header {\n padding: 8px 16px 0;\n}\n\n.mat-mdc-card-content:last-child {\n padding-bottom: 8px;\n font-size: 16px;\n}\n\n.container {\n height: calc(100% - 1px);\n justify-content: stretch;\n align-items: center;\n margin-bottom: 1px;\n}"
"markdownCss": ".divider {\n position: absolute;\n width: 3px;\n top: 8px;\n border-radius: 2px;\n bottom: 8px;\n border: 1px solid rgba(31, 70, 144, 1);\n background-color: rgba(31, 70, 144, 1);\n left: 10px;\n}\n.mdc-card {\n position: relative;\n padding-left: 10px;\n margin-bottom: 1px;\n}\n\n.mat-mdc-card-subtitle {\n font-weight: 400;\n font-size: 12px;\n}\n\n.mat-mdc-card-header {\n padding: 8px 16px 0;\n}\n\n.mat-mdc-card-content:last-child {\n padding-bottom: 8px;\n font-size: 16px;\n}\n\n.cards-container {\n height: calc(100% - 1px);\n justify-content: stretch;\n align-items: center;\n margin-bottom: 1px;\n}"
},
"title": "New Markdown/HTML Card",
"showTitleIcon": false,
@ -871,16 +871,12 @@
"name": null,
"entityAliasId": "a2f01c66-96cf-49c5-303f-e6f21c559ee8",
"filterId": null,
"dataKeys": [
{
"name": "eventsSent",
"type": "timeseries",
"label": "eventsSent",
"color": "#2196f3",
"settings": {},
"_hash": 0.0976422532267398
}
]
"dataKeys": null,
"alarmFilterConfig": {
"statusList": [
"ACTIVE"
]
}
}
],
"timewindow": {
@ -1874,7 +1870,7 @@
"iconSize": "24px",
"titleTooltip": "",
"dropShadow": true,
"enableFullscreen": true,
"enableFullscreen": false,
"widgetStyle": {
"borderRadius": "10px"
},
@ -1987,7 +1983,7 @@
"iconSize": "24px",
"titleTooltip": "",
"dropShadow": true,
"enableFullscreen": true,
"enableFullscreen": false,
"widgetStyle": {
"borderRadius": "10px"
},
@ -2323,7 +2319,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -2480,7 +2476,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -2637,7 +2633,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -2794,7 +2790,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -2951,7 +2947,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -3108,7 +3104,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -3265,7 +3261,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -3422,7 +3418,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -3579,7 +3575,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -3736,7 +3732,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -3893,7 +3889,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -4050,7 +4046,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -4207,7 +4203,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -4364,7 +4360,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -4521,7 +4517,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -4678,7 +4674,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -4835,7 +4831,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -4992,7 +4988,7 @@
"showTitleIcon": false,
"titleTooltip": "",
"widgetStyle": {
"borderRadius": "10px"
"borderRadius": " 0 0 10px 10px"
},
"widgetCss": ".status {\r\n border-radius: 20px;\r\n font-weight: 500;\r\n padding: 5px 15px;\r\n }\r\n\r\n .status-active {\r\n color: green;\r\n background: rgba(0, 128, 0, 0.1);\r\n }\r\n\r\n .status-inactive {\r\n color: red;\r\n background: rgba(255, 0, 0, 0.1);\r\n }\r\n",
"pageSize": 1024,
@ -5442,9 +5438,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5465,9 +5465,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5488,9 +5492,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5511,9 +5519,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5534,9 +5546,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5557,9 +5573,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5580,9 +5600,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5603,9 +5627,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5626,9 +5654,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5649,9 +5681,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5672,9 +5708,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5695,9 +5735,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5718,9 +5762,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5741,9 +5789,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}
@ -5764,9 +5816,13 @@
"gridSettings": {
"backgroundColor": "#eeeeee",
"columns": 24,
"margin": 10,
"margin": 0,
"outerMargin": true,
"backgroundSizeMode": "100%"
"backgroundSizeMode": "100%",
"autoFillHeight": false,
"backgroundImageUrl": null,
"mobileAutoFillHeight": false,
"mobileRowHeight": 70
}
}
}

2
application/src/main/data/json/system/widget_bundles/gateway_widgets.json

@ -132,7 +132,7 @@
"resources": [],
"templateHtml": "<tb-gateway-statistics [ctx]=ctx></tb-gateway-statistics>",
"templateCss": ".legend {\n font-size: 13px;\n line-height: 10px;\n}\n\n.legend table { \n border-spacing: 0px;\n border-collapse: separate;\n}\n\n.mouse-events .flot-overlay {\n cursor: crosshair; \n}\n\n",
"controllerScript": "self.onInit = function() { \n};\n\nself.onDataUpdated = function() {\n};\n\nself.onLatestDataUpdated = function() {\n};\n\nself.onResize = function() {\n};\n\nself.onEditModeChanged = function() {\n};\n\nself.onDestroy = function() {\n};\n\nself.typeParameters = function() {\n return {\n hasAdditionalLatestDataKeys: false\n };\n}\n",
"controllerScript": "self.onInit = function() { \n};\n\nself.onDataUpdated = function() {\n};\n\nself.onLatestDataUpdated = function() {\n};\n\nself.onResize = function() {\n};\n\nself.onEditModeChanged = function() {\n};\n\nself.onDestroy = function() {\n};\n\nself.typeParameters = function() {\n return {\n hasAdditionalLatestDataKeys: false,\n dataKeysOptional: true\n };\n}\n",
"settingsSchema": "{}",
"dataKeySettingsSchema": "{}",
"latestDataKeySettingsSchema": "{}",

3
ui-ngx/src/app/shared/components/device/gateway-configuration.component.html

@ -26,7 +26,7 @@
<mat-icon class="material-icons" style="color:#000;">close</mat-icon>
</button>
</mat-toolbar>
<mat-tab-group style="max-height: calc(100% - 115px)">
<mat-tab-group style="max-height: calc(100% - 117px); flex-grow: 1" >
<mat-tab label="{{'gateway.thingsboard-general' | translate}}">
<div formGroupName="thingsboard" fxLayout="column" class="mat-content mat-padding">
<mat-accordion multi>
@ -769,7 +769,6 @@
</div>
</mat-tab>
</mat-tab-group>
<div fxFlex></div>
<div mat-dialog-actions fxLayoutAlign="start center">
<button mat-button color="primary"
type="button"

4
ui-ngx/src/app/shared/components/device/gateway-configuration.component.scss

@ -168,8 +168,8 @@
}
.suffix-icon {
position: relative;
transform: translateY(5px);
position: absolute;
transform: translateY(-3px);
}
mat-panel-title {

8
ui-ngx/src/app/shared/components/device/gateway-service-rpc.component.html

@ -15,7 +15,7 @@
limitations under the License.
-->
<mat-card fxLayout="row" fxLayout.lt-sm="column" class="command-form" fxLayoutGap="10px" [formGroup]="commandForm">
<div fxLayout="row" fxLayout.lt-sm="column" class="command-form" fxLayoutGap="10px" [formGroup]="commandForm">
<mat-form-field class="mat-block tb-value-type">
<mat-label>{{'gateway.statistics.command' | translate}}</mat-label>
<mat-select formControlName="command" *ngIf="!isConnector">
@ -40,10 +40,10 @@
</mat-form-field>
<button mat-raised-button color="primary" (click)="sendCommand()"
[disabled]="commandForm.invalid">{{'gateway.rpc-command-send' | translate}}</button>
</mat-card>
<mat-card class="result-block" [formGroup]="commandForm" >
</div>
<mat-card class="result-block" [formGroup]="commandForm" fxFlex>
<span>{{'gateway.rpc-command-result' | translate}}</span>
<mat-divider></mat-divider>
<tb-json-content [contentType]="contentTypes.JSON" readonly="true" formControlName="result"></tb-json-content>
<tb-json-content [contentType]="contentTypes.JSON" readonly="true" formControlName="result" fxFlex></tb-json-content>
</mat-card>

6
ui-ngx/src/app/shared/components/device/gateway-service-rpc.component.scss

@ -38,6 +38,12 @@
.result-block {
padding: 0 15px;
display: flex;
flex-direction: column;
::ng-deep.tb-json-content {
height: 100%;
}
&>span {
font-weight: 600;

4
ui-ngx/src/app/shared/components/device/gateway-statistics.component.html

@ -29,6 +29,10 @@
</mat-option>
</mat-select>
</mat-form-field>
<mat-error
*ngIf="!statisticsKeys.length && !commands.length">
{{'gateway.statistics.statistic-commands-empty' | translate }}
</mat-error>
<!-- <mat-form-field class="mat-block" *ngIf="commandObj">-->
<!-- <mat-label>Timeout</mat-label>-->
<!-- <input matInput [value]="commandObj.timeout" disabled>-->

1
ui-ngx/src/app/shared/components/device/gateway-statistics.component.scss

@ -38,7 +38,6 @@
.chart-box, .chart-container {
height: 100%;
min-height: 300px;
flex-grow: 1;
}

2
ui-ngx/src/app/shared/components/device/gateway-statistics.component.ts

@ -58,7 +58,7 @@ export class GatewayStatisticsComponent extends PageComponent implements AfterVi
@Input()
public general: boolean;
public isNumericData: boolean = true;
public isNumericData: boolean = false;
public chartInited: boolean;
private flot: TbFlot;
private flotCtx;

2
ui-ngx/src/app/shared/components/dialog/gateway-remote-configuration-dialog.ts

@ -27,7 +27,7 @@ export interface GatewayRemoteConfigurationDialogData {
}
@Component({
selector: 'tb-activation-link-dialog',
selector: 'gateway-remote-configuration-dialog',
templateUrl: './gateway-remote-configuration-dialog.html'
})

1
ui-ngx/src/assets/locale/locale.constant-en_US.json

@ -2688,6 +2688,7 @@
"statistics": {
"statistic": "Statistic",
"statistics": "Statistics",
"statistic-commands-empty": "No statistics available",
"commands": "Commands",
"send-period": "Statistic send period (in sec)",
"send-period-required": "Statistic send period is required",

Loading…
Cancel
Save