@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
170 lines (164 loc) • 8.44 kB
JavaScript
import { PreviewService, DynamicManagedObjectResolver, DynamicComponentErrorStrategy, hookWidget, hookPreview } from '@c8y/ngx-components';
import { WidgetAssetSelectorComponent, quoteAndEscape, hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';
import * as i0 from '@angular/core';
import { inject, Injectable } from '@angular/core';
import { gettext } from '@c8y/ngx-components/gettext';
import { from, switchMap, map } from 'rxjs';
import { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';
import { importConfigWithDevice, exportConfigWithDevice } from '@c8y/ngx-components/widgets/import-export-config';
import { PRESET_NAME } from '@c8y/ngx-components/global-context';
class ScadaWidgetFactory {
constructor() {
this.betaPreviewService = inject(PreviewService);
this.baseWidgetDefinition = {
id: defaultWidgetIds.SCADA,
label: gettext('SCADA'),
description: gettext(`Displays a dynamically updated SVG image for real-time device monitoring.`),
loadComponent: () => import('@c8y/ngx-components/widgets/implementations/scada').then(m => m.ScadaWidgetViewComponent),
errorStrategy: DynamicComponentErrorStrategy.OVERLAY_ERROR,
previewImage: 'c8y-style-assets/scada-widget-preview.png',
data: {
schema: () => import('c8y-schema-loader?interfaceName=ScadaWidgetConfig!@c8y/ngx-components/widgets/implementations/scada'),
export: exportConfigWithDevice,
import: importConfigWithDevice,
settings: {
noNewWidgets: false,
widgetDefaults: {
_width: 8,
_height: 4
}
}
},
resolve: {
device: DynamicManagedObjectResolver
}
};
}
get() {
return from(import('@c8y/ngx-components/widgets/implementations/scada').then(m => m.SCADA_WIDGET_FEATURE_FLAG_NAME)).pipe(switchMap(featureFlagName => this.betaPreviewService.getState$(featureFlagName)), map(active => {
if (active) {
return [this.baseWidgetDefinition];
}
return [];
}));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ScadaWidgetFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ScadaWidgetFactory, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ScadaWidgetFactory, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}] });
class ScadaWidgetConfigFactory {
constructor() {
this.betaPreviewService = inject(PreviewService);
this.baseWidgetConfigDefinition = [
{
widgetId: defaultWidgetIds.SCADA,
label: gettext('Asset selection'),
loadComponent: () => Promise.resolve(WidgetAssetSelectorComponent),
providers: () => import('@c8y/ngx-components/widgets/implementations/scada').then(m => [
m.ScadaWidgetConfigService
]),
priority: 100,
initialState: {
isRequired: false,
groupsSelectable: true
}
},
{
widgetId: defaultWidgetIds.SCADA,
label: gettext('SVG configuration'),
loadComponent: () => import('@c8y/ngx-components/widgets/implementations/scada').then(m => m.ScadaWidgetSvgSelectorComponent),
providers: () => import('@c8y/ngx-components/widgets/implementations/scada').then(m => [
m.ScadaWidgetConfigService
]),
priority: 70
},
{
widgetId: defaultWidgetIds.SCADA,
label: gettext('Placeholder mappings'),
loadComponent: () => import('@c8y/ngx-components/context-dashboard').then(m => m.AssetPropertyMappingsComponent),
priority: 50,
expanded: true,
initialState: {
widgetConfigPath: ['config', 'mappings'],
allowAddingNewMappings: false,
allowRenamingMappings: true,
mappingNameFormatRegex: /^[a-zA-Z_$][a-zA-Z0-9_$]*$/,
mappingNameFormatErrorMessage: gettext('Name must be a valid identifier (only letters, digits, underscores, or dollar signs allowed, cannot start with a digit).'),
allowRelabellingMappings: false,
allowEditingMappings: true,
allowRemovingMappings: false,
showLabels: false,
showNames: true,
showAssets: true,
showValues: true,
emptyStateTitle: gettext('No placeholder mappings'),
emptyStateSubtitle: gettext('Add first placeholder in the preview or code.'),
feedbackMessage: gettext('{{ count }} placeholders'),
onBeforeCopyMappingToClipboard: (mapping, config) => {
const name = String(mapping.name);
if (config?.config?.htmlWidgetConfig?.config?.legacy) {
return `{{ ${name} }}`;
}
const nonAlphanumericRegex = /[^a-zA-Z0-9]/;
const nameQuotedEscaped = quoteAndEscape(name);
const key = nonAlphanumericRegex.test(name) ? `[${nameQuotedEscaped}]` : name;
return '${this.c8yScadaValues?.' + key + '}';
}
}
},
{
widgetId: defaultWidgetIds.SCADA,
label: gettext('Time context'),
initialState: {
controls: PRESET_NAME.AUTO_REFRESH_ONLY_CONFIG
},
loadComponent: () => import('@c8y/ngx-components/context-dashboard').then(m => m.GlobalContextSectionComponent),
priority: 90
},
{
widgetId: defaultWidgetIds.SCADA,
label: gettext('Advanced editor'),
loadComponent: () => import('@c8y/ngx-components/widgets/implementations/scada').then(m => m.ScadaWidgetAdvancedEditorComponent),
providers: () => import('@c8y/ngx-components/widgets/implementations/scada').then(m => [
m.ScadaWidgetConfigService
]),
priority: 40,
expanded: false
}
];
}
get() {
return from(import('@c8y/ngx-components/widgets/implementations/scada').then(m => m.SCADA_WIDGET_FEATURE_FLAG_NAME)).pipe(switchMap(featureFlagName => this.betaPreviewService.getState$(featureFlagName)), map(active => {
if (active) {
return this.baseWidgetConfigDefinition;
}
return [];
}));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ScadaWidgetConfigFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ScadaWidgetConfigFactory, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ScadaWidgetConfigFactory, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}] });
const scadaWidgetProviders = [
hookWidget(ScadaWidgetFactory),
hookWidgetConfig(ScadaWidgetConfigFactory),
hookPreview({
key: 'ui.scada-widget.v2',
label: 'SCADA widget v2',
description: () => import('@c8y/style/markdown-files/scada-widget-preview.md').then(m => m.default),
settings: {
reload: true
}
})
];
/**
* Generated bundle index. Do not edit.
*/
export { scadaWidgetProviders };
//# sourceMappingURL=c8y-ngx-components-widgets-definitions-scada.mjs.map