@deephaven/iris-grid 0.6.3-alpha.5 → 0.6.3-bard.1

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.
Files changed (57) hide show
  1. package/dist/Formatter.d.ts +7 -14
  2. package/dist/Formatter.d.ts.map +1 -1
  3. package/dist/Formatter.js +6 -6
  4. package/dist/Formatter.js.map +1 -1
  5. package/dist/IrisGrid.d.ts +8 -0
  6. package/dist/IrisGrid.d.ts.map +1 -1
  7. package/dist/IrisGrid.js +33 -17
  8. package/dist/IrisGrid.js.map +1 -1
  9. package/dist/IrisGridBottomBar.js +1 -1
  10. package/dist/IrisGridModelUpdater.js +1 -1
  11. package/dist/IrisGridModelUpdater.js.map +1 -1
  12. package/dist/IrisGridTableModel.d.ts.map +1 -1
  13. package/dist/IrisGridTableModel.js +1 -2
  14. package/dist/IrisGridTableModel.js.map +1 -1
  15. package/dist/IrisGridTreeTableModel.js +1 -1
  16. package/dist/IrisGridUtils.js +32 -32
  17. package/dist/IrisGridUtils.js.map +1 -1
  18. package/dist/PendingDataBottomBar.js +1 -1
  19. package/dist/PendingDataBottomBar.js.map +1 -1
  20. package/dist/TableUtils.js +1 -1
  21. package/dist/ToastBottomBar.js +1 -1
  22. package/dist/ToastBottomBar.js.map +1 -1
  23. package/dist/formatters/DateTimeColumnFormatter.d.ts +8 -7
  24. package/dist/formatters/DateTimeColumnFormatter.d.ts.map +1 -1
  25. package/dist/formatters/DateTimeColumnFormatter.js +1 -2
  26. package/dist/formatters/DateTimeColumnFormatter.js.map +1 -1
  27. package/dist/formatters/DecimalColumnFormatter.d.ts +55 -59
  28. package/dist/formatters/DecimalColumnFormatter.d.ts.map +1 -1
  29. package/dist/formatters/DecimalColumnFormatter.js +66 -27
  30. package/dist/formatters/DecimalColumnFormatter.js.map +1 -1
  31. package/dist/formatters/IntegerColumnFormatter.d.ts +50 -29
  32. package/dist/formatters/IntegerColumnFormatter.d.ts.map +1 -1
  33. package/dist/formatters/IntegerColumnFormatter.js +60 -19
  34. package/dist/formatters/IntegerColumnFormatter.js.map +1 -1
  35. package/dist/formatters/index.d.ts +7 -7
  36. package/dist/formatters/index.d.ts.map +1 -1
  37. package/dist/formatters/index.js +3 -3
  38. package/dist/formatters/index.js.map +1 -1
  39. package/dist/memoizeClear.js +1 -1
  40. package/dist/mousehandlers/IrisGridContextMenuHandler.js +1 -1
  41. package/dist/sidebar/AdvancedSettingsMenu.js +2 -2
  42. package/dist/sidebar/CustomColumnBuilder.js +2 -2
  43. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  44. package/dist/sidebar/InputEditor.js +1 -1
  45. package/dist/sidebar/RollupRows.js +10 -10
  46. package/dist/sidebar/RollupRows.js.map +1 -1
  47. package/dist/sidebar/SelectDistinctBuilder.js +5 -5
  48. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  49. package/dist/sidebar/VisibilityOrderingBuilder.js +10 -10
  50. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  51. package/dist/sidebar/aggregations/AggregationEdit.js +3 -3
  52. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  53. package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
  54. package/dist/sidebar/aggregations/Aggregations.js +4 -4
  55. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  56. package/dist/tsconfig.tsbuildinfo +1 -1
  57. package/package.json +12 -12
@@ -5,13 +5,13 @@ import dh from '@deephaven/jsapi-shim';
5
5
  import Log from '@deephaven/log';
6
6
  import TableColumnFormatter from "./TableColumnFormatter.js";
7
7
  var log = Log.module('IntegerColumnFormatter');
8
- /** Column formatter for integers/whole numbers */
9
8
 
10
- class IntegerColumnFormatter extends TableColumnFormatter {
9
+ /** Column formatter for integers/whole numbers */
10
+ export class IntegerColumnFormatter extends TableColumnFormatter {
11
11
  /**
12
12
  * Validates format object
13
- * @param {Object} format Format object
14
- * @returns {boolean} true for valid object
13
+ * @param format Format object
14
+ * @returns true for valid object
15
15
  */
16
16
  static isValid(format) {
17
17
  try {
@@ -21,10 +21,19 @@ class IntegerColumnFormatter extends TableColumnFormatter {
21
21
  return false;
22
22
  }
23
23
  }
24
+ /**
25
+ * Create an IntegerColumnFormat object with the parameters specified
26
+ * @param label Label for the format
27
+ * @param formatString Format string for the format
28
+ * @param multiplier Optional multiplier for the formatter
29
+ * @param type Type of format created
30
+ * @returns IntegerColumnFormat object
31
+ */
32
+
24
33
 
25
34
  static makeFormat(label, formatString) {
26
- var multiplier = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
27
- var type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : TableColumnFormatter.TYPE_CONTEXT_PRESET;
35
+ var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : TableColumnFormatter.TYPE_CONTEXT_PRESET;
36
+ var multiplier = arguments.length > 3 ? arguments[3] : undefined;
28
37
  return {
29
38
  label,
30
39
  type,
@@ -32,17 +41,38 @@ class IntegerColumnFormatter extends TableColumnFormatter {
32
41
  multiplier
33
42
  };
34
43
  }
44
+ /**
45
+ * Convenient function to create a IntegerFormatObject with Preset type set
46
+ * @param label Label for this format object
47
+ * @param formatString Format string to use
48
+ * @param multiplier Multiplier to use
49
+ * @returns IntegerColumnFormat object
50
+ */
51
+
52
+
53
+ static makePresetFormat(label) {
54
+ var formatString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
55
+ var multiplier = arguments.length > 2 ? arguments[2] : undefined;
56
+ return IntegerColumnFormatter.makeFormat(label, formatString, TableColumnFormatter.TYPE_CONTEXT_PRESET, multiplier);
57
+ }
58
+ /**
59
+ * Convenient function to create a IntegerFormatObject with a default 'Custom Format' label and Custom type
60
+ * @param formatString Format string to use
61
+ * @param multiplier Multiplier to use
62
+ * @returns IntegerColumnFormat object
63
+ */
64
+
35
65
 
36
66
  static makeCustomFormat() {
37
- var formatString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
38
- var multiplier = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
39
- return IntegerColumnFormatter.makeFormat('Custom Format', formatString, multiplier, TableColumnFormatter.TYPE_CONTEXT_CUSTOM);
67
+ var formatString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
68
+ var multiplier = arguments.length > 1 ? arguments[1] : undefined;
69
+ return IntegerColumnFormatter.makeFormat('Custom Format', formatString, TableColumnFormatter.TYPE_CONTEXT_CUSTOM, multiplier);
40
70
  }
41
71
  /**
42
72
  * Check if the given formats match
43
- * @param {?Object} formatA format object to check
44
- * @param {?Object} formatB format object to check
45
- * @returns {boolean} True if the formats match
73
+ * @param formatA format object to check
74
+ * @param formatB format object to check
75
+ * @returns True if the formats match
46
76
  */
47
77
 
48
78
 
@@ -50,15 +80,26 @@ class IntegerColumnFormatter extends TableColumnFormatter {
50
80
  return formatA === formatB || formatA != null && formatB != null && formatA.type === formatB.type && formatA.formatString === formatB.formatString && formatA.multiplier === formatB.multiplier;
51
81
  }
52
82
 
83
+ constructor() {
84
+ var {
85
+ defaultFormatString = IntegerColumnFormatter.DEFAULT_FORMAT_STRING
86
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
87
+ super();
88
+
89
+ _defineProperty(this, "defaultFormatString", void 0);
90
+
91
+ this.defaultFormatString = defaultFormatString;
92
+ }
53
93
  /**
54
- * @param {number} valueParam Value to format
55
- * @param {Object} format Format object
56
- * @param {string} format.formatString Format string
57
- * @param {number|null} format.multiplier Optional multiplier
58
- * @returns {string} Formatted string
94
+ * Format a value with the provided format object
95
+ * @param valueParam Value to format
96
+ * @param format Format object
97
+ * @returns Formatted string
59
98
  */
99
+
100
+
60
101
  format(valueParam, format) {
61
- var formatString = format && format.formatString || IntegerColumnFormatter.DEFAULT_FORMAT_STRING;
102
+ var formatString = format && format.formatString || this.defaultFormatString;
62
103
  var value = format && format.multiplier ? valueParam * format.multiplier : valueParam;
63
104
 
64
105
  try {
@@ -74,7 +115,7 @@ class IntegerColumnFormatter extends TableColumnFormatter {
74
115
 
75
116
  _defineProperty(IntegerColumnFormatter, "DEFAULT_FORMAT_STRING", '###,##0');
76
117
 
77
- _defineProperty(IntegerColumnFormatter, "FORMAT_MILLIONS", IntegerColumnFormatter.makeFormat('Millions', '###,##0.000 mm', 0.000001));
118
+ _defineProperty(IntegerColumnFormatter, "FORMAT_MILLIONS", IntegerColumnFormatter.makePresetFormat('Millions', '###,##0.000 mm', 0.000001));
78
119
 
79
120
  export default IntegerColumnFormatter;
80
121
  //# sourceMappingURL=IntegerColumnFormatter.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/formatters/IntegerColumnFormatter.js"],"names":["dh","Log","TableColumnFormatter","log","module","IntegerColumnFormatter","isValid","format","i18n","NumberFormat","formatString","e","makeFormat","label","multiplier","type","TYPE_CONTEXT_PRESET","makeCustomFormat","TYPE_CONTEXT_CUSTOM","isSameFormat","formatA","formatB","valueParam","DEFAULT_FORMAT_STRING","value","error"],"mappings":";;AAAA;AACA,OAAOA,EAAP,MAAe,uBAAf;AACA,OAAOC,GAAP,MAAgB,gBAAhB;OACOC,oB;AAEP,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAJ,CAAW,wBAAX,CAAZ;AAEA;;AACA,MAAMC,sBAAN,SAAqCH,oBAArC,CAA0D;AACxD;AACF;AACA;AACA;AACA;AACgB,SAAPI,OAAO,CAACC,MAAD,EAAS;AACrB,QAAI;AACFP,MAAAA,EAAE,CAACQ,IAAH,CAAQC,YAAR,CAAqBF,MAArB,CAA4BA,MAAM,CAACG,YAAnC,EAAiD,CAAjD;AACA,aAAO,IAAP;AACD,KAHD,CAGE,OAAOC,CAAP,EAAU;AACV,aAAO,KAAP;AACD;AACF;;AAEgB,SAAVC,UAAU,CACfC,KADe,EAEfH,YAFe,EAKf;AAAA,QAFAI,UAEA,uEAFa,IAEb;AAAA,QADAC,IACA,uEADOb,oBAAoB,CAACc,mBAC5B;AACA,WAAO;AACLH,MAAAA,KADK;AAELE,MAAAA,IAFK;AAGLL,MAAAA,YAHK;AAILI,MAAAA;AAJK,KAAP;AAMD;;AAEsB,SAAhBG,gBAAgB,GAAyC;AAAA,QAAxCP,YAAwC,uEAAzB,IAAyB;AAAA,QAAnBI,UAAmB,uEAAN,IAAM;AAC9D,WAAOT,sBAAsB,CAACO,UAAvB,CACL,eADK,EAELF,YAFK,EAGLI,UAHK,EAILZ,oBAAoB,CAACgB,mBAJhB,CAAP;AAMD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACqB,SAAZC,YAAY,CAACC,OAAD,EAAUC,OAAV,EAAmB;AACpC,WACED,OAAO,KAAKC,OAAZ,IACCD,OAAO,IAAI,IAAX,IACCC,OAAO,IAAI,IADZ,IAECD,OAAO,CAACL,IAAR,KAAiBM,OAAO,CAACN,IAF1B,IAGCK,OAAO,CAACV,YAAR,KAAyBW,OAAO,CAACX,YAHlC,IAICU,OAAO,CAACN,UAAR,KAAuBO,OAAO,CAACP,UANnC;AAQD;;AAUD;AACF;AACA;AACA;AACA;AACA;AACA;AACEP,EAAAA,MAAM,CAACe,UAAD,EAAaf,MAAb,EAAqB;AACzB,QAAMG,YAAY,GACfH,MAAM,IAAIA,MAAM,CAACG,YAAlB,IACAL,sBAAsB,CAACkB,qBAFzB;AAGA,QAAMC,KAAK,GACTjB,MAAM,IAAIA,MAAM,CAACO,UAAjB,GAA8BQ,UAAU,GAAGf,MAAM,CAACO,UAAlD,GAA+DQ,UADjE;;AAEA,QAAI;AACF,aAAOtB,EAAE,CAACQ,IAAH,CAAQC,YAAR,CAAqBF,MAArB,CAA4BG,YAA5B,EAA0Cc,KAA1C,CAAP;AACD,KAFD,CAEE,OAAOb,CAAP,EAAU;AACVR,MAAAA,GAAG,CAACsB,KAAJ,CAAU,0BAAV;AACD;;AACD,WAAO,EAAP;AACD;;AAlFuD;;gBAApDpB,sB,2BAuD2B,S;;gBAvD3BA,sB,qBAyDqBA,sBAAsB,CAACO,UAAvB,CACvB,UADuB,EAEvB,gBAFuB,EAGvB,QAHuB,C;;AA4B3B,eAAeP,sBAAf","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport TableColumnFormatter from './TableColumnFormatter';\n\nconst log = Log.module('IntegerColumnFormatter');\n\n/** Column formatter for integers/whole numbers */\nclass IntegerColumnFormatter extends TableColumnFormatter {\n /**\n * Validates format object\n * @param {Object} format Format object\n * @returns {boolean} true for valid object\n */\n static isValid(format) {\n try {\n dh.i18n.NumberFormat.format(format.formatString, 0);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n static makeFormat(\n label,\n formatString,\n multiplier = null,\n type = TableColumnFormatter.TYPE_CONTEXT_PRESET\n ) {\n return {\n label,\n type,\n formatString,\n multiplier,\n };\n }\n\n static makeCustomFormat(formatString = null, multiplier = null) {\n return IntegerColumnFormatter.makeFormat(\n 'Custom Format',\n formatString,\n multiplier,\n TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n );\n }\n\n /**\n * Check if the given formats match\n * @param {?Object} formatA format object to check\n * @param {?Object} formatB format object to check\n * @returns {boolean} True if the formats match\n */\n static isSameFormat(formatA, formatB) {\n return (\n formatA === formatB ||\n (formatA != null &&\n formatB != null &&\n formatA.type === formatB.type &&\n formatA.formatString === formatB.formatString &&\n formatA.multiplier === formatB.multiplier)\n );\n }\n\n static DEFAULT_FORMAT_STRING = '###,##0';\n\n static FORMAT_MILLIONS = IntegerColumnFormatter.makeFormat(\n 'Millions',\n '###,##0.000 mm',\n 0.000001\n );\n\n /**\n * @param {number} valueParam Value to format\n * @param {Object} format Format object\n * @param {string} format.formatString Format string\n * @param {number|null} format.multiplier Optional multiplier\n * @returns {string} Formatted string\n */\n format(valueParam, format) {\n const formatString =\n (format && format.formatString) ||\n IntegerColumnFormatter.DEFAULT_FORMAT_STRING;\n const value =\n format && format.multiplier ? valueParam * format.multiplier : valueParam;\n try {\n return dh.i18n.NumberFormat.format(formatString, value);\n } catch (e) {\n log.error('Invalid format arguments');\n }\n return '';\n }\n}\n\nexport default IntegerColumnFormatter;\n"],"file":"IntegerColumnFormatter.js"}
1
+ {"version":3,"sources":["../../src/formatters/IntegerColumnFormatter.ts"],"names":["dh","Log","TableColumnFormatter","log","module","IntegerColumnFormatter","isValid","format","i18n","NumberFormat","formatString","e","makeFormat","label","type","TYPE_CONTEXT_PRESET","multiplier","makePresetFormat","makeCustomFormat","TYPE_CONTEXT_CUSTOM","isSameFormat","formatA","formatB","constructor","defaultFormatString","DEFAULT_FORMAT_STRING","valueParam","value","error"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport TableColumnFormatter, {\n TableColumnFormat,\n} from './TableColumnFormatter';\n\nconst log = Log.module('IntegerColumnFormatter');\n\nexport type IntegerColumnFormat = TableColumnFormat & {\n multiplier?: number;\n};\n\nexport type IntegerColumnFormatterOptions = {\n // Default format string to use. Defaults to IntegerColumnFormatter.DEFAULT_FORMAT_STRING\n defaultFormatString?: string;\n};\n\n/** Column formatter for integers/whole numbers */\nexport class IntegerColumnFormatter extends TableColumnFormatter {\n /**\n * Validates format object\n * @param format Format object\n * @returns true for valid object\n */\n static isValid(format: IntegerColumnFormat): boolean {\n try {\n dh.i18n.NumberFormat.format(format.formatString, 0);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Create an IntegerColumnFormat object with the parameters specified\n * @param label Label for the format\n * @param formatString Format string for the format\n * @param multiplier Optional multiplier for the formatter\n * @param type Type of format created\n * @returns IntegerColumnFormat object\n */\n static makeFormat(\n label: string,\n formatString: string,\n type = TableColumnFormatter.TYPE_CONTEXT_PRESET,\n multiplier?: number\n ): IntegerColumnFormat {\n return {\n label,\n type,\n formatString,\n multiplier,\n };\n }\n\n /**\n * Convenient function to create a IntegerFormatObject with Preset type set\n * @param label Label for this format object\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns IntegerColumnFormat object\n */\n static makePresetFormat(\n label: string,\n formatString = '',\n multiplier?: number\n ): IntegerColumnFormat {\n return IntegerColumnFormatter.makeFormat(\n label,\n formatString,\n TableColumnFormatter.TYPE_CONTEXT_PRESET,\n multiplier\n );\n }\n\n /**\n * Convenient function to create a IntegerFormatObject with a default 'Custom Format' label and Custom type\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns IntegerColumnFormat object\n */\n static makeCustomFormat(\n formatString = '',\n multiplier?: number\n ): IntegerColumnFormat {\n return IntegerColumnFormatter.makeFormat(\n 'Custom Format',\n formatString,\n TableColumnFormatter.TYPE_CONTEXT_CUSTOM,\n multiplier\n );\n }\n\n /**\n * Check if the given formats match\n * @param formatA format object to check\n * @param formatB format object to check\n * @returns True if the formats match\n */\n static isSameFormat(\n formatA?: IntegerColumnFormat,\n formatB?: IntegerColumnFormat\n ): boolean {\n return (\n formatA === formatB ||\n (formatA != null &&\n formatB != null &&\n formatA.type === formatB.type &&\n formatA.formatString === formatB.formatString &&\n formatA.multiplier === formatB.multiplier)\n );\n }\n\n static DEFAULT_FORMAT_STRING = '###,##0';\n\n static FORMAT_MILLIONS = IntegerColumnFormatter.makePresetFormat(\n 'Millions',\n '###,##0.000 mm',\n 0.000001\n );\n\n defaultFormatString: string;\n\n constructor({\n defaultFormatString = IntegerColumnFormatter.DEFAULT_FORMAT_STRING,\n }: IntegerColumnFormatterOptions = {}) {\n super();\n\n this.defaultFormatString = defaultFormatString;\n }\n\n /**\n * Format a value with the provided format object\n * @param valueParam Value to format\n * @param format Format object\n * @returns Formatted string\n */\n format(valueParam: number, format: IntegerColumnFormat): string {\n const formatString =\n (format && format.formatString) || this.defaultFormatString;\n const value =\n format && format.multiplier ? valueParam * format.multiplier : valueParam;\n try {\n return dh.i18n.NumberFormat.format(formatString, value);\n } catch (e) {\n log.error('Invalid format arguments');\n }\n return '';\n }\n}\n\nexport default IntegerColumnFormatter;\n"],"file":"IntegerColumnFormatter.js"}
@@ -1,8 +1,8 @@
1
- export { default as BooleanColumnFormatter } from "./BooleanColumnFormatter";
2
- export { default as CharColumnFormatter } from "./CharColumnFormatter";
3
- export { default as DateTimeColumnFormatter } from "./DateTimeColumnFormatter";
4
- export { default as DecimalColumnFormatter } from "./DecimalColumnFormatter";
5
- export { default as DefaultColumnFormatter } from "./DefaultColumnFormatter";
6
- export { default as IntegerColumnFormatter } from "./IntegerColumnFormatter";
7
- export { default as TableColumnFormatter } from "./TableColumnFormatter";
1
+ export { default as BooleanColumnFormatter } from './BooleanColumnFormatter';
2
+ export { default as CharColumnFormatter } from './CharColumnFormatter';
3
+ export * from './DateTimeColumnFormatter';
4
+ export * from './DecimalColumnFormatter';
5
+ export { default as DefaultColumnFormatter } from './DefaultColumnFormatter';
6
+ export * from './IntegerColumnFormatter';
7
+ export { default as TableColumnFormatter } from './TableColumnFormatter';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formatters/index.js"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,8 +1,8 @@
1
1
  export { default as BooleanColumnFormatter } from "./BooleanColumnFormatter.js";
2
2
  export { default as CharColumnFormatter } from "./CharColumnFormatter.js";
3
- export { default as DateTimeColumnFormatter } from "./DateTimeColumnFormatter.js";
4
- export { default as DecimalColumnFormatter } from "./DecimalColumnFormatter.js";
3
+ export * from "./DateTimeColumnFormatter.js";
4
+ export * from "./DecimalColumnFormatter.js";
5
5
  export { default as DefaultColumnFormatter } from "./DefaultColumnFormatter.js";
6
- export { default as IntegerColumnFormatter } from "./IntegerColumnFormatter.js";
6
+ export * from "./IntegerColumnFormatter.js";
7
7
  export { default as TableColumnFormatter } from "./TableColumnFormatter.js";
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/formatters/index.js"],"names":["default","BooleanColumnFormatter","CharColumnFormatter","DateTimeColumnFormatter","DecimalColumnFormatter","DefaultColumnFormatter","IntegerColumnFormatter","TableColumnFormatter"],"mappings":"SAASA,OAAO,IAAIC,sB;SACXD,OAAO,IAAIE,mB;SACXF,OAAO,IAAIG,uB;SACXH,OAAO,IAAII,sB;SACXJ,OAAO,IAAIK,sB;SACXL,OAAO,IAAIM,sB;SACXN,OAAO,IAAIO,oB","sourcesContent":["export { default as BooleanColumnFormatter } from './BooleanColumnFormatter';\nexport { default as CharColumnFormatter } from './CharColumnFormatter';\nexport { default as DateTimeColumnFormatter } from './DateTimeColumnFormatter';\nexport { default as DecimalColumnFormatter } from './DecimalColumnFormatter';\nexport { default as DefaultColumnFormatter } from './DefaultColumnFormatter';\nexport { default as IntegerColumnFormatter } from './IntegerColumnFormatter';\nexport { default as TableColumnFormatter } from './TableColumnFormatter';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/formatters/index.ts"],"names":["default","BooleanColumnFormatter","CharColumnFormatter","DefaultColumnFormatter","TableColumnFormatter"],"mappings":"SAASA,OAAO,IAAIC,sB;SACXD,OAAO,IAAIE,mB;;;SAGXF,OAAO,IAAIG,sB;;SAEXH,OAAO,IAAII,oB","sourcesContent":["export { default as BooleanColumnFormatter } from './BooleanColumnFormatter';\nexport { default as CharColumnFormatter } from './CharColumnFormatter';\nexport * from './DateTimeColumnFormatter';\nexport * from './DecimalColumnFormatter';\nexport { default as DefaultColumnFormatter } from './DefaultColumnFormatter';\nexport * from './IntegerColumnFormatter';\nexport { default as TableColumnFormatter } from './TableColumnFormatter';\n"],"file":"index.js"}
@@ -1,4 +1,4 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
3
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
4
 
@@ -1,4 +1,4 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
3
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
4
 
@@ -2,13 +2,13 @@ import React from 'react';
2
2
  import { Menu } from '@deephaven/components';
3
3
  import AdvancedSettingsType from "./AdvancedSettingsType.js";
4
4
 
5
- var AdvancedSettingsMenu = _ref => {
5
+ var AdvancedSettingsMenu = (_ref) => {
6
6
  var {
7
7
  items,
8
8
  onChange: _onChange = () => undefined
9
9
  } = _ref;
10
10
  return /*#__PURE__*/React.createElement(Menu, {
11
- items: Array.from(items.entries()).map(_ref2 => {
11
+ items: Array.from(items.entries()).map((_ref2) => {
12
12
  var [key, isOn] = _ref2;
13
13
  return {
14
14
  title: AdvancedSettingsMenu.getAdvancedSettingsTitleForKey(key),
@@ -1,6 +1,6 @@
1
1
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
4
4
 
5
5
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
6
 
@@ -271,7 +271,7 @@ class CustomColumnBuilder extends Component {
271
271
  }
272
272
 
273
273
  resetRequestFailed() {
274
- this.setState(_ref => {
274
+ this.setState((_ref) => {
275
275
  var {
276
276
  hasRequestFailed
277
277
  } = _ref;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sidebar/CustomColumnBuilder.jsx"],"names":["React","Component","classNames","PropTypes","shortid","memoize","DragDropContext","Droppable","FontAwesomeIcon","DragUtils","LoadingSpinner","dhNewCircleLargeFilled","vsIssues","CustomColumnInput","IrisGridModel","CustomColumnBuilder","makeCustomColumnInputEventKey","generate","createCustomColumnInput","eventKey","name","formula","constructor","props","inputs","key","find","input","findIndex","handleAddColumnClick","bind","handleSaveClick","handleInputChange","handleDeleteColumn","handleCustomColumnUpdated","handleRequestFailed","handleDragEnd","resetRequestFailed","handleEditorTabNavigation","state","isCustomColumnApplying","errorMessage","hasRequestFailed","container","componentDidMount","customColumns","parseCustomColumns","startListening","componentWillUnmount","stopListening","messageTimer","clearTimeout","resetErrorMessage","setState","model","addEventListener","EVENT","COLUMNS_CHANGED","UPDATED","REQUEST_FAILED","removeEventListener","length","customColumnInputs","map","customColumn","split","newInputs","push","customColumnIndex","getInputIndex","splice","type","value","customColumnInput","getInput","newCustomInput","event","detail","JSON","stringify","configuration","result","stopDragging","destination","sourceIndex","source","index","destinationIndex","sourceInput","focusEditorIndex","shiftKey","querySelectorAll","focus","querySelector","nextFocusIndex","onSave","forEach","renderInputs","render","onCancel","startDragging","provided","snapshot","innerRef","droppableProps","dragging","draggingFromThisWith","placeholder","propTypes","instanceOf","isRequired","arrayOf","string","func","defaultProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport shortid from 'shortid';\nimport memoize from 'memoize-one';\nimport { DragDropContext, Droppable } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DragUtils, LoadingSpinner } from '@deephaven/components';\nimport { dhNewCircleLargeFilled, vsIssues } from '@deephaven/icons';\nimport CustomColumnInput from './CustomColumnInput';\nimport './CustomColumnBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nclass CustomColumnBuilder extends Component {\n static makeCustomColumnInputEventKey() {\n return shortid.generate();\n }\n\n static createCustomColumnInput() {\n return {\n eventKey: shortid.generate(),\n name: '',\n formula: '',\n };\n }\n\n constructor(props) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleSaveClick = this.handleSaveClick.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleCustomColumnUpdated = this.handleCustomColumnUpdated.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.resetRequestFailed = this.resetRequestFailed.bind(this);\n\n this.handleEditorTabNavigation = this.handleEditorTabNavigation.bind(this);\n\n this.state = {\n inputs: [],\n isCustomColumnApplying: false,\n errorMessage: null,\n hasRequestFailed: false,\n };\n this.container = null;\n }\n\n componentDidMount() {\n const { customColumns } = this.props;\n this.parseCustomColumns(customColumns);\n this.startListening();\n }\n\n componentWillUnmount() {\n this.stopListening();\n if (this.messageTimer) {\n clearTimeout(this.messageTimer);\n }\n }\n\n getInput = memoize((inputs, key) =>\n inputs.find(input => input.eventKey === key)\n );\n\n getInputIndex = memoize((inputs, key) =>\n inputs.findIndex(input => input.eventKey === key)\n );\n\n resetErrorMessage() {\n this.setState({ errorMessage: null });\n }\n\n startListening() {\n const { model } = this.props;\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n stopListening() {\n const { model } = this.props;\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n parseCustomColumns(customColumns) {\n if (customColumns.length > 0) {\n const customColumnInputs = customColumns.map(customColumn => {\n const input = customColumn.split(/=(.+)/, 2);\n return {\n eventKey: CustomColumnBuilder.makeCustomColumnInputEventKey(),\n name: input[0],\n formula: input[1],\n };\n });\n this.setState({ inputs: customColumnInputs });\n } else {\n this.setState({\n inputs: [CustomColumnBuilder.createCustomColumnInput()],\n });\n }\n }\n\n handleAddColumnClick() {\n const { inputs } = this.state;\n const newInputs = [...inputs];\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleDeleteColumn(eventKey) {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1);\n if (newInputs.length === 0) {\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n }\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleInputChange(eventKey, type, value) {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const customColumnInput = this.getInput(inputs, eventKey);\n\n const newCustomInput = { ...customColumnInput };\n newCustomInput[type] = value;\n\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1, newCustomInput);\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleCustomColumnUpdated() {\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n this.setState({ isCustomColumnApplying: false });\n }\n\n handleRequestFailed(event) {\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n\n this.setState({\n isCustomColumnApplying: false,\n errorMessage: (\n <>\n <p>\n <FontAwesomeIcon icon={vsIssues} /> Failed to apply custom columns.\n </p>\n <div className=\"error-box\">\n {event.detail.errorMessage}\n <br />\n Table configuration: {JSON.stringify(event.detail.configuration)}\n </div>\n </>\n ),\n hasRequestFailed: true,\n });\n }\n\n handleDragEnd(result) {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (!result.destination) {\n return;\n }\n const { inputs } = this.state;\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const newInputs = [...inputs];\n const sourceInput = inputs[sourceIndex];\n\n newInputs.splice(sourceIndex, 1);\n newInputs.splice(destinationIndex, 0, sourceInput);\n\n this.setState({ inputs: newInputs });\n }\n\n handleEditorTabNavigation(focusEditorIndex, shiftKey) {\n const { inputs } = this.state;\n // focus on drag handle\n if (shiftKey) {\n this.container\n .querySelectorAll(`.btn-drag-handle`) // eslint-disable-next-line no-unexpected-multiline\n [focusEditorIndex].focus();\n return;\n }\n if (focusEditorIndex === inputs.length - 1) {\n // focus on add another column button\n this.container.querySelector('.btn-add-column').focus();\n } else {\n // focus on next column name input\n const nextFocusIndex = focusEditorIndex + 1;\n this.container\n .querySelectorAll('.custom-column-input') // eslint-disable-next-line no-unexpected-multiline\n [nextFocusIndex].focus();\n }\n }\n\n handleSaveClick() {\n const { onSave } = this.props;\n const { inputs, isCustomColumnApplying } = this.state;\n if (isCustomColumnApplying) {\n return;\n }\n const customColumns = [];\n inputs.forEach(input => {\n const { name, formula } = input;\n if (name && formula) {\n customColumns.push(`${name}=${formula}`);\n }\n });\n this.resetErrorMessage();\n this.setState({ isCustomColumnApplying: true });\n onSave(customColumns);\n }\n\n resetRequestFailed() {\n this.setState(({ hasRequestFailed }) => {\n if (hasRequestFailed) {\n return { hasRequestFailed: false };\n }\n return null;\n });\n }\n\n renderInputs() {\n const { inputs, hasRequestFailed } = this.state;\n\n return inputs.map((input, index) => {\n const { eventKey, name, formula } = input;\n return (\n <CustomColumnInput\n key={eventKey}\n inputIndex={index}\n eventKey={eventKey}\n name={name}\n formula={formula}\n onChange={this.handleInputChange}\n onDeleteColumn={this.handleDeleteColumn}\n onTabInEditor={this.handleEditorTabNavigation}\n invalid={hasRequestFailed}\n />\n );\n });\n }\n\n render() {\n const { onCancel } = this.props;\n const { inputs, errorMessage, isCustomColumnApplying } = this.state;\n return (\n <div\n role=\"presentation\"\n className=\"custom-column-builder-container\"\n ref={container => {\n this.container = container;\n }}\n onClick={this.resetRequestFailed}\n onFocus={this.resetRequestFailed}\n >\n <div className=\"section-title\">Custom Column Name and Formula</div>\n <hr />\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={this.handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {this.renderInputs()}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n\n <div className=\"pt-1 px-3\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-add-column\"\n onClick={this.handleAddColumnClick}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Another Column\n </button>\n </div>\n\n <div className=\"custom-column-builder-footer\">\n {errorMessage && <div className=\"error-message\">{errorMessage}</div>}\n\n <div className=\"d-flex justify-content-end\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={onCancel}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className={classNames('btn btn-primary btn-apply', {\n 'btn-spinner': isCustomColumnApplying,\n })}\n onClick={this.handleSaveClick}\n >\n {isCustomColumnApplying && (\n <span>\n <LoadingSpinner />\n <span className=\"btn-normal-content\">Applying</span>\n <span className=\"btn-hover-content\">Applying</span>\n </span>\n )}\n {!isCustomColumnApplying &&\n (inputs.length > 1 ? 'Save Columns' : 'Save Column')}\n </button>\n </div>\n </div>\n </div>\n );\n }\n}\n\nCustomColumnBuilder.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n customColumns: PropTypes.arrayOf(PropTypes.string),\n onSave: PropTypes.func,\n onCancel: PropTypes.func,\n};\n\nCustomColumnBuilder.defaultProps = {\n customColumns: [],\n onSave: () => {},\n onCancel: () => {},\n};\n\nexport default CustomColumnBuilder;\n"],"file":"CustomColumnBuilder.js"}
1
+ {"version":3,"sources":["../../src/sidebar/CustomColumnBuilder.jsx"],"names":["React","Component","classNames","PropTypes","shortid","memoize","DragDropContext","Droppable","FontAwesomeIcon","DragUtils","LoadingSpinner","dhNewCircleLargeFilled","vsIssues","CustomColumnInput","IrisGridModel","CustomColumnBuilder","makeCustomColumnInputEventKey","generate","createCustomColumnInput","eventKey","name","formula","constructor","props","inputs","key","find","input","findIndex","handleAddColumnClick","bind","handleSaveClick","handleInputChange","handleDeleteColumn","handleCustomColumnUpdated","handleRequestFailed","handleDragEnd","resetRequestFailed","handleEditorTabNavigation","state","isCustomColumnApplying","errorMessage","hasRequestFailed","container","componentDidMount","customColumns","parseCustomColumns","startListening","componentWillUnmount","stopListening","messageTimer","clearTimeout","resetErrorMessage","setState","model","addEventListener","EVENT","COLUMNS_CHANGED","UPDATED","REQUEST_FAILED","removeEventListener","length","customColumnInputs","map","customColumn","split","newInputs","push","customColumnIndex","getInputIndex","splice","type","value","customColumnInput","getInput","newCustomInput","event","detail","JSON","stringify","configuration","result","stopDragging","destination","sourceIndex","source","index","destinationIndex","sourceInput","focusEditorIndex","shiftKey","querySelectorAll","focus","querySelector","nextFocusIndex","onSave","forEach","renderInputs","render","onCancel","startDragging","provided","snapshot","innerRef","droppableProps","dragging","draggingFromThisWith","placeholder","propTypes","instanceOf","isRequired","arrayOf","string","func","defaultProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport shortid from 'shortid';\nimport memoize from 'memoize-one';\nimport { DragDropContext, Droppable } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DragUtils, LoadingSpinner } from '@deephaven/components';\nimport { dhNewCircleLargeFilled, vsIssues } from '@deephaven/icons';\nimport CustomColumnInput from './CustomColumnInput';\nimport './CustomColumnBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nclass CustomColumnBuilder extends Component {\n static makeCustomColumnInputEventKey() {\n return shortid.generate();\n }\n\n static createCustomColumnInput() {\n return {\n eventKey: shortid.generate(),\n name: '',\n formula: '',\n };\n }\n\n constructor(props) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleSaveClick = this.handleSaveClick.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleCustomColumnUpdated = this.handleCustomColumnUpdated.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.resetRequestFailed = this.resetRequestFailed.bind(this);\n\n this.handleEditorTabNavigation = this.handleEditorTabNavigation.bind(this);\n\n this.state = {\n inputs: [],\n isCustomColumnApplying: false,\n errorMessage: null,\n hasRequestFailed: false,\n };\n this.container = null;\n }\n\n componentDidMount() {\n const { customColumns } = this.props;\n this.parseCustomColumns(customColumns);\n this.startListening();\n }\n\n componentWillUnmount() {\n this.stopListening();\n if (this.messageTimer) {\n clearTimeout(this.messageTimer);\n }\n }\n\n getInput = memoize((inputs, key) =>\n inputs.find(input => input.eventKey === key)\n );\n\n getInputIndex = memoize((inputs, key) =>\n inputs.findIndex(input => input.eventKey === key)\n );\n\n resetErrorMessage() {\n this.setState({ errorMessage: null });\n }\n\n startListening() {\n const { model } = this.props;\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n stopListening() {\n const { model } = this.props;\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.UPDATED,\n this.handleCustomColumnUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n }\n\n parseCustomColumns(customColumns) {\n if (customColumns.length > 0) {\n const customColumnInputs = customColumns.map(customColumn => {\n const input = customColumn.split(/=(.+)/, 2);\n return {\n eventKey: CustomColumnBuilder.makeCustomColumnInputEventKey(),\n name: input[0],\n formula: input[1],\n };\n });\n this.setState({ inputs: customColumnInputs });\n } else {\n this.setState({\n inputs: [CustomColumnBuilder.createCustomColumnInput()],\n });\n }\n }\n\n handleAddColumnClick() {\n const { inputs } = this.state;\n const newInputs = [...inputs];\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleDeleteColumn(eventKey) {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1);\n if (newInputs.length === 0) {\n newInputs.push(CustomColumnBuilder.createCustomColumnInput());\n }\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleInputChange(eventKey, type, value) {\n const { inputs } = this.state;\n const customColumnIndex = this.getInputIndex(inputs, eventKey);\n const customColumnInput = this.getInput(inputs, eventKey);\n\n const newCustomInput = { ...customColumnInput };\n newCustomInput[type] = value;\n\n const newInputs = [...inputs];\n newInputs.splice(customColumnIndex, 1, newCustomInput);\n this.setState({\n inputs: newInputs,\n });\n }\n\n handleCustomColumnUpdated() {\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n this.setState({ isCustomColumnApplying: false });\n }\n\n handleRequestFailed(event) {\n const { isCustomColumnApplying } = this.state;\n if (!isCustomColumnApplying) {\n return;\n }\n\n this.setState({\n isCustomColumnApplying: false,\n errorMessage: (\n <>\n <p>\n <FontAwesomeIcon icon={vsIssues} /> Failed to apply custom columns.\n </p>\n <div className=\"error-box\">\n {event.detail.errorMessage}\n <br />\n Table configuration: {JSON.stringify(event.detail.configuration)}\n </div>\n </>\n ),\n hasRequestFailed: true,\n });\n }\n\n handleDragEnd(result) {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (!result.destination) {\n return;\n }\n const { inputs } = this.state;\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const newInputs = [...inputs];\n const sourceInput = inputs[sourceIndex];\n\n newInputs.splice(sourceIndex, 1);\n newInputs.splice(destinationIndex, 0, sourceInput);\n\n this.setState({ inputs: newInputs });\n }\n\n handleEditorTabNavigation(focusEditorIndex, shiftKey) {\n const { inputs } = this.state;\n // focus on drag handle\n if (shiftKey) {\n this.container\n .querySelectorAll(`.btn-drag-handle`) // eslint-disable-next-line no-unexpected-multiline\n [focusEditorIndex].focus();\n return;\n }\n if (focusEditorIndex === inputs.length - 1) {\n // focus on add another column button\n this.container.querySelector('.btn-add-column').focus();\n } else {\n // focus on next column name input\n const nextFocusIndex = focusEditorIndex + 1;\n this.container\n .querySelectorAll('.custom-column-input') // eslint-disable-next-line no-unexpected-multiline\n [nextFocusIndex].focus();\n }\n }\n\n handleSaveClick() {\n const { onSave } = this.props;\n const { inputs, isCustomColumnApplying } = this.state;\n if (isCustomColumnApplying) {\n return;\n }\n const customColumns = [];\n inputs.forEach(input => {\n const { name, formula } = input;\n if (name && formula) {\n customColumns.push(`${name}=${formula}`);\n }\n });\n this.resetErrorMessage();\n this.setState({ isCustomColumnApplying: true });\n onSave(customColumns);\n }\n\n resetRequestFailed() {\n this.setState(({ hasRequestFailed }) => {\n if (hasRequestFailed) {\n return { hasRequestFailed: false };\n }\n return null;\n });\n }\n\n renderInputs() {\n const { inputs, hasRequestFailed } = this.state;\n\n return inputs.map((input, index) => {\n const { eventKey, name, formula } = input;\n return (\n <CustomColumnInput\n key={eventKey}\n inputIndex={index}\n eventKey={eventKey}\n name={name}\n formula={formula}\n onChange={this.handleInputChange}\n onDeleteColumn={this.handleDeleteColumn}\n onTabInEditor={this.handleEditorTabNavigation}\n invalid={hasRequestFailed}\n />\n );\n });\n }\n\n render() {\n const { onCancel } = this.props;\n const { inputs, errorMessage, isCustomColumnApplying } = this.state;\n return (\n <div\n role=\"presentation\"\n className=\"custom-column-builder-container\"\n ref={container => {\n this.container = container;\n }}\n onClick={this.resetRequestFailed}\n onFocus={this.resetRequestFailed}\n >\n <div className=\"section-title\">Custom Column Name and Formula</div>\n <hr />\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={this.handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {this.renderInputs()}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n\n <div className=\"pt-1 px-3\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-add-column\"\n onClick={this.handleAddColumnClick}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Another Column\n </button>\n </div>\n\n <div className=\"custom-column-builder-footer\">\n {errorMessage && <div className=\"error-message\">{errorMessage}</div>}\n\n <div className=\"d-flex justify-content-end\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={onCancel}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className={classNames('btn btn-primary btn-apply', {\n 'btn-spinner': isCustomColumnApplying,\n })}\n onClick={this.handleSaveClick}\n >\n {isCustomColumnApplying && (\n <span>\n <LoadingSpinner />\n <span className=\"btn-normal-content\">Applying</span>\n <span className=\"btn-hover-content\">Applying</span>\n </span>\n )}\n {!isCustomColumnApplying &&\n (inputs.length > 1 ? 'Save Columns' : 'Save Column')}\n </button>\n </div>\n </div>\n </div>\n );\n }\n}\n\nCustomColumnBuilder.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n customColumns: PropTypes.arrayOf(PropTypes.string),\n onSave: PropTypes.func,\n onCancel: PropTypes.func,\n};\n\nCustomColumnBuilder.defaultProps = {\n customColumns: [],\n onSave: () => {},\n onCancel: () => {},\n};\n\nexport default CustomColumnBuilder;\n"],"file":"CustomColumnBuilder.js"}
@@ -1,4 +1,4 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
3
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
4
 
@@ -146,7 +146,7 @@ class RollupRows extends Component {
146
146
  }
147
147
 
148
148
  handleSortAscending() {
149
- this.setState(_ref2 => {
149
+ this.setState((_ref2) => {
150
150
  var {
151
151
  sort
152
152
  } = _ref2;
@@ -157,7 +157,7 @@ class RollupRows extends Component {
157
157
  }
158
158
 
159
159
  handleSortDescending() {
160
- this.setState(_ref3 => {
160
+ this.setState((_ref3) => {
161
161
  var {
162
162
  sort
163
163
  } = _ref3;
@@ -226,7 +226,7 @@ class RollupRows extends Component {
226
226
 
227
227
 
228
228
  if (destination.droppableId === UNGROUPED_LIST_ID) {
229
- this.setState(_ref4 => {
229
+ this.setState((_ref4) => {
230
230
  var {
231
231
  groupedSelectedRanges,
232
232
  columns
@@ -253,7 +253,7 @@ class RollupRows extends Component {
253
253
  destinationIndex += 1;
254
254
  }
255
255
 
256
- this.setState(_ref5 => {
256
+ this.setState((_ref5) => {
257
257
  var {
258
258
  columns,
259
259
  ungroupedSelectedRanges,
@@ -277,7 +277,7 @@ class RollupRows extends Component {
277
277
 
278
278
  handleUngroupedSelect(itemIndex) {
279
279
  log.debug('handleUngroupedSelect');
280
- this.setState(_ref6 => {
280
+ this.setState((_ref6) => {
281
281
  var {
282
282
  columns
283
283
  } = _ref6;
@@ -291,7 +291,7 @@ class RollupRows extends Component {
291
291
 
292
292
  handleUngroupedSelectionChange(ungroupedSelectedRanges) {
293
293
  log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);
294
- this.setState(_ref7 => {
294
+ this.setState((_ref7) => {
295
295
  var {
296
296
  ungroupedSelectedRanges: stateUngroupedSelectedRanges
297
297
  } = _ref7;
@@ -309,7 +309,7 @@ class RollupRows extends Component {
309
309
 
310
310
  handleGroupedSelectionChange(groupedSelectedRanges) {
311
311
  log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);
312
- this.setState(_ref8 => {
312
+ this.setState((_ref8) => {
313
313
  var {
314
314
  groupedSelectedRanges: stateGroupedSelectedRanges
315
315
  } = _ref8;
@@ -326,7 +326,7 @@ class RollupRows extends Component {
326
326
  }
327
327
 
328
328
  handleDeleteClicked(index) {
329
- this.setState(_ref9 => {
329
+ this.setState((_ref9) => {
330
330
  var {
331
331
  columns
332
332
  } = _ref9;
@@ -339,7 +339,7 @@ class RollupRows extends Component {
339
339
  }
340
340
 
341
341
  handleShowConstituentsChange() {
342
- this.setState(_ref10 => {
342
+ this.setState((_ref10) => {
343
343
  var {
344
344
  showConstituents
345
345
  } = _ref10;
@@ -350,7 +350,7 @@ class RollupRows extends Component {
350
350
  }
351
351
 
352
352
  handleShowNonAggregatedColumnsChange() {
353
- this.setState(_ref11 => {
353
+ this.setState((_ref11) => {
354
354
  var {
355
355
  showNonAggregatedColumns
356
356
  } = _ref11;