@platforma-sdk/model 1.30.24 → 1.30.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.
@@ -1,4 +1,4 @@
1
- import { AnyFunction, AxisId, DataInfo, Option, PColumn, PColumnSelector, PColumnSpec, PColumnValues, PFrameDef, PFrameHandle, PObject, PObjectSpec, PSpecPredicate, PTableDef, PTableHandle, PTableRecordFilter, PTableSorting, PlRef, ResolveAnchorsOptions, ResultCollection, SUniversalPColumnId, ValueOrError, AnchoredIdDeriver } from '@milaboratories/pl-model-common';
1
+ import { AnchoredPColumnSelector, AnyFunction, AxisId, DataInfo, Option, PColumn, PColumnSelector, PColumnSpec, PColumnValues, PFrameDef, PFrameHandle, PObject, PObjectSpec, PSpecPredicate, PTableDef, PTableHandle, PTableRecordFilter, PTableSorting, PlRef, ResolveAnchorsOptions, ResultCollection, SUniversalPColumnId, ValueOrError, AnchoredIdDeriver } from '@milaboratories/pl-model-common';
2
2
  import { Optional } from 'utility-types';
3
3
  import { TreeNodeAccessor } from './accessor';
4
4
  import { FutureRef } from './future';
@@ -12,6 +12,7 @@ export type UniversalColumnOption = {
12
12
  type UniversalPColumnOpts = {
13
13
  labelOps?: LabelDerivationOps;
14
14
  dontWaitAllData?: boolean;
15
+ exclude?: AnchoredPColumnSelector | AnchoredPColumnSelector[];
15
16
  } & ResolveAnchorsOptions;
16
17
  type GetOptionsOpts = {
17
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/render/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,QAAQ,EACR,MAAM,EACN,OAAO,EACP,eAAe,EACf,WAAW,EACX,aAAa,EACb,SAAS,EACT,YAAY,EACZ,OAAO,EAEP,WAAW,EACX,cAAc,EACd,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,KAAK,EACL,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,iBAAiB,EAalB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAS,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,OAAO,EAAqB,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAiBxE,MAAM,MAAM,qBAAqB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAoBlF,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,qBAAqB,CAAC;AAE1B,KAAK,cAAc,GAAG;IACpB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,GAAG,kBAAkB,CAAC;CAC1E,CAAC;AAEF,qBAAa,UAAW,YAAW,cAAc,EAAE,iBAAiB;IAClE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAyC;IAE7D;;OAEG;IACI,gBAAgB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,EAAE;IAIrD,UAAU,CACf,mBAAmB,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,eAAe,GAAG,eAAe,EAAE,EAC3F,IAAI,CAAC,EAAE,cAAc,GACpB,MAAM,EAAE;IACX,uDAAuD;IAChD,UAAU,CACf,mBAAmB,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,eAAe,GAAG,eAAe,EAAE,EAC3F,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,GAAG,kBAAkB,GACvE,MAAM,EAAE;IAsCJ,gBAAgB,CAAC,YAAY,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CAAC,GAAG,iBAAiB,GAAG,SAAS;IAgB7H;;;;;;;OAOG;IACI,mBAAmB,CACxB,YAAY,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CAAC,EACrE,oBAAoB,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,yBAAyB,GAAG,yBAAyB,EAAE,EAChH,IAAI,CAAC,EAAE,oBAAoB,GAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC,EAAE,GAAG,SAAS;IAYvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,mBAAmB,CACjB,YAAY,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CAAC,EACrE,oBAAoB,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,yBAAyB,GAAG,yBAAyB,EAAE,EAChH,IAAI,CAAC,EAAE,oBAAoB,GAC1B;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAE,EAAE,GAAG,SAAS;IAiB9D;;OAEG;IACI,qBAAqB,IAAI,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAIpE,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAc7D;;OAEG;IACI,+BAA+B,IAAI,gBAAgB,CACxD,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAC/D;IAIM,iBAAiB,IAAI,gBAAgB,CAC1C,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAC/D;IAiBD;;OAEG;IACI,sBAAsB,IAAI,gBAAgB,CAAC,WAAW,CAAC;IAIvD,QAAQ,IAAI,gBAAgB,CAAC,WAAW,CAAC;IAIhD;;;OAGG;IACI,YAAY,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS;IAetE;;;;OAIG;IACI,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS;IAMzE;;;;OAIG;IACI,mBAAmB,CAAC,GAAG,EAAE,KAAK,GAAG,WAAW,GAAG,SAAS;IAO/D;;;OAGG;IACI,YAAY,CAAC,GAAG,EAAE,KAAK,GAAG,WAAW,GAAG,SAAS;IAIxD;;;;OAIG;IACI,0BAA0B,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE;IA6CjF;;;OAGG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;IA8B5E;;;;;;OAMG;IACI,aAAa,CAClB,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,eAAe,GAAG,eAAe,EAAE,GAChF,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,EAAE;IA+B1C;;;OAGG;IACI,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;CAalH;AAED,iGAAiG;AACjG,qBAAa,SAAS,CAAC,IAAI,EAAE,OAAO;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IAEzC,SAAgB,IAAI,EAAE,IAAI,CAAC;IAC3B,SAAgB,OAAO,EAAE,OAAO,CAAC;;IASjC,OAAO,CAAC,gBAAgB,CAAC,CAAe;IAExC;;;SAGK;IACL,IAAW,UAAU,IAAI,IAAI,GAAG,SAAS,CAMxC;IAOD,OAAO,CAAC,gBAAgB;IAOxB,IAAW,MAAM,IAAI,gBAAgB,GAAG,SAAS,CAEhD;IAED,IAAW,OAAO,IAAI,gBAAgB,GAAG,SAAS,CAEjD;IAED,SAAgB,UAAU,aAAoB;IAE9C;;;;OAIG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;IAI5E,OAAO,CAAC,qCAAqC;IAStC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,gBAAgB,GAAG,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,GAAG,YAAY;IAQzG,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,gBAAgB,GAAG,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,YAAY;IAClH,YAAY,CAAC,GAAG,EAAE;QACvB,OAAO,EAAE,OAAO,CAAC,gBAAgB,GAAG,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC;QAClF,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;QAC/B,oBAAoB;QACpB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;KAC3B,GAAG,YAAY;IA8BhB,iDAAiD;IAC1C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAItC,wBAAwB,IAAI,MAAM,GAAG,SAAS;CAGtD;AAED,MAAM,MAAM,cAAc,CAAC,IAAI,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,CAC7E,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,KAC3B,GAAG,CAAC;AAET,MAAM,MAAM,eAAe,CAAC,CAAC,IAC3B,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GACxB,CAAC,GACD,CAAC,SAAS,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GACtE,CAAC,GACD;KAAG,GAAG,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAAE,CAAC;AAEtD,MAAM,MAAM,yBAAyB,CAAC,EAAE,SAAS,WAAW,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,CAAC,GAChG,eAAe,CAAC,CAAC,CAAC,GAClB,KAAK,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/render/api.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { AnchoredIdDeriver, AxisId, DataInfo, PColumn, PColumnSelector, PColumnSpec, PObjectId, SUniversalPColumnId, ResolveAnchorsOptions } from '@milaboratories/pl-model-common';
1
+ import { AnchoredIdDeriver, AxisId, DataInfo, PColumn, PColumnSelector, PColumnSpec, PObjectId, SUniversalPColumnId, AnchoredPColumnSelector, ResolveAnchorsOptions } from '@milaboratories/pl-model-common';
2
2
  import { TreeNodeAccessor } from '../accessor';
3
3
  import { LabelDerivationOps } from './label';
4
4
  import { APColumnSelectorWithSplit, PColumnSelectorWithSplit } from './split_selectors';
@@ -20,6 +20,8 @@ export type PColumnEntryUniversal = PColumnEntryWithLabel & {
20
20
  id: SUniversalPColumnId;
21
21
  };
22
22
  type UniversalPColumnOptsNoDeriver = {
23
+ /** If provided, columns matching the provided selectors will be excluded from the result. */
24
+ exclude?: AnchoredPColumnSelector | AnchoredPColumnSelector[];
23
25
  labelOps?: LabelDerivationOps;
24
26
  /** If true, incomplete data will cause the column to be skipped instead of returning undefined for the whole request. */
25
27
  dontWaitAllData?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"column_collection.d.ts","sourceRoot":"","sources":["../../../src/render/util/column_collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"column_collection.d.ts","sourceRoot":"","sources":["../../../src/render/util/column_collection.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ export type LabelDerivationOps = {
13
13
  separator?: string;
14
14
  /** If true, label will be added as suffix (at the end of the generated label). By default label added as a prefix. */
15
15
  addLabelAsSuffix?: boolean;
16
+ /** Trace elements list that will be forced to be included in the label. */
17
+ forceTraceElements?: string[];
16
18
  };
17
19
  export declare const TraceEntry: z.ZodObject<{
18
20
  type: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/render/util/label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sHAAsH;IACtH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;EAKrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAGpD,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;WAAsB,CAAC;AACzC,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAI1C,KAAK,mBAAmB,GAAG,WAAW,GAAG;IACvC,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B,CAAC;AAOF,wBAAgB,YAAY,CAAC,CAAC,EAC5B,MAAM,EAAE,CAAC,EAAE,EACX,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,mBAAmB,EAC9C,GAAG,GAAE,kBAAuB,GAC3B,gBAAgB,CAAC,CAAC,CAAC,EAAE,CA+IvB"}
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/render/util/label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sHAAsH;IACtH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;EAKrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAGpD,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;WAAsB,CAAC;AACzC,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAI1C,KAAK,mBAAmB,GAAG,WAAW,GAAG;IACvC,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B,CAAC;AAOF,wBAAgB,YAAY,CAAC,CAAC,EAC5B,MAAM,EAAE,CAAC,EAAE,EACX,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,mBAAmB,EAC9C,GAAG,GAAE,kBAAuB,GAC3B,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAoJvB"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const PlatformaSDKVersion = "1.30.24";
1
+ export declare const PlatformaSDKVersion = "1.30.37";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/model",
3
- "version": "1.30.24",
3
+ "version": "1.30.37",
4
4
  "description": "Platforma.bio SDK / Block Model",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.js",
@@ -16,16 +16,30 @@ import type {
16
16
  PTableRecordFilter,
17
17
  PTableRecordSingleValueFilterV2,
18
18
  PTableSorting,
19
+ PTableValue,
19
20
  } from '@milaboratories/pl-model-common';
20
- import { canonicalizeJson, getAxisId, getColumnIdAndSpec, matchAxisId } from '@milaboratories/pl-model-common';
21
- import type { AxisLabelProvider, ColumnProvider, RenderCtx } from '../render';
22
- import { PColumnCollection, TreeNodeAccessor } from '../render';
21
+ import {
22
+ canonicalizeJson,
23
+ getAxisId,
24
+ getColumnIdAndSpec,
25
+ matchAxisId,
26
+ parseJson,
27
+ } from '@milaboratories/pl-model-common';
28
+ import type {
29
+ AxisLabelProvider,
30
+ ColumnProvider,
31
+ RenderCtx,
32
+ } from '../render';
33
+ import {
34
+ PColumnCollection,
35
+ TreeNodeAccessor,
36
+ } from '../render';
23
37
 
24
38
  /** Canonicalized PTableColumnSpec JSON string */
25
39
  export type PTableColumnSpecJson = CanonicalizedJson<PTableColumnSpec>;
26
40
 
27
41
  /** Encode `PTableColumnId` as canonicalized JSON string */
28
- export function stringifyPTableColumnId(spec: PTableColumnSpec): PTableColumnSpecJson {
42
+ export function stringifyPTableColumnSpec(spec: PTableColumnSpec): PTableColumnSpecJson {
29
43
  const type = spec.type;
30
44
  switch (type) {
31
45
  case 'axis':
@@ -38,11 +52,6 @@ export function stringifyPTableColumnId(spec: PTableColumnSpec): PTableColumnSpe
38
52
  }
39
53
  }
40
54
 
41
- /** Parse `PTableColumnId` from JSON string */
42
- export function parsePTableColumnId(str: PTableColumnSpecJson): PTableColumnSpec {
43
- return JSON.parse(str) as PTableColumnSpec;
44
- }
45
-
46
55
  /** Data table state */
47
56
  export type PlDataTableGridState = {
48
57
  // TODO request stable key from the driver
@@ -568,6 +577,17 @@ export type PlDataTableModel = {
568
577
  tableHandle: PTableHandle;
569
578
  };
570
579
 
580
+ /**
581
+ * @deprecated Used only in PlAgDataTable v1 that is no longer maintained.
582
+ * Please migrate to v2.
583
+ */
584
+ export type PTableRowKey = PTableValue[];
585
+
586
+ /** Check if column should be omitted from the table */
587
+ export function isColumnHidden(spec: { annotations?: Record<string, string> }): boolean {
588
+ return spec.annotations?.['pl7.app/table/visibility'] === 'hidden';
589
+ }
590
+
571
591
  /** Check if column is hidden by default */
572
592
  export function isColumnOptional(spec: { annotations?: Record<string, string> }): boolean {
573
593
  return spec.annotations?.['pl7.app/table/visibility'] === 'optional';
@@ -583,7 +603,7 @@ export function isColumnOptional(spec: { annotations?: Record<string, string> })
583
603
  */
584
604
  export function createPlDataTableV2<A, U>(
585
605
  ctx: RenderCtx<A, U>,
586
- columns: PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>[],
606
+ inputColumns: PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>[],
587
607
  mainColumnPredicate: (spec: PColumnSpec) => boolean,
588
608
  tableState: PlDataTableState | undefined,
589
609
  ops?: CreatePlDataTableOps,
@@ -592,6 +612,7 @@ export function createPlDataTableV2<A, U>(
592
612
  const filters: PTableRecordSingleValueFilterV2[]
593
613
  = [...(ops?.filters ?? []), ...(tableState?.pTableParams?.filters ?? [])];
594
614
  const sorting: PTableSorting[] = tableState?.pTableParams?.sorting ?? [];
615
+ const columns = inputColumns.filter((c) => !isColumnHidden(c.spec));
595
616
 
596
617
  const mainColumn = columns.find((c) => mainColumnPredicate(c.spec));
597
618
  if (!mainColumn) return undefined;
@@ -604,7 +625,7 @@ export function createPlDataTableV2<A, U>(
604
625
  if (coreJoinType === 'inner') return [];
605
626
 
606
627
  const hiddenColIds = tableState?.gridState.columnVisibility?.hiddenColIds
607
- ?.map(parsePTableColumnId)
628
+ ?.map(parseJson)
608
629
  .filter((c) => c.type === 'column')
609
630
  .map((c) => c.id);
610
631
  if (hiddenColIds) return hiddenColIds;
@@ -0,0 +1,71 @@
1
+ import type {
2
+ CanonicalizedJson,
3
+ PColumn,
4
+ PColumnIdAndSpec,
5
+ PColumnKey,
6
+ PColumnValues,
7
+ PColumnValuesEntry,
8
+ PObjectId,
9
+ PTableColumnId,
10
+ } from '@milaboratories/pl-model-common';
11
+ import {
12
+ canonicalizeJson,
13
+ isPTableAbsent,
14
+ } from '@milaboratories/pl-model-common';
15
+ import type { PlSelectionModel } from './PlSelectionModel';
16
+
17
+ /** Canonicalized PTableColumnId JSON string */
18
+ export type PTableColumnIdJson = CanonicalizedJson<PTableColumnId>;
19
+
20
+ /** Encode `PTableColumnId` as canonicalized JSON string */
21
+ export function stringifyPTableColumnId(
22
+ id: PTableColumnId,
23
+ ): PTableColumnIdJson {
24
+ const type = id.type;
25
+ switch (type) {
26
+ case 'axis':
27
+ return canonicalizeJson(id);
28
+ case 'column':
29
+ return canonicalizeJson(id);
30
+ default:
31
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
32
+ throw Error(`unsupported column type: ${type satisfies never}`);
33
+ }
34
+ }
35
+
36
+ export type PColumnPredicate = (column: PColumnIdAndSpec) => boolean;
37
+
38
+ export type PlMultiSequenceAlignmentModel = {
39
+ sequenceColumnIds?: PObjectId[];
40
+ labelColumnIds?: PTableColumnIdJson[];
41
+ };
42
+
43
+ export function createRowSelectionColumn(
44
+ columnId: PObjectId,
45
+ rowSelectionModel: PlSelectionModel | undefined,
46
+ label?: string,
47
+ domain?: Record<string, string>,
48
+ ): PColumn<PColumnValues> | undefined {
49
+ if (!rowSelectionModel || rowSelectionModel.axesSpec.length === 0) {
50
+ return undefined;
51
+ }
52
+
53
+ return {
54
+ id: columnId,
55
+ spec: {
56
+ kind: 'PColumn',
57
+ valueType: 'Int',
58
+ name: 'pl7.app/table/row-selection',
59
+ axesSpec: rowSelectionModel.axesSpec,
60
+ ...(domain && { domain }),
61
+ annotations: {
62
+ 'pl7.app/label': label ?? 'Selected rows',
63
+ 'pl7.app/discreteValues': '[1]',
64
+ },
65
+ },
66
+ data: rowSelectionModel
67
+ .selectedKeys
68
+ .filter((r): r is PColumnKey => !r.some((v) => isPTableAbsent(v)))
69
+ .map((r) => ({ key: r, val: 1 } satisfies PColumnValuesEntry)),
70
+ } satisfies PColumn<PColumnValues>;
71
+ }
@@ -0,0 +1,27 @@
1
+ import type { AxesSpec, PTableAbsent, PTableValue } from '@milaboratories/pl-model-common';
2
+ import { PTableNA } from '@milaboratories/pl-model-common';
3
+
4
+ /** Key is a set of all axes values, which means it is unique across rows */
5
+ export type PTableKey = AxisValue[];
6
+
7
+ /** Readable axis value */
8
+ export type AxisValue = string | number | PTableAbsent;
9
+
10
+ /**
11
+ * Information on selected rows.
12
+ * for selectedKeys = [[axis1Value, axis2Value, axis3Value], ...]
13
+ * axesSpec would be [axis1Spec, axis2Spec, axis3Spec]
14
+ */
15
+ export type PlSelectionModel = {
16
+ /** Specs for {@link AxisValue}'s in {@link PTableKey} */
17
+ axesSpec: AxesSpec;
18
+ /** Row keys (arrays of axes values) of selected rows */
19
+ selectedKeys: PTableKey[];
20
+ };
21
+
22
+ export function mapPTableValueToAxisKey(value: PTableValue): AxisValue {
23
+ if (value === PTableNA) {
24
+ throw new Error('Axis value can never be N/A');
25
+ }
26
+ return value;
27
+ }
@@ -1,2 +1,4 @@
1
- export * from './PlDataTable';
2
1
  export * from './PFrameForGraphs';
2
+ export * from './PlDataTable';
3
+ export * from './PlMultiSequenceAlignment';
4
+ export * from './PlSelectionModel';
package/src/render/api.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type {
2
+ AnchoredPColumnSelector,
2
3
  AnyFunction,
3
4
  AxisId,
4
5
  DataInfo,
@@ -88,6 +89,7 @@ PColumn<PColumnValues | AccessorHandle | DataInfo<AccessorHandle>> {
88
89
  type UniversalPColumnOpts = {
89
90
  labelOps?: LabelDerivationOps;
90
91
  dontWaitAllData?: boolean;
92
+ exclude?: AnchoredPColumnSelector | AnchoredPColumnSelector[];
91
93
  } & ResolveAnchorsOptions;
92
94
 
93
95
  type GetOptionsOpts = {
@@ -150,6 +150,8 @@ function getSplitAxisIndices(selector: APColumnSelectorWithSplit | ((spec: PColu
150
150
  }
151
151
 
152
152
  type UniversalPColumnOptsNoDeriver = {
153
+ /** If provided, columns matching the provided selectors will be excluded from the result. */
154
+ exclude?: AnchoredPColumnSelector | AnchoredPColumnSelector[];
153
155
  labelOps?: LabelDerivationOps;
154
156
  /** If true, incomplete data will cause the column to be skipped instead of returning undefined for the whole request. */
155
157
  dontWaitAllData?: boolean;
@@ -212,13 +214,27 @@ export class PColumnCollection {
212
214
  public getUniversalEntries(
213
215
  predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],
214
216
  opts?: Optional<UniversalPColumnOpts, 'anchorCtx'>): (PColumnEntryWithLabel | PColumnEntryUniversal)[] | undefined {
215
- const { anchorCtx, labelOps: rawLabelOps, dontWaitAllData = false, overrideLabelAnnotation = false } = opts ?? {};
217
+ const { anchorCtx, labelOps: rawLabelOps, dontWaitAllData = false, overrideLabelAnnotation = false, exclude } = opts ?? {};
216
218
 
217
219
  const labelOps: LabelDerivationOps = {
218
220
  ...(overrideLabelAnnotation && rawLabelOps?.includeNativeLabel !== false ? { includeNativeLabel: true } : {}),
219
221
  ...(rawLabelOps ?? {}),
220
222
  };
221
223
 
224
+ let excludePredicate: ((spec: PColumnSpec) => boolean) = () => false;
225
+ if (exclude) {
226
+ const excludePredicartes = (Array.isArray(exclude) ? exclude : [exclude])
227
+ .map((selector) => {
228
+ if (hasAnchors(selector)) {
229
+ if (!anchorCtx)
230
+ throw new Error('Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.');
231
+ return selectorsToPredicate(resolveAnchors(anchorCtx.anchors, selector, opts));
232
+ } else
233
+ return selectorsToPredicate(selector);
234
+ });
235
+ excludePredicate = (spec) => excludePredicartes.some((predicate) => predicate(spec));
236
+ }
237
+
222
238
  const selectorsArray = typeof predicateOrSelectors === 'function'
223
239
  ? [predicateOrSelectors]
224
240
  : Array.isArray(predicateOrSelectors)
@@ -244,6 +260,7 @@ export class PColumnCollection {
244
260
  for (const provider of this.providers) {
245
261
  const providerColumns = provider.selectColumns(currentSelector);
246
262
  for (const col of providerColumns) {
263
+ if (excludePredicate(col.spec)) continue;
247
264
  if (selectedIds.has(col.id))
248
265
  throw new Error(`Duplicate column id ${col.id} in provider ${provider.constructor.name}`);
249
266
  const nativeId = deriveNativeId(col.spec);
@@ -118,3 +118,81 @@ test('test fallback to native labels in label derivation', () => {
118
118
  'Label'
119
119
  ]);
120
120
  });
121
+
122
+ test.each<{ name: string; traces: Trace[]; labels: string[]; forceTraceElements: string[] }>([
123
+ {
124
+ name: 'force one element',
125
+ traces: [
126
+ [
127
+ { type: 't1', label: 'T1L1' },
128
+ { type: 't2', label: 'T2L1' }
129
+ ],
130
+ [
131
+ { type: 't1', label: 'T1L2' },
132
+ { type: 't2', label: 'T2L2' }
133
+ ]
134
+ ],
135
+ labels: ['T1L1', 'T1L2'],
136
+ forceTraceElements: ['t1']
137
+ },
138
+ {
139
+ name: 'force multiple elements',
140
+ traces: [
141
+ [
142
+ { type: 't1', label: 'T1L1' },
143
+ { type: 't2', label: 'T2L1' },
144
+ { type: 't3', label: 'T3L1' }
145
+ ],
146
+ [
147
+ { type: 't1', label: 'T1L2' },
148
+ { type: 't2', label: 'T2L2' },
149
+ { type: 't3', label: 'T3L2' }
150
+ ]
151
+ ],
152
+ labels: ['T1L1 / T3L1', 'T1L2 / T3L2'],
153
+ forceTraceElements: ['t1', 't3']
154
+ },
155
+ {
156
+ name: 'force element not in all traces',
157
+ traces: [
158
+ [
159
+ { type: 't1', label: 'T1L1' },
160
+ { type: 't2', label: 'T2L1' }
161
+ ],
162
+ [{ type: 't2', label: 'T2L2' }]
163
+ ],
164
+ labels: ['T1L1 / T2L1', 'T2L2'],
165
+ forceTraceElements: ['t1']
166
+ },
167
+ {
168
+ name: 'force element with includeNativeLabel',
169
+ traces: [
170
+ [
171
+ { type: 't1', label: 'T1L1' },
172
+ { type: 't2', label: 'T2L1' }
173
+ ],
174
+ [
175
+ { type: 't1', label: 'T1L2' },
176
+ { type: 't2', label: 'T2L2' }
177
+ ]
178
+ ],
179
+ labels: ['T1L1', 'T1L2'],
180
+ forceTraceElements: ['t1']
181
+ }
182
+ ])(
183
+ 'test label derivation with forceTraceElements: $name',
184
+ ({ name, traces, labels, forceTraceElements }) => {
185
+ expect(
186
+ deriveLabels(tracesToSpecs(traces), (s) => s, { forceTraceElements }).map((r) => r.label)
187
+ ).toEqual(labels);
188
+
189
+ if (name === 'force element with includeNativeLabel') {
190
+ expect(
191
+ deriveLabels(tracesToSpecs(traces), (s) => s, {
192
+ forceTraceElements,
193
+ includeNativeLabel: true
194
+ }).map((r) => r.label)
195
+ ).toEqual(labels.map(l => 'Label / ' + l));
196
+ }
197
+ }
198
+ );
@@ -16,6 +16,8 @@ export type LabelDerivationOps = {
16
16
  separator?: string;
17
17
  /** If true, label will be added as suffix (at the end of the generated label). By default label added as a prefix. */
18
18
  addLabelAsSuffix?: boolean;
19
+ /** Trace elements list that will be forced to be included in the label. */
20
+ forceTraceElements?: string[];
19
21
  };
20
22
 
21
23
  export const TraceEntry = z.object({
@@ -50,6 +52,10 @@ export function deriveLabels<T>(
50
52
  ): RecordsWithLabel<T>[] {
51
53
  const importances = new Map<string, number>();
52
54
 
55
+ const forceTraceElements = (ops.forceTraceElements !== undefined && ops.forceTraceElements.length > 0)
56
+ ? new Set(ops.forceTraceElements)
57
+ : undefined;
58
+
53
59
  // number of times certain type occurred among all of the
54
60
  const numberOfRecordsWithType = new Map<string, number>();
55
61
 
@@ -134,7 +140,8 @@ export function deriveLabels<T>(
134
140
  for (let i = 0; i < enrichedRecords.length; i++) {
135
141
  const r = enrichedRecords[i];
136
142
  const includedTrace = r.fullTrace
137
- .filter((fm) => includedTypes.has(fm.fullType));
143
+ .filter((fm) => includedTypes.has(fm.fullType)
144
+ || (forceTraceElements && forceTraceElements.has(fm.type)));
138
145
  if (includedTrace.length === 0) {
139
146
  if (force)
140
147
  result.push({