@platforma-sdk/ui-vue 1.45.35 → 1.45.37
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 +204 -235
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +13 -0
- package/dist/AgGridVue/useAgGridOptions.js +2 -3
- package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
- package/dist/components/BlockLayout.vue2.js +3 -3
- package/dist/components/BlockLayout.vue2.js.map +1 -1
- package/dist/components/BlockLoader.vue.js.map +1 -1
- package/dist/components/LoaderPage.vue.js +2 -2
- package/dist/components/LoaderPage.vue.js.map +1 -1
- package/dist/components/NotFound.vue.js +3 -3
- package/dist/components/NotFound.vue.js.map +1 -1
- package/dist/components/PlAdvancedFilter/OperandButton.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js +73 -73
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/SingleFilter.vue2.js +100 -100
- package/dist/components/PlAdvancedFilter/SingleFilter.vue2.js.map +1 -1
- package/dist/components/PlAgCellFile/PlAgCellFile.vue.js.map +1 -1
- package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js.map +1 -1
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js +6 -6
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js.map +1 -1
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js.map +1 -1
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js.map +1 -1
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js +22 -22
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js.map +1 -1
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js +3 -3
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +50 -50
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +7 -8
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +1 -1
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js +35 -35
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +16 -17
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +1 -1
- package/dist/components/PlAgRowNumHeader.vue.js +14 -15
- package/dist/components/PlAgRowNumHeader.vue.js.map +1 -1
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js +16 -16
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js.map +1 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +6 -6
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/DynamicForm.vue2.js +57 -57
- package/dist/components/PlAnnotations/components/DynamicForm.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +6 -6
- 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/PlAnnotationsModal.vue2.js.map +1 -1
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js +7 -7
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js.map +1 -1
- package/dist/components/PlBtnExportArchive/Item.vue2.js +23 -23
- package/dist/components/PlBtnExportArchive/Item.vue2.js.map +1 -1
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js.map +1 -1
- package/dist/components/PlBtnExportArchive/Summary.vue2.js +22 -22
- package/dist/components/PlBtnExportArchive/Summary.vue2.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableAddFilterV2.vue.js +9 -9
- package/dist/components/PlTableFilters/PlTableAddFilterV2.vue.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFilterEntryV2.vue.js +3 -3
- package/dist/components/PlTableFilters/PlTableFilterEntryV2.vue.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js +9 -9
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
- package/dist/components/ValueOrErrorsComponent.vue.js.map +1 -1
- package/dist/index.js +48 -50
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +0 -1
- package/dist/plugins/Monetization/EndOfPeriod.vue2.js +9 -9
- package/dist/plugins/Monetization/EndOfPeriod.vue2.js.map +1 -1
- package/dist/plugins/Monetization/LimitCard.vue2.js +40 -40
- package/dist/plugins/Monetization/LimitCard.vue2.js.map +1 -1
- package/dist/plugins/Monetization/MonetizationSidebar.vue.js +3 -3
- package/dist/plugins/Monetization/MonetizationSidebar.vue.js.map +1 -1
- package/dist/plugins/Monetization/RunStatus.vue2.js +12 -12
- package/dist/plugins/Monetization/RunStatus.vue2.js.map +1 -1
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js +22 -22
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js.map +1 -1
- package/package.json +7 -8
- package/src/lib.ts +0 -2
- package/dist/assets/multi-sequence-alignment.worker-Cm0gZp19.js +0 -6
- package/dist/assets/multi-sequence-alignment.worker-Cm0gZp19.js.map +0 -1
- package/dist/assets/phylogenetic-tree.worker-4CrExYEo.js +0 -5
- package/dist/assets/phylogenetic-tree.worker-4CrExYEo.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue.d.ts +0 -9
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue2.js +0 -122
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue3.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/Consensus.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Legend.vue.d.ts +0 -6
- package/dist/components/PlMultiSequenceAlignment/Legend.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/Legend.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Legend.vue2.js +0 -28
- package/dist/components/PlMultiSequenceAlignment/Legend.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Legend.vue3.js +0 -13
- package/dist/components/PlMultiSequenceAlignment/Legend.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.d.ts +0 -25
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js +0 -138
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js +0 -31
- package/dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.d.ts +0 -8
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue2.js +0 -77
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue3.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/PhylogeneticTree.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.d.ts +0 -71
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue2.js +0 -224
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue3.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.d.ts +0 -8
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue2.js +0 -127
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue3.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/SeqLogo.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.d.ts +0 -16
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.js +0 -10
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue2.js +0 -228
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue2.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue3.js +0 -19
- package/dist/components/PlMultiSequenceAlignment/Toolbar.vue3.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/cell-size.d.ts +0 -4
- package/dist/components/PlMultiSequenceAlignment/cell-size.js +0 -8
- package/dist/components/PlMultiSequenceAlignment/cell-size.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/chemical-properties.d.ts +0 -44
- package/dist/components/PlMultiSequenceAlignment/chemical-properties.js +0 -132
- package/dist/components/PlMultiSequenceAlignment/chemical-properties.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/data.d.ts +0 -61
- package/dist/components/PlMultiSequenceAlignment/data.js +0 -370
- package/dist/components/PlMultiSequenceAlignment/data.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/index.d.ts +0 -1
- package/dist/components/PlMultiSequenceAlignment/markup.d.ts +0 -16
- package/dist/components/PlMultiSequenceAlignment/markup.js +0 -84
- package/dist/components/PlMultiSequenceAlignment/markup.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/migrations.d.ts +0 -3
- package/dist/components/PlMultiSequenceAlignment/migrations.js +0 -24
- package/dist/components/PlMultiSequenceAlignment/migrations.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/multi-sequence-alignment.worker.d.ts +0 -6
- package/dist/components/PlMultiSequenceAlignment/phylogenetic-tree.worker.d.ts +0 -7
- package/dist/components/PlMultiSequenceAlignment/residue-counts.d.ts +0 -2
- package/dist/components/PlMultiSequenceAlignment/residue-counts.js +0 -13
- package/dist/components/PlMultiSequenceAlignment/residue-counts.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/settings.d.ts +0 -2
- package/dist/components/PlMultiSequenceAlignment/settings.js +0 -9
- package/dist/components/PlMultiSequenceAlignment/settings.js.map +0 -1
- package/dist/components/PlMultiSequenceAlignment/types.d.ts +0 -5
- package/dist/components/PlMultiSequenceAlignment/useMiPlots.d.ts +0 -4
- package/dist/components/PlMultiSequenceAlignment/useMiPlots.js +0 -19
- package/dist/components/PlMultiSequenceAlignment/useMiPlots.js.map +0 -1
- package/src/components/PlMultiSequenceAlignment/Consensus.vue +0 -165
- package/src/components/PlMultiSequenceAlignment/Legend.vue +0 -44
- package/src/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue +0 -299
- package/src/components/PlMultiSequenceAlignment/PhylogeneticTree.vue +0 -110
- package/src/components/PlMultiSequenceAlignment/PlMultiSequenceAlignment.vue +0 -314
- package/src/components/PlMultiSequenceAlignment/README.md +0 -216
- package/src/components/PlMultiSequenceAlignment/SeqLogo.vue +0 -166
- package/src/components/PlMultiSequenceAlignment/Toolbar.vue +0 -228
- package/src/components/PlMultiSequenceAlignment/cell-size.ts +0 -4
- package/src/components/PlMultiSequenceAlignment/chemical-properties.ts +0 -199
- package/src/components/PlMultiSequenceAlignment/data.ts +0 -661
- package/src/components/PlMultiSequenceAlignment/index.ts +0 -1
- package/src/components/PlMultiSequenceAlignment/markup.ts +0 -141
- package/src/components/PlMultiSequenceAlignment/migrations.ts +0 -46
- package/src/components/PlMultiSequenceAlignment/multi-sequence-alignment.worker.ts +0 -54
- package/src/components/PlMultiSequenceAlignment/phylogenetic-tree.worker.ts +0 -89
- package/src/components/PlMultiSequenceAlignment/residue-counts.ts +0 -124
- package/src/components/PlMultiSequenceAlignment/settings.ts +0 -7
- package/src/components/PlMultiSequenceAlignment/types.ts +0 -3
- package/src/components/PlMultiSequenceAlignment/useMiPlots.ts +0 -23
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { defineComponent as Z, mergeModels as _, useModel as ee, computed as p, createElementBlock as
|
|
2
|
-
import { PlIcon16 as
|
|
3
|
-
import { SUPPORTED_FILTER_TYPES as se, DEFAULT_FILTERS as
|
|
4
|
-
import { parseColumnId as
|
|
1
|
+
import { defineComponent as Z, mergeModels as _, useModel as ee, computed as p, createElementBlock as I, openBlock as n, Fragment as T, createElementVNode as v, createVNode as b, normalizeClass as r, createCommentVNode as f, createBlock as c, unref as a, toDisplayString as le, renderList as te } from "vue";
|
|
2
|
+
import { PlIcon16 as B, PlDropdown as N, PlAutocomplete as D, PlTextField as A, Slider as ue, PlToggleSwitch as oe, PlAutocompleteMulti as ae, PlNumberField as ne } from "@milaboratories/uikit";
|
|
3
|
+
import { SUPPORTED_FILTER_TYPES as se, DEFAULT_FILTERS as U, DEFAULT_FILTER_TYPE as re } from "./constants.js";
|
|
4
|
+
import { parseColumnId as M, isFilteredPColumn as R, stringifyColumnId as q } from "@platforma-sdk/model";
|
|
5
5
|
import ie from "./OperandButton.vue.js";
|
|
6
|
-
import { getNormalizedSpec as z, getFilterInfo as
|
|
6
|
+
import { getNormalizedSpec as z, getFilterInfo as C, isNumericFilter as L, isStringFilter as de } from "./utils.js";
|
|
7
7
|
const pe = ["title"], fe = /* @__PURE__ */ Z({
|
|
8
8
|
__name: "SingleFilter",
|
|
9
9
|
props: /* @__PURE__ */ _({
|
|
@@ -20,60 +20,60 @@ const pe = ["title"], fe = /* @__PURE__ */ Z({
|
|
|
20
20
|
modelModifiers: {}
|
|
21
21
|
}),
|
|
22
22
|
emits: ["update:modelValue"],
|
|
23
|
-
setup(
|
|
24
|
-
const
|
|
25
|
-
async function w(e, t,
|
|
26
|
-
return Promise.all(t.map((d) =>
|
|
23
|
+
setup(y) {
|
|
24
|
+
const g = y, l = ee(y, "modelValue");
|
|
25
|
+
async function w(e, t, o) {
|
|
26
|
+
return Promise.all(t.map((d) => g.getSuggestModel({ columnId: e, searchStr: d, axisIdx: o })));
|
|
27
27
|
}
|
|
28
|
-
async function h(e, t,
|
|
29
|
-
return
|
|
28
|
+
async function h(e, t, o) {
|
|
29
|
+
return g.getSuggestModel({ columnId: e, searchStr: t, axisIdx: o });
|
|
30
30
|
}
|
|
31
|
-
async function
|
|
32
|
-
return
|
|
31
|
+
async function $(e, t, o) {
|
|
32
|
+
return g.getSuggestOptions({ columnId: e, searchStr: t, axisIdx: o });
|
|
33
33
|
}
|
|
34
34
|
function W() {
|
|
35
|
-
const e =
|
|
36
|
-
|
|
37
|
-
...
|
|
35
|
+
const e = C(l.value.type);
|
|
36
|
+
F.value && e.supportedFor(F.value) && L(l.value) || (F.value && e.supportedFor(F.value) && de(l.value) ? l.value = {
|
|
37
|
+
...U[l.value.type],
|
|
38
38
|
value: l.value.value,
|
|
39
39
|
column: l.value.column
|
|
40
40
|
} : l.value = {
|
|
41
|
-
...
|
|
41
|
+
...U[l.value.type],
|
|
42
42
|
column: l.value.column
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
45
|
function j(e) {
|
|
46
46
|
if (!e)
|
|
47
47
|
return;
|
|
48
|
-
const t =
|
|
48
|
+
const t = g.columnOptions.find((i) => i.id === E(e));
|
|
49
49
|
if (!t)
|
|
50
50
|
return;
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
...
|
|
51
|
+
const o = C(l.value.type), d = z(t == null ? void 0 : t.spec);
|
|
52
|
+
o.supportedFor(d) ? l.value.column = e : l.value = {
|
|
53
|
+
...U[re],
|
|
54
54
|
column: e
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
-
const
|
|
58
|
-
const e =
|
|
59
|
-
return
|
|
57
|
+
const x = p(() => g.columnOptions.find((t) => t.id === E(l.value.column)) === void 0), X = p(() => {
|
|
58
|
+
const e = g.columnOptions.map((t) => ({ value: t.id, label: t.label ?? t }));
|
|
59
|
+
return x.value && e.unshift({ value: l.value.column, label: "Inconsistent value" }), e;
|
|
60
60
|
});
|
|
61
|
-
function
|
|
61
|
+
function E(e) {
|
|
62
62
|
try {
|
|
63
|
-
const t =
|
|
63
|
+
const t = M(e);
|
|
64
64
|
return R(t) ? q(t.source) : e;
|
|
65
65
|
} catch {
|
|
66
66
|
return e;
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
function Y(e) {
|
|
70
|
-
const t =
|
|
70
|
+
const t = E(e), o = g.columnOptions.find((i) => i.id === t), d = ((o == null ? void 0 : o.axesToBeFixed) ?? []).reduce((i, V) => (i[V.idx] = void 0, i), {});
|
|
71
71
|
try {
|
|
72
|
-
const i =
|
|
72
|
+
const i = M(e);
|
|
73
73
|
if (R(i))
|
|
74
74
|
return {
|
|
75
75
|
source: t,
|
|
76
|
-
axisFiltersByIndex: i.axisFilters.reduce((
|
|
76
|
+
axisFiltersByIndex: i.axisFilters.reduce((V, O) => (V[O[0]] = O[1], V), d)
|
|
77
77
|
};
|
|
78
78
|
} catch {
|
|
79
79
|
return { source: e, axisFiltersByIndex: d };
|
|
@@ -82,8 +82,8 @@ const pe = ["title"], fe = /* @__PURE__ */ Z({
|
|
|
82
82
|
}
|
|
83
83
|
function G(e) {
|
|
84
84
|
return Object.keys(e.axisFiltersByIndex).length === 0 ? e.source : q({
|
|
85
|
-
source:
|
|
86
|
-
axisFilters: Object.entries(e.axisFiltersByIndex).map(([t,
|
|
85
|
+
source: M(e.source),
|
|
86
|
+
axisFilters: Object.entries(e.axisFiltersByIndex).map(([t, o]) => [Number(t), o])
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
89
|
const s = p({
|
|
@@ -98,22 +98,22 @@ const pe = ["title"], fe = /* @__PURE__ */ Z({
|
|
|
98
98
|
axisFiltersByIndex: { ...s.value.axisFiltersByIndex, [e]: t }
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
|
-
const m = p(() =>
|
|
101
|
+
const m = p(() => g.columnOptions.find((e) => e.id === s.value.source)), F = p(() => {
|
|
102
102
|
var e;
|
|
103
103
|
return (e = m.value) != null && e.spec ? z(m.value.spec) : null;
|
|
104
104
|
}), P = p(() => {
|
|
105
105
|
var e;
|
|
106
|
-
return (e =
|
|
107
|
-
}),
|
|
106
|
+
return (e = F.value) == null ? void 0 : e.valueType;
|
|
107
|
+
}), k = p(() => {
|
|
108
108
|
var e;
|
|
109
|
-
return ((e = m.value) == null ? void 0 : e.error) ||
|
|
109
|
+
return ((e = m.value) == null ? void 0 : e.error) || x.value;
|
|
110
110
|
}), J = p(
|
|
111
111
|
() => [...se].filter(
|
|
112
|
-
(e) => l.value.type === e || (
|
|
113
|
-
).map((e) => ({ value: e, label:
|
|
112
|
+
(e) => l.value.type === e || (F.value ? C(e).supportedFor(F.value) : !0)
|
|
113
|
+
).map((e) => ({ value: e, label: C(e).label }))
|
|
114
114
|
), K = p(() => {
|
|
115
115
|
var e, t;
|
|
116
|
-
return l.value.type === "patternFuzzyContainSubsequence" ? ((e = m.value) == null ? void 0 : e.alphabet) === "nucleotide" ? [{ label: "N", value: "N" }] : ((t = m.value) == null ? void 0 : t.alphabet) === "aminoacid" ? [{ label: "X", value: "X" }] : [...new Set(l.value.value.split(""))].sort().map((
|
|
116
|
+
return l.value.type === "patternFuzzyContainSubsequence" ? ((e = m.value) == null ? void 0 : e.alphabet) === "nucleotide" ? [{ label: "N", value: "N" }] : ((t = m.value) == null ? void 0 : t.alphabet) === "aminoacid" ? [{ label: "X", value: "X" }] : [...new Set(l.value.value.split(""))].sort().map((o) => ({ value: o, label: o })) : [];
|
|
117
117
|
}), Q = p(() => {
|
|
118
118
|
if (l.value.type !== "patternMatchesRegularExpression")
|
|
119
119
|
return !1;
|
|
@@ -124,97 +124,97 @@ const pe = ["title"], fe = /* @__PURE__ */ Z({
|
|
|
124
124
|
}
|
|
125
125
|
});
|
|
126
126
|
return (e, t) => {
|
|
127
|
-
var
|
|
128
|
-
return n(),
|
|
127
|
+
var o, d, i, V, O;
|
|
128
|
+
return n(), I(T, null, [
|
|
129
129
|
v("div", {
|
|
130
130
|
class: r(e.$style.filterWrapper)
|
|
131
131
|
}, [
|
|
132
|
-
|
|
132
|
+
y.enableDnd ? (n(), I("div", {
|
|
133
133
|
key: 0,
|
|
134
|
-
class: r([e.$style.top, e.$style.columnChip, { [e.$style.error]:
|
|
134
|
+
class: r([e.$style.top, e.$style.columnChip, { [e.$style.error]: k.value }])
|
|
135
135
|
}, [
|
|
136
136
|
v("div", {
|
|
137
|
-
class: r([e.$style.typeIcon, { [e.$style.error]:
|
|
137
|
+
class: r([e.$style.typeIcon, { [e.$style.error]: k.value }])
|
|
138
138
|
}, [
|
|
139
|
-
|
|
139
|
+
k.value ? (n(), c(a(B), {
|
|
140
140
|
key: 0,
|
|
141
141
|
name: "warning"
|
|
142
|
-
})) : (n(), c(a(
|
|
142
|
+
})) : (n(), c(a(B), {
|
|
143
143
|
key: 1,
|
|
144
144
|
name: P.value === "String" || P.value === void 0 ? "cell-type-txt" : "cell-type-num"
|
|
145
145
|
}, null, 8, ["name"]))
|
|
146
146
|
], 2),
|
|
147
147
|
v("div", {
|
|
148
148
|
class: r(e.$style.titleWrapper),
|
|
149
|
-
title: ((
|
|
149
|
+
title: ((o = m.value) == null ? void 0 : o.label) ?? ""
|
|
150
150
|
}, [
|
|
151
151
|
v("div", {
|
|
152
152
|
class: r(e.$style.title)
|
|
153
|
-
}, le(
|
|
153
|
+
}, le(x.value ? "Inconsistent value" : ((d = m.value) == null ? void 0 : d.label) ?? l.value.column), 3)
|
|
154
154
|
], 10, pe),
|
|
155
155
|
v("div", {
|
|
156
156
|
class: r(e.$style.closeIcon),
|
|
157
|
-
onClick: t[0] || (t[0] = (
|
|
157
|
+
onClick: t[0] || (t[0] = (u) => y.onDelete(l.value.column))
|
|
158
158
|
}, [
|
|
159
|
-
|
|
159
|
+
b(a(B), { name: "close" })
|
|
160
160
|
], 2)
|
|
161
|
-
], 2)) : (n(),
|
|
161
|
+
], 2)) : (n(), I("div", {
|
|
162
162
|
key: 1,
|
|
163
163
|
class: r(e.$style.top)
|
|
164
164
|
}, [
|
|
165
|
-
|
|
165
|
+
b(a(N), {
|
|
166
166
|
modelValue: s.value.source,
|
|
167
167
|
"onUpdate:modelValue": [
|
|
168
|
-
t[1] || (t[1] = (
|
|
168
|
+
t[1] || (t[1] = (u) => s.value.source = u),
|
|
169
169
|
j
|
|
170
170
|
],
|
|
171
|
-
errorStatus:
|
|
171
|
+
errorStatus: k.value,
|
|
172
172
|
options: X.value,
|
|
173
173
|
style: { width: "100%" },
|
|
174
174
|
"group-position": "top-left"
|
|
175
175
|
}, null, 8, ["modelValue", "errorStatus", "options"]),
|
|
176
176
|
v("div", {
|
|
177
177
|
class: r(e.$style.closeButton),
|
|
178
|
-
onClick: t[2] || (t[2] = (
|
|
178
|
+
onClick: t[2] || (t[2] = (u) => y.onDelete(l.value.column))
|
|
179
179
|
}, [
|
|
180
|
-
|
|
180
|
+
b(a(B), { name: "close" })
|
|
181
181
|
], 2)
|
|
182
182
|
], 2)),
|
|
183
|
-
(
|
|
183
|
+
(V = (i = m.value) == null ? void 0 : i.axesToBeFixed) != null && V.length ? (n(), I("div", {
|
|
184
184
|
key: 2,
|
|
185
185
|
class: r(e.$style.fixedAxesBlock)
|
|
186
186
|
}, [
|
|
187
|
-
(n(!0),
|
|
188
|
-
key:
|
|
189
|
-
modelValue: s.value.axisFiltersByIndex[
|
|
190
|
-
"onUpdate:modelValue": [(
|
|
191
|
-
label:
|
|
192
|
-
"options-search": (
|
|
193
|
-
"model-search": (
|
|
194
|
-
disabled:
|
|
187
|
+
(n(!0), I(T, null, te((O = m.value) == null ? void 0 : O.axesToBeFixed, (u) => (n(), c(a(D), {
|
|
188
|
+
key: u.idx,
|
|
189
|
+
modelValue: s.value.axisFiltersByIndex[u.idx],
|
|
190
|
+
"onUpdate:modelValue": [(S) => s.value.axisFiltersByIndex[u.idx] = S, (S) => H(u.idx, S)],
|
|
191
|
+
label: u.label,
|
|
192
|
+
"options-search": (S) => $(s.value.source, S, u.idx),
|
|
193
|
+
"model-search": (S) => h(s.value.source, S, u.idx),
|
|
194
|
+
disabled: x.value,
|
|
195
195
|
clearable: !0
|
|
196
196
|
}, null, 8, ["modelValue", "onUpdate:modelValue", "label", "options-search", "model-search", "disabled"]))), 128))
|
|
197
|
-
], 2)) :
|
|
197
|
+
], 2)) : f("", !0),
|
|
198
198
|
v("div", {
|
|
199
199
|
class: r(l.value.type === "isNA" || l.value.type === "isNotNA" ? e.$style.bottom : e.$style.middle)
|
|
200
200
|
}, [
|
|
201
|
-
|
|
201
|
+
b(a(N), {
|
|
202
202
|
modelValue: l.value.type,
|
|
203
203
|
"onUpdate:modelValue": [
|
|
204
|
-
t[3] || (t[3] = (
|
|
204
|
+
t[3] || (t[3] = (u) => l.value.type = u),
|
|
205
205
|
W
|
|
206
206
|
],
|
|
207
207
|
options: J.value,
|
|
208
208
|
"group-position": l.value.type === "isNA" || l.value.type === "isNotNA" ? "bottom" : "middle"
|
|
209
209
|
}, null, 8, ["modelValue", "options", "group-position"])
|
|
210
210
|
], 2),
|
|
211
|
-
l.value.type === "patternFuzzyContainSubsequence" ? (n(),
|
|
211
|
+
l.value.type === "patternFuzzyContainSubsequence" ? (n(), I(T, { key: 3 }, [
|
|
212
212
|
v("div", {
|
|
213
213
|
class: r(e.$style.middle)
|
|
214
214
|
}, [
|
|
215
|
-
|
|
215
|
+
b(a(A), {
|
|
216
216
|
modelValue: l.value.value,
|
|
217
|
-
"onUpdate:modelValue": t[4] || (t[4] = (
|
|
217
|
+
"onUpdate:modelValue": t[4] || (t[4] = (u) => l.value.value = u),
|
|
218
218
|
placeholder: "Substring",
|
|
219
219
|
"group-position": "middle"
|
|
220
220
|
}, null, 8, ["modelValue"])
|
|
@@ -222,79 +222,79 @@ const pe = ["title"], fe = /* @__PURE__ */ Z({
|
|
|
222
222
|
v("div", {
|
|
223
223
|
class: r(e.$style.innerSection)
|
|
224
224
|
}, [
|
|
225
|
-
|
|
225
|
+
b(a(ue), {
|
|
226
226
|
modelValue: l.value.maxEdits,
|
|
227
|
-
"onUpdate:modelValue": t[5] || (t[5] = (
|
|
227
|
+
"onUpdate:modelValue": t[5] || (t[5] = (u) => l.value.maxEdits = u),
|
|
228
228
|
max: 5,
|
|
229
229
|
breakpoints: "",
|
|
230
230
|
label: "Maximum number of substitutions and indels"
|
|
231
231
|
}, null, 8, ["modelValue"]),
|
|
232
|
-
|
|
232
|
+
b(a(oe), {
|
|
233
233
|
modelValue: l.value.substitutionsOnly,
|
|
234
|
-
"onUpdate:modelValue": t[6] || (t[6] = (
|
|
234
|
+
"onUpdate:modelValue": t[6] || (t[6] = (u) => l.value.substitutionsOnly = u),
|
|
235
235
|
label: "Substitutions only"
|
|
236
236
|
}, null, 8, ["modelValue"])
|
|
237
237
|
], 2)
|
|
238
|
-
], 64)) :
|
|
238
|
+
], 64)) : f("", !0),
|
|
239
239
|
v("div", {
|
|
240
240
|
class: r(e.$style.bottom)
|
|
241
241
|
}, [
|
|
242
242
|
l.value.type === "patternEquals" || l.value.type === "patternNotEquals" ? (n(), c(a(D), {
|
|
243
243
|
key: 0,
|
|
244
244
|
modelValue: l.value.value,
|
|
245
|
-
"onUpdate:modelValue": t[7] || (t[7] = (
|
|
246
|
-
"options-search": (
|
|
247
|
-
"model-search": (
|
|
248
|
-
disabled:
|
|
245
|
+
"onUpdate:modelValue": t[7] || (t[7] = (u) => l.value.value = u),
|
|
246
|
+
"options-search": (u) => $(s.value.source, u),
|
|
247
|
+
"model-search": (u) => h(s.value.source, u),
|
|
248
|
+
disabled: x.value,
|
|
249
249
|
clearable: !0,
|
|
250
250
|
"group-position": "bottom"
|
|
251
|
-
}, null, 8, ["modelValue", "options-search", "model-search", "disabled"])) :
|
|
251
|
+
}, null, 8, ["modelValue", "options-search", "model-search", "disabled"])) : f("", !0),
|
|
252
252
|
l.value.type === "inSet" || l.value.type === "notInSet" ? (n(), c(a(ae), {
|
|
253
253
|
key: 1,
|
|
254
254
|
modelValue: l.value.value,
|
|
255
|
-
"onUpdate:modelValue": t[8] || (t[8] = (
|
|
256
|
-
"options-search": (
|
|
257
|
-
"model-search": (
|
|
258
|
-
disabled:
|
|
255
|
+
"onUpdate:modelValue": t[8] || (t[8] = (u) => l.value.value = u),
|
|
256
|
+
"options-search": (u) => $(s.value.source, u),
|
|
257
|
+
"model-search": (u) => w(s.value.source, u),
|
|
258
|
+
disabled: x.value,
|
|
259
259
|
"group-position": "bottom"
|
|
260
|
-
}, null, 8, ["modelValue", "options-search", "model-search", "disabled"])) :
|
|
260
|
+
}, null, 8, ["modelValue", "options-search", "model-search", "disabled"])) : f("", !0),
|
|
261
261
|
a(L)(l.value) ? (n(), c(a(ne), {
|
|
262
262
|
key: 2,
|
|
263
263
|
modelValue: l.value.x,
|
|
264
|
-
"onUpdate:modelValue": t[9] || (t[9] = (
|
|
264
|
+
"onUpdate:modelValue": t[9] || (t[9] = (u) => l.value.x = u),
|
|
265
265
|
"group-position": "bottom"
|
|
266
|
-
}, null, 8, ["modelValue"])) :
|
|
267
|
-
l.value.type === "patternContainSubsequence" || l.value.type === "patternNotContainSubsequence" ? (n(), c(a(
|
|
266
|
+
}, null, 8, ["modelValue"])) : f("", !0),
|
|
267
|
+
l.value.type === "patternContainSubsequence" || l.value.type === "patternNotContainSubsequence" ? (n(), c(a(A), {
|
|
268
268
|
key: 3,
|
|
269
269
|
modelValue: l.value.value,
|
|
270
|
-
"onUpdate:modelValue": t[10] || (t[10] = (
|
|
270
|
+
"onUpdate:modelValue": t[10] || (t[10] = (u) => l.value.value = u),
|
|
271
271
|
placeholder: "Substring",
|
|
272
272
|
"group-position": "bottom"
|
|
273
|
-
}, null, 8, ["modelValue"])) :
|
|
274
|
-
l.value.type === "patternMatchesRegularExpression" ? (n(), c(a(
|
|
273
|
+
}, null, 8, ["modelValue"])) : f("", !0),
|
|
274
|
+
l.value.type === "patternMatchesRegularExpression" ? (n(), c(a(A), {
|
|
275
275
|
key: 4,
|
|
276
276
|
modelValue: l.value.value,
|
|
277
|
-
"onUpdate:modelValue": t[11] || (t[11] = (
|
|
277
|
+
"onUpdate:modelValue": t[11] || (t[11] = (u) => l.value.value = u),
|
|
278
278
|
error: Q.value ? "Regular expression is not valid" : void 0,
|
|
279
279
|
placeholder: "Regular expression",
|
|
280
280
|
"group-position": "bottom"
|
|
281
|
-
}, null, 8, ["modelValue", "error"])) :
|
|
282
|
-
l.value.type === "patternFuzzyContainSubsequence" ? (n(), c(a(
|
|
281
|
+
}, null, 8, ["modelValue", "error"])) : f("", !0),
|
|
282
|
+
l.value.type === "patternFuzzyContainSubsequence" ? (n(), c(a(N), {
|
|
283
283
|
key: 5,
|
|
284
284
|
modelValue: l.value.wildcard,
|
|
285
|
-
"onUpdate:modelValue": t[12] || (t[12] = (
|
|
285
|
+
"onUpdate:modelValue": t[12] || (t[12] = (u) => l.value.wildcard = u),
|
|
286
286
|
clearable: "",
|
|
287
287
|
placeholder: "Wildcard value",
|
|
288
288
|
options: K.value,
|
|
289
289
|
"group-position": "bottom"
|
|
290
|
-
}, null, 8, ["modelValue", "options"])) :
|
|
290
|
+
}, null, 8, ["modelValue", "options"])) : f("", !0)
|
|
291
291
|
], 2)
|
|
292
292
|
], 2),
|
|
293
|
-
|
|
293
|
+
b(ie, {
|
|
294
294
|
class: r(e.$style.buttonWrapper),
|
|
295
|
-
active:
|
|
296
|
-
disabled:
|
|
297
|
-
"on-select":
|
|
295
|
+
active: y.operand,
|
|
296
|
+
disabled: y.isLast,
|
|
297
|
+
"on-select": y.onChangeOperand
|
|
298
298
|
}, null, 8, ["class", "active", "disabled", "on-select"])
|
|
299
299
|
], 64);
|
|
300
300
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleFilter.vue2.js","sources":["../../../src/components/PlAdvancedFilter/SingleFilter.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PlAdvancedFilterColumnId, Filter, Operand, SourceOptionInfo } from './types';\nimport { PlIcon16, PlDropdown, PlAutocomplete, PlAutocompleteMulti, PlTextField, PlNumberField, Slider, PlToggleSwitch } from '@milaboratories/uikit';\nimport { computed } from 'vue';\nimport { SUPPORTED_FILTER_TYPES, DEFAULT_FILTER_TYPE, DEFAULT_FILTERS } from './constants';\nimport type { AnchoredPColumnId, AxisFilterByIdx, AxisFilterValue, SUniversalPColumnId } from '@platforma-sdk/model';\nimport { isFilteredPColumn, parseColumnId, stringifyColumnId, type ListOptionBase } from '@platforma-sdk/model';\nimport OperandButton from './OperandButton.vue';\nimport { getFilterInfo, getNormalizedSpec, isNumericFilter, isStringFilter } from './utils';\n\nconst props = defineProps<{\n operand: Operand;\n columnOptions: SourceOptionInfo[];\n enableDnd: boolean;\n isLast: boolean;\n getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => (Promise<ListOptionBase<string | number>[]>) |\n ((params: { columnId: SUniversalPColumnId; searchStr: string; axisIdx?: number }) => ListOptionBase<string | number>[]);\n getSuggestModel: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => (Promise<ListOptionBase<string | number>>) |\n ((params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => ListOptionBase<string | number>);\n onDelete: (columnId: PlAdvancedFilterColumnId) => void;\n onChangeOperand: (op: Operand) => void;\n}>();\n\nconst filter = defineModel<Filter>({ required: true });\n\nasync function getSuggestModelMultiFn(id: PlAdvancedFilterColumnId, v: string[], axisIdx?: number): Promise<ListOptionBase<string>[]> {\n return Promise.all(v.map((v) => props.getSuggestModel({ columnId: id, searchStr: v, axisIdx }) as Promise<ListOptionBase<string>>));\n}\nasync function getSuggestModelSingleFn(id: PlAdvancedFilterColumnId, v: string, axisIdx?: number): Promise<ListOptionBase<string>> {\n return props.getSuggestModel({ columnId: id, searchStr: v, axisIdx }) as Promise<ListOptionBase<string>>;\n}\nasync function getSuggestOptionsFn(id: PlAdvancedFilterColumnId, str: string, axisIdx?: number): Promise<ListOptionBase<string>[]> {\n return props.getSuggestOptions({ columnId: id, searchStr: str, axisIdx }) as Promise<ListOptionBase<string>[]>;\n}\n\nfunction changeFilterType() {\n const nextFilterInfo = getFilterInfo(filter.value.type);\n if (currentSpec.value && nextFilterInfo.supportedFor(currentSpec.value) && isNumericFilter(filter.value)) {\n // no extra changes, previous filter is compatible with new filter type\n return;\n } else if (currentSpec.value && nextFilterInfo.supportedFor(currentSpec.value) && isStringFilter(filter.value)) {\n // erase extra settings for string filter types, save only value and column (for example regex)\n filter.value = {\n ...DEFAULT_FILTERS[filter.value.type],\n value: filter.value.value,\n column: filter.value.column,\n } as Filter;\n } else {\n filter.value = {\n ...DEFAULT_FILTERS[filter.value.type],\n column: filter.value.column,\n };\n }\n}\n\nfunction changeSourceId(newSourceId?: PlAdvancedFilterColumnId) {\n if (!newSourceId) {\n return;\n }\n const newSourceInfo = props.columnOptions.find((v) => v.id === getSourceId(newSourceId));\n if (!newSourceInfo) {\n return;\n }\n const filterInfo = getFilterInfo(filter.value.type);\n const newSourceSpec = getNormalizedSpec(newSourceInfo?.spec);\n if (filterInfo.supportedFor(newSourceSpec)) { // don't do anything except update source id\n filter.value.column = newSourceId;\n } else { // reset to default filter which fits to any column\n filter.value = {\n ...DEFAULT_FILTERS[DEFAULT_FILTER_TYPE],\n column: newSourceId,\n };\n }\n}\n\nconst inconsistentSourceSelected = computed(() => {\n const selectedOption = props.columnOptions.find((op) => op.id === getSourceId(filter.value.column));\n return selectedOption === undefined;\n});\nconst sourceOptions = computed(() => {\n const options = props.columnOptions.map((v) => ({ value: v.id, label: v.label ?? v }));\n if (inconsistentSourceSelected.value) {\n options.unshift({ value: filter.value.column, label: 'Inconsistent value' });\n }\n return options;\n});\n\nfunction getSourceId(column: PlAdvancedFilterColumnId): PlAdvancedFilterColumnId {\n try {\n const parsedColumnId = parseColumnId(column as SUniversalPColumnId);\n if (isFilteredPColumn(parsedColumnId)) {\n return stringifyColumnId(parsedColumnId.source);\n } else {\n return column;\n }\n } catch {\n return column;\n }\n}\n\n// similar to FilteredPColumnId but source is stringified and axis filters can be undefined\ntype ColumnAsSourceAndFixedAxes = { source: PlAdvancedFilterColumnId; axisFiltersByIndex: Record<number, AxisFilterValue | undefined> };\nfunction getColumnAsSourceAndFixedAxes(column: PlAdvancedFilterColumnId): ColumnAsSourceAndFixedAxes {\n const sourceId = getSourceId(column);\n const option = props.columnOptions.find((op) => op.id === sourceId);\n const axesToBeFixed = (option?.axesToBeFixed ?? []).reduce((res, item) => {\n res[item.idx] = undefined;\n return res;\n }, {} as Record<number, AxisFilterValue | undefined>);\n try {\n const parsedColumnId = parseColumnId(column as SUniversalPColumnId);\n if (isFilteredPColumn(parsedColumnId)) {\n return {\n source: sourceId,\n axisFiltersByIndex: parsedColumnId.axisFilters.reduce((res, item) => {\n res[item[0]] = item[1];\n return res;\n }, axesToBeFixed),\n };\n }\n } catch {\n return { source: column, axisFiltersByIndex: axesToBeFixed };\n }\n return { source: column, axisFiltersByIndex: axesToBeFixed };\n}\n\nfunction stringifyColumn(value: ColumnAsSourceAndFixedAxes): PlAdvancedFilterColumnId {\n if (Object.keys(value.axisFiltersByIndex).length === 0) {\n return value.source;\n }\n return stringifyColumnId({\n source: parseColumnId(value.source as SUniversalPColumnId) as AnchoredPColumnId,\n axisFilters: Object.entries(value.axisFiltersByIndex).map(([idx, value]) => [Number(idx), value] as AxisFilterByIdx),\n });\n}\n\nconst columnAsSourceAndFixedAxes = computed({\n get: () => {\n return getColumnAsSourceAndFixedAxes(filter.value.column);\n },\n set: (value) => {\n filter.value.column = stringifyColumn(value);\n },\n});\nfunction updateAxisFilterValue(idx: number, value: AxisFilterValue | undefined) {\n columnAsSourceAndFixedAxes.value = {\n ...columnAsSourceAndFixedAxes.value,\n axisFiltersByIndex: { ...columnAsSourceAndFixedAxes.value.axisFiltersByIndex, [idx]: value } };\n}\n\nconst currentOption = computed(() => props.columnOptions.find((op) => op.id === columnAsSourceAndFixedAxes.value.source));\nconst currentSpec = computed(() => currentOption.value?.spec ? getNormalizedSpec(currentOption.value.spec) : null);\nconst currentType = computed(() => currentSpec.value?.valueType);\nconst currentError = computed(() => currentOption.value?.error || inconsistentSourceSelected.value);\n\nconst filterTypesOptions = computed(() => [...SUPPORTED_FILTER_TYPES].filter((v) =>\n filter.value.type === v || (currentSpec.value ? getFilterInfo(v).supportedFor(currentSpec.value) : true),\n).map((v) => ({ value: v, label: getFilterInfo(v).label })),\n);\n\nconst wildcardOptions = computed(() => {\n if (filter.value.type === 'patternFuzzyContainSubsequence') {\n if (currentOption.value?.alphabet === 'nucleotide') {\n return [{ label: 'N', value: 'N' }];\n }\n if (currentOption.value?.alphabet === 'aminoacid') {\n return [{ label: 'X', value: 'X' }];\n }\n return [...new Set(filter.value.value.split(''))].sort().map((v) => ({ value: v, label: v }));\n }\n return [];\n});\n\nconst stringMatchesError = computed(() => {\n if (filter.value.type !== 'patternMatchesRegularExpression') {\n return false;\n }\n try {\n new RegExp(filter.value.value);\n return false;\n } catch {\n return true;\n }\n});\n\n</script>\n<template>\n <div :class=\"$style.filterWrapper\">\n <!-- top element - column selector / column label - for all filter types-->\n <div v-if=\"enableDnd\" :class=\"[$style.top, $style.columnChip, {[$style.error]: currentError}]\">\n <div :class=\"[$style.typeIcon, {[$style.error]: currentError}]\">\n <PlIcon16 v-if=\"currentError\" name=\"warning\"/>\n <PlIcon16 v-else :name=\"currentType === 'String' || currentType === undefined ? 'cell-type-txt' : 'cell-type-num'\"/>\n </div>\n <div :class=\"$style.titleWrapper\" :title=\"currentOption?.label ?? ''\">\n <div :class=\"$style.title\">\n {{ inconsistentSourceSelected ? 'Inconsistent value' : currentOption?.label ?? filter.column }}\n </div>\n </div>\n <div :class=\"$style.closeIcon\" @click=\"onDelete(filter.column)\">\n <PlIcon16 name=\"close\"/>\n </div>\n </div>\n <div v-else :class=\"$style.top\" >\n <PlDropdown\n v-model=\"columnAsSourceAndFixedAxes.source\"\n :errorStatus=\"currentError\"\n :options=\"sourceOptions\"\n :style=\"{width: '100%'}\"\n group-position=\"top-left\"\n @update:model-value=\"changeSourceId\"\n />\n <div :class=\"$style.closeButton\" @click=\"onDelete(filter.column)\">\n <PlIcon16 name=\"close\"/>\n </div>\n </div>\n\n <div v-if=\"currentOption?.axesToBeFixed?.length\" :class=\"$style.fixedAxesBlock\">\n <template v-for=\"value in currentOption?.axesToBeFixed\" :key=\"value.idx\">\n <PlAutocomplete\n v-model=\"columnAsSourceAndFixedAxes.axisFiltersByIndex[value.idx]\"\n :label=\"value.label\"\n :options-search=\"(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str, value.idx)\"\n :model-search=\"(v) => getSuggestModelSingleFn(columnAsSourceAndFixedAxes.source, v as string, value.idx)\"\n :disabled=\"inconsistentSourceSelected\"\n :clearable=\"true\"\n @update:model-value=\"(v) => updateAxisFilterValue(value.idx, v)\"\n />\n </template>\n </div>\n\n <!-- middle - filter type selector - for all filter types -->\n <div :class=\"filter.type === 'isNA' || filter.type === 'isNotNA' ? $style.bottom : $style.middle\">\n <PlDropdown\n v-model=\"filter.type\"\n :options=\"filterTypesOptions\"\n :group-position=\"filter.type === 'isNA' || filter.type === 'isNotNA' ? 'bottom' : 'middle'\"\n @update:model-value=\"changeFilterType\"\n />\n </div>\n\n <!-- middle - for fuzzy contains filter -->\n <template v-if=\"filter.type === 'patternFuzzyContainSubsequence'\">\n <div :class=\"$style.middle\">\n <PlTextField\n v-model=\"filter.value\"\n placeholder=\"Substring\"\n group-position=\"middle\"\n />\n </div>\n <div :class=\"$style.innerSection\">\n <Slider\n v-model=\"filter.maxEdits\"\n :max=\"5\"\n breakpoints label=\"Maximum number of substitutions and indels\"\n />\n <PlToggleSwitch\n v-model=\"filter.substitutionsOnly\"\n label=\"Substitutions only\"\n />\n </div>\n </template>\n\n <!-- bottom element - individual settings for every filter type -->\n <div :class=\"$style.bottom\">\n <template v-if=\"filter.type === 'patternEquals' || filter.type === 'patternNotEquals'\" >\n <PlAutocomplete\n v-model=\"filter.value\"\n :options-search=\"(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str)\"\n :model-search=\"(v) => getSuggestModelSingleFn(columnAsSourceAndFixedAxes.source, v as string)\"\n :disabled=\"inconsistentSourceSelected\"\n :clearable=\"true\"\n group-position=\"bottom\"\n />\n </template>\n <template v-if=\"filter.type === 'inSet' || filter.type === 'notInSet'\" >\n <PlAutocompleteMulti\n v-model=\"filter.value\"\n :options-search=\"(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str)\"\n :model-search=\"(v) => getSuggestModelMultiFn(columnAsSourceAndFixedAxes.source, v as string[])\"\n :disabled=\"inconsistentSourceSelected\"\n group-position=\"bottom\"\n />\n </template>\n <PlNumberField\n v-if=\"isNumericFilter(filter)\"\n v-model=\"filter.x\"\n group-position=\"bottom\"\n />\n <PlTextField\n v-if=\"filter.type === 'patternContainSubsequence' || filter.type === 'patternNotContainSubsequence'\"\n v-model=\"filter.value\"\n placeholder=\"Substring\"\n group-position=\"bottom\"\n />\n <PlTextField\n v-if=\"filter.type === 'patternMatchesRegularExpression'\"\n v-model=\"filter.value\"\n :error=\"stringMatchesError ? 'Regular expression is not valid' : undefined\"\n placeholder=\"Regular expression\"\n group-position=\"bottom\"\n />\n <PlDropdown\n v-if=\"filter.type === 'patternFuzzyContainSubsequence'\"\n v-model=\"filter.wildcard\"\n clearable\n placeholder=\"Wildcard value\"\n :options=\"wildcardOptions\"\n group-position=\"bottom\"\n />\n </div>\n </div>\n <OperandButton\n :class=\"$style.buttonWrapper\"\n :active=\"operand\"\n :disabled=\"isLast\"\n :on-select=\"onChangeOperand\"\n />\n</template>\n\n<style module>\n.filterWrapper {\n position: relative;\n display: flex;\n flex-direction: column;\n margin-bottom: 8px;\n width: 100%;\n cursor: default;\n}\n\n.typeIcon {\n display: inline-flex;\n margin-right: 8px;\n}\n\n.typeIcon.error {\n --icon-color: var(--txt-error);\n}\n\n.closeIcon {\n display: inline-flex;\n margin-left: 12px;\n cursor: pointer;\n}\n\n.titleWrapper {\n flex-grow: 1;\n overflow: hidden;\n}\n.title {\n overflow: hidden;\n color: var(--txt-01);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.columnChip {\n width: 100%;\n display: flex;\n padding: 10px 12px;\n align-items: center;\n border-radius: 6px;\n border: 1px solid var(--txt-01);\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n\n &.error {\n border-color: var(--txt-error);\n }\n}\n\n.innerSection {\n border: 1px solid var(--txt-01);\n border-top: none;\n padding: 16px 12px;\n}\n\n.closeButton {\n border: 1px solid var(--txt-01);\n border-top-right-radius: 6px;\n border-left: none;\n width: 40px;\n height: 40px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n cursor: pointer;\n}\n\n.top {\n position: relative;\n display: flex;\n width: 100%;\n z-index: 1;\n background: #fff;\n}\n\n.fixedAxesBlock {\n position: relative;\n display: flex;\n flex-direction: column;\n padding: 12px 8px;\n gap: 12px;\n border-left: 1px solid var(--txt-01);\n border-right: 1px solid var(--txt-01);\n}\n\n.fixedAxesBlock > * {\n background: #fff;\n}\n\n.middle, .bottom {\n position: relative;\n margin-top: -1px;\n background: #fff;\n}\n\n.buttonWrapper {\n margin-bottom: 8px;\n}\n</style>\n"],"names":["props","__props","filter","_useModel","getSuggestModelMultiFn","id","v","axisIdx","getSuggestModelSingleFn","getSuggestOptionsFn","str","changeFilterType","nextFilterInfo","getFilterInfo","currentSpec","isNumericFilter","isStringFilter","DEFAULT_FILTERS","changeSourceId","newSourceId","newSourceInfo","getSourceId","filterInfo","newSourceSpec","getNormalizedSpec","DEFAULT_FILTER_TYPE","inconsistentSourceSelected","computed","op","sourceOptions","options","column","parsedColumnId","parseColumnId","isFilteredPColumn","stringifyColumnId","getColumnAsSourceAndFixedAxes","sourceId","option","axesToBeFixed","res","item","stringifyColumn","value","idx","columnAsSourceAndFixedAxes","updateAxisFilterValue","currentOption","_a","currentType","currentError","filterTypesOptions","SUPPORTED_FILTER_TYPES","wildcardOptions","_b","stringMatchesError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SingleFilter.vue2.js","sources":["../../../src/components/PlAdvancedFilter/SingleFilter.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PlAdvancedFilterColumnId, Filter, Operand, SourceOptionInfo } from './types';\nimport { PlIcon16, PlDropdown, PlAutocomplete, PlAutocompleteMulti, PlTextField, PlNumberField, Slider, PlToggleSwitch } from '@milaboratories/uikit';\nimport { computed } from 'vue';\nimport { SUPPORTED_FILTER_TYPES, DEFAULT_FILTER_TYPE, DEFAULT_FILTERS } from './constants';\nimport type { AnchoredPColumnId, AxisFilterByIdx, AxisFilterValue, SUniversalPColumnId } from '@platforma-sdk/model';\nimport { isFilteredPColumn, parseColumnId, stringifyColumnId, type ListOptionBase } from '@platforma-sdk/model';\nimport OperandButton from './OperandButton.vue';\nimport { getFilterInfo, getNormalizedSpec, isNumericFilter, isStringFilter } from './utils';\n\nconst props = defineProps<{\n operand: Operand;\n columnOptions: SourceOptionInfo[];\n enableDnd: boolean;\n isLast: boolean;\n getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => (Promise<ListOptionBase<string | number>[]>) |\n ((params: { columnId: SUniversalPColumnId; searchStr: string; axisIdx?: number }) => ListOptionBase<string | number>[]);\n getSuggestModel: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => (Promise<ListOptionBase<string | number>>) |\n ((params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => ListOptionBase<string | number>);\n onDelete: (columnId: PlAdvancedFilterColumnId) => void;\n onChangeOperand: (op: Operand) => void;\n}>();\n\nconst filter = defineModel<Filter>({ required: true });\n\nasync function getSuggestModelMultiFn(id: PlAdvancedFilterColumnId, v: string[], axisIdx?: number): Promise<ListOptionBase<string>[]> {\n return Promise.all(v.map((v) => props.getSuggestModel({ columnId: id, searchStr: v, axisIdx }) as Promise<ListOptionBase<string>>));\n}\nasync function getSuggestModelSingleFn(id: PlAdvancedFilterColumnId, v: string, axisIdx?: number): Promise<ListOptionBase<string>> {\n return props.getSuggestModel({ columnId: id, searchStr: v, axisIdx }) as Promise<ListOptionBase<string>>;\n}\nasync function getSuggestOptionsFn(id: PlAdvancedFilterColumnId, str: string, axisIdx?: number): Promise<ListOptionBase<string>[]> {\n return props.getSuggestOptions({ columnId: id, searchStr: str, axisIdx }) as Promise<ListOptionBase<string>[]>;\n}\n\nfunction changeFilterType() {\n const nextFilterInfo = getFilterInfo(filter.value.type);\n if (currentSpec.value && nextFilterInfo.supportedFor(currentSpec.value) && isNumericFilter(filter.value)) {\n // no extra changes, previous filter is compatible with new filter type\n return;\n } else if (currentSpec.value && nextFilterInfo.supportedFor(currentSpec.value) && isStringFilter(filter.value)) {\n // erase extra settings for string filter types, save only value and column (for example regex)\n filter.value = {\n ...DEFAULT_FILTERS[filter.value.type],\n value: filter.value.value,\n column: filter.value.column,\n } as Filter;\n } else {\n filter.value = {\n ...DEFAULT_FILTERS[filter.value.type],\n column: filter.value.column,\n };\n }\n}\n\nfunction changeSourceId(newSourceId?: PlAdvancedFilterColumnId) {\n if (!newSourceId) {\n return;\n }\n const newSourceInfo = props.columnOptions.find((v) => v.id === getSourceId(newSourceId));\n if (!newSourceInfo) {\n return;\n }\n const filterInfo = getFilterInfo(filter.value.type);\n const newSourceSpec = getNormalizedSpec(newSourceInfo?.spec);\n if (filterInfo.supportedFor(newSourceSpec)) { // don't do anything except update source id\n filter.value.column = newSourceId;\n } else { // reset to default filter which fits to any column\n filter.value = {\n ...DEFAULT_FILTERS[DEFAULT_FILTER_TYPE],\n column: newSourceId,\n };\n }\n}\n\nconst inconsistentSourceSelected = computed(() => {\n const selectedOption = props.columnOptions.find((op) => op.id === getSourceId(filter.value.column));\n return selectedOption === undefined;\n});\nconst sourceOptions = computed(() => {\n const options = props.columnOptions.map((v) => ({ value: v.id, label: v.label ?? v }));\n if (inconsistentSourceSelected.value) {\n options.unshift({ value: filter.value.column, label: 'Inconsistent value' });\n }\n return options;\n});\n\nfunction getSourceId(column: PlAdvancedFilterColumnId): PlAdvancedFilterColumnId {\n try {\n const parsedColumnId = parseColumnId(column as SUniversalPColumnId);\n if (isFilteredPColumn(parsedColumnId)) {\n return stringifyColumnId(parsedColumnId.source);\n } else {\n return column;\n }\n } catch {\n return column;\n }\n}\n\n// similar to FilteredPColumnId but source is stringified and axis filters can be undefined\ntype ColumnAsSourceAndFixedAxes = { source: PlAdvancedFilterColumnId; axisFiltersByIndex: Record<number, AxisFilterValue | undefined> };\nfunction getColumnAsSourceAndFixedAxes(column: PlAdvancedFilterColumnId): ColumnAsSourceAndFixedAxes {\n const sourceId = getSourceId(column);\n const option = props.columnOptions.find((op) => op.id === sourceId);\n const axesToBeFixed = (option?.axesToBeFixed ?? []).reduce((res, item) => {\n res[item.idx] = undefined;\n return res;\n }, {} as Record<number, AxisFilterValue | undefined>);\n try {\n const parsedColumnId = parseColumnId(column as SUniversalPColumnId);\n if (isFilteredPColumn(parsedColumnId)) {\n return {\n source: sourceId,\n axisFiltersByIndex: parsedColumnId.axisFilters.reduce((res, item) => {\n res[item[0]] = item[1];\n return res;\n }, axesToBeFixed),\n };\n }\n } catch {\n return { source: column, axisFiltersByIndex: axesToBeFixed };\n }\n return { source: column, axisFiltersByIndex: axesToBeFixed };\n}\n\nfunction stringifyColumn(value: ColumnAsSourceAndFixedAxes): PlAdvancedFilterColumnId {\n if (Object.keys(value.axisFiltersByIndex).length === 0) {\n return value.source;\n }\n return stringifyColumnId({\n source: parseColumnId(value.source as SUniversalPColumnId) as AnchoredPColumnId,\n axisFilters: Object.entries(value.axisFiltersByIndex).map(([idx, value]) => [Number(idx), value] as AxisFilterByIdx),\n });\n}\n\nconst columnAsSourceAndFixedAxes = computed({\n get: () => {\n return getColumnAsSourceAndFixedAxes(filter.value.column);\n },\n set: (value) => {\n filter.value.column = stringifyColumn(value);\n },\n});\nfunction updateAxisFilterValue(idx: number, value: AxisFilterValue | undefined) {\n columnAsSourceAndFixedAxes.value = {\n ...columnAsSourceAndFixedAxes.value,\n axisFiltersByIndex: { ...columnAsSourceAndFixedAxes.value.axisFiltersByIndex, [idx]: value } };\n}\n\nconst currentOption = computed(() => props.columnOptions.find((op) => op.id === columnAsSourceAndFixedAxes.value.source));\nconst currentSpec = computed(() => currentOption.value?.spec ? getNormalizedSpec(currentOption.value.spec) : null);\nconst currentType = computed(() => currentSpec.value?.valueType);\nconst currentError = computed(() => currentOption.value?.error || inconsistentSourceSelected.value);\n\nconst filterTypesOptions = computed(() => [...SUPPORTED_FILTER_TYPES].filter((v) =>\n filter.value.type === v || (currentSpec.value ? getFilterInfo(v).supportedFor(currentSpec.value) : true),\n).map((v) => ({ value: v, label: getFilterInfo(v).label })),\n);\n\nconst wildcardOptions = computed(() => {\n if (filter.value.type === 'patternFuzzyContainSubsequence') {\n if (currentOption.value?.alphabet === 'nucleotide') {\n return [{ label: 'N', value: 'N' }];\n }\n if (currentOption.value?.alphabet === 'aminoacid') {\n return [{ label: 'X', value: 'X' }];\n }\n return [...new Set(filter.value.value.split(''))].sort().map((v) => ({ value: v, label: v }));\n }\n return [];\n});\n\nconst stringMatchesError = computed(() => {\n if (filter.value.type !== 'patternMatchesRegularExpression') {\n return false;\n }\n try {\n new RegExp(filter.value.value);\n return false;\n } catch {\n return true;\n }\n});\n\n</script>\n<template>\n <div :class=\"$style.filterWrapper\">\n <!-- top element - column selector / column label - for all filter types-->\n <div v-if=\"enableDnd\" :class=\"[$style.top, $style.columnChip, {[$style.error]: currentError}]\">\n <div :class=\"[$style.typeIcon, {[$style.error]: currentError}]\">\n <PlIcon16 v-if=\"currentError\" name=\"warning\"/>\n <PlIcon16 v-else :name=\"currentType === 'String' || currentType === undefined ? 'cell-type-txt' : 'cell-type-num'\"/>\n </div>\n <div :class=\"$style.titleWrapper\" :title=\"currentOption?.label ?? ''\">\n <div :class=\"$style.title\">\n {{ inconsistentSourceSelected ? 'Inconsistent value' : currentOption?.label ?? filter.column }}\n </div>\n </div>\n <div :class=\"$style.closeIcon\" @click=\"onDelete(filter.column)\">\n <PlIcon16 name=\"close\"/>\n </div>\n </div>\n <div v-else :class=\"$style.top\" >\n <PlDropdown\n v-model=\"columnAsSourceAndFixedAxes.source\"\n :errorStatus=\"currentError\"\n :options=\"sourceOptions\"\n :style=\"{width: '100%'}\"\n group-position=\"top-left\"\n @update:model-value=\"changeSourceId\"\n />\n <div :class=\"$style.closeButton\" @click=\"onDelete(filter.column)\">\n <PlIcon16 name=\"close\"/>\n </div>\n </div>\n\n <div v-if=\"currentOption?.axesToBeFixed?.length\" :class=\"$style.fixedAxesBlock\">\n <template v-for=\"value in currentOption?.axesToBeFixed\" :key=\"value.idx\">\n <PlAutocomplete\n v-model=\"columnAsSourceAndFixedAxes.axisFiltersByIndex[value.idx]\"\n :label=\"value.label\"\n :options-search=\"(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str, value.idx)\"\n :model-search=\"(v) => getSuggestModelSingleFn(columnAsSourceAndFixedAxes.source, v as string, value.idx)\"\n :disabled=\"inconsistentSourceSelected\"\n :clearable=\"true\"\n @update:model-value=\"(v) => updateAxisFilterValue(value.idx, v)\"\n />\n </template>\n </div>\n\n <!-- middle - filter type selector - for all filter types -->\n <div :class=\"filter.type === 'isNA' || filter.type === 'isNotNA' ? $style.bottom : $style.middle\">\n <PlDropdown\n v-model=\"filter.type\"\n :options=\"filterTypesOptions\"\n :group-position=\"filter.type === 'isNA' || filter.type === 'isNotNA' ? 'bottom' : 'middle'\"\n @update:model-value=\"changeFilterType\"\n />\n </div>\n\n <!-- middle - for fuzzy contains filter -->\n <template v-if=\"filter.type === 'patternFuzzyContainSubsequence'\">\n <div :class=\"$style.middle\">\n <PlTextField\n v-model=\"filter.value\"\n placeholder=\"Substring\"\n group-position=\"middle\"\n />\n </div>\n <div :class=\"$style.innerSection\">\n <Slider\n v-model=\"filter.maxEdits\"\n :max=\"5\"\n breakpoints label=\"Maximum number of substitutions and indels\"\n />\n <PlToggleSwitch\n v-model=\"filter.substitutionsOnly\"\n label=\"Substitutions only\"\n />\n </div>\n </template>\n\n <!-- bottom element - individual settings for every filter type -->\n <div :class=\"$style.bottom\">\n <template v-if=\"filter.type === 'patternEquals' || filter.type === 'patternNotEquals'\" >\n <PlAutocomplete\n v-model=\"filter.value\"\n :options-search=\"(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str)\"\n :model-search=\"(v) => getSuggestModelSingleFn(columnAsSourceAndFixedAxes.source, v as string)\"\n :disabled=\"inconsistentSourceSelected\"\n :clearable=\"true\"\n group-position=\"bottom\"\n />\n </template>\n <template v-if=\"filter.type === 'inSet' || filter.type === 'notInSet'\" >\n <PlAutocompleteMulti\n v-model=\"filter.value\"\n :options-search=\"(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str)\"\n :model-search=\"(v) => getSuggestModelMultiFn(columnAsSourceAndFixedAxes.source, v as string[])\"\n :disabled=\"inconsistentSourceSelected\"\n group-position=\"bottom\"\n />\n </template>\n <PlNumberField\n v-if=\"isNumericFilter(filter)\"\n v-model=\"filter.x\"\n group-position=\"bottom\"\n />\n <PlTextField\n v-if=\"filter.type === 'patternContainSubsequence' || filter.type === 'patternNotContainSubsequence'\"\n v-model=\"filter.value\"\n placeholder=\"Substring\"\n group-position=\"bottom\"\n />\n <PlTextField\n v-if=\"filter.type === 'patternMatchesRegularExpression'\"\n v-model=\"filter.value\"\n :error=\"stringMatchesError ? 'Regular expression is not valid' : undefined\"\n placeholder=\"Regular expression\"\n group-position=\"bottom\"\n />\n <PlDropdown\n v-if=\"filter.type === 'patternFuzzyContainSubsequence'\"\n v-model=\"filter.wildcard\"\n clearable\n placeholder=\"Wildcard value\"\n :options=\"wildcardOptions\"\n group-position=\"bottom\"\n />\n </div>\n </div>\n <OperandButton\n :class=\"$style.buttonWrapper\"\n :active=\"operand\"\n :disabled=\"isLast\"\n :on-select=\"onChangeOperand\"\n />\n</template>\n\n<style module>\n.filterWrapper {\n position: relative;\n display: flex;\n flex-direction: column;\n margin-bottom: 8px;\n width: 100%;\n cursor: default;\n}\n\n.typeIcon {\n display: inline-flex;\n margin-right: 8px;\n}\n\n.typeIcon.error {\n --icon-color: var(--txt-error);\n}\n\n.closeIcon {\n display: inline-flex;\n margin-left: 12px;\n cursor: pointer;\n}\n\n.titleWrapper {\n flex-grow: 1;\n overflow: hidden;\n}\n.title {\n overflow: hidden;\n color: var(--txt-01);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.columnChip {\n width: 100%;\n display: flex;\n padding: 10px 12px;\n align-items: center;\n border-radius: 6px;\n border: 1px solid var(--txt-01);\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n\n &.error {\n border-color: var(--txt-error);\n }\n}\n\n.innerSection {\n border: 1px solid var(--txt-01);\n border-top: none;\n padding: 16px 12px;\n}\n\n.closeButton {\n border: 1px solid var(--txt-01);\n border-top-right-radius: 6px;\n border-left: none;\n width: 40px;\n height: 40px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n cursor: pointer;\n}\n\n.top {\n position: relative;\n display: flex;\n width: 100%;\n z-index: 1;\n background: #fff;\n}\n\n.fixedAxesBlock {\n position: relative;\n display: flex;\n flex-direction: column;\n padding: 12px 8px;\n gap: 12px;\n border-left: 1px solid var(--txt-01);\n border-right: 1px solid var(--txt-01);\n}\n\n.fixedAxesBlock > * {\n background: #fff;\n}\n\n.middle, .bottom {\n position: relative;\n margin-top: -1px;\n background: #fff;\n}\n\n.buttonWrapper {\n margin-bottom: 8px;\n}\n</style>\n"],"names":["props","__props","filter","_useModel","getSuggestModelMultiFn","id","v","axisIdx","getSuggestModelSingleFn","getSuggestOptionsFn","str","changeFilterType","nextFilterInfo","getFilterInfo","currentSpec","isNumericFilter","isStringFilter","DEFAULT_FILTERS","changeSourceId","newSourceId","newSourceInfo","getSourceId","filterInfo","newSourceSpec","getNormalizedSpec","DEFAULT_FILTER_TYPE","inconsistentSourceSelected","computed","op","sourceOptions","options","column","parsedColumnId","parseColumnId","isFilteredPColumn","stringifyColumnId","getColumnAsSourceAndFixedAxes","sourceId","option","axesToBeFixed","res","item","stringifyColumn","value","idx","columnAsSourceAndFixedAxes","updateAxisFilterValue","currentOption","_a","currentType","currentError","filterTypesOptions","SUPPORTED_FILTER_TYPES","wildcardOptions","_b","stringMatchesError","_createElementVNode","_normalizeClass","$style","_createElementBlock","_createBlock","_unref","PlIcon16","_toDisplayString","_cache","$event","_createVNode","PlDropdown","_d","_c","_openBlock","_Fragment","_renderList","_e","PlAutocomplete","PlTextField","Slider","PlToggleSwitch","PlAutocompleteMulti","PlNumberField","OperandButton"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgCellFile.vue.js","sources":["../../../src/components/PlAgCellFile/PlAgCellFile.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlFileInput } from '@milaboratories/uikit';\nimport type { ICellRendererParams } from 'ag-grid-enterprise';\nimport type { ImportFileHandle, ImportProgress } from '@platforma-sdk/model';\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n // this component is intended to be used in ag-grid, params are the main object\n // to communicate with the corresponding cell data\n params: ICellRendererParams<unknown, ImportFileHandle> & {\n extensions?: string[];\n progress?: ImportProgress;\n /**\n * The resolveProgress function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveProgress, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveProgress: (fileHandle: ImportFileHandle | undefined) => {\n * const progresses = app.progresses;\n * if (!fileHandle) return undefined;\n * else return progresses[fileHandle];\n * }\n * }\n */\n resolveProgress?: (v: ImportFileHandle | undefined) => ImportProgress | undefined;\n };\n}>();\n\nconst extensions = computed(() => props.params.extensions);\n\n// extracting cell value and casting it to the type we expect\nconst handle = computed(() => props.params.value as ImportFileHandle | undefined);\n\n/**\n * When value changes in the file input this method forward the value to the ag-grid,\n * which in tern forwards in to the valueSetter in corresponding column.\n * */\nfunction onHandleUpdate(newHandle: ImportFileHandle | undefined) {\n props.params.setValue!(newHandle);\n}\n\nconst currentProgress = computed(() => {\n return props.params.resolveProgress ? props.params.resolveProgress(handle.value) : undefined;\n});\n</script>\n\n<template>\n <div style=\"height: 100%\">\n <PlFileInput\n show-filename-only\n clearable\n cell-style\n file-dialog-title=\"Select any file\"\n :placeholder=\"`Choose file ${extensions ? extensions[0] : ''}`\"\n :extensions=\"extensions\"\n :model-value=\"handle\"\n :progress=\"currentProgress\"\n @update:model-value=\"onHandleUpdate\"\n />\n </div>\n</template>\n"],"names":["props","__props","extensions","computed","handle","onHandleUpdate","newHandle","currentProgress"],"mappings":";;;;;;;;AAMA,UAAMA,IAAQC,GAwBRC,IAAaC,EAAS,MAAMH,EAAM,OAAO,UAAU,GAGnDI,IAASD,EAAS,MAAMH,EAAM,OAAO,KAAqC;AAMhF,aAASK,EAAeC,GAAyC;AAC/D,MAAAN,EAAM,OAAO,SAAUM,CAAS;AAAA,IAClC;AAEA,UAAMC,IAAkBJ,EAAS,MACxBH,EAAM,OAAO,kBAAkBA,EAAM,OAAO,gBAAgBI,EAAO,KAAK,IAAI,MACpF
|
|
1
|
+
{"version":3,"file":"PlAgCellFile.vue.js","sources":["../../../src/components/PlAgCellFile/PlAgCellFile.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlFileInput } from '@milaboratories/uikit';\nimport type { ICellRendererParams } from 'ag-grid-enterprise';\nimport type { ImportFileHandle, ImportProgress } from '@platforma-sdk/model';\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n // this component is intended to be used in ag-grid, params are the main object\n // to communicate with the corresponding cell data\n params: ICellRendererParams<unknown, ImportFileHandle> & {\n extensions?: string[];\n progress?: ImportProgress;\n /**\n * The resolveProgress function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveProgress, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveProgress: (fileHandle: ImportFileHandle | undefined) => {\n * const progresses = app.progresses;\n * if (!fileHandle) return undefined;\n * else return progresses[fileHandle];\n * }\n * }\n */\n resolveProgress?: (v: ImportFileHandle | undefined) => ImportProgress | undefined;\n };\n}>();\n\nconst extensions = computed(() => props.params.extensions);\n\n// extracting cell value and casting it to the type we expect\nconst handle = computed(() => props.params.value as ImportFileHandle | undefined);\n\n/**\n * When value changes in the file input this method forward the value to the ag-grid,\n * which in tern forwards in to the valueSetter in corresponding column.\n * */\nfunction onHandleUpdate(newHandle: ImportFileHandle | undefined) {\n props.params.setValue!(newHandle);\n}\n\nconst currentProgress = computed(() => {\n return props.params.resolveProgress ? props.params.resolveProgress(handle.value) : undefined;\n});\n</script>\n\n<template>\n <div style=\"height: 100%\">\n <PlFileInput\n show-filename-only\n clearable\n cell-style\n file-dialog-title=\"Select any file\"\n :placeholder=\"`Choose file ${extensions ? extensions[0] : ''}`\"\n :extensions=\"extensions\"\n :model-value=\"handle\"\n :progress=\"currentProgress\"\n @update:model-value=\"onHandleUpdate\"\n />\n </div>\n</template>\n"],"names":["props","__props","extensions","computed","handle","onHandleUpdate","newHandle","currentProgress","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","PlFileInput"],"mappings":";;;;;;;;AAMA,UAAMA,IAAQC,GAwBRC,IAAaC,EAAS,MAAMH,EAAM,OAAO,UAAU,GAGnDI,IAASD,EAAS,MAAMH,EAAM,OAAO,KAAqC;AAMhF,aAASK,EAAeC,GAAyC;AAC/D,MAAAN,EAAM,OAAO,SAAUM,CAAS;AAAA,IAClC;AAEA,UAAMC,IAAkBJ,EAAS,MACxBH,EAAM,OAAO,kBAAkBA,EAAM,OAAO,gBAAgBI,EAAO,KAAK,IAAI,MACpF;sBAICI,EAAA,GAAAC,EAYM,OAZNC,GAYM;AAAA,MAXJC,EAUEC,EAAAC,CAAA,GAAA;AAAA,QATA,sBAAA;AAAA,QACA,WAAA;AAAA,QACA,cAAA;AAAA,QACA,qBAAkB;AAAA,QACjB,aAAW,eAAiBX,EAAA,QAAaA,EAAA,MAAU,CAAA,IAAA,EAAA;AAAA,QACnD,YAAYA,EAAA;AAAA,QACZ,eAAaE,EAAA;AAAA,QACb,UAAUG,EAAA;AAAA,QACV,uBAAoBF;AAAA,MAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgCellProgress.vue.js","sources":["../../../src/components/PlAgCellProgress/PlAgCellProgress.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PlProgressCellProps } from '@milaboratories/uikit';\nimport { PlProgressCell } from '@milaboratories/uikit';\nimport type { ICellRendererParams } from 'ag-grid-enterprise';\n\nconst props = defineProps<{ params: ICellRendererParams & PlProgressCellProps }>();\n</script>\n\n<template>\n <PlProgressCell v-bind=\"props.params\"/>\n</template>\n"],"names":["props","__props"],"mappings":";;;;;;;;AAKA,UAAMA,IAAQC
|
|
1
|
+
{"version":3,"file":"PlAgCellProgress.vue.js","sources":["../../../src/components/PlAgCellProgress/PlAgCellProgress.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PlProgressCellProps } from '@milaboratories/uikit';\nimport { PlProgressCell } from '@milaboratories/uikit';\nimport type { ICellRendererParams } from 'ag-grid-enterprise';\n\nconst props = defineProps<{ params: ICellRendererParams & PlProgressCellProps }>();\n</script>\n\n<template>\n <PlProgressCell v-bind=\"props.params\"/>\n</template>\n"],"names":["props","__props","_createBlock","_unref","PlProgressCell","_normalizeProps","_guardReactiveProps"],"mappings":";;;;;;;;AAKA,UAAMA,IAAQC;2BAIZC,EAAuCC,EAAAC,CAAA,GAAAC,EAAAC,EAAfN,EAAM,MAAM,CAAA,GAAA,MAAA,EAAA;AAAA;;"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { defineComponent as a, createElementBlock as
|
|
1
|
+
import { defineComponent as a, createElementBlock as l, openBlock as r, createVNode as n, unref as o } from "vue";
|
|
2
2
|
import { PlStatusTag as s } from "@milaboratories/uikit";
|
|
3
|
-
const
|
|
3
|
+
const p = { class: "pl-ag-cell-status-tag d-flex align-center" }, f = /* @__PURE__ */ a({
|
|
4
4
|
__name: "PlAgCellStatusTag",
|
|
5
5
|
props: {
|
|
6
6
|
params: {}
|
|
7
7
|
},
|
|
8
|
-
setup(
|
|
9
|
-
return (
|
|
8
|
+
setup(t) {
|
|
9
|
+
return (c, m) => {
|
|
10
10
|
var e;
|
|
11
|
-
return
|
|
12
|
-
o(
|
|
11
|
+
return r(), l("div", p, [
|
|
12
|
+
n(o(s), {
|
|
13
13
|
type: (e = t.params) == null ? void 0 : e.type
|
|
14
14
|
}, null, 8, ["type"])
|
|
15
15
|
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgCellStatusTag.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlAgCellStatusTag.vue.js","sources":["../../../src/components/PlAgCellStatusTag/PlAgCellStatusTag.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ICellRendererParams } from 'ag-grid-enterprise';\nimport { PlStatusTag } from '@milaboratories/uikit';\nimport type { PlStatusTagType } from '@milaboratories/uikit';\n\ndefineProps<{ params?: ICellRendererParams & { type: PlStatusTagType } }>();\n</script>\n\n<template>\n <div class=\"pl-ag-cell-status-tag d-flex align-center\">\n <PlStatusTag :type=\"params?.type\"/>\n </div>\n</template>\n\n<style lang=\"scss\">\n.pl-ag-cell-status-tag{\n height: 100%;\n padding: 0 12px;\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","PlStatusTag","_a","__props"],"mappings":";;;;;;;;;;AASE,aAAAA,EAAA,GAAAC,EAEM,OAFNC,GAEM;AAAA,QADJC,EAAmCC,EAAAC,CAAA,GAAA;AAAA,UAArB,OAAMC,IAAAC,EAAA,WAAA,gBAAAD,EAAQ;AAAA,QAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgChartHistogramCell.vue.js","sources":["../../../src/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ICellRendererParams } from 'ag-grid-enterprise';\nimport {\n type InferComponentProps,\n PlChartHistogram,\n} from '@milaboratories/uikit';\nimport { computed, ref } from 'vue';\nimport { useElementBounding } from '@vueuse/core';\n\ntype PlChartHistogramSettings = InferComponentProps<typeof PlChartHistogram>['settings'];\n\nconst props = defineProps<{\n params: ICellRendererParams<unknown, PlChartHistogramSettings | undefined>;\n}>();\n\nconst root = ref<HTMLElement>();\n\nconst { width } = useElementBounding(root);\n\nconst settings = computed<PlChartHistogramSettings | undefined>(() => {\n if (!props.params.value) {\n return undefined;\n }\n\n if (!width.value) {\n return undefined;\n }\n\n return { ...props.params.value, compact: true, totalHeight: 24, totalWidth: width.value };\n});\n</script>\n\n<template>\n <div ref=\"root\" class=\"pl-ag-chart-histogram-cell\">\n <PlChartHistogram v-if=\"settings\" :settings=\"settings\" />\n <div v-else class=\"pl-ag-chart-histogram-cell__not-ready \">Not ready</div>\n </div>\n</template>\n\n<style>\n.pl-ag-chart-histogram-cell {\n height: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.pl-ag-chart-histogram-cell__not-ready {\n color: var(--txt-03) !important;\n}\n</style>\n"],"names":["props","__props","root","ref","width","useElementBounding","settings","computed"],"mappings":";;;;;;;;;;;;AAWA,UAAMA,IAAQC,GAIRC,IAAOC,EAAA,GAEP,EAAE,OAAAC,EAAA,IAAUC,EAAmBH,CAAI,GAEnCI,IAAWC,EAA+C,MAAM;AACpE,UAAKP,EAAM,OAAO,SAIbI,EAAM;AAIX,eAAO,EAAE,GAAGJ,EAAM,OAAO,OAAO,SAAS,IAAM,aAAa,IAAI,YAAYI,EAAM,MAAA;AAAA,IACpF,CAAC
|
|
1
|
+
{"version":3,"file":"PlAgChartHistogramCell.vue.js","sources":["../../../src/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ICellRendererParams } from 'ag-grid-enterprise';\nimport {\n type InferComponentProps,\n PlChartHistogram,\n} from '@milaboratories/uikit';\nimport { computed, ref } from 'vue';\nimport { useElementBounding } from '@vueuse/core';\n\ntype PlChartHistogramSettings = InferComponentProps<typeof PlChartHistogram>['settings'];\n\nconst props = defineProps<{\n params: ICellRendererParams<unknown, PlChartHistogramSettings | undefined>;\n}>();\n\nconst root = ref<HTMLElement>();\n\nconst { width } = useElementBounding(root);\n\nconst settings = computed<PlChartHistogramSettings | undefined>(() => {\n if (!props.params.value) {\n return undefined;\n }\n\n if (!width.value) {\n return undefined;\n }\n\n return { ...props.params.value, compact: true, totalHeight: 24, totalWidth: width.value };\n});\n</script>\n\n<template>\n <div ref=\"root\" class=\"pl-ag-chart-histogram-cell\">\n <PlChartHistogram v-if=\"settings\" :settings=\"settings\" />\n <div v-else class=\"pl-ag-chart-histogram-cell__not-ready \">Not ready</div>\n </div>\n</template>\n\n<style>\n.pl-ag-chart-histogram-cell {\n height: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.pl-ag-chart-histogram-cell__not-ready {\n color: var(--txt-03) !important;\n}\n</style>\n"],"names":["props","__props","root","ref","width","useElementBounding","settings","computed","_createElementBlock","_createBlock","_unref","PlChartHistogram","_hoisted_1"],"mappings":";;;;;;;;;;;;AAWA,UAAMA,IAAQC,GAIRC,IAAOC,EAAA,GAEP,EAAE,OAAAC,EAAA,IAAUC,EAAmBH,CAAI,GAEnCI,IAAWC,EAA+C,MAAM;AACpE,UAAKP,EAAM,OAAO,SAIbI,EAAM;AAIX,eAAO,EAAE,GAAGJ,EAAM,OAAO,OAAO,SAAS,IAAM,aAAa,IAAI,YAAYI,EAAM,MAAA;AAAA,IACpF,CAAC;2BAICI,EAGM,OAAA;AAAA,eAHG;AAAA,MAAJ,KAAIN;AAAA,MAAO,OAAM;AAAA,IAAA;MACII,EAAA,cAAxBG,EAAyDC,EAAAC,CAAA,GAAA;AAAA;QAAtB,UAAUL,EAAA;AAAA,MAAA,mCAC7CE,EAA0E,OAA1EI,GAA2D,WAAS;AAAA,IAAA;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgChartStackedBarCell.vue.js","sources":["../../../src/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ICellRendererParams } from 'ag-grid-enterprise';\nimport type {\n PlChartStackedBarSettings,\n} from '@milaboratories/uikit';\nimport {\n PlChartStackedBarCompact,\n} from '@milaboratories/uikit';\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n params: ICellRendererParams<unknown, PlChartStackedBarSettings | undefined>;\n}>();\n\nconst settings = computed(() => props.params.value || undefined);\n</script>\n\n<template>\n <div class=\"pl-ag-chart-stacked-bar-cell\">\n <PlChartStackedBarCompact v-if=\"settings\" :settings=\"settings\" />\n <div v-else class=\"pl-ag-chart-stacked-bar-cell__not-ready\">Not ready</div>\n </div>\n</template>\n\n<style>\n.pl-ag-chart-stacked-bar-cell {\n height: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.pl-ag-chart-stacked-bar-cell__not-ready {\n color: var(--txt-03) !important;\n}\n</style>\n"],"names":["props","__props","settings","computed"],"mappings":";;;;;;;;;;;AAUA,UAAMA,IAAQC,GAIRC,IAAWC,EAAS,MAAMH,EAAM,OAAO,SAAS,MAAS
|
|
1
|
+
{"version":3,"file":"PlAgChartStackedBarCell.vue.js","sources":["../../../src/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ICellRendererParams } from 'ag-grid-enterprise';\nimport type {\n PlChartStackedBarSettings,\n} from '@milaboratories/uikit';\nimport {\n PlChartStackedBarCompact,\n} from '@milaboratories/uikit';\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n params: ICellRendererParams<unknown, PlChartStackedBarSettings | undefined>;\n}>();\n\nconst settings = computed(() => props.params.value || undefined);\n</script>\n\n<template>\n <div class=\"pl-ag-chart-stacked-bar-cell\">\n <PlChartStackedBarCompact v-if=\"settings\" :settings=\"settings\" />\n <div v-else class=\"pl-ag-chart-stacked-bar-cell__not-ready\">Not ready</div>\n </div>\n</template>\n\n<style>\n.pl-ag-chart-stacked-bar-cell {\n height: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.pl-ag-chart-stacked-bar-cell__not-ready {\n color: var(--txt-03) !important;\n}\n</style>\n"],"names":["props","__props","settings","computed","_openBlock","_createElementBlock","_hoisted_1","_createBlock","_unref","PlChartStackedBarCompact","_hoisted_2"],"mappings":";;;;;;;;;;;AAUA,UAAMA,IAAQC,GAIRC,IAAWC,EAAS,MAAMH,EAAM,OAAO,SAAS,MAAS;sBAI7DI,EAAA,GAAAC,EAGM,OAHNC,GAGM;AAAA,MAF4BJ,EAAA,cAAhCK,EAAiEC,EAAAC,CAAA,GAAA;AAAA;QAAtB,UAAUP,EAAA;AAAA,MAAA,mCACrDG,EAA2E,OAA3EK,GAA4D,WAAS;AAAA,IAAA;;;"}
|