@platforma-sdk/ui-vue 1.45.21 → 1.45.26
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/.turbo/turbo-build.log +11 -11
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +20 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +13 -12
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/DynamicForm.vue.d.ts +2 -3
- package/dist/components/PlAnnotations/components/DynamicForm.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +18 -17
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js +7 -9
- package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js.map +1 -1
- package/dist/components/PlAnnotations/types.d.ts +1 -1
- package/dist/components/PlAnnotations/utils.d.ts +2 -4
- package/dist/components/PlAnnotations/utils.js.map +1 -1
- package/package.json +7 -7
- package/src/components/PlAnnotations/components/AnnotationsSidebar.vue +2 -1
- package/src/components/PlAnnotations/components/DynamicForm.vue +3 -3
- package/src/components/PlAnnotations/components/FilterSidebar.vue +13 -7
- package/src/components/PlAnnotations/components/PlAnnotations.vue +0 -4
- package/src/components/PlAnnotations/types.ts +2 -4
- package/src/components/PlAnnotations/utils.ts +2 -2
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
WARN Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
2
|
|
|
3
|
-
> @platforma-sdk/ui-vue@1.45.
|
|
3
|
+
> @platforma-sdk/ui-vue@1.45.26 build /home/runner/_work/platforma/platforma/sdk/ui-vue
|
|
4
4
|
> ts-builder build --target browser-lib
|
|
5
5
|
|
|
6
6
|
Building browser-lib project...
|
|
@@ -23,8 +23,8 @@ computing gzip size...
|
|
|
23
23
|
[2mdist/[22m[36mcomponents/PlAgCellFile/PlAgCellFile.vue2.js [39m[1m[2m 0.11 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.10 kB[22m
|
|
24
24
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgRowCount.vue2.js [39m[1m[2m 0.11 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.10 kB[22m
|
|
25
25
|
[2mdist/[22m[36mcomponents/PlAgCsvExporter/PlAgCsvExporter.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
26
|
-
[2mdist/[22m[36mcomponents/PlAgColumnHeader/PlAgColumnHeader.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
27
26
|
[2mdist/[22m[36mcomponents/PlAgCellProgress/PlAgCellProgress.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
27
|
+
[2mdist/[22m[36mcomponents/PlAgColumnHeader/PlAgColumnHeader.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
28
28
|
[2mdist/[22m[36mcomponents/PlAgRowNumHeader.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
29
29
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgOverlayLoading.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
30
30
|
[2mdist/[22m[36mcomponents/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
@@ -64,8 +64,8 @@ computing gzip size...
|
|
|
64
64
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/valid.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.59 kB[22m
|
|
65
65
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/Legend.vue.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.10 kB[22m
|
|
66
66
|
[2mdist/[22m[36m_virtual/index.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.09 kB[22m
|
|
67
|
-
[2mdist/[22m[36mcomponents/PlBtnExportArchive/Summary.vue.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.10 kB[22m
|
|
68
67
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/Toolbar.vue.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.10 kB[22m
|
|
68
|
+
[2mdist/[22m[36mcomponents/PlBtnExportArchive/Summary.vue.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.10 kB[22m
|
|
69
69
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/SeqLogo.vue.js [39m[1m[2m 0.27 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.10 kB[22m
|
|
70
70
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/intersects.js [39m[1m[2m 0.28 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.67 kB[22m
|
|
71
71
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/Consensus.vue.js [39m[1m[2m 0.28 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.10 kB[22m
|
|
@@ -94,7 +94,7 @@ computing gzip size...
|
|
|
94
94
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/compare-build.js [39m[1m[2m 0.32 kB[22m[1m[22m[2m │ gzip: 0.23 kB[22m[2m │ map: 0.80 kB[22m
|
|
95
95
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.js [39m[1m[2m 0.33 kB[22m[1m[22m[2m │ gzip: 0.23 kB[22m[2m │ map: 0.12 kB[22m
|
|
96
96
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.js [39m[1m[2m 0.33 kB[22m[1m[22m[2m │ gzip: 0.23 kB[22m[2m │ map: 0.12 kB[22m
|
|
97
|
-
[2mdist/[22m[36mcomponents/PlAnnotations/utils.js [39m[1m[2m 0.35 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.
|
|
97
|
+
[2mdist/[22m[36mcomponents/PlAnnotations/utils.js [39m[1m[2m 0.35 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.91 kB[22m
|
|
98
98
|
[2mdist/[22m[36mlib/util/helpers/dist/strings.js [39m[1m[2m 0.35 kB[22m[1m[22m[2m │ gzip: 0.24 kB[22m[2m │ map: 4.16 kB[22m
|
|
99
99
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/parse.js [39m[1m[2m 0.38 kB[22m[1m[22m[2m │ gzip: 0.25 kB[22m[2m │ map: 0.86 kB[22m
|
|
100
100
|
[2mdist/[22m[36mcomputedResult.js [39m[1m[2m 0.40 kB[22m[1m[22m[2m │ gzip: 0.26 kB[22m[2m │ map: 2.42 kB[22m
|
|
@@ -114,13 +114,13 @@ computing gzip size...
|
|
|
114
114
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/useMiPlots.js [39m[1m[2m 0.47 kB[22m[1m[22m[2m │ gzip: 0.30 kB[22m[2m │ map: 1.13 kB[22m
|
|
115
115
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/Consensus.vue3.js [39m[1m[2m 0.47 kB[22m[1m[22m[2m │ gzip: 0.32 kB[22m[2m │ map: 0.10 kB[22m
|
|
116
116
|
[2mdist/[22m[36mcomponents/LoaderPage.vue.js [39m[1m[2m 0.51 kB[22m[1m[22m[2m │ gzip: 0.35 kB[22m[2m │ map: 0.54 kB[22m
|
|
117
|
+
[2mdist/[22m[36mcomponents/PlAnnotations/components/PlAnnotations.vue3.js [39m[1m[2m 0.52 kB[22m[1m[22m[2m │ gzip: 0.33 kB[22m[2m │ map: 0.11 kB[22m
|
|
117
118
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgDataTableV2.vue3.js [39m[1m[2m 0.52 kB[22m[1m[22m[2m │ gzip: 0.36 kB[22m[2m │ map: 0.11 kB[22m
|
|
118
119
|
[2mdist/[22m[36mcomponents/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js [39m[1m[2m 0.52 kB[22m[1m[22m[2m │ gzip: 0.36 kB[22m[2m │ map: 0.11 kB[22m
|
|
119
120
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/min-satisfying.js [39m[1m[2m 0.52 kB[22m[1m[22m[2m │ gzip: 0.31 kB[22m[2m │ map: 1.36 kB[22m
|
|
120
121
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/max-satisfying.js [39m[1m[2m 0.53 kB[22m[1m[22m[2m │ gzip: 0.31 kB[22m[2m │ map: 1.36 kB[22m
|
|
121
122
|
[2mdist/[22m[36mplugins/Monetization/useButtonTarget.js [39m[1m[2m 0.53 kB[22m[1m[22m[2m │ gzip: 0.33 kB[22m[2m │ map: 1.29 kB[22m
|
|
122
123
|
[2mdist/[22m[36mcomponents/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js [39m[1m[2m 0.53 kB[22m[1m[22m[2m │ gzip: 0.36 kB[22m[2m │ map: 0.11 kB[22m
|
|
123
|
-
[2mdist/[22m[36mcomponents/PlAnnotations/components/PlAnnotations.vue3.js [39m[1m[2m 0.60 kB[22m[1m[22m[2m │ gzip: 0.37 kB[22m[2m │ map: 0.11 kB[22m
|
|
124
124
|
[2mdist/[22m[36mcomponents/PlAnnotations/components/PlAnnotationsModal.vue3.js [39m[1m[2m 0.60 kB[22m[1m[22m[2m │ gzip: 0.37 kB[22m[2m │ map: 0.11 kB[22m
|
|
125
125
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/constants.js [39m[1m[2m 0.60 kB[22m[1m[22m[2m │ gzip: 0.38 kB[22m[2m │ map: 1.59 kB[22m
|
|
126
126
|
[2mdist/[22m[36mcomponents/PlAgDataTable/ag-override.css.js [39m[1m[2m 0.61 kB[22m[1m[22m[2m │ gzip: 0.30 kB[22m[2m │ map: 0.92 kB[22m
|
|
@@ -183,7 +183,7 @@ computing gzip size...
|
|
|
183
183
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgDataTableSheets.vue2.js [39m[1m[2m 2.57 kB[22m[1m[22m[2m │ gzip: 1.16 kB[22m[2m │ map: 5.30 kB[22m
|
|
184
184
|
[2mdist/[22m[36mcomponents/PlTableFilters/PlTableFiltersV2.vue3.js [39m[1m[2m 2.58 kB[22m[1m[22m[2m │ gzip: 0.94 kB[22m[2m │ map: 0.12 kB[22m
|
|
185
185
|
[2mdist/[22m[36mcomponents/PlTableFilters/filters-state.js [39m[1m[2m 2.60 kB[22m[1m[22m[2m │ gzip: 1.08 kB[22m[2m │ map: 7.95 kB[22m
|
|
186
|
-
[2mdist/[22m[36mcomponents/PlAnnotations/components/PlAnnotations.vue2.js [39m[1m[2m 2.61 kB[22m[1m[22m[2m │ gzip: 1.06 kB[22m[2m │ map: 3.
|
|
186
|
+
[2mdist/[22m[36mcomponents/PlAnnotations/components/PlAnnotations.vue2.js [39m[1m[2m 2.61 kB[22m[1m[22m[2m │ gzip: 1.06 kB[22m[2m │ map: 3.44 kB[22m
|
|
187
187
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/comparator.js [39m[1m[2m 2.65 kB[22m[1m[22m[2m │ gzip: 0.94 kB[22m[2m │ map: 6.36 kB[22m
|
|
188
188
|
[2mdist/[22m[36mnode_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/helpers.js [39m[1m[2m 2.79 kB[22m[1m[22m[2m │ gzip: 1.21 kB[22m[2m │ map: 8.92 kB[22m
|
|
189
189
|
[2mdist/[22m[36mcomponents/PlAgDataTable/sources/row-number.js [39m[1m[2m 3.10 kB[22m[1m[22m[2m │ gzip: 1.34 kB[22m[2m │ map: 8.36 kB[22m
|
|
@@ -191,7 +191,7 @@ computing gzip size...
|
|
|
191
191
|
[2mdist/[22m[36mcomponents/PlTableFilters/PlTableAddFilterV2.vue.js [39m[1m[2m 3.16 kB[22m[1m[22m[2m │ gzip: 1.27 kB[22m[2m │ map: 3.95 kB[22m
|
|
192
192
|
[2mdist/[22m[36mcomponents/PlAgDataTable/sources/table-state-v2.js [39m[1m[2m 3.18 kB[22m[1m[22m[2m │ gzip: 1.16 kB[22m[2m │ map: 9.94 kB[22m
|
|
193
193
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/SeqLogo.vue2.js [39m[1m[2m 3.21 kB[22m[1m[22m[2m │ gzip: 1.32 kB[22m[2m │ map: 6.15 kB[22m
|
|
194
|
-
[2mdist/[22m[36mcomponents/PlAnnotations/components/AnnotationsSidebar.vue2.js [39m[1m[2m 3.
|
|
194
|
+
[2mdist/[22m[36mcomponents/PlAnnotations/components/AnnotationsSidebar.vue2.js [39m[1m[2m 3.26 kB[22m[1m[22m[2m │ gzip: 1.31 kB[22m[2m │ map: 3.27 kB[22m
|
|
195
195
|
[2mdist/[22m[36mnode_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/duplex.js [39m[1m[2m 3.33 kB[22m[1m[22m[2m │ gzip: 1.22 kB[22m[2m │ map: 10.70 kB[22m
|
|
196
196
|
[2mdist/[22m[36mcomponents/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js [39m[1m[2m 3.35 kB[22m[1m[22m[2m │ gzip: 1.42 kB[22m[2m │ map: 2.84 kB[22m
|
|
197
197
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js [39m[1m[2m 3.51 kB[22m[1m[22m[2m │ gzip: 1.27 kB[22m[2m │ map: 0.13 kB[22m
|
|
@@ -202,10 +202,10 @@ computing gzip size...
|
|
|
202
202
|
[2mdist/[22m[36mcomponents/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js [39m[1m[2m 3.84 kB[22m[1m[22m[2m │ gzip: 1.52 kB[22m[2m │ map: 4.99 kB[22m
|
|
203
203
|
[2mdist/[22m[36mplugins/Monetization/LimitCard.vue2.js [39m[1m[2m 3.84 kB[22m[1m[22m[2m │ gzip: 1.15 kB[22m[2m │ map: 7.17 kB[22m
|
|
204
204
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/internal/re.js [39m[1m[2m 4.03 kB[22m[1m[22m[2m │ gzip: 1.23 kB[22m[2m │ map: 12.92 kB[22m
|
|
205
|
-
[2mdist/[22m[36mcomponents/PlAnnotations/components/DynamicForm.vue2.js [39m[1m[2m 4.55 kB[22m[1m[22m[2m │ gzip: 1.42 kB[22m[2m │ map: 7.
|
|
205
|
+
[2mdist/[22m[36mcomponents/PlAnnotations/components/DynamicForm.vue2.js [39m[1m[2m 4.55 kB[22m[1m[22m[2m │ gzip: 1.42 kB[22m[2m │ map: 7.20 kB[22m
|
|
206
206
|
[2mdist/[22m[36mplugins/Monetization/MonetizationSidebar.vue.js [39m[1m[2m 4.70 kB[22m[1m[22m[2m │ gzip: 1.74 kB[22m[2m │ map: 4.91 kB[22m
|
|
207
207
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js [39m[1m[2m 4.71 kB[22m[1m[22m[2m │ gzip: 1.66 kB[22m[2m │ map: 9.69 kB[22m
|
|
208
|
-
[2mdist/[22m[36mcomponents/PlAnnotations/components/FilterSidebar.vue2.js [39m[1m[2m 4.
|
|
208
|
+
[2mdist/[22m[36mcomponents/PlAnnotations/components/FilterSidebar.vue2.js [39m[1m[2m 4.73 kB[22m[1m[22m[2m │ gzip: 1.72 kB[22m[2m │ map: 6.70 kB[22m
|
|
209
209
|
[2mdist/[22m[36mcomponents/PlMultiSequenceAlignment/chemical-properties.js [39m[1m[2m 4.75 kB[22m[1m[22m[2m │ gzip: 1.67 kB[22m[2m │ map: 11.78 kB[22m
|
|
210
210
|
[2mdist/[22m[36mcomponents/BlockLayout.vue2.js [39m[1m[2m 4.96 kB[22m[1m[22m[2m │ gzip: 1.83 kB[22m[2m │ map: 2.96 kB[22m
|
|
211
211
|
[2mdist/[22m[36mcomponents/PlAnnotations/components/FilterSidebar.vue3.js [39m[1m[2m 5.48 kB[22m[1m[22m[2m │ gzip: 1.59 kB[22m[2m │ map: 0.11 kB[22m
|
|
@@ -232,7 +232,7 @@ computing gzip size...
|
|
|
232
232
|
[2mdist/[22m[36mcomponents/PlAgRowNumHeader.vue.js [39m[1m[2m 44.64 kB[22m[1m[22m[2m │ gzip: 29.28 kB[22m[2m │ map: 3.70 kB[22m
|
|
233
233
|
[2mdist/[22m[36mAgGridVue/useAgGridOptions.js [39m[1m[2m 49.28 kB[22m[1m[22m[2m │ gzip: 30.14 kB[22m[2m │ map: 16.35 kB[22m
|
|
234
234
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgDataTableV2.vue2.js [39m[1m[2m 50.33 kB[22m[1m[22m[2m │ gzip: 31.04 kB[22m[2m │ map: 33.70 kB[22m
|
|
235
|
-
[vite:dts] Declaration files built in
|
|
235
|
+
[vite:dts] Declaration files built in 9628ms.
|
|
236
236
|
|
|
237
|
-
[32m✓ built in
|
|
237
|
+
[32m✓ built in 12.20s[39m
|
|
238
238
|
Build completed successfully
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
WARN Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
2
|
|
|
3
|
-
> @platforma-sdk/ui-vue@1.45.
|
|
3
|
+
> @platforma-sdk/ui-vue@1.45.26 type-check /home/runner/_work/platforma/platforma/sdk/ui-vue
|
|
4
4
|
> ts-builder types --target browser-lib
|
|
5
5
|
|
|
6
6
|
↳ vue-tsc.js --noEmit --project ./tsconfig.json
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @platforma-sdk/ui-vue
|
|
2
2
|
|
|
3
|
+
## 1.45.26
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 5814e48: Small changes in sdk
|
|
8
|
+
- Updated dependencies [55b218b]
|
|
9
|
+
- Updated dependencies [5814e48]
|
|
10
|
+
- @platforma-sdk/model@1.45.26
|
|
11
|
+
- @milaboratories/uikit@2.5.4
|
|
12
|
+
- @milaboratories/ptabler-expression-js@1.1.1
|
|
13
|
+
|
|
14
|
+
## 1.45.23
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- 6f67293: Correct annotations types
|
|
19
|
+
- Updated dependencies [6f67293]
|
|
20
|
+
- @platforma-sdk/model@1.45.23
|
|
21
|
+
- @milaboratories/uikit@2.5.3
|
|
22
|
+
|
|
3
23
|
## 1.45.21
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { randomInt as
|
|
1
|
+
import { defineComponent as y, mergeModels as S, useModel as u, createBlock as b, openBlock as I, unref as a, createSlots as k, withCtx as o, createVNode as s, withModifiers as h, createTextVNode as d, createElementVNode as p, normalizeClass as r, toDisplayString as C } from "vue";
|
|
2
|
+
import { randomInt as v } from "../../../lib/util/helpers/dist/random.js";
|
|
3
3
|
import { PlSidebarItem as V, PlBtnGhost as $, PlEditableTitle as M, PlBtnSecondary as P, PlElementList as w } from "@milaboratories/uikit";
|
|
4
|
-
const x = /* @__PURE__ */
|
|
4
|
+
const x = /* @__PURE__ */ y({
|
|
5
5
|
__name: "AnnotationsSidebar",
|
|
6
6
|
props: {
|
|
7
7
|
annotation: { required: !0 },
|
|
@@ -9,21 +9,22 @@ const x = /* @__PURE__ */ g({
|
|
|
9
9
|
selectedStepId: {},
|
|
10
10
|
selectedStepIdModifiers: {}
|
|
11
11
|
},
|
|
12
|
-
emits: /* @__PURE__ */
|
|
13
|
-
setup(m, { emit:
|
|
14
|
-
const l = u(m, "annotation"), i = u(m, "selectedStepId"),
|
|
15
|
-
function
|
|
16
|
-
const n =
|
|
12
|
+
emits: /* @__PURE__ */ S(["delete-schema"], ["update:annotation", "update:selectedStepId"]),
|
|
13
|
+
setup(m, { emit: f }) {
|
|
14
|
+
const l = u(m, "annotation"), i = u(m, "selectedStepId"), c = f;
|
|
15
|
+
function g() {
|
|
16
|
+
const n = v();
|
|
17
17
|
l.value.steps.push({
|
|
18
18
|
id: n,
|
|
19
19
|
label: `Filter #${l.value.steps.length + 1}`,
|
|
20
20
|
filter: {
|
|
21
|
+
id: v(),
|
|
21
22
|
type: "and",
|
|
22
23
|
filters: []
|
|
23
24
|
}
|
|
24
25
|
}), i.value = n;
|
|
25
26
|
}
|
|
26
|
-
return (n, e) => (
|
|
27
|
+
return (n, e) => (I(), b(a(V), null, k({
|
|
27
28
|
"header-content": o(() => [
|
|
28
29
|
s(a(M), {
|
|
29
30
|
modelValue: l.value.title,
|
|
@@ -39,7 +40,7 @@ const x = /* @__PURE__ */ g({
|
|
|
39
40
|
icon: "delete-bin",
|
|
40
41
|
reverse: "",
|
|
41
42
|
disabled: l.value.steps.length === 0,
|
|
42
|
-
onClick: e[3] || (e[3] =
|
|
43
|
+
onClick: e[3] || (e[3] = h((t) => c("delete-schema"), ["stop"]))
|
|
43
44
|
}, {
|
|
44
45
|
default: o(() => e[5] || (e[5] = [
|
|
45
46
|
d(" Delete Schema ")
|
|
@@ -57,7 +58,7 @@ const x = /* @__PURE__ */ g({
|
|
|
57
58
|
}, [
|
|
58
59
|
s(a(P), {
|
|
59
60
|
icon: "add",
|
|
60
|
-
onClick:
|
|
61
|
+
onClick: g
|
|
61
62
|
}, {
|
|
62
63
|
default: o(() => e[4] || (e[4] = [
|
|
63
64
|
d(" Add annotation ")
|
|
@@ -77,7 +78,7 @@ const x = /* @__PURE__ */ g({
|
|
|
77
78
|
onItemClick: e[2] || (e[2] = (t) => i.value = t.id)
|
|
78
79
|
}, {
|
|
79
80
|
"item-title": o(({ item: t }) => [
|
|
80
|
-
d(
|
|
81
|
+
d(C(t.label), 1)
|
|
81
82
|
]),
|
|
82
83
|
_: 1
|
|
83
84
|
}, 8, ["items", "get-item-key", "is-active", "item-class", "class"])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnnotationsSidebar.vue2.js","sources":["../../../../src/components/PlAnnotations/components/AnnotationsSidebar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { randomInt } from '@milaboratories/helpers';\nimport {\n PlBtnGhost,\n PlBtnSecondary,\n PlEditableTitle,\n PlElementList,\n PlSidebarItem,\n} from '@milaboratories/uikit';\nimport type { Annotation } from '../types';\n\n// Models\nconst annotation = defineModel<Annotation>('annotation', { required: true });\nconst selectedStepId = defineModel<undefined | number>('selectedStepId');\n// Emits\nconst emits = defineEmits<{\n (e: 'delete-schema'): void;\n}>();\n// Actions\nfunction handleAddStep() {\n const id = randomInt();\n annotation.value.steps.push({\n id,\n label: `Filter #${annotation.value.steps.length + 1}`,\n filter: {\n type: 'and',\n filters: [],\n },\n });\n selectedStepId.value = id;\n};\n</script>\n\n<template>\n <PlSidebarItem>\n <template #header-content>\n <PlEditableTitle\n v-model=\"annotation.title\"\n :max-length=\"40\"\n max-width=\"600px\"\n placeholder=\"Annotation Name\"\n :autofocus=\"annotation.title.length === 0\"\n />\n </template>\n <template v-if=\"annotation\" #body-content>\n <div :class=\"$style.root\">\n <PlBtnSecondary icon=\"add\" @click=\"handleAddStep\">\n Add annotation\n </PlBtnSecondary>\n\n <span :class=\"$style.tip\">Lower annotations override the ones above. Rearrange them by dragging.</span>\n\n <PlElementList\n v-model:items=\"annotation.steps\"\n :get-item-key=\"(item) => item.id
|
|
1
|
+
{"version":3,"file":"AnnotationsSidebar.vue2.js","sources":["../../../../src/components/PlAnnotations/components/AnnotationsSidebar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { randomInt } from '@milaboratories/helpers';\nimport {\n PlBtnGhost,\n PlBtnSecondary,\n PlEditableTitle,\n PlElementList,\n PlSidebarItem,\n} from '@milaboratories/uikit';\nimport type { Annotation } from '../types';\n\n// Models\nconst annotation = defineModel<Annotation>('annotation', { required: true });\nconst selectedStepId = defineModel<undefined | number>('selectedStepId');\n// Emits\nconst emits = defineEmits<{\n (e: 'delete-schema'): void;\n}>();\n// Actions\nfunction handleAddStep() {\n const id = randomInt();\n annotation.value.steps.push({\n id,\n label: `Filter #${annotation.value.steps.length + 1}`,\n filter: {\n id: randomInt(),\n type: 'and',\n filters: [],\n },\n });\n selectedStepId.value = id;\n};\n</script>\n\n<template>\n <PlSidebarItem>\n <template #header-content>\n <PlEditableTitle\n v-model=\"annotation.title\"\n :max-length=\"40\"\n max-width=\"600px\"\n placeholder=\"Annotation Name\"\n :autofocus=\"annotation.title.length === 0\"\n />\n </template>\n <template v-if=\"annotation\" #body-content>\n <div :class=\"$style.root\">\n <PlBtnSecondary icon=\"add\" @click=\"handleAddStep\">\n Add annotation\n </PlBtnSecondary>\n\n <span :class=\"$style.tip\">Lower annotations override the ones above. Rearrange them by dragging.</span>\n\n <PlElementList\n v-model:items=\"annotation.steps\"\n :get-item-key=\"(item) => item.id\"\n :is-active=\"(item) => item.id === selectedStepId\"\n :item-class=\"$style.stepItem\"\n :class=\"$style.steps\"\n @item-click=\"(item) => selectedStepId = item.id\"\n >\n <template #item-title=\"{ item }\">\n {{ item.label }}\n </template>\n </PlElementList>\n </div>\n </template>\n <template #footer-content>\n <PlBtnGhost\n icon=\"delete-bin\"\n reverse\n :disabled=\"annotation.steps.length === 0\"\n @click.stop=\"emits('delete-schema')\"\n >\n Delete Schema\n </PlBtnGhost>\n </template>\n </PlSidebarItem>\n</template>\n\n<style lang=\"scss\" module>\n@use '@milaboratories/uikit/styles/variables' as *;\n\n.root {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.tip {\n margin-top: 12px;\n color: var(--txt-03);\n}\n\n.steps {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.stepItem {\n cursor: pointer;\n}\n</style>\n"],"names":["annotation","_useModel","selectedStepId","__props","emits","__emit","handleAddStep","id","randomInt"],"mappings":";;;;;;;;;;;;;AAYA,UAAMA,IAAaC,KAAwB,YAAgC,GACrEC,IAAiBD,EAA+BE,GAAC,gBAAgB,GAEjEC,IAAQC;AAId,aAASC,IAAgB;AACvB,YAAMC,IAAKC,EAAA;AACX,MAAAR,EAAW,MAAM,MAAM,KAAK;AAAA,QAC1B,IAAAO;AAAA,QACA,OAAO,WAAWP,EAAW,MAAM,MAAM,SAAS,CAAC;AAAA,QACnD,QAAQ;AAAA,UACN,IAAIQ,EAAA;AAAA,UACJ,MAAM;AAAA,UACN,SAAS,CAAA;AAAA,QAAC;AAAA,MACZ,CACD,GACDN,EAAe,QAAQK;AAAA,IACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { FilterSpecTypeFieldRecord } from '@milaboratories/uikit';
|
|
2
|
-
import { SimplifiedUniversalPColumnEntry } from '@platforma-sdk/model';
|
|
3
|
-
|
|
4
|
-
declare const _default: <T extends FilterSpec = FilterSpec>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
2
|
+
import { FilterSpecLeaf, SimplifiedUniversalPColumnEntry } from '@platforma-sdk/model';
|
|
3
|
+
declare const _default: <T extends FilterSpecLeaf = FilterSpecLeaf>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
5
4
|
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
6
5
|
readonly "onUpdate:modelValue"?: ((value: T) => any) | undefined;
|
|
7
6
|
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>, "onUpdate:modelValue"> & ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicForm.vue2.js","sources":["../../../../src/components/PlAnnotations/components/DynamicForm.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends
|
|
1
|
+
{"version":3,"file":"DynamicForm.vue2.js","sources":["../../../../src/components/PlAnnotations/components/DynamicForm.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends FilterSpecLeaf = FilterSpecLeaf\">\nimport { computed, watch } from 'vue';\n\nimport { isNil } from '@milaboratories/helpers';\nimport type { FilterSpecTypeFieldRecord } from '@milaboratories/uikit';\nimport { getFilterUiMetadata, getFilterUiTypeOptions, PlCheckbox, PlDropdown, PlNumberField, PlTextField } from '@milaboratories/uikit';\nimport type { FilterSpecLeaf, SimplifiedUniversalPColumnEntry, SUniversalPColumnId } from '@platforma-sdk/model';\n\nimport type { FilterSpecType } from '../types';\n\ntype ObjectEntries<T, K extends keyof T = keyof T> = [K, T[K]][];\n\nconst formData = defineModel<T>({ default: () => ({}) });\n\nconst props = defineProps<{\n columns: SimplifiedUniversalPColumnEntry[];\n formMetadata: FilterSpecTypeFieldRecord<T>;\n}>();\n\nconst columnSpecRef = computed(() => {\n const value = formData.value;\n if ('column' in value) {\n return props.columns.find((c) => c.id === value.column)?.obj;\n }\n return undefined;\n});\n\nconst typeMetadataRef = computed(() => {\n const value = formData.value;\n if (value.type && typeof value.type === 'string') {\n return getFilterUiMetadata(value.type);\n }\n return undefined;\n});\n\nconst filterUiTypeOptions = computed(() => {\n return getFilterUiTypeOptions(columnSpecRef.value);\n});\n\nconst firstColumnsOptions = computed(() => props.columns.map((c) => ({ label: c.label, value: c.id })));\nconst secondColumnOptions = computed(() => {\n const typeMetadata = typeMetadataRef.value;\n const columnSpec = columnSpecRef.value;\n if (typeMetadata && columnSpec) {\n return props.columns.filter((c) => typeMetadata.supportedFor(columnSpec, c.obj)).map((c) => ({\n label: c.label,\n value: c.id,\n }));\n }\n return [];\n});\n\nconst setFieldValue = <K extends keyof T>(fieldName: K, value: T[K]) => {\n formData.value[fieldName] = value;\n};\n\nwatch(() => props.formMetadata, (newForm) => {\n for (const [fieldName, field] of Object.entries(newForm) as ObjectEntries<typeof newForm>) {\n if (formData.value[fieldName] === undefined) {\n const value = field.defaultValue();\n if (!isNil(value)) {\n formData.value[fieldName] = value;\n }\n }\n }\n},\n{ immediate: true, deep: true },\n);\n\nfunction isFilterType(type: string | undefined): boolean {\n return type === 'FilterType'\n // @deprecated version\n || type === 'FilterUiType';\n}\n\n</script>\n\n<template>\n <div v-if=\"formMetadata\" :class=\"$style.form\">\n <template v-for=\"(field, fieldName) in formMetadata\" :key=\"fieldName\">\n <template v-if=\"field.fieldType === 'form'\">\n <!-- TODO: Nested Form not described in FilterUi, we need to define it later. Even more in type it don't possible situations -->\n <DynamicForm\n v-if=\"'form' in field\"\n :model-value=\"formData[fieldName] as any\"\n :form-metadata=\"field.form as any\"\n :columns=\"props.columns\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n />\n </template>\n <template v-else-if=\"isFilterType(field.fieldType)\">\n <PlDropdown\n :model-value=\"formData[fieldName] as FilterSpecType\"\n :label=\"field.label ?? fieldName\"\n :options=\"filterUiTypeOptions\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n />\n </template>\n <template v-else-if=\"field.fieldType === 'string'\">\n <PlTextField\n :model-value=\"formData[fieldName] as string\"\n :label=\"field.label ?? fieldName\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n />\n </template>\n <template v-else-if=\"field.fieldType === 'SUniversalPColumnId'\">\n <PlDropdown\n :model-value=\"formData[fieldName] as SUniversalPColumnId\"\n :label=\"field.label ?? fieldName\"\n :options=\"fieldName === 'column' ? firstColumnsOptions : secondColumnOptions\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n />\n </template>\n <template v-else-if=\"field.fieldType === 'number'\">\n <PlNumberField\n :model-value=\"formData[fieldName] as number\"\n :label=\"field.label ?? fieldName\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n />\n </template>\n <template v-else-if=\"field.fieldType === 'number?'\">\n <PlNumberField\n :model-value=\"formData[fieldName] as (undefined | number)\"\n :label=\"field.label ?? fieldName\"\n :clearable=\"true\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n />\n </template>\n <template v-else-if=\"field.fieldType === 'boolean' || field.fieldType === 'boolean?'\">\n <PlCheckbox\n :model-value=\"Boolean(formData[fieldName])\"\n :label=\"field.label ?? fieldName\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n >\n {{ field.label ?? fieldName }}\n </PlCheckbox>\n </template>\n <template v-else>\n <pre>TODO:{{ field.fieldType }}</pre>\n </template>\n </template>\n </div>\n</template>\n\n<style module>\n.form {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n</style>\n"],"names":["formData","_useModel","__props","props","columnSpecRef","computed","value","_a","c","typeMetadataRef","getFilterUiMetadata","filterUiTypeOptions","getFilterUiTypeOptions","firstColumnsOptions","secondColumnOptions","typeMetadata","columnSpec","setFieldValue","fieldName","watch","newForm","field","isNil","isFilterType","type"],"mappings":";;;;;;;;;;;;;;AAYA,UAAMA,IAAWC,EAAcC,GAAA,YAAwB,GAEjDC,IAAQD,GAKRE,IAAgBC,EAAS,MAAM;;AACnC,YAAMC,IAAQN,EAAS;AACvB,UAAI,YAAYM;AACd,gBAAOC,IAAAJ,EAAM,QAAQ,KAAK,CAACK,MAAMA,EAAE,OAAOF,EAAM,MAAM,MAA/C,gBAAAC,EAAkD;AAAA,IAG7D,CAAC,GAEKE,IAAkBJ,EAAS,MAAM;AACrC,YAAMC,IAAQN,EAAS;AACvB,UAAIM,EAAM,QAAQ,OAAOA,EAAM,QAAS;AACtC,eAAOI,EAAoBJ,EAAM,IAAI;AAAA,IAGzC,CAAC,GAEKK,IAAsBN,EAAS,MAC5BO,EAAuBR,EAAc,KAAK,CAClD,GAEKS,IAAsBR,EAAS,MAAMF,EAAM,QAAQ,IAAI,CAACK,OAAO,EAAE,OAAOA,EAAE,OAAO,OAAOA,EAAE,GAAA,EAAK,CAAC,GAChGM,IAAsBT,EAAS,MAAM;AACzC,YAAMU,IAAeN,EAAgB,OAC/BO,IAAaZ,EAAc;AACjC,aAAIW,KAAgBC,IACXb,EAAM,QAAQ,OAAO,CAACK,MAAMO,EAAa,aAAaC,GAAYR,EAAE,GAAG,CAAC,EAAE,IAAI,CAACA,OAAO;AAAA,QAC3F,OAAOA,EAAE;AAAA,QACT,OAAOA,EAAE;AAAA,MAAA,EACT,IAEG,CAAA;AAAA,IACT,CAAC,GAEKS,IAAgB,CAAoBC,GAAcZ,MAAgB;AACtE,MAAAN,EAAS,MAAMkB,CAAS,IAAIZ;AAAA,IAC9B;AAEA,IAAAa;AAAA,MAAM,MAAMhB,EAAM;AAAA,MAAc,CAACiB,MAAY;AAC3C,mBAAW,CAACF,GAAWG,CAAK,KAAK,OAAO,QAAQD,CAAO;AACrD,cAAIpB,EAAS,MAAMkB,CAAS,MAAM,QAAW;AAC3C,kBAAMZ,IAAQe,EAAM,aAAA;AACpB,YAAKC,EAAMhB,CAAK,MACdN,EAAS,MAAMkB,CAAS,IAAIZ;AAAA,UAEhC;AAAA,MAEJ;AAAA,MACA,EAAE,WAAW,IAAM,MAAM,GAAA;AAAA,IAAK;AAG9B,aAASiB,EAAaC,GAAmC;AACvD,aAAOA,MAAS,gBAEXA,MAAS;AAAA,IAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as w, mergeModels as M, useModel as N, computed as P, createBlock as r, createCommentVNode as f, openBlock as d, unref as s, withCtx as n, createElementVNode as y, normalizeClass as v, createVNode as g, createTextVNode as p, createElementBlock as U, toDisplayString as F } from "vue";
|
|
2
2
|
import { isNil as u } from "../../../lib/util/helpers/dist/utils.js";
|
|
3
3
|
import { randomInt as V } from "../../../lib/util/helpers/dist/random.js";
|
|
4
|
-
import { PlSidebarItem as
|
|
5
|
-
import { createDefaultFilterMetadata as
|
|
6
|
-
import
|
|
7
|
-
const
|
|
4
|
+
import { PlSidebarItem as $, PlBtnSecondary as C, PlElementList as D, PlEditableTitle as I, getFilterUiMetadata as j } from "@milaboratories/uikit";
|
|
5
|
+
import { createDefaultFilterMetadata as q } from "../utils.js";
|
|
6
|
+
import L from "./DynamicForm.vue.js";
|
|
7
|
+
const T = { key: 1 }, K = /* @__PURE__ */ w({
|
|
8
8
|
__name: "FilterSidebar",
|
|
9
|
-
props: /* @__PURE__ */
|
|
9
|
+
props: /* @__PURE__ */ M({
|
|
10
10
|
columns: {},
|
|
11
11
|
hasSelectedColumns: { type: Boolean },
|
|
12
12
|
getValuesForSelectedColumns: { type: Function }
|
|
@@ -16,7 +16,7 @@ const L = { key: 1 }, J = /* @__PURE__ */ B({
|
|
|
16
16
|
}),
|
|
17
17
|
emits: ["update:step"],
|
|
18
18
|
setup(c) {
|
|
19
|
-
const o =
|
|
19
|
+
const o = N(c, "step"), a = c, S = P(() => a.hasSelectedColumns !== void 0 && a.getValuesForSelectedColumns !== void 0), h = () => {
|
|
20
20
|
o.value.filter.filters.push({
|
|
21
21
|
id: V(),
|
|
22
22
|
isExpanded: !0,
|
|
@@ -33,7 +33,8 @@ const L = { key: 1 }, J = /* @__PURE__ */ B({
|
|
|
33
33
|
name: `Selected list (${i})`,
|
|
34
34
|
isExpanded: !1,
|
|
35
35
|
type: "or",
|
|
36
|
-
filters: e.map((m) => ({
|
|
36
|
+
filters: e.map((m, B) => ({
|
|
37
|
+
id: B,
|
|
37
38
|
type: "patternEquals",
|
|
38
39
|
column: l,
|
|
39
40
|
value: m
|
|
@@ -43,10 +44,10 @@ const L = { key: 1 }, J = /* @__PURE__ */ B({
|
|
|
43
44
|
const k = (t) => {
|
|
44
45
|
var l;
|
|
45
46
|
return u(t.name) ? ((l = a.columns.find((e) => "column" in t ? e.id === t.column : !1)) == null ? void 0 : l.label) ?? t.type : t.name;
|
|
46
|
-
}, b = (t) => u(t.type) ?
|
|
47
|
-
return (t, l) => o.value ? (d(), r(s(
|
|
47
|
+
}, b = (t) => u(t.type) ? q() : j(t.type).form, E = (t) => t.type === "or" || t.type === "and" ? t.filters.map((l) => "value" in l && !u(l.value) ? l.value : null).filter((l) => !u(l)).join(", ") : null;
|
|
48
|
+
return (t, l) => o.value ? (d(), r(s($), { key: 0 }, {
|
|
48
49
|
"header-content": n(() => [
|
|
49
|
-
(d(), r(s(
|
|
50
|
+
(d(), r(s(I), {
|
|
50
51
|
key: o.value.id,
|
|
51
52
|
modelValue: o.value.label,
|
|
52
53
|
"onUpdate:modelValue": l[0] || (l[0] = (e) => o.value.label = e),
|
|
@@ -86,7 +87,7 @@ const L = { key: 1 }, J = /* @__PURE__ */ B({
|
|
|
86
87
|
_: 1
|
|
87
88
|
}, 8, ["disabled"])) : f("", !0)
|
|
88
89
|
], 2),
|
|
89
|
-
g(s(
|
|
90
|
+
g(s(D), {
|
|
90
91
|
items: o.value.filter.filters,
|
|
91
92
|
"onUpdate:items": l[1] || (l[1] = (e) => o.value.filter.filters = e),
|
|
92
93
|
"get-item-key": (e) => e.id,
|
|
@@ -97,13 +98,13 @@ const L = { key: 1 }, J = /* @__PURE__ */ B({
|
|
|
97
98
|
p(F(k(e)), 1)
|
|
98
99
|
]),
|
|
99
100
|
"item-content": n(({ item: e, index: i }) => [
|
|
100
|
-
e.type !== "or" && e.type !== "and" ? (d(), r(
|
|
101
|
+
e.type !== "or" && e.type !== "and" ? (d(), r(L, {
|
|
101
102
|
key: 0,
|
|
102
103
|
modelValue: o.value.filter.filters[i],
|
|
103
104
|
"onUpdate:modelValue": (m) => o.value.filter.filters[i] = m,
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}, null, 8, ["modelValue", "onUpdate:modelValue", "
|
|
105
|
+
columns: a.columns,
|
|
106
|
+
"form-metadata": b(e)
|
|
107
|
+
}, null, 8, ["modelValue", "onUpdate:modelValue", "columns", "form-metadata"])) : (d(), U("div", T, F(E(e)), 1))
|
|
107
108
|
]),
|
|
108
109
|
_: 1
|
|
109
110
|
}, 8, ["items", "get-item-key", "is-expanded", "on-expand"])
|
|
@@ -114,6 +115,6 @@ const L = { key: 1 }, J = /* @__PURE__ */ B({
|
|
|
114
115
|
}
|
|
115
116
|
});
|
|
116
117
|
export {
|
|
117
|
-
|
|
118
|
+
K as default
|
|
118
119
|
};
|
|
119
120
|
//# sourceMappingURL=FilterSidebar.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterSidebar.vue2.js","sources":["../../../../src/components/PlAnnotations/components/FilterSidebar.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type Props = {\n columns: SimplifiedUniversalPColumnEntry[];\n hasSelectedColumns?: boolean;\n getValuesForSelectedColumns?: () => Promise<undefined | { columnId: PObjectId; values: string[] }>;\n};\n</script>\n<script setup lang=\"ts\">\nimport { isNil, randomInt } from '@milaboratories/helpers';\nimport {\n getFilterUiMetadata,\n PlBtnSecondary,\n PlEditableTitle,\n PlElementList,\n PlSidebarItem,\n} from '@milaboratories/uikit';\nimport type { PObjectId, SimplifiedUniversalPColumnEntry, SUniversalPColumnId } from '@platforma-sdk/model';\nimport { computed } from 'vue';\nimport type { Filter, FilterSpec } from '../types';\nimport { createDefaultFilterMetadata } from '../utils';\nimport DynamicForm from './DynamicForm.vue';\n\n// Models\nconst step = defineModel<Filter>('step', { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst withSelection = computed(() => {\n return props.hasSelectedColumns !== undefined && props.getValuesForSelectedColumns !== undefined;\n});\n// Actions\nconst addFilterPlaceholder = () => {\n step.value.filter.filters.push({\n id: randomInt(),\n isExpanded: true,\n type: undefined,\n });\n};\n\nasync function addFilterFromSelected() {\n if (props.hasSelectedColumns === undefined || props.getValuesForSelectedColumns === undefined) return;\n\n const data = await props.getValuesForSelectedColumns();\n if (!data || data.values.length === 0) return;\n\n const { columnId, values } = data;\n const shortReminder = values.slice(0, 3).join(', ') + (values.length > 3 ? ` and ${values.length - 3} more` : '');\n\n step.value.filter.filters.push({\n id: randomInt(),\n name: `Selected list (${shortReminder})`,\n isExpanded: false,\n type: 'or',\n filters: values.map((value) => ({\n type: 'patternEquals',\n column: columnId as SUniversalPColumnId,\n value,\n })),\n });\n}\n\n// Getters\nconst getColumnLabel = (filter: FilterSpec) => {\n if (!isNil(filter.name)) return filter.name;\n return props.columns\n .find((c) => 'column' in filter ? c.id === filter.column : false)?.label\n ?? filter.type;\n};\n\nconst getFormMetadata = (filter: FilterSpec) => {\n return !isNil(filter.type)
|
|
1
|
+
{"version":3,"file":"FilterSidebar.vue2.js","sources":["../../../../src/components/PlAnnotations/components/FilterSidebar.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type Props = {\n columns: SimplifiedUniversalPColumnEntry[];\n hasSelectedColumns?: boolean;\n getValuesForSelectedColumns?: () => Promise<undefined | { columnId: PObjectId; values: string[] }>;\n};\n</script>\n<script setup lang=\"ts\">\nimport { isNil, randomInt } from '@milaboratories/helpers';\nimport type {\n FilterSpecTypeFieldRecord,\n} from '@milaboratories/uikit';\nimport {\n getFilterUiMetadata,\n PlBtnSecondary,\n PlEditableTitle,\n PlElementList,\n PlSidebarItem,\n} from '@milaboratories/uikit';\nimport type { FilterSpecLeaf, PObjectId, SimplifiedUniversalPColumnEntry, SUniversalPColumnId } from '@platforma-sdk/model';\nimport { computed } from 'vue';\nimport type { Filter, FilterSpec } from '../types';\nimport { createDefaultFilterMetadata } from '../utils';\nimport DynamicForm from './DynamicForm.vue';\n\n// Models\nconst step = defineModel<Filter>('step', { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst withSelection = computed(() => {\n return props.hasSelectedColumns !== undefined && props.getValuesForSelectedColumns !== undefined;\n});\n// Actions\nconst addFilterPlaceholder = () => {\n step.value.filter.filters.push({\n id: randomInt(),\n isExpanded: true,\n type: undefined,\n });\n};\n\nasync function addFilterFromSelected() {\n if (props.hasSelectedColumns === undefined || props.getValuesForSelectedColumns === undefined) return;\n\n const data = await props.getValuesForSelectedColumns();\n if (!data || data.values.length === 0) return;\n\n const { columnId, values } = data;\n const shortReminder = values.slice(0, 3).join(', ') + (values.length > 3 ? ` and ${values.length - 3} more` : '');\n\n step.value.filter.filters.push({\n id: randomInt(),\n name: `Selected list (${shortReminder})`,\n isExpanded: false,\n type: 'or',\n filters: values.map((value, i) => ({\n id: i,\n type: 'patternEquals',\n column: columnId as SUniversalPColumnId,\n value,\n })),\n });\n}\n\n// Getters\nconst getColumnLabel = (filter: FilterSpec) => {\n if (!isNil(filter.name)) return filter.name;\n return props.columns\n .find((c) => 'column' in filter ? c.id === filter.column : false)?.label\n ?? filter.type;\n};\n\nconst getFormMetadata = (filter: FilterSpec): FilterSpecTypeFieldRecord<FilterSpecLeaf> => {\n return !isNil(filter.type)\n ? getFilterUiMetadata(filter.type).form as FilterSpecTypeFieldRecord<FilterSpecLeaf>\n : createDefaultFilterMetadata();\n};\n\nconst getFilterValues = (filter: FilterSpec) => {\n if (filter.type === 'or' || filter.type === 'and') {\n return filter.filters.map((f) => 'value' in f && !isNil(f.value) ? f.value : null).filter((v) => !isNil(v)).join (', ');\n }\n return null;\n};\n</script>\n\n<template>\n <PlSidebarItem v-if=\"step\">\n <template #header-content>\n <PlEditableTitle\n :key=\"step.id\"\n v-model=\"step.label\"\n :max-length=\"40\"\n max-width=\"600px\"\n placeholder=\"Annotation Name\"\n :autofocus=\"step.label.length === 0\"\n />\n </template>\n <template #body-content>\n <div :class=\"$style.root\">\n <div :class=\"$style.actions\">\n <PlBtnSecondary style=\"width: 100%;\" icon=\"add\" @click=\"addFilterPlaceholder\">\n Filter\n </PlBtnSecondary>\n <PlBtnSecondary v-if=\"withSelection\" style=\"width: 100%;\" icon=\"add\" :disabled=\"!props.hasSelectedColumns\" @click=\"addFilterFromSelected\">\n From selection\n </PlBtnSecondary>\n </div>\n\n <PlElementList\n v-model:items=\"step.filter.filters\"\n :get-item-key=\"(item) => item.id\"\n :is-expanded=\"(item) => Boolean(item.isExpanded)\"\n :on-expand=\"(item) => item.isExpanded = !Boolean(item.isExpanded)\"\n >\n <template #item-title=\"{ item }\">\n {{ getColumnLabel(item) }}\n </template>\n <template #item-content=\"{ item, index }\">\n <template v-if=\"item.type !== 'or' && item.type !== 'and'\">\n <DynamicForm\n v-model=\"(step.filter.filters[index] as FilterSpecLeaf)\"\n :columns=\"props.columns\"\n :form-metadata=\"getFormMetadata(item)\"\n />\n </template>\n <template v-else>\n <div>{{ getFilterValues(item) }}</div>\n </template>\n </template>\n </PlElementList>\n </div>\n </template>\n </PlSidebarItem>\n</template>\n\n<style lang=\"scss\" module>\n@use '@milaboratories/uikit/styles/variables' as *;\n\n.root {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.actions {\n display: flex;\n flex-direction: row;\n gap: 12px;\n}\n</style>\n"],"names":["step","_useModel","__props","props","withSelection","computed","addFilterPlaceholder","randomInt","addFilterFromSelected","data","columnId","values","shortReminder","value","i","getColumnLabel","filter","isNil","_a","c","getFormMetadata","createDefaultFilterMetadata","getFilterUiMetadata","getFilterValues","f","v"],"mappings":";;;;;;;;;;;;;;;;;;AA0BA,UAAMA,IAAOC,EAAmBC,GAAC,MAA0B,GAErDC,IAAQD,GAERE,IAAgBC,EAAS,MACtBF,EAAM,uBAAuB,UAAaA,EAAM,gCAAgC,MACxF,GAEKG,IAAuB,MAAM;AACjC,MAAAN,EAAK,MAAM,OAAO,QAAQ,KAAK;AAAA,QAC7B,IAAIO,EAAA;AAAA,QACJ,YAAY;AAAA,QACZ,MAAM;AAAA,MAAA,CACP;AAAA,IACH;AAEA,mBAAeC,IAAwB;AACrC,UAAIL,EAAM,uBAAuB,UAAaA,EAAM,gCAAgC,OAAW;AAE/F,YAAMM,IAAO,MAAMN,EAAM,4BAAA;AACzB,UAAI,CAACM,KAAQA,EAAK,OAAO,WAAW,EAAG;AAEvC,YAAM,EAAE,UAAAC,GAAU,QAAAC,EAAA,IAAWF,GACvBG,IAAgBD,EAAO,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,KAAKA,EAAO,SAAS,IAAI,QAAQA,EAAO,SAAS,CAAC,UAAU;AAE9G,MAAAX,EAAK,MAAM,OAAO,QAAQ,KAAK;AAAA,QAC7B,IAAIO,EAAA;AAAA,QACJ,MAAM,kBAAkBK,CAAa;AAAA,QACrC,YAAY;AAAA,QACZ,MAAM;AAAA,QACN,SAASD,EAAO,IAAI,CAACE,GAAOC,OAAO;AAAA,UACjC,IAAIA;AAAA,UACJ,MAAM;AAAA,UACN,QAAQJ;AAAA,UACR,OAAAG;AAAA,QAAA,EACA;AAAA,MAAA,CACH;AAAA,IACH;AAGA,UAAME,IAAiB,CAACC,MAAuB;;AAC7C,aAAKC,EAAMD,EAAO,IAAI,MACfE,IAAAf,EAAM,QACV,KAAK,CAACgB,MAAM,YAAYH,IAASG,EAAE,OAAOH,EAAO,SAAS,EAAK,MAD3D,gBAAAE,EAC8D,UAChEF,EAAO,OAHoBA,EAAO;AAAA,IAIzC,GAEMI,IAAkB,CAACJ,MACfC,EAAMD,EAAO,IAAI,IAErBK,EAAA,IADAC,EAAoBN,EAAO,IAAI,EAAE,MAIjCO,IAAkB,CAACP,MACnBA,EAAO,SAAS,QAAQA,EAAO,SAAS,QACnCA,EAAO,QAAQ,IAAI,CAACQ,MAAM,WAAWA,KAAK,CAACP,EAAMO,EAAE,KAAK,IAAIA,EAAE,QAAQ,IAAI,EAAE,OAAO,CAACC,MAAM,CAACR,EAAMQ,CAAC,CAAC,EAAE,KAAM,IAAI,IAEjH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAnnotations.vue2.js","sources":["../../../../src/components/PlAnnotations/components/PlAnnotations.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Props as BaseProps } from './FilterSidebar.vue';\nexport type Props = BaseProps & {\n onDeleteSchema?: () => void;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, effect, shallowRef } from 'vue';\n\nimport { isNil } from '@milaboratories/helpers';\nimport { PlSidebarGroup, useConfirm } from '@milaboratories/uikit';\n\nimport type { Annotation } from '../types';\nimport AnnotationsSidebar from './AnnotationsSidebar.vue';\nimport FilterSidebar from './FilterSidebar.vue';\n\n// Models\nconst annotation = defineModel<Annotation>('annotation', { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst selectedStepId = shallowRef<number | undefined>(undefined);\nconst selectedStep = computed(() => {\n return isNil(selectedStepId.value) || isNil(annotation.value)\n ? undefined\n : annotation.value.steps.find((step) => step.id === selectedStepId.value);\n});\n\n// Watchers\neffect(function setDefaultStepId() {\n if (selectedStepId.value === undefined && annotation.value.steps.length > 0) {\n selectedStepId.value = annotation.value.steps[0].id;\n }\n});\n// Hooks\nconst confirmResetSchema = useConfirm({\n title: 'Reset Schema',\n message: 'Are you sure you want to reset the schema? This action cannot be undone.',\n confirmLabel: 'Yes, reset',\n cancelLabel: 'No, cancel',\n});\n// Actions\nasync function handleDeleteSchema() {\n if (await confirmResetSchema()) {\n selectedStepId.value = undefined;\n props.onDeleteSchema?.();\n }\n}\n\n</script>\n\n<template>\n <PlSidebarGroup :class=\"$style.sidebarGroup\">\n <template #item-0>\n <AnnotationsSidebar\n v-model:annotation=\"annotation\"\n v-model:selectedStepId=\"selectedStepId\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n @delete-schema=\"handleDeleteSchema\"\n />\n </template>\n <template #item-1>\n <FilterSidebar\n v-if=\"selectedStep\"\n v-model:step=\"selectedStep\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n :selectedStepId=\"selectedStepId\"\n :hasSelectedColumns=\"props.hasSelectedColumns\"\n :getValuesForSelectedColumns=\"props.getValuesForSelectedColumns\"\n />\n </template>\n </PlSidebarGroup>\n</template>\n\n<style lang=\"scss\" module>\n.
|
|
1
|
+
{"version":3,"file":"PlAnnotations.vue2.js","sources":["../../../../src/components/PlAnnotations/components/PlAnnotations.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Props as BaseProps } from './FilterSidebar.vue';\nexport type Props = BaseProps & {\n onDeleteSchema?: () => void;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, effect, shallowRef } from 'vue';\n\nimport { isNil } from '@milaboratories/helpers';\nimport { PlSidebarGroup, useConfirm } from '@milaboratories/uikit';\n\nimport type { Annotation } from '../types';\nimport AnnotationsSidebar from './AnnotationsSidebar.vue';\nimport FilterSidebar from './FilterSidebar.vue';\n\n// Models\nconst annotation = defineModel<Annotation>('annotation', { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst selectedStepId = shallowRef<number | undefined>(undefined);\nconst selectedStep = computed(() => {\n return isNil(selectedStepId.value) || isNil(annotation.value)\n ? undefined\n : annotation.value.steps.find((step) => step.id === selectedStepId.value);\n});\n\n// Watchers\neffect(function setDefaultStepId() {\n if (selectedStepId.value === undefined && annotation.value.steps.length > 0) {\n selectedStepId.value = annotation.value.steps[0].id;\n }\n});\n// Hooks\nconst confirmResetSchema = useConfirm({\n title: 'Reset Schema',\n message: 'Are you sure you want to reset the schema? This action cannot be undone.',\n confirmLabel: 'Yes, reset',\n cancelLabel: 'No, cancel',\n});\n// Actions\nasync function handleDeleteSchema() {\n if (await confirmResetSchema()) {\n selectedStepId.value = undefined;\n props.onDeleteSchema?.();\n }\n}\n\n</script>\n\n<template>\n <PlSidebarGroup :class=\"$style.sidebarGroup\">\n <template #item-0>\n <AnnotationsSidebar\n v-model:annotation=\"annotation\"\n v-model:selectedStepId=\"selectedStepId\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n @delete-schema=\"handleDeleteSchema\"\n />\n </template>\n <template #item-1>\n <FilterSidebar\n v-if=\"selectedStep\"\n v-model:step=\"selectedStep\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n :selectedStepId=\"selectedStepId\"\n :hasSelectedColumns=\"props.hasSelectedColumns\"\n :getValuesForSelectedColumns=\"props.getValuesForSelectedColumns\"\n />\n </template>\n </PlSidebarGroup>\n</template>\n\n<style lang=\"scss\" module>\n.sidebarGroup {\n width: 100%;\n height: 100%;\n}\n\n.sidebarItem {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["annotation","_useModel","props","__props","selectedStepId","shallowRef","selectedStep","computed","isNil","step","effect","confirmResetSchema","useConfirm","handleDeleteSchema","_a"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,UAAMA,IAAaC,KAAwB,YAAgC,GAErEC,IAAQC,GAERC,IAAiBC,EAA+B,MAAS,GACzDC,IAAeC,EAAS,MACrBC,EAAMJ,EAAe,KAAK,KAAKI,EAAMR,EAAW,KAAK,IACxD,SACAA,EAAW,MAAM,MAAM,KAAK,CAACS,MAASA,EAAK,OAAOL,EAAe,KAAK,CAC3E;AAGD,IAAAM,EAAO,WAA4B;AACjC,MAAIN,EAAe,UAAU,UAAaJ,EAAW,MAAM,MAAM,SAAS,MACxEI,EAAe,QAAQJ,EAAW,MAAM,MAAM,CAAC,EAAE;AAAA,IAErD,CAAC;AAED,UAAMW,IAAqBC,EAAW;AAAA,MACpC,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,aAAa;AAAA,IAAA,CACd;AAED,mBAAeC,IAAqB;;AAClC,MAAI,MAAMF,QACRP,EAAe,QAAQ,SACvBU,IAAAZ,EAAM,mBAAN,QAAAY,EAAA,KAAAZ;AAAA,IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".
|
|
2
|
-
const e = "
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
sidebarItem: a
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._sidebarGroup_1imam_1,._sidebarItem_1imam_6{width:100%;height:100%}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
|
|
2
|
+
const e = "_sidebarGroup_1imam_1", s = "_sidebarItem_1imam_6", a = {
|
|
3
|
+
sidebarGroup: e,
|
|
4
|
+
sidebarItem: s
|
|
6
5
|
};
|
|
7
6
|
export {
|
|
8
|
-
|
|
9
|
-
e as
|
|
10
|
-
s as
|
|
11
|
-
a as sidebarItem
|
|
7
|
+
a as default,
|
|
8
|
+
e as sidebarGroup,
|
|
9
|
+
s as sidebarItem
|
|
12
10
|
};
|
|
13
11
|
//# sourceMappingURL=PlAnnotations.vue3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAnnotations.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlAnnotations.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FilterSpec as _FilterSpec, AnnotationSpecUi, FilterSpecLeaf, FilterSpecUi } from '@platforma-sdk/model';
|
|
2
2
|
export type { FilterSpecType } from '@platforma-sdk/model';
|
|
3
3
|
export type FilterSpec = _FilterSpec<FilterSpecLeaf, {
|
|
4
|
-
id
|
|
4
|
+
id: number;
|
|
5
5
|
name?: string;
|
|
6
6
|
isExpanded?: boolean;
|
|
7
7
|
}>;
|
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
import { FilterSpecTypeFieldRecord } from '@milaboratories/uikit';
|
|
2
|
-
import {
|
|
3
|
-
export declare function createDefaultFilterMetadata<T extends
|
|
4
|
-
column: unknown;
|
|
5
|
-
}>>(): FilterSpecTypeFieldRecord<T>;
|
|
2
|
+
import { FilterSpecLeaf } from '@platforma-sdk/model';
|
|
3
|
+
export declare function createDefaultFilterMetadata<T extends FilterSpecLeaf>(): FilterSpecTypeFieldRecord<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../src/components/PlAnnotations/utils.ts"],"sourcesContent":["import type { FilterSpecTypeFieldRecord } from '@milaboratories/uikit';\nimport type {
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/components/PlAnnotations/utils.ts"],"sourcesContent":["import type { FilterSpecTypeFieldRecord } from '@milaboratories/uikit';\nimport type { FilterSpecLeaf } from '@platforma-sdk/model';\n\nexport function createDefaultFilterMetadata<T extends FilterSpecLeaf>(): FilterSpecTypeFieldRecord<T> {\n return {\n column: {\n label: 'Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => undefined,\n },\n } as FilterSpecTypeFieldRecord<T>;\n};\n"],"names":["createDefaultFilterMetadata"],"mappings":"AAGO,SAASA,IAAsF;AACpG,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,WAAW;AAAA,MACX,cAAc,MAAA;AAAA;AAAA,IAAM;AAAA,IAEtB,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,WAAW;AAAA,MACX,cAAc,MAAA;AAAA;AAAA,IAAM;AAAA,EACtB;AAEJ;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platforma-sdk/ui-vue",
|
|
3
|
-
"version": "1.45.
|
|
3
|
+
"version": "1.45.26",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"styles": "dist/index.js",
|
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
"d3-format": "^3.1.0",
|
|
27
27
|
"zod": "~3.23.8",
|
|
28
28
|
"@zip.js/zip.js": "^2.8.2",
|
|
29
|
-
"@milaboratories/
|
|
30
|
-
"@milaboratories/
|
|
31
|
-
"@
|
|
32
|
-
"@
|
|
29
|
+
"@milaboratories/biowasm-tools": "2.0.0",
|
|
30
|
+
"@milaboratories/ptabler-expression-js": "1.1.1",
|
|
31
|
+
"@milaboratories/uikit": "2.5.4",
|
|
32
|
+
"@platforma-sdk/model": "1.45.26"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"happy-dom": "^15.11.7",
|
|
@@ -45,10 +45,10 @@
|
|
|
45
45
|
"fast-json-patch": "^3.1.1",
|
|
46
46
|
"@faker-js/faker": "^9.2.0",
|
|
47
47
|
"@milaboratories/ts-configs": "1.0.6",
|
|
48
|
-
"@milaboratories/eslint-config": "1.0.4",
|
|
49
48
|
"@milaboratories/ts-builder": "1.0.5",
|
|
49
|
+
"@milaboratories/build-configs": "1.0.8",
|
|
50
50
|
"@milaboratories/helpers": "1.12.0",
|
|
51
|
-
"@milaboratories/
|
|
51
|
+
"@milaboratories/eslint-config": "1.0.4"
|
|
52
52
|
},
|
|
53
53
|
"scripts": {
|
|
54
54
|
"test": "vitest run --passWithNoTests",
|
|
@@ -23,6 +23,7 @@ function handleAddStep() {
|
|
|
23
23
|
id,
|
|
24
24
|
label: `Filter #${annotation.value.steps.length + 1}`,
|
|
25
25
|
filter: {
|
|
26
|
+
id: randomInt(),
|
|
26
27
|
type: 'and',
|
|
27
28
|
filters: [],
|
|
28
29
|
},
|
|
@@ -52,7 +53,7 @@ function handleAddStep() {
|
|
|
52
53
|
|
|
53
54
|
<PlElementList
|
|
54
55
|
v-model:items="annotation.steps"
|
|
55
|
-
:get-item-key="(item) => item.id
|
|
56
|
+
:get-item-key="(item) => item.id"
|
|
56
57
|
:is-active="(item) => item.id === selectedStepId"
|
|
57
58
|
:item-class="$style.stepItem"
|
|
58
59
|
:class="$style.steps"
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
<script setup lang="ts" generic="T extends
|
|
1
|
+
<script setup lang="ts" generic="T extends FilterSpecLeaf = FilterSpecLeaf">
|
|
2
2
|
import { computed, watch } from 'vue';
|
|
3
3
|
|
|
4
4
|
import { isNil } from '@milaboratories/helpers';
|
|
5
5
|
import type { FilterSpecTypeFieldRecord } from '@milaboratories/uikit';
|
|
6
6
|
import { getFilterUiMetadata, getFilterUiTypeOptions, PlCheckbox, PlDropdown, PlNumberField, PlTextField } from '@milaboratories/uikit';
|
|
7
|
-
import type { SimplifiedUniversalPColumnEntry, SUniversalPColumnId } from '@platforma-sdk/model';
|
|
7
|
+
import type { FilterSpecLeaf, SimplifiedUniversalPColumnEntry, SUniversalPColumnId } from '@platforma-sdk/model';
|
|
8
8
|
|
|
9
|
-
import type {
|
|
9
|
+
import type { FilterSpecType } from '../types';
|
|
10
10
|
|
|
11
11
|
type ObjectEntries<T, K extends keyof T = keyof T> = [K, T[K]][];
|
|
12
12
|
|
|
@@ -7,6 +7,9 @@ export type Props = {
|
|
|
7
7
|
</script>
|
|
8
8
|
<script setup lang="ts">
|
|
9
9
|
import { isNil, randomInt } from '@milaboratories/helpers';
|
|
10
|
+
import type {
|
|
11
|
+
FilterSpecTypeFieldRecord,
|
|
12
|
+
} from '@milaboratories/uikit';
|
|
10
13
|
import {
|
|
11
14
|
getFilterUiMetadata,
|
|
12
15
|
PlBtnSecondary,
|
|
@@ -14,7 +17,7 @@ import {
|
|
|
14
17
|
PlElementList,
|
|
15
18
|
PlSidebarItem,
|
|
16
19
|
} from '@milaboratories/uikit';
|
|
17
|
-
import type { PObjectId, SimplifiedUniversalPColumnEntry, SUniversalPColumnId } from '@platforma-sdk/model';
|
|
20
|
+
import type { FilterSpecLeaf, PObjectId, SimplifiedUniversalPColumnEntry, SUniversalPColumnId } from '@platforma-sdk/model';
|
|
18
21
|
import { computed } from 'vue';
|
|
19
22
|
import type { Filter, FilterSpec } from '../types';
|
|
20
23
|
import { createDefaultFilterMetadata } from '../utils';
|
|
@@ -51,7 +54,8 @@ async function addFilterFromSelected() {
|
|
|
51
54
|
name: `Selected list (${shortReminder})`,
|
|
52
55
|
isExpanded: false,
|
|
53
56
|
type: 'or',
|
|
54
|
-
filters: values.map((value) => ({
|
|
57
|
+
filters: values.map((value, i) => ({
|
|
58
|
+
id: i,
|
|
55
59
|
type: 'patternEquals',
|
|
56
60
|
column: columnId as SUniversalPColumnId,
|
|
57
61
|
value,
|
|
@@ -67,8 +71,10 @@ const getColumnLabel = (filter: FilterSpec) => {
|
|
|
67
71
|
?? filter.type;
|
|
68
72
|
};
|
|
69
73
|
|
|
70
|
-
const getFormMetadata = (filter: FilterSpec) => {
|
|
71
|
-
return !isNil(filter.type)
|
|
74
|
+
const getFormMetadata = (filter: FilterSpec): FilterSpecTypeFieldRecord<FilterSpecLeaf> => {
|
|
75
|
+
return !isNil(filter.type)
|
|
76
|
+
? getFilterUiMetadata(filter.type).form as FilterSpecTypeFieldRecord<FilterSpecLeaf>
|
|
77
|
+
: createDefaultFilterMetadata();
|
|
72
78
|
};
|
|
73
79
|
|
|
74
80
|
const getFilterValues = (filter: FilterSpec) => {
|
|
@@ -104,7 +110,7 @@ const getFilterValues = (filter: FilterSpec) => {
|
|
|
104
110
|
|
|
105
111
|
<PlElementList
|
|
106
112
|
v-model:items="step.filter.filters"
|
|
107
|
-
:get-item-key="(item) => item.id
|
|
113
|
+
:get-item-key="(item) => item.id"
|
|
108
114
|
:is-expanded="(item) => Boolean(item.isExpanded)"
|
|
109
115
|
:on-expand="(item) => item.isExpanded = !Boolean(item.isExpanded)"
|
|
110
116
|
>
|
|
@@ -114,9 +120,9 @@ const getFilterValues = (filter: FilterSpec) => {
|
|
|
114
120
|
<template #item-content="{ item, index }">
|
|
115
121
|
<template v-if="item.type !== 'or' && item.type !== 'and'">
|
|
116
122
|
<DynamicForm
|
|
117
|
-
v-model="step.filter.filters[index]"
|
|
118
|
-
:form-metadata="getFormMetadata(item)"
|
|
123
|
+
v-model="(step.filter.filters[index] as FilterSpecLeaf)"
|
|
119
124
|
:columns="props.columns"
|
|
125
|
+
:form-metadata="getFormMetadata(item)"
|
|
120
126
|
/>
|
|
121
127
|
</template>
|
|
122
128
|
<template v-else>
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import type { FilterSpec as _FilterSpec, AnnotationSpecUi, FilterSpecLeaf, FilterSpecUi } from '@platforma-sdk/model';
|
|
2
2
|
export type { FilterSpecType } from '@platforma-sdk/model';
|
|
3
3
|
|
|
4
|
-
export type FilterSpec = _FilterSpec<FilterSpecLeaf, { id
|
|
4
|
+
export type FilterSpec = _FilterSpec<FilterSpecLeaf, { id: number; name?: string; isExpanded?: boolean }>;
|
|
5
5
|
|
|
6
|
-
export type Filter = FilterSpecUi<Extract<FilterSpec, { type: 'and' | 'or' }>> & {
|
|
7
|
-
id: number;
|
|
8
|
-
};
|
|
6
|
+
export type Filter = FilterSpecUi<Extract<FilterSpec, { type: 'and' | 'or' }>> & { id: number };
|
|
9
7
|
|
|
10
8
|
export type Annotation = AnnotationSpecUi<Filter>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FilterSpecTypeFieldRecord } from '@milaboratories/uikit';
|
|
2
|
-
import type {
|
|
2
|
+
import type { FilterSpecLeaf } from '@platforma-sdk/model';
|
|
3
3
|
|
|
4
|
-
export function createDefaultFilterMetadata<T extends
|
|
4
|
+
export function createDefaultFilterMetadata<T extends FilterSpecLeaf>(): FilterSpecTypeFieldRecord<T> {
|
|
5
5
|
return {
|
|
6
6
|
column: {
|
|
7
7
|
label: 'Column',
|