UI: Add entities hierarchy widget settings form
This commit is contained in:
parent
b4b4015061
commit
63da3e048f
File diff suppressed because one or more lines are too long
@ -0,0 +1,74 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
Copyright © 2016-2022 The Thingsboard Authors
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<section class="tb-widget-settings" [formGroup]="entitiesHierarchyWidgetSettingsForm" fxLayout="column">
|
||||||
|
<fieldset class="fields-group">
|
||||||
|
<legend class="group-title" translate>widgets.entities-hierarchy.hierarchy-data-settings</legend>
|
||||||
|
<tb-js-func formControlName="nodeRelationQueryFunction"
|
||||||
|
[globalVariables]="functionScopeVariables"
|
||||||
|
[functionArgs]="['nodeCtx']"
|
||||||
|
functionTitle="{{ 'widgets.entities-hierarchy.relations-query-function' | translate }}"
|
||||||
|
helpId="widget/lib/entities_hierarchy/node_relation_query_fn">
|
||||||
|
</tb-js-func>
|
||||||
|
<tb-js-func formControlName="nodeHasChildrenFunction"
|
||||||
|
[globalVariables]="functionScopeVariables"
|
||||||
|
[functionArgs]="['nodeCtx']"
|
||||||
|
functionTitle="{{ 'widgets.entities-hierarchy.has-children-function' | translate }}"
|
||||||
|
helpId="widget/lib/entities_hierarchy/node_has_children_fn">
|
||||||
|
</tb-js-func>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset class="fields-group">
|
||||||
|
<legend class="group-title" translate>widgets.entities-hierarchy.node-state-settings</legend>
|
||||||
|
<tb-js-func formControlName="nodeOpenedFunction"
|
||||||
|
[globalVariables]="functionScopeVariables"
|
||||||
|
[functionArgs]="['nodeCtx']"
|
||||||
|
functionTitle="{{ 'widgets.entities-hierarchy.node-opened-function' | translate }}"
|
||||||
|
helpId="widget/lib/entities_hierarchy/node_opened_fn">
|
||||||
|
</tb-js-func>
|
||||||
|
<tb-js-func formControlName="nodeDisabledFunction"
|
||||||
|
[globalVariables]="functionScopeVariables"
|
||||||
|
[functionArgs]="['nodeCtx']"
|
||||||
|
functionTitle="{{ 'widgets.entities-hierarchy.node-disabled-function' | translate }}"
|
||||||
|
helpId="widget/lib/entities_hierarchy/node_disabled_fn">
|
||||||
|
</tb-js-func>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset class="fields-group">
|
||||||
|
<legend class="group-title" translate>widgets.entities-hierarchy.display-settings</legend>
|
||||||
|
<tb-js-func formControlName="nodeIconFunction"
|
||||||
|
[globalVariables]="functionScopeVariables"
|
||||||
|
[functionArgs]="['nodeCtx']"
|
||||||
|
functionTitle="{{ 'widgets.entities-hierarchy.node-icon-function' | translate }}"
|
||||||
|
helpId="widget/lib/entities_hierarchy/node_icon_fn">
|
||||||
|
</tb-js-func>
|
||||||
|
<tb-js-func formControlName="nodeTextFunction"
|
||||||
|
[globalVariables]="functionScopeVariables"
|
||||||
|
[functionArgs]="['nodeCtx']"
|
||||||
|
functionTitle="{{ 'widgets.entities-hierarchy.node-text-function' | translate }}"
|
||||||
|
helpId="widget/lib/entities_hierarchy/node_text_fn">
|
||||||
|
</tb-js-func>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset class="fields-group">
|
||||||
|
<legend class="group-title" translate>widgets.entities-hierarchy.sort-settings</legend>
|
||||||
|
<tb-js-func formControlName="nodesSortFunction"
|
||||||
|
[globalVariables]="functionScopeVariables"
|
||||||
|
[functionArgs]="['nodeCtx1', 'nodeCtx2']"
|
||||||
|
functionTitle="{{ 'widgets.entities-hierarchy.nodes-sort-function' | translate }}"
|
||||||
|
helpId="widget/lib/entities_hierarchy/nodes_sort_fn">
|
||||||
|
</tb-js-func>
|
||||||
|
</fieldset>
|
||||||
|
</section>
|
||||||
|
|
||||||
@ -0,0 +1,64 @@
|
|||||||
|
///
|
||||||
|
/// Copyright © 2016-2022 The Thingsboard Authors
|
||||||
|
///
|
||||||
|
/// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
/// you may not use this file except in compliance with the License.
|
||||||
|
/// You may obtain a copy of the License at
|
||||||
|
///
|
||||||
|
/// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
///
|
||||||
|
/// Unless required by applicable law or agreed to in writing, software
|
||||||
|
/// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
/// See the License for the specific language governing permissions and
|
||||||
|
/// limitations under the License.
|
||||||
|
///
|
||||||
|
|
||||||
|
import { Component } from '@angular/core';
|
||||||
|
import { WidgetSettings, WidgetSettingsComponent } from '@shared/models/widget.models';
|
||||||
|
import { FormBuilder, FormGroup } from '@angular/forms';
|
||||||
|
import { Store } from '@ngrx/store';
|
||||||
|
import { AppState } from '@core/core.state';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'tb-entities-hierarchy-widget-settings',
|
||||||
|
templateUrl: './entities-hierarchy-widget-settings.component.html',
|
||||||
|
styleUrls: ['./widget-settings.scss']
|
||||||
|
})
|
||||||
|
export class EntitiesHierarchyWidgetSettingsComponent extends WidgetSettingsComponent {
|
||||||
|
|
||||||
|
entitiesHierarchyWidgetSettingsForm: FormGroup;
|
||||||
|
|
||||||
|
constructor(protected store: Store<AppState>,
|
||||||
|
private fb: FormBuilder) {
|
||||||
|
super(store);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected settingsForm(): FormGroup {
|
||||||
|
return this.entitiesHierarchyWidgetSettingsForm;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected defaultSettings(): WidgetSettings {
|
||||||
|
return {
|
||||||
|
nodeRelationQueryFunction: '',
|
||||||
|
nodeHasChildrenFunction: '',
|
||||||
|
nodeOpenedFunction: '',
|
||||||
|
nodeDisabledFunction: '',
|
||||||
|
nodeIconFunction: '',
|
||||||
|
nodeTextFunction: '',
|
||||||
|
nodesSortFunction: '',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected onSettingsSet(settings: WidgetSettings) {
|
||||||
|
this.entitiesHierarchyWidgetSettingsForm = this.fb.group({
|
||||||
|
nodeRelationQueryFunction: [settings.nodeRelationQueryFunction, []],
|
||||||
|
nodeHasChildrenFunction: [settings.nodeHasChildrenFunction, []],
|
||||||
|
nodeOpenedFunction: [settings.nodeOpenedFunction, []],
|
||||||
|
nodeDisabledFunction: [settings.nodeDisabledFunction, []],
|
||||||
|
nodeIconFunction: [settings.nodeIconFunction, []],
|
||||||
|
nodeTextFunction: [settings.nodeTextFunction, []],
|
||||||
|
nodesSortFunction: [settings.nodesSortFunction, []]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -41,6 +41,9 @@ import {
|
|||||||
import {
|
import {
|
||||||
DashboardStateWidgetSettingsComponent
|
DashboardStateWidgetSettingsComponent
|
||||||
} from '@home/components/widget/lib/settings/dashboard-state-widget-settings.component';
|
} from '@home/components/widget/lib/settings/dashboard-state-widget-settings.component';
|
||||||
|
import {
|
||||||
|
EntitiesHierarchyWidgetSettingsComponent
|
||||||
|
} from '@home/components/widget/lib/settings/entities-hierarchy-widget-settings.component';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
@ -53,7 +56,8 @@ import {
|
|||||||
LabelWidgetLabelComponent,
|
LabelWidgetLabelComponent,
|
||||||
LabelWidgetSettingsComponent,
|
LabelWidgetSettingsComponent,
|
||||||
SimpleCardWidgetSettingsComponent,
|
SimpleCardWidgetSettingsComponent,
|
||||||
DashboardStateWidgetSettingsComponent
|
DashboardStateWidgetSettingsComponent,
|
||||||
|
EntitiesHierarchyWidgetSettingsComponent
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
@ -70,7 +74,8 @@ import {
|
|||||||
LabelWidgetLabelComponent,
|
LabelWidgetLabelComponent,
|
||||||
LabelWidgetSettingsComponent,
|
LabelWidgetSettingsComponent,
|
||||||
SimpleCardWidgetSettingsComponent,
|
SimpleCardWidgetSettingsComponent,
|
||||||
DashboardStateWidgetSettingsComponent
|
DashboardStateWidgetSettingsComponent,
|
||||||
|
EntitiesHierarchyWidgetSettingsComponent
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class WidgetSettingsModule {
|
export class WidgetSettingsModule {
|
||||||
@ -84,5 +89,6 @@ export const widgetSettingsComponentsMap: {[key: string]: Type<IWidgetSettingsCo
|
|||||||
'tb-markdown-widget-settings': MarkdownWidgetSettingsComponent,
|
'tb-markdown-widget-settings': MarkdownWidgetSettingsComponent,
|
||||||
'tb-label-widget-settings': LabelWidgetSettingsComponent,
|
'tb-label-widget-settings': LabelWidgetSettingsComponent,
|
||||||
'tb-simple-card-widget-settings': SimpleCardWidgetSettingsComponent,
|
'tb-simple-card-widget-settings': SimpleCardWidgetSettingsComponent,
|
||||||
'tb-dashboard-state-widget-settings': DashboardStateWidgetSettingsComponent
|
'tb-dashboard-state-widget-settings': DashboardStateWidgetSettingsComponent,
|
||||||
|
'tb-entities-hierarchy-widget-settings': EntitiesHierarchyWidgetSettingsComponent
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3247,6 +3247,19 @@
|
|||||||
"Ok": "Ok"
|
"Ok": "Ok"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"entities-hierarchy": {
|
||||||
|
"hierarchy-data-settings": "Hierarchy data settings",
|
||||||
|
"relations-query-function": "Node relations query function",
|
||||||
|
"has-children-function": "Node has children function",
|
||||||
|
"node-state-settings": "Node state settings",
|
||||||
|
"node-opened-function": "Default node opened function",
|
||||||
|
"node-disabled-function": "Node disabled function",
|
||||||
|
"display-settings": "Display settings",
|
||||||
|
"node-icon-function": "Node icon function",
|
||||||
|
"node-text-function": "Node text function",
|
||||||
|
"sort-settings": "Sort settings",
|
||||||
|
"nodes-sort-function": "Nodes sort function"
|
||||||
|
},
|
||||||
"input-widgets": {
|
"input-widgets": {
|
||||||
"attribute-not-allowed": "Attribute parameter cannot be used in this widget",
|
"attribute-not-allowed": "Attribute parameter cannot be used in this widget",
|
||||||
"blocked-location": "Geolocation is blocked in your browser",
|
"blocked-location": "Geolocation is blocked in your browser",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user