Browse Source
Merge pull request #10418 from rusikv/bug/widgets-edit-with-search
Fixed widgets in search mode not editable
pull/10729/head
Igor Kulikov
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with
26 additions and
5 deletions
-
application/src/main/data/json/system/widget_types/asset_admin_table.json
-
application/src/main/data/json/system/widget_types/device_admin_table.json
-
application/src/main/data/json/system/widget_types/entities_hierarchy.json
-
application/src/main/data/json/system/widget_types/entities_table.json
-
application/src/main/data/json/system/widget_types/timeseries_table.json
-
ui-ngx/src/app/modules/home/components/widget/lib/entity/entities-hierarchy-widget.component.ts
-
ui-ngx/src/app/modules/home/components/widget/lib/entity/entities-table-widget.component.ts
-
ui-ngx/src/app/modules/home/components/widget/lib/timeseries-table-widget.component.ts
|
|
|
@ -11,7 +11,7 @@ |
|
|
|
"resources": [], |
|
|
|
"templateHtml": "<tb-entities-table-widget \n [ctx]=\"ctx\">\n</tb-entities-table-widget>", |
|
|
|
"templateCss": "", |
|
|
|
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.entitiesTableWidget.onDataUpdated();\n}\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n hasDataPageLink: true,\n warnOnPageDataOverflow: false,\n dataKeysOptional: true\n };\n}\n\nself.actionSources = function() {\n return {\n 'actionCellButton': {\n name: 'widget-action.action-cell-button',\n multiple: true,\n hasShowCondition: true\n },\n 'rowClick': {\n name: 'widget-action.row-click',\n multiple: false\n },\n 'rowDoubleClick': {\n name: 'widget-action.row-double-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n}\n", |
|
|
|
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.entitiesTableWidget.onDataUpdated();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.entitiesTableWidget.onEditModeChanged();\n}\n\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n hasDataPageLink: true,\n warnOnPageDataOverflow: false,\n dataKeysOptional: true\n };\n}\n\nself.actionSources = function() {\n return {\n 'actionCellButton': {\n name: 'widget-action.action-cell-button',\n multiple: true,\n hasShowCondition: true\n },\n 'rowClick': {\n name: 'widget-action.row-click',\n multiple: false\n },\n 'rowDoubleClick': {\n name: 'widget-action.row-double-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n}\n", |
|
|
|
"settingsSchema": "", |
|
|
|
"dataKeySettingsSchema": "", |
|
|
|
"settingsDirective": "tb-entities-table-widget-settings", |
|
|
|
|
|
|
|
@ -11,7 +11,7 @@ |
|
|
|
"resources": [], |
|
|
|
"templateHtml": "<tb-entities-table-widget \n [ctx]=\"ctx\">\n</tb-entities-table-widget>", |
|
|
|
"templateCss": "", |
|
|
|
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.entitiesTableWidget.onDataUpdated();\n}\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n hasDataPageLink: true,\n warnOnPageDataOverflow: false,\n dataKeysOptional: true\n };\n}\n\nself.actionSources = function() {\n return {\n 'actionCellButton': {\n name: 'widget-action.action-cell-button',\n multiple: true,\n hasShowCondition: true\n },\n 'rowClick': {\n name: 'widget-action.row-click',\n multiple: false\n },\n 'rowDoubleClick': {\n name: 'widget-action.row-double-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n}\n", |
|
|
|
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.entitiesTableWidget.onDataUpdated();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.entitiesTableWidget.onEditModeChanged();\n}\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n hasDataPageLink: true,\n warnOnPageDataOverflow: false,\n dataKeysOptional: true\n };\n}\n\nself.actionSources = function() {\n return {\n 'actionCellButton': {\n name: 'widget-action.action-cell-button',\n multiple: true,\n hasShowCondition: true\n },\n 'rowClick': {\n name: 'widget-action.row-click',\n multiple: false\n },\n 'rowDoubleClick': {\n name: 'widget-action.row-double-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n}\n", |
|
|
|
"settingsSchema": "", |
|
|
|
"dataKeySettingsSchema": "", |
|
|
|
"settingsDirective": "tb-entities-table-widget-settings", |
|
|
|
|
|
|
|
@ -11,7 +11,7 @@ |
|
|
|
"resources": [], |
|
|
|
"templateHtml": "<tb-entities-hierarchy-widget \n [ctx]=\"ctx\">\n</tb-entities-hierarchy-widget>", |
|
|
|
"templateCss": "", |
|
|
|
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.entitiesHierarchyWidget.onDataUpdated();\n}\n\nself.typeParameters = function() {\n return {\n dataKeysOptional: true\n };\n}\n\nself.actionSources = function() {\n return {\n 'nodeSelected': {\n name: 'widget-action.node-selected',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n}\n", |
|
|
|
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.entitiesHierarchyWidget.onDataUpdated();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.entitiesHierarchyWidget.onEditModeChanged();\n}\n\nself.typeParameters = function() {\n return {\n dataKeysOptional: true\n };\n}\n\nself.actionSources = function() {\n return {\n 'nodeSelected': {\n name: 'widget-action.node-selected',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n}\n", |
|
|
|
"settingsSchema": "", |
|
|
|
"dataKeySettingsSchema": "", |
|
|
|
"settingsDirective": "tb-entities-hierarchy-widget-settings", |
|
|
|
|
|
|
|
@ -11,7 +11,7 @@ |
|
|
|
"resources": [], |
|
|
|
"templateHtml": "<tb-entities-table-widget \n [ctx]=\"ctx\">\n</tb-entities-table-widget>", |
|
|
|
"templateCss": "", |
|
|
|
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.entitiesTableWidget.onDataUpdated();\n}\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n hasDataPageLink: true,\n warnOnPageDataOverflow: false,\n dataKeysOptional: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'name', type: 'entityField' }];\n }\n };\n}\n\nself.actionSources = function() {\n return {\n 'actionCellButton': {\n name: 'widget-action.action-cell-button',\n multiple: true,\n hasShowCondition: true\n },\n 'rowClick': {\n name: 'widget-action.row-click',\n multiple: false\n },\n 'rowDoubleClick': {\n name: 'widget-action.row-double-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n}\n", |
|
|
|
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.entitiesTableWidget.onDataUpdated();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.entitiesTableWidget.onEditModeChanged();\n}\n\nself.typeParameters = function() {\n return {\n maxDatasources: 1,\n hasDataPageLink: true,\n warnOnPageDataOverflow: false,\n dataKeysOptional: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'name', type: 'entityField' }];\n }\n };\n}\n\nself.actionSources = function() {\n return {\n 'actionCellButton': {\n name: 'widget-action.action-cell-button',\n multiple: true,\n hasShowCondition: true\n },\n 'rowClick': {\n name: 'widget-action.row-click',\n multiple: false\n },\n 'rowDoubleClick': {\n name: 'widget-action.row-double-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n}\n", |
|
|
|
"settingsSchema": "", |
|
|
|
"dataKeySettingsSchema": "", |
|
|
|
"settingsDirective": "tb-entities-table-widget-settings", |
|
|
|
|
|
|
|
@ -11,7 +11,7 @@ |
|
|
|
"resources": [], |
|
|
|
"templateHtml": "<tb-timeseries-table-widget \n [ctx]=\"ctx\">\n</tb-timeseries-table-widget>", |
|
|
|
"templateCss": "", |
|
|
|
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.timeseriesTableWidget.onDataUpdated();\n}\n\nself.onLatestDataUpdated = function() {\n self.ctx.$scope.timeseriesTableWidget.onLatestDataUpdated();\n}\n\nself.typeParameters = function() {\n return {\n ignoreDataUpdateOnIntervalTick: true,\n hasAdditionalLatestDataKeys: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'temperature', label: 'Temperature', type: 'timeseries', units: '°C', decimals: 0 }];\n }\n };\n}\n\nself.actionSources = function() {\n return {\n 'actionCellButton': {\n name: 'widget-action.action-cell-button',\n multiple: true,\n hasShowCondition: true\n },\n 'rowClick': {\n name: 'widget-action.row-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n}\n", |
|
|
|
"controllerScript": "self.onInit = function() {\n}\n\nself.onDataUpdated = function() {\n self.ctx.$scope.timeseriesTableWidget.onDataUpdated();\n}\n\nself.onLatestDataUpdated = function() {\n self.ctx.$scope.timeseriesTableWidget.onLatestDataUpdated();\n}\n\nself.onEditModeChanged = function() {\n self.ctx.$scope.timeseriesTableWidget.onEditModeChanged();\n}\n\nself.typeParameters = function() {\n return {\n ignoreDataUpdateOnIntervalTick: true,\n hasAdditionalLatestDataKeys: true,\n defaultDataKeysFunction: function() {\n return [{ name: 'temperature', label: 'Temperature', type: 'timeseries', units: '°C', decimals: 0 }];\n }\n };\n}\n\nself.actionSources = function() {\n return {\n 'actionCellButton': {\n name: 'widget-action.action-cell-button',\n multiple: true,\n hasShowCondition: true\n },\n 'rowClick': {\n name: 'widget-action.row-click',\n multiple: false\n }\n };\n}\n\nself.onDestroy = function() {\n}\n", |
|
|
|
"settingsSchema": "", |
|
|
|
"dataKeySettingsSchema": "", |
|
|
|
"latestDataKeySettingsSchema": "", |
|
|
|
|
|
|
|
@ -163,6 +163,13 @@ export class EntitiesHierarchyWidgetComponent extends PageComponent implements O |
|
|
|
this.updateNodeData(this.subscription.data); |
|
|
|
} |
|
|
|
|
|
|
|
public onEditModeChanged() { |
|
|
|
if (this.textSearchMode) { |
|
|
|
this.ctx.hideTitlePanel = !this.ctx.isEdit; |
|
|
|
this.ctx.detectChanges(true); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private initializeConfig() { |
|
|
|
this.ctx.widgetActions = [this.searchAction]; |
|
|
|
|
|
|
|
|
|
|
|
@ -266,6 +266,13 @@ export class EntitiesTableWidgetComponent extends PageComponent implements OnIni |
|
|
|
this.ctx.detectChanges(); |
|
|
|
} |
|
|
|
|
|
|
|
public onEditModeChanged() { |
|
|
|
if (this.textSearchMode) { |
|
|
|
this.ctx.hideTitlePanel = !this.ctx.isEdit; |
|
|
|
this.ctx.detectChanges(true); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public pageLinkSortDirection(): SortDirection { |
|
|
|
return entityDataPageLinkSortDirection(this.pageLink); |
|
|
|
} |
|
|
|
|
|
|
|
@ -307,6 +307,13 @@ export class TimeseriesTableWidgetComponent extends PageComponent implements OnI |
|
|
|
this.ctx.detectChanges(); |
|
|
|
} |
|
|
|
|
|
|
|
public onEditModeChanged() { |
|
|
|
if (this.textSearchMode) { |
|
|
|
this.ctx.hideTitlePanel = !this.ctx.isEdit; |
|
|
|
this.ctx.detectChanges(true); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private initialize() { |
|
|
|
this.ctx.widgetActions = [this.searchAction, this.columnDisplayAction]; |
|
|
|
|
|
|
|
|