ngssm-data 18.2.1 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ngssm-data.mjs +42 -41
- package/fesm2022/ngssm-data.mjs.map +1 -1
- package/lib/ngssm-data/model/ngssm-data-source.d.ts +2 -1
- package/package.json +1 -3
- package/esm2022/lib/ngssm-data/actions/index.mjs +0 -14
- package/esm2022/lib/ngssm-data/actions/ngssm-clear-data-source-value.action.mjs +0 -9
- package/esm2022/lib/ngssm-data/actions/ngssm-data-action-type.mjs +0 -26
- package/esm2022/lib/ngssm-data/actions/ngssm-data-source-value.action.mjs +0 -7
- package/esm2022/lib/ngssm-data/actions/ngssm-load-data-source-additional-property-value.action.mjs +0 -10
- package/esm2022/lib/ngssm-data/actions/ngssm-load-data-source-value.action.mjs +0 -9
- package/esm2022/lib/ngssm-data/actions/ngssm-register-data-source.action.mjs +0 -8
- package/esm2022/lib/ngssm-data/actions/ngssm-register-data-sources.action.mjs +0 -8
- package/esm2022/lib/ngssm-data/actions/ngssm-set-data-source-additional-property-value.action.mjs +0 -11
- package/esm2022/lib/ngssm-data/actions/ngssm-set-data-source-parameter-validity.action.mjs +0 -9
- package/esm2022/lib/ngssm-data/actions/ngssm-set-data-source-parameter.action.mjs +0 -10
- package/esm2022/lib/ngssm-data/actions/ngssm-set-data-source-value.action.mjs +0 -10
- package/esm2022/lib/ngssm-data/actions/ngssm-unregister-data-source.action.mjs +0 -8
- package/esm2022/lib/ngssm-data/actions/ngssm-update-data-source-parameter.action.mjs +0 -9
- package/esm2022/lib/ngssm-data/components/index.mjs +0 -5
- package/esm2022/lib/ngssm-data/components/is-ngssm-data-source-value-status.pipe.mjs +0 -21
- package/esm2022/lib/ngssm-data/components/ngssm-auto-reload/ngssm-auto-reload.component.mjs +0 -53
- package/esm2022/lib/ngssm-data/components/ngssm-data-reload-button/ngssm-data-reload-button.component.mjs +0 -97
- package/esm2022/lib/ngssm-data/components/ngssm-scoped-data-source.directive.mjs +0 -34
- package/esm2022/lib/ngssm-data/effects/data-loading.effect.mjs +0 -67
- package/esm2022/lib/ngssm-data/effects/index.mjs +0 -2
- package/esm2022/lib/ngssm-data/model/index.mjs +0 -4
- package/esm2022/lib/ngssm-data/model/ngssm-data-source-value.mjs +0 -15
- package/esm2022/lib/ngssm-data/model/ngssm-data-source.mjs +0 -27
- package/esm2022/lib/ngssm-data/model/ngssm-load-data-source-options.mjs +0 -2
- package/esm2022/lib/ngssm-data/provide-ngssm-data.mjs +0 -46
- package/esm2022/lib/ngssm-data/public-api.mjs +0 -6
- package/esm2022/lib/ngssm-data/reducers/data-source-value.reducer.mjs +0 -226
- package/esm2022/lib/ngssm-data/reducers/data-sources-registration.reducer.mjs +0 -58
- package/esm2022/lib/ngssm-data/reducers/index.mjs +0 -3
- package/esm2022/lib/ngssm-data/state/index.mjs +0 -3
- package/esm2022/lib/ngssm-data/state/ngssm-data.state.mjs +0 -22
- package/esm2022/lib/ngssm-data/state/selectors.mjs +0 -13
- package/esm2022/ngssm-data.mjs +0 -5
- package/esm2022/public-api.mjs +0 -5
package/fesm2022/ngssm-data.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, makeEnvironmentProviders, inject, Injectable, runInInjectionContext, Inject, Optional,
|
|
2
|
+
import { InjectionToken, makeEnvironmentProviders, inject, Injectable, runInInjectionContext, Inject, Optional, provideAppInitializer, Pipe, Component, ChangeDetectionStrategy, Input, signal, Directive } from '@angular/core';
|
|
3
3
|
import * as i1 from 'ngssm-store';
|
|
4
4
|
import { Store, NgSsmFeatureState, provideReducers, provideEffects, NgSsmComponent } from 'ngssm-store';
|
|
5
5
|
import { __decorate } from 'tslib';
|
|
@@ -140,7 +140,7 @@ class NgssmSetDataSourceParameterValidityAction extends NgssmDataSourceValueActi
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
const NGSSM_DATA_SOURCE = new InjectionToken('NGSSM_DATA_SOURCE');
|
|
143
|
-
const provideNgssmDataSource = (key, loadingFunc, dataLifetimeInSeconds) => {
|
|
143
|
+
const provideNgssmDataSource = (key, loadingFunc, dataLifetimeInSeconds, initialParameter) => {
|
|
144
144
|
return makeEnvironmentProviders([
|
|
145
145
|
{
|
|
146
146
|
provide: NGSSM_DATA_SOURCE,
|
|
@@ -150,6 +150,9 @@ const provideNgssmDataSource = (key, loadingFunc, dataLifetimeInSeconds) => {
|
|
|
150
150
|
dataLifetimeInSeconds,
|
|
151
151
|
dataLoadingFunc: loadingFunc
|
|
152
152
|
};
|
|
153
|
+
if (initialParameter) {
|
|
154
|
+
dataSource.initialParameter = initialParameter;
|
|
155
|
+
}
|
|
153
156
|
return dataSource;
|
|
154
157
|
},
|
|
155
158
|
multi: true
|
|
@@ -232,6 +235,9 @@ class DataSourcesRegistrationReducer {
|
|
|
232
235
|
if (dataSource.dataLifetimeInSeconds) {
|
|
233
236
|
dataSourceValues[dataSource.key].dataLifetimeInSeconds = dataSource.dataLifetimeInSeconds;
|
|
234
237
|
}
|
|
238
|
+
if (dataSource.initialParameter) {
|
|
239
|
+
dataSourceValues[dataSource.key].parameter = dataSource.initialParameter;
|
|
240
|
+
}
|
|
235
241
|
dataSources[dataSource.key] = dataSource;
|
|
236
242
|
});
|
|
237
243
|
return updateNgssmDataState(state, {
|
|
@@ -253,10 +259,10 @@ class DataSourcesRegistrationReducer {
|
|
|
253
259
|
}
|
|
254
260
|
return state;
|
|
255
261
|
}
|
|
256
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
257
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
262
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: DataSourcesRegistrationReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
263
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: DataSourcesRegistrationReducer }); }
|
|
258
264
|
}
|
|
259
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
265
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: DataSourcesRegistrationReducer, decorators: [{
|
|
260
266
|
type: Injectable
|
|
261
267
|
}] });
|
|
262
268
|
|
|
@@ -473,10 +479,10 @@ class DataSourceValueReducer {
|
|
|
473
479
|
}
|
|
474
480
|
return state;
|
|
475
481
|
}
|
|
476
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
477
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
482
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: DataSourceValueReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
483
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: DataSourceValueReducer }); }
|
|
478
484
|
}
|
|
479
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
485
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: DataSourceValueReducer, decorators: [{
|
|
480
486
|
type: Injectable
|
|
481
487
|
}] });
|
|
482
488
|
|
|
@@ -534,10 +540,10 @@ class DataLoadingEffect {
|
|
|
534
540
|
}
|
|
535
541
|
}
|
|
536
542
|
}
|
|
537
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
538
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
543
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: DataLoadingEffect, deps: [{ token: i1.Logger }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
544
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: DataLoadingEffect }); }
|
|
539
545
|
}
|
|
540
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
546
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: DataLoadingEffect, decorators: [{
|
|
541
547
|
type: Injectable
|
|
542
548
|
}], ctorParameters: () => [{ type: i1.Logger }, { type: i0.EnvironmentInjector }] });
|
|
543
549
|
|
|
@@ -545,10 +551,10 @@ class NgssmDataSourceCollection {
|
|
|
545
551
|
constructor(dataSources) {
|
|
546
552
|
this.dataSources = dataSources;
|
|
547
553
|
}
|
|
548
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
549
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
554
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgssmDataSourceCollection, deps: [{ token: NGSSM_DATA_SOURCE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
555
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgssmDataSourceCollection, providedIn: 'root' }); }
|
|
550
556
|
}
|
|
551
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
557
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgssmDataSourceCollection, decorators: [{
|
|
552
558
|
type: Injectable,
|
|
553
559
|
args: [{
|
|
554
560
|
providedIn: 'root'
|
|
@@ -559,22 +565,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
559
565
|
}, {
|
|
560
566
|
type: Optional
|
|
561
567
|
}] }] });
|
|
562
|
-
const initDataSourceValues = (
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
}
|
|
568
|
+
const initDataSourceValues = () => {
|
|
569
|
+
const store = inject(Store);
|
|
570
|
+
const dataSourceCollection = inject(NgssmDataSourceCollection);
|
|
571
|
+
const dataSources = dataSourceCollection.dataSources ?? [];
|
|
572
|
+
if (dataSources.length > 0) {
|
|
573
|
+
store.dispatchAction(new NgssmRegisterDataSourcesAction(dataSources));
|
|
574
|
+
}
|
|
569
575
|
};
|
|
570
576
|
const provideNgssmData = () => {
|
|
571
577
|
return makeEnvironmentProviders([
|
|
572
|
-
|
|
573
|
-
provide: APP_INITIALIZER,
|
|
574
|
-
useFactory: initDataSourceValues,
|
|
575
|
-
deps: [Store, NgssmDataSourceCollection],
|
|
576
|
-
multi: true
|
|
577
|
-
},
|
|
578
|
+
provideAppInitializer(initDataSourceValues),
|
|
578
579
|
provideReducers(DataSourcesRegistrationReducer, DataSourceValueReducer),
|
|
579
580
|
provideEffects(DataLoadingEffect)
|
|
580
581
|
]);
|
|
@@ -587,10 +588,10 @@ class IsNgssmDataSourceValueStatusPipe {
|
|
|
587
588
|
const itemStatus = selectNgssmDataSourceValue(value, key).status;
|
|
588
589
|
return expectedStatuses.includes(itemStatus);
|
|
589
590
|
}
|
|
590
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
591
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
591
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
592
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.0", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, isStandalone: true, name: "isNgssmDataSourceValueStatus" }); }
|
|
592
593
|
}
|
|
593
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
594
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, decorators: [{
|
|
594
595
|
type: Pipe,
|
|
595
596
|
args: [{
|
|
596
597
|
name: 'isNgssmDataSourceValueStatus',
|
|
@@ -628,12 +629,12 @@ class NgssmAutoReloadComponent extends NgSsmComponent {
|
|
|
628
629
|
}
|
|
629
630
|
});
|
|
630
631
|
}
|
|
631
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
632
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
632
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgssmAutoReloadComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
633
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: NgssmAutoReloadComponent, isStandalone: true, selector: "ngssm-auto-reload", inputs: { autoReloadAction: "autoReloadAction" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field>\n <mat-label>Select auto reload period</mat-label>\n <mat-select [formControl]=\"reloadTypeControl\">\n @for (option of reloadTypes; track option.value){\n <mat-option [value]=\"option.value\">\n {{option.label}}\n </mat-option>\n }\n </mat-select>\n</mat-form-field>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
633
634
|
}
|
|
634
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
635
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgssmAutoReloadComponent, decorators: [{
|
|
635
636
|
type: Component,
|
|
636
|
-
args: [{ selector: 'ngssm-auto-reload',
|
|
637
|
+
args: [{ selector: 'ngssm-auto-reload', imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatSelectModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field>\n <mat-label>Select auto reload period</mat-label>\n <mat-select [formControl]=\"reloadTypeControl\">\n @for (option of reloadTypes; track option.value){\n <mat-option [value]=\"option.value\">\n {{option.label}}\n </mat-option>\n }\n </mat-select>\n</mat-form-field>" }]
|
|
637
638
|
}], ctorParameters: () => [{ type: i1.Store }], propDecorators: { autoReloadAction: [{
|
|
638
639
|
type: Input
|
|
639
640
|
}] } });
|
|
@@ -700,12 +701,12 @@ class NgssmDataReloadButtonComponent extends NgSsmComponent {
|
|
|
700
701
|
}
|
|
701
702
|
this._dataSourceKeys.forEach((key) => this.dispatchAction(new NgssmLoadDataSourceValueAction(key, { forceReload: true, keepAdditionalProperties: this.keepAdditionalProperties })));
|
|
702
703
|
}
|
|
703
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
704
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
704
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgssmDataReloadButtonComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
705
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: NgssmDataReloadButtonComponent, isStandalone: true, selector: "ngssm-data-reload-button", inputs: { keepAdditionalProperties: "keepAdditionalProperties", buttonIcon: "buttonIcon", autoReloadEnabled: "autoReloadEnabled", dataSourceKeys: "dataSourceKeys" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex-row-center\">\n <button mat-icon-button [color]=\"color()\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\" id=\"reloadButton\">\n\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon [ngClass]=\"icon()\"></mat-icon>\n }\n\n </button>\n @if (withAutoReload()) {\n <ngssm-auto-reload class=\"with-margin-left-8\" [autoReloadAction]=\"reloadAction\"></ngssm-auto-reload>\n }\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: NgssmAutoReloadComponent, selector: "ngssm-auto-reload", inputs: ["autoReloadAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
705
706
|
}
|
|
706
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
707
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgssmDataReloadButtonComponent, decorators: [{
|
|
707
708
|
type: Component,
|
|
708
|
-
args: [{ selector: 'ngssm-data-reload-button',
|
|
709
|
+
args: [{ selector: 'ngssm-data-reload-button', imports: [CommonModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressSpinnerModule, NgssmAutoReloadComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex-row-center\">\n <button mat-icon-button [color]=\"color()\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\" id=\"reloadButton\">\n\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon [ngClass]=\"icon()\"></mat-icon>\n }\n\n </button>\n @if (withAutoReload()) {\n <ngssm-auto-reload class=\"with-margin-left-8\" [autoReloadAction]=\"reloadAction\"></ngssm-auto-reload>\n }\n</div>" }]
|
|
709
710
|
}], ctorParameters: () => [{ type: i1.Store }], propDecorators: { keepAdditionalProperties: [{
|
|
710
711
|
type: Input
|
|
711
712
|
}], buttonIcon: [{
|
|
@@ -733,10 +734,10 @@ class NgssmScopedDataSourceDirective {
|
|
|
733
734
|
this.store.dispatchAction(new NgssmUnregisterDataSourceAction(key));
|
|
734
735
|
}
|
|
735
736
|
}
|
|
736
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
737
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
737
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgssmScopedDataSourceDirective, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
738
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgssmScopedDataSourceDirective, isStandalone: true, selector: "[ngssmScopedDataSource]", inputs: { ngssmScopedDataSource: "ngssmScopedDataSource" }, ngImport: i0 }); }
|
|
738
739
|
}
|
|
739
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
740
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgssmScopedDataSourceDirective, decorators: [{
|
|
740
741
|
type: Directive,
|
|
741
742
|
args: [{
|
|
742
743
|
selector: '[ngssmScopedDataSource]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngssm-data.mjs","sources":["../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-data-action-type.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-load-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-set-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-register-data-sources.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-clear-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-set-data-source-parameter.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-load-data-source-additional-property-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-set-data-source-additional-property-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-register-data-source.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-unregister-data-source.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-update-data-source-parameter.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-set-data-source-parameter-validity.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/model/ngssm-data-source.ts","../../../projects/ngssm-data/src/lib/ngssm-data/model/ngssm-data-source-value.ts","../../../projects/ngssm-data/src/lib/ngssm-data/state/ngssm-data.state.ts","../../../projects/ngssm-data/src/lib/ngssm-data/state/selectors.ts","../../../projects/ngssm-data/src/lib/ngssm-data/reducers/data-sources-registration.reducer.ts","../../../projects/ngssm-data/src/lib/ngssm-data/reducers/data-source-value.reducer.ts","../../../projects/ngssm-data/src/lib/ngssm-data/effects/data-loading.effect.ts","../../../projects/ngssm-data/src/lib/ngssm-data/provide-ngssm-data.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/is-ngssm-data-source-value-status.pipe.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-auto-reload/ngssm-auto-reload.component.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-auto-reload/ngssm-auto-reload.component.html","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-data-reload-button/ngssm-data-reload-button.component.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-data-reload-button/ngssm-data-reload-button.component.html","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-scoped-data-source.directive.ts","../../../projects/ngssm-data/src/public-api.ts","../../../projects/ngssm-data/src/ngssm-data.ts"],"sourcesContent":["export enum NgssmDataActionType {\n // Used by the library to initialize all the data sources provided by the application\n registerDataSources = '[NgssmDataActionType] registerDataSources',\n\n // Could be used by the application to register or unregister a data source.\n // This can be used, for example, to limit the lifetime of a data source to the lifetime of a component\n registerDataSource = '[NgssmDataActionType] registerDataSource',\n unregisterDataSource = '[NgssmDataActionType] unregisterDataSource',\n\n // Used to call the loading method to get the value for the data source\n loadDataSourceValue = '[NgssmDataActionType] loadDataSourceValue',\n\n // Update the parameter used by the loading method, if one is required\n setDataSourceParameter = '[NgssmDataActionType] setDataSourceParameter',\n\n // Used to partially update the parameter. Usefull when creating a search component with multiple search criteria.\n updateDataSourceParameter = '[NgssmDataActionType] updateDataSourceParameter',\n\n // Update only the validity of the parameter. Usefull in case of a partial update of the parameter.\n setDataSourceParameterValidity = '[NgssmDataActionType] setDataSourceParameterValidity',\n\n // Clear the stored value associated to a data source\n clearDataSourceValue = '[NgssmDataActionType] clearDataSourceValue',\n\n // Store the value for a given data source\n setDataSourceValue = '[NgssmDataActionType] setDataSourceValue',\n\n // Call the loading method to get the value for an additional property of the data source\n loadDataSourceAdditionalPropertyValue = '[NgssmDataActionType] loadDataSourceAdditionalPropertyValue',\n\n // Store the value for an additional property of the data source\n setDataSourceAdditionalPropertyValue = '[NgssmDataActionType] setDataSourceAdditionalPropertyValue'\n}\n","import { Action } from 'ngssm-store';\n\nexport class NgssmDataSourceValueAction implements Action {\n constructor(\n public readonly type: string,\n public readonly key: string\n ) {}\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmLoadDataSourceOptions } from '../model';\n\nexport class NgssmLoadDataSourceValueAction<TParameter = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly options?: NgssmLoadDataSourceOptions<TParameter>\n ) {\n super(NgssmDataActionType.loadDataSourceValue, key);\n }\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSourceValueStatus } from '../model';\n\nexport class NgssmSetDataSourceValueAction<TData = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly status: NgssmDataSourceValueStatus,\n public readonly value?: TData\n ) {\n super(NgssmDataActionType.setDataSourceValue, key);\n }\n}\n","import { Action } from 'ngssm-store';\n\nimport { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSource } from '../model';\n\nexport class NgssmRegisterDataSourcesAction implements Action {\n public readonly type: string = NgssmDataActionType.registerDataSources;\n\n constructor(public readonly dataSources: NgssmDataSource[]) {}\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmClearDataSourceValueAction extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly clearParameter: boolean = false\n ) {\n super(NgssmDataActionType.clearDataSourceValue, key);\n }\n}\n","import { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\n\nexport class NgssmSetDataSourceParameterAction<TParameter = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly parameter?: TParameter,\n public readonly parameterIsValid?: boolean\n ) {\n super(NgssmDataActionType.setDataSourceParameter, key);\n }\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmLoadDataSourceAdditionalPropertyValueAction extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly property: string,\n public readonly forceReload?: boolean\n ) {\n super(NgssmDataActionType.loadDataSourceAdditionalPropertyValue, key);\n }\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataSourceValueStatus } from '../model';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmSetDataSourceAdditionalPropertyValueAction<TProperty = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly property: string,\n public readonly status: NgssmDataSourceValueStatus,\n public readonly value?: TProperty\n ) {\n super(NgssmDataActionType.setDataSourceAdditionalPropertyValue, key);\n }\n}\n","import { Action } from 'ngssm-store';\n\nimport { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSource } from '../model';\n\nexport class NgssmRegisterDataSourceAction implements Action {\n public readonly type: string = NgssmDataActionType.registerDataSource;\n\n constructor(public readonly dataSource: NgssmDataSource) {}\n}\n","import { Action } from 'ngssm-store';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmUnregisterDataSourceAction implements Action {\n public readonly type: string = NgssmDataActionType.unregisterDataSource;\n\n constructor(public readonly dataSourceKey: string) {}\n}\n","import { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\n\nexport class NgssmUpdateDataSourceParameterAction<TParameter = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly parameter: Partial<TParameter>\n ) {\n super(NgssmDataActionType.updateDataSourceParameter, key);\n }\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmSetDataSourceParameterValidityAction extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly isValid: boolean\n ) {\n super(NgssmDataActionType.setDataSourceParameterValidity, key);\n }\n}\n","import { EnvironmentProviders, InjectionToken, inject, makeEnvironmentProviders } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { State, Store } from 'ngssm-store';\nimport { NgssmLoadDataSourceValueAction } from '../actions';\n\nexport interface NgssmDataLoading<TData = any, TParameter = any> {\n (state: State, parameter?: TParameter, additionalProperty?: string): Observable<TData>;\n}\n\nexport interface NgssmDataSource<TData = any, TParameter = any> {\n key: string;\n dataLifetimeInSeconds?: number;\n dataLoadingFunc: NgssmDataLoading<TData, TParameter>;\n}\n\nexport const NGSSM_DATA_SOURCE = new InjectionToken<NgssmDataSource>('NGSSM_DATA_SOURCE');\n\nexport const provideNgssmDataSource = <TData = any, TParameter = any>(\n key: string,\n loadingFunc: NgssmDataLoading<TData, TParameter>,\n dataLifetimeInSeconds?: number\n): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: NGSSM_DATA_SOURCE,\n useFactory: () => {\n const dataSource: NgssmDataSource<TData, TParameter> = {\n key,\n dataLifetimeInSeconds,\n dataLoadingFunc: loadingFunc\n };\n return dataSource;\n },\n multi: true\n }\n ]);\n};\n\nexport const ngssmLoadDataSourceValue = (key: string, forceReload: boolean = false): (() => boolean) => {\n return () => {\n inject(Store).dispatchAction(new NgssmLoadDataSourceValueAction(key, { forceReload }));\n return true;\n };\n};\n","import { DateTime } from 'luxon';\n\nexport enum NgssmDataSourceValueStatus {\n none = 'none',\n notRegistered = 'notRegistered',\n loading = 'loading',\n loaded = 'loaded',\n error = 'error'\n}\n\nexport interface NgssmDataSourceAdditionalPropertyValue<TProperty = any> {\n status: NgssmDataSourceValueStatus;\n value?: TProperty;\n lastLoadingDate?: DateTime;\n}\n\nexport interface NgssmDataSourceValue<TData = any, TParameter = any> {\n status: NgssmDataSourceValueStatus;\n value?: TData;\n parameter?: TParameter;\n lastLoadingDate?: DateTime;\n dataLifetimeInSeconds?: number;\n additionalProperties: { [key: string]: NgssmDataSourceAdditionalPropertyValue };\n parameterIsValid?: boolean;\n\n // Parameter has been updated but not value\n valueOutdated?: boolean;\n}\n\nexport type NgssmDataSourceValueAutoReloadType = 'Off' | '1min' | '5min' | '15min';\nexport const getNgssmDataSourceValueAutoReloadTypes = (): { label: string; value: NgssmDataSourceValueAutoReloadType }[] => [\n { label: 'Off', value: 'Off' },\n { label: 'Every minute', value: '1min' },\n { label: 'Every 5 minutes', value: '5min' },\n { label: 'Every 15 minutes', value: '15min' }\n];\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\nimport { NgssmDataSource, NgssmDataSourceValue } from '../model';\n\nexport const selectNgssmDataState = (state: State): NgssmDataState => state[NgssmDataStateSpecification.featureStateKey] as NgssmDataState;\n\nexport const updateNgssmDataState = (state: State, command: Spec<NgssmDataState, never>): State =>\n update(state, {\n [NgssmDataStateSpecification.featureStateKey]: command\n });\n\nexport interface NgssmDataState {\n dataSourceValues: { [key: string]: NgssmDataSourceValue };\n dataSources: { [key: string]: NgssmDataSource };\n}\n\n@NgSsmFeatureState({\n featureStateKey: NgssmDataStateSpecification.featureStateKey,\n initialState: NgssmDataStateSpecification.initialState\n})\nexport class NgssmDataStateSpecification {\n public static readonly featureStateKey = 'ngssm-data-state';\n public static readonly initialState: NgssmDataState = {\n dataSourceValues: {},\n dataSources: {}\n };\n}\n","import { State } from 'ngssm-store';\nimport { NgssmDataSourceAdditionalPropertyValue, NgssmDataSourceValue, NgssmDataSourceValueStatus } from '../model';\nimport { selectNgssmDataState } from './ngssm-data.state';\n\nexport const selectNgssmDataSourceValue = <TDataType = any, TParameter = any>(\n state: State,\n key: string\n): NgssmDataSourceValue<TDataType, TParameter> => {\n return (\n selectNgssmDataState(state).dataSourceValues[key] ?? {\n status: NgssmDataSourceValueStatus.notRegistered\n }\n );\n};\n\nexport const selectNgssmDataSourceAdditionalPropertyValue = <TProperty = any>(\n state: State,\n key: string,\n property: string\n): NgssmDataSourceAdditionalPropertyValue<TProperty> => {\n return (\n selectNgssmDataState(state).dataSourceValues[key]?.additionalProperties[property] ?? {\n status: NgssmDataSourceValueStatus.notRegistered\n }\n );\n};\n","import { Injectable } from '@angular/core';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport {\n NgssmDataActionType,\n NgssmRegisterDataSourceAction,\n NgssmRegisterDataSourcesAction,\n NgssmUnregisterDataSourceAction\n} from '../actions';\nimport { NgssmDataSource, NgssmDataSourceValue, NgssmDataSourceValueStatus } from '../model';\nimport { selectNgssmDataState, updateNgssmDataState } from '../state';\n\n@Injectable()\nexport class DataSourcesRegistrationReducer implements Reducer {\n public readonly processedActions: string[] = [\n NgssmDataActionType.registerDataSources,\n NgssmDataActionType.registerDataSource,\n NgssmDataActionType.unregisterDataSource\n ];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmDataActionType.registerDataSources: {\n const registerDataSourcesAction = action as NgssmRegisterDataSourcesAction;\n const dataSourceValues: { [key: string]: NgssmDataSourceValue } = {};\n const dataSources: { [key: string]: NgssmDataSource } = {};\n registerDataSourcesAction.dataSources.forEach((dataSource) => {\n if (selectNgssmDataState(state).dataSources[dataSource.key]) {\n return;\n }\n\n dataSourceValues[dataSource.key] = {\n status: NgssmDataSourceValueStatus.none,\n additionalProperties: {}\n };\n\n if (dataSource.dataLifetimeInSeconds) {\n dataSourceValues[dataSource.key].dataLifetimeInSeconds = dataSource.dataLifetimeInSeconds;\n }\n\n dataSources[dataSource.key] = dataSource;\n });\n\n return updateNgssmDataState(state, {\n dataSourceValues: { $merge: dataSourceValues },\n dataSources: { $merge: dataSources }\n });\n }\n\n case NgssmDataActionType.registerDataSource: {\n const registerDataSourceAction = action as NgssmRegisterDataSourceAction;\n return this.updateState(state, new NgssmRegisterDataSourcesAction([registerDataSourceAction.dataSource]));\n }\n\n case NgssmDataActionType.unregisterDataSource: {\n const unregisterDataSource = action as NgssmUnregisterDataSourceAction;\n return updateNgssmDataState(state, {\n dataSourceValues: { $unset: [unregisterDataSource.dataSourceKey] },\n dataSources: { $unset: [unregisterDataSource.dataSourceKey] }\n });\n }\n }\n\n return state;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { DateTime } from 'luxon';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport {\n NgssmClearDataSourceValueAction,\n NgssmDataActionType,\n NgssmLoadDataSourceAdditionalPropertyValueAction,\n NgssmLoadDataSourceValueAction,\n NgssmSetDataSourceAdditionalPropertyValueAction,\n NgssmSetDataSourceParameterAction,\n NgssmSetDataSourceParameterValidityAction,\n NgssmSetDataSourceValueAction,\n NgssmUpdateDataSourceParameterAction\n} from '../actions';\nimport { selectNgssmDataState, updateNgssmDataState } from '../state';\nimport { NgssmDataSourceValueStatus } from '../model';\n\n@Injectable()\nexport class DataSourceValueReducer implements Reducer {\n public readonly processedActions: string[] = [\n NgssmDataActionType.loadDataSourceValue,\n NgssmDataActionType.setDataSourceValue,\n NgssmDataActionType.clearDataSourceValue,\n NgssmDataActionType.setDataSourceParameter,\n NgssmDataActionType.loadDataSourceAdditionalPropertyValue,\n NgssmDataActionType.setDataSourceAdditionalPropertyValue,\n NgssmDataActionType.updateDataSourceParameter,\n NgssmDataActionType.setDataSourceParameterValidity\n ];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmDataActionType.loadDataSourceValue: {\n const loadDataSourceValue = action as NgssmLoadDataSourceValueAction;\n const dataSourceValue = selectNgssmDataState(state).dataSourceValues[loadDataSourceValue.key];\n if (!dataSourceValue) {\n break;\n }\n\n let shouldReload = false;\n\n let currentState = state;\n if (loadDataSourceValue.options?.parameter) {\n shouldReload = true;\n currentState = updateNgssmDataState(state, {\n dataSourceValues: {\n [loadDataSourceValue.key]: {\n parameter: { $set: loadDataSourceValue.options?.parameter.value }\n }\n }\n });\n }\n\n if (dataSourceValue.status === NgssmDataSourceValueStatus.loaded) {\n if (\n loadDataSourceValue.options?.forceReload === true ||\n !dataSourceValue.dataLifetimeInSeconds ||\n !dataSourceValue.lastLoadingDate\n ) {\n shouldReload = true;\n } else {\n const dataLifetime = DateTime.now().diff(dataSourceValue.lastLoadingDate, 'second');\n if ((dataLifetime.toObject().seconds ?? 0) > dataSourceValue.dataLifetimeInSeconds) {\n shouldReload = true;\n }\n }\n } else {\n shouldReload = true;\n }\n\n if (dataSourceValue.parameterIsValid === false) {\n shouldReload = false;\n }\n\n if (shouldReload) {\n if (loadDataSourceValue.options?.keepAdditionalProperties !== true) {\n currentState = updateNgssmDataState(currentState, {\n dataSourceValues: {\n [loadDataSourceValue.key]: {\n additionalProperties: { $set: {} }\n }\n }\n });\n }\n\n if (loadDataSourceValue.options?.resetValue === true) {\n currentState = updateNgssmDataState(currentState, {\n dataSourceValues: {\n [loadDataSourceValue.key]: {\n value: { $set: undefined }\n }\n }\n });\n }\n\n return updateNgssmDataState(currentState, {\n dataSourceValues: {\n [loadDataSourceValue.key]: {\n status: { $set: NgssmDataSourceValueStatus.loading },\n valueOutdated: { $set: false }\n }\n }\n });\n }\n\n break;\n }\n\n case NgssmDataActionType.setDataSourceValue: {\n const ngssmSetDataSourceValueAction = action as NgssmSetDataSourceValueAction;\n const dataSourceValue = selectNgssmDataState(state).dataSourceValues[ngssmSetDataSourceValueAction.key];\n if (!dataSourceValue) {\n break;\n }\n\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceValueAction.key]: {\n status: { $set: ngssmSetDataSourceValueAction.status },\n value: { $set: ngssmSetDataSourceValueAction.value },\n lastLoadingDate: { $set: DateTime.now() }\n }\n }\n });\n }\n\n case NgssmDataActionType.clearDataSourceValue: {\n const ngssmClearDataSourceValueAction = action as NgssmClearDataSourceValueAction;\n let currentState = state;\n if (ngssmClearDataSourceValueAction.clearParameter) {\n currentState = updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmClearDataSourceValueAction.key]: {\n parameter: { $set: undefined },\n parameterIsValid: { $set: undefined }\n }\n }\n });\n }\n\n return updateNgssmDataState(currentState, {\n dataSourceValues: {\n [ngssmClearDataSourceValueAction.key]: {\n status: { $set: NgssmDataSourceValueStatus.none },\n value: { $set: undefined },\n lastLoadingDate: { $set: undefined },\n additionalProperties: { $set: {} }\n }\n }\n });\n }\n\n case NgssmDataActionType.setDataSourceParameter: {\n const ngssmSetDataSourceParameterAction = action as NgssmSetDataSourceParameterAction;\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceParameterAction.key]: {\n parameter: { $set: ngssmSetDataSourceParameterAction.parameter },\n parameterIsValid: { $set: ngssmSetDataSourceParameterAction.parameterIsValid },\n valueOutdated: { $set: true }\n }\n }\n });\n }\n\n case NgssmDataActionType.updateDataSourceParameter: {\n const ngssmUpdateDataSourceParameterAction = action as NgssmUpdateDataSourceParameterAction;\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmUpdateDataSourceParameterAction.key]: {\n parameter: { $merge: ngssmUpdateDataSourceParameterAction.parameter },\n valueOutdated: { $set: true }\n }\n }\n });\n }\n\n case NgssmDataActionType.setDataSourceParameterValidity: {\n const ngssmSetDataSourceParameterValidityAction = action as NgssmSetDataSourceParameterValidityAction;\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceParameterValidityAction.key]: {\n parameterIsValid: { $set: ngssmSetDataSourceParameterValidityAction.isValid }\n }\n }\n });\n }\n\n case NgssmDataActionType.loadDataSourceAdditionalPropertyValue: {\n const ngssmLoadDataSourceAdditionalPropertyValueAction = action as NgssmLoadDataSourceAdditionalPropertyValueAction;\n const dataSourcePropertyValue =\n selectNgssmDataState(state).dataSourceValues[ngssmLoadDataSourceAdditionalPropertyValueAction.key]?.additionalProperties[\n ngssmLoadDataSourceAdditionalPropertyValueAction.property\n ];\n\n if (\n dataSourcePropertyValue?.status === NgssmDataSourceValueStatus.loaded &&\n ngssmLoadDataSourceAdditionalPropertyValueAction.forceReload !== true\n ) {\n break;\n }\n\n if (!dataSourcePropertyValue) {\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmLoadDataSourceAdditionalPropertyValueAction.key]: {\n additionalProperties: {\n [ngssmLoadDataSourceAdditionalPropertyValueAction.property]: {\n $set: {\n status: NgssmDataSourceValueStatus.loading\n }\n }\n }\n }\n }\n });\n }\n\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmLoadDataSourceAdditionalPropertyValueAction.key]: {\n additionalProperties: {\n [ngssmLoadDataSourceAdditionalPropertyValueAction.property]: {\n status: { $set: NgssmDataSourceValueStatus.loading }\n }\n }\n }\n }\n });\n }\n\n case NgssmDataActionType.setDataSourceAdditionalPropertyValue: {\n const ngssmSetDataSourceAdditionalPropertyValueAction = action as NgssmSetDataSourceAdditionalPropertyValueAction;\n const dataSourcePropertyValue =\n selectNgssmDataState(state).dataSourceValues[ngssmSetDataSourceAdditionalPropertyValueAction.key]?.additionalProperties[\n ngssmSetDataSourceAdditionalPropertyValueAction.property\n ];\n\n if (!dataSourcePropertyValue) {\n break;\n }\n\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceAdditionalPropertyValueAction.key]: {\n additionalProperties: {\n [ngssmSetDataSourceAdditionalPropertyValueAction.property]: {\n $set: {\n status: ngssmSetDataSourceAdditionalPropertyValueAction.status,\n value: ngssmSetDataSourceAdditionalPropertyValueAction.value\n }\n }\n }\n }\n }\n });\n }\n }\n\n return state;\n }\n}\n","import { EnvironmentInjector, Injectable, runInInjectionContext } from '@angular/core';\n\nimport { Effect, Store, State, Action, Logger } from 'ngssm-store';\n\nimport {\n NgssmDataActionType,\n NgssmDataSourceValueAction,\n NgssmLoadDataSourceAdditionalPropertyValueAction,\n NgssmSetDataSourceAdditionalPropertyValueAction,\n NgssmSetDataSourceValueAction\n} from '../actions';\nimport { selectNgssmDataState } from '../state';\nimport { NgssmDataSourceValueStatus } from '../model';\n\n@Injectable()\nexport class DataLoadingEffect implements Effect {\n public readonly processedActions: string[] = [\n NgssmDataActionType.loadDataSourceValue,\n NgssmDataActionType.loadDataSourceAdditionalPropertyValue\n ];\n\n constructor(\n private logger: Logger,\n private injector: EnvironmentInjector\n ) {}\n\n public processAction(store: Store, state: State, action: Action): void {\n const key = (action as NgssmDataSourceValueAction).key;\n const dataSource = selectNgssmDataState(state).dataSources[key];\n if (!dataSource) {\n this.logger.error(`No data source setup for key '${key}'`);\n return;\n }\n\n const dataSourceValue = selectNgssmDataState(state).dataSourceValues[key];\n\n switch (action.type) {\n case NgssmDataActionType.loadDataSourceValue: {\n if (dataSourceValue?.status !== NgssmDataSourceValueStatus.loading) {\n this.logger.information(\n `Data source value for '${key}' is not in '${NgssmDataSourceValueStatus.loading}' status: '${dataSourceValue?.status}'`\n );\n return;\n }\n\n runInInjectionContext(this.injector, () => {\n dataSource.dataLoadingFunc(state, dataSourceValue.parameter).subscribe({\n next: (value) => store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.loaded, value)),\n error: (error) => {\n this.logger.error(`Unable to load data for '${key}'`, error);\n store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.error));\n }\n });\n });\n\n break;\n }\n\n case NgssmDataActionType.loadDataSourceAdditionalPropertyValue: {\n const ngssmLoadDataSourceAdditionalPropertyValueAction = action as NgssmLoadDataSourceAdditionalPropertyValueAction;\n const property = ngssmLoadDataSourceAdditionalPropertyValueAction.property;\n if (dataSourceValue.additionalProperties[property]?.status !== NgssmDataSourceValueStatus.loading) {\n this.logger.information(\n `Data source additional property value for '${key}' and property '${property}' is not in '${NgssmDataSourceValueStatus.loading}' status: '${dataSourceValue?.status}'`\n );\n return;\n }\n\n runInInjectionContext(this.injector, () => {\n dataSource.dataLoadingFunc(state, dataSourceValue.parameter, property).subscribe({\n next: (value) =>\n store.dispatchAction(\n new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.loaded, value)\n ),\n error: (error) => {\n this.logger.error(`Unable to load data for '${key}' and property '${property}'`, error);\n store.dispatchAction(new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.error));\n }\n });\n });\n\n break;\n }\n }\n }\n}\n","import { APP_INITIALIZER, EnvironmentProviders, Inject, Injectable, Optional, makeEnvironmentProviders } from '@angular/core';\n\nimport { Store, provideEffects, provideReducers } from 'ngssm-store';\n\nimport { NGSSM_DATA_SOURCE, NgssmDataSource } from './model';\nimport { DataSourceValueReducer, DataSourcesRegistrationReducer } from './reducers';\nimport { DataLoadingEffect } from './effects';\nimport { NgssmRegisterDataSourcesAction } from './actions';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgssmDataSourceCollection {\n constructor(@Inject(NGSSM_DATA_SOURCE) @Optional() public dataSources: NgssmDataSource[]) {}\n}\n\nconst initDataSourceValues = (store: Store, dataSourceCollection: NgssmDataSourceCollection): (() => void) => {\n return () => {\n const dataSources = dataSourceCollection.dataSources ?? [];\n if (dataSources.length > 0) {\n store.dispatchAction(new NgssmRegisterDataSourcesAction(dataSources));\n }\n };\n};\n\nexport const provideNgssmData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: APP_INITIALIZER,\n useFactory: initDataSourceValues,\n deps: [Store, NgssmDataSourceCollection],\n multi: true\n },\n provideReducers(DataSourcesRegistrationReducer, DataSourceValueReducer),\n provideEffects(DataLoadingEffect)\n ]);\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { State } from 'ngssm-store';\n\nimport { NgssmDataSourceValueStatus } from '../model';\nimport { selectNgssmDataSourceValue } from '../state';\n\n@Pipe({\n name: 'isNgssmDataSourceValueStatus',\n standalone: true\n})\nexport class IsNgssmDataSourceValueStatusPipe implements PipeTransform {\n public transform(value: State, ...args: string[]): boolean {\n const key = args[0];\n const expectedStatuses = args.slice(1).map((a) => a as NgssmDataSourceValueStatus);\n const itemStatus = selectNgssmDataSourceValue(value, key).status;\n return expectedStatuses.includes(itemStatus);\n }\n}\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { getNgssmDataSourceValueAutoReloadTypes, NgssmDataSourceValueAutoReloadType } from '../../model';\n\n@Component({\n selector: 'ngssm-auto-reload',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatSelectModule],\n templateUrl: './ngssm-auto-reload.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmAutoReloadComponent extends NgSsmComponent {\n private timerId: any;\n\n public readonly reloadTypes = getNgssmDataSourceValueAutoReloadTypes();\n public readonly reloadTypeControl = new FormControl<NgssmDataSourceValueAutoReloadType>('Off');\n\n @Input() autoReloadAction: () => void = () => {};\n\n constructor(store: Store) {\n super(store);\n\n this.reloadTypeControl.valueChanges.subscribe((v) => {\n if (v === 'Off' && this.timerId) {\n clearInterval(this.timerId);\n this.timerId = undefined;\n return;\n }\n\n let period = 60000;\n switch (v) {\n case '5min':\n period = 5 * period;\n break;\n\n case '15min':\n period = 15 * period;\n break;\n }\n\n this.timerId = setInterval(this.autoReloadAction, period);\n });\n\n this.unsubscribeAll$.subscribe(() => {\n if (this.timerId) {\n clearInterval(this.timerId);\n this.timerId = undefined;\n }\n });\n }\n}\n","<mat-form-field>\n <mat-label>Select auto reload period</mat-label>\n <mat-select [formControl]=\"reloadTypeControl\">\n @for (option of reloadTypes; track option.value){\n <mat-option [value]=\"option.value\">\n {{option.label}}\n </mat-option>\n }\n </mat-select>\n</mat-form-field>","import { Component, ChangeDetectionStrategy, Input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { DateTime } from 'luxon';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { selectNgssmDataState } from '../../state';\nimport { NgssmDataSourceValueStatus } from '../../model';\nimport { NgssmLoadDataSourceValueAction } from '../../actions';\nimport { NgssmAutoReloadComponent } from '../ngssm-auto-reload/ngssm-auto-reload.component';\n\n@Component({\n selector: 'ngssm-data-reload-button',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressSpinnerModule, NgssmAutoReloadComponent],\n templateUrl: './ngssm-data-reload-button.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmDataReloadButtonComponent extends NgSsmComponent {\n private readonly toUnsubscribe$ = new Subject<void>();\n private _dataSourceKeys: string[] = [];\n\n public readonly loadInProgress = signal<boolean>(false);\n public readonly buttonDisabled = signal<boolean>(true);\n public readonly tooltipMessage = signal<string>('');\n public readonly icon = signal<string>('fa-solid fa-rotate-right');\n public readonly color = signal<string>('primary');\n public readonly withAutoReload = signal<boolean>(false);\n public readonly reloadAction = () => this.reload();\n\n @Input() public keepAdditionalProperties = false;\n\n constructor(store: Store) {\n super(store);\n }\n\n @Input() set buttonIcon(value: string) {\n this.icon.set(value);\n }\n\n @Input() set autoReloadEnabled(value: boolean) {\n this.withAutoReload.set(value);\n }\n\n @Input() public set dataSourceKeys(value: string[]) {\n this.toUnsubscribe$.next();\n this._dataSourceKeys = value ?? [];\n this.watch((s) => selectNgssmDataState(s).dataSourceValues)\n .pipe(takeUntil(this.toUnsubscribe$))\n .subscribe((values) => {\n this.loadInProgress.set(this._dataSourceKeys.findIndex((v) => values[v]?.status === NgssmDataSourceValueStatus.loading) !== -1);\n let timestamp: DateTime | undefined;\n this._dataSourceKeys.forEach((key) => {\n const keyTimestamp = values[key]?.lastLoadingDate;\n if (keyTimestamp) {\n if (!timestamp || timestamp > keyTimestamp) {\n timestamp = keyTimestamp;\n }\n }\n });\n\n let tooltiMessage = 'Reload data.';\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${timestamp.toHTTP()}`].join('\\n');\n }\n this.tooltipMessage.set(tooltiMessage);\n\n if (this.loadInProgress()) {\n this.buttonDisabled.set(true);\n return;\n }\n\n const someHasAnInvalidParameter = this._dataSourceKeys.findIndex((key) => values[key]?.parameterIsValid === false) !== -1;\n if (someHasAnInvalidParameter) {\n this.buttonDisabled.set(true);\n return;\n }\n\n this.buttonDisabled.set(this._dataSourceKeys.findIndex((v) => !!values[v]) === -1);\n\n const someHasAnOutdatedValue = this._dataSourceKeys.findIndex((key) => values[key]?.valueOutdated === true) !== -1;\n this.color.set(someHasAnOutdatedValue ? 'accent' : 'primary');\n });\n }\n\n public reload(): void {\n const isDisabled = this.buttonDisabled();\n if (isDisabled) {\n return;\n }\n\n this._dataSourceKeys.forEach((key) =>\n this.dispatchAction(\n new NgssmLoadDataSourceValueAction(key, { forceReload: true, keepAdditionalProperties: this.keepAdditionalProperties })\n )\n );\n }\n}\n","<div class=\"flex-row-center\">\n <button mat-icon-button [color]=\"color()\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\" id=\"reloadButton\">\n\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon [ngClass]=\"icon()\"></mat-icon>\n }\n\n </button>\n @if (withAutoReload()) {\n <ngssm-auto-reload class=\"with-margin-left-8\" [autoReloadAction]=\"reloadAction\"></ngssm-auto-reload>\n }\n</div>","import { Directive, Input, OnDestroy } from '@angular/core';\n\nimport { Store } from 'ngssm-store';\n\nimport { NgssmDataSource } from '../model';\nimport { NgssmRegisterDataSourceAction, NgssmUnregisterDataSourceAction } from '../actions';\n\n@Directive({\n selector: '[ngssmScopedDataSource]',\n standalone: true\n})\nexport class NgssmScopedDataSourceDirective implements OnDestroy {\n private _dataSource: NgssmDataSource | undefined;\n\n constructor(private store: Store) {}\n\n @Input() set ngssmScopedDataSource(value: NgssmDataSource) {\n if (this._dataSource) {\n throw new Error('Data source is already set.');\n }\n this._dataSource = value;\n this.store.dispatchAction(new NgssmRegisterDataSourceAction(this._dataSource));\n }\n\n public ngOnDestroy(): void {\n const key = this._dataSource?.key;\n if (key) {\n this.store.dispatchAction(new NgssmUnregisterDataSourceAction(key));\n }\n }\n}\n","/*\n * Public API Surface of ngssm-data\n */\n\nexport * from './lib/ngssm-data/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i5"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngssm-data.mjs","sources":["../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-data-action-type.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-load-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-set-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-register-data-sources.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-clear-data-source-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-set-data-source-parameter.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-load-data-source-additional-property-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-set-data-source-additional-property-value.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-register-data-source.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-unregister-data-source.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-update-data-source-parameter.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/actions/ngssm-set-data-source-parameter-validity.action.ts","../../../projects/ngssm-data/src/lib/ngssm-data/model/ngssm-data-source.ts","../../../projects/ngssm-data/src/lib/ngssm-data/model/ngssm-data-source-value.ts","../../../projects/ngssm-data/src/lib/ngssm-data/state/ngssm-data.state.ts","../../../projects/ngssm-data/src/lib/ngssm-data/state/selectors.ts","../../../projects/ngssm-data/src/lib/ngssm-data/reducers/data-sources-registration.reducer.ts","../../../projects/ngssm-data/src/lib/ngssm-data/reducers/data-source-value.reducer.ts","../../../projects/ngssm-data/src/lib/ngssm-data/effects/data-loading.effect.ts","../../../projects/ngssm-data/src/lib/ngssm-data/provide-ngssm-data.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/is-ngssm-data-source-value-status.pipe.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-auto-reload/ngssm-auto-reload.component.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-auto-reload/ngssm-auto-reload.component.html","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-data-reload-button/ngssm-data-reload-button.component.ts","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-data-reload-button/ngssm-data-reload-button.component.html","../../../projects/ngssm-data/src/lib/ngssm-data/components/ngssm-scoped-data-source.directive.ts","../../../projects/ngssm-data/src/public-api.ts","../../../projects/ngssm-data/src/ngssm-data.ts"],"sourcesContent":["export enum NgssmDataActionType {\n // Used by the library to initialize all the data sources provided by the application\n registerDataSources = '[NgssmDataActionType] registerDataSources',\n\n // Could be used by the application to register or unregister a data source.\n // This can be used, for example, to limit the lifetime of a data source to the lifetime of a component\n registerDataSource = '[NgssmDataActionType] registerDataSource',\n unregisterDataSource = '[NgssmDataActionType] unregisterDataSource',\n\n // Used to call the loading method to get the value for the data source\n loadDataSourceValue = '[NgssmDataActionType] loadDataSourceValue',\n\n // Update the parameter used by the loading method, if one is required\n setDataSourceParameter = '[NgssmDataActionType] setDataSourceParameter',\n\n // Used to partially update the parameter. Usefull when creating a search component with multiple search criteria.\n updateDataSourceParameter = '[NgssmDataActionType] updateDataSourceParameter',\n\n // Update only the validity of the parameter. Usefull in case of a partial update of the parameter.\n setDataSourceParameterValidity = '[NgssmDataActionType] setDataSourceParameterValidity',\n\n // Clear the stored value associated to a data source\n clearDataSourceValue = '[NgssmDataActionType] clearDataSourceValue',\n\n // Store the value for a given data source\n setDataSourceValue = '[NgssmDataActionType] setDataSourceValue',\n\n // Call the loading method to get the value for an additional property of the data source\n loadDataSourceAdditionalPropertyValue = '[NgssmDataActionType] loadDataSourceAdditionalPropertyValue',\n\n // Store the value for an additional property of the data source\n setDataSourceAdditionalPropertyValue = '[NgssmDataActionType] setDataSourceAdditionalPropertyValue'\n}\n","import { Action } from 'ngssm-store';\n\nexport class NgssmDataSourceValueAction implements Action {\n constructor(\n public readonly type: string,\n public readonly key: string\n ) {}\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmLoadDataSourceOptions } from '../model';\n\nexport class NgssmLoadDataSourceValueAction<TParameter = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly options?: NgssmLoadDataSourceOptions<TParameter>\n ) {\n super(NgssmDataActionType.loadDataSourceValue, key);\n }\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSourceValueStatus } from '../model';\n\nexport class NgssmSetDataSourceValueAction<TData = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly status: NgssmDataSourceValueStatus,\n public readonly value?: TData\n ) {\n super(NgssmDataActionType.setDataSourceValue, key);\n }\n}\n","import { Action } from 'ngssm-store';\n\nimport { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSource } from '../model';\n\nexport class NgssmRegisterDataSourcesAction implements Action {\n public readonly type: string = NgssmDataActionType.registerDataSources;\n\n constructor(public readonly dataSources: NgssmDataSource[]) {}\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmClearDataSourceValueAction extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly clearParameter: boolean = false\n ) {\n super(NgssmDataActionType.clearDataSourceValue, key);\n }\n}\n","import { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\n\nexport class NgssmSetDataSourceParameterAction<TParameter = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly parameter?: TParameter,\n public readonly parameterIsValid?: boolean\n ) {\n super(NgssmDataActionType.setDataSourceParameter, key);\n }\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmLoadDataSourceAdditionalPropertyValueAction extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly property: string,\n public readonly forceReload?: boolean\n ) {\n super(NgssmDataActionType.loadDataSourceAdditionalPropertyValue, key);\n }\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataSourceValueStatus } from '../model';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmSetDataSourceAdditionalPropertyValueAction<TProperty = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly property: string,\n public readonly status: NgssmDataSourceValueStatus,\n public readonly value?: TProperty\n ) {\n super(NgssmDataActionType.setDataSourceAdditionalPropertyValue, key);\n }\n}\n","import { Action } from 'ngssm-store';\n\nimport { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSource } from '../model';\n\nexport class NgssmRegisterDataSourceAction implements Action {\n public readonly type: string = NgssmDataActionType.registerDataSource;\n\n constructor(public readonly dataSource: NgssmDataSource) {}\n}\n","import { Action } from 'ngssm-store';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmUnregisterDataSourceAction implements Action {\n public readonly type: string = NgssmDataActionType.unregisterDataSource;\n\n constructor(public readonly dataSourceKey: string) {}\n}\n","import { NgssmDataActionType } from './ngssm-data-action-type';\nimport { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\n\nexport class NgssmUpdateDataSourceParameterAction<TParameter = any> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly parameter: Partial<TParameter>\n ) {\n super(NgssmDataActionType.updateDataSourceParameter, key);\n }\n}\n","import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';\nimport { NgssmDataActionType } from './ngssm-data-action-type';\n\nexport class NgssmSetDataSourceParameterValidityAction extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly isValid: boolean\n ) {\n super(NgssmDataActionType.setDataSourceParameterValidity, key);\n }\n}\n","import { EnvironmentProviders, InjectionToken, inject, makeEnvironmentProviders } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { State, Store } from 'ngssm-store';\nimport { NgssmLoadDataSourceValueAction } from '../actions';\n\nexport interface NgssmDataLoading<TData = any, TParameter = any> {\n (state: State, parameter?: TParameter, additionalProperty?: string): Observable<TData>;\n}\n\nexport interface NgssmDataSource<TData = any, TParameter = any> {\n key: string;\n dataLifetimeInSeconds?: number;\n dataLoadingFunc: NgssmDataLoading<TData, TParameter>;\n initialParameter?: TParameter;\n}\n\nexport const NGSSM_DATA_SOURCE = new InjectionToken<NgssmDataSource>('NGSSM_DATA_SOURCE');\n\nexport const provideNgssmDataSource = <TData = any, TParameter = any>(\n key: string,\n loadingFunc: NgssmDataLoading<TData, TParameter>,\n dataLifetimeInSeconds?: number,\n initialParameter?: TParameter\n): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: NGSSM_DATA_SOURCE,\n useFactory: () => {\n const dataSource: NgssmDataSource<TData, TParameter> = {\n key,\n dataLifetimeInSeconds,\n dataLoadingFunc: loadingFunc\n };\n if (initialParameter) {\n dataSource.initialParameter = initialParameter;\n }\n\n return dataSource;\n },\n multi: true\n }\n ]);\n};\n\nexport const ngssmLoadDataSourceValue = (key: string, forceReload: boolean = false): (() => boolean) => {\n return () => {\n inject(Store).dispatchAction(new NgssmLoadDataSourceValueAction(key, { forceReload }));\n return true;\n };\n};\n","import { DateTime } from 'luxon';\n\nexport enum NgssmDataSourceValueStatus {\n none = 'none',\n notRegistered = 'notRegistered',\n loading = 'loading',\n loaded = 'loaded',\n error = 'error'\n}\n\nexport interface NgssmDataSourceAdditionalPropertyValue<TProperty = any> {\n status: NgssmDataSourceValueStatus;\n value?: TProperty;\n lastLoadingDate?: DateTime;\n}\n\nexport interface NgssmDataSourceValue<TData = any, TParameter = any> {\n status: NgssmDataSourceValueStatus;\n value?: TData;\n parameter?: TParameter;\n lastLoadingDate?: DateTime;\n dataLifetimeInSeconds?: number;\n additionalProperties: { [key: string]: NgssmDataSourceAdditionalPropertyValue };\n parameterIsValid?: boolean;\n\n // Parameter has been updated but not value\n valueOutdated?: boolean;\n}\n\nexport type NgssmDataSourceValueAutoReloadType = 'Off' | '1min' | '5min' | '15min';\nexport const getNgssmDataSourceValueAutoReloadTypes = (): { label: string; value: NgssmDataSourceValueAutoReloadType }[] => [\n { label: 'Off', value: 'Off' },\n { label: 'Every minute', value: '1min' },\n { label: 'Every 5 minutes', value: '5min' },\n { label: 'Every 15 minutes', value: '15min' }\n];\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\nimport { NgssmDataSource, NgssmDataSourceValue } from '../model';\n\nexport const selectNgssmDataState = (state: State): NgssmDataState => state[NgssmDataStateSpecification.featureStateKey] as NgssmDataState;\n\nexport const updateNgssmDataState = (state: State, command: Spec<NgssmDataState, never>): State =>\n update(state, {\n [NgssmDataStateSpecification.featureStateKey]: command\n });\n\nexport interface NgssmDataState {\n dataSourceValues: { [key: string]: NgssmDataSourceValue };\n dataSources: { [key: string]: NgssmDataSource };\n}\n\n@NgSsmFeatureState({\n featureStateKey: NgssmDataStateSpecification.featureStateKey,\n initialState: NgssmDataStateSpecification.initialState\n})\nexport class NgssmDataStateSpecification {\n public static readonly featureStateKey = 'ngssm-data-state';\n public static readonly initialState: NgssmDataState = {\n dataSourceValues: {},\n dataSources: {}\n };\n}\n","import { State } from 'ngssm-store';\nimport { NgssmDataSourceAdditionalPropertyValue, NgssmDataSourceValue, NgssmDataSourceValueStatus } from '../model';\nimport { selectNgssmDataState } from './ngssm-data.state';\n\nexport const selectNgssmDataSourceValue = <TDataType = any, TParameter = any>(\n state: State,\n key: string\n): NgssmDataSourceValue<TDataType, TParameter> => {\n return (\n selectNgssmDataState(state).dataSourceValues[key] ?? {\n status: NgssmDataSourceValueStatus.notRegistered\n }\n );\n};\n\nexport const selectNgssmDataSourceAdditionalPropertyValue = <TProperty = any>(\n state: State,\n key: string,\n property: string\n): NgssmDataSourceAdditionalPropertyValue<TProperty> => {\n return (\n selectNgssmDataState(state).dataSourceValues[key]?.additionalProperties[property] ?? {\n status: NgssmDataSourceValueStatus.notRegistered\n }\n );\n};\n","import { Injectable } from '@angular/core';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport {\n NgssmDataActionType,\n NgssmRegisterDataSourceAction,\n NgssmRegisterDataSourcesAction,\n NgssmUnregisterDataSourceAction\n} from '../actions';\nimport { NgssmDataSource, NgssmDataSourceValue, NgssmDataSourceValueStatus } from '../model';\nimport { selectNgssmDataState, updateNgssmDataState } from '../state';\n\n@Injectable()\nexport class DataSourcesRegistrationReducer implements Reducer {\n public readonly processedActions: string[] = [\n NgssmDataActionType.registerDataSources,\n NgssmDataActionType.registerDataSource,\n NgssmDataActionType.unregisterDataSource\n ];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmDataActionType.registerDataSources: {\n const registerDataSourcesAction = action as NgssmRegisterDataSourcesAction;\n const dataSourceValues: { [key: string]: NgssmDataSourceValue } = {};\n const dataSources: { [key: string]: NgssmDataSource } = {};\n registerDataSourcesAction.dataSources.forEach((dataSource) => {\n if (selectNgssmDataState(state).dataSources[dataSource.key]) {\n return;\n }\n\n dataSourceValues[dataSource.key] = {\n status: NgssmDataSourceValueStatus.none,\n additionalProperties: {}\n };\n\n if (dataSource.dataLifetimeInSeconds) {\n dataSourceValues[dataSource.key].dataLifetimeInSeconds = dataSource.dataLifetimeInSeconds;\n }\n\n if (dataSource.initialParameter) {\n dataSourceValues[dataSource.key].parameter = dataSource.initialParameter;\n }\n\n dataSources[dataSource.key] = dataSource;\n });\n\n return updateNgssmDataState(state, {\n dataSourceValues: { $merge: dataSourceValues },\n dataSources: { $merge: dataSources }\n });\n }\n\n case NgssmDataActionType.registerDataSource: {\n const registerDataSourceAction = action as NgssmRegisterDataSourceAction;\n return this.updateState(state, new NgssmRegisterDataSourcesAction([registerDataSourceAction.dataSource]));\n }\n\n case NgssmDataActionType.unregisterDataSource: {\n const unregisterDataSource = action as NgssmUnregisterDataSourceAction;\n return updateNgssmDataState(state, {\n dataSourceValues: { $unset: [unregisterDataSource.dataSourceKey] },\n dataSources: { $unset: [unregisterDataSource.dataSourceKey] }\n });\n }\n }\n\n return state;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { DateTime } from 'luxon';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport {\n NgssmClearDataSourceValueAction,\n NgssmDataActionType,\n NgssmLoadDataSourceAdditionalPropertyValueAction,\n NgssmLoadDataSourceValueAction,\n NgssmSetDataSourceAdditionalPropertyValueAction,\n NgssmSetDataSourceParameterAction,\n NgssmSetDataSourceParameterValidityAction,\n NgssmSetDataSourceValueAction,\n NgssmUpdateDataSourceParameterAction\n} from '../actions';\nimport { selectNgssmDataState, updateNgssmDataState } from '../state';\nimport { NgssmDataSourceValueStatus } from '../model';\n\n@Injectable()\nexport class DataSourceValueReducer implements Reducer {\n public readonly processedActions: string[] = [\n NgssmDataActionType.loadDataSourceValue,\n NgssmDataActionType.setDataSourceValue,\n NgssmDataActionType.clearDataSourceValue,\n NgssmDataActionType.setDataSourceParameter,\n NgssmDataActionType.loadDataSourceAdditionalPropertyValue,\n NgssmDataActionType.setDataSourceAdditionalPropertyValue,\n NgssmDataActionType.updateDataSourceParameter,\n NgssmDataActionType.setDataSourceParameterValidity\n ];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmDataActionType.loadDataSourceValue: {\n const loadDataSourceValue = action as NgssmLoadDataSourceValueAction;\n const dataSourceValue = selectNgssmDataState(state).dataSourceValues[loadDataSourceValue.key];\n if (!dataSourceValue) {\n break;\n }\n\n let shouldReload = false;\n\n let currentState = state;\n if (loadDataSourceValue.options?.parameter) {\n shouldReload = true;\n currentState = updateNgssmDataState(state, {\n dataSourceValues: {\n [loadDataSourceValue.key]: {\n parameter: { $set: loadDataSourceValue.options?.parameter.value }\n }\n }\n });\n }\n\n if (dataSourceValue.status === NgssmDataSourceValueStatus.loaded) {\n if (\n loadDataSourceValue.options?.forceReload === true ||\n !dataSourceValue.dataLifetimeInSeconds ||\n !dataSourceValue.lastLoadingDate\n ) {\n shouldReload = true;\n } else {\n const dataLifetime = DateTime.now().diff(dataSourceValue.lastLoadingDate, 'second');\n if ((dataLifetime.toObject().seconds ?? 0) > dataSourceValue.dataLifetimeInSeconds) {\n shouldReload = true;\n }\n }\n } else {\n shouldReload = true;\n }\n\n if (dataSourceValue.parameterIsValid === false) {\n shouldReload = false;\n }\n\n if (shouldReload) {\n if (loadDataSourceValue.options?.keepAdditionalProperties !== true) {\n currentState = updateNgssmDataState(currentState, {\n dataSourceValues: {\n [loadDataSourceValue.key]: {\n additionalProperties: { $set: {} }\n }\n }\n });\n }\n\n if (loadDataSourceValue.options?.resetValue === true) {\n currentState = updateNgssmDataState(currentState, {\n dataSourceValues: {\n [loadDataSourceValue.key]: {\n value: { $set: undefined }\n }\n }\n });\n }\n\n return updateNgssmDataState(currentState, {\n dataSourceValues: {\n [loadDataSourceValue.key]: {\n status: { $set: NgssmDataSourceValueStatus.loading },\n valueOutdated: { $set: false }\n }\n }\n });\n }\n\n break;\n }\n\n case NgssmDataActionType.setDataSourceValue: {\n const ngssmSetDataSourceValueAction = action as NgssmSetDataSourceValueAction;\n const dataSourceValue = selectNgssmDataState(state).dataSourceValues[ngssmSetDataSourceValueAction.key];\n if (!dataSourceValue) {\n break;\n }\n\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceValueAction.key]: {\n status: { $set: ngssmSetDataSourceValueAction.status },\n value: { $set: ngssmSetDataSourceValueAction.value },\n lastLoadingDate: { $set: DateTime.now() }\n }\n }\n });\n }\n\n case NgssmDataActionType.clearDataSourceValue: {\n const ngssmClearDataSourceValueAction = action as NgssmClearDataSourceValueAction;\n let currentState = state;\n if (ngssmClearDataSourceValueAction.clearParameter) {\n currentState = updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmClearDataSourceValueAction.key]: {\n parameter: { $set: undefined },\n parameterIsValid: { $set: undefined }\n }\n }\n });\n }\n\n return updateNgssmDataState(currentState, {\n dataSourceValues: {\n [ngssmClearDataSourceValueAction.key]: {\n status: { $set: NgssmDataSourceValueStatus.none },\n value: { $set: undefined },\n lastLoadingDate: { $set: undefined },\n additionalProperties: { $set: {} }\n }\n }\n });\n }\n\n case NgssmDataActionType.setDataSourceParameter: {\n const ngssmSetDataSourceParameterAction = action as NgssmSetDataSourceParameterAction;\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceParameterAction.key]: {\n parameter: { $set: ngssmSetDataSourceParameterAction.parameter },\n parameterIsValid: { $set: ngssmSetDataSourceParameterAction.parameterIsValid },\n valueOutdated: { $set: true }\n }\n }\n });\n }\n\n case NgssmDataActionType.updateDataSourceParameter: {\n const ngssmUpdateDataSourceParameterAction = action as NgssmUpdateDataSourceParameterAction;\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmUpdateDataSourceParameterAction.key]: {\n parameter: { $merge: ngssmUpdateDataSourceParameterAction.parameter },\n valueOutdated: { $set: true }\n }\n }\n });\n }\n\n case NgssmDataActionType.setDataSourceParameterValidity: {\n const ngssmSetDataSourceParameterValidityAction = action as NgssmSetDataSourceParameterValidityAction;\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceParameterValidityAction.key]: {\n parameterIsValid: { $set: ngssmSetDataSourceParameterValidityAction.isValid }\n }\n }\n });\n }\n\n case NgssmDataActionType.loadDataSourceAdditionalPropertyValue: {\n const ngssmLoadDataSourceAdditionalPropertyValueAction = action as NgssmLoadDataSourceAdditionalPropertyValueAction;\n const dataSourcePropertyValue =\n selectNgssmDataState(state).dataSourceValues[ngssmLoadDataSourceAdditionalPropertyValueAction.key]?.additionalProperties[\n ngssmLoadDataSourceAdditionalPropertyValueAction.property\n ];\n\n if (\n dataSourcePropertyValue?.status === NgssmDataSourceValueStatus.loaded &&\n ngssmLoadDataSourceAdditionalPropertyValueAction.forceReload !== true\n ) {\n break;\n }\n\n if (!dataSourcePropertyValue) {\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmLoadDataSourceAdditionalPropertyValueAction.key]: {\n additionalProperties: {\n [ngssmLoadDataSourceAdditionalPropertyValueAction.property]: {\n $set: {\n status: NgssmDataSourceValueStatus.loading\n }\n }\n }\n }\n }\n });\n }\n\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmLoadDataSourceAdditionalPropertyValueAction.key]: {\n additionalProperties: {\n [ngssmLoadDataSourceAdditionalPropertyValueAction.property]: {\n status: { $set: NgssmDataSourceValueStatus.loading }\n }\n }\n }\n }\n });\n }\n\n case NgssmDataActionType.setDataSourceAdditionalPropertyValue: {\n const ngssmSetDataSourceAdditionalPropertyValueAction = action as NgssmSetDataSourceAdditionalPropertyValueAction;\n const dataSourcePropertyValue =\n selectNgssmDataState(state).dataSourceValues[ngssmSetDataSourceAdditionalPropertyValueAction.key]?.additionalProperties[\n ngssmSetDataSourceAdditionalPropertyValueAction.property\n ];\n\n if (!dataSourcePropertyValue) {\n break;\n }\n\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceAdditionalPropertyValueAction.key]: {\n additionalProperties: {\n [ngssmSetDataSourceAdditionalPropertyValueAction.property]: {\n $set: {\n status: ngssmSetDataSourceAdditionalPropertyValueAction.status,\n value: ngssmSetDataSourceAdditionalPropertyValueAction.value\n }\n }\n }\n }\n }\n });\n }\n }\n\n return state;\n }\n}\n","import { EnvironmentInjector, Injectable, runInInjectionContext } from '@angular/core';\n\nimport { Effect, Store, State, Action, Logger } from 'ngssm-store';\n\nimport {\n NgssmDataActionType,\n NgssmDataSourceValueAction,\n NgssmLoadDataSourceAdditionalPropertyValueAction,\n NgssmSetDataSourceAdditionalPropertyValueAction,\n NgssmSetDataSourceValueAction\n} from '../actions';\nimport { selectNgssmDataState } from '../state';\nimport { NgssmDataSourceValueStatus } from '../model';\n\n@Injectable()\nexport class DataLoadingEffect implements Effect {\n public readonly processedActions: string[] = [\n NgssmDataActionType.loadDataSourceValue,\n NgssmDataActionType.loadDataSourceAdditionalPropertyValue\n ];\n\n constructor(\n private logger: Logger,\n private injector: EnvironmentInjector\n ) {}\n\n public processAction(store: Store, state: State, action: Action): void {\n const key = (action as NgssmDataSourceValueAction).key;\n const dataSource = selectNgssmDataState(state).dataSources[key];\n if (!dataSource) {\n this.logger.error(`No data source setup for key '${key}'`);\n return;\n }\n\n const dataSourceValue = selectNgssmDataState(state).dataSourceValues[key];\n\n switch (action.type) {\n case NgssmDataActionType.loadDataSourceValue: {\n if (dataSourceValue?.status !== NgssmDataSourceValueStatus.loading) {\n this.logger.information(\n `Data source value for '${key}' is not in '${NgssmDataSourceValueStatus.loading}' status: '${dataSourceValue?.status}'`\n );\n return;\n }\n\n runInInjectionContext(this.injector, () => {\n dataSource.dataLoadingFunc(state, dataSourceValue.parameter).subscribe({\n next: (value) => store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.loaded, value)),\n error: (error) => {\n this.logger.error(`Unable to load data for '${key}'`, error);\n store.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.error));\n }\n });\n });\n\n break;\n }\n\n case NgssmDataActionType.loadDataSourceAdditionalPropertyValue: {\n const ngssmLoadDataSourceAdditionalPropertyValueAction = action as NgssmLoadDataSourceAdditionalPropertyValueAction;\n const property = ngssmLoadDataSourceAdditionalPropertyValueAction.property;\n if (dataSourceValue.additionalProperties[property]?.status !== NgssmDataSourceValueStatus.loading) {\n this.logger.information(\n `Data source additional property value for '${key}' and property '${property}' is not in '${NgssmDataSourceValueStatus.loading}' status: '${dataSourceValue?.status}'`\n );\n return;\n }\n\n runInInjectionContext(this.injector, () => {\n dataSource.dataLoadingFunc(state, dataSourceValue.parameter, property).subscribe({\n next: (value) =>\n store.dispatchAction(\n new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.loaded, value)\n ),\n error: (error) => {\n this.logger.error(`Unable to load data for '${key}' and property '${property}'`, error);\n store.dispatchAction(new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.error));\n }\n });\n });\n\n break;\n }\n }\n }\n}\n","import { EnvironmentProviders, Inject, Injectable, Optional, makeEnvironmentProviders, inject, provideAppInitializer } from '@angular/core';\n\nimport { Store, provideEffects, provideReducers } from 'ngssm-store';\n\nimport { NGSSM_DATA_SOURCE, NgssmDataSource } from './model';\nimport { DataSourceValueReducer, DataSourcesRegistrationReducer } from './reducers';\nimport { DataLoadingEffect } from './effects';\nimport { NgssmRegisterDataSourcesAction } from './actions';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgssmDataSourceCollection {\n constructor(@Inject(NGSSM_DATA_SOURCE) @Optional() public dataSources: NgssmDataSource[]) {}\n}\n\nconst initDataSourceValues = () => {\n const store = inject(Store);\n const dataSourceCollection = inject(NgssmDataSourceCollection);\n const dataSources = dataSourceCollection.dataSources ?? [];\n if (dataSources.length > 0) {\n store.dispatchAction(new NgssmRegisterDataSourcesAction(dataSources));\n }\n};\n\nexport const provideNgssmData = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n provideAppInitializer(initDataSourceValues),\n provideReducers(DataSourcesRegistrationReducer, DataSourceValueReducer),\n provideEffects(DataLoadingEffect)\n ]);\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { State } from 'ngssm-store';\n\nimport { NgssmDataSourceValueStatus } from '../model';\nimport { selectNgssmDataSourceValue } from '../state';\n\n@Pipe({\n name: 'isNgssmDataSourceValueStatus',\n standalone: true\n})\nexport class IsNgssmDataSourceValueStatusPipe implements PipeTransform {\n public transform(value: State, ...args: string[]): boolean {\n const key = args[0];\n const expectedStatuses = args.slice(1).map((a) => a as NgssmDataSourceValueStatus);\n const itemStatus = selectNgssmDataSourceValue(value, key).status;\n return expectedStatuses.includes(itemStatus);\n }\n}\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { getNgssmDataSourceValueAutoReloadTypes, NgssmDataSourceValueAutoReloadType } from '../../model';\n\n@Component({\n selector: 'ngssm-auto-reload',\n imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatSelectModule],\n templateUrl: './ngssm-auto-reload.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmAutoReloadComponent extends NgSsmComponent {\n private timerId: any;\n\n public readonly reloadTypes = getNgssmDataSourceValueAutoReloadTypes();\n public readonly reloadTypeControl = new FormControl<NgssmDataSourceValueAutoReloadType>('Off');\n\n @Input() autoReloadAction: () => void = () => {};\n\n constructor(store: Store) {\n super(store);\n\n this.reloadTypeControl.valueChanges.subscribe((v) => {\n if (v === 'Off' && this.timerId) {\n clearInterval(this.timerId);\n this.timerId = undefined;\n return;\n }\n\n let period = 60000;\n switch (v) {\n case '5min':\n period = 5 * period;\n break;\n\n case '15min':\n period = 15 * period;\n break;\n }\n\n this.timerId = setInterval(this.autoReloadAction, period);\n });\n\n this.unsubscribeAll$.subscribe(() => {\n if (this.timerId) {\n clearInterval(this.timerId);\n this.timerId = undefined;\n }\n });\n }\n}\n","<mat-form-field>\n <mat-label>Select auto reload period</mat-label>\n <mat-select [formControl]=\"reloadTypeControl\">\n @for (option of reloadTypes; track option.value){\n <mat-option [value]=\"option.value\">\n {{option.label}}\n </mat-option>\n }\n </mat-select>\n</mat-form-field>","import { Component, ChangeDetectionStrategy, Input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { DateTime } from 'luxon';\n\nimport { NgSsmComponent, Store } from 'ngssm-store';\n\nimport { selectNgssmDataState } from '../../state';\nimport { NgssmDataSourceValueStatus } from '../../model';\nimport { NgssmLoadDataSourceValueAction } from '../../actions';\nimport { NgssmAutoReloadComponent } from '../ngssm-auto-reload/ngssm-auto-reload.component';\n\n@Component({\n selector: 'ngssm-data-reload-button',\n imports: [CommonModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressSpinnerModule, NgssmAutoReloadComponent],\n templateUrl: './ngssm-data-reload-button.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmDataReloadButtonComponent extends NgSsmComponent {\n private readonly toUnsubscribe$ = new Subject<void>();\n private _dataSourceKeys: string[] = [];\n\n public readonly loadInProgress = signal<boolean>(false);\n public readonly buttonDisabled = signal<boolean>(true);\n public readonly tooltipMessage = signal<string>('');\n public readonly icon = signal<string>('fa-solid fa-rotate-right');\n public readonly color = signal<string>('primary');\n public readonly withAutoReload = signal<boolean>(false);\n public readonly reloadAction = () => this.reload();\n\n @Input() public keepAdditionalProperties = false;\n\n constructor(store: Store) {\n super(store);\n }\n\n @Input() set buttonIcon(value: string) {\n this.icon.set(value);\n }\n\n @Input() set autoReloadEnabled(value: boolean) {\n this.withAutoReload.set(value);\n }\n\n @Input() public set dataSourceKeys(value: string[]) {\n this.toUnsubscribe$.next();\n this._dataSourceKeys = value ?? [];\n this.watch((s) => selectNgssmDataState(s).dataSourceValues)\n .pipe(takeUntil(this.toUnsubscribe$))\n .subscribe((values) => {\n this.loadInProgress.set(this._dataSourceKeys.findIndex((v) => values[v]?.status === NgssmDataSourceValueStatus.loading) !== -1);\n let timestamp: DateTime | undefined;\n this._dataSourceKeys.forEach((key) => {\n const keyTimestamp = values[key]?.lastLoadingDate;\n if (keyTimestamp) {\n if (!timestamp || timestamp > keyTimestamp) {\n timestamp = keyTimestamp;\n }\n }\n });\n\n let tooltiMessage = 'Reload data.';\n if (timestamp) {\n tooltiMessage = [tooltiMessage, `Loaded at ${timestamp.toHTTP()}`].join('\\n');\n }\n this.tooltipMessage.set(tooltiMessage);\n\n if (this.loadInProgress()) {\n this.buttonDisabled.set(true);\n return;\n }\n\n const someHasAnInvalidParameter = this._dataSourceKeys.findIndex((key) => values[key]?.parameterIsValid === false) !== -1;\n if (someHasAnInvalidParameter) {\n this.buttonDisabled.set(true);\n return;\n }\n\n this.buttonDisabled.set(this._dataSourceKeys.findIndex((v) => !!values[v]) === -1);\n\n const someHasAnOutdatedValue = this._dataSourceKeys.findIndex((key) => values[key]?.valueOutdated === true) !== -1;\n this.color.set(someHasAnOutdatedValue ? 'accent' : 'primary');\n });\n }\n\n public reload(): void {\n const isDisabled = this.buttonDisabled();\n if (isDisabled) {\n return;\n }\n\n this._dataSourceKeys.forEach((key) =>\n this.dispatchAction(\n new NgssmLoadDataSourceValueAction(key, { forceReload: true, keepAdditionalProperties: this.keepAdditionalProperties })\n )\n );\n }\n}\n","<div class=\"flex-row-center\">\n <button mat-icon-button [color]=\"color()\" (click)=\"reload()\" [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\" id=\"reloadButton\">\n\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon [ngClass]=\"icon()\"></mat-icon>\n }\n\n </button>\n @if (withAutoReload()) {\n <ngssm-auto-reload class=\"with-margin-left-8\" [autoReloadAction]=\"reloadAction\"></ngssm-auto-reload>\n }\n</div>","import { Directive, Input, OnDestroy } from '@angular/core';\n\nimport { Store } from 'ngssm-store';\n\nimport { NgssmDataSource } from '../model';\nimport { NgssmRegisterDataSourceAction, NgssmUnregisterDataSourceAction } from '../actions';\n\n@Directive({\n selector: '[ngssmScopedDataSource]',\n standalone: true\n})\nexport class NgssmScopedDataSourceDirective implements OnDestroy {\n private _dataSource: NgssmDataSource | undefined;\n\n constructor(private store: Store) {}\n\n @Input() set ngssmScopedDataSource(value: NgssmDataSource) {\n if (this._dataSource) {\n throw new Error('Data source is already set.');\n }\n this._dataSource = value;\n this.store.dispatchAction(new NgssmRegisterDataSourceAction(this._dataSource));\n }\n\n public ngOnDestroy(): void {\n const key = this._dataSource?.key;\n if (key) {\n this.store.dispatchAction(new NgssmUnregisterDataSourceAction(key));\n }\n }\n}\n","/*\n * Public API Surface of ngssm-data\n */\n\nexport * from './lib/ngssm-data/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i5"],"mappings":"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"}
|
|
@@ -8,7 +8,8 @@ export interface NgssmDataSource<TData = any, TParameter = any> {
|
|
|
8
8
|
key: string;
|
|
9
9
|
dataLifetimeInSeconds?: number;
|
|
10
10
|
dataLoadingFunc: NgssmDataLoading<TData, TParameter>;
|
|
11
|
+
initialParameter?: TParameter;
|
|
11
12
|
}
|
|
12
13
|
export declare const NGSSM_DATA_SOURCE: InjectionToken<NgssmDataSource<any, any>>;
|
|
13
|
-
export declare const provideNgssmDataSource: <TData = any, TParameter = any>(key: string, loadingFunc: NgssmDataLoading<TData, TParameter>, dataLifetimeInSeconds?: number) => EnvironmentProviders;
|
|
14
|
+
export declare const provideNgssmDataSource: <TData = any, TParameter = any>(key: string, loadingFunc: NgssmDataLoading<TData, TParameter>, dataLifetimeInSeconds?: number, initialParameter?: TParameter) => EnvironmentProviders;
|
|
14
15
|
export declare const ngssmLoadDataSourceValue: (key: string, forceReload?: boolean) => (() => boolean);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngssm-data",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "19.0.0",
|
|
4
4
|
"description": "NgSsm - Library used to facilitate the management of data get from remote service or computed locally.",
|
|
5
5
|
"author": "Lion Marc",
|
|
6
6
|
"license": "MIT",
|
|
@@ -27,8 +27,6 @@
|
|
|
27
27
|
},
|
|
28
28
|
".": {
|
|
29
29
|
"types": "./index.d.ts",
|
|
30
|
-
"esm2022": "./esm2022/ngssm-data.mjs",
|
|
31
|
-
"esm": "./esm2022/ngssm-data.mjs",
|
|
32
30
|
"default": "./fesm2022/ngssm-data.mjs"
|
|
33
31
|
}
|
|
34
32
|
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export * from './ngssm-data-action-type';
|
|
2
|
-
export * from './ngssm-data-source-value.action';
|
|
3
|
-
export * from './ngssm-load-data-source-value.action';
|
|
4
|
-
export * from './ngssm-set-data-source-value.action';
|
|
5
|
-
export * from './ngssm-register-data-sources.action';
|
|
6
|
-
export * from './ngssm-clear-data-source-value.action';
|
|
7
|
-
export * from './ngssm-set-data-source-parameter.action';
|
|
8
|
-
export * from './ngssm-load-data-source-additional-property-value.action';
|
|
9
|
-
export * from './ngssm-set-data-source-additional-property-value.action';
|
|
10
|
-
export * from './ngssm-register-data-source.action';
|
|
11
|
-
export * from './ngssm-unregister-data-source.action';
|
|
12
|
-
export * from './ngssm-update-data-source-parameter.action';
|
|
13
|
-
export * from './ngssm-set-data-source-parameter-validity.action';
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1kYXRhL3NyYy9saWIvbmdzc20tZGF0YS9hY3Rpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsbURBQW1ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL25nc3NtLWRhdGEtYWN0aW9uLXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1kYXRhLXNvdXJjZS12YWx1ZS5hY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1sb2FkLWRhdGEtc291cmNlLXZhbHVlLmFjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL25nc3NtLXNldC1kYXRhLXNvdXJjZS12YWx1ZS5hY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1yZWdpc3Rlci1kYXRhLXNvdXJjZXMuYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbmdzc20tY2xlYXItZGF0YS1zb3VyY2UtdmFsdWUuYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbmdzc20tc2V0LWRhdGEtc291cmNlLXBhcmFtZXRlci5hY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS1sb2FkLWRhdGEtc291cmNlLWFkZGl0aW9uYWwtcHJvcGVydHktdmFsdWUuYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbmdzc20tc2V0LWRhdGEtc291cmNlLWFkZGl0aW9uYWwtcHJvcGVydHktdmFsdWUuYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbmdzc20tcmVnaXN0ZXItZGF0YS1zb3VyY2UuYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbmdzc20tdW5yZWdpc3Rlci1kYXRhLXNvdXJjZS5hY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3NzbS11cGRhdGUtZGF0YS1zb3VyY2UtcGFyYW1ldGVyLmFjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL25nc3NtLXNldC1kYXRhLXNvdXJjZS1wYXJhbWV0ZXItdmFsaWRpdHkuYWN0aW9uJztcbiJdfQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';
|
|
2
|
-
import { NgssmDataActionType } from './ngssm-data-action-type';
|
|
3
|
-
export class NgssmClearDataSourceValueAction extends NgssmDataSourceValueAction {
|
|
4
|
-
constructor(key, clearParameter = false) {
|
|
5
|
-
super(NgssmDataActionType.clearDataSourceValue, key);
|
|
6
|
-
this.clearParameter = clearParameter;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tY2xlYXItZGF0YS1zb3VyY2UtdmFsdWUuYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tZGF0YS9zcmMvbGliL25nc3NtLWRhdGEvYWN0aW9ucy9uZ3NzbS1jbGVhci1kYXRhLXNvdXJjZS12YWx1ZS5hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLDBCQUEwQjtJQUM3RSxZQUNFLEdBQVcsRUFDSyxpQkFBMEIsS0FBSztRQUUvQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFGckMsbUJBQWMsR0FBZCxjQUFjLENBQWlCO0lBR2pELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nc3NtRGF0YVNvdXJjZVZhbHVlQWN0aW9uIH0gZnJvbSAnLi9uZ3NzbS1kYXRhLXNvdXJjZS12YWx1ZS5hY3Rpb24nO1xuaW1wb3J0IHsgTmdzc21EYXRhQWN0aW9uVHlwZSB9IGZyb20gJy4vbmdzc20tZGF0YS1hY3Rpb24tdHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBOZ3NzbUNsZWFyRGF0YVNvdXJjZVZhbHVlQWN0aW9uIGV4dGVuZHMgTmdzc21EYXRhU291cmNlVmFsdWVBY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBrZXk6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xlYXJQYXJhbWV0ZXI6IGJvb2xlYW4gPSBmYWxzZVxuICApIHtcbiAgICBzdXBlcihOZ3NzbURhdGFBY3Rpb25UeXBlLmNsZWFyRGF0YVNvdXJjZVZhbHVlLCBrZXkpO1xuICB9XG59XG4iXX0=
|