@platforma-sdk/model 1.45.17 → 1.45.23
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/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.d.ts +6 -4
- package/dist/components/PlAnnotations/filters_ui.d.ts.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
- package/dist/filters/types.d.ts +7 -7
- package/dist/filters/types.d.ts.map +1 -1
- package/dist/package.json.cjs +1 -1
- package/dist/package.json.js +1 -1
- package/package.json +7 -7
- package/src/components/PlAnnotations/filters_ui.ts +3 -5
- package/src/filters/types.ts +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters_ui.cjs","sources":["../../../src/components/PlAnnotations/filters_ui.ts"],"sourcesContent":["// @DEPRECATED - use sdk/model/src/filters + sdk/model/src/annotations\nimport type { SUniversalPColumnId } from '@milaboratories/pl-model-common';\nimport type { FilterSpecUi } from '../../annotations';\nimport type { FilterSpec } from '../../filters';\nimport type { AnnotationFilter, AnnotationMode, AnnotationScript, IsNA, NotFilter, NumericalComparisonFilter, PatternFilter, PatternPredicate, ValueRank } from './filter';\n\nexport type FilterUi = FilterSpec<Extract<\n FilterSpec,\n // supported filters\n { type:\n | 'lessThan'\n | 'greaterThan'\n | 'lessThanOrEqual'\n | 'greaterThanOrEqual'\n | 'lessThanColumn'\n | 'lessThanColumnOrEqual'\n | 'patternContainSubsequence'\n | 'patternNotContainSubsequence'\n | 'patternEquals'\n | 'patternNotEquals'\n | 'topN'\n | 'bottomN'\n | 'isNA'\n | 'isNotNA';\n }\n>, { id?: number; name?: string; isExpanded?: boolean }>;\n\nexport type FilterUiType = Exclude<FilterUi, { type: undefined }>['type'];\n\nexport type FilterUiOfType<T extends FilterUiType> = Extract<FilterUi, { type: T }>;\n\n// DEPRECATED - use lib/ui/uikit/src/composition/filters\nexport function unreachable(x: never): never {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n throw new Error('Unexpected object: ' + x);\n}\n\nexport type TypeToLiteral<T> =\n [T] extends [FilterUiType] ? 'FilterUiType' :\n [T] extends [SUniversalPColumnId] ? 'SUniversalPColumnId' :\n [T] extends [PatternPredicate] ? 'PatternPredicate' :\n [T] extends [AnnotationFilter[]] ? 'AnnotationFilter[]' :\n [T] extends [AnnotationFilter] ? 'AnnotationFilter' :\n [T] extends [number] ? 'number' :\n [T] extends [number | undefined] ? 'number?' :\n [T] extends [string] ? 'string' :\n [T] extends [string | undefined] ? 'string?' :\n [T] extends [boolean] ? 'boolean' :\n [T] extends [boolean | undefined] ? 'boolean?' :\n [T] extends [unknown[]] ? 'unknown[]' :\n // this is special\n T extends number ? 'number' :\n T extends string ? 'string' :\n T extends boolean ? 'boolean' :\n T extends Record<string, unknown> ? 'form' :\n 'unknown';\n\n// @TODO: \"parse\" option\nexport type TypeField<V> = {\n fieldType: TypeToLiteral<V>;\n label: string;\n defaultValue: () => V | undefined;\n};\n\nexport type TypeFieldRecord<T extends FilterUi> = { [K in keyof T]: TypeField<T[K]>; };\n\nexport type TypeForm<T> = {\n [P in keyof T]: T[P] extends Record<string, unknown> ? {\n fieldType: 'form';\n label?: string;\n form?: T[P] extends Record<string, unknown> ? TypeForm<T[P]> : undefined;\n defaultValue: () => T[P];\n } : TypeField<T[P]>;\n};\n\nexport type FormField =\n {\n fieldType: 'form';\n form?: Record<string, FormField>;\n defaultValue: () => Record<string, unknown>;\n }\n | TypeField<FilterUiType>\n | TypeField<string>\n | TypeField<number>\n | TypeField<number | undefined>\n | TypeField<boolean>\n | TypeField<boolean | undefined>\n | TypeField<SUniversalPColumnId>;\n\nexport type AnyForm = Record<string, FormField>;\n\nexport type AnnotationStepUi = FilterSpecUi<FilterUi> & {\n id?: number;\n};\n\nexport type AnnotationScriptUi = {\n isCreated?: boolean;\n title: string;\n mode: AnnotationMode;\n steps: AnnotationStepUi[];\n};\n\nexport function compileFilter(ui: FilterUi): AnnotationFilter {\n if (ui.type === 'or') {\n return {\n type: 'or' as const,\n filters: compileFilters(ui.filters),\n };\n }\n\n if (ui.type === 'and') {\n return {\n type: 'and' as const,\n filters: compileFilters(ui.filters),\n };\n }\n\n if (ui.type === 'not') {\n return {\n type: 'not' as const,\n filter: compileFilter(ui.filter),\n };\n }\n\n if (ui.type === 'isNA') {\n return {\n type: 'isNA' as const,\n column: ui.column,\n };\n }\n\n if (ui.type === 'isNotNA') {\n const isNAFilter: IsNA = { type: 'isNA', column: ui.column };\n const notFilter: NotFilter = { type: 'not', filter: isNAFilter };\n return notFilter;\n }\n\n if (ui.type === 'patternEquals') {\n return {\n type: 'pattern' as const,\n column: ui.column,\n predicate: {\n type: 'equals' as const,\n value: ui.value,\n },\n };\n }\n\n if (ui.type === 'patternNotEquals') {\n const patternFilter: PatternFilter = {\n type: 'pattern',\n column: ui.column,\n predicate: { type: 'equals', value: ui.value },\n };\n const notFilter: NotFilter = { type: 'not', filter: patternFilter };\n return notFilter;\n }\n\n if (ui.type === 'patternContainSubsequence') {\n return {\n type: 'pattern' as const,\n column: ui.column,\n predicate: {\n type: 'containSubsequence' as const,\n value: ui.value,\n },\n };\n }\n\n if (ui.type === 'patternNotContainSubsequence') {\n const patternFilter: PatternFilter = {\n type: 'pattern',\n column: ui.column,\n predicate: { type: 'containSubsequence', value: ui.value },\n };\n const notFilter: NotFilter = { type: 'not', filter: patternFilter };\n return notFilter;\n }\n\n if (ui.type === 'topN') {\n const rankTransform: ValueRank = {\n transformer: 'rank',\n column: ui.column,\n descending: true,\n };\n const comparisonFilter: NumericalComparisonFilter = {\n type: 'numericalComparison',\n lhs: rankTransform,\n rhs: ui.n,\n allowEqual: true,\n };\n return comparisonFilter;\n }\n\n if (ui.type === 'bottomN') {\n const rankTransform: ValueRank = {\n transformer: 'rank',\n column: ui.column,\n };\n const comparisonFilter: NumericalComparisonFilter = {\n type: 'numericalComparison',\n lhs: rankTransform,\n rhs: ui.n,\n allowEqual: true,\n };\n return comparisonFilter;\n }\n\n if (ui.type === 'lessThan') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.x,\n };\n }\n\n if (ui.type === 'greaterThan') {\n return {\n type: 'numericalComparison' as const,\n rhs: ui.column,\n lhs: ui.x,\n };\n }\n\n if (ui.type === 'greaterThanOrEqual') {\n return {\n type: 'numericalComparison' as const,\n rhs: ui.column,\n lhs: ui.x,\n allowEqual: true,\n };\n }\n\n if (ui.type === 'lessThanOrEqual') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.x,\n allowEqual: true,\n };\n }\n\n if (ui.type === 'lessThanColumn') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.rhs,\n minDiff: ui.minDiff,\n allowEqual: undefined,\n };\n }\n\n if (ui.type === 'lessThanColumnOrEqual') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.rhs,\n minDiff: ui.minDiff,\n allowEqual: true,\n };\n }\n\n unreachable(ui);\n}\n\nexport function compileFilters(uiFilters: FilterUi[]): AnnotationFilter[] {\n return uiFilters.filter((f) => f.type !== undefined).map(compileFilter);\n}\n\nexport function compileAnnotationScript(uiScript: AnnotationScriptUi): AnnotationScript {\n return {\n title: uiScript.title,\n mode: uiScript.mode,\n steps: uiScript.steps\n .filter((step) => {\n // No need to compile empty steps\n if (step.filter.type == null) {\n return false;\n }\n\n if (step.filter.type === 'or') {\n return step.filter.filters.length > 0;\n }\n\n if (step.filter.type === 'and') {\n return step.filter.filters.length > 0;\n }\n\n return false;\n })\n .map((step) => ({\n label: step.label.trim(),\n filter: compileFilter(step.filter),\n })),\n };\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filters_ui.cjs","sources":["../../../src/components/PlAnnotations/filters_ui.ts"],"sourcesContent":["// @DEPRECATED - use sdk/model/src/filters + sdk/model/src/annotations\nimport type { SUniversalPColumnId } from '@milaboratories/pl-model-common';\nimport type { FilterSpecUi } from '../../annotations';\nimport type { FilterSpec, FilterSpecLeaf } from '../../filters';\nimport type { AnnotationFilter, AnnotationMode, AnnotationScript, IsNA, NotFilter, NumericalComparisonFilter, PatternFilter, PatternPredicate, ValueRank } from './filter';\n\nexport type FilterUi = FilterSpec<Extract<\n FilterSpecLeaf,\n // supported filters\n { type:\n | 'lessThan'\n | 'greaterThan'\n | 'lessThanOrEqual'\n | 'greaterThanOrEqual'\n | 'lessThanColumn'\n | 'lessThanColumnOrEqual'\n | 'patternContainSubsequence'\n | 'patternNotContainSubsequence'\n | 'patternEquals'\n | 'patternNotEquals'\n | 'topN'\n | 'bottomN'\n | 'isNA'\n | 'isNotNA';\n }\n>, { id?: number; name?: string; isExpanded?: boolean }>;\n\nexport type FilterUiType = Exclude<FilterUi, { type: undefined }>['type'];\n\nexport type FilterUiOfType<T extends FilterUiType> = Extract<FilterUi, { type: T }>;\n\n// DEPRECATED - use lib/ui/uikit/src/composition/filters\nexport function unreachable(x: never): never {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n throw new Error('Unexpected object: ' + x);\n}\n\nexport type TypeToLiteral<T> =\n [T] extends [FilterUiType] ? 'FilterUiType' :\n [T] extends [SUniversalPColumnId] ? 'SUniversalPColumnId' :\n [T] extends [PatternPredicate] ? 'PatternPredicate' :\n [T] extends [AnnotationFilter[]] ? 'AnnotationFilter[]' :\n [T] extends [AnnotationFilter] ? 'AnnotationFilter' :\n [T] extends [number] ? 'number' :\n [T] extends [number | undefined] ? 'number?' :\n [T] extends [string] ? 'string' :\n [T] extends [string | undefined] ? 'string?' :\n [T] extends [boolean] ? 'boolean' :\n [T] extends [boolean | undefined] ? 'boolean?' :\n [T] extends [unknown[]] ? 'unknown[]' :\n // this is special\n T extends number ? 'number' :\n T extends string ? 'string' :\n T extends boolean ? 'boolean' :\n T extends Record<string, unknown> ? 'form' :\n 'unknown';\n\n// @TODO: \"parse\" option\nexport type TypeField<V> = {\n fieldType: TypeToLiteral<V>;\n label: string;\n defaultValue: () => V | undefined;\n};\n\nexport type TypeFieldRecord<T extends FilterUi> = { [K in keyof T]: TypeField<T[K]>; };\n\nexport type TypeForm<T> = {\n [P in keyof T]: T[P] extends Record<string, unknown> ? {\n fieldType: 'form';\n label?: string;\n form?: T[P] extends Record<string, unknown> ? TypeForm<T[P]> : undefined;\n defaultValue: () => T[P];\n } : TypeField<T[P]>;\n};\n\nexport type FormField =\n {\n fieldType: 'form';\n form?: Record<string, FormField>;\n defaultValue: () => Record<string, unknown>;\n }\n | TypeField<FilterUiType>\n | TypeField<string>\n | TypeField<number>\n | TypeField<number | undefined>\n | TypeField<boolean>\n | TypeField<boolean | undefined>\n | TypeField<SUniversalPColumnId>;\n\nexport type AnyForm = Record<string, FormField>;\n\nexport type AnnotationStepUi = FilterSpecUi<Extract<FilterUi, { type: 'and' | 'or' }>> & { id: number };\n\nexport type AnnotationScriptUi = {\n isCreated?: boolean;\n title: string;\n mode: AnnotationMode;\n steps: AnnotationStepUi[];\n};\n\nexport function compileFilter(ui: FilterUi): AnnotationFilter {\n if (ui.type === 'or') {\n return {\n type: 'or' as const,\n filters: compileFilters(ui.filters),\n };\n }\n\n if (ui.type === 'and') {\n return {\n type: 'and' as const,\n filters: compileFilters(ui.filters),\n };\n }\n\n if (ui.type === 'not') {\n return {\n type: 'not' as const,\n filter: compileFilter(ui.filter),\n };\n }\n\n if (ui.type === 'isNA') {\n return {\n type: 'isNA' as const,\n column: ui.column,\n };\n }\n\n if (ui.type === 'isNotNA') {\n const isNAFilter: IsNA = { type: 'isNA', column: ui.column };\n const notFilter: NotFilter = { type: 'not', filter: isNAFilter };\n return notFilter;\n }\n\n if (ui.type === 'patternEquals') {\n return {\n type: 'pattern' as const,\n column: ui.column,\n predicate: {\n type: 'equals' as const,\n value: ui.value,\n },\n };\n }\n\n if (ui.type === 'patternNotEquals') {\n const patternFilter: PatternFilter = {\n type: 'pattern',\n column: ui.column,\n predicate: { type: 'equals', value: ui.value },\n };\n const notFilter: NotFilter = { type: 'not', filter: patternFilter };\n return notFilter;\n }\n\n if (ui.type === 'patternContainSubsequence') {\n return {\n type: 'pattern' as const,\n column: ui.column,\n predicate: {\n type: 'containSubsequence' as const,\n value: ui.value,\n },\n };\n }\n\n if (ui.type === 'patternNotContainSubsequence') {\n const patternFilter: PatternFilter = {\n type: 'pattern',\n column: ui.column,\n predicate: { type: 'containSubsequence', value: ui.value },\n };\n const notFilter: NotFilter = { type: 'not', filter: patternFilter };\n return notFilter;\n }\n\n if (ui.type === 'topN') {\n const rankTransform: ValueRank = {\n transformer: 'rank',\n column: ui.column,\n descending: true,\n };\n const comparisonFilter: NumericalComparisonFilter = {\n type: 'numericalComparison',\n lhs: rankTransform,\n rhs: ui.n,\n allowEqual: true,\n };\n return comparisonFilter;\n }\n\n if (ui.type === 'bottomN') {\n const rankTransform: ValueRank = {\n transformer: 'rank',\n column: ui.column,\n };\n const comparisonFilter: NumericalComparisonFilter = {\n type: 'numericalComparison',\n lhs: rankTransform,\n rhs: ui.n,\n allowEqual: true,\n };\n return comparisonFilter;\n }\n\n if (ui.type === 'lessThan') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.x,\n };\n }\n\n if (ui.type === 'greaterThan') {\n return {\n type: 'numericalComparison' as const,\n rhs: ui.column,\n lhs: ui.x,\n };\n }\n\n if (ui.type === 'greaterThanOrEqual') {\n return {\n type: 'numericalComparison' as const,\n rhs: ui.column,\n lhs: ui.x,\n allowEqual: true,\n };\n }\n\n if (ui.type === 'lessThanOrEqual') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.x,\n allowEqual: true,\n };\n }\n\n if (ui.type === 'lessThanColumn') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.rhs,\n minDiff: ui.minDiff,\n allowEqual: undefined,\n };\n }\n\n if (ui.type === 'lessThanColumnOrEqual') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.rhs,\n minDiff: ui.minDiff,\n allowEqual: true,\n };\n }\n\n unreachable(ui);\n}\n\nexport function compileFilters(uiFilters: FilterUi[]): AnnotationFilter[] {\n return uiFilters.filter((f) => f.type !== undefined).map(compileFilter);\n}\n\nexport function compileAnnotationScript(uiScript: AnnotationScriptUi): AnnotationScript {\n return {\n title: uiScript.title,\n mode: uiScript.mode,\n steps: uiScript.steps\n .filter((step) => {\n // No need to compile empty steps\n if (step.filter.type == null) {\n return false;\n }\n\n if (step.filter.type === 'or') {\n return step.filter.filters.length > 0;\n }\n\n if (step.filter.type === 'and') {\n return step.filter.filters.length > 0;\n }\n\n return false;\n })\n .map((step) => ({\n label: step.label.trim(),\n filter: compileFilter(step.filter),\n })),\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { SUniversalPColumnId } from '@milaboratories/pl-model-common';
|
|
2
2
|
import type { FilterSpecUi } from '../../annotations';
|
|
3
|
-
import type { FilterSpec } from '../../filters';
|
|
3
|
+
import type { FilterSpec, FilterSpecLeaf } from '../../filters';
|
|
4
4
|
import type { AnnotationFilter, AnnotationMode, AnnotationScript, PatternPredicate } from './filter';
|
|
5
|
-
export type FilterUi = FilterSpec<Extract<
|
|
5
|
+
export type FilterUi = FilterSpec<Extract<FilterSpecLeaf, {
|
|
6
6
|
type: 'lessThan' | 'greaterThan' | 'lessThanOrEqual' | 'greaterThanOrEqual' | 'lessThanColumn' | 'lessThanColumnOrEqual' | 'patternContainSubsequence' | 'patternNotContainSubsequence' | 'patternEquals' | 'patternNotEquals' | 'topN' | 'bottomN' | 'isNA' | 'isNotNA';
|
|
7
7
|
}>, {
|
|
8
8
|
id?: number;
|
|
@@ -63,8 +63,10 @@ export type FormField = {
|
|
|
63
63
|
defaultValue: () => Record<string, unknown>;
|
|
64
64
|
} | TypeField<FilterUiType> | TypeField<string> | TypeField<number> | TypeField<number | undefined> | TypeField<boolean> | TypeField<boolean | undefined> | TypeField<SUniversalPColumnId>;
|
|
65
65
|
export type AnyForm = Record<string, FormField>;
|
|
66
|
-
export type AnnotationStepUi = FilterSpecUi<FilterUi
|
|
67
|
-
|
|
66
|
+
export type AnnotationStepUi = FilterSpecUi<Extract<FilterUi, {
|
|
67
|
+
type: 'and' | 'or';
|
|
68
|
+
}>> & {
|
|
69
|
+
id: number;
|
|
68
70
|
};
|
|
69
71
|
export type AnnotationScriptUi = {
|
|
70
72
|
isCreated?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters_ui.d.ts","sourceRoot":"","sources":["../../../src/components/PlAnnotations/filters_ui.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"filters_ui.d.ts","sourceRoot":"","sources":["../../../src/components/PlAnnotations/filters_ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters_ui.js","sources":["../../../src/components/PlAnnotations/filters_ui.ts"],"sourcesContent":["// @DEPRECATED - use sdk/model/src/filters + sdk/model/src/annotations\nimport type { SUniversalPColumnId } from '@milaboratories/pl-model-common';\nimport type { FilterSpecUi } from '../../annotations';\nimport type { FilterSpec } from '../../filters';\nimport type { AnnotationFilter, AnnotationMode, AnnotationScript, IsNA, NotFilter, NumericalComparisonFilter, PatternFilter, PatternPredicate, ValueRank } from './filter';\n\nexport type FilterUi = FilterSpec<Extract<\n FilterSpec,\n // supported filters\n { type:\n | 'lessThan'\n | 'greaterThan'\n | 'lessThanOrEqual'\n | 'greaterThanOrEqual'\n | 'lessThanColumn'\n | 'lessThanColumnOrEqual'\n | 'patternContainSubsequence'\n | 'patternNotContainSubsequence'\n | 'patternEquals'\n | 'patternNotEquals'\n | 'topN'\n | 'bottomN'\n | 'isNA'\n | 'isNotNA';\n }\n>, { id?: number; name?: string; isExpanded?: boolean }>;\n\nexport type FilterUiType = Exclude<FilterUi, { type: undefined }>['type'];\n\nexport type FilterUiOfType<T extends FilterUiType> = Extract<FilterUi, { type: T }>;\n\n// DEPRECATED - use lib/ui/uikit/src/composition/filters\nexport function unreachable(x: never): never {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n throw new Error('Unexpected object: ' + x);\n}\n\nexport type TypeToLiteral<T> =\n [T] extends [FilterUiType] ? 'FilterUiType' :\n [T] extends [SUniversalPColumnId] ? 'SUniversalPColumnId' :\n [T] extends [PatternPredicate] ? 'PatternPredicate' :\n [T] extends [AnnotationFilter[]] ? 'AnnotationFilter[]' :\n [T] extends [AnnotationFilter] ? 'AnnotationFilter' :\n [T] extends [number] ? 'number' :\n [T] extends [number | undefined] ? 'number?' :\n [T] extends [string] ? 'string' :\n [T] extends [string | undefined] ? 'string?' :\n [T] extends [boolean] ? 'boolean' :\n [T] extends [boolean | undefined] ? 'boolean?' :\n [T] extends [unknown[]] ? 'unknown[]' :\n // this is special\n T extends number ? 'number' :\n T extends string ? 'string' :\n T extends boolean ? 'boolean' :\n T extends Record<string, unknown> ? 'form' :\n 'unknown';\n\n// @TODO: \"parse\" option\nexport type TypeField<V> = {\n fieldType: TypeToLiteral<V>;\n label: string;\n defaultValue: () => V | undefined;\n};\n\nexport type TypeFieldRecord<T extends FilterUi> = { [K in keyof T]: TypeField<T[K]>; };\n\nexport type TypeForm<T> = {\n [P in keyof T]: T[P] extends Record<string, unknown> ? {\n fieldType: 'form';\n label?: string;\n form?: T[P] extends Record<string, unknown> ? TypeForm<T[P]> : undefined;\n defaultValue: () => T[P];\n } : TypeField<T[P]>;\n};\n\nexport type FormField =\n {\n fieldType: 'form';\n form?: Record<string, FormField>;\n defaultValue: () => Record<string, unknown>;\n }\n | TypeField<FilterUiType>\n | TypeField<string>\n | TypeField<number>\n | TypeField<number | undefined>\n | TypeField<boolean>\n | TypeField<boolean | undefined>\n | TypeField<SUniversalPColumnId>;\n\nexport type AnyForm = Record<string, FormField>;\n\nexport type AnnotationStepUi = FilterSpecUi<FilterUi> & {\n id?: number;\n};\n\nexport type AnnotationScriptUi = {\n isCreated?: boolean;\n title: string;\n mode: AnnotationMode;\n steps: AnnotationStepUi[];\n};\n\nexport function compileFilter(ui: FilterUi): AnnotationFilter {\n if (ui.type === 'or') {\n return {\n type: 'or' as const,\n filters: compileFilters(ui.filters),\n };\n }\n\n if (ui.type === 'and') {\n return {\n type: 'and' as const,\n filters: compileFilters(ui.filters),\n };\n }\n\n if (ui.type === 'not') {\n return {\n type: 'not' as const,\n filter: compileFilter(ui.filter),\n };\n }\n\n if (ui.type === 'isNA') {\n return {\n type: 'isNA' as const,\n column: ui.column,\n };\n }\n\n if (ui.type === 'isNotNA') {\n const isNAFilter: IsNA = { type: 'isNA', column: ui.column };\n const notFilter: NotFilter = { type: 'not', filter: isNAFilter };\n return notFilter;\n }\n\n if (ui.type === 'patternEquals') {\n return {\n type: 'pattern' as const,\n column: ui.column,\n predicate: {\n type: 'equals' as const,\n value: ui.value,\n },\n };\n }\n\n if (ui.type === 'patternNotEquals') {\n const patternFilter: PatternFilter = {\n type: 'pattern',\n column: ui.column,\n predicate: { type: 'equals', value: ui.value },\n };\n const notFilter: NotFilter = { type: 'not', filter: patternFilter };\n return notFilter;\n }\n\n if (ui.type === 'patternContainSubsequence') {\n return {\n type: 'pattern' as const,\n column: ui.column,\n predicate: {\n type: 'containSubsequence' as const,\n value: ui.value,\n },\n };\n }\n\n if (ui.type === 'patternNotContainSubsequence') {\n const patternFilter: PatternFilter = {\n type: 'pattern',\n column: ui.column,\n predicate: { type: 'containSubsequence', value: ui.value },\n };\n const notFilter: NotFilter = { type: 'not', filter: patternFilter };\n return notFilter;\n }\n\n if (ui.type === 'topN') {\n const rankTransform: ValueRank = {\n transformer: 'rank',\n column: ui.column,\n descending: true,\n };\n const comparisonFilter: NumericalComparisonFilter = {\n type: 'numericalComparison',\n lhs: rankTransform,\n rhs: ui.n,\n allowEqual: true,\n };\n return comparisonFilter;\n }\n\n if (ui.type === 'bottomN') {\n const rankTransform: ValueRank = {\n transformer: 'rank',\n column: ui.column,\n };\n const comparisonFilter: NumericalComparisonFilter = {\n type: 'numericalComparison',\n lhs: rankTransform,\n rhs: ui.n,\n allowEqual: true,\n };\n return comparisonFilter;\n }\n\n if (ui.type === 'lessThan') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.x,\n };\n }\n\n if (ui.type === 'greaterThan') {\n return {\n type: 'numericalComparison' as const,\n rhs: ui.column,\n lhs: ui.x,\n };\n }\n\n if (ui.type === 'greaterThanOrEqual') {\n return {\n type: 'numericalComparison' as const,\n rhs: ui.column,\n lhs: ui.x,\n allowEqual: true,\n };\n }\n\n if (ui.type === 'lessThanOrEqual') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.x,\n allowEqual: true,\n };\n }\n\n if (ui.type === 'lessThanColumn') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.rhs,\n minDiff: ui.minDiff,\n allowEqual: undefined,\n };\n }\n\n if (ui.type === 'lessThanColumnOrEqual') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.rhs,\n minDiff: ui.minDiff,\n allowEqual: true,\n };\n }\n\n unreachable(ui);\n}\n\nexport function compileFilters(uiFilters: FilterUi[]): AnnotationFilter[] {\n return uiFilters.filter((f) => f.type !== undefined).map(compileFilter);\n}\n\nexport function compileAnnotationScript(uiScript: AnnotationScriptUi): AnnotationScript {\n return {\n title: uiScript.title,\n mode: uiScript.mode,\n steps: uiScript.steps\n .filter((step) => {\n // No need to compile empty steps\n if (step.filter.type == null) {\n return false;\n }\n\n if (step.filter.type === 'or') {\n return step.filter.filters.length > 0;\n }\n\n if (step.filter.type === 'and') {\n return step.filter.filters.length > 0;\n }\n\n return false;\n })\n .map((step) => ({\n label: step.label.trim(),\n filter: compileFilter(step.filter),\n })),\n };\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filters_ui.js","sources":["../../../src/components/PlAnnotations/filters_ui.ts"],"sourcesContent":["// @DEPRECATED - use sdk/model/src/filters + sdk/model/src/annotations\nimport type { SUniversalPColumnId } from '@milaboratories/pl-model-common';\nimport type { FilterSpecUi } from '../../annotations';\nimport type { FilterSpec, FilterSpecLeaf } from '../../filters';\nimport type { AnnotationFilter, AnnotationMode, AnnotationScript, IsNA, NotFilter, NumericalComparisonFilter, PatternFilter, PatternPredicate, ValueRank } from './filter';\n\nexport type FilterUi = FilterSpec<Extract<\n FilterSpecLeaf,\n // supported filters\n { type:\n | 'lessThan'\n | 'greaterThan'\n | 'lessThanOrEqual'\n | 'greaterThanOrEqual'\n | 'lessThanColumn'\n | 'lessThanColumnOrEqual'\n | 'patternContainSubsequence'\n | 'patternNotContainSubsequence'\n | 'patternEquals'\n | 'patternNotEquals'\n | 'topN'\n | 'bottomN'\n | 'isNA'\n | 'isNotNA';\n }\n>, { id?: number; name?: string; isExpanded?: boolean }>;\n\nexport type FilterUiType = Exclude<FilterUi, { type: undefined }>['type'];\n\nexport type FilterUiOfType<T extends FilterUiType> = Extract<FilterUi, { type: T }>;\n\n// DEPRECATED - use lib/ui/uikit/src/composition/filters\nexport function unreachable(x: never): never {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n throw new Error('Unexpected object: ' + x);\n}\n\nexport type TypeToLiteral<T> =\n [T] extends [FilterUiType] ? 'FilterUiType' :\n [T] extends [SUniversalPColumnId] ? 'SUniversalPColumnId' :\n [T] extends [PatternPredicate] ? 'PatternPredicate' :\n [T] extends [AnnotationFilter[]] ? 'AnnotationFilter[]' :\n [T] extends [AnnotationFilter] ? 'AnnotationFilter' :\n [T] extends [number] ? 'number' :\n [T] extends [number | undefined] ? 'number?' :\n [T] extends [string] ? 'string' :\n [T] extends [string | undefined] ? 'string?' :\n [T] extends [boolean] ? 'boolean' :\n [T] extends [boolean | undefined] ? 'boolean?' :\n [T] extends [unknown[]] ? 'unknown[]' :\n // this is special\n T extends number ? 'number' :\n T extends string ? 'string' :\n T extends boolean ? 'boolean' :\n T extends Record<string, unknown> ? 'form' :\n 'unknown';\n\n// @TODO: \"parse\" option\nexport type TypeField<V> = {\n fieldType: TypeToLiteral<V>;\n label: string;\n defaultValue: () => V | undefined;\n};\n\nexport type TypeFieldRecord<T extends FilterUi> = { [K in keyof T]: TypeField<T[K]>; };\n\nexport type TypeForm<T> = {\n [P in keyof T]: T[P] extends Record<string, unknown> ? {\n fieldType: 'form';\n label?: string;\n form?: T[P] extends Record<string, unknown> ? TypeForm<T[P]> : undefined;\n defaultValue: () => T[P];\n } : TypeField<T[P]>;\n};\n\nexport type FormField =\n {\n fieldType: 'form';\n form?: Record<string, FormField>;\n defaultValue: () => Record<string, unknown>;\n }\n | TypeField<FilterUiType>\n | TypeField<string>\n | TypeField<number>\n | TypeField<number | undefined>\n | TypeField<boolean>\n | TypeField<boolean | undefined>\n | TypeField<SUniversalPColumnId>;\n\nexport type AnyForm = Record<string, FormField>;\n\nexport type AnnotationStepUi = FilterSpecUi<Extract<FilterUi, { type: 'and' | 'or' }>> & { id: number };\n\nexport type AnnotationScriptUi = {\n isCreated?: boolean;\n title: string;\n mode: AnnotationMode;\n steps: AnnotationStepUi[];\n};\n\nexport function compileFilter(ui: FilterUi): AnnotationFilter {\n if (ui.type === 'or') {\n return {\n type: 'or' as const,\n filters: compileFilters(ui.filters),\n };\n }\n\n if (ui.type === 'and') {\n return {\n type: 'and' as const,\n filters: compileFilters(ui.filters),\n };\n }\n\n if (ui.type === 'not') {\n return {\n type: 'not' as const,\n filter: compileFilter(ui.filter),\n };\n }\n\n if (ui.type === 'isNA') {\n return {\n type: 'isNA' as const,\n column: ui.column,\n };\n }\n\n if (ui.type === 'isNotNA') {\n const isNAFilter: IsNA = { type: 'isNA', column: ui.column };\n const notFilter: NotFilter = { type: 'not', filter: isNAFilter };\n return notFilter;\n }\n\n if (ui.type === 'patternEquals') {\n return {\n type: 'pattern' as const,\n column: ui.column,\n predicate: {\n type: 'equals' as const,\n value: ui.value,\n },\n };\n }\n\n if (ui.type === 'patternNotEquals') {\n const patternFilter: PatternFilter = {\n type: 'pattern',\n column: ui.column,\n predicate: { type: 'equals', value: ui.value },\n };\n const notFilter: NotFilter = { type: 'not', filter: patternFilter };\n return notFilter;\n }\n\n if (ui.type === 'patternContainSubsequence') {\n return {\n type: 'pattern' as const,\n column: ui.column,\n predicate: {\n type: 'containSubsequence' as const,\n value: ui.value,\n },\n };\n }\n\n if (ui.type === 'patternNotContainSubsequence') {\n const patternFilter: PatternFilter = {\n type: 'pattern',\n column: ui.column,\n predicate: { type: 'containSubsequence', value: ui.value },\n };\n const notFilter: NotFilter = { type: 'not', filter: patternFilter };\n return notFilter;\n }\n\n if (ui.type === 'topN') {\n const rankTransform: ValueRank = {\n transformer: 'rank',\n column: ui.column,\n descending: true,\n };\n const comparisonFilter: NumericalComparisonFilter = {\n type: 'numericalComparison',\n lhs: rankTransform,\n rhs: ui.n,\n allowEqual: true,\n };\n return comparisonFilter;\n }\n\n if (ui.type === 'bottomN') {\n const rankTransform: ValueRank = {\n transformer: 'rank',\n column: ui.column,\n };\n const comparisonFilter: NumericalComparisonFilter = {\n type: 'numericalComparison',\n lhs: rankTransform,\n rhs: ui.n,\n allowEqual: true,\n };\n return comparisonFilter;\n }\n\n if (ui.type === 'lessThan') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.x,\n };\n }\n\n if (ui.type === 'greaterThan') {\n return {\n type: 'numericalComparison' as const,\n rhs: ui.column,\n lhs: ui.x,\n };\n }\n\n if (ui.type === 'greaterThanOrEqual') {\n return {\n type: 'numericalComparison' as const,\n rhs: ui.column,\n lhs: ui.x,\n allowEqual: true,\n };\n }\n\n if (ui.type === 'lessThanOrEqual') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.x,\n allowEqual: true,\n };\n }\n\n if (ui.type === 'lessThanColumn') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.rhs,\n minDiff: ui.minDiff,\n allowEqual: undefined,\n };\n }\n\n if (ui.type === 'lessThanColumnOrEqual') {\n return {\n type: 'numericalComparison' as const,\n lhs: ui.column,\n rhs: ui.rhs,\n minDiff: ui.minDiff,\n allowEqual: true,\n };\n }\n\n unreachable(ui);\n}\n\nexport function compileFilters(uiFilters: FilterUi[]): AnnotationFilter[] {\n return uiFilters.filter((f) => f.type !== undefined).map(compileFilter);\n}\n\nexport function compileAnnotationScript(uiScript: AnnotationScriptUi): AnnotationScript {\n return {\n title: uiScript.title,\n mode: uiScript.mode,\n steps: uiScript.steps\n .filter((step) => {\n // No need to compile empty steps\n if (step.filter.type == null) {\n return false;\n }\n\n if (step.filter.type === 'or') {\n return step.filter.filters.length > 0;\n }\n\n if (step.filter.type === 'and') {\n return step.filter.filters.length > 0;\n }\n\n return false;\n })\n .map((step) => ({\n label: step.label.trim(),\n filter: compileFilter(step.filter),\n })),\n };\n}\n"],"names":[],"mappings":"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"}
|
package/dist/filters/types.d.ts
CHANGED
|
@@ -5,15 +5,15 @@ export type SimplifiedUniversalPColumnEntry = {
|
|
|
5
5
|
label: string;
|
|
6
6
|
obj: SimplifiedPColumnSpec;
|
|
7
7
|
};
|
|
8
|
-
export type FilterSpecNode<Leaf,
|
|
8
|
+
export type FilterSpecNode<Leaf, CommonNode = {}, CommonLeaf = {}> = CommonLeaf & Leaf | CommonNode & {
|
|
9
9
|
type: 'not';
|
|
10
|
-
filter:
|
|
11
|
-
} |
|
|
10
|
+
filter: CommonLeaf & Leaf;
|
|
11
|
+
} | CommonNode & {
|
|
12
12
|
type: 'or';
|
|
13
|
-
filters: FilterSpecNode<Leaf,
|
|
14
|
-
} |
|
|
13
|
+
filters: FilterSpecNode<Leaf, CommonNode, CommonLeaf>[];
|
|
14
|
+
} | CommonNode & {
|
|
15
15
|
type: 'and';
|
|
16
|
-
filters: FilterSpecNode<Leaf,
|
|
16
|
+
filters: FilterSpecNode<Leaf, CommonNode, CommonLeaf>[];
|
|
17
17
|
};
|
|
18
18
|
export type FilterSpecLeaf = {
|
|
19
19
|
type: undefined;
|
|
@@ -92,7 +92,7 @@ export type FilterSpecLeaf = {
|
|
|
92
92
|
rhs: SUniversalPColumnId;
|
|
93
93
|
minDiff?: number;
|
|
94
94
|
};
|
|
95
|
-
export type FilterSpec<Leaf extends FilterSpecLeaf = FilterSpecLeaf,
|
|
95
|
+
export type FilterSpec<Leaf extends FilterSpecLeaf = FilterSpecLeaf, CommonNode = {}, CommonLeaf = CommonNode> = FilterSpecNode<Leaf, CommonNode, CommonLeaf>;
|
|
96
96
|
export type FilterSpecType = Exclude<FilterSpec, {
|
|
97
97
|
type: undefined;
|
|
98
98
|
}>['type'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/filters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAExF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,CAAC,CAAC;AAEnF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,EAAE,EAAE,mBAAmB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,qBAAqB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/filters/types.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json.cjs
CHANGED
package/dist/package.json.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platforma-sdk/model",
|
|
3
|
-
"version": "1.45.
|
|
3
|
+
"version": "1.45.23",
|
|
4
4
|
"description": "Platforma.bio SDK / Block Model",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -22,19 +22,19 @@
|
|
|
22
22
|
"utility-types": "^3.11.0",
|
|
23
23
|
"canonicalize": "~2.1.0",
|
|
24
24
|
"zod": "~3.23.8",
|
|
25
|
-
"@milaboratories/
|
|
25
|
+
"@milaboratories/pl-model-common": "1.21.4",
|
|
26
26
|
"@milaboratories/pl-error-like": "1.12.5",
|
|
27
|
-
"@milaboratories/
|
|
27
|
+
"@milaboratories/ptabler-expression-js": "1.1.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"typescript": "~5.6.3",
|
|
31
|
-
"vitest": "^
|
|
31
|
+
"vitest": "^4.0.7",
|
|
32
32
|
"fast-json-patch": "^3.1.1",
|
|
33
|
-
"@milaboratories/build-configs": "1.0.8",
|
|
34
33
|
"@platforma-sdk/eslint-config": "1.1.0",
|
|
34
|
+
"@milaboratories/helpers": "1.12.0",
|
|
35
|
+
"@milaboratories/build-configs": "1.0.8",
|
|
35
36
|
"@milaboratories/ts-builder": "1.0.5",
|
|
36
|
-
"@milaboratories/ts-configs": "1.0.6"
|
|
37
|
-
"@milaboratories/helpers": "1.12.0"
|
|
37
|
+
"@milaboratories/ts-configs": "1.0.6"
|
|
38
38
|
},
|
|
39
39
|
"scripts": {
|
|
40
40
|
"type-check": "ts-builder types --target node",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// @DEPRECATED - use sdk/model/src/filters + sdk/model/src/annotations
|
|
2
2
|
import type { SUniversalPColumnId } from '@milaboratories/pl-model-common';
|
|
3
3
|
import type { FilterSpecUi } from '../../annotations';
|
|
4
|
-
import type { FilterSpec } from '../../filters';
|
|
4
|
+
import type { FilterSpec, FilterSpecLeaf } from '../../filters';
|
|
5
5
|
import type { AnnotationFilter, AnnotationMode, AnnotationScript, IsNA, NotFilter, NumericalComparisonFilter, PatternFilter, PatternPredicate, ValueRank } from './filter';
|
|
6
6
|
|
|
7
7
|
export type FilterUi = FilterSpec<Extract<
|
|
8
|
-
|
|
8
|
+
FilterSpecLeaf,
|
|
9
9
|
// supported filters
|
|
10
10
|
{ type:
|
|
11
11
|
| 'lessThan'
|
|
@@ -89,9 +89,7 @@ export type FormField =
|
|
|
89
89
|
|
|
90
90
|
export type AnyForm = Record<string, FormField>;
|
|
91
91
|
|
|
92
|
-
export type AnnotationStepUi = FilterSpecUi<FilterUi
|
|
93
|
-
id?: number;
|
|
94
|
-
};
|
|
92
|
+
export type AnnotationStepUi = FilterSpecUi<Extract<FilterUi, { type: 'and' | 'or' }>> & { id: number };
|
|
95
93
|
|
|
96
94
|
export type AnnotationScriptUi = {
|
|
97
95
|
isCreated?: boolean;
|
package/src/filters/types.ts
CHANGED
|
@@ -8,11 +8,11 @@ export type SimplifiedUniversalPColumnEntry = {
|
|
|
8
8
|
obj: SimplifiedPColumnSpec;
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
export type FilterSpecNode<Leaf,
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
11
|
+
export type FilterSpecNode<Leaf, CommonNode = {}, CommonLeaf = {}> =
|
|
12
|
+
| CommonLeaf & Leaf
|
|
13
|
+
| CommonNode & { type: 'not'; filter: CommonLeaf & Leaf }
|
|
14
|
+
| CommonNode & { type: 'or'; filters: FilterSpecNode<Leaf, CommonNode, CommonLeaf>[] }
|
|
15
|
+
| CommonNode & { type: 'and'; filters: FilterSpecNode<Leaf, CommonNode, CommonLeaf>[] };
|
|
16
16
|
|
|
17
17
|
export type FilterSpecLeaf =
|
|
18
18
|
| { type: undefined }
|
|
@@ -39,8 +39,8 @@ export type FilterSpecLeaf =
|
|
|
39
39
|
| { type: 'lessThanColumnOrEqual'; column: SUniversalPColumnId; rhs: SUniversalPColumnId; minDiff?: number }
|
|
40
40
|
| { type: 'greaterThanColumnOrEqual'; column: SUniversalPColumnId; rhs: SUniversalPColumnId; minDiff?: number };
|
|
41
41
|
|
|
42
|
-
export type FilterSpec<Leaf extends FilterSpecLeaf = FilterSpecLeaf,
|
|
43
|
-
FilterSpecNode<Leaf,
|
|
42
|
+
export type FilterSpec<Leaf extends FilterSpecLeaf = FilterSpecLeaf, CommonNode = {}, CommonLeaf = CommonNode> =
|
|
43
|
+
FilterSpecNode<Leaf, CommonNode, CommonLeaf>;
|
|
44
44
|
|
|
45
45
|
export type FilterSpecType = Exclude<FilterSpec, { type: undefined }>['type'];
|
|
46
46
|
|