@deephaven/iris-grid 0.85.15 → 0.85.18

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 +1 @@
1
- {"version":3,"file":"AggregationUtils.js","names":["TableUtils","AggregationOperation","SELECTABLE_OPTIONS","SUM","ABS_SUM","MIN","MAX","VAR","AVG","STD","FIRST","LAST","COUNT_DISTINCT","DISTINCT","COUNT","UNIQUE","isRollupOperation","type","isValidOperation","operationType","columnType","isNumberType","isDateType","isTextType","SKIP","filterValidColumns","columns","filter","c","isProxy","getOperationColumnNames","selected","invert","map","_ref","name","includes"],"sources":["../../../src/sidebar/aggregations/AggregationUtils.ts"],"sourcesContent":["import { TableUtils } from '@deephaven/jsapi-utils';\nimport { DisplayColumn } from '../../IrisGridModel';\nimport AggregationOperation from './AggregationOperation';\n\nexport const SELECTABLE_OPTIONS = [\n AggregationOperation.SUM,\n AggregationOperation.ABS_SUM,\n AggregationOperation.MIN,\n AggregationOperation.MAX,\n AggregationOperation.VAR,\n AggregationOperation.AVG,\n AggregationOperation.STD,\n AggregationOperation.FIRST,\n AggregationOperation.LAST,\n AggregationOperation.COUNT_DISTINCT,\n AggregationOperation.DISTINCT,\n AggregationOperation.COUNT,\n AggregationOperation.UNIQUE,\n];\n\n/**\n * Check if an operation requires a rollup/table grouping\n * @param type The operation to check\n * @returns True if this operation applies to the whole table, false if applies to columns\n */\nexport const isRollupOperation = (type: AggregationOperation): boolean => {\n switch (type) {\n // currently no rollup only operations, but there has been in the past\n default:\n return false;\n }\n};\n\n/**\n * Check if an operation is valid against the given column type\n * @param operationType The operation to check\n * @param columnType The column type to check against\n */\nexport const isValidOperation = (\n operationType: AggregationOperation,\n columnType: string\n): boolean => {\n switch (operationType) {\n case AggregationOperation.COUNT:\n case AggregationOperation.FIRST:\n case AggregationOperation.LAST:\n case AggregationOperation.COUNT_DISTINCT:\n case AggregationOperation.DISTINCT:\n case AggregationOperation.UNIQUE:\n return true;\n case AggregationOperation.MIN:\n case AggregationOperation.MAX:\n return (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isDateType(columnType) ||\n TableUtils.isTextType(columnType)\n );\n case AggregationOperation.SUM:\n case AggregationOperation.ABS_SUM:\n case AggregationOperation.VAR:\n case AggregationOperation.AVG:\n case AggregationOperation.STD:\n return TableUtils.isNumberType(columnType);\n case AggregationOperation.SKIP:\n return false;\n // No default case - if AggregationOperation is added, we'll get a compile time error\n }\n};\n\nexport const filterValidColumns = (\n columns: readonly DisplayColumn[],\n operationType: AggregationOperation\n): DisplayColumn[] =>\n columns.filter(\n c => c.isProxy !== true && isValidOperation(operationType, c.type)\n );\n\nexport const getOperationColumnNames = (\n columns: readonly DisplayColumn[],\n operationType: AggregationOperation,\n selected: readonly string[],\n invert: boolean\n): string[] =>\n filterValidColumns(columns, operationType)\n .map(({ name }) => name)\n .filter(name => (selected.includes(name) ? !invert : invert));\n\nexport default {\n isRollupOperation,\n filterValidColumns,\n getOperationColumnNames,\n};\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,wBAAwB;AAAC,OAE7CC,oBAAoB;AAE3B,OAAO,IAAMC,kBAAkB,GAAG,CAChCD,oBAAoB,CAACE,GAAG,EACxBF,oBAAoB,CAACG,OAAO,EAC5BH,oBAAoB,CAACI,GAAG,EACxBJ,oBAAoB,CAACK,GAAG,EACxBL,oBAAoB,CAACM,GAAG,EACxBN,oBAAoB,CAACO,GAAG,EACxBP,oBAAoB,CAACQ,GAAG,EACxBR,oBAAoB,CAACS,KAAK,EAC1BT,oBAAoB,CAACU,IAAI,EACzBV,oBAAoB,CAACW,cAAc,EACnCX,oBAAoB,CAACY,QAAQ,EAC7BZ,oBAAoB,CAACa,KAAK,EAC1Bb,oBAAoB,CAACc,MAAM,CAC5B;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,iBAAiB,GAAIC,IAA0B,IAAc;EACxE,QAAQA,IAAI;IACV;IACA;MACE,OAAO,KAAK;EAChB;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,gBAAgB,GAAGA,CAC9BC,aAAmC,EACnCC,UAAkB,KACN;EACZ,QAAQD,aAAa;IACnB,KAAKlB,oBAAoB,CAACa,KAAK;IAC/B,KAAKb,oBAAoB,CAACS,KAAK;IAC/B,KAAKT,oBAAoB,CAACU,IAAI;IAC9B,KAAKV,oBAAoB,CAACW,cAAc;IACxC,KAAKX,oBAAoB,CAACY,QAAQ;IAClC,KAAKZ,oBAAoB,CAACc,MAAM;MAC9B,OAAO,IAAI;IACb,KAAKd,oBAAoB,CAACI,GAAG;IAC7B,KAAKJ,oBAAoB,CAACK,GAAG;MAC3B,OACEN,UAAU,CAACqB,YAAY,CAACD,UAAU,CAAC,IACnCpB,UAAU,CAACsB,UAAU,CAACF,UAAU,CAAC,IACjCpB,UAAU,CAACuB,UAAU,CAACH,UAAU,CAAC;IAErC,KAAKnB,oBAAoB,CAACE,GAAG;IAC7B,KAAKF,oBAAoB,CAACG,OAAO;IACjC,KAAKH,oBAAoB,CAACM,GAAG;IAC7B,KAAKN,oBAAoB,CAACO,GAAG;IAC7B,KAAKP,oBAAoB,CAACQ,GAAG;MAC3B,OAAOT,UAAU,CAACqB,YAAY,CAACD,UAAU,CAAC;IAC5C,KAAKnB,oBAAoB,CAACuB,IAAI;MAC5B,OAAO,KAAK;IACd;EACF;AACF,CAAC;;AAED,OAAO,IAAMC,kBAAkB,GAAGA,CAChCC,OAAiC,EACjCP,aAAmC,KAEnCO,OAAO,CAACC,MAAM,CACZC,CAAC,IAAIA,CAAC,CAACC,OAAO,KAAK,IAAI,IAAIX,gBAAgB,CAACC,aAAa,EAAES,CAAC,CAACX,IAAI,CACnE,CAAC;AAEH,OAAO,IAAMa,uBAAuB,GAAGA,CACrCJ,OAAiC,EACjCP,aAAmC,EACnCY,QAA2B,EAC3BC,MAAe,KAEfP,kBAAkB,CAACC,OAAO,EAAEP,aAAa,CAAC,CACvCc,GAAG,CAACC,IAAA;EAAA,IAAC;IAAEC;EAAK,CAAC,GAAAD,IAAA;EAAA,OAAKC,IAAI;AAAA,EAAC,CACvBR,MAAM,CAACQ,IAAI,IAAKJ,QAAQ,CAACK,QAAQ,CAACD,IAAI,CAAC,GAAG,CAACH,MAAM,GAAGA,MAAO,CAAC;AAEjE,eAAe;EACbhB,iBAAiB;EACjBS,kBAAkB;EAClBK;AACF,CAAC"}
1
+ {"version":3,"file":"AggregationUtils.js","names":["TableUtils","AggregationOperation","SELECTABLE_OPTIONS","SUM","ABS_SUM","MIN","MAX","VAR","AVG","MEDIAN","STD","FIRST","LAST","COUNT_DISTINCT","DISTINCT","COUNT","UNIQUE","isRollupOperation","type","isRollupProhibited","isValidOperation","operationType","columnType","isNumberType","isDateType","isTextType","SKIP","filterValidColumns","columns","filter","c","isProxy","getOperationColumnNames","selected","invert","map","_ref","name","includes"],"sources":["../../../src/sidebar/aggregations/AggregationUtils.ts"],"sourcesContent":["import { TableUtils } from '@deephaven/jsapi-utils';\nimport { DisplayColumn } from '../../IrisGridModel';\nimport AggregationOperation from './AggregationOperation';\n\nexport const SELECTABLE_OPTIONS = [\n AggregationOperation.SUM,\n AggregationOperation.ABS_SUM,\n AggregationOperation.MIN,\n AggregationOperation.MAX,\n AggregationOperation.VAR,\n AggregationOperation.AVG,\n AggregationOperation.MEDIAN,\n AggregationOperation.STD,\n AggregationOperation.FIRST,\n AggregationOperation.LAST,\n AggregationOperation.COUNT_DISTINCT,\n AggregationOperation.DISTINCT,\n AggregationOperation.COUNT,\n AggregationOperation.UNIQUE,\n];\n\n/**\n * Check if an operation requires a rollup/table grouping\n * @param type The operation to check\n * @returns True if this operation applies to the whole table, false if applies to columns\n */\nexport const isRollupOperation = (type: AggregationOperation): boolean => {\n switch (type) {\n // currently no rollup only operations, but there has been in the past\n default:\n return false;\n }\n};\n\n/**\n * Check if an operation is not supported for a rollup/table grouping\n * @param type The operation to check\n * @returns True if this operation is not supported for a rollup/table grouping\n */\nexport const isRollupProhibited = (type: AggregationOperation): boolean => {\n switch (type) {\n case AggregationOperation.MEDIAN:\n return true;\n default:\n return false;\n }\n};\n\n/**\n * Check if an operation is valid against the given column type\n * @param operationType The operation to check\n * @param columnType The column type to check against\n */\nexport const isValidOperation = (\n operationType: AggregationOperation,\n columnType: string\n): boolean => {\n switch (operationType) {\n case AggregationOperation.COUNT:\n case AggregationOperation.FIRST:\n case AggregationOperation.LAST:\n case AggregationOperation.COUNT_DISTINCT:\n case AggregationOperation.DISTINCT:\n case AggregationOperation.UNIQUE:\n return true;\n case AggregationOperation.MEDIAN:\n case AggregationOperation.MIN:\n case AggregationOperation.MAX:\n return (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isDateType(columnType) ||\n TableUtils.isTextType(columnType)\n );\n case AggregationOperation.SUM:\n case AggregationOperation.ABS_SUM:\n case AggregationOperation.VAR:\n case AggregationOperation.AVG:\n case AggregationOperation.STD:\n return TableUtils.isNumberType(columnType);\n case AggregationOperation.SKIP:\n return false;\n // No default case - if AggregationOperation is added, we'll get a compile time error\n }\n};\n\nexport const filterValidColumns = (\n columns: readonly DisplayColumn[],\n operationType: AggregationOperation\n): DisplayColumn[] =>\n columns.filter(\n c => c.isProxy !== true && isValidOperation(operationType, c.type)\n );\n\nexport const getOperationColumnNames = (\n columns: readonly DisplayColumn[],\n operationType: AggregationOperation,\n selected: readonly string[],\n invert: boolean\n): string[] =>\n filterValidColumns(columns, operationType)\n .map(({ name }) => name)\n .filter(name => (selected.includes(name) ? !invert : invert));\n\nexport default {\n isRollupOperation,\n isRollupProhibited,\n filterValidColumns,\n getOperationColumnNames,\n};\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
+ import { dh as DhType } from '@deephaven/jsapi-types';
2
3
  import AggregationOperation from './AggregationOperation';
3
4
  import './Aggregations.scss';
4
5
  export type Aggregation = {
@@ -13,9 +14,10 @@ export type AggregationSettings = {
13
14
  export type AggregationsProps = {
14
15
  isRollup: boolean;
15
16
  settings: AggregationSettings;
16
- onChange: (settings: AggregationSettings) => void;
17
+ onChange: (settings: AggregationSettings, added: AggregationOperation[], removed: AggregationOperation[]) => void;
17
18
  onEdit: (aggregation: Aggregation) => void;
19
+ dh: typeof DhType;
18
20
  };
19
- declare function Aggregations({ isRollup, settings, onChange, onEdit, }: AggregationsProps): JSX.Element;
21
+ declare function Aggregations({ isRollup, settings, onChange, onEdit, dh, }: AggregationsProps): JSX.Element;
20
22
  export default Aggregations;
21
23
  //# sourceMappingURL=Aggregations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Aggregations.d.ts","sourceRoot":"","sources":["../../../src/sidebar/aggregations/Aggregations.tsx"],"names":[],"mappings":";AAsBA,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAE1D,OAAO,qBAAqB,CAAC;AAI7B,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,oBAAoB,CAAC;IAChC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAClD,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,iBAAS,YAAY,CAAC,EACpB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,GACP,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CA0PjC;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"Aggregations.d.ts","sourceRoot":"","sources":["../../../src/sidebar/aggregations/Aggregations.tsx"],"names":[],"mappings":";AAsBA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAE1D,OAAO,qBAAqB,CAAC;AAI7B,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,oBAAoB,CAAC;IAChC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,EAAE,CACR,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,oBAAoB,EAAE,EAC7B,OAAO,EAAE,oBAAoB,EAAE,KAC5B,IAAI,CAAC;IACV,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C,EAAE,EAAE,OAAO,MAAM,CAAC;CACnB,CAAC;AAEF,iBAAS,YAAY,CAAC,EACpB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,EAAE,GACH,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAqRjC;AAED,eAAe,YAAY,CAAC"}
@@ -10,6 +10,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
10
10
  import { dhNewCircleLargeFilled, vsTrash, vsEdit, dhWarningFilled } from '@deephaven/icons';
11
11
  import Log from '@deephaven/log';
12
12
  import { DraggableItemList, DragUtils, Option, Select, Radio, RadioGroup, Button } from '@deephaven/components';
13
+ import AggregationOperation from "./AggregationOperation.js";
13
14
  import AggregationUtils, { SELECTABLE_OPTIONS } from "./AggregationUtils.js";
14
15
  import "./Aggregations.css";
15
16
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -21,22 +22,30 @@ function Aggregations(_ref) {
21
22
  isRollup,
22
23
  settings,
23
24
  onChange,
24
- onEdit
25
+ onEdit,
26
+ dh
25
27
  } = _ref;
26
28
  var {
27
29
  aggregations,
28
30
  showOnTop
29
31
  } = settings;
30
- var options = useMemo(() => SELECTABLE_OPTIONS.filter(option => !aggregations.some(aggregation => aggregation.operation === option)), [aggregations]);
32
+ var options = useMemo(() => SELECTABLE_OPTIONS.filter(option => !aggregations.some(aggregation => aggregation.operation === option) && !(option === AggregationOperation.MEDIAN &&
33
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
34
+ // @ts-ignore - MEDIAN is not defined in older version of Core
35
+ dh.AggregationOperation.MEDIAN === undefined)), [aggregations, dh]);
31
36
  var [selectedOperation, setSelectedOperation] = useState(options[0]);
32
37
  var [selectedRanges, setSelectedRanges] = useState([]);
33
- var changeSettings = useCallback(changedSettings => {
34
- onChange(_objectSpread(_objectSpread({}, settings), changedSettings));
38
+ var changeSettings = useCallback(function (changedSettings) {
39
+ var added = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
40
+ var removed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
41
+ onChange(_objectSpread(_objectSpread({}, settings), changedSettings), added, removed);
35
42
  }, [onChange, settings]);
36
- var changeAggregations = useCallback(newAggregations => {
43
+ var changeAggregations = useCallback(function (newAggregations) {
44
+ var added = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
45
+ var removed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
37
46
  changeSettings({
38
47
  aggregations: newAggregations
39
- });
48
+ }, added, removed);
40
49
  }, [changeSettings]);
41
50
  var changeShowOnTop = useCallback(newShowOnTop => {
42
51
  changeSettings({
@@ -76,10 +85,19 @@ function Aggregations(_ref) {
76
85
  operation: selectedOperation,
77
86
  selected: [],
78
87
  invert: true
79
- }]);
88
+ }], [selectedOperation]);
80
89
  }, [aggregations, selectedOperation, changeAggregations]);
81
90
  var handleDeleteClicked = useCallback(itemIndex => {
82
- changeAggregations(aggregations.filter((aggregation, index) => index !== itemIndex));
91
+ var [keep, remove] = aggregations.reduce((_ref3, aggregation, index) => {
92
+ var [keepSoFar, removeSoFar] = _ref3;
93
+ if (index === itemIndex) {
94
+ removeSoFar.push(aggregation.operation);
95
+ } else {
96
+ keepSoFar.push(aggregation);
97
+ }
98
+ return [keepSoFar, removeSoFar];
99
+ }, [[], []]);
100
+ changeAggregations(keep, [], remove);
83
101
  }, [aggregations, changeAggregations]);
84
102
  var handleAggregationSelectionChange = useCallback(newSelectedRanges => {
85
103
  setSelectedRanges(newSelectedRanges);
@@ -98,17 +116,18 @@ function Aggregations(_ref) {
98
116
  setSelectedOperation(options[0]);
99
117
  }
100
118
  }, [options, selectedOperation]);
101
- var renderAggregation = useCallback(_ref3 => {
119
+ var renderAggregation = useCallback(_ref4 => {
102
120
  var {
103
121
  item,
104
122
  itemIndex,
105
123
  isClone = false,
106
124
  selectedCount
107
- } = _ref3;
125
+ } = _ref4;
108
126
  var text = item.operation;
109
127
  var badgeText = isClone ? "".concat(selectedCount) : undefined;
110
128
  var className = isClone ? 'item-list-item-clone' : undefined;
111
129
  var isRollupOperation = AggregationUtils.isRollupOperation(item.operation);
130
+ var isRollupProhibited = AggregationUtils.isRollupProhibited(item.operation);
112
131
  var isEditable = !isClone && !isRollupOperation;
113
132
  return /*#__PURE__*/_jsxs(_Fragment, {
114
133
  children: [/*#__PURE__*/_jsxs("div", {
@@ -120,6 +139,11 @@ function Aggregations(_ref) {
120
139
  children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
121
140
  icon: dhWarningFilled
122
141
  }), " Requires rollup"]
142
+ }), isRollup && isRollupProhibited && /*#__PURE__*/_jsxs("span", {
143
+ className: "small text-warning",
144
+ children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
145
+ icon: dhWarningFilled
146
+ }), " Not available on rollups"]
123
147
  })]
124
148
  }), DraggableItemList.renderBadge({
125
149
  text: badgeText
@@ -1 +1 @@
1
- {"version":3,"file":"Aggregations.js","names":["React","useCallback","useEffect","useMemo","useState","DragDropContext","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","vsEdit","dhWarningFilled","Log","DraggableItemList","DragUtils","Option","Select","Radio","RadioGroup","Button","AggregationUtils","SELECTABLE_OPTIONS","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","Aggregations","_ref","isRollup","settings","onChange","onEdit","aggregations","showOnTop","options","filter","option","some","aggregation","operation","selectedOperation","setSelectedOperation","selectedRanges","setSelectedRanges","changeSettings","changedSettings","_objectSpread","changeAggregations","newAggregations","changeShowOnTop","newShowOnTop","handleDragStart","debug","startDragging","handleDragEnd","_ref2","destination","source","stopDragging","destinationIndex","index","draggedItems","reorder","insertIndex","adjustDestinationIndex","newSelectedRanges","length","handleOperationChange","handleAdd","selected","invert","handleDeleteClicked","itemIndex","handleAggregationSelectionChange","handleAggregationSelect","isRollupOperation","handleShowOnTopChange","value","setDefaultOperation","includes","renderAggregation","_ref3","item","isClone","selectedCount","text","badgeText","concat","undefined","className","isEditable","children","icon","renderBadge","renderHandle","kind","tooltip","onClick","disabled","isOptionsShown","isAggregationsShown","map","type","id","marginStart","orientation","onDragStart","onDragEnd","itemCount","items","renderItem","offset","onSelectionChange","onSelect","isMultiSelect"],"sources":["../../../src/sidebar/aggregations/Aggregations.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { DragDropContext } from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhNewCircleLargeFilled,\n vsTrash,\n vsEdit,\n dhWarningFilled,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport {\n DraggableItemList,\n DragUtils,\n Option,\n Select,\n Radio,\n RadioGroup,\n Button,\n} from '@deephaven/components';\nimport type { DraggableRenderItemProps, Range } from '@deephaven/components';\nimport { ModelIndex } from '@deephaven/grid';\nimport AggregationOperation from './AggregationOperation';\nimport AggregationUtils, { SELECTABLE_OPTIONS } from './AggregationUtils';\nimport './Aggregations.scss';\n\nconst log = Log.module('Aggregations');\n\nexport type Aggregation = {\n operation: AggregationOperation;\n selected: readonly string[];\n invert: boolean;\n};\n\nexport type AggregationSettings = {\n aggregations: readonly Aggregation[];\n showOnTop: boolean;\n};\n\nexport type AggregationsProps = {\n isRollup: boolean;\n settings: AggregationSettings;\n onChange: (settings: AggregationSettings) => void;\n onEdit: (aggregation: Aggregation) => void;\n};\n\nfunction Aggregations({\n isRollup,\n settings,\n onChange,\n onEdit,\n}: AggregationsProps): JSX.Element {\n const { aggregations, showOnTop } = settings;\n const options = useMemo(\n () =>\n SELECTABLE_OPTIONS.filter(\n option =>\n !aggregations.some(aggregation => aggregation.operation === option)\n ),\n [aggregations]\n );\n const [selectedOperation, setSelectedOperation] = useState(options[0]);\n const [selectedRanges, setSelectedRanges] = useState<Range[]>([]);\n const changeSettings = useCallback(\n changedSettings => {\n onChange({ ...settings, ...changedSettings });\n },\n [onChange, settings]\n );\n const changeAggregations = useCallback(\n newAggregations => {\n changeSettings({ aggregations: newAggregations });\n },\n [changeSettings]\n );\n\n const changeShowOnTop = useCallback(\n newShowOnTop => {\n changeSettings({ showOnTop: newShowOnTop });\n },\n [changeSettings]\n );\n\n const handleDragStart = useCallback(() => {\n log.debug('handleDragStart');\n\n DragUtils.startDragging();\n }, []);\n\n const handleDragEnd = useCallback(\n ({ destination, source }) => {\n log.debug('handleDragEnd', destination, source);\n\n DragUtils.stopDragging();\n\n if (destination === null) {\n return;\n }\n\n let destinationIndex = destination.index;\n if (source.index < destination.index) {\n destinationIndex += 1;\n }\n\n const newAggregations = [...aggregations];\n const draggedItems = DragUtils.reorder(\n newAggregations,\n selectedRanges,\n newAggregations,\n destinationIndex\n );\n const insertIndex = DragUtils.adjustDestinationIndex(\n destinationIndex,\n selectedRanges\n );\n const newSelectedRanges: Range[] = [\n [insertIndex, insertIndex + draggedItems.length - 1],\n ];\n changeAggregations(newAggregations);\n setSelectedRanges(newSelectedRanges);\n },\n [changeAggregations, aggregations, selectedRanges, setSelectedRanges]\n );\n\n const handleOperationChange = useCallback(\n operation => {\n setSelectedOperation(operation);\n },\n [setSelectedOperation]\n );\n\n const handleAdd = useCallback(() => {\n changeAggregations([\n ...aggregations,\n { operation: selectedOperation, selected: [], invert: true },\n ]);\n }, [aggregations, selectedOperation, changeAggregations]);\n\n const handleDeleteClicked = useCallback(\n (itemIndex: ModelIndex) => {\n changeAggregations(\n aggregations.filter((aggregation, index) => index !== itemIndex)\n );\n },\n [aggregations, changeAggregations]\n );\n\n const handleAggregationSelectionChange = useCallback(\n newSelectedRanges => {\n setSelectedRanges(newSelectedRanges);\n },\n [setSelectedRanges]\n );\n\n const handleAggregationSelect = useCallback(\n itemIndex => {\n const aggregation = aggregations[itemIndex];\n if (!AggregationUtils.isRollupOperation(aggregation.operation)) {\n onEdit(aggregation);\n }\n },\n [aggregations, onEdit]\n );\n\n const handleShowOnTopChange = useCallback(\n (value: string) => {\n changeShowOnTop(value === 'true');\n },\n [changeShowOnTop]\n );\n\n useEffect(\n function setDefaultOperation() {\n if (options.length > 0 && !options.includes(selectedOperation)) {\n setSelectedOperation(options[0]);\n }\n },\n [options, selectedOperation]\n );\n\n const renderAggregation = useCallback(\n ({\n item,\n itemIndex,\n isClone = false,\n selectedCount,\n }: DraggableRenderItemProps<Aggregation>) => {\n const text = item.operation;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = isClone ? 'item-list-item-clone' : undefined;\n const isRollupOperation = AggregationUtils.isRollupOperation(\n item.operation\n );\n const isEditable = !isClone && !isRollupOperation;\n return (\n <>\n <div\n className={classNames(\n 'item-list-item-content',\n 'draggable-item-list-item-content',\n className\n )}\n >\n <span className=\"title\">\n {text}\n {!isRollup && isRollupOperation && (\n <span className=\"small text-warning\">\n <FontAwesomeIcon icon={dhWarningFilled} /> Requires rollup\n </span>\n )}\n </span>\n {DraggableItemList.renderBadge({ text: badgeText })}\n {DraggableItemList.renderHandle()}\n </div>\n {!isClone && (\n <>\n <Button\n kind=\"ghost\"\n className=\"btn-edit\"\n icon={vsEdit}\n tooltip=\"Edit Columns\"\n onClick={() => onEdit(item)}\n disabled={!isEditable}\n />\n <Button\n kind=\"ghost\"\n className=\"btn-delete\"\n icon={vsTrash}\n tooltip=\"Delete Aggregation\"\n onClick={() => handleDeleteClicked(itemIndex)}\n />\n </>\n )}\n </>\n );\n },\n [handleDeleteClicked, onEdit, isRollup]\n );\n\n const isOptionsShown = options.length > 0;\n const isAggregationsShown = aggregations.length > 0;\n\n return (\n <div className=\"aggregations\">\n {isOptionsShown && (\n <div className=\"form-inline\">\n <Select onChange={handleOperationChange} value={selectedOperation}>\n {options.map(option => (\n <Option value={option} key={option}>\n {option}\n </Option>\n ))}\n </Select>\n <button\n type=\"button\"\n className=\"btn btn-link btn-add\"\n onClick={handleAdd}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Aggregation\n </button>\n </div>\n )}\n {isOptionsShown && isAggregationsShown && <hr />}\n {isAggregationsShown && (\n <>\n {!isRollup && (\n <div>\n <label id=\"placement-options-label\">Placement:&nbsp;</label>\n <RadioGroup\n aria-labelledby=\"placement-options-label\"\n marginStart=\"size-125\"\n orientation=\"horizontal\"\n onChange={handleShowOnTopChange}\n value={`${showOnTop}`}\n >\n <Radio value=\"true\">Top</Radio>\n <Radio value=\"false\">Bottom</Radio>\n </RadioGroup>\n </div>\n )}\n <DragDropContext\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n <DraggableItemList<Aggregation>\n className=\"selected-aggregations\"\n itemCount={aggregations.length}\n items={aggregations}\n renderItem={renderAggregation}\n offset={0}\n onSelectionChange={handleAggregationSelectionChange}\n onSelect={handleAggregationSelect}\n selectedRanges={selectedRanges}\n isMultiSelect\n />\n </DragDropContext>\n </>\n )}\n </div>\n );\n}\n\nexport default Aggregations;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Aggregations.js","names":["React","useCallback","useEffect","useMemo","useState","DragDropContext","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","vsEdit","dhWarningFilled","Log","DraggableItemList","DragUtils","Option","Select","Radio","RadioGroup","Button","AggregationOperation","AggregationUtils","SELECTABLE_OPTIONS","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","Aggregations","_ref","isRollup","settings","onChange","onEdit","dh","aggregations","showOnTop","options","filter","option","some","aggregation","operation","MEDIAN","undefined","selectedOperation","setSelectedOperation","selectedRanges","setSelectedRanges","changeSettings","changedSettings","added","arguments","length","removed","_objectSpread","changeAggregations","newAggregations","changeShowOnTop","newShowOnTop","handleDragStart","debug","startDragging","handleDragEnd","_ref2","destination","source","stopDragging","destinationIndex","index","draggedItems","reorder","insertIndex","adjustDestinationIndex","newSelectedRanges","handleOperationChange","handleAdd","selected","invert","handleDeleteClicked","itemIndex","keep","remove","reduce","_ref3","keepSoFar","removeSoFar","push","handleAggregationSelectionChange","handleAggregationSelect","isRollupOperation","handleShowOnTopChange","value","setDefaultOperation","includes","renderAggregation","_ref4","item","isClone","selectedCount","text","badgeText","concat","className","isRollupProhibited","isEditable","children","icon","renderBadge","renderHandle","kind","tooltip","onClick","disabled","isOptionsShown","isAggregationsShown","map","type","id","marginStart","orientation","onDragStart","onDragEnd","itemCount","items","renderItem","offset","onSelectionChange","onSelect","isMultiSelect"],"sources":["../../../src/sidebar/aggregations/Aggregations.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { DragDropContext } from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhNewCircleLargeFilled,\n vsTrash,\n vsEdit,\n dhWarningFilled,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport {\n DraggableItemList,\n DragUtils,\n Option,\n Select,\n Radio,\n RadioGroup,\n Button,\n} from '@deephaven/components';\nimport type { DraggableRenderItemProps, Range } from '@deephaven/components';\nimport { ModelIndex } from '@deephaven/grid';\nimport { dh as DhType } from '@deephaven/jsapi-types';\nimport AggregationOperation from './AggregationOperation';\nimport AggregationUtils, { SELECTABLE_OPTIONS } from './AggregationUtils';\nimport './Aggregations.scss';\n\nconst log = Log.module('Aggregations');\n\nexport type Aggregation = {\n operation: AggregationOperation;\n selected: readonly string[];\n invert: boolean;\n};\n\nexport type AggregationSettings = {\n aggregations: readonly Aggregation[];\n showOnTop: boolean;\n};\n\nexport type AggregationsProps = {\n isRollup: boolean;\n settings: AggregationSettings;\n onChange: (\n settings: AggregationSettings,\n added: AggregationOperation[],\n removed: AggregationOperation[]\n ) => void;\n onEdit: (aggregation: Aggregation) => void;\n dh: typeof DhType;\n};\n\nfunction Aggregations({\n isRollup,\n settings,\n onChange,\n onEdit,\n dh,\n}: AggregationsProps): JSX.Element {\n const { aggregations, showOnTop } = settings;\n const options = useMemo(\n () =>\n SELECTABLE_OPTIONS.filter(\n option =>\n !aggregations.some(aggregation => aggregation.operation === option) &&\n !(\n option === AggregationOperation.MEDIAN &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - MEDIAN is not defined in older version of Core\n dh.AggregationOperation.MEDIAN === undefined\n )\n ),\n [aggregations, dh]\n );\n const [selectedOperation, setSelectedOperation] = useState(options[0]);\n const [selectedRanges, setSelectedRanges] = useState<Range[]>([]);\n const changeSettings = useCallback(\n (changedSettings, added = [], removed = []) => {\n onChange({ ...settings, ...changedSettings }, added, removed);\n },\n [onChange, settings]\n );\n const changeAggregations = useCallback(\n (newAggregations, added = [], removed = []) => {\n changeSettings({ aggregations: newAggregations }, added, removed);\n },\n [changeSettings]\n );\n\n const changeShowOnTop = useCallback(\n newShowOnTop => {\n changeSettings({ showOnTop: newShowOnTop });\n },\n [changeSettings]\n );\n\n const handleDragStart = useCallback(() => {\n log.debug('handleDragStart');\n\n DragUtils.startDragging();\n }, []);\n\n const handleDragEnd = useCallback(\n ({ destination, source }) => {\n log.debug('handleDragEnd', destination, source);\n\n DragUtils.stopDragging();\n\n if (destination === null) {\n return;\n }\n\n let destinationIndex = destination.index;\n if (source.index < destination.index) {\n destinationIndex += 1;\n }\n\n const newAggregations = [...aggregations];\n const draggedItems = DragUtils.reorder(\n newAggregations,\n selectedRanges,\n newAggregations,\n destinationIndex\n );\n const insertIndex = DragUtils.adjustDestinationIndex(\n destinationIndex,\n selectedRanges\n );\n const newSelectedRanges: Range[] = [\n [insertIndex, insertIndex + draggedItems.length - 1],\n ];\n changeAggregations(newAggregations);\n setSelectedRanges(newSelectedRanges);\n },\n [changeAggregations, aggregations, selectedRanges, setSelectedRanges]\n );\n\n const handleOperationChange = useCallback(\n operation => {\n setSelectedOperation(operation);\n },\n [setSelectedOperation]\n );\n\n const handleAdd = useCallback(() => {\n changeAggregations(\n [\n ...aggregations,\n { operation: selectedOperation, selected: [], invert: true },\n ],\n [selectedOperation]\n );\n }, [aggregations, selectedOperation, changeAggregations]);\n\n const handleDeleteClicked = useCallback(\n (itemIndex: ModelIndex) => {\n const [keep, remove] = aggregations.reduce(\n ([keepSoFar, removeSoFar], aggregation, index) => {\n if (index === itemIndex) {\n removeSoFar.push(aggregation.operation);\n } else {\n keepSoFar.push(aggregation);\n }\n return [keepSoFar, removeSoFar];\n },\n [[], []] as [Aggregation[], AggregationOperation[]]\n );\n changeAggregations(keep, [], remove);\n },\n [aggregations, changeAggregations]\n );\n\n const handleAggregationSelectionChange = useCallback(\n newSelectedRanges => {\n setSelectedRanges(newSelectedRanges);\n },\n [setSelectedRanges]\n );\n\n const handleAggregationSelect = useCallback(\n itemIndex => {\n const aggregation = aggregations[itemIndex];\n if (!AggregationUtils.isRollupOperation(aggregation.operation)) {\n onEdit(aggregation);\n }\n },\n [aggregations, onEdit]\n );\n\n const handleShowOnTopChange = useCallback(\n (value: string) => {\n changeShowOnTop(value === 'true');\n },\n [changeShowOnTop]\n );\n\n useEffect(\n function setDefaultOperation() {\n if (options.length > 0 && !options.includes(selectedOperation)) {\n setSelectedOperation(options[0]);\n }\n },\n [options, selectedOperation]\n );\n\n const renderAggregation = useCallback(\n ({\n item,\n itemIndex,\n isClone = false,\n selectedCount,\n }: DraggableRenderItemProps<Aggregation>) => {\n const text = item.operation;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = isClone ? 'item-list-item-clone' : undefined;\n const isRollupOperation = AggregationUtils.isRollupOperation(\n item.operation\n );\n const isRollupProhibited = AggregationUtils.isRollupProhibited(\n item.operation\n );\n const isEditable = !isClone && !isRollupOperation;\n return (\n <>\n <div\n className={classNames(\n 'item-list-item-content',\n 'draggable-item-list-item-content',\n className\n )}\n >\n <span className=\"title\">\n {text}\n {!isRollup && isRollupOperation && (\n <span className=\"small text-warning\">\n <FontAwesomeIcon icon={dhWarningFilled} /> Requires rollup\n </span>\n )}\n {isRollup && isRollupProhibited && (\n <span className=\"small text-warning\">\n <FontAwesomeIcon icon={dhWarningFilled} /> Not available on\n rollups\n </span>\n )}\n </span>\n {DraggableItemList.renderBadge({ text: badgeText })}\n {DraggableItemList.renderHandle()}\n </div>\n {!isClone && (\n <>\n <Button\n kind=\"ghost\"\n className=\"btn-edit\"\n icon={vsEdit}\n tooltip=\"Edit Columns\"\n onClick={() => onEdit(item)}\n disabled={!isEditable}\n />\n <Button\n kind=\"ghost\"\n className=\"btn-delete\"\n icon={vsTrash}\n tooltip=\"Delete Aggregation\"\n onClick={() => handleDeleteClicked(itemIndex)}\n />\n </>\n )}\n </>\n );\n },\n [handleDeleteClicked, onEdit, isRollup]\n );\n\n const isOptionsShown = options.length > 0;\n const isAggregationsShown = aggregations.length > 0;\n\n return (\n <div className=\"aggregations\">\n {isOptionsShown && (\n <div className=\"form-inline\">\n <Select onChange={handleOperationChange} value={selectedOperation}>\n {options.map(option => (\n <Option value={option} key={option}>\n {option}\n </Option>\n ))}\n </Select>\n <button\n type=\"button\"\n className=\"btn btn-link btn-add\"\n onClick={handleAdd}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Aggregation\n </button>\n </div>\n )}\n {isOptionsShown && isAggregationsShown && <hr />}\n {isAggregationsShown && (\n <>\n {!isRollup && (\n <div>\n <label id=\"placement-options-label\">Placement:&nbsp;</label>\n <RadioGroup\n aria-labelledby=\"placement-options-label\"\n marginStart=\"size-125\"\n orientation=\"horizontal\"\n onChange={handleShowOnTopChange}\n value={`${showOnTop}`}\n >\n <Radio value=\"true\">Top</Radio>\n <Radio value=\"false\">Bottom</Radio>\n </RadioGroup>\n </div>\n )}\n <DragDropContext\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n <DraggableItemList<Aggregation>\n className=\"selected-aggregations\"\n itemCount={aggregations.length}\n items={aggregations}\n renderItem={renderAggregation}\n offset={0}\n onSelectionChange={handleAggregationSelectionChange}\n onSelect={handleAggregationSelect}\n selectedRanges={selectedRanges}\n isMultiSelect\n />\n </DragDropContext>\n </>\n )}\n </div>\n );\n}\n\nexport default Aggregations;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/iris-grid",
3
- "version": "0.85.15",
3
+ "version": "0.85.18",
4
4
  "description": "Deephaven Iris Grid",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "dependencies": {
34
34
  "@deephaven/components": "^0.85.15",
35
- "@deephaven/console": "^0.85.15",
35
+ "@deephaven/console": "^0.85.18",
36
36
  "@deephaven/filters": "^0.85.0",
37
37
  "@deephaven/grid": "^0.85.15",
38
38
  "@deephaven/icons": "^0.85.0",
@@ -79,5 +79,5 @@
79
79
  "publishConfig": {
80
80
  "access": "public"
81
81
  },
82
- "gitHead": "e14155127cdad8949449452347dd7748a23e966a"
82
+ "gitHead": "f1a02ff17042b0da321e5b479d9802ef0545c33e"
83
83
  }