ngssm-data 19.2.3 → 19.3.1
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 +108 -99
- package/fesm2022/ngssm-data.mjs.map +1 -1
- package/lib/ngssm-data/actions/ngssm-load-data-source-additional-property-value.action.d.ts +2 -1
- package/lib/ngssm-data/actions/ngssm-set-data-source-additional-property-value.action.d.ts +2 -1
- package/lib/ngssm-data/components/ngssm-data-reload-button/ngssm-data-reload-button.component.d.ts +10 -14
- package/lib/ngssm-data/effects/data-loading.effect.d.ts +3 -5
- package/lib/ngssm-data/model/ngssm-data-source.d.ts +14 -4
- package/lib/ngssm-data/post-loading-action-executor.d.ts +1 -0
- package/package.json +1 -1
package/fesm2022/ngssm-data.mjs
CHANGED
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, makeEnvironmentProviders, inject, Injectable, runInInjectionContext, Inject, Optional, provideAppInitializer, Pipe, Input, ChangeDetectionStrategy, Component, signal, Directive } from '@angular/core';
|
|
2
|
+
import { InjectionToken, makeEnvironmentProviders, inject, Injectable, EnvironmentInjector, runInInjectionContext, effect, Inject, Optional, provideAppInitializer, Pipe, Input, ChangeDetectionStrategy, Component, signal, input, Directive } from '@angular/core';
|
|
3
3
|
import * as i1 from 'ngssm-store';
|
|
4
|
-
import { Store, NgSsmFeatureState, provideReducers, provideEffects, NgSsmComponent, ACTION_DISPATCHER } from 'ngssm-store';
|
|
4
|
+
import { Store, NgSsmFeatureState, Logger, provideReducers, provideEffects, NgSsmComponent, createSignal, ACTION_DISPATCHER } from 'ngssm-store';
|
|
5
5
|
import { __decorate } from 'tslib';
|
|
6
6
|
import update from 'immutability-helper';
|
|
7
7
|
import { DateTime } from 'luxon';
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import
|
|
13
|
-
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
14
|
-
import * as i3$1 from '@angular/material/button';
|
|
15
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
16
|
-
import * as i5 from '@angular/material/icon';
|
|
17
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
18
|
-
import { Subject, takeUntil } from 'rxjs';
|
|
8
|
+
import { CommonModule, NgClass } from '@angular/common';
|
|
9
|
+
import { MatTooltip } from '@angular/material/tooltip';
|
|
10
|
+
import { MatProgressSpinner } from '@angular/material/progress-spinner';
|
|
11
|
+
import { MatButton, MatIconButton } from '@angular/material/button';
|
|
12
|
+
import { MatIcon } from '@angular/material/icon';
|
|
19
13
|
import * as i2 from '@angular/forms';
|
|
20
14
|
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
21
15
|
import * as i4 from '@angular/material/select';
|
|
@@ -94,19 +88,21 @@ class NgssmSetDataSourceParameterAction extends NgssmDataSourceValueAction {
|
|
|
94
88
|
}
|
|
95
89
|
|
|
96
90
|
class NgssmLoadDataSourceAdditionalPropertyValueAction extends NgssmDataSourceValueAction {
|
|
97
|
-
constructor(key, property, forceReload) {
|
|
91
|
+
constructor(key, property, forceReload, postLoadingAction) {
|
|
98
92
|
super(NgssmDataActionType.loadDataSourceAdditionalPropertyValue, key);
|
|
99
93
|
this.property = property;
|
|
100
94
|
this.forceReload = forceReload;
|
|
95
|
+
this.postLoadingAction = postLoadingAction;
|
|
101
96
|
}
|
|
102
97
|
}
|
|
103
98
|
|
|
104
99
|
class NgssmSetDataSourceAdditionalPropertyValueAction extends NgssmDataSourceValueAction {
|
|
105
|
-
constructor(key, property, status, value) {
|
|
100
|
+
constructor(key, property, status, value, postLoadingAction) {
|
|
106
101
|
super(NgssmDataActionType.setDataSourceAdditionalPropertyValue, key);
|
|
107
102
|
this.property = property;
|
|
108
103
|
this.status = status;
|
|
109
104
|
this.value = value;
|
|
105
|
+
this.postLoadingAction = postLoadingAction;
|
|
110
106
|
}
|
|
111
107
|
}
|
|
112
108
|
|
|
@@ -138,24 +134,28 @@ class NgssmSetDataSourceParameterValidityAction extends NgssmDataSourceValueActi
|
|
|
138
134
|
}
|
|
139
135
|
}
|
|
140
136
|
|
|
137
|
+
// Injection token for registering data sources
|
|
141
138
|
const NGSSM_DATA_SOURCE = new InjectionToken('NGSSM_DATA_SOURCE');
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
|
|
139
|
+
// Function to provide a data source as an environment provider
|
|
140
|
+
const provideNgssmDataSource = (key, // Unique key for the data source
|
|
141
|
+
loadingFunc, // Function to load data
|
|
142
|
+
options // Optional configuration options
|
|
143
|
+
) => {
|
|
145
144
|
return makeEnvironmentProviders([
|
|
146
145
|
{
|
|
147
146
|
provide: NGSSM_DATA_SOURCE,
|
|
148
147
|
useFactory: () => {
|
|
149
148
|
const dataSource = {
|
|
150
149
|
key,
|
|
151
|
-
dataLifetimeInSeconds,
|
|
152
|
-
dataLoadingFunc: loadingFunc
|
|
150
|
+
dataLifetimeInSeconds: options?.dataLifetimeInSeconds,
|
|
151
|
+
dataLoadingFunc: loadingFunc,
|
|
152
|
+
additionalPropertyLoadingFunc: options?.additionalPropertyLoadingFunc
|
|
153
153
|
};
|
|
154
|
-
if (initialParameter) {
|
|
155
|
-
dataSource.initialParameter = initialParameter;
|
|
154
|
+
if (options?.initialParameter) {
|
|
155
|
+
dataSource.initialParameter = options?.initialParameter;
|
|
156
156
|
}
|
|
157
|
-
if (initialParameterInvalid) {
|
|
158
|
-
dataSource.initialParameterInvalid = initialParameterInvalid;
|
|
157
|
+
if (options?.initialParameterInvalid) {
|
|
158
|
+
dataSource.initialParameterInvalid = options?.initialParameterInvalid;
|
|
159
159
|
}
|
|
160
160
|
return dataSource;
|
|
161
161
|
},
|
|
@@ -163,6 +163,7 @@ const provideNgssmDataSource = (key, loadingFunc, dataLifetimeInSeconds, initial
|
|
|
163
163
|
}
|
|
164
164
|
]);
|
|
165
165
|
};
|
|
166
|
+
// Function to dispatch an action to load a data source value
|
|
166
167
|
const ngssmLoadDataSourceValue = (key, forceReload = false) => {
|
|
167
168
|
return () => {
|
|
168
169
|
inject(Store).dispatchAction(new NgssmLoadDataSourceValueAction(key, { forceReload }));
|
|
@@ -266,10 +267,10 @@ class DataSourcesRegistrationReducer {
|
|
|
266
267
|
}
|
|
267
268
|
return state;
|
|
268
269
|
}
|
|
269
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
270
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
270
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DataSourcesRegistrationReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
271
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DataSourcesRegistrationReducer }); }
|
|
271
272
|
}
|
|
272
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DataSourcesRegistrationReducer, decorators: [{
|
|
273
274
|
type: Injectable
|
|
274
275
|
}] });
|
|
275
276
|
|
|
@@ -486,17 +487,17 @@ class DataSourceValueReducer {
|
|
|
486
487
|
}
|
|
487
488
|
return state;
|
|
488
489
|
}
|
|
489
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
490
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
490
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DataSourceValueReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
491
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DataSourceValueReducer }); }
|
|
491
492
|
}
|
|
492
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
493
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DataSourceValueReducer, decorators: [{
|
|
493
494
|
type: Injectable
|
|
494
495
|
}] });
|
|
495
496
|
|
|
496
497
|
class DataLoadingEffect {
|
|
497
|
-
constructor(
|
|
498
|
-
this.
|
|
499
|
-
this.
|
|
498
|
+
constructor() {
|
|
499
|
+
this.injector = inject(EnvironmentInjector);
|
|
500
|
+
this.logger = inject(Logger);
|
|
500
501
|
this.processedActions = [
|
|
501
502
|
NgssmDataActionType.loadDataSourceValue,
|
|
502
503
|
NgssmDataActionType.loadDataSourceAdditionalPropertyValue
|
|
@@ -517,7 +518,7 @@ class DataLoadingEffect {
|
|
|
517
518
|
return;
|
|
518
519
|
}
|
|
519
520
|
runInInjectionContext(this.injector, () => {
|
|
520
|
-
dataSource.dataLoadingFunc(state, dataSourceValue.parameter).subscribe({
|
|
521
|
+
dataSource.dataLoadingFunc(state, key, dataSourceValue.parameter).subscribe({
|
|
521
522
|
next: (value) => actiondispatcher.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.loaded, value)),
|
|
522
523
|
error: (error) => {
|
|
523
524
|
this.logger.error(`Unable to load data for '${key}'`, error);
|
|
@@ -535,8 +536,8 @@ class DataLoadingEffect {
|
|
|
535
536
|
return;
|
|
536
537
|
}
|
|
537
538
|
runInInjectionContext(this.injector, () => {
|
|
538
|
-
dataSource.
|
|
539
|
-
next: (value) => actiondispatcher.dispatchAction(new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.loaded, value)),
|
|
539
|
+
dataSource.additionalPropertyLoadingFunc?.(state, key, property).subscribe({
|
|
540
|
+
next: (value) => actiondispatcher.dispatchAction(new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.loaded, value, ngssmLoadDataSourceAdditionalPropertyValueAction.postLoadingAction)),
|
|
540
541
|
error: (error) => {
|
|
541
542
|
this.logger.error(`Unable to load data for '${key}' and property '${property}'`, error);
|
|
542
543
|
actiondispatcher.dispatchAction(new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.error));
|
|
@@ -547,21 +548,51 @@ class DataLoadingEffect {
|
|
|
547
548
|
}
|
|
548
549
|
}
|
|
549
550
|
}
|
|
550
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
551
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
551
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DataLoadingEffect, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
552
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DataLoadingEffect }); }
|
|
552
553
|
}
|
|
553
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
554
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DataLoadingEffect, decorators: [{
|
|
554
555
|
type: Injectable
|
|
555
|
-
}]
|
|
556
|
+
}] });
|
|
557
|
+
|
|
558
|
+
const postLoadingActionExecutorInitializer = async () => {
|
|
559
|
+
const injector = inject(EnvironmentInjector);
|
|
560
|
+
const store = inject(Store);
|
|
561
|
+
const logger = inject(Logger);
|
|
562
|
+
effect(() => {
|
|
563
|
+
const action = store.processedAction();
|
|
564
|
+
if (action.type === NgssmDataActionType.loadDataSourceAdditionalPropertyValue) {
|
|
565
|
+
const ngssmLoadDataSourceAdditionalPropertyValueAction = action;
|
|
566
|
+
if (!ngssmLoadDataSourceAdditionalPropertyValueAction.postLoadingAction) {
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
569
|
+
const isLoaded = selectNgssmDataSourceAdditionalPropertyValue(store.state(), ngssmLoadDataSourceAdditionalPropertyValueAction.key, ngssmLoadDataSourceAdditionalPropertyValueAction.property)?.status === NgssmDataSourceValueStatus.loaded;
|
|
570
|
+
if (isLoaded) {
|
|
571
|
+
logger.information(`[postLoadingActionExecutor] Executing post loading action for ${action.type}`);
|
|
572
|
+
runInInjectionContext(injector, ngssmLoadDataSourceAdditionalPropertyValueAction.postLoadingAction);
|
|
573
|
+
}
|
|
574
|
+
return;
|
|
575
|
+
}
|
|
576
|
+
if (action.type === NgssmDataActionType.setDataSourceAdditionalPropertyValue) {
|
|
577
|
+
const ngssmSetDataSourceAdditionalPropertyValueAction = action;
|
|
578
|
+
if (!ngssmSetDataSourceAdditionalPropertyValueAction.postLoadingAction) {
|
|
579
|
+
return;
|
|
580
|
+
}
|
|
581
|
+
logger.information(`[postLoadingActionExecutor] Executing post loading action for ${action.type}`);
|
|
582
|
+
runInInjectionContext(injector, ngssmSetDataSourceAdditionalPropertyValueAction.postLoadingAction);
|
|
583
|
+
}
|
|
584
|
+
});
|
|
585
|
+
return true;
|
|
586
|
+
};
|
|
556
587
|
|
|
557
588
|
class NgssmDataSourceCollection {
|
|
558
589
|
constructor(dataSources) {
|
|
559
590
|
this.dataSources = dataSources;
|
|
560
591
|
}
|
|
561
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
562
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
592
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmDataSourceCollection, deps: [{ token: NGSSM_DATA_SOURCE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
593
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmDataSourceCollection, providedIn: 'root' }); }
|
|
563
594
|
}
|
|
564
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
595
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmDataSourceCollection, decorators: [{
|
|
565
596
|
type: Injectable,
|
|
566
597
|
args: [{
|
|
567
598
|
providedIn: 'root'
|
|
@@ -584,7 +615,8 @@ const provideNgssmData = () => {
|
|
|
584
615
|
return makeEnvironmentProviders([
|
|
585
616
|
provideAppInitializer(initDataSourceValues),
|
|
586
617
|
provideReducers(DataSourcesRegistrationReducer, DataSourceValueReducer),
|
|
587
|
-
provideEffects(DataLoadingEffect)
|
|
618
|
+
provideEffects(DataLoadingEffect),
|
|
619
|
+
provideAppInitializer(postLoadingActionExecutorInitializer)
|
|
588
620
|
]);
|
|
589
621
|
};
|
|
590
622
|
|
|
@@ -595,10 +627,10 @@ class IsNgssmDataSourceValueStatusPipe {
|
|
|
595
627
|
const itemStatus = selectNgssmDataSourceValue(value, key).status;
|
|
596
628
|
return expectedStatuses.includes(itemStatus);
|
|
597
629
|
}
|
|
598
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
599
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.
|
|
630
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
631
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, isStandalone: true, name: "isNgssmDataSourceValueStatus" }); }
|
|
600
632
|
}
|
|
601
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
633
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: IsNgssmDataSourceValueStatusPipe, decorators: [{
|
|
602
634
|
type: Pipe,
|
|
603
635
|
args: [{
|
|
604
636
|
name: 'isNgssmDataSourceValueStatus',
|
|
@@ -638,46 +670,36 @@ class NgssmAutoReloadComponent extends NgSsmComponent {
|
|
|
638
670
|
}
|
|
639
671
|
});
|
|
640
672
|
}
|
|
641
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
642
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
673
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmAutoReloadComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
674
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", 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", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
643
675
|
}
|
|
644
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
676
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmAutoReloadComponent, decorators: [{
|
|
645
677
|
type: Component,
|
|
646
678
|
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>" }]
|
|
647
679
|
}], ctorParameters: () => [{ type: i1.Store }], propDecorators: { autoReloadAction: [{
|
|
648
680
|
type: Input
|
|
649
681
|
}] } });
|
|
650
682
|
|
|
651
|
-
class NgssmDataReloadButtonComponent
|
|
652
|
-
constructor(
|
|
653
|
-
|
|
654
|
-
this.
|
|
655
|
-
this._dataSourceKeys = [];
|
|
683
|
+
class NgssmDataReloadButtonComponent {
|
|
684
|
+
constructor() {
|
|
685
|
+
this.store = inject(Store);
|
|
686
|
+
this.dataSourceValues = createSignal((state) => selectNgssmDataState(state).dataSourceValues);
|
|
656
687
|
this.loadInProgress = signal(false);
|
|
657
688
|
this.buttonDisabled = signal(true);
|
|
658
689
|
this.tooltipMessage = signal('');
|
|
659
|
-
this.icon = signal('fa-solid fa-rotate-right');
|
|
660
690
|
this.color = signal('primary');
|
|
661
|
-
this.withAutoReload = signal(false);
|
|
662
691
|
this.reloadAction = () => this.reload();
|
|
663
|
-
this.
|
|
664
|
-
this.keepAdditionalProperties = false;
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
this.
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
set dataSourceKeys(value) {
|
|
673
|
-
this.toUnsubscribe$.next();
|
|
674
|
-
this._dataSourceKeys = value ?? [];
|
|
675
|
-
this.watch((s) => selectNgssmDataState(s).dataSourceValues)
|
|
676
|
-
.pipe(takeUntil(this.toUnsubscribe$))
|
|
677
|
-
.subscribe((values) => {
|
|
678
|
-
this.loadInProgress.set(this._dataSourceKeys.findIndex((v) => values[v]?.status === NgssmDataSourceValueStatus.loading) !== -1);
|
|
692
|
+
this.label = input(undefined);
|
|
693
|
+
this.keepAdditionalProperties = input(false);
|
|
694
|
+
this.buttonIcon = input('fa-solid fa-rotate-right');
|
|
695
|
+
this.autoReloadEnabled = input(false);
|
|
696
|
+
this.dataSourceKeys = input([]);
|
|
697
|
+
effect(() => {
|
|
698
|
+
const values = this.dataSourceValues();
|
|
699
|
+
const keys = this.dataSourceKeys();
|
|
700
|
+
this.loadInProgress.set(keys.findIndex((v) => values[v]?.status === NgssmDataSourceValueStatus.loading) !== -1);
|
|
679
701
|
let timestamp;
|
|
680
|
-
|
|
702
|
+
keys.forEach((key) => {
|
|
681
703
|
const keyTimestamp = values[key]?.lastLoadingDate;
|
|
682
704
|
if (keyTimestamp) {
|
|
683
705
|
if (!timestamp || timestamp > keyTimestamp) {
|
|
@@ -694,43 +716,30 @@ class NgssmDataReloadButtonComponent extends NgSsmComponent {
|
|
|
694
716
|
this.buttonDisabled.set(true);
|
|
695
717
|
return;
|
|
696
718
|
}
|
|
697
|
-
const someHasAnInvalidParameter =
|
|
719
|
+
const someHasAnInvalidParameter = keys.findIndex((key) => values[key]?.parameterIsValid === false) !== -1;
|
|
698
720
|
if (someHasAnInvalidParameter) {
|
|
699
721
|
this.buttonDisabled.set(true);
|
|
700
722
|
return;
|
|
701
723
|
}
|
|
702
|
-
this.buttonDisabled.set(
|
|
703
|
-
const someHasAnOutdatedValue =
|
|
724
|
+
this.buttonDisabled.set(keys.findIndex((v) => !!values[v]) === -1);
|
|
725
|
+
const someHasAnOutdatedValue = keys.findIndex((key) => values[key]?.valueOutdated === true) !== -1;
|
|
704
726
|
this.color.set(someHasAnOutdatedValue ? 'accent' : 'primary');
|
|
705
727
|
});
|
|
706
728
|
}
|
|
707
|
-
set label(value) {
|
|
708
|
-
this.buttonLabel.set(value);
|
|
709
|
-
}
|
|
710
729
|
reload() {
|
|
711
730
|
const isDisabled = this.buttonDisabled();
|
|
712
731
|
if (isDisabled) {
|
|
713
732
|
return;
|
|
714
733
|
}
|
|
715
|
-
this.
|
|
734
|
+
this.dataSourceKeys().forEach((key) => this.store.dispatchAction(new NgssmLoadDataSourceValueAction(key, { forceReload: true, keepAdditionalProperties: this.keepAdditionalProperties() })));
|
|
716
735
|
}
|
|
717
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
718
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
736
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmDataReloadButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
737
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: NgssmDataReloadButtonComponent, isStandalone: true, selector: "ngssm-data-reload-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, keepAdditionalProperties: { classPropertyName: "keepAdditionalProperties", publicName: "keepAdditionalProperties", isSignal: true, isRequired: false, transformFunction: null }, buttonIcon: { classPropertyName: "buttonIcon", publicName: "buttonIcon", isSignal: true, isRequired: false, transformFunction: null }, autoReloadEnabled: { classPropertyName: "autoReloadEnabled", publicName: "autoReloadEnabled", isSignal: true, isRequired: false, transformFunction: null }, dataSourceKeys: { classPropertyName: "dataSourceKeys", publicName: "dataSourceKeys", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex-row-center\">\n @if (label(); as buttonLabel) {\n <button\n mat-stroked-button\n [color]=\"color()\"\n (click)=\"reload()\"\n [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\"\n id=\"reloadButton\">\n <div class=\"flex-row-center\">\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon [ngClass]=\"buttonIcon()\"></mat-icon>\n }\n\n <span style=\"width:0.5rem\"></span>\n\n {{ buttonLabel }}\n </div>\n </button>\n } @else {\n <button\n mat-icon-button\n [color]=\"color()\"\n (click)=\"reload()\"\n [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\"\n id=\"reloadButton\">\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon [ngClass]=\"buttonIcon()\"></mat-icon>\n }\n </button>\n }\n\n @if (autoReloadEnabled()) {\n <ngssm-auto-reload class=\"with-margin-left-8\" [autoReloadAction]=\"reloadAction\"></ngssm-auto-reload>\n }\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: 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 }); }
|
|
719
738
|
}
|
|
720
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
739
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmDataReloadButtonComponent, decorators: [{
|
|
721
740
|
type: Component,
|
|
722
|
-
args: [{ selector: 'ngssm-data-reload-button', imports: [
|
|
723
|
-
}], ctorParameters: () => [
|
|
724
|
-
type: Input
|
|
725
|
-
}], buttonIcon: [{
|
|
726
|
-
type: Input
|
|
727
|
-
}], autoReloadEnabled: [{
|
|
728
|
-
type: Input
|
|
729
|
-
}], dataSourceKeys: [{
|
|
730
|
-
type: Input
|
|
731
|
-
}], label: [{
|
|
732
|
-
type: Input
|
|
733
|
-
}] } });
|
|
741
|
+
args: [{ selector: 'ngssm-data-reload-button', imports: [NgClass, MatButton, MatIconButton, MatTooltip, MatIcon, MatProgressSpinner, NgssmAutoReloadComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex-row-center\">\n @if (label(); as buttonLabel) {\n <button\n mat-stroked-button\n [color]=\"color()\"\n (click)=\"reload()\"\n [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\"\n id=\"reloadButton\">\n <div class=\"flex-row-center\">\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon [ngClass]=\"buttonIcon()\"></mat-icon>\n }\n\n <span style=\"width:0.5rem\"></span>\n\n {{ buttonLabel }}\n </div>\n </button>\n } @else {\n <button\n mat-icon-button\n [color]=\"color()\"\n (click)=\"reload()\"\n [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\"\n id=\"reloadButton\">\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon [ngClass]=\"buttonIcon()\"></mat-icon>\n }\n </button>\n }\n\n @if (autoReloadEnabled()) {\n <ngssm-auto-reload class=\"with-margin-left-8\" [autoReloadAction]=\"reloadAction\"></ngssm-auto-reload>\n }\n</div>\n" }]
|
|
742
|
+
}], ctorParameters: () => [] });
|
|
734
743
|
|
|
735
744
|
class NgssmScopedDataSourceDirective {
|
|
736
745
|
constructor() {
|
|
@@ -749,10 +758,10 @@ class NgssmScopedDataSourceDirective {
|
|
|
749
758
|
this.actionDispatcher.dispatchAction(new NgssmUnregisterDataSourceAction(key));
|
|
750
759
|
}
|
|
751
760
|
}
|
|
752
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
753
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
761
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmScopedDataSourceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
762
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.6", type: NgssmScopedDataSourceDirective, isStandalone: true, selector: "[ngssmScopedDataSource]", inputs: { ngssmScopedDataSource: "ngssmScopedDataSource" }, ngImport: i0 }); }
|
|
754
763
|
}
|
|
755
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
764
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NgssmScopedDataSourceDirective, decorators: [{
|
|
756
765
|
type: Directive,
|
|
757
766
|
args: [{
|
|
758
767
|
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 = unknown> 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 = unknown> 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 = 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 = unknown> 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 = unknown> 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 = unknown> 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 type NgssmDataLoading<TData = unknown, TParameter = unknown> = (state: State, parameter?: TParameter, additionalProperty?: string) => Observable<TData>;\n\nexport interface NgssmDataSource<TData = unknown, TParameter = unknown> {\n key: string;\n dataLifetimeInSeconds?: number;\n dataLoadingFunc: NgssmDataLoading<TData, TParameter>;\n initialParameter?: TParameter;\n initialParameterInvalid?: boolean;\n}\n\nexport const NGSSM_DATA_SOURCE = new InjectionToken<NgssmDataSource>('NGSSM_DATA_SOURCE');\n\n// Why not creating an app intializer that dispatch a NgssmRegisterDataSourceAction action\n// instead of registering the data source ?\nexport const provideNgssmDataSource = <TData = unknown, TParameter = unknown>(\n key: string,\n loadingFunc: NgssmDataLoading<TData, TParameter>,\n dataLifetimeInSeconds?: number,\n initialParameter?: TParameter,\n initialParameterInvalid?: boolean\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\n if (initialParameter) {\n dataSource.initialParameter = initialParameter;\n }\n\n if (initialParameterInvalid) {\n dataSource.initialParameterInvalid = initialParameterInvalid;\n }\n\n return dataSource;\n },\n multi: true\n }\n ]);\n};\n\nexport const ngssmLoadDataSourceValue = (key: string, forceReload = 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 = unknown> {\n status: NgssmDataSourceValueStatus;\n value?: TProperty;\n lastLoadingDate?: DateTime;\n}\n\nexport interface NgssmDataSourceValue<TData = unknown, TParameter = unknown> {\n status: NgssmDataSourceValueStatus;\n value?: TData;\n parameter?: TParameter;\n lastLoadingDate?: DateTime;\n dataLifetimeInSeconds?: number;\n additionalProperties: Record<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: Record<string, NgssmDataSourceValue>;\n dataSources: Record<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 = unknown, TParameter = unknown>(\n state: State,\n key: string\n): NgssmDataSourceValue<TDataType, TParameter> => {\n return (selectNgssmDataState(state).dataSourceValues[key] ?? {\n status: NgssmDataSourceValueStatus.notRegistered\n }) as NgssmDataSourceValue<TDataType, TParameter>;\n};\n\nexport const selectNgssmDataSourceAdditionalPropertyValue = <TProperty = unknown>(\n state: State,\n key: string,\n property: string\n): NgssmDataSourceAdditionalPropertyValue<TProperty> => {\n return (selectNgssmDataState(state).dataSourceValues[key]?.additionalProperties[property] ?? {\n status: NgssmDataSourceValueStatus.notRegistered\n }) as NgssmDataSourceAdditionalPropertyValue<TProperty>;\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: Record<string, NgssmDataSourceValue> = {};\n const dataSources: Record<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 if (dataSource.initialParameterInvalid) {\n dataSourceValues[dataSource.key].parameterIsValid = false;\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';\nimport update from 'immutability-helper';\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 { selectNgssmDataSourceValue, 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 const newParameter = update<object, never>(\n selectNgssmDataSourceValue(state, ngssmUpdateDataSourceParameterAction.key)?.parameter as object,\n {\n $merge: ngssmUpdateDataSourceParameterAction.parameter\n }\n );\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmUpdateDataSourceParameterAction.key]: {\n parameter: { $set: newParameter },\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 return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceAdditionalPropertyValueAction.key]: {\n additionalProperties: {\n [ngssmSetDataSourceAdditionalPropertyValueAction.property]: {\n $set: {\n status: ngssmSetDataSourceAdditionalPropertyValueAction.status,\n value: ngssmSetDataSourceAdditionalPropertyValueAction.value,\n lastLoadingDate: DateTime.now()\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, State, Action, Logger, ActionDispatcher } 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(actiondispatcher: ActionDispatcher, 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) => actiondispatcher.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.loaded, value)),\n error: (error) => {\n this.logger.error(`Unable to load data for '${key}'`, error);\n actiondispatcher.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 actiondispatcher.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 actiondispatcher.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: number | undefined;\n\n public readonly reloadTypes = getNgssmDataSourceValueAutoReloadTypes();\n public readonly reloadTypeControl = new FormControl<NgssmDataSourceValueAutoReloadType>('Off');\n\n @Input() autoReloadAction: () => void = () => {\n // nothing by default\n };\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) as unknown as number;\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 public readonly buttonLabel = signal<string | undefined>(undefined);\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 @Input() public set label(value: string | undefined) {\n this.buttonLabel.set(value);\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 @if (buttonLabel()) {\n <button\n mat-stroked-button\n [color]=\"color()\"\n (click)=\"reload()\"\n [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\"\n id=\"reloadButton\">\n <div class=\"flex-row-center\">\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon [ngClass]=\"icon()\"></mat-icon>\n }\n\n <span style=\"width:0.5rem\"></span>\n\n {{ buttonLabel() }}\n </div>\n </button>\n } @else {\n <button\n mat-icon-button\n [color]=\"color()\"\n (click)=\"reload()\"\n [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\"\n id=\"reloadButton\">\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon [ngClass]=\"icon()\"></mat-icon>\n }\n </button>\n }\n\n @if (withAutoReload()) {\n <ngssm-auto-reload class=\"with-margin-left-8\" [autoReloadAction]=\"reloadAction\"></ngssm-auto-reload>\n }\n</div>\n","import { Directive, inject, Input, OnDestroy } from '@angular/core';\n\nimport { ACTION_DISPATCHER, ActionDispatcher } 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 readonly actionDispatcher: ActionDispatcher = inject(ACTION_DISPATCHER);\n private _dataSource: NgssmDataSource | undefined;\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.actionDispatcher.dispatchAction(new NgssmRegisterDataSourceAction(this._dataSource));\n }\n\n public ngOnDestroy(): void {\n const key = this._dataSource?.key;\n if (key) {\n this.actionDispatcher.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"],"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/post-loading-action-executor.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 = unknown> 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 = unknown> 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 = 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 = unknown> 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 public readonly postLoadingAction?: () => void\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 = unknown> extends NgssmDataSourceValueAction {\n constructor(\n key: string,\n public readonly property: string,\n public readonly status: NgssmDataSourceValueStatus,\n public readonly value?: TProperty,\n public readonly postLoadingAction?: () => void\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 = unknown> 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\n// Type definition for a function that loads data\nexport type NgssmDataLoading<TData = unknown, TParameter = unknown> = (\n state: State,\n dataSourceKey: string,\n parameter?: TParameter\n) => Observable<TData>;\n\n// Type definition for a function that loads additional properties\nexport type NgssmAdditionalPropertyLoading<TData = unknown> = (\n state: State,\n dataSourceKey: string,\n additionalProperty: string\n) => Observable<TData>;\n\n// Interface defining the structure of a data source\nexport interface NgssmDataSource<TData = unknown, TParameter = unknown, TAdditionProperty = unknown> {\n key: string; // Unique identifier for the data source\n dataLifetimeInSeconds?: number; // Optional lifetime for cached data\n dataLoadingFunc: NgssmDataLoading<TData, TParameter>; // Function to load data\n additionalPropertyLoadingFunc?: NgssmAdditionalPropertyLoading<TAdditionProperty>; // Optional function to load additional properties\n initialParameter?: TParameter; // Optional initial parameter for the data source\n initialParameterInvalid?: boolean; // Flag indicating if the initial parameter is invalid\n}\n\n// Injection token for registering data sources\nexport const NGSSM_DATA_SOURCE = new InjectionToken<NgssmDataSource>('NGSSM_DATA_SOURCE');\n\n// Optional parameters when registering a data source\nexport interface NgssmDataSourceProvideOptions<TParameter = unknown, TAdditionProperty = unknown> {\n dataLifetimeInSeconds?: number; // Optional data lifetime\n initialParameter?: TParameter; // Optional initial parameter\n initialParameterInvalid?: boolean; // Optional flag for invalid initial parameter\n additionalPropertyLoadingFunc?: NgssmAdditionalPropertyLoading<TAdditionProperty>; // Optional function to load additional properties\n}\n\n// Function to provide a data source as an environment provider\nexport const provideNgssmDataSource = <TData = unknown, TParameter = unknown, TAdditionProperty = unknown>(\n key: string, // Unique key for the data source\n loadingFunc: NgssmDataLoading<TData, TParameter>, // Function to load data\n options?: NgssmDataSourceProvideOptions<TParameter, TAdditionProperty> // Optional configuration options\n): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: NGSSM_DATA_SOURCE,\n useFactory: () => {\n const dataSource: NgssmDataSource<TData, TParameter> = {\n key,\n dataLifetimeInSeconds: options?.dataLifetimeInSeconds,\n dataLoadingFunc: loadingFunc,\n additionalPropertyLoadingFunc: options?.additionalPropertyLoadingFunc\n };\n\n if (options?.initialParameter) {\n dataSource.initialParameter = options?.initialParameter;\n }\n\n if (options?.initialParameterInvalid) {\n dataSource.initialParameterInvalid = options?.initialParameterInvalid;\n }\n\n return dataSource;\n },\n multi: true\n }\n ]);\n};\n\n// Function to dispatch an action to load a data source value\nexport const ngssmLoadDataSourceValue = (key: string, forceReload = 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 = unknown> {\n status: NgssmDataSourceValueStatus;\n value?: TProperty;\n lastLoadingDate?: DateTime;\n}\n\nexport interface NgssmDataSourceValue<TData = unknown, TParameter = unknown> {\n status: NgssmDataSourceValueStatus;\n value?: TData;\n parameter?: TParameter;\n lastLoadingDate?: DateTime;\n dataLifetimeInSeconds?: number;\n additionalProperties: Record<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: Record<string, NgssmDataSourceValue>;\n dataSources: Record<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 = unknown, TParameter = unknown>(\n state: State,\n key: string\n): NgssmDataSourceValue<TDataType, TParameter> => {\n return (selectNgssmDataState(state).dataSourceValues[key] ?? {\n status: NgssmDataSourceValueStatus.notRegistered\n }) as NgssmDataSourceValue<TDataType, TParameter>;\n};\n\nexport const selectNgssmDataSourceAdditionalPropertyValue = <TProperty = unknown>(\n state: State,\n key: string,\n property: string\n): NgssmDataSourceAdditionalPropertyValue<TProperty> => {\n return (selectNgssmDataState(state).dataSourceValues[key]?.additionalProperties[property] ?? {\n status: NgssmDataSourceValueStatus.notRegistered\n }) as NgssmDataSourceAdditionalPropertyValue<TProperty>;\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: Record<string, NgssmDataSourceValue> = {};\n const dataSources: Record<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 if (dataSource.initialParameterInvalid) {\n dataSourceValues[dataSource.key].parameterIsValid = false;\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';\nimport update from 'immutability-helper';\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 { selectNgssmDataSourceValue, 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 const newParameter = update<object, never>(\n selectNgssmDataSourceValue(state, ngssmUpdateDataSourceParameterAction.key)?.parameter as object,\n {\n $merge: ngssmUpdateDataSourceParameterAction.parameter\n }\n );\n return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmUpdateDataSourceParameterAction.key]: {\n parameter: { $set: newParameter },\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 return updateNgssmDataState(state, {\n dataSourceValues: {\n [ngssmSetDataSourceAdditionalPropertyValueAction.key]: {\n additionalProperties: {\n [ngssmSetDataSourceAdditionalPropertyValueAction.property]: {\n $set: {\n status: ngssmSetDataSourceAdditionalPropertyValueAction.status,\n value: ngssmSetDataSourceAdditionalPropertyValueAction.value,\n lastLoadingDate: DateTime.now()\n }\n }\n }\n }\n }\n });\n }\n }\n\n return state;\n }\n}\n","import { EnvironmentInjector, inject, Injectable, runInInjectionContext } from '@angular/core';\n\nimport { Effect, State, Action, Logger, ActionDispatcher } 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 private readonly injector = inject(EnvironmentInjector);\n private readonly logger = inject(Logger);\n\n public readonly processedActions: string[] = [\n NgssmDataActionType.loadDataSourceValue,\n NgssmDataActionType.loadDataSourceAdditionalPropertyValue\n ];\n\n public processAction(actiondispatcher: ActionDispatcher, 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, key, dataSourceValue.parameter).subscribe({\n next: (value) =>\n actiondispatcher.dispatchAction(new NgssmSetDataSourceValueAction(key, NgssmDataSourceValueStatus.loaded, value)),\n error: (error) => {\n this.logger.error(`Unable to load data for '${key}'`, error);\n actiondispatcher.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.additionalPropertyLoadingFunc?.(state, key, property).subscribe({\n next: (value) =>\n actiondispatcher.dispatchAction(\n new NgssmSetDataSourceAdditionalPropertyValueAction(\n key,\n property,\n NgssmDataSourceValueStatus.loaded,\n value,\n ngssmLoadDataSourceAdditionalPropertyValueAction.postLoadingAction\n )\n ),\n error: (error) => {\n this.logger.error(`Unable to load data for '${key}' and property '${property}'`, error);\n actiondispatcher.dispatchAction(\n new NgssmSetDataSourceAdditionalPropertyValueAction(key, property, NgssmDataSourceValueStatus.error)\n );\n }\n });\n });\n\n break;\n }\n }\n }\n}\n","import { effect, EnvironmentInjector, inject, runInInjectionContext } from '@angular/core';\n\nimport { Logger, Store } from 'ngssm-store';\n\nimport {\n NgssmDataActionType,\n NgssmLoadDataSourceAdditionalPropertyValueAction,\n NgssmSetDataSourceAdditionalPropertyValueAction\n} from './actions';\nimport { selectNgssmDataSourceAdditionalPropertyValue } from './state';\nimport { NgssmDataSourceValueStatus } from './model';\n\nexport const postLoadingActionExecutorInitializer = async () => {\n const injector = inject(EnvironmentInjector);\n const store = inject(Store);\n const logger = inject(Logger);\n\n effect(() => {\n const action = store.processedAction();\n if (action.type === NgssmDataActionType.loadDataSourceAdditionalPropertyValue) {\n const ngssmLoadDataSourceAdditionalPropertyValueAction = action as NgssmLoadDataSourceAdditionalPropertyValueAction;\n if (!ngssmLoadDataSourceAdditionalPropertyValueAction.postLoadingAction) {\n return;\n }\n\n const isLoaded =\n selectNgssmDataSourceAdditionalPropertyValue(\n store.state(),\n ngssmLoadDataSourceAdditionalPropertyValueAction.key,\n ngssmLoadDataSourceAdditionalPropertyValueAction.property\n )?.status === NgssmDataSourceValueStatus.loaded;\n\n if (isLoaded) {\n logger.information(`[postLoadingActionExecutor] Executing post loading action for ${action.type}`);\n runInInjectionContext(injector, ngssmLoadDataSourceAdditionalPropertyValueAction.postLoadingAction);\n }\n\n return;\n }\n\n if (action.type === NgssmDataActionType.setDataSourceAdditionalPropertyValue) {\n const ngssmSetDataSourceAdditionalPropertyValueAction = action as NgssmSetDataSourceAdditionalPropertyValueAction;\n if (!ngssmSetDataSourceAdditionalPropertyValueAction.postLoadingAction) {\n return;\n }\n\n logger.information(`[postLoadingActionExecutor] Executing post loading action for ${action.type}`);\n runInInjectionContext(injector, ngssmSetDataSourceAdditionalPropertyValueAction.postLoadingAction);\n }\n });\n\n return true;\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';\nimport { postLoadingActionExecutorInitializer } from './post-loading-action-executor';\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 provideAppInitializer(postLoadingActionExecutorInitializer)\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: number | undefined;\n\n public readonly reloadTypes = getNgssmDataSourceValueAutoReloadTypes();\n public readonly reloadTypeControl = new FormControl<NgssmDataSourceValueAutoReloadType>('Off');\n\n @Input() autoReloadAction: () => void = () => {\n // nothing by default\n };\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) as unknown as number;\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, signal, input, effect, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { DateTime } from 'luxon';\n\nimport { createSignal, Store } from 'ngssm-store';\n\nimport { selectNgssmDataState } from '../../state';\nimport { NgssmDataSourceValue, 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: [NgClass, MatButton, MatIconButton, MatTooltip, MatIcon, MatProgressSpinner, NgssmAutoReloadComponent],\n templateUrl: './ngssm-data-reload-button.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgssmDataReloadButtonComponent {\n private readonly store = inject(Store);\n\n private readonly dataSourceValues = createSignal<Record<string, NgssmDataSourceValue>>(\n (state) => selectNgssmDataState(state).dataSourceValues\n );\n\n public readonly loadInProgress = signal<boolean>(false);\n public readonly buttonDisabled = signal<boolean>(true);\n public readonly tooltipMessage = signal<string>('');\n public readonly color = signal<string>('primary');\n public readonly reloadAction = () => this.reload();\n\n public label = input<string | undefined>(undefined);\n public keepAdditionalProperties = input(false);\n public buttonIcon = input<string>('fa-solid fa-rotate-right');\n public autoReloadEnabled = input(false);\n public dataSourceKeys = input<string[]>([]);\n\n constructor() {\n effect(() => {\n const values = this.dataSourceValues();\n const keys = this.dataSourceKeys();\n this.loadInProgress.set(keys.findIndex((v) => values[v]?.status === NgssmDataSourceValueStatus.loading) !== -1);\n let timestamp: DateTime | undefined;\n keys.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 = keys.findIndex((key) => values[key]?.parameterIsValid === false) !== -1;\n if (someHasAnInvalidParameter) {\n this.buttonDisabled.set(true);\n return;\n }\n\n this.buttonDisabled.set(keys.findIndex((v) => !!values[v]) === -1);\n\n const someHasAnOutdatedValue = keys.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.store.dispatchAction(\n new NgssmLoadDataSourceValueAction(key, { forceReload: true, keepAdditionalProperties: this.keepAdditionalProperties() })\n )\n );\n }\n}\n","<div class=\"flex-row-center\">\n @if (label(); as buttonLabel) {\n <button\n mat-stroked-button\n [color]=\"color()\"\n (click)=\"reload()\"\n [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\"\n id=\"reloadButton\">\n <div class=\"flex-row-center\">\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon [ngClass]=\"buttonIcon()\"></mat-icon>\n }\n\n <span style=\"width:0.5rem\"></span>\n\n {{ buttonLabel }}\n </div>\n </button>\n } @else {\n <button\n mat-icon-button\n [color]=\"color()\"\n (click)=\"reload()\"\n [matTooltip]=\"tooltipMessage()\"\n [disabled]=\"buttonDisabled() === true\"\n id=\"reloadButton\">\n @if (loadInProgress()) {\n <mat-spinner [diameter]=\"24\" id=\"loadingSpinner\"></mat-spinner>\n } @else {\n <mat-icon [ngClass]=\"buttonIcon()\"></mat-icon>\n }\n </button>\n }\n\n @if (autoReloadEnabled()) {\n <ngssm-auto-reload class=\"with-margin-left-8\" [autoReloadAction]=\"reloadAction\"></ngssm-auto-reload>\n }\n</div>\n","import { Directive, inject, Input, OnDestroy } from '@angular/core';\n\nimport { ACTION_DISPATCHER, ActionDispatcher } 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 readonly actionDispatcher: ActionDispatcher = inject(ACTION_DISPATCHER);\n private _dataSource: NgssmDataSource | undefined;\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.actionDispatcher.dispatchAction(new NgssmRegisterDataSourceAction(this._dataSource));\n }\n\n public ngOnDestroy(): void {\n const key = this._dataSource?.key;\n if (key) {\n this.actionDispatcher.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":[],"mappings":"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"}
|
|
@@ -2,5 +2,6 @@ import { NgssmDataSourceValueAction } from './ngssm-data-source-value.action';
|
|
|
2
2
|
export declare class NgssmLoadDataSourceAdditionalPropertyValueAction extends NgssmDataSourceValueAction {
|
|
3
3
|
readonly property: string;
|
|
4
4
|
readonly forceReload?: boolean | undefined;
|
|
5
|
-
|
|
5
|
+
readonly postLoadingAction?: (() => void) | undefined;
|
|
6
|
+
constructor(key: string, property: string, forceReload?: boolean | undefined, postLoadingAction?: (() => void) | undefined);
|
|
6
7
|
}
|
|
@@ -4,5 +4,6 @@ export declare class NgssmSetDataSourceAdditionalPropertyValueAction<TProperty =
|
|
|
4
4
|
readonly property: string;
|
|
5
5
|
readonly status: NgssmDataSourceValueStatus;
|
|
6
6
|
readonly value?: TProperty | undefined;
|
|
7
|
-
|
|
7
|
+
readonly postLoadingAction?: (() => void) | undefined;
|
|
8
|
+
constructor(key: string, property: string, status: NgssmDataSourceValueStatus, value?: TProperty | undefined, postLoadingAction?: (() => void) | undefined);
|
|
8
9
|
}
|
package/lib/ngssm-data/components/ngssm-data-reload-button/ngssm-data-reload-button.component.d.ts
CHANGED
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
import { NgSsmComponent, Store } from 'ngssm-store';
|
|
2
1
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class NgssmDataReloadButtonComponent
|
|
4
|
-
private readonly
|
|
5
|
-
private
|
|
2
|
+
export declare class NgssmDataReloadButtonComponent {
|
|
3
|
+
private readonly store;
|
|
4
|
+
private readonly dataSourceValues;
|
|
6
5
|
readonly loadInProgress: import("@angular/core").WritableSignal<boolean>;
|
|
7
6
|
readonly buttonDisabled: import("@angular/core").WritableSignal<boolean>;
|
|
8
7
|
readonly tooltipMessage: import("@angular/core").WritableSignal<string>;
|
|
9
|
-
readonly icon: import("@angular/core").WritableSignal<string>;
|
|
10
8
|
readonly color: import("@angular/core").WritableSignal<string>;
|
|
11
|
-
readonly withAutoReload: import("@angular/core").WritableSignal<boolean>;
|
|
12
9
|
readonly reloadAction: () => void;
|
|
13
|
-
|
|
14
|
-
keepAdditionalProperties: boolean
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
set label(value: string | undefined);
|
|
10
|
+
label: import("@angular/core").InputSignal<string | undefined>;
|
|
11
|
+
keepAdditionalProperties: import("@angular/core").InputSignal<boolean>;
|
|
12
|
+
buttonIcon: import("@angular/core").InputSignal<string>;
|
|
13
|
+
autoReloadEnabled: import("@angular/core").InputSignal<boolean>;
|
|
14
|
+
dataSourceKeys: import("@angular/core").InputSignal<string[]>;
|
|
15
|
+
constructor();
|
|
20
16
|
reload(): void;
|
|
21
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgssmDataReloadButtonComponent, never>;
|
|
22
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgssmDataReloadButtonComponent, "ngssm-data-reload-button", never, { "
|
|
18
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgssmDataReloadButtonComponent, "ngssm-data-reload-button", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "keepAdditionalProperties": { "alias": "keepAdditionalProperties"; "required": false; "isSignal": true; }; "buttonIcon": { "alias": "buttonIcon"; "required": false; "isSignal": true; }; "autoReloadEnabled": { "alias": "autoReloadEnabled"; "required": false; "isSignal": true; }; "dataSourceKeys": { "alias": "dataSourceKeys"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
23
19
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Effect, State, Action, Logger, ActionDispatcher } from 'ngssm-store';
|
|
1
|
+
import { Effect, State, Action, ActionDispatcher } from 'ngssm-store';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class DataLoadingEffect implements Effect {
|
|
5
|
-
private
|
|
6
|
-
private
|
|
4
|
+
private readonly injector;
|
|
5
|
+
private readonly logger;
|
|
7
6
|
readonly processedActions: string[];
|
|
8
|
-
constructor(logger: Logger, injector: EnvironmentInjector);
|
|
9
7
|
processAction(actiondispatcher: ActionDispatcher, state: State, action: Action): void;
|
|
10
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<DataLoadingEffect, never>;
|
|
11
9
|
static ɵprov: i0.ɵɵInjectableDeclaration<DataLoadingEffect>;
|
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
import { EnvironmentProviders, InjectionToken } from '@angular/core';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { State } from 'ngssm-store';
|
|
4
|
-
export type NgssmDataLoading<TData = unknown, TParameter = unknown> = (state: State,
|
|
5
|
-
export
|
|
4
|
+
export type NgssmDataLoading<TData = unknown, TParameter = unknown> = (state: State, dataSourceKey: string, parameter?: TParameter) => Observable<TData>;
|
|
5
|
+
export type NgssmAdditionalPropertyLoading<TData = unknown> = (state: State, dataSourceKey: string, additionalProperty: string) => Observable<TData>;
|
|
6
|
+
export interface NgssmDataSource<TData = unknown, TParameter = unknown, TAdditionProperty = unknown> {
|
|
6
7
|
key: string;
|
|
7
8
|
dataLifetimeInSeconds?: number;
|
|
8
9
|
dataLoadingFunc: NgssmDataLoading<TData, TParameter>;
|
|
10
|
+
additionalPropertyLoadingFunc?: NgssmAdditionalPropertyLoading<TAdditionProperty>;
|
|
9
11
|
initialParameter?: TParameter;
|
|
10
12
|
initialParameterInvalid?: boolean;
|
|
11
13
|
}
|
|
12
|
-
export declare const NGSSM_DATA_SOURCE: InjectionToken<NgssmDataSource<unknown, unknown>>;
|
|
13
|
-
export
|
|
14
|
+
export declare const NGSSM_DATA_SOURCE: InjectionToken<NgssmDataSource<unknown, unknown, unknown>>;
|
|
15
|
+
export interface NgssmDataSourceProvideOptions<TParameter = unknown, TAdditionProperty = unknown> {
|
|
16
|
+
dataLifetimeInSeconds?: number;
|
|
17
|
+
initialParameter?: TParameter;
|
|
18
|
+
initialParameterInvalid?: boolean;
|
|
19
|
+
additionalPropertyLoadingFunc?: NgssmAdditionalPropertyLoading<TAdditionProperty>;
|
|
20
|
+
}
|
|
21
|
+
export declare const provideNgssmDataSource: <TData = unknown, TParameter = unknown, TAdditionProperty = unknown>(key: string, // Unique key for the data source
|
|
22
|
+
loadingFunc: NgssmDataLoading<TData, TParameter>, // Function to load data
|
|
23
|
+
options?: NgssmDataSourceProvideOptions<TParameter, TAdditionProperty>) => EnvironmentProviders;
|
|
14
24
|
export declare const ngssmLoadDataSourceValue: (key: string, forceReload?: boolean) => (() => boolean);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const postLoadingActionExecutorInitializer: () => Promise<boolean>;
|
package/package.json
CHANGED