@mxtommy/kip 3.9.0-beta.2 → 3.9.0-beta.21
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/.github/copilot-instructions.md +1 -1
- package/.github/instructions/angular.instructions.md +46 -0
- package/README.md +49 -12
- package/package.json +2 -4
- package/public/3rdpartylicenses.txt +77 -77
- package/public/app-help.component.css.map +7 -0
- package/public/app.component.css.map +7 -0
- package/public/assets/help-docs/configuration.md +4 -4
- package/public/assets/help-docs/dashboards.md +4 -2
- package/public/assets/svg/icons.svg +1 -1
- package/public/boolean-control-config.component.css.map +7 -0
- package/public/boolean-multicontrol-options.component.css.map +7 -0
- package/public/chunk-3EWIS24B.js +5237 -0
- package/public/chunk-3EWIS24B.js.map +1 -0
- package/public/chunk-3VR3EA35.js +1022 -0
- package/public/chunk-3VR3EA35.js.map +1 -0
- package/public/chunk-63ILPRXC.js +2091 -0
- package/public/chunk-63ILPRXC.js.map +1 -0
- package/public/chunk-65ZWQBS6.js +3102 -0
- package/public/chunk-65ZWQBS6.js.map +1 -0
- package/public/chunk-B3LKEWZP.js +4950 -0
- package/public/chunk-B3LKEWZP.js.map +1 -0
- package/public/chunk-BIBIW64D.js +16773 -0
- package/public/chunk-BIBIW64D.js.map +1 -0
- package/public/chunk-BM53SC5N.js +77 -0
- package/public/chunk-BM53SC5N.js.map +7 -0
- package/public/chunk-D7ILNFDM.js +3059 -0
- package/public/chunk-D7ILNFDM.js.map +1 -0
- package/public/chunk-E24UNLSJ.js +2228 -0
- package/public/chunk-E24UNLSJ.js.map +1 -0
- package/public/chunk-J42S2ELC.js +5927 -0
- package/public/chunk-J42S2ELC.js.map +1 -0
- package/public/chunk-KC22A6VH.js +17 -0
- package/public/chunk-KC22A6VH.js.map +7 -0
- package/public/chunk-MCEJWZB2.js +116 -0
- package/public/chunk-MCEJWZB2.js.map +1 -0
- package/public/chunk-NBF6SE6O.js +89 -0
- package/public/chunk-NBF6SE6O.js.map +7 -0
- package/public/chunk-QC7VGVAR.js +343 -0
- package/public/chunk-QC7VGVAR.js.map +7 -0
- package/public/chunk-SDOP6T56.js +42377 -0
- package/public/chunk-SDOP6T56.js.map +1 -0
- package/public/chunk-U2DCSTRY.js +159 -0
- package/public/chunk-U2DCSTRY.js.map +7 -0
- package/public/chunk-UHVNAEXC.js +4752 -0
- package/public/chunk-UHVNAEXC.js.map +1 -0
- package/public/chunk-UQYTD5AC.js +2723 -0
- package/public/chunk-UQYTD5AC.js.map +1 -0
- package/public/chunk-XSABJ5NZ.js +272 -0
- package/public/chunk-XSABJ5NZ.js.map +7 -0
- package/public/chunk-Y6N6O2IP.js +19852 -0
- package/public/chunk-Y6N6O2IP.js.map +1 -0
- package/public/chunk-YGJLBLOX.js +2708 -0
- package/public/chunk-YGJLBLOX.js.map +1 -0
- package/public/chunk-YT33DHC3.js +591 -0
- package/public/chunk-YT33DHC3.js.map +7 -0
- package/public/chunk-YZXYVP72.js +4934 -0
- package/public/chunk-YZXYVP72.js.map +1 -0
- package/public/chunk-ZEHRDSTB.js +13727 -0
- package/public/chunk-ZEHRDSTB.js.map +1 -0
- package/public/config.component.css.map +7 -0
- package/public/dashboard-scroller.component.css.map +7 -0
- package/public/dashboard.component.css.map +7 -0
- package/public/dashboards-editor.component.css.map +7 -0
- package/public/data-inspector-row.component.css.map +7 -0
- package/public/data-inspector.component.css.map +7 -0
- package/public/dataset-chart-options.component.css.map +7 -0
- package/public/datasets.component.css.map +7 -0
- package/public/dialog-confirmation.component.css.map +7 -0
- package/public/dialog-dashboard-page-editor.component.css.map +7 -0
- package/public/dialog-frame.component.css.map +7 -0
- package/public/dialog-name.component.css.map +7 -0
- package/public/display-chart-options.component.css.map +7 -0
- package/public/display.component.css.map +7 -0
- package/public/gauge-steel.component.css.map +7 -0
- package/public/home.component.css.map +7 -0
- package/public/index.html +19 -17
- package/public/main.js +36423 -0
- package/public/main.js.map +1 -0
- package/public/menu-actions.component.css.map +7 -0
- package/public/menu-notifications.component.css.map +7 -0
- package/public/minichart.component.css.map +7 -0
- package/public/modal-user-credential.component.css.map +7 -0
- package/public/modal-widget-config.component.css.map +7 -0
- package/public/notification-badge.component.css.map +7 -0
- package/public/page-header.component.css.map +7 -0
- package/public/path-control-config.component.css.map +7 -0
- package/public/paths-options.component.css.map +7 -0
- package/public/polyfills.js +4422 -0
- package/public/polyfills.js.map +1 -0
- package/public/select-autopilot.component.css.map +7 -0
- package/public/select-icon.component.css.map +7 -0
- package/public/settings.component.css.map +7 -0
- package/public/signalk.component.css.map +7 -0
- package/public/styles.css +1651 -0
- package/public/styles.css.map +7 -0
- package/public/svg-autopilot.component.css.map +7 -0
- package/public/svg-racesteer.component.css.map +7 -0
- package/public/svg-simple-linear-gauge.component.css.map +7 -0
- package/public/svg-windsteer.component.css.map +7 -0
- package/public/tile-large-icon.component.css.map +7 -0
- package/public/units.component.css.map +7 -0
- package/public/upgrade-config.component.css.map +7 -0
- package/public/widget-autopilot.component.css.map +7 -0
- package/public/widget-boolean-switch.component.css.map +7 -0
- package/public/widget-datetime.component.css.map +7 -0
- package/public/widget-freeboardsk.component.css.map +7 -0
- package/public/widget-gauge-ng-compass.component.css.map +7 -0
- package/public/widget-gauge-ng-linear.component.css.map +7 -0
- package/public/widget-gauge-ng-radial.component.css.map +7 -0
- package/public/widget-gauge-steel.component.css.map +7 -0
- package/public/widget-horizon.component.css.map +7 -0
- package/public/widget-host.component.css.map +7 -0
- package/public/widget-iframe.component.css.map +7 -0
- package/public/widget-label.component.css.map +7 -0
- package/public/widget-list-card.component.css.map +7 -0
- package/public/widget-numeric.component.css.map +7 -0
- package/public/widget-position.component.css.map +7 -0
- package/public/widget-race-timer.component.css.map +7 -0
- package/public/widget-racer-line.component.css.map +7 -0
- package/public/widget-racer-timer.component.css.map +7 -0
- package/public/widget-simple-linear.component.css.map +7 -0
- package/public/widget-slider.component.css.map +7 -0
- package/public/widget-text.component.css.map +7 -0
- package/public/widget-title.component.css.map +7 -0
- package/public/widget-tutorial.component.css.map +7 -0
- package/public/widgets-list.component.css.map +7 -0
- package/public/assets/hammer.min.js +0 -7
- package/public/chunk-2YVW3TBK.js +0 -2
- package/public/chunk-35L7BBBD.js +0 -15
- package/public/chunk-3LEMFOCV.js +0 -3
- package/public/chunk-3LJAKLLW.js +0 -1
- package/public/chunk-4JJLPUET.js +0 -60
- package/public/chunk-CBUY7NMR.js +0 -2
- package/public/chunk-CQXWGD3T.js +0 -2
- package/public/chunk-EUFDL4TJ.js +0 -6
- package/public/chunk-FBFTGVZ6.js +0 -1
- package/public/chunk-HCXH72CD.js +0 -5
- package/public/chunk-JY3WVS7C.js +0 -2
- package/public/chunk-KTDDP73O.js +0 -2
- package/public/chunk-NMEZOCU2.js +0 -1
- package/public/chunk-NS2FPVWM.js +0 -4
- package/public/chunk-OSYHJB4F.js +0 -11
- package/public/chunk-PKNLASTF.js +0 -4
- package/public/chunk-Q2Y75POI.js +0 -1
- package/public/chunk-RRTCHHRC.js +0 -3
- package/public/chunk-TA4GACKT.js +0 -4
- package/public/chunk-TXPLRBW5.js +0 -2
- package/public/chunk-VHFBF47T.js +0 -1
- package/public/chunk-VYUMZVH2.js +0 -2
- package/public/chunk-XRGAX4LS.js +0 -2
- package/public/chunk-YNJRIFUM.js +0 -1
- package/public/chunk-ZBCOJLI4.js +0 -6
- package/public/main-XM5EHMUE.js +0 -50
- package/public/polyfills-KH22MU6U.js +0 -2
- package/public/styles-RECKN66R.css +0 -1
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP-ILKS6RVC.woff2 → KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ-MJ3CERJ6.woff2 → KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP-UW3XWY7P.woff2 → KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP-U3JTBV4H.woff2 → KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP-36ULTGLY.woff2 → KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP-5NJLO2HW.woff2 → KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP-2EL65J2O.woff2 → KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP-XWLWMQVU.woff2 → KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ-PWGJWDFE.woff2 → KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP-ITB7NUJC.woff2 → KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP-32PLHKPQ.woff2 → KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP-QPSNQEDD.woff2 → KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP-JKBSJZY3.woff2 → KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP-OG5AHRIX.woff2 → KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz-PPTELUJT.woff2 → KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu4mxKKTU1Kg-SNGEW7FX.woff2 → KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz-DRL4U32S.woff2 → KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu72xKKTU1Kvnz-PRJ7OQMU.woff2 → KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz-HW6RMPJ3.woff2 → KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz-KZD6JQRT.woff2 → KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz-Z72STTMG.woff2 → KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-CN2J7AYH.woff2 → flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2} +0 -0
|
@@ -0,0 +1,591 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PageHeaderComponent
|
|
3
|
+
} from "./chunk-BM53SC5N.js";
|
|
4
|
+
import {
|
|
5
|
+
UnitsService
|
|
6
|
+
} from "./chunk-E24UNLSJ.js";
|
|
7
|
+
import {
|
|
8
|
+
MatCell,
|
|
9
|
+
MatCellDef,
|
|
10
|
+
MatColumnDef,
|
|
11
|
+
MatHeaderCell,
|
|
12
|
+
MatHeaderCellDef,
|
|
13
|
+
MatHeaderRow,
|
|
14
|
+
MatHeaderRowDef,
|
|
15
|
+
MatNoDataRow,
|
|
16
|
+
MatPaginator,
|
|
17
|
+
MatPaginatorModule,
|
|
18
|
+
MatRow,
|
|
19
|
+
MatRowDef,
|
|
20
|
+
MatSort,
|
|
21
|
+
MatSortHeader,
|
|
22
|
+
MatSortModule,
|
|
23
|
+
MatTable,
|
|
24
|
+
MatTableDataSource,
|
|
25
|
+
MatTableModule
|
|
26
|
+
} from "./chunk-B3LKEWZP.js";
|
|
27
|
+
import "./chunk-3VR3EA35.js";
|
|
28
|
+
import {
|
|
29
|
+
MatOptgroup,
|
|
30
|
+
MatOption,
|
|
31
|
+
MatSelect
|
|
32
|
+
} from "./chunk-65ZWQBS6.js";
|
|
33
|
+
import "./chunk-J42S2ELC.js";
|
|
34
|
+
import {
|
|
35
|
+
MatIcon,
|
|
36
|
+
MatIconModule
|
|
37
|
+
} from "./chunk-UQYTD5AC.js";
|
|
38
|
+
import {
|
|
39
|
+
DataService,
|
|
40
|
+
MAT_DIALOG_DATA,
|
|
41
|
+
MatDialog,
|
|
42
|
+
MatDialogActions,
|
|
43
|
+
MatDialogClose,
|
|
44
|
+
MatDialogContent,
|
|
45
|
+
MatDialogRef,
|
|
46
|
+
MatDialogTitle,
|
|
47
|
+
MatFormField,
|
|
48
|
+
MatFormFieldModule,
|
|
49
|
+
MatInput,
|
|
50
|
+
MatInputModule,
|
|
51
|
+
MatLabel
|
|
52
|
+
} from "./chunk-BIBIW64D.js";
|
|
53
|
+
import {
|
|
54
|
+
BreakpointObserver,
|
|
55
|
+
Breakpoints,
|
|
56
|
+
Component,
|
|
57
|
+
DestroyRef,
|
|
58
|
+
KeyValuePipe,
|
|
59
|
+
MatButton,
|
|
60
|
+
MatButtonModule,
|
|
61
|
+
Subject,
|
|
62
|
+
ViewEncapsulation,
|
|
63
|
+
__spreadProps,
|
|
64
|
+
__spreadValues,
|
|
65
|
+
debounceTime,
|
|
66
|
+
effect,
|
|
67
|
+
inject,
|
|
68
|
+
input,
|
|
69
|
+
map,
|
|
70
|
+
setClassMetadata,
|
|
71
|
+
takeUntilDestroyed,
|
|
72
|
+
throttleTime,
|
|
73
|
+
toSignal,
|
|
74
|
+
viewChild,
|
|
75
|
+
ɵsetClassDebugInfo,
|
|
76
|
+
ɵɵadvance,
|
|
77
|
+
ɵɵconditional,
|
|
78
|
+
ɵɵconditionalCreate,
|
|
79
|
+
ɵɵdefineComponent,
|
|
80
|
+
ɵɵelement,
|
|
81
|
+
ɵɵelementContainerEnd,
|
|
82
|
+
ɵɵelementContainerStart,
|
|
83
|
+
ɵɵelementEnd,
|
|
84
|
+
ɵɵelementStart,
|
|
85
|
+
ɵɵgetCurrentView,
|
|
86
|
+
ɵɵlistener,
|
|
87
|
+
ɵɵnextContext,
|
|
88
|
+
ɵɵpipe,
|
|
89
|
+
ɵɵpipeBind1,
|
|
90
|
+
ɵɵproperty,
|
|
91
|
+
ɵɵqueryAdvance,
|
|
92
|
+
ɵɵreference,
|
|
93
|
+
ɵɵrepeater,
|
|
94
|
+
ɵɵrepeaterCreate,
|
|
95
|
+
ɵɵrepeaterTrackByIdentity,
|
|
96
|
+
ɵɵresetView,
|
|
97
|
+
ɵɵrestoreView,
|
|
98
|
+
ɵɵtemplate,
|
|
99
|
+
ɵɵtext,
|
|
100
|
+
ɵɵtextInterpolate,
|
|
101
|
+
ɵɵtextInterpolate1,
|
|
102
|
+
ɵɵtwoWayBindingSet,
|
|
103
|
+
ɵɵtwoWayListener,
|
|
104
|
+
ɵɵtwoWayProperty,
|
|
105
|
+
ɵɵviewQuerySignal
|
|
106
|
+
} from "./chunk-SDOP6T56.js";
|
|
107
|
+
|
|
108
|
+
// src/app/core/components/data-inspector-row/data-inspector-row.component.ts
|
|
109
|
+
function DataInspectorRowComponent_Case_5_Template(rf, ctx) {
|
|
110
|
+
if (rf & 1) {
|
|
111
|
+
\u0275\u0275elementStart(0, "span", 3);
|
|
112
|
+
\u0275\u0275text(1, "Boolean");
|
|
113
|
+
\u0275\u0275elementEnd();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function DataInspectorRowComponent_Case_6_Template(rf, ctx) {
|
|
117
|
+
if (rf & 1) {
|
|
118
|
+
\u0275\u0275elementStart(0, "span", 3);
|
|
119
|
+
\u0275\u0275text(1, "String");
|
|
120
|
+
\u0275\u0275elementEnd();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function DataInspectorRowComponent_Case_7_Template(rf, ctx) {
|
|
124
|
+
if (rf & 1) {
|
|
125
|
+
\u0275\u0275elementStart(0, "span", 3);
|
|
126
|
+
\u0275\u0275text(1, "String");
|
|
127
|
+
\u0275\u0275elementEnd();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function DataInspectorRowComponent_Case_8_Template(rf, ctx) {
|
|
131
|
+
if (rf & 1) {
|
|
132
|
+
\u0275\u0275elementStart(0, "span", 3);
|
|
133
|
+
\u0275\u0275text(1, "Object");
|
|
134
|
+
\u0275\u0275elementEnd();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function DataInspectorRowComponent_Case_9_Template(rf, ctx) {
|
|
138
|
+
if (rf & 1) {
|
|
139
|
+
const _r1 = \u0275\u0275getCurrentView();
|
|
140
|
+
\u0275\u0275elementStart(0, "button", 5);
|
|
141
|
+
\u0275\u0275listener("click", function DataInspectorRowComponent_Case_9_Template_button_click_0_listener() {
|
|
142
|
+
\u0275\u0275restoreView(_r1);
|
|
143
|
+
const ctx_r1 = \u0275\u0275nextContext();
|
|
144
|
+
return \u0275\u0275resetView(ctx_r1.openDialog());
|
|
145
|
+
});
|
|
146
|
+
\u0275\u0275text(1);
|
|
147
|
+
\u0275\u0275elementEnd();
|
|
148
|
+
}
|
|
149
|
+
if (rf & 2) {
|
|
150
|
+
const ctx_r1 = \u0275\u0275nextContext();
|
|
151
|
+
\u0275\u0275advance();
|
|
152
|
+
\u0275\u0275textInterpolate(ctx_r1.selectedUnit);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function DialogUnitSelect_For_8_For_2_Template(rf, ctx) {
|
|
156
|
+
if (rf & 1) {
|
|
157
|
+
\u0275\u0275elementStart(0, "mat-option", 6);
|
|
158
|
+
\u0275\u0275text(1);
|
|
159
|
+
\u0275\u0275elementEnd();
|
|
160
|
+
}
|
|
161
|
+
if (rf & 2) {
|
|
162
|
+
const unit_r1 = ctx.$implicit;
|
|
163
|
+
\u0275\u0275property("value", unit_r1.measure);
|
|
164
|
+
\u0275\u0275advance();
|
|
165
|
+
\u0275\u0275textInterpolate1(" ", unit_r1.measure, " ");
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
function DialogUnitSelect_For_8_Template(rf, ctx) {
|
|
169
|
+
if (rf & 1) {
|
|
170
|
+
\u0275\u0275elementStart(0, "mat-optgroup", 3);
|
|
171
|
+
\u0275\u0275repeaterCreate(1, DialogUnitSelect_For_8_For_2_Template, 2, 2, "mat-option", 6, \u0275\u0275repeaterTrackByIdentity);
|
|
172
|
+
\u0275\u0275elementEnd();
|
|
173
|
+
}
|
|
174
|
+
if (rf & 2) {
|
|
175
|
+
const unitgroup_r2 = ctx.$implicit;
|
|
176
|
+
\u0275\u0275property("label", unitgroup_r2.group);
|
|
177
|
+
\u0275\u0275advance();
|
|
178
|
+
\u0275\u0275repeater(unitgroup_r2.units);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
var DataInspectorRowComponent = class _DataInspectorRowComponent {
|
|
182
|
+
_units = inject(UnitsService);
|
|
183
|
+
_dialog = inject(MatDialog);
|
|
184
|
+
path = input.required(...ngDevMode ? [{ debugName: "path" }] : []);
|
|
185
|
+
source = input(void 0, ...ngDevMode ? [{ debugName: "source" }] : []);
|
|
186
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
187
|
+
pathValue = input(void 0, ...ngDevMode ? [{ debugName: "pathValue" }] : []);
|
|
188
|
+
type = input.required(...ngDevMode ? [{ debugName: "type" }] : []);
|
|
189
|
+
units = null;
|
|
190
|
+
selectedUnit = "unitless";
|
|
191
|
+
ngOnInit() {
|
|
192
|
+
this.units = this._units.getConversionsForPath(this.path());
|
|
193
|
+
this.selectedUnit = this.units.base;
|
|
194
|
+
}
|
|
195
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
196
|
+
convertValue(value, type) {
|
|
197
|
+
if (type === "number")
|
|
198
|
+
return this._units.convertToUnit(this.selectedUnit, value);
|
|
199
|
+
else {
|
|
200
|
+
return value;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
openDialog() {
|
|
204
|
+
const dialogRef = this._dialog.open(DialogUnitSelect, {
|
|
205
|
+
data: { selectedUnit: this.selectedUnit, units: this.units }
|
|
206
|
+
});
|
|
207
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
208
|
+
if (result) {
|
|
209
|
+
this.selectedUnit = result;
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
static \u0275fac = function DataInspectorRowComponent_Factory(__ngFactoryType__) {
|
|
214
|
+
return new (__ngFactoryType__ || _DataInspectorRowComponent)();
|
|
215
|
+
};
|
|
216
|
+
static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _DataInspectorRowComponent, selectors: [["data-inspector-row"]], inputs: { path: [1, "path"], source: [1, "source"], pathValue: [1, "pathValue"], type: [1, "type"] }, decls: 10, vars: 3, consts: [[1, "cell-source", "cells"], [1, "cell-value", "cells"], [1, "cell-action", "cells"], [1, "path-type"], ["mat-stroked-button", "", 1, "change-units-btn"], ["mat-stroked-button", "", 1, "change-units-btn", 3, "click"]], template: function DataInspectorRowComponent_Template(rf, ctx) {
|
|
217
|
+
if (rf & 1) {
|
|
218
|
+
\u0275\u0275elementStart(0, "mat-cell", 0);
|
|
219
|
+
\u0275\u0275text(1);
|
|
220
|
+
\u0275\u0275elementEnd();
|
|
221
|
+
\u0275\u0275elementStart(2, "mat-cell", 1);
|
|
222
|
+
\u0275\u0275text(3);
|
|
223
|
+
\u0275\u0275elementEnd();
|
|
224
|
+
\u0275\u0275elementStart(4, "mat-cell", 2);
|
|
225
|
+
\u0275\u0275conditionalCreate(5, DataInspectorRowComponent_Case_5_Template, 2, 0, "span", 3)(6, DataInspectorRowComponent_Case_6_Template, 2, 0, "span", 3)(7, DataInspectorRowComponent_Case_7_Template, 2, 0, "span", 3)(8, DataInspectorRowComponent_Case_8_Template, 2, 0, "span", 3)(9, DataInspectorRowComponent_Case_9_Template, 2, 1, "button", 4);
|
|
226
|
+
\u0275\u0275elementEnd();
|
|
227
|
+
}
|
|
228
|
+
if (rf & 2) {
|
|
229
|
+
let tmp_2_0;
|
|
230
|
+
\u0275\u0275advance();
|
|
231
|
+
\u0275\u0275textInterpolate(ctx.source());
|
|
232
|
+
\u0275\u0275advance(2);
|
|
233
|
+
\u0275\u0275textInterpolate(ctx.convertValue(ctx.pathValue(), ctx.type()));
|
|
234
|
+
\u0275\u0275advance(2);
|
|
235
|
+
\u0275\u0275conditional((tmp_2_0 = ctx.type()) === "boolean" ? 5 : tmp_2_0 === "string" ? 6 : tmp_2_0 === "Date" ? 7 : tmp_2_0 === "object" ? 8 : 9);
|
|
236
|
+
}
|
|
237
|
+
}, dependencies: [MatCell, MatButtonModule, MatButton], styles: ["/* src/app/core/components/data-inspector-row/data-inspector-row.component.css */\n.change-units-btn {\n width: 100%;\n}\n.cell-source:first-of-type {\n padding-left: 0px;\n flex: 1 1 30%;\n}\n.cells {\n border: 0px solid white;\n word-break: break-word;\n overflow-wrap: break-word;\n}\n.cell-value {\n justify-content: flex-start;\n flex: 1 1 70%;\n padding: 0px;\n}\n.cell-action {\n justify-content: end;\n flex: 0 0 107px;\n}\n.cell-action:last-of-type {\n padding: 0px 0px 0px 0px;\n}\n.path-type {\n width: 100%;\n height: 40px;\n align-content: center;\n text-align: center;\n color: var(--mat-sys-primary);\n}\n/*# sourceMappingURL=data-inspector-row.component.css.map */\n"], encapsulation: 2 });
|
|
238
|
+
};
|
|
239
|
+
(() => {
|
|
240
|
+
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataInspectorRowComponent, [{
|
|
241
|
+
type: Component,
|
|
242
|
+
args: [{ selector: "data-inspector-row", encapsulation: ViewEncapsulation.None, imports: [MatCell, MatButtonModule], template: `<mat-cell class="cell-source cells">{{ source() }}</mat-cell>
|
|
243
|
+
<mat-cell class="cell-value cells">{{ convertValue(pathValue(), type()) }}</mat-cell>
|
|
244
|
+
<mat-cell class="cell-action cells">
|
|
245
|
+
@switch (type()) {
|
|
246
|
+
@case ('boolean') {
|
|
247
|
+
<span class="path-type">Boolean</span>
|
|
248
|
+
}
|
|
249
|
+
@case ('string') {
|
|
250
|
+
<span class="path-type">String</span>
|
|
251
|
+
}
|
|
252
|
+
@case ('Date') {
|
|
253
|
+
<span class="path-type">String</span>
|
|
254
|
+
}
|
|
255
|
+
@case ('object') {
|
|
256
|
+
<span class="path-type">Object</span>
|
|
257
|
+
}
|
|
258
|
+
@default {
|
|
259
|
+
<button mat-stroked-button class="change-units-btn" (click)="openDialog()">{{selectedUnit}}</button>
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
</mat-cell>
|
|
263
|
+
`, styles: ["/* src/app/core/components/data-inspector-row/data-inspector-row.component.css */\n.change-units-btn {\n width: 100%;\n}\n.cell-source:first-of-type {\n padding-left: 0px;\n flex: 1 1 30%;\n}\n.cells {\n border: 0px solid white;\n word-break: break-word;\n overflow-wrap: break-word;\n}\n.cell-value {\n justify-content: flex-start;\n flex: 1 1 70%;\n padding: 0px;\n}\n.cell-action {\n justify-content: end;\n flex: 0 0 107px;\n}\n.cell-action:last-of-type {\n padding: 0px 0px 0px 0px;\n}\n.path-type {\n width: 100%;\n height: 40px;\n align-content: center;\n text-align: center;\n color: var(--mat-sys-primary);\n}\n/*# sourceMappingURL=data-inspector-row.component.css.map */\n"] }]
|
|
264
|
+
}], null, null);
|
|
265
|
+
})();
|
|
266
|
+
(() => {
|
|
267
|
+
(typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(DataInspectorRowComponent, { className: "DataInspectorRowComponent", filePath: "src/app/core/components/data-inspector-row/data-inspector-row.component.ts", lineNumber: 20 });
|
|
268
|
+
})();
|
|
269
|
+
var DialogUnitSelect = class _DialogUnitSelect {
|
|
270
|
+
dialogRef = inject(MatDialogRef);
|
|
271
|
+
data = inject(MAT_DIALOG_DATA);
|
|
272
|
+
selectedUnit = null;
|
|
273
|
+
static \u0275fac = function DialogUnitSelect_Factory(__ngFactoryType__) {
|
|
274
|
+
return new (__ngFactoryType__ || _DialogUnitSelect)();
|
|
275
|
+
};
|
|
276
|
+
static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _DialogUnitSelect, selectors: [["dialog-unit-selector"]], decls: 14, vars: 2, consts: [["mat-dialog-title", ""], ["appearance", "outline", "floatLabel", "always", 2, "padding-top", "15px", "padding-bottom", "15px"], [3, "valueChange", "value"], [3, "label"], ["mat-flat-button", "", "mat-dialog-close", ""], ["mat-flat-button", "", 3, "mat-dialog-close"], [3, "value"]], template: function DialogUnitSelect_Template(rf, ctx) {
|
|
277
|
+
if (rf & 1) {
|
|
278
|
+
\u0275\u0275elementStart(0, "h2", 0);
|
|
279
|
+
\u0275\u0275text(1, "Select Unit type");
|
|
280
|
+
\u0275\u0275elementEnd();
|
|
281
|
+
\u0275\u0275elementStart(2, "mat-dialog-content")(3, "mat-form-field", 1)(4, "mat-label");
|
|
282
|
+
\u0275\u0275text(5, "Unit");
|
|
283
|
+
\u0275\u0275elementEnd();
|
|
284
|
+
\u0275\u0275elementStart(6, "mat-select", 2);
|
|
285
|
+
\u0275\u0275twoWayListener("valueChange", function DialogUnitSelect_Template_mat_select_valueChange_6_listener($event) {
|
|
286
|
+
\u0275\u0275twoWayBindingSet(ctx.data.selectedUnit, $event) || (ctx.data.selectedUnit = $event);
|
|
287
|
+
return $event;
|
|
288
|
+
});
|
|
289
|
+
\u0275\u0275repeaterCreate(7, DialogUnitSelect_For_8_Template, 3, 1, "mat-optgroup", 3, \u0275\u0275repeaterTrackByIdentity);
|
|
290
|
+
\u0275\u0275elementEnd()()();
|
|
291
|
+
\u0275\u0275elementStart(9, "mat-dialog-actions")(10, "button", 4);
|
|
292
|
+
\u0275\u0275text(11, "Cancel");
|
|
293
|
+
\u0275\u0275elementEnd();
|
|
294
|
+
\u0275\u0275elementStart(12, "button", 5);
|
|
295
|
+
\u0275\u0275text(13, "Ok");
|
|
296
|
+
\u0275\u0275elementEnd()();
|
|
297
|
+
}
|
|
298
|
+
if (rf & 2) {
|
|
299
|
+
\u0275\u0275advance(6);
|
|
300
|
+
\u0275\u0275twoWayProperty("value", ctx.data.selectedUnit);
|
|
301
|
+
\u0275\u0275advance();
|
|
302
|
+
\u0275\u0275repeater(ctx.data.units.conversions);
|
|
303
|
+
\u0275\u0275advance(5);
|
|
304
|
+
\u0275\u0275property("mat-dialog-close", ctx.data.selectedUnit);
|
|
305
|
+
}
|
|
306
|
+
}, dependencies: [
|
|
307
|
+
MatDialogTitle,
|
|
308
|
+
MatDialogContent,
|
|
309
|
+
MatFormField,
|
|
310
|
+
MatLabel,
|
|
311
|
+
MatSelect,
|
|
312
|
+
MatOptgroup,
|
|
313
|
+
MatOption,
|
|
314
|
+
MatDialogActions,
|
|
315
|
+
MatButtonModule,
|
|
316
|
+
MatButton,
|
|
317
|
+
MatDialogClose
|
|
318
|
+
], encapsulation: 2 });
|
|
319
|
+
};
|
|
320
|
+
(() => {
|
|
321
|
+
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DialogUnitSelect, [{
|
|
322
|
+
type: Component,
|
|
323
|
+
args: [{ selector: "dialog-unit-selector", imports: [
|
|
324
|
+
MatDialogTitle,
|
|
325
|
+
MatDialogContent,
|
|
326
|
+
MatFormField,
|
|
327
|
+
MatLabel,
|
|
328
|
+
MatSelect,
|
|
329
|
+
MatOptgroup,
|
|
330
|
+
MatOption,
|
|
331
|
+
MatDialogActions,
|
|
332
|
+
MatButtonModule,
|
|
333
|
+
MatDialogClose
|
|
334
|
+
], template: '<h2 mat-dialog-title>Select Unit type</h2>\n<mat-dialog-content>\n <mat-form-field style="padding-top: 15px; padding-bottom: 15px;" appearance="outline" floatLabel="always">\n <mat-label>Unit</mat-label>\n <mat-select [(value)]="data.selectedUnit">\n @for (unitgroup of data.units.conversions; track unitgroup) {\n <mat-optgroup [label]="unitgroup.group">\n @for (unit of unitgroup.units; track unit) {\n <mat-option [value]="unit.measure">\n {{unit.measure}}\n </mat-option>\n }\n </mat-optgroup>\n }\n </mat-select>\n </mat-form-field>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-flat-button mat-dialog-close>Cancel</button>\n <button mat-flat-button [mat-dialog-close]="data.selectedUnit">Ok</button>\n</mat-dialog-actions>\n' }]
|
|
335
|
+
}], null, null);
|
|
336
|
+
})();
|
|
337
|
+
(() => {
|
|
338
|
+
(typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(DialogUnitSelect, { className: "DialogUnitSelect", filePath: "src/app/core/components/data-inspector-row/data-inspector-row.component.ts", lineNumber: 77 });
|
|
339
|
+
})();
|
|
340
|
+
|
|
341
|
+
// src/app/core/components/data-inspector/data-inspector.component.ts
|
|
342
|
+
var _forTrack0 = ($index, $item) => $item.key;
|
|
343
|
+
function DataInspectorComponent_mat_header_cell_9_Template(rf, ctx) {
|
|
344
|
+
if (rf & 1) {
|
|
345
|
+
\u0275\u0275elementStart(0, "mat-header-cell", 19);
|
|
346
|
+
\u0275\u0275text(1, " Path ");
|
|
347
|
+
\u0275\u0275elementEnd();
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
function DataInspectorComponent_mat_cell_10_Template(rf, ctx) {
|
|
351
|
+
if (rf & 1) {
|
|
352
|
+
\u0275\u0275elementStart(0, "mat-cell", 20);
|
|
353
|
+
\u0275\u0275text(1);
|
|
354
|
+
\u0275\u0275elementEnd();
|
|
355
|
+
}
|
|
356
|
+
if (rf & 2) {
|
|
357
|
+
const element_r2 = ctx.$implicit;
|
|
358
|
+
\u0275\u0275advance();
|
|
359
|
+
\u0275\u0275textInterpolate1(" ", element_r2.path, " ");
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
function DataInspectorComponent_mat_header_cell_12_Template(rf, ctx) {
|
|
363
|
+
if (rf & 1) {
|
|
364
|
+
\u0275\u0275elementStart(0, "mat-header-cell", 21);
|
|
365
|
+
\u0275\u0275text(1, " PUT Support ");
|
|
366
|
+
\u0275\u0275elementEnd();
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
function DataInspectorComponent_mat_cell_13_Conditional_1_Template(rf, ctx) {
|
|
370
|
+
if (rf & 1) {
|
|
371
|
+
\u0275\u0275elementStart(0, "mat-icon", 23);
|
|
372
|
+
\u0275\u0275text(1, "check_circle");
|
|
373
|
+
\u0275\u0275elementEnd();
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
function DataInspectorComponent_mat_cell_13_Template(rf, ctx) {
|
|
377
|
+
if (rf & 1) {
|
|
378
|
+
\u0275\u0275elementStart(0, "mat-cell", 22);
|
|
379
|
+
\u0275\u0275conditionalCreate(1, DataInspectorComponent_mat_cell_13_Conditional_1_Template, 2, 0, "mat-icon", 23);
|
|
380
|
+
\u0275\u0275elementEnd();
|
|
381
|
+
}
|
|
382
|
+
if (rf & 2) {
|
|
383
|
+
const element_r3 = ctx.$implicit;
|
|
384
|
+
\u0275\u0275advance();
|
|
385
|
+
\u0275\u0275conditional((element_r3.meta == null ? null : element_r3.meta.supportsPut) ? 1 : -1);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
function DataInspectorComponent_mat_header_cell_15_Template(rf, ctx) {
|
|
389
|
+
if (rf & 1) {
|
|
390
|
+
\u0275\u0275elementStart(0, "mat-header-cell", 24);
|
|
391
|
+
\u0275\u0275text(1, " Source ");
|
|
392
|
+
\u0275\u0275elementEnd();
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
function DataInspectorComponent_mat_cell_16_For_3_Template(rf, ctx) {
|
|
396
|
+
if (rf & 1) {
|
|
397
|
+
\u0275\u0275element(0, "data-inspector-row", 27);
|
|
398
|
+
}
|
|
399
|
+
if (rf & 2) {
|
|
400
|
+
const item_r4 = ctx.$implicit;
|
|
401
|
+
const element_r5 = \u0275\u0275nextContext().$implicit;
|
|
402
|
+
const ctx_r5 = \u0275\u0275nextContext();
|
|
403
|
+
\u0275\u0275property("path", element_r5.path)("source", ctx_r5.getSourceKey(item_r4))("pathValue", ctx_r5.getSourceValue(item_r4))("type", element_r5.type);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
function DataInspectorComponent_mat_cell_16_Template(rf, ctx) {
|
|
407
|
+
if (rf & 1) {
|
|
408
|
+
\u0275\u0275elementStart(0, "mat-cell", 25)(1, "div", 26);
|
|
409
|
+
\u0275\u0275repeaterCreate(2, DataInspectorComponent_mat_cell_16_For_3_Template, 1, 4, "data-inspector-row", 27, _forTrack0);
|
|
410
|
+
\u0275\u0275pipe(4, "keyvalue");
|
|
411
|
+
\u0275\u0275elementEnd()();
|
|
412
|
+
}
|
|
413
|
+
if (rf & 2) {
|
|
414
|
+
const element_r5 = ctx.$implicit;
|
|
415
|
+
\u0275\u0275advance(2);
|
|
416
|
+
\u0275\u0275repeater(\u0275\u0275pipeBind1(4, 0, element_r5.sources));
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
function DataInspectorComponent_mat_header_row_17_Template(rf, ctx) {
|
|
420
|
+
if (rf & 1) {
|
|
421
|
+
\u0275\u0275element(0, "mat-header-row", 28);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
function DataInspectorComponent_mat_row_18_Template(rf, ctx) {
|
|
425
|
+
if (rf & 1) {
|
|
426
|
+
\u0275\u0275element(0, "mat-row", 29);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
function DataInspectorComponent_tr_19_Template(rf, ctx) {
|
|
430
|
+
if (rf & 1) {
|
|
431
|
+
\u0275\u0275elementStart(0, "tr", 30)(1, "td", 31);
|
|
432
|
+
\u0275\u0275text(2);
|
|
433
|
+
\u0275\u0275elementEnd()();
|
|
434
|
+
}
|
|
435
|
+
if (rf & 2) {
|
|
436
|
+
\u0275\u0275nextContext();
|
|
437
|
+
const input_r7 = \u0275\u0275reference(6);
|
|
438
|
+
\u0275\u0275advance(2);
|
|
439
|
+
\u0275\u0275textInterpolate1('No data matching the filter "', input_r7.value, '"');
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
var DataInspectorComponent = class _DataInspectorComponent {
|
|
443
|
+
dataService = inject(DataService);
|
|
444
|
+
destroyRef = inject(DestroyRef);
|
|
445
|
+
_responsive = inject(BreakpointObserver);
|
|
446
|
+
isPhonePortrait;
|
|
447
|
+
filterSubject = new Subject();
|
|
448
|
+
paginator = viewChild.required(MatPaginator);
|
|
449
|
+
sort = viewChild.required(MatSort);
|
|
450
|
+
pageTitle = "Data Inspector";
|
|
451
|
+
pageSize = 25;
|
|
452
|
+
hidePageSize = false;
|
|
453
|
+
showFirstLastButtons = true;
|
|
454
|
+
showPageSizeOptions = [5, 10, 25, 100];
|
|
455
|
+
tableData = new MatTableDataSource([]);
|
|
456
|
+
displayedColumns = ["path", "supportsPut", "defaultSource"];
|
|
457
|
+
constructor() {
|
|
458
|
+
this.filterSubject.pipe(debounceTime(500)).pipe(takeUntilDestroyed(this.destroyRef)).subscribe((filterValue) => {
|
|
459
|
+
this.tableData.filter = filterValue.trim().toLowerCase();
|
|
460
|
+
if (this.tableData.paginator) {
|
|
461
|
+
this.tableData.paginator.firstPage();
|
|
462
|
+
}
|
|
463
|
+
});
|
|
464
|
+
this.isPhonePortrait = toSignal(this._responsive.observe(Breakpoints.HandsetPortrait));
|
|
465
|
+
effect(() => {
|
|
466
|
+
if (this.isPhonePortrait().matches) {
|
|
467
|
+
this.hidePageSize = true;
|
|
468
|
+
this.showFirstLastButtons = false;
|
|
469
|
+
this.showPageSizeOptions = [];
|
|
470
|
+
} else {
|
|
471
|
+
this.hidePageSize = false;
|
|
472
|
+
this.showFirstLastButtons = true;
|
|
473
|
+
this.showPageSizeOptions = [5, 10, 25, 100];
|
|
474
|
+
}
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
ngAfterViewInit() {
|
|
478
|
+
this.dataService.startSkDataFullTree().pipe(
|
|
479
|
+
map((paths) => paths.filter((path) => Object.keys(path.sources || {}).length > 0).map((path) => __spreadProps(__spreadValues({}, path), {
|
|
480
|
+
sources: path.type && path.type.includes("object") && typeof path.sources === "object" ? Object.fromEntries(Object.entries(path.sources).map(([key, value]) => [
|
|
481
|
+
key,
|
|
482
|
+
__spreadProps(__spreadValues({}, value), {
|
|
483
|
+
sourceValue: typeof value.sourceValue === "object" ? JSON.stringify(value.sourceValue) : value.sourceValue
|
|
484
|
+
})
|
|
485
|
+
])) : path.sources
|
|
486
|
+
}))),
|
|
487
|
+
throttleTime(500),
|
|
488
|
+
// Emit at most once every 500ms
|
|
489
|
+
takeUntilDestroyed(this.destroyRef)
|
|
490
|
+
).subscribe((filteredPaths) => {
|
|
491
|
+
this.tableData.data = filteredPaths;
|
|
492
|
+
});
|
|
493
|
+
this.tableData.paginator = this.paginator();
|
|
494
|
+
this.tableData.sort = this.sort();
|
|
495
|
+
this.tableData.sortingDataAccessor = (item, property) => {
|
|
496
|
+
switch (property) {
|
|
497
|
+
case "supportsPut":
|
|
498
|
+
return item.meta?.supportsPut ? 1 : 0;
|
|
499
|
+
// Sort by boolean value (1 for true, 0 for false)
|
|
500
|
+
default:
|
|
501
|
+
return item[property];
|
|
502
|
+
}
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
applyFilter(event) {
|
|
506
|
+
const filterValue = event.target.value;
|
|
507
|
+
this.filterSubject.next(filterValue);
|
|
508
|
+
}
|
|
509
|
+
trackByPath(index, item) {
|
|
510
|
+
return `${item.path}`;
|
|
511
|
+
}
|
|
512
|
+
trackBySource(index, item) {
|
|
513
|
+
return `${item.key}`;
|
|
514
|
+
}
|
|
515
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
516
|
+
getSourceKey(source) {
|
|
517
|
+
return String(source.key);
|
|
518
|
+
}
|
|
519
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
520
|
+
getSourceValue(item) {
|
|
521
|
+
return item.value.sourceValue;
|
|
522
|
+
}
|
|
523
|
+
ngOnDestroy() {
|
|
524
|
+
this.filterSubject.complete();
|
|
525
|
+
this.dataService.stopSkDataFullTree();
|
|
526
|
+
}
|
|
527
|
+
static \u0275fac = function DataInspectorComponent_Factory(__ngFactoryType__) {
|
|
528
|
+
return new (__ngFactoryType__ || _DataInspectorComponent)();
|
|
529
|
+
};
|
|
530
|
+
static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _DataInspectorComponent, selectors: [["data-inspector"]], viewQuery: function DataInspectorComponent_Query(rf, ctx) {
|
|
531
|
+
if (rf & 1) {
|
|
532
|
+
\u0275\u0275viewQuerySignal(ctx.paginator, MatPaginator, 5);
|
|
533
|
+
\u0275\u0275viewQuerySignal(ctx.sort, MatSort, 5);
|
|
534
|
+
}
|
|
535
|
+
if (rf & 2) {
|
|
536
|
+
\u0275\u0275queryAdvance(2);
|
|
537
|
+
}
|
|
538
|
+
}, decls: 21, vars: 10, consts: [["input", ""], [3, "pageTitle"], [1, "data-inspector-container"], [1, "filter-field"], ["matInput", "", "placeholder", "Type any part of the path, source or value...", "value", "", 3, "keyup"], ["matSort", "", "matSortActive", "path", "matSortDirection", "asc", 1, "table-content-area", "mat-elevation-z8", 3, "dataSource", "trackBy"], ["matColumnDef", "path"], ["class", "pathHeader", "mat-sort-header", "", 4, "matHeaderCellDef"], ["class", "pathCell row-cell", 4, "matCellDef"], ["matColumnDef", "supportsPut"], ["class", "putHeader", "mat-sort-header", "", 4, "matHeaderCellDef"], ["class", "putCell row-cell", 4, "matCellDef"], ["matColumnDef", "defaultSource"], ["class", "dataHeader", "mat-sort-header", "", 4, "matHeaderCellDef"], ["class", "dataCell row-cell", 4, "matCellDef"], ["class", "headerRow", 4, "matHeaderRowDef", "matHeaderRowDefSticky"], ["class", "table-row", 4, "matRowDef", "matRowDefColumns"], ["class", "mat-row", 4, "matNoDataRow"], [1, "paginator", 3, "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons"], ["mat-sort-header", "", 1, "pathHeader"], [1, "pathCell", "row-cell"], ["mat-sort-header", "", 1, "putHeader"], [1, "putCell", "row-cell"], ["matTooltip", "Supports PUT operation", 1, "put-icon"], ["mat-sort-header", "", 1, "dataHeader"], [1, "dataCell", "row-cell"], [1, "flex-container"], [1, "source-sub-row", 3, "path", "source", "pathValue", "type"], [1, "headerRow"], [1, "table-row"], [1, "mat-row"], ["colspan", "4", 1, "mat-cell"]], template: function DataInspectorComponent_Template(rf, ctx) {
|
|
539
|
+
if (rf & 1) {
|
|
540
|
+
const _r1 = \u0275\u0275getCurrentView();
|
|
541
|
+
\u0275\u0275element(0, "page-header", 1);
|
|
542
|
+
\u0275\u0275elementStart(1, "div", 2)(2, "mat-form-field", 3)(3, "mat-label");
|
|
543
|
+
\u0275\u0275text(4, "Filter");
|
|
544
|
+
\u0275\u0275elementEnd();
|
|
545
|
+
\u0275\u0275elementStart(5, "input", 4, 0);
|
|
546
|
+
\u0275\u0275listener("keyup", function DataInspectorComponent_Template_input_keyup_5_listener($event) {
|
|
547
|
+
\u0275\u0275restoreView(_r1);
|
|
548
|
+
return \u0275\u0275resetView(ctx.applyFilter($event));
|
|
549
|
+
});
|
|
550
|
+
\u0275\u0275elementEnd()();
|
|
551
|
+
\u0275\u0275elementStart(7, "mat-table", 5);
|
|
552
|
+
\u0275\u0275elementContainerStart(8, 6);
|
|
553
|
+
\u0275\u0275template(9, DataInspectorComponent_mat_header_cell_9_Template, 2, 0, "mat-header-cell", 7)(10, DataInspectorComponent_mat_cell_10_Template, 2, 1, "mat-cell", 8);
|
|
554
|
+
\u0275\u0275elementContainerEnd();
|
|
555
|
+
\u0275\u0275elementContainerStart(11, 9);
|
|
556
|
+
\u0275\u0275template(12, DataInspectorComponent_mat_header_cell_12_Template, 2, 0, "mat-header-cell", 10)(13, DataInspectorComponent_mat_cell_13_Template, 2, 1, "mat-cell", 11);
|
|
557
|
+
\u0275\u0275elementContainerEnd();
|
|
558
|
+
\u0275\u0275elementContainerStart(14, 12);
|
|
559
|
+
\u0275\u0275template(15, DataInspectorComponent_mat_header_cell_15_Template, 2, 0, "mat-header-cell", 13)(16, DataInspectorComponent_mat_cell_16_Template, 5, 2, "mat-cell", 14);
|
|
560
|
+
\u0275\u0275elementContainerEnd();
|
|
561
|
+
\u0275\u0275template(17, DataInspectorComponent_mat_header_row_17_Template, 1, 0, "mat-header-row", 15)(18, DataInspectorComponent_mat_row_18_Template, 1, 0, "mat-row", 16)(19, DataInspectorComponent_tr_19_Template, 3, 1, "tr", 17);
|
|
562
|
+
\u0275\u0275elementEnd();
|
|
563
|
+
\u0275\u0275element(20, "mat-paginator", 18);
|
|
564
|
+
\u0275\u0275elementEnd();
|
|
565
|
+
}
|
|
566
|
+
if (rf & 2) {
|
|
567
|
+
\u0275\u0275property("pageTitle", ctx.pageTitle);
|
|
568
|
+
\u0275\u0275advance(7);
|
|
569
|
+
\u0275\u0275property("dataSource", ctx.tableData)("trackBy", ctx.trackByPath);
|
|
570
|
+
\u0275\u0275advance(10);
|
|
571
|
+
\u0275\u0275property("matHeaderRowDef", ctx.displayedColumns)("matHeaderRowDefSticky", true);
|
|
572
|
+
\u0275\u0275advance();
|
|
573
|
+
\u0275\u0275property("matRowDefColumns", ctx.displayedColumns);
|
|
574
|
+
\u0275\u0275advance(2);
|
|
575
|
+
\u0275\u0275property("pageSize", ctx.pageSize)("pageSizeOptions", ctx.showPageSizeOptions)("hidePageSize", ctx.hidePageSize)("showFirstLastButtons", ctx.showFirstLastButtons);
|
|
576
|
+
}
|
|
577
|
+
}, dependencies: [MatFormFieldModule, MatFormField, MatLabel, MatTableModule, MatTable, MatHeaderCellDef, MatHeaderRowDef, MatColumnDef, MatCellDef, MatRowDef, MatHeaderCell, MatCell, MatHeaderRow, MatRow, MatNoDataRow, MatInputModule, MatInput, MatPaginatorModule, MatPaginator, MatSortModule, MatSort, MatSortHeader, DataInspectorRowComponent, PageHeaderComponent, MatIconModule, MatIcon, KeyValuePipe], styles: ["\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n width: 100%;\n}\n.data-inspector-container[_ngcontent-%COMP%] {\n margin-left: 24px;\n margin-right: 24px;\n height: calc(100% - 63px);\n}\n.table-content-area[_ngcontent-%COMP%] {\n height: calc(100% - 56px - 86px);\n overflow-y: auto;\n width: 100%;\n scroll-behavior: smooth;\n}\n.mat-column-path[_ngcontent-%COMP%] {\n flex: 0 0 50%;\n width: 50%;\n}\n.mat-mdc-table[_ngcontent-%COMP%] {\n overflow: auto;\n}\n.paginator[_ngcontent-%COMP%] {\n width: 100%;\n height: 56px;\n background-color: var(--mat-sys-background);\n}\n.filter-field[_ngcontent-%COMP%] {\n padding: 15px 0px 15px 0px;\n width: 100%;\n height: 86px;\n}\n.pathHeader[_ngcontent-%COMP%] {\n flex: 1 1 45%;\n}\n.putHeader[_ngcontent-%COMP%] {\n flex: 1 1 10%;\n}\n.dataHeader[_ngcontent-%COMP%] {\n flex: 1 1 45%;\n}\n.table-row[_ngcontent-%COMP%] {\n border-bottom-color: var(--mat-table-row-item-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, 0.12)));\n border-bottom-width: var(--mat-table-row-item-outline-width, 1px);\n border-bottom-style: solid;\n}\n.row-cell[_ngcontent-%COMP%] {\n border-bottom-color: white;\n border-bottom-width: 0px;\n border-bottom-style: solid;\n}\n.pathCell[_ngcontent-%COMP%] {\n flex: 1 1 45%;\n word-break: break-word;\n overflow-wrap: break-word;\n}\n.putCell[_ngcontent-%COMP%] {\n flex: 1 1 10%;\n}\n.dataCell[_ngcontent-%COMP%] {\n flex: 1 1 45%;\n flex-flow: column;\n flex-wrap: nowrap;\n gap: 2px;\n}\n.flex-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n gap: 5px;\n margin: 5px 0px 5px 0px;\n height: 100%;\n width: 100%;\n}\n.source-sub-row[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n gap: 5px;\n width: 100%;\n}\n.put-icon[_ngcontent-%COMP%] {\n color: var(--kip-starboard-color);\n}\n@media screen and (max-width: 750px) {\n .pathHeader[_ngcontent-%COMP%] {\n flex: 1 1 50%;\n }\n .dataHeader[_ngcontent-%COMP%] {\n flex: 1 1 50%;\n }\n .dataCell[_ngcontent-%COMP%] {\n flex: 1 1 100%;\n }\n .dataCell[_ngcontent-%COMP%] {\n flex: 1 1 100%;\n margin-left: 24px;\n }\n .mat-mdc-table[_ngcontent-%COMP%] .mat-mdc-row[_ngcontent-%COMP%] {\n flex-direction: row;\n flex-wrap: wrap;\n }\n .mat-mdc-table[_ngcontent-%COMP%] .mat-mdc-cell[_ngcontent-%COMP%]:before {\n content: attr(data-label);\n float: left;\n padding-right: 5px;\n }\n mat-row[_ngcontent-%COMP%]::after {\n min-height: auto;\n padding-bottom: 10px;\n }\n .dataRow[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n }\n .actionCell[_ngcontent-%COMP%] {\n margin-left: 24px;\n }\n}\n/*# sourceMappingURL=data-inspector.component.css.map */"] });
|
|
578
|
+
};
|
|
579
|
+
(() => {
|
|
580
|
+
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataInspectorComponent, [{
|
|
581
|
+
type: Component,
|
|
582
|
+
args: [{ selector: "data-inspector", imports: [MatFormFieldModule, MatTableModule, MatInputModule, MatPaginatorModule, MatSortModule, DataInspectorRowComponent, KeyValuePipe, PageHeaderComponent, MatIconModule], template: '<page-header [pageTitle]="pageTitle" />\n<div class="data-inspector-container">\n <mat-form-field class="filter-field">\n <mat-label>Filter</mat-label>\n <input matInput (keyup)="applyFilter($event)" placeholder="Type any part of the path, source or value..." value="" #input>\n </mat-form-field>\n\n <mat-table class="table-content-area mat-elevation-z8" [dataSource]="tableData" [trackBy]="trackByPath" matSort matSortActive="path" matSortDirection="asc">\n <!-- Path Column -->\n <ng-container matColumnDef="path">\n <mat-header-cell class="pathHeader" *matHeaderCellDef mat-sort-header> Path </mat-header-cell>\n <mat-cell class="pathCell row-cell" *matCellDef="let element"> {{element.path}} </mat-cell>\n </ng-container>\n <!-- Put Column -->\n <ng-container matColumnDef="supportsPut">\n <mat-header-cell class="putHeader" *matHeaderCellDef mat-sort-header> PUT Support </mat-header-cell>\n <mat-cell class="putCell row-cell" *matCellDef="let element">\n @if (element.meta?.supportsPut) {\n <mat-icon class="put-icon" matTooltip="Supports PUT operation">check_circle</mat-icon>\n }\n </mat-cell>\n </ng-container>\n <!-- Source/value Column -->\n <ng-container matColumnDef="defaultSource">\n <mat-header-cell class="dataHeader" *matHeaderCellDef mat-sort-header> Source </mat-header-cell>\n <mat-cell class="dataCell row-cell" *matCellDef="let element">\n <div class="flex-container">\n @for (item of element.sources | keyvalue; track item.key) {\n <data-inspector-row class="source-sub-row" [path]="element.path" [source]="getSourceKey(item )" [pathValue]="getSourceValue(item)" [type]="element.type"></data-inspector-row>\n }\n </div>\n </mat-cell>\n </ng-container>\n\n <!-- Table headers -->\n <mat-header-row class="headerRow" *matHeaderRowDef="displayedColumns; sticky: true"></mat-header-row>\n <mat-row class="table-row" *matRowDef="let row; columns: displayedColumns;"></mat-row>\n\n <!-- Row shown when there is no matching data. -->\n <tr class="mat-row" *matNoDataRow>\n <td class="mat-cell" colspan="4">No data matching the filter "{{input.value}}"</td>\n </tr>\n </mat-table>\n <mat-paginator [pageSize]="pageSize" [pageSizeOptions]="showPageSizeOptions" [hidePageSize]="hidePageSize" [showFirstLastButtons]="showFirstLastButtons" class="paginator"></mat-paginator>\n</div>\n', styles: ["/* src/app/core/components/data-inspector/data-inspector.component.scss */\n:host {\n display: block;\n height: 100%;\n width: 100%;\n}\n.data-inspector-container {\n margin-left: 24px;\n margin-right: 24px;\n height: calc(100% - 63px);\n}\n.table-content-area {\n height: calc(100% - 56px - 86px);\n overflow-y: auto;\n width: 100%;\n scroll-behavior: smooth;\n}\n.mat-column-path {\n flex: 0 0 50%;\n width: 50%;\n}\n.mat-mdc-table {\n overflow: auto;\n}\n.paginator {\n width: 100%;\n height: 56px;\n background-color: var(--mat-sys-background);\n}\n.filter-field {\n padding: 15px 0px 15px 0px;\n width: 100%;\n height: 86px;\n}\n.pathHeader {\n flex: 1 1 45%;\n}\n.putHeader {\n flex: 1 1 10%;\n}\n.dataHeader {\n flex: 1 1 45%;\n}\n.table-row {\n border-bottom-color: var(--mat-table-row-item-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, 0.12)));\n border-bottom-width: var(--mat-table-row-item-outline-width, 1px);\n border-bottom-style: solid;\n}\n.row-cell {\n border-bottom-color: white;\n border-bottom-width: 0px;\n border-bottom-style: solid;\n}\n.pathCell {\n flex: 1 1 45%;\n word-break: break-word;\n overflow-wrap: break-word;\n}\n.putCell {\n flex: 1 1 10%;\n}\n.dataCell {\n flex: 1 1 45%;\n flex-flow: column;\n flex-wrap: nowrap;\n gap: 2px;\n}\n.flex-container {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n gap: 5px;\n margin: 5px 0px 5px 0px;\n height: 100%;\n width: 100%;\n}\n.source-sub-row {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n gap: 5px;\n width: 100%;\n}\n.put-icon {\n color: var(--kip-starboard-color);\n}\n@media screen and (max-width: 750px) {\n .pathHeader {\n flex: 1 1 50%;\n }\n .dataHeader {\n flex: 1 1 50%;\n }\n .dataCell {\n flex: 1 1 100%;\n }\n .dataCell {\n flex: 1 1 100%;\n margin-left: 24px;\n }\n .mat-mdc-table .mat-mdc-row {\n flex-direction: row;\n flex-wrap: wrap;\n }\n .mat-mdc-table .mat-mdc-cell:before {\n content: attr(data-label);\n float: left;\n padding-right: 5px;\n }\n mat-row::after {\n min-height: auto;\n padding-bottom: 10px;\n }\n .dataRow {\n flex-direction: column;\n align-items: flex-start;\n }\n .actionCell {\n margin-left: 24px;\n }\n}\n/*# sourceMappingURL=data-inspector.component.css.map */\n"] }]
|
|
583
|
+
}], () => [], null);
|
|
584
|
+
})();
|
|
585
|
+
(() => {
|
|
586
|
+
(typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(DataInspectorComponent, { className: "DataInspectorComponent", filePath: "src/app/core/components/data-inspector/data-inspector.component.ts", lineNumber: 26 });
|
|
587
|
+
})();
|
|
588
|
+
export {
|
|
589
|
+
DataInspectorComponent
|
|
590
|
+
};
|
|
591
|
+
//# sourceMappingURL=chunk-YT33DHC3.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["src/app/core/components/data-inspector-row/data-inspector-row.component.ts", "src/app/core/components/data-inspector-row/data-inspector-row.component.html", "src/app/core/components/data-inspector-row/data-inspector-row-unit-modal.html", "src/app/core/components/data-inspector/data-inspector.component.ts", "src/app/core/components/data-inspector/data-inspector.component.html"],
|
|
4
|
+
"sourcesContent": ["import { Component, OnInit, ViewEncapsulation, input, inject } from '@angular/core';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\n\nimport { UnitsService } from '../../services/units.service';\nimport { MatCell } from '@angular/material/table';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptgroup, MatOption } from '@angular/material/core';\n\nimport { MatSelect } from '@angular/material/select';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\n\n\n@Component({\n selector: 'data-inspector-row',\n templateUrl: './data-inspector-row.component.html',\n styleUrls: ['./data-inspector-row.component.css'],\n encapsulation: ViewEncapsulation.None,\n imports: [MatCell, MatButtonModule]\n})\nexport class DataInspectorRowComponent implements OnInit {\n private _units = inject(UnitsService);\n private _dialog = inject(MatDialog);\n readonly path = input.required<string>();\n readonly source = input<string>(undefined);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly pathValue = input<any>(undefined);\n readonly type = input.required<string>();\n\n units = null;\n selectedUnit = \"unitless\"\n\n ngOnInit() {\n this.units = this._units.getConversionsForPath(this.path());\n this.selectedUnit = this.units.base;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n protected convertValue(value: any, type: string): any {\n if (type === 'number')\n return this._units.convertToUnit(this.selectedUnit, value);\n else {\n return value;\n }\n }\n\n openDialog(): void {\n const dialogRef = this._dialog.open(DialogUnitSelect, {\n data: {selectedUnit: this.selectedUnit, units: this.units}\n });\n\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n this.selectedUnit = result;\n }\n });\n }\n}\n\n\n\n@Component({\n selector: 'dialog-unit-selector',\n templateUrl: 'data-inspector-row-unit-modal.html',\n imports: [\n MatDialogTitle,\n MatDialogContent,\n MatFormField,\n MatLabel,\n MatSelect,\n MatOptgroup,\n MatOption,\n MatDialogActions,\n MatButtonModule,\n MatDialogClose\n],\n})\nexport class DialogUnitSelect {\n dialogRef = inject<MatDialogRef<DialogUnitSelect>>(MatDialogRef);\n data = inject(MAT_DIALOG_DATA);\n\n\n selectedUnit = null;\n}\n", "<mat-cell class=\"cell-source cells\">{{ source() }}</mat-cell>\n<mat-cell class=\"cell-value cells\">{{ convertValue(pathValue(), type()) }}</mat-cell>\n<mat-cell class=\"cell-action cells\">\n @switch (type()) {\n @case ('boolean') {\n <span class=\"path-type\">Boolean</span>\n }\n @case ('string') {\n <span class=\"path-type\">String</span>\n }\n @case ('Date') {\n <span class=\"path-type\">String</span>\n }\n @case ('object') {\n <span class=\"path-type\">Object</span>\n }\n @default {\n <button mat-stroked-button class=\"change-units-btn\" (click)=\"openDialog()\">{{selectedUnit}}</button>\n }\n }\n</mat-cell>\n", "<h2 mat-dialog-title>Select Unit type</h2>\n<mat-dialog-content>\n <mat-form-field style=\"padding-top: 15px; padding-bottom: 15px;\" appearance=\"outline\" floatLabel=\"always\">\n <mat-label>Unit</mat-label>\n <mat-select [(value)]=\"data.selectedUnit\">\n @for (unitgroup of data.units.conversions; track unitgroup) {\n <mat-optgroup [label]=\"unitgroup.group\">\n @for (unit of unitgroup.units; track unit) {\n <mat-option [value]=\"unit.measure\">\n {{unit.measure}}\n </mat-option>\n }\n </mat-optgroup>\n }\n </mat-select>\n </mat-form-field>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-flat-button mat-dialog-close>Cancel</button>\n <button mat-flat-button [mat-dialog-close]=\"data.selectedUnit\">Ok</button>\n</mat-dialog-actions>\n", "import { MatIconModule } from '@angular/material/icon';\nimport { Component, AfterViewInit, OnDestroy, inject, DestroyRef, Signal, effect, viewChild } from '@angular/core';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { DataService } from '../../services/data.service';\nimport { ISkPathData } from \"../../interfaces/app-interfaces\";\nimport { DataInspectorRowComponent } from '../data-inspector-row/data-inspector-row.component';\nimport { KeyValuePipe } from '@angular/common';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { PageHeaderComponent } from '../page-header/page-header.component';\nimport { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';\nimport { MatSort, MatSortModule } from '@angular/material/sort';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { map, throttleTime } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout';\n\n\n@Component({\n selector: 'data-inspector',\n templateUrl: './data-inspector.component.html',\n styleUrls: ['./data-inspector.component.scss'],\n imports: [ MatFormFieldModule, MatTableModule, MatInputModule, MatPaginatorModule, MatSortModule, DataInspectorRowComponent, KeyValuePipe, PageHeaderComponent, MatIconModule]\n})\nexport class DataInspectorComponent implements AfterViewInit, OnDestroy {\n private dataService = inject(DataService);\n private destroyRef = inject(DestroyRef);\n private _responsive = inject(BreakpointObserver);\n private isPhonePortrait: Signal<BreakpointState>;\n private filterSubject = new Subject<string>();\n\n readonly paginator = viewChild.required(MatPaginator);\n readonly sort = viewChild.required(MatSort);\n protected readonly pageTitle = 'Data Inspector';\n\n public pageSize = 25;\n protected hidePageSize = false;\n protected showFirstLastButtons = true;\n protected showPageSizeOptions = [5, 10, 25, 100];\n public tableData = new MatTableDataSource<ISkPathData>([]);\n public displayedColumns: string[] = ['path', 'supportsPut', 'defaultSource'];\n\n constructor() {\n this.filterSubject.pipe(\n debounceTime(500)\n ).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(filterValue => {\n this.tableData.filter = filterValue.trim().toLowerCase();\n if (this.tableData.paginator) {\n this.tableData.paginator.firstPage();\n }\n });\n\n this.isPhonePortrait = toSignal(this._responsive.observe(Breakpoints.HandsetPortrait));\n\n effect(() => {\n if (this.isPhonePortrait().matches) {\n this.hidePageSize = true;\n this.showFirstLastButtons = false;\n this.showPageSizeOptions = [];\n } else {\n this.hidePageSize = false;\n this.showFirstLastButtons = true;\n this.showPageSizeOptions = [5, 10, 25, 100];\n }\n });\n }\n\n ngAfterViewInit() {\n this.dataService.startSkDataFullTree()\n .pipe(\n map((paths: ISkPathData[]) =>\n paths\n .filter(path => Object.keys(path.sources || {}).length > 0) // Filter out items with empty sources\n .map(path => ({\n ...path,\n sources: path.type && path.type.includes('object') && typeof path.sources === 'object'\n ? Object.fromEntries(\n Object.entries(path.sources).map(([key, value]) => [\n key,\n {\n ...value,\n sourceValue: typeof value.sourceValue === 'object'\n ? JSON.stringify(value.sourceValue) // Stringify only sourceValue if it's an object\n : value.sourceValue\n }\n ])\n ) // Transform only sourceValue in sources if path.type contains 'object'\n : path.sources\n }))\n ),\n throttleTime(500), // Emit at most once every 500ms\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((filteredPaths: ISkPathData[]) => {\n this.tableData.data = filteredPaths;\n });\n\n // Assign paginator and sort to the tableData\n this.tableData.paginator = this.paginator();\n this.tableData.sort = this.sort();\n\n // Add a custom sorting accessor for the \"supportsPut\" column\n this.tableData.sortingDataAccessor = (item, property) => {\n switch (property) {\n case 'supportsPut':\n return item.meta?.supportsPut ? 1 : 0; // Sort by boolean value (1 for true, 0 for false)\n default:\n return item[property]; // Default sorting for other columns\n }\n };\n }\n\n public applyFilter(event: Event) {\n const filterValue = (event.target as HTMLInputElement).value;\n this.filterSubject.next(filterValue);\n }\n\n public trackByPath(index: number, item: ISkPathData): string {\n return `${item.path}`;\n }\n\n public trackBySource(index: number, item): string {\n return `${item.key}`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getSourceKey(source: { key: any, value: any }): string {\n return String(source.key);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getSourceValue(item: { key: any, value: any } ): any {\n return item.value.sourceValue;\n }\n\n ngOnDestroy(): void {\n this.filterSubject.complete(); // Clean up the Subject\n this.dataService.stopSkDataFullTree();\n }\n}\n", "<page-header [pageTitle]=\"pageTitle\" />\n<div class=\"data-inspector-container\">\n <mat-form-field class=\"filter-field\">\n <mat-label>Filter</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\" placeholder=\"Type any part of the path, source or value...\" value=\"\" #input>\n </mat-form-field>\n\n <mat-table class=\"table-content-area mat-elevation-z8\" [dataSource]=\"tableData\" [trackBy]=\"trackByPath\" matSort matSortActive=\"path\" matSortDirection=\"asc\">\n <!-- Path Column -->\n <ng-container matColumnDef=\"path\">\n <mat-header-cell class=\"pathHeader\" *matHeaderCellDef mat-sort-header> Path </mat-header-cell>\n <mat-cell class=\"pathCell row-cell\" *matCellDef=\"let element\"> {{element.path}} </mat-cell>\n </ng-container>\n <!-- Put Column -->\n <ng-container matColumnDef=\"supportsPut\">\n <mat-header-cell class=\"putHeader\" *matHeaderCellDef mat-sort-header> PUT Support </mat-header-cell>\n <mat-cell class=\"putCell row-cell\" *matCellDef=\"let element\">\n @if (element.meta?.supportsPut) {\n <mat-icon class=\"put-icon\" matTooltip=\"Supports PUT operation\">check_circle</mat-icon>\n }\n </mat-cell>\n </ng-container>\n <!-- Source/value Column -->\n <ng-container matColumnDef=\"defaultSource\">\n <mat-header-cell class=\"dataHeader\" *matHeaderCellDef mat-sort-header> Source </mat-header-cell>\n <mat-cell class=\"dataCell row-cell\" *matCellDef=\"let element\">\n <div class=\"flex-container\">\n @for (item of element.sources | keyvalue; track item.key) {\n <data-inspector-row class=\"source-sub-row\" [path]=\"element.path\" [source]=\"getSourceKey(item )\" [pathValue]=\"getSourceValue(item)\" [type]=\"element.type\"></data-inspector-row>\n }\n </div>\n </mat-cell>\n </ng-container>\n\n <!-- Table headers -->\n <mat-header-row class=\"headerRow\" *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\n <mat-row class=\"table-row\" *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\n\n <!-- Row shown when there is no matching data. -->\n <tr class=\"mat-row\" *matNoDataRow>\n <td class=\"mat-cell\" colspan=\"4\">No data matching the filter \"{{input.value}}\"</td>\n </tr>\n </mat-table>\n <mat-paginator [pageSize]=\"pageSize\" [pageSizeOptions]=\"showPageSizeOptions\" [hidePageSize]=\"hidePageSize\" [showFirstLastButtons]=\"showFirstLastButtons\" class=\"paginator\"></mat-paginator>\n</div>\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|