@milaboratories/uikit 2.11.9 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +17 -17
- package/.turbo/turbo-formatter$colon$check.log +2 -2
- package/.turbo/turbo-linter$colon$check.log +2 -2
- package/.turbo/turbo-types$colon$check.log +1 -1
- package/CHANGELOG.md +11 -0
- package/dist/components/LongText.js.map +1 -1
- package/dist/components/LongText.style.css +1 -1
- package/dist/components/LongText.vue.d.ts.map +1 -1
- package/dist/components/LongText.vue2.js +1 -1
- package/dist/components/LongText.vue2.js.map +1 -1
- package/dist/components/PlElementList/PlElementList.js.map +1 -1
- package/dist/components/PlElementList/PlElementList.style.js.map +1 -1
- package/dist/components/PlElementList/PlElementList.vue.d.ts.map +1 -1
- package/dist/components/PlElementList/PlElementList.vue2.js +95 -95
- package/dist/components/PlElementList/PlElementList.vue2.js.map +1 -1
- package/dist/components/PlElementList/utils.d.ts +1 -1
- package/dist/components/PlElementList/utils.d.ts.map +1 -1
- package/dist/components/PlElementList/utils.js +6 -5
- package/dist/components/PlElementList/utils.js.map +1 -1
- package/dist/composition/filters/metadata.js +16 -16
- package/dist/composition/filters/metadata.js.map +1 -1
- package/package.json +4 -4
- package/src/components/LongText.vue +6 -8
- package/src/components/PlElementList/PlElementList.vue +51 -42
- package/src/components/PlElementList/utils.ts +7 -6
- package/src/composition/filters/metadata.ts +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","names":[],"sources":["../../../src/composition/filters/metadata.ts"],"sourcesContent":["import type { FilterSpecType, SimplifiedPColumnSpec } from \"@platforma-sdk/model\";\nimport type { FilterSpecMetadataRecord } from \"./types\";\n\nexport const filterUiMetadata = {\n equal: {\n label: \"Col = X (Equal)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"equal\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n notEqual: {\n label: \"Col ≠ X (Not Equal)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"notEqual\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n lessThan: {\n label: \"Col < X (Less Than)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThan\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n greaterThan: {\n label: \"Col > X (Greater Than)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThan\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n lessThanOrEqual: {\n label: \"Col ≤ X (Less Than or Equal)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThanOrEqual\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n greaterThanOrEqual: {\n label: \"Col ≥ X (Greater Than or Equal)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThanOrEqual\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n // Columns comparison\n equalToColumn: {\n label: \"Col₁ = Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"equalToColumn\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n lessThanColumn: {\n label: \"Col₁ < Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThanColumn\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n greaterThanColumn: {\n label: \"Col₁ > Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThanColumn\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n lessThanColumnOrEqual: {\n label: \"Col₁ ≤ Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThanColumnOrEqual\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n greaterThanColumnOrEqual: {\n label: \"Col₁ ≥ Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThanColumnOrEqual\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n // Ordering filters\n topN: {\n label: \"Top N\",\n form: {\n column: {\n label: \"Rank By Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"topN\",\n },\n n: {\n label: \"N\",\n fieldType: \"number\",\n defaultValue: () => 10,\n },\n },\n supportedFor: isNumericValueType,\n },\n bottomN: {\n label: \"Bottom N\",\n form: {\n column: {\n label: \"Rank By Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"bottomN\",\n },\n n: {\n label: \"N\",\n fieldType: \"number\",\n defaultValue: () => 10,\n },\n },\n supportedFor: isNumericValueType,\n },\n patternContainSubsequence: {\n label: \"Col ~ Seq (Contain Subsequence)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternContainSubsequence\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternNotContainSubsequence: {\n label: \"Col ≁ Seq (Not Contain Subsequence)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternNotContainSubsequence\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternEquals: {\n label: \"Col = Seq (Equals)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternEquals\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternNotEquals: {\n label: \"Col ≠ Seq (Not Equal)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternNotEquals\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n isNA: {\n label: \"Is NA\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"isNA\",\n },\n },\n supportedFor: () => true,\n },\n isNotNA: {\n label: \"Is Not NA\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"isNotNA\",\n },\n },\n supportedFor: () => true,\n },\n or: {\n label: \"Or\",\n form: {\n type: {\n fieldType: \"FilterType\",\n label: \"Predicate\",\n defaultValue: () => \"or\",\n },\n filters: {\n fieldType: \"unknown[]\",\n label: \"Filters\",\n defaultValue: () => [],\n },\n },\n supportedFor: () => false,\n },\n and: {\n label: \"And\",\n form: {\n type: {\n fieldType: \"FilterType\",\n label: \"Predicate\",\n defaultValue: () => \"and\",\n },\n filters: {\n fieldType: \"unknown[]\",\n label: \"Filters\",\n defaultValue: () => [],\n },\n },\n supportedFor: () => false,\n },\n not: {\n label: \"Not\",\n form: {\n type: {\n fieldType: \"FilterType\",\n label: \"Predicate\",\n defaultValue: () => \"not\",\n },\n filter: {\n fieldType: \"form\",\n label: \"Filter\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: () => false,\n },\n patternMatchesRegularExpression: {\n label: \"Col ~ X (Matches Regular Expression)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternMatchesRegularExpression\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternFuzzyContainSubsequence: {\n label: \"Col ~ Seq (Fuzzy Contain Subsequence)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternFuzzyContainSubsequence\",\n },\n value: {\n label: \"Set\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n inSet: {\n label: \"Col ∈ Set (In Set)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"inSet\",\n },\n value: {\n fieldType: \"unknown[]\",\n label: \"Set\",\n defaultValue: () => [],\n },\n },\n supportedFor: isStringValueType,\n },\n notInSet: {\n label: \"Col ∉ Set (Not In Set)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"notInSet\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"unknown[]\",\n defaultValue: () => [],\n },\n },\n supportedFor: isStringValueType,\n },\n ifNa: {\n label: \"If NA Then (Replace NA)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"ifNa\",\n },\n replacement: {\n label: \"Replacement Value\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: () => true,\n },\n} satisfies FilterSpecMetadataRecord<FilterSpecType>;\n\nexport function getFilterUiTypeOptions(columnSpec?: SimplifiedPColumnSpec) {\n if (!columnSpec) {\n return [];\n }\n\n return Object.entries(filterUiMetadata)\n .filter(([_, metadata]) => metadata.supportedFor(columnSpec))\n .map(([type, metadata]) => ({\n label: metadata.label,\n value: type,\n }));\n}\n\nexport function getFilterUiMetadata(type: FilterSpecType) {\n return filterUiMetadata[type];\n}\n\nfunction isNumericValueType(spec: SimplifiedPColumnSpec): boolean {\n return (\n spec.valueType === \"Int\" ||\n spec.valueType === \"Long\" ||\n spec.valueType === \"Float\" ||\n spec.valueType === \"Double\"\n );\n}\n\nfunction isStringValueType(spec: SimplifiedPColumnSpec): boolean {\n return spec.valueType === \"String\";\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metadata.js","names":[],"sources":["../../../src/composition/filters/metadata.ts"],"sourcesContent":["import type { FilterSpecType, SimplifiedPColumnSpec } from \"@platforma-sdk/model\";\nimport type { FilterSpecMetadataRecord } from \"./types\";\n\nexport const filterUiMetadata = {\n equal: {\n label: \"Equals (=)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"equal\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n notEqual: {\n label: \"Not Equal To (≠)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"notEqual\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n lessThan: {\n label: \"Below (<)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThan\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n greaterThan: {\n label: \"Above (>)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThan\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n lessThanOrEqual: {\n label: \"At Most (≤)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThanOrEqual\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n greaterThanOrEqual: {\n label: \"At Least (≥)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThanOrEqual\",\n },\n x: {\n label: \"X\",\n fieldType: \"number\",\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n // Columns comparison\n equalToColumn: {\n label: \"Col₁ = Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"equalToColumn\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n lessThanColumn: {\n label: \"Col₁ < Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThanColumn\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n greaterThanColumn: {\n label: \"Col₁ > Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThanColumn\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n lessThanColumnOrEqual: {\n label: \"Col₁ ≤ Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"lessThanColumnOrEqual\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n greaterThanColumnOrEqual: {\n label: \"Col₁ ≥ Col₂ (Compare Columns)\",\n form: {\n column: {\n label: \"Col₁\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"greaterThanColumnOrEqual\",\n },\n rhs: {\n label: \"Col₂\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n minDiff: {\n label: \"Margin (positive)\",\n fieldType: \"number?\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n // Ordering filters\n topN: {\n label: \"Top N\",\n form: {\n column: {\n label: \"Rank By Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"topN\",\n },\n n: {\n label: \"N\",\n fieldType: \"number\",\n defaultValue: () => 10,\n },\n },\n supportedFor: isNumericValueType,\n },\n bottomN: {\n label: \"Bottom N\",\n form: {\n column: {\n label: \"Rank By Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"bottomN\",\n },\n n: {\n label: \"N\",\n fieldType: \"number\",\n defaultValue: () => 10,\n },\n },\n supportedFor: isNumericValueType,\n },\n patternContainSubsequence: {\n label: \"Contains (~)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternContainSubsequence\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternNotContainSubsequence: {\n label: \"Does Not Contain (≁)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternNotContainSubsequence\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternEquals: {\n label: \"Equals (=)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternEquals\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternNotEquals: {\n label: \"Not Equal To (≠)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternNotEquals\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n isNA: {\n label: \"Is Empty (NA)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"isNA\",\n },\n },\n supportedFor: () => true,\n },\n isNotNA: {\n label: \"Is Not Empty (≠ NA)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"isNotNA\",\n },\n },\n supportedFor: () => true,\n },\n or: {\n label: \"Or\",\n form: {\n type: {\n fieldType: \"FilterType\",\n label: \"Predicate\",\n defaultValue: () => \"or\",\n },\n filters: {\n fieldType: \"unknown[]\",\n label: \"Filters\",\n defaultValue: () => [],\n },\n },\n supportedFor: () => false,\n },\n and: {\n label: \"And\",\n form: {\n type: {\n fieldType: \"FilterType\",\n label: \"Predicate\",\n defaultValue: () => \"and\",\n },\n filters: {\n fieldType: \"unknown[]\",\n label: \"Filters\",\n defaultValue: () => [],\n },\n },\n supportedFor: () => false,\n },\n not: {\n label: \"Not\",\n form: {\n type: {\n fieldType: \"FilterType\",\n label: \"Predicate\",\n defaultValue: () => \"not\",\n },\n filter: {\n fieldType: \"form\",\n label: \"Filter\",\n defaultValue: () => undefined,\n },\n },\n supportedFor: () => false,\n },\n patternMatchesRegularExpression: {\n label: \"Matches Regex (.*)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternMatchesRegularExpression\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n patternFuzzyContainSubsequence: {\n label: \"Contains Approximately (Fuzzy ~)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"patternFuzzyContainSubsequence\",\n },\n value: {\n label: \"Set\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: isStringValueType,\n },\n inSet: {\n label: \"In List (∈)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"inSet\",\n },\n value: {\n fieldType: \"unknown[]\",\n label: \"Set\",\n defaultValue: () => [],\n },\n },\n supportedFor: isStringValueType,\n },\n notInSet: {\n label: \"Not In List (∉)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"notInSet\",\n },\n value: {\n label: \"Seq\",\n fieldType: \"unknown[]\",\n defaultValue: () => [],\n },\n },\n supportedFor: isStringValueType,\n },\n ifNa: {\n label: \"If NA Then (Replace NA)\",\n form: {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => \"ifNa\",\n },\n replacement: {\n label: \"Replacement Value\",\n fieldType: \"string\",\n defaultValue: () => \"\",\n },\n },\n supportedFor: () => true,\n },\n} satisfies FilterSpecMetadataRecord<FilterSpecType>;\n\nexport function getFilterUiTypeOptions(columnSpec?: SimplifiedPColumnSpec) {\n if (!columnSpec) {\n return [];\n }\n\n return Object.entries(filterUiMetadata)\n .filter(([_, metadata]) => metadata.supportedFor(columnSpec))\n .map(([type, metadata]) => ({\n label: metadata.label,\n value: type,\n }));\n}\n\nexport function getFilterUiMetadata(type: FilterSpecType) {\n return filterUiMetadata[type];\n}\n\nfunction isNumericValueType(spec: SimplifiedPColumnSpec): boolean {\n return (\n spec.valueType === \"Int\" ||\n spec.valueType === \"Long\" ||\n spec.valueType === \"Float\" ||\n spec.valueType === \"Double\"\n );\n}\n\nfunction isStringValueType(spec: SimplifiedPColumnSpec): boolean {\n return spec.valueType === \"String\";\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/uikit",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.12.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"sortablejs": "^1.15.6",
|
|
33
33
|
"vue": "^3.5.24",
|
|
34
34
|
"@milaboratories/helpers": "1.14.1",
|
|
35
|
-
"@platforma-sdk/model": "1.
|
|
35
|
+
"@platforma-sdk/model": "1.65.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@vitest/coverage-istanbul": "^4.1.3",
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"svgo": "^3.3.2",
|
|
41
41
|
"typescript": "~5.9.3",
|
|
42
42
|
"vitest": "^4.1.3",
|
|
43
|
-
"@milaboratories/ts-builder": "1.3.1",
|
|
44
43
|
"@milaboratories/build-configs": "2.0.0",
|
|
45
|
-
"@milaboratories/ts-configs": "1.2.3"
|
|
44
|
+
"@milaboratories/ts-configs": "1.2.3",
|
|
45
|
+
"@milaboratories/ts-builder": "1.3.1"
|
|
46
46
|
},
|
|
47
47
|
"scripts": {
|
|
48
48
|
"dev": "ts-builder serve --target browser-lib --build-config ./build.browser-lib.config.js",
|
|
@@ -43,28 +43,26 @@ function mouseoutHandler() {
|
|
|
43
43
|
|
|
44
44
|
<style lang="scss">
|
|
45
45
|
.ui-lt-container {
|
|
46
|
+
position: relative;
|
|
46
47
|
min-width: 0;
|
|
47
|
-
white-space: nowrap;
|
|
48
48
|
overflow: hidden;
|
|
49
|
-
|
|
49
|
+
white-space: nowrap;
|
|
50
50
|
border-radius: 5px;
|
|
51
51
|
|
|
52
52
|
span {
|
|
53
53
|
display: inline-block;
|
|
54
|
+
width: 100%;
|
|
54
55
|
overflow: hidden;
|
|
55
56
|
text-overflow: ellipsis;
|
|
56
|
-
width: 100%;
|
|
57
57
|
vertical-align: bottom;
|
|
58
|
-
pointer-events: all !important;
|
|
59
58
|
}
|
|
60
59
|
|
|
61
60
|
.ui-lt-animate {
|
|
62
61
|
position: relative;
|
|
62
|
+
width: fit-content;
|
|
63
|
+
overflow: unset;
|
|
64
|
+
text-overflow: unset;
|
|
63
65
|
animation: left-to-right v-bind(animationTime) infinite alternate linear;
|
|
64
|
-
|
|
65
|
-
overflow: unset !important;
|
|
66
|
-
text-overflow: unset !important;
|
|
67
|
-
width: fit-content !important;
|
|
68
66
|
}
|
|
69
67
|
}
|
|
70
68
|
|
|
@@ -11,6 +11,8 @@ import { computed, shallowRef, watch } from "vue";
|
|
|
11
11
|
import PlElementListItem from "./PlElementListItem.vue";
|
|
12
12
|
import { moveElements } from "./utils.ts";
|
|
13
13
|
|
|
14
|
+
type ItemEntry = [idx: number, item: T];
|
|
15
|
+
|
|
14
16
|
const itemsRef = defineModel<T[]>("items", { required: true });
|
|
15
17
|
|
|
16
18
|
const props = withDefaults(
|
|
@@ -99,11 +101,17 @@ const dndSortingEnabled = computed((): boolean => {
|
|
|
99
101
|
return props.disableDragging !== true;
|
|
100
102
|
});
|
|
101
103
|
|
|
102
|
-
const pinnedItemsRef = computed(() =>
|
|
104
|
+
const pinnedItemsRef = computed(() =>
|
|
105
|
+
itemsRef.value
|
|
106
|
+
.map((item, index) => [index, item] as ItemEntry)
|
|
107
|
+
.filter(([index, item]) => isPinnedItem(item, index)),
|
|
108
|
+
);
|
|
103
109
|
const hasPinnedItems = computed(() => pinnedItemsRef.value.length > 0);
|
|
104
110
|
|
|
105
111
|
const unpinnedItemsRef = computed(() =>
|
|
106
|
-
itemsRef.value
|
|
112
|
+
itemsRef.value
|
|
113
|
+
.map((item, index) => [index, item] as ItemEntry)
|
|
114
|
+
.filter(([index, item]) => !isPinnedItem(item, index)),
|
|
107
115
|
);
|
|
108
116
|
const hasUnpinnedItems = computed(() => unpinnedItemsRef.value.length > 0);
|
|
109
117
|
|
|
@@ -112,8 +120,8 @@ const pinnedContainerRef = shallowRef<HTMLElement>();
|
|
|
112
120
|
const unpinnedContainerRef = shallowRef<HTMLElement>();
|
|
113
121
|
|
|
114
122
|
// version fix problem with sync between data and rendered values
|
|
115
|
-
const getKey = (
|
|
116
|
-
return `${versionRef.value}-${props.getItemKey(
|
|
123
|
+
const getKey = (entry: ItemEntry) => {
|
|
124
|
+
return `${versionRef.value}-${props.getItemKey(entry[1], entry[0])}`;
|
|
117
125
|
};
|
|
118
126
|
const pinnedKeysRef = computed(() => pinnedItemsRef.value.map(getKey));
|
|
119
127
|
const unpinnedKeysRef = computed(() => unpinnedItemsRef.value.map(getKey));
|
|
@@ -151,7 +159,7 @@ createSortable(
|
|
|
151
159
|
function createSortable(
|
|
152
160
|
toggler: ShallowRef<boolean>,
|
|
153
161
|
elRef: ShallowRef<undefined | HTMLElement>,
|
|
154
|
-
itemsRef: ShallowRef<
|
|
162
|
+
itemsRef: ShallowRef<ItemEntry[]>,
|
|
155
163
|
getOffset: () => number,
|
|
156
164
|
) {
|
|
157
165
|
const sortable = useSortable(elRef, itemsRef, {
|
|
@@ -195,7 +203,7 @@ function moveItems(oldIndex: number, newIndex: number, afterUpdateDom: boolean)
|
|
|
195
203
|
const preventDefault = props.onSort?.(oldIndex, newIndex) === false;
|
|
196
204
|
|
|
197
205
|
if (!preventDefault) {
|
|
198
|
-
moveElements(itemsRef.value, oldIndex, newIndex);
|
|
206
|
+
itemsRef.value = moveElements(itemsRef.value, oldIndex, newIndex);
|
|
199
207
|
}
|
|
200
208
|
}
|
|
201
209
|
|
|
@@ -258,7 +266,8 @@ function handlePin(item: T, index: number) {
|
|
|
258
266
|
throw new Error("Pinnable item not found");
|
|
259
267
|
}
|
|
260
268
|
|
|
261
|
-
const alreadyPinned =
|
|
269
|
+
const alreadyPinned =
|
|
270
|
+
pinnedItemsRef.value.findIndex(([originalIndex]) => originalIndex === index) !== -1;
|
|
262
271
|
|
|
263
272
|
if (props.onPin?.(item, index) === false) return;
|
|
264
273
|
|
|
@@ -267,7 +276,7 @@ function handlePin(item: T, index: number) {
|
|
|
267
276
|
|
|
268
277
|
function handleRemove(item: T, index: number) {
|
|
269
278
|
if (props.onRemove?.(item, index) === false) return;
|
|
270
|
-
itemsRef.value.
|
|
279
|
+
itemsRef.value = [...itemsRef.value.slice(0, index), ...itemsRef.value.slice(index + 1)];
|
|
271
280
|
}
|
|
272
281
|
|
|
273
282
|
function getClassFunction(
|
|
@@ -291,26 +300,26 @@ const getItemClassAfter = getClassFunction(props.itemClassAfter);
|
|
|
291
300
|
<div :class="$style.root">
|
|
292
301
|
<div ref="pinnedContainerRef" :class="$style.list">
|
|
293
302
|
<PlElementListItem
|
|
294
|
-
v-for="(
|
|
303
|
+
v-for="([originalIndex, item], pinnedIndex) in pinnedItemsRef"
|
|
295
304
|
:key="pinnedKeysRef[pinnedIndex]"
|
|
296
|
-
:class="[$style.item, getItemClass(
|
|
297
|
-
:titleClass="getItemClassTitle(
|
|
298
|
-
:contentClass="getItemClassContent(
|
|
299
|
-
:beforeClass="getItemClassBefore(
|
|
300
|
-
:afterClass="getItemClassAfter(
|
|
301
|
-
:index="
|
|
302
|
-
:item="
|
|
305
|
+
:class="[$style.item, getItemClass(item, originalIndex)]"
|
|
306
|
+
:titleClass="getItemClassTitle(item, originalIndex)"
|
|
307
|
+
:contentClass="getItemClassContent(item, originalIndex)"
|
|
308
|
+
:beforeClass="getItemClassBefore(item, originalIndex)"
|
|
309
|
+
:afterClass="getItemClassAfter(item, originalIndex)"
|
|
310
|
+
:index="originalIndex"
|
|
311
|
+
:item="item"
|
|
303
312
|
:showDragHandle="dndSortingEnabled"
|
|
304
|
-
:isActive="isActiveItem(
|
|
305
|
-
:isDraggable="isDraggableItem(
|
|
306
|
-
:isRemovable="isRemovableItem(
|
|
307
|
-
:isToggable="isToggableItem(
|
|
308
|
-
:isToggled="isToggledItem(
|
|
309
|
-
:isPinnable="isPinnableItem(
|
|
313
|
+
:isActive="isActiveItem(item, originalIndex)"
|
|
314
|
+
:isDraggable="isDraggableItem(item, originalIndex)"
|
|
315
|
+
:isRemovable="isRemovableItem(item, originalIndex)"
|
|
316
|
+
:isToggable="isToggableItem(item, originalIndex)"
|
|
317
|
+
:isToggled="isToggledItem(item, originalIndex)"
|
|
318
|
+
:isPinnable="isPinnableItem(item, originalIndex)"
|
|
310
319
|
:isPinned="true"
|
|
311
|
-
:isExpandable="isExpandableItem(
|
|
312
|
-
:isExpanded="isExpandedItem(
|
|
313
|
-
@click="emits('itemClick',
|
|
320
|
+
:isExpandable="isExpandableItem(item, originalIndex)"
|
|
321
|
+
:isExpanded="isExpandedItem(item, originalIndex)"
|
|
322
|
+
@click="emits('itemClick', item)"
|
|
314
323
|
@remove="handleRemove"
|
|
315
324
|
@toggle="handleToggle"
|
|
316
325
|
@pin="handlePin"
|
|
@@ -332,26 +341,26 @@ const getItemClassAfter = getClassFunction(props.itemClassAfter);
|
|
|
332
341
|
</div>
|
|
333
342
|
<div v-if="hasUnpinnedItems" ref="unpinnedContainerRef" :class="$style.list">
|
|
334
343
|
<PlElementListItem
|
|
335
|
-
v-for="(
|
|
344
|
+
v-for="([originalIndex, item], unpinnedIndex) in unpinnedItemsRef"
|
|
336
345
|
:key="unpinnedKeysRef[unpinnedIndex]"
|
|
337
|
-
:class="[$style.item, getItemClass(
|
|
338
|
-
:titleClass="getItemClassTitle(
|
|
339
|
-
:contentClass="getItemClassContent(
|
|
340
|
-
:beforeClass="getItemClassBefore(
|
|
341
|
-
:afterClass="getItemClassAfter(
|
|
342
|
-
:index="
|
|
343
|
-
:item="
|
|
346
|
+
:class="[$style.item, getItemClass(item, originalIndex)]"
|
|
347
|
+
:titleClass="getItemClassTitle(item, originalIndex)"
|
|
348
|
+
:contentClass="getItemClassContent(item, originalIndex)"
|
|
349
|
+
:beforeClass="getItemClassBefore(item, originalIndex)"
|
|
350
|
+
:afterClass="getItemClassAfter(item, originalIndex)"
|
|
351
|
+
:index="originalIndex"
|
|
352
|
+
:item="item"
|
|
344
353
|
:showDragHandle="dndSortingEnabled"
|
|
345
|
-
:isActive="isActiveItem(
|
|
346
|
-
:isDraggable="isDraggableItem(
|
|
347
|
-
:isRemovable="isRemovableItem(
|
|
348
|
-
:isToggable="isToggableItem(
|
|
349
|
-
:isToggled="isToggledItem(
|
|
350
|
-
:isPinnable="isPinnableItem(
|
|
354
|
+
:isActive="isActiveItem(item, originalIndex)"
|
|
355
|
+
:isDraggable="isDraggableItem(item, originalIndex)"
|
|
356
|
+
:isRemovable="isRemovableItem(item, originalIndex)"
|
|
357
|
+
:isToggable="isToggableItem(item, originalIndex)"
|
|
358
|
+
:isToggled="isToggledItem(item, originalIndex)"
|
|
359
|
+
:isPinnable="isPinnableItem(item, originalIndex)"
|
|
351
360
|
:isPinned="false"
|
|
352
|
-
:isExpandable="isExpandableItem(
|
|
353
|
-
:isExpanded="isExpandedItem(
|
|
354
|
-
@click="emits('itemClick',
|
|
361
|
+
:isExpandable="isExpandableItem(item, originalIndex)"
|
|
362
|
+
:isExpanded="isExpandedItem(item, originalIndex)"
|
|
363
|
+
@click="emits('itemClick', item)"
|
|
355
364
|
@remove="handleRemove"
|
|
356
365
|
@toggle="handleToggle"
|
|
357
366
|
@pin="handlePin"
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
export const moveElements = <T>(array: T[], from: number, to: number): T[] => {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export const moveElements = <T>(array: readonly T[], from: number, to: number): T[] => {
|
|
2
|
+
const result = [...array];
|
|
3
|
+
if (to >= 0 && to < result.length) {
|
|
4
|
+
const [element] = result.splice(from, 1);
|
|
5
|
+
result.splice(to, 0, element);
|
|
5
6
|
} else {
|
|
6
7
|
console.warn(
|
|
7
|
-
`Invalid move operation: from ${from} to ${to} in array of length ${
|
|
8
|
+
`Invalid move operation: from ${from} to ${to} in array of length ${result.length}`,
|
|
8
9
|
);
|
|
9
10
|
}
|
|
10
11
|
|
|
11
|
-
return
|
|
12
|
+
return result;
|
|
12
13
|
};
|
|
@@ -3,7 +3,7 @@ import type { FilterSpecMetadataRecord } from "./types";
|
|
|
3
3
|
|
|
4
4
|
export const filterUiMetadata = {
|
|
5
5
|
equal: {
|
|
6
|
-
label: "
|
|
6
|
+
label: "Equals (=)",
|
|
7
7
|
form: {
|
|
8
8
|
column: {
|
|
9
9
|
label: "Column",
|
|
@@ -24,7 +24,7 @@ export const filterUiMetadata = {
|
|
|
24
24
|
supportedFor: isNumericValueType,
|
|
25
25
|
},
|
|
26
26
|
notEqual: {
|
|
27
|
-
label: "
|
|
27
|
+
label: "Not Equal To (≠)",
|
|
28
28
|
form: {
|
|
29
29
|
column: {
|
|
30
30
|
label: "Column",
|
|
@@ -45,7 +45,7 @@ export const filterUiMetadata = {
|
|
|
45
45
|
supportedFor: isNumericValueType,
|
|
46
46
|
},
|
|
47
47
|
lessThan: {
|
|
48
|
-
label: "
|
|
48
|
+
label: "Below (<)",
|
|
49
49
|
form: {
|
|
50
50
|
column: {
|
|
51
51
|
label: "Column",
|
|
@@ -66,7 +66,7 @@ export const filterUiMetadata = {
|
|
|
66
66
|
supportedFor: isNumericValueType,
|
|
67
67
|
},
|
|
68
68
|
greaterThan: {
|
|
69
|
-
label: "
|
|
69
|
+
label: "Above (>)",
|
|
70
70
|
form: {
|
|
71
71
|
column: {
|
|
72
72
|
label: "Column",
|
|
@@ -87,7 +87,7 @@ export const filterUiMetadata = {
|
|
|
87
87
|
supportedFor: isNumericValueType,
|
|
88
88
|
},
|
|
89
89
|
lessThanOrEqual: {
|
|
90
|
-
label: "
|
|
90
|
+
label: "At Most (≤)",
|
|
91
91
|
form: {
|
|
92
92
|
column: {
|
|
93
93
|
label: "Column",
|
|
@@ -108,7 +108,7 @@ export const filterUiMetadata = {
|
|
|
108
108
|
supportedFor: isNumericValueType,
|
|
109
109
|
},
|
|
110
110
|
greaterThanOrEqual: {
|
|
111
|
-
label: "
|
|
111
|
+
label: "At Least (≥)",
|
|
112
112
|
form: {
|
|
113
113
|
column: {
|
|
114
114
|
label: "Column",
|
|
@@ -308,7 +308,7 @@ export const filterUiMetadata = {
|
|
|
308
308
|
supportedFor: isNumericValueType,
|
|
309
309
|
},
|
|
310
310
|
patternContainSubsequence: {
|
|
311
|
-
label: "
|
|
311
|
+
label: "Contains (~)",
|
|
312
312
|
form: {
|
|
313
313
|
column: {
|
|
314
314
|
label: "Column",
|
|
@@ -329,7 +329,7 @@ export const filterUiMetadata = {
|
|
|
329
329
|
supportedFor: isStringValueType,
|
|
330
330
|
},
|
|
331
331
|
patternNotContainSubsequence: {
|
|
332
|
-
label: "
|
|
332
|
+
label: "Does Not Contain (≁)",
|
|
333
333
|
form: {
|
|
334
334
|
column: {
|
|
335
335
|
label: "Column",
|
|
@@ -350,7 +350,7 @@ export const filterUiMetadata = {
|
|
|
350
350
|
supportedFor: isStringValueType,
|
|
351
351
|
},
|
|
352
352
|
patternEquals: {
|
|
353
|
-
label: "
|
|
353
|
+
label: "Equals (=)",
|
|
354
354
|
form: {
|
|
355
355
|
column: {
|
|
356
356
|
label: "Column",
|
|
@@ -371,7 +371,7 @@ export const filterUiMetadata = {
|
|
|
371
371
|
supportedFor: isStringValueType,
|
|
372
372
|
},
|
|
373
373
|
patternNotEquals: {
|
|
374
|
-
label: "
|
|
374
|
+
label: "Not Equal To (≠)",
|
|
375
375
|
form: {
|
|
376
376
|
column: {
|
|
377
377
|
label: "Column",
|
|
@@ -392,7 +392,7 @@ export const filterUiMetadata = {
|
|
|
392
392
|
supportedFor: isStringValueType,
|
|
393
393
|
},
|
|
394
394
|
isNA: {
|
|
395
|
-
label: "Is NA",
|
|
395
|
+
label: "Is Empty (NA)",
|
|
396
396
|
form: {
|
|
397
397
|
column: {
|
|
398
398
|
label: "Column",
|
|
@@ -408,7 +408,7 @@ export const filterUiMetadata = {
|
|
|
408
408
|
supportedFor: () => true,
|
|
409
409
|
},
|
|
410
410
|
isNotNA: {
|
|
411
|
-
label: "Is Not NA",
|
|
411
|
+
label: "Is Not Empty (≠ NA)",
|
|
412
412
|
form: {
|
|
413
413
|
column: {
|
|
414
414
|
label: "Column",
|
|
@@ -472,7 +472,7 @@ export const filterUiMetadata = {
|
|
|
472
472
|
supportedFor: () => false,
|
|
473
473
|
},
|
|
474
474
|
patternMatchesRegularExpression: {
|
|
475
|
-
label: "
|
|
475
|
+
label: "Matches Regex (.*)",
|
|
476
476
|
form: {
|
|
477
477
|
column: {
|
|
478
478
|
label: "Column",
|
|
@@ -493,7 +493,7 @@ export const filterUiMetadata = {
|
|
|
493
493
|
supportedFor: isStringValueType,
|
|
494
494
|
},
|
|
495
495
|
patternFuzzyContainSubsequence: {
|
|
496
|
-
label: "
|
|
496
|
+
label: "Contains Approximately (Fuzzy ~)",
|
|
497
497
|
form: {
|
|
498
498
|
column: {
|
|
499
499
|
label: "Column",
|
|
@@ -514,7 +514,7 @@ export const filterUiMetadata = {
|
|
|
514
514
|
supportedFor: isStringValueType,
|
|
515
515
|
},
|
|
516
516
|
inSet: {
|
|
517
|
-
label: "
|
|
517
|
+
label: "In List (∈)",
|
|
518
518
|
form: {
|
|
519
519
|
column: {
|
|
520
520
|
label: "Column",
|
|
@@ -535,7 +535,7 @@ export const filterUiMetadata = {
|
|
|
535
535
|
supportedFor: isStringValueType,
|
|
536
536
|
},
|
|
537
537
|
notInSet: {
|
|
538
|
-
label: "
|
|
538
|
+
label: "Not In List (∉)",
|
|
539
539
|
form: {
|
|
540
540
|
column: {
|
|
541
541
|
label: "Column",
|