UI: move widget to home widget bundle
This commit is contained in:
		
							parent
							
								
									7b9f6c76cf
								
							
						
					
					
						commit
						b3a139d177
					
				@ -24,7 +24,6 @@
 | 
			
		||||
    "cards.html_value_card",
 | 
			
		||||
    "cards.markdown_card",
 | 
			
		||||
    "cards.simple_card",
 | 
			
		||||
    "unread_notifications",
 | 
			
		||||
    "api_usage"
 | 
			
		||||
    "unread_notifications"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@ -13,6 +13,7 @@
 | 
			
		||||
    "home_page_widgets.quick_links",
 | 
			
		||||
    "home_page_widgets.documentation_links",
 | 
			
		||||
    "home_page_widgets.dashboards",
 | 
			
		||||
    "home_page_widgets.usage_info"
 | 
			
		||||
    "home_page_widgets.usage_info",
 | 
			
		||||
    "api_usage"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@ -85,6 +85,7 @@ $warning-color: #FAA405;
 | 
			
		||||
          flex-direction: row;
 | 
			
		||||
          align-items: center;
 | 
			
		||||
          justify-content: space-between;
 | 
			
		||||
          gap: 8px;
 | 
			
		||||
          padding: 5px 16px;
 | 
			
		||||
          .api-item-title {
 | 
			
		||||
            display: flex;
 | 
			
		||||
 | 
			
		||||
@ -105,8 +105,7 @@ export class ApiUsageWidgetComponent implements OnInit, OnDestroy {
 | 
			
		||||
 | 
			
		||||
    this.currentState = this.ctx.stateController.getStateId();
 | 
			
		||||
    this.ctx.stateController.stateId().subscribe((state) => {
 | 
			
		||||
      // @ts-ignore
 | 
			
		||||
      this.ctx.dashboardWidget.updateCustomHeaderActions();
 | 
			
		||||
      this.ctx.updateParamsFromData(true);
 | 
			
		||||
      this.currentState = state;
 | 
			
		||||
      this.cd.markForCheck();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
@ -21,53 +21,56 @@
 | 
			
		||||
      class="tb-label-field tb-inline-field" appearance="outline" subscriptSizing="dynamic">
 | 
			
		||||
      <input matInput formControlName="label" placeholder="{{ 'widget-config.set' | translate }}">
 | 
			
		||||
    </mat-form-field>
 | 
			
		||||
    <mat-form-field
 | 
			
		||||
      class="tb-label-field tb-inline-field" appearance="outline" subscriptSizing="dynamic">
 | 
			
		||||
      <input matInput formControlName="state" placeholder="{{ 'widget-config.set' | translate }}">
 | 
			
		||||
    </mat-form-field>
 | 
			
		||||
    <tb-string-autocomplete [fetchOptionsFn]="fetchDashboardStates.bind(this)"
 | 
			
		||||
                            placeholderText="{{ 'widget-config.set' | translate }}"
 | 
			
		||||
                            style="flex: 1"
 | 
			
		||||
                            formControlName="state">
 | 
			
		||||
    </tb-string-autocomplete>
 | 
			
		||||
  </div>
 | 
			
		||||
  <div class="tb-data-key-fields">
 | 
			
		||||
    <tb-data-key-input
 | 
			
		||||
      class="tb-data-key-field"
 | 
			
		||||
      required
 | 
			
		||||
      requiredText="{{ 'widgets.api-usage.status-required'}}"
 | 
			
		||||
      [datasourceType]="DatasourceType.entity"
 | 
			
		||||
      [entityAliasId]="dsEntityAliasId"
 | 
			
		||||
      [aliasController]="context.aliasController"
 | 
			
		||||
      [widgetType]="widgetType.latest"
 | 
			
		||||
      [dataKeyTypes]="[DataKeyType.attribute, DataKeyType.timeseries]"
 | 
			
		||||
      [callbacks]="context.callbacks"
 | 
			
		||||
      [generateKey]="context.generateDataKey"
 | 
			
		||||
      (keyEdit)="editKey('status')"
 | 
			
		||||
      formControlName="status">
 | 
			
		||||
    </tb-data-key-input>
 | 
			
		||||
    <tb-data-key-input
 | 
			
		||||
      class="tb-data-key-field"
 | 
			
		||||
      required
 | 
			
		||||
      requiredText="{{ 'widgets.api-usage.limit-required'}}"
 | 
			
		||||
      [datasourceType]="DatasourceType.entity"
 | 
			
		||||
      [entityAliasId]="dsEntityAliasId"
 | 
			
		||||
      [aliasController]="context.aliasController"
 | 
			
		||||
      [widgetType]="widgetType.latest"
 | 
			
		||||
      [dataKeyTypes]="[DataKeyType.attribute, DataKeyType.timeseries]"
 | 
			
		||||
      [callbacks]="context.callbacks"
 | 
			
		||||
      [generateKey]="context.generateDataKey"
 | 
			
		||||
      (keyEdit)="editKey('maxLimit')"
 | 
			
		||||
      formControlName="maxLimit">
 | 
			
		||||
    </tb-data-key-input>
 | 
			
		||||
    <tb-data-key-input
 | 
			
		||||
      class="tb-data-key-field"
 | 
			
		||||
      required
 | 
			
		||||
      requiredText="{{ 'widgets.api-usage.current-number-required'}}"
 | 
			
		||||
      [datasourceType]="DatasourceType.entity"
 | 
			
		||||
      [entityAliasId]="dsEntityAliasId"
 | 
			
		||||
      [aliasController]="context.aliasController"
 | 
			
		||||
      [widgetType]="widgetType.latest"
 | 
			
		||||
      [dataKeyTypes]="[DataKeyType.attribute, DataKeyType.timeseries]"
 | 
			
		||||
      [callbacks]="context.callbacks"
 | 
			
		||||
      [generateKey]="context.generateDataKey"
 | 
			
		||||
      (keyEdit)="editKey('current')"
 | 
			
		||||
      formControlName="current">
 | 
			
		||||
    </tb-data-key-input>
 | 
			
		||||
  </div>
 | 
			
		||||
  <tb-data-key-input
 | 
			
		||||
    class="tb-data-key-field"
 | 
			
		||||
    required
 | 
			
		||||
    requiredText="{{ 'widgets.maps.data-layer.marker.latitude-key-required'}}"
 | 
			
		||||
    [datasourceType]="DatasourceType.entity"
 | 
			
		||||
    [entityAliasId]="dsEntityAliasId"
 | 
			
		||||
    [aliasController]="context.aliasController"
 | 
			
		||||
    [widgetType]="widgetType.latest"
 | 
			
		||||
    [dataKeyTypes]="[DataKeyType.attribute, DataKeyType.timeseries]"
 | 
			
		||||
    [callbacks]="context.callbacks"
 | 
			
		||||
    [generateKey]="context.generateDataKey"
 | 
			
		||||
    (keyEdit)="editKey('status')"
 | 
			
		||||
    formControlName="status">
 | 
			
		||||
  </tb-data-key-input>
 | 
			
		||||
  <tb-data-key-input
 | 
			
		||||
    class="tb-data-key-field"
 | 
			
		||||
    required
 | 
			
		||||
    requiredText="{{ 'widgets.maps.data-layer.marker.latitude-key-required'}}"
 | 
			
		||||
    [datasourceType]="DatasourceType.entity"
 | 
			
		||||
    [entityAliasId]="dsEntityAliasId"
 | 
			
		||||
    [aliasController]="context.aliasController"
 | 
			
		||||
    [widgetType]="widgetType.latest"
 | 
			
		||||
    [dataKeyTypes]="[DataKeyType.attribute, DataKeyType.timeseries]"
 | 
			
		||||
    [callbacks]="context.callbacks"
 | 
			
		||||
    [generateKey]="context.generateDataKey"
 | 
			
		||||
    (keyEdit)="editKey('maxLimit')"
 | 
			
		||||
    formControlName="maxLimit">
 | 
			
		||||
  </tb-data-key-input>
 | 
			
		||||
  <tb-data-key-input
 | 
			
		||||
    class="tb-data-key-field"
 | 
			
		||||
    required
 | 
			
		||||
    requiredText="{{ 'widgets.maps.data-layer.marker.latitude-key-required'}}"
 | 
			
		||||
    [datasourceType]="DatasourceType.entity"
 | 
			
		||||
    [entityAliasId]="dsEntityAliasId"
 | 
			
		||||
    [aliasController]="context.aliasController"
 | 
			
		||||
    [widgetType]="widgetType.latest"
 | 
			
		||||
    [dataKeyTypes]="[DataKeyType.attribute, DataKeyType.timeseries]"
 | 
			
		||||
    [callbacks]="context.callbacks"
 | 
			
		||||
    [generateKey]="context.generateDataKey"
 | 
			
		||||
    (keyEdit)="editKey('current')"
 | 
			
		||||
    formControlName="current">
 | 
			
		||||
  </tb-data-key-input>
 | 
			
		||||
  <div class="tb-form-table-row-cell-buttons">
 | 
			
		||||
    <div class="tb-remove-button">
 | 
			
		||||
      <button type="button"
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,7 @@
 | 
			
		||||
.tb-form-table-row.tb-api-usage-data-key-row {
 | 
			
		||||
 | 
			
		||||
  .tb-source-field {
 | 
			
		||||
    flex: 1 1 50%;
 | 
			
		||||
    flex: 1 1 25%;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    gap: 12px;
 | 
			
		||||
    .tb-label-field {
 | 
			
		||||
@ -26,8 +26,15 @@
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .tb-data-key-fields {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    gap: 12px;
 | 
			
		||||
    min-width: 0;
 | 
			
		||||
    flex: 1 1 50%;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .tb-data-key-field {
 | 
			
		||||
    flex: 1 1 25%;
 | 
			
		||||
    flex: 1;
 | 
			
		||||
    min-width: 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -39,20 +46,11 @@
 | 
			
		||||
  @media #{$mat-lt-lg} {
 | 
			
		||||
    .tb-source-field {
 | 
			
		||||
      flex-direction: column;
 | 
			
		||||
      flex: 1 1 30%;
 | 
			
		||||
      flex: 1 1 50%;
 | 
			
		||||
    }
 | 
			
		||||
    .tb-data-key-field{
 | 
			
		||||
      flex: 1 1 35%;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  @media screen and (min-width: 450px) and (max-width: 599px) {
 | 
			
		||||
    .tb-source-field {
 | 
			
		||||
      flex-direction: row;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  @media #{$mat-xs} {
 | 
			
		||||
    .tb-data-key-field {
 | 
			
		||||
      display: none;
 | 
			
		||||
    .tb-data-key-fields{
 | 
			
		||||
      flex-direction: column;
 | 
			
		||||
      flex: 1 1 50%;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -39,6 +39,7 @@ import {
 | 
			
		||||
  ApiUsageDataKeysSettings,
 | 
			
		||||
  ApiUsageSettingsContext
 | 
			
		||||
} from "@home/components/widget/lib/settings/cards/api-usage-settings.component.models";
 | 
			
		||||
import { Observable, of } from "rxjs";
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'tb-api-usage-data-key-row',
 | 
			
		||||
@ -148,4 +149,8 @@ export class ApiUsageDataKeyRowComponent implements ControlValueAccessor, OnInit
 | 
			
		||||
    this.modelValue = {...this.modelValue, ...this.dataKeyFormGroup.value};
 | 
			
		||||
    this.propagateChange(this.modelValue);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  fetchDashboardStates(searchText?: string): Observable<Array<string>> {
 | 
			
		||||
    return of(this.context.callbacks.fetchDashboardStates(searchText));
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -72,11 +72,14 @@
 | 
			
		||||
    <ng-template #noDataLayers>
 | 
			
		||||
      <span class="tb-prompt flex items-center justify-center">{{ 'widgets.api-usage.no-key' | translate }}</span>
 | 
			
		||||
    </ng-template>
 | 
			
		||||
 | 
			
		||||
    <mat-form-field class="flex" appearance="outline" subscriptSizing="dynamic">
 | 
			
		||||
      <mat-label translate>widgets.api-usage.target-dashboard-state</mat-label>
 | 
			
		||||
      <input matInput formControlName="targetDashboardState" placeholder="{{ 'widget-config.set' | translate }}">
 | 
			
		||||
    </mat-form-field>
 | 
			
		||||
    <tb-string-autocomplete [fetchOptionsFn]="fetchDashboardStates.bind(this)"
 | 
			
		||||
                            additionalClass="tb-suffix-show-on-hover"
 | 
			
		||||
                            appearance="outline"
 | 
			
		||||
                            panelWidth=""
 | 
			
		||||
                            label="{{ 'widgets.api-usage.target-dashboard-state' | translate }}"
 | 
			
		||||
                            style="flex: 1"
 | 
			
		||||
                            formControlName="targetDashboardState">
 | 
			
		||||
    </tb-string-autocomplete>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <div class="tb-form-panel">
 | 
			
		||||
 | 
			
		||||
@ -39,7 +39,7 @@ import {
 | 
			
		||||
  ApiUsageSettingsContext
 | 
			
		||||
} from "@home/components/widget/lib/settings/cards/api-usage-settings.component.models";
 | 
			
		||||
import { deepClone } from "@core/utils";
 | 
			
		||||
import { Observable } from "rxjs";
 | 
			
		||||
import { Observable, of } from "rxjs";
 | 
			
		||||
import {
 | 
			
		||||
  DataKeyConfigDialogComponent,
 | 
			
		||||
  DataKeyConfigDialogData
 | 
			
		||||
@ -81,12 +81,16 @@ export class ApiUsageWidgetSettingsComponent extends WidgetSettingsComponent {
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected doUpdateSettings(settingsForm: UntypedFormGroup, settings: WidgetSettings) {
 | 
			
		||||
    settingsForm.setControl('dataKeys', this.prepareDataKeysFormArray(settings?.dataKeys), {emitEvent: false});
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  dataKeysFormArray(): UntypedFormArray {
 | 
			
		||||
    return this.apiUsageWidgetSettingsForm.get('dataKeys') as UntypedFormArray;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  trackByDataKey(index: number, dataKeyControl: AbstractControl): any {
 | 
			
		||||
    return dataKeyControl;
 | 
			
		||||
  trackByDataKey(index: number): any {
 | 
			
		||||
    return index;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  get dragEnabled(): boolean {
 | 
			
		||||
@ -112,7 +116,7 @@ export class ApiUsageWidgetSettingsComponent extends WidgetSettingsComponent {
 | 
			
		||||
      current: null
 | 
			
		||||
    };
 | 
			
		||||
    const dataKeysArray = this.apiUsageWidgetSettingsForm.get('dataKeys') as UntypedFormArray;
 | 
			
		||||
    const dataKeyControl = this.fb.control(dataKey, [this.mapDataKeyValidator()]);
 | 
			
		||||
    const dataKeyControl = this.fb.control(dataKey, [this.apiUsageDataKeyValidator()]);
 | 
			
		||||
    dataKeysArray.push(dataKeyControl);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -124,6 +128,16 @@ export class ApiUsageWidgetSettingsComponent extends WidgetSettingsComponent {
 | 
			
		||||
    return apiUsageDefaultSettings;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected prepareInputSettings(settings: WidgetSettings): WidgetSettings {
 | 
			
		||||
    return {
 | 
			
		||||
      dsEntityAliasId: settings?.dsEntityAliasId,
 | 
			
		||||
      dataKeys: settings?.dataKeys,
 | 
			
		||||
      targetDashboardState: settings?.targetDashboardState,
 | 
			
		||||
      background: settings?.background,
 | 
			
		||||
      padding: settings.padding
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected onSettingsSet(settings: WidgetSettings) {
 | 
			
		||||
    this.apiUsageWidgetSettingsForm = this.fb.group({
 | 
			
		||||
      dsEntityAliasId: [settings?.dsEntityAliasId],
 | 
			
		||||
@ -138,7 +152,7 @@ export class ApiUsageWidgetSettingsComponent extends WidgetSettingsComponent {
 | 
			
		||||
    const dataKeysControls: Array<AbstractControl> = [];
 | 
			
		||||
    if (dataKeys) {
 | 
			
		||||
      dataKeys.forEach((dataLayer) => {
 | 
			
		||||
        dataKeysControls.push(this.fb.control(dataLayer, [this.mapDataKeyValidator()]));
 | 
			
		||||
        dataKeysControls.push(this.fb.control(dataLayer, [this.apiUsageDataKeyValidator()]));
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
    return this.fb.array(dataKeysControls);
 | 
			
		||||
@ -151,7 +165,7 @@ export class ApiUsageWidgetSettingsComponent extends WidgetSettingsComponent {
 | 
			
		||||
  protected updateValidators() {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  mapDataKeyValidator = (): ValidatorFn => {
 | 
			
		||||
  apiUsageDataKeyValidator = (): ValidatorFn => {
 | 
			
		||||
    return (control: AbstractControl): ValidationErrors | null => {
 | 
			
		||||
      const value: ApiUsageDataKeysSettings = control.value;
 | 
			
		||||
      if (!value?.label || !value?.current || !value?.maxLimit || !value?.status) {
 | 
			
		||||
@ -190,4 +204,8 @@ export class ApiUsageWidgetSettingsComponent extends WidgetSettingsComponent {
 | 
			
		||||
  private generateDataKey(key: DataKey): DataKey {
 | 
			
		||||
    return this.callbacks.generateDataKey(key.name, key.type, null, false, null);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  fetchDashboardStates(searchText?: string): Observable<Array<string>> {
 | 
			
		||||
    return of(this.callbacks.fetchDashboardStates(searchText));
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -147,6 +147,7 @@ export interface WidgetAction extends IWidgetAction {
 | 
			
		||||
 | 
			
		||||
export interface IDashboardWidget {
 | 
			
		||||
  updateWidgetParams(): void;
 | 
			
		||||
  updateParamsFromData(detectChanges?: boolean): void;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class WidgetContext {
 | 
			
		||||
@ -478,6 +479,10 @@ export class WidgetContext {
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  updateParamsFromData(detectChanges = false) {
 | 
			
		||||
    this.dashboardWidget.updateParamsFromData(detectChanges);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  updateAliases(aliasIds?: Array<string>) {
 | 
			
		||||
    this.aliasController.updateAliases(aliasIds);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -1484,18 +1484,7 @@
 | 
			
		||||
                    "titleStyle": null,
 | 
			
		||||
                    "configMode": "basic",
 | 
			
		||||
                    "actions": {
 | 
			
		||||
                        "headerButton": [
 | 
			
		||||
                            {
 | 
			
		||||
                                "name": "{i18n:api-usage.view-details}",
 | 
			
		||||
                                "icon": "insert_chart",
 | 
			
		||||
                                "type": "openDashboardState",
 | 
			
		||||
                                "targetDashboardStateId": "transport",
 | 
			
		||||
                                "setEntityId": false,
 | 
			
		||||
                                "stateEntityParamName": null,
 | 
			
		||||
                                "openRightLayout": false,
 | 
			
		||||
                                "id": "6ef12f6a-0266-25cf-6ca5-5dcb772252c6"
 | 
			
		||||
                            }
 | 
			
		||||
                        ]
 | 
			
		||||
                        "headerButton": []
 | 
			
		||||
                    },
 | 
			
		||||
                    "showTitleIcon": false,
 | 
			
		||||
                    "titleIcon": "thermostat",
 | 
			
		||||
@ -1868,18 +1857,7 @@
 | 
			
		||||
                    "titleStyle": null,
 | 
			
		||||
                    "configMode": "basic",
 | 
			
		||||
                    "actions": {
 | 
			
		||||
                        "headerButton": [
 | 
			
		||||
                            {
 | 
			
		||||
                                "name": "{i18n:api-usage.view-details}",
 | 
			
		||||
                                "icon": "insert_chart",
 | 
			
		||||
                                "type": "openDashboardState",
 | 
			
		||||
                                "targetDashboardStateId": "transport",
 | 
			
		||||
                                "setEntityId": false,
 | 
			
		||||
                                "stateEntityParamName": null,
 | 
			
		||||
                                "openRightLayout": false,
 | 
			
		||||
                                "id": "6ef12f6a-0266-25cf-6ca5-5dcb772252c6"
 | 
			
		||||
                            }
 | 
			
		||||
                        ]
 | 
			
		||||
                        "headerButton": []
 | 
			
		||||
                    },
 | 
			
		||||
                    "showTitleIcon": false,
 | 
			
		||||
                    "titleIcon": "thermostat",
 | 
			
		||||
@ -2298,16 +2276,6 @@
 | 
			
		||||
                                "stateEntityParamName": null,
 | 
			
		||||
                                "openRightLayout": false,
 | 
			
		||||
                                "id": "f9f08190-9ed9-d802-5b7a-c57ff84b5648"
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                "name": "{i18n:api-usage.view-details}",
 | 
			
		||||
                                "icon": "insert_chart",
 | 
			
		||||
                                "type": "openDashboardState",
 | 
			
		||||
                                "targetDashboardStateId": "rule_engine_execution",
 | 
			
		||||
                                "setEntityId": false,
 | 
			
		||||
                                "stateEntityParamName": null,
 | 
			
		||||
                                "openRightLayout": false,
 | 
			
		||||
                                "id": "1aec196b-44ba-ddf4-c4dc-c3f60c1eb6fc"
 | 
			
		||||
                            }
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
@ -2718,18 +2686,7 @@
 | 
			
		||||
                    "titleStyle": null,
 | 
			
		||||
                    "configMode": "basic",
 | 
			
		||||
                    "actions": {
 | 
			
		||||
                        "headerButton": [
 | 
			
		||||
                            {
 | 
			
		||||
                                "name": "{i18n:api-usage.view-details}",
 | 
			
		||||
                                "icon": "insert_chart",
 | 
			
		||||
                                "type": "openDashboardState",
 | 
			
		||||
                                "targetDashboardStateId": "telemetry_persistence",
 | 
			
		||||
                                "setEntityId": false,
 | 
			
		||||
                                "stateEntityParamName": null,
 | 
			
		||||
                                "openRightLayout": false,
 | 
			
		||||
                                "id": "16707efb-e572-bd02-c219-55fc1b0f672a"
 | 
			
		||||
                            }
 | 
			
		||||
                        ]
 | 
			
		||||
                        "headerButton": []
 | 
			
		||||
                    },
 | 
			
		||||
                    "showTitleIcon": false,
 | 
			
		||||
                    "titleIcon": "thermostat",
 | 
			
		||||
@ -5408,9 +5365,9 @@
 | 
			
		||||
                                "customButtonStyle": {},
 | 
			
		||||
                                "useShowWidgetActionFunction": null,
 | 
			
		||||
                                "showWidgetActionFunction": "return true;",
 | 
			
		||||
                                "type": "updateDashboardState",
 | 
			
		||||
                                "type": "openDashboardState",
 | 
			
		||||
                                "targetDashboardStateId": "rule_engine_statistics",
 | 
			
		||||
                                "setEntityId": false,
 | 
			
		||||
                                "setEntityId": true,
 | 
			
		||||
                                "stateEntityParamName": null,
 | 
			
		||||
                                "openRightLayout": false,
 | 
			
		||||
                                "openInSeparateDialog": false,
 | 
			
		||||
@ -5835,9 +5792,9 @@
 | 
			
		||||
                                "customButtonStyle": {},
 | 
			
		||||
                                "useShowWidgetActionFunction": null,
 | 
			
		||||
                                "showWidgetActionFunction": "return true;",
 | 
			
		||||
                                "type": "updateDashboardState",
 | 
			
		||||
                                "type": "openDashboardState",
 | 
			
		||||
                                "targetDashboardStateId": "rule_engine_statistics",
 | 
			
		||||
                                "setEntityId": false,
 | 
			
		||||
                                "setEntityId": true,
 | 
			
		||||
                                "stateEntityParamName": null,
 | 
			
		||||
                                "openRightLayout": false,
 | 
			
		||||
                                "openInSeparateDialog": false,
 | 
			
		||||
@ -6272,9 +6229,9 @@
 | 
			
		||||
                                "customButtonStyle": {},
 | 
			
		||||
                                "useShowWidgetActionFunction": null,
 | 
			
		||||
                                "showWidgetActionFunction": "return true;",
 | 
			
		||||
                                "type": "updateDashboardState",
 | 
			
		||||
                                "type": "openDashboardState",
 | 
			
		||||
                                "targetDashboardStateId": "rule_engine_statistics",
 | 
			
		||||
                                "setEntityId": false,
 | 
			
		||||
                                "setEntityId": true,
 | 
			
		||||
                                "stateEntityParamName": null,
 | 
			
		||||
                                "openRightLayout": false,
 | 
			
		||||
                                "openInSeparateDialog": false,
 | 
			
		||||
@ -13275,7 +13232,7 @@
 | 
			
		||||
                                    "padding": "0 16px"
 | 
			
		||||
                                },
 | 
			
		||||
                                "useShowWidgetActionFunction": true,
 | 
			
		||||
                                "showWidgetActionFunction": "console.log(widgetContext.stateController.getStateId(), widgetContext.settings.targetDashboardState)\nreturn widgetContext.stateController.getStateId() !== widgetContext.settings.targetDashboardState && widgetContext.settings.targetDashboardState;",
 | 
			
		||||
                                "showWidgetActionFunction": "return widgetContext.stateController.getStateId() !== widgetContext.settings.targetDashboardState && widgetContext.settings.targetDashboardState;",
 | 
			
		||||
                                "type": "custom",
 | 
			
		||||
                                "customFunction": "const state = widgetContext.settings.targetDashboardState?.length ? widgetContext.settings.targetDashboardState : 'default';\nwidgetContext.stateController.updateState(state, widgetContext.stateController.getStateParams(), false);",
 | 
			
		||||
                                "openInSeparateDialog": false,
 | 
			
		||||
@ -13340,25 +13297,33 @@
 | 
			
		||||
                                "sizeX": 7,
 | 
			
		||||
                                "sizeY": 5,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "d0a10a8f-8f48-f9d6-8306-d12af9b49690": {
 | 
			
		||||
                                "sizeX": 7,
 | 
			
		||||
                                "sizeY": 5,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 7
 | 
			
		||||
                                "col": 7,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "4544080d-9b6f-b592-9cd4-0e0335d33857": {
 | 
			
		||||
                                "sizeX": 7,
 | 
			
		||||
                                "sizeY": 5,
 | 
			
		||||
                                "row": 5,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "5d0f2f57-499d-1324-8e1b-cfbc0b3149d2": {
 | 
			
		||||
                                "sizeX": 7,
 | 
			
		||||
                                "sizeY": 5,
 | 
			
		||||
                                "row": 5,
 | 
			
		||||
                                "col": 7
 | 
			
		||||
                                "col": 7,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        "gridSettings": {
 | 
			
		||||
@ -13390,19 +13355,25 @@
 | 
			
		||||
                                "sizeX": 24,
 | 
			
		||||
                                "sizeY": 5,
 | 
			
		||||
                                "row": 7,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "fa938580-33db-f1b3-fafc-bc3e3784ad57": {
 | 
			
		||||
                                "sizeX": 12,
 | 
			
		||||
                                "sizeY": 7,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "2ee89893-4e38-5331-95b7-3fd4f310c5a7": {
 | 
			
		||||
                                "sizeX": 12,
 | 
			
		||||
                                "sizeY": 7,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 12
 | 
			
		||||
                                "col": 12,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        "gridSettings": {
 | 
			
		||||
@ -13434,7 +13405,9 @@
 | 
			
		||||
                                "sizeX": 24,
 | 
			
		||||
                                "sizeY": 39,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 4
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        "gridSettings": {
 | 
			
		||||
@ -13463,19 +13436,25 @@
 | 
			
		||||
                                "sizeX": 12,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "fb155957-1af4-233e-e2fb-09e648e75d6e": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "4817e33b-87be-5be3-eaca-ca68a2eb4e0c": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 6
 | 
			
		||||
                                "col": 6,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        "gridSettings": {
 | 
			
		||||
@ -13536,19 +13515,25 @@
 | 
			
		||||
                                "sizeX": 12,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "79056202-c92b-1dae-ce49-318ec52e2d3b": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "966ffee7-ba0d-8e54-f903-e8d015ca8cd2": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 6
 | 
			
		||||
                                "col": 6,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        "gridSettings": {
 | 
			
		||||
@ -13609,19 +13594,25 @@
 | 
			
		||||
                                "sizeX": 12,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "84fbe63a-bcb6-7bc1-8af0-46b3b1ee5adc": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "43a2b982-6c02-d9bd-71ee-34e8e6cf8893": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 6
 | 
			
		||||
                                "col": 6,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        "gridSettings": {
 | 
			
		||||
@ -13682,19 +13673,25 @@
 | 
			
		||||
                                "sizeX": 12,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "a43598d1-7bfd-f329-ee61-c343f34f069f": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "3ebd62a8-dcb7-c96b-8571-e61084248f5b": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 6
 | 
			
		||||
                                "col": 6,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        "gridSettings": {
 | 
			
		||||
@ -13755,19 +13752,25 @@
 | 
			
		||||
                                "sizeX": 12,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "a1b5731c-e3b3-8cfb-7c50-3abcdce891d2": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "efc8d4e9-dee2-b677-c378-c1a666543bf4": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 6
 | 
			
		||||
                                "col": 6,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        "gridSettings": {
 | 
			
		||||
@ -13828,19 +13831,25 @@
 | 
			
		||||
                                "sizeX": 12,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "1249d3e2-6b3a-4e4a-65e9-6ed22959871e": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "c2f2da29-741d-54f6-5f1d-6f6ae616ea02": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 6
 | 
			
		||||
                                "col": 6,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        "gridSettings": {
 | 
			
		||||
@ -13901,19 +13910,25 @@
 | 
			
		||||
                                "sizeX": 12,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "b12fb875-89fe-af4c-b344-bf4178de419f": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "0b00099d-d131-3e8b-97ce-c4b8d7bcab1f": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 6
 | 
			
		||||
                                "col": 6,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        "gridSettings": {
 | 
			
		||||
@ -13974,19 +13989,25 @@
 | 
			
		||||
                                "sizeX": 12,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "ab5518c1-34d6-7e17-04b4-6520496d5fe1": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "2e7326ac-98d3-e68c-b7cf-948118a3f140": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 6
 | 
			
		||||
                                "col": 6,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        "gridSettings": {
 | 
			
		||||
@ -14047,19 +14068,25 @@
 | 
			
		||||
                                "sizeX": 12,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 0,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "e0fe9887-d61c-7813-05a7-f60811e5c5bf": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 0
 | 
			
		||||
                                "col": 0,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            },
 | 
			
		||||
                            "99a40c35-c232-16c5-c42f-3cc80ddb9243": {
 | 
			
		||||
                                "sizeX": 6,
 | 
			
		||||
                                "sizeY": 4,
 | 
			
		||||
                                "row": 4,
 | 
			
		||||
                                "col": 6
 | 
			
		||||
                                "col": 6,
 | 
			
		||||
                                "resizable": true,
 | 
			
		||||
                                "mobileHeight": 6
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        "gridSettings": {
 | 
			
		||||
 | 
			
		||||
@ -9520,8 +9520,11 @@
 | 
			
		||||
            "label": "Label",
 | 
			
		||||
            "state-name": "State name",
 | 
			
		||||
            "status": "Status",
 | 
			
		||||
            "status-required": "Status is required.",
 | 
			
		||||
            "limit": "Max limit",
 | 
			
		||||
            "limit-required": "Max limit is required.",
 | 
			
		||||
            "current-number": "Current number",
 | 
			
		||||
            "current-number-required": "Current number is required.",
 | 
			
		||||
            "add-key": "Add key",
 | 
			
		||||
            "no-key": "No key",
 | 
			
		||||
            "delete-key": "Delete key",
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user