@adaptabletools/adaptable-cjs 18.0.0-canary.13 → 18.0.0-canary.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable-cjs",
3
- "version": "18.0.0-canary.13",
3
+ "version": "18.0.0-canary.15",
4
4
  "description": "Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements",
5
5
  "keywords": [
6
6
  "web-components",
@@ -27,11 +27,11 @@ import { IMetamodelService } from '../Utilities/Services/Interface/IMetamodelSer
27
27
  import { RenderReactRootFn } from '../renderReactRoot';
28
28
  import { AdaptableLogger } from '../agGrid/AdaptableLogger';
29
29
  import { Fdc3Service } from '../Utilities/Services/Fdc3Service';
30
- import { SummaryService } from '../Utilities/Services/SummaryService';
31
30
  import { AgGridAdapter } from '../agGrid/AgGridAdapter';
32
31
  import { AgGridColumnAdapter } from '../agGrid/AgGridColumnAdapter';
33
32
  import { AgGridMenuAdapter } from '../agGrid/AgGridMenuAdapter';
34
33
  import { RowEditService } from '../Utilities/Services/RowEditService';
34
+ import { ISummaryService } from '../Utilities/Services/Interface/ISummaryService';
35
35
  /**
36
36
  * Contains AG Grid Options and Modules - used when instantiating AdapTable vanilla
37
37
  */
@@ -91,7 +91,7 @@ export interface IAdaptable {
91
91
  RowEditService: RowEditService;
92
92
  Fdc3Service: Fdc3Service;
93
93
  CellPopupService: CellPopupService;
94
- SummaryService: SummaryService;
94
+ SummaryService: ISummaryService;
95
95
  /**
96
96
  * INTERNAL ADAPTABLE EVENTS
97
97
  * These are not called externally - for that we use eventapi
@@ -27,6 +27,7 @@ import { AdaptableObjectTag, AdaptableObjectWithScope } from '../../PredefinedCo
27
27
  import { Fdc3Service } from '../../Utilities/Services/Fdc3Service';
28
28
  import { CellPopupService } from '../../Utilities/Services/CellPopupService';
29
29
  import { RowEditService } from '../../Utilities/Services/RowEditService';
30
+ import { ISummaryService } from '../../Utilities/Services/Interface/ISummaryService';
30
31
  export declare class AdaptableInternalApi extends ApiBase {
31
32
  getSystemState(): SystemState;
32
33
  showPopupConfirmation(confirmation: UIConfirmation): void;
@@ -60,6 +61,7 @@ export declare class AdaptableInternalApi extends ApiBase {
60
61
  getReportService(): IReportService;
61
62
  getCalculatedColumnExpressionService(): ICalculatedColumnExpressionService;
62
63
  getEntitlementService(): IEntitlementService;
64
+ getSummaryService(): ISummaryService;
63
65
  getQueryLanguageService(): IQueryLanguageService;
64
66
  getAlertService(): IAlertService;
65
67
  getTeamSharingService(): ITeamSharingService;
@@ -106,6 +106,9 @@ class AdaptableInternalApi extends ApiBase_1.ApiBase {
106
106
  getEntitlementService() {
107
107
  return this.adaptable.EntitlementService;
108
108
  }
109
+ getSummaryService() {
110
+ return this.adaptable.SummaryService;
111
+ }
109
112
  getQueryLanguageService() {
110
113
  return this.adaptable.QueryLanguageService;
111
114
  }
@@ -1,4 +1,4 @@
1
- import { SummarySupportedExpression } from '../../Utilities/Services/SummaryService';
1
+ import { SummarySupportedExpression } from "../../Utilities/Services/Interface/ISummaryService";
2
2
  export declare const ROW_SUMMARY_ROW_ID = "__ROW_SUMMARY_ROW_ID";
3
3
  /**
4
4
  * Position of Row Summary - 'Top' or 'Bottom'
@@ -8,6 +8,12 @@ export type RowSummaryPosition = 'Top' | 'Bottom';
8
8
  * Defines a Row Summary used in a Layout
9
9
  */
10
10
  export interface RowSummary {
11
+ /**
12
+ * Where Row Summary appears - 'Top' or 'Bottom'
13
+ */
11
14
  Position?: RowSummaryPosition;
15
+ /**
16
+ * Map of Columns with Summary Expressions
17
+ */
12
18
  ColumnsMap: Record<string, SummarySupportedExpression>;
13
19
  }
@@ -1,6 +1,25 @@
1
+ /**
2
+ * Config used when transposing a Grid
3
+ */
1
4
  export interface TransposeConfig {
5
+ /**
6
+ * Column to use to do transposition
7
+ * @defaultValue Primary Key Column
8
+ */
2
9
  transposedColumnId?: string;
10
+ /**
11
+ * Hide the Transposed Column
12
+ * @defaultValue true
13
+ */
3
14
  hideTransposedColumn?: boolean;
15
+ /**
16
+ * Only show curerntly visible Columns
17
+ * @defaultValue false
18
+ */
4
19
  visibleColumns?: boolean;
20
+ /**
21
+ * Only show curerntly visible Rows
22
+ * @defaultValue false
23
+ */
5
24
  visibleRows?: boolean;
6
25
  }
@@ -84,7 +84,7 @@ export interface Layout extends AdaptableObject {
84
84
  */
85
85
  SuppressAggFuncInHeader?: boolean;
86
86
  /**
87
- * Row summaries
87
+ * Row Summaries - Pinned Rows that display Aggregation Info for a whole column
88
88
  */
89
89
  RowSummaries?: RowSummary[];
90
90
  }
@@ -95,7 +95,8 @@ class CellSummaryModule extends AdaptableModuleBase_1.AdaptableModuleBase {
95
95
  const handleExpression = (functionName) => {
96
96
  const columnId = selectedCellInfo.columns[0].columnId;
97
97
  const rowNodes = selectedCellInfo.gridCells.map((gc) => gc.rowNode);
98
- return this.api.internalApi.getAdaptableInstance().SummaryService.evaluateExpressionValue({
98
+ return this.api.internalApi
99
+ .getSummaryService().evaluateExpressionValue({
99
100
  expression: {
100
101
  function: functionName,
101
102
  },
@@ -331,7 +331,7 @@ exports.aggregatedScalarExpressionFunctions = {
331
331
  handler(args, context) {
332
332
  const modeColumnParameter = (0, expressionFunctionUtils_1.extractColumnParameter)('mode', args);
333
333
  const modeColumnName = modeColumnParameter.value;
334
- (0, expressionFunctionUtils_1.validateColumnType)(modeColumnName, ['Number'], 'mode', context.adaptableApi);
334
+ (0, expressionFunctionUtils_1.validateColumnType)(modeColumnName, ['Number', 'String'], 'mode', context.adaptableApi);
335
335
  const groupByParameter = (0, expressionFunctionUtils_1.extractParameter)('MODE', 'operand', ['GROUP_BY'], args, {
336
336
  isOptional: true,
337
337
  });
@@ -345,7 +345,10 @@ exports.aggregatedScalarExpressionFunctions = {
345
345
  reducer: (aggregatedValue, rowValue, rowNode) => {
346
346
  var _a;
347
347
  if (typeof rowValue !== 'number' && typeof rowValue !== 'string') {
348
- return;
348
+ return aggregatedValue;
349
+ }
350
+ if (!aggregatedValue) {
351
+ return new Map();
349
352
  }
350
353
  aggregatedValue.set(rowValue, ((_a = aggregatedValue.get(rowValue)) !== null && _a !== void 0 ? _a : 0) + 1);
351
354
  return aggregatedValue;
@@ -0,0 +1,17 @@
1
+ import { IAdaptableService } from './IAdaptableService';
2
+ import { AdaptableModule } from '../../../PredefinedConfig/Common/Types';
3
+ import { IRowNode } from '@ag-grid-community/core/dist/esm/es6/interfaces/iRowNode';
4
+ import { AggregatedScalarLiveValue } from '../AggregatedScalarLiveValue';
5
+ export declare const summarySupportedExpressions: readonly ["SUM", "AVG", "MIN", "MAX", "COUNT", "MEDIAN", "MODE", "DISTINCT", "ONLY", "STD_DEVIATION"];
6
+ export type SummaryConfig = {
7
+ expression: {
8
+ function: SummarySupportedExpression;
9
+ };
10
+ columnId: string;
11
+ getRowNodes?: () => IRowNode[];
12
+ };
13
+ export type SummarySupportedExpression = (typeof summarySupportedExpressions)[number];
14
+ export interface ISummaryService extends IAdaptableService {
15
+ evaluateExpressionValue(config: SummaryConfig, moduleId: AdaptableModule): any;
16
+ evaluateScalarLiveValue(config: SummaryConfig, moduleId: AdaptableModule): AggregatedScalarLiveValue;
17
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.summarySupportedExpressions = void 0;
4
+ exports.summarySupportedExpressions = [
5
+ 'SUM',
6
+ 'AVG',
7
+ 'MIN',
8
+ 'MAX',
9
+ 'COUNT',
10
+ 'MEDIAN',
11
+ 'MODE',
12
+ 'DISTINCT',
13
+ 'ONLY',
14
+ 'STD_DEVIATION',
15
+ ];
@@ -1,19 +1,10 @@
1
- import { IRowNode } from '@ag-grid-community/core';
2
1
  import { AdaptableApi, AdaptableModule } from '../../types';
3
2
  import { AggregatedScalarLiveValue } from './AggregatedScalarLiveValue';
4
- export declare const summarySupportedExpressions: readonly ["SUM", "AVG", "MIN", "MAX", "COUNT", "MEDIAN", "MODE", "DISTINCT", "ONLY", "STD_DEVIATION"];
5
- export type SummarySupportedExpression = (typeof summarySupportedExpressions)[number];
6
- export type SumaryConfig = {
7
- expression: {
8
- function: SummarySupportedExpression;
9
- };
10
- columnId: string;
11
- getRowNodes?: () => IRowNode[];
12
- };
13
- export declare class SummaryService {
3
+ import { ISummaryService, SummaryConfig } from './Interface/ISummaryService';
4
+ export declare class SummaryService implements ISummaryService {
14
5
  private adaptableApi;
15
6
  constructor(adaptableApi: AdaptableApi);
16
- evaluateExpressionValue(config: SumaryConfig, moduleId: AdaptableModule): any;
17
- evaluateScalarLiveValue(config: SumaryConfig, moduleId: AdaptableModule): AggregatedScalarLiveValue;
7
+ evaluateExpressionValue(config: SummaryConfig, moduleId: AdaptableModule): any;
8
+ evaluateScalarLiveValue(config: SummaryConfig, moduleId: AdaptableModule): AggregatedScalarLiveValue;
18
9
  destroy(): void;
19
10
  }
@@ -1,19 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SummaryService = exports.summarySupportedExpressions = void 0;
3
+ exports.SummaryService = void 0;
4
4
  const AggregatedScalarLiveValue_1 = require("./AggregatedScalarLiveValue");
5
- exports.summarySupportedExpressions = [
6
- 'SUM',
7
- 'AVG',
8
- 'MIN',
9
- 'MAX',
10
- 'COUNT',
11
- 'MEDIAN',
12
- 'MODE',
13
- 'DISTINCT',
14
- 'ONLY',
15
- 'STD_DEVIATION',
16
- ];
17
5
  class SummaryService {
18
6
  constructor(adaptableApi) {
19
7
  this.adaptableApi = adaptableApi;
@@ -112,13 +112,6 @@ const LayoutWizard = (props) => {
112
112
  render: () => (React.createElement(rebass_1.Box, { p: 2, style: { height: '100%' } },
113
113
  React.createElement(RowGroupingSection_1.RowGroupingSection, { onChange: setLayout }))),
114
114
  },
115
- {
116
- title: 'Row Summaries',
117
- details: 'Configure Row Summaries',
118
- renderSummary: () => React.createElement(RowGroupingSection_1.RowGroupingSectionSummary, null),
119
- render: () => (React.createElement(rebass_1.Box, { p: 2, style: { height: '100%' } },
120
- React.createElement(RowSummarySection_1.RowSummarySection, { onChange: setLayout }))),
121
- },
122
115
  {
123
116
  title: 'Aggregations',
124
117
  isVisible: () => layoutSupportedFeatures.AggregationColumns,
@@ -128,6 +121,13 @@ const LayoutWizard = (props) => {
128
121
  render: () => (React.createElement(rebass_1.Box, { p: 2, style: { height: '100%' } },
129
122
  React.createElement(AggregationsSection_1.AggregationsSection, { onChange: setLayout }))),
130
123
  },
124
+ {
125
+ title: 'Row Summaries',
126
+ details: 'Configure Row Summaries',
127
+ renderSummary: () => React.createElement(RowGroupingSection_1.RowGroupingSectionSummary, null),
128
+ render: () => (React.createElement(rebass_1.Box, { p: 2, style: { height: '100%' } },
129
+ React.createElement(RowSummarySection_1.RowSummarySection, { onChange: setLayout }))),
130
+ },
131
131
  {
132
132
  title: 'Sort',
133
133
  isVisible: () => layoutSupportedFeatures.ColumnSorts,
@@ -12,7 +12,7 @@ const Tabs_1 = require("../../../../components/Tabs");
12
12
  const Tag_1 = require("../../../../components/Tag");
13
13
  const adaptableQlUtils_1 = require("../../../../Utilities/adaptableQlUtils");
14
14
  const ModuleConstants_1 = require("../../../../Utilities/Constants/ModuleConstants");
15
- const SummaryService_1 = require("../../../../Utilities/Services/SummaryService");
15
+ const ISummaryService_1 = require("../../../../Utilities/Services/Interface/ISummaryService");
16
16
  const sortWithOrder_1 = require("../../../../Utilities/sortWithOrder");
17
17
  const AdaptableContext_1 = require("../../../AdaptableContext");
18
18
  const ValueSelector_1 = require("../../../Components/ValueSelector");
@@ -24,7 +24,7 @@ const getAvailableExpressionsForColumnType = (columnType, availableScalarExpress
24
24
  .map(([expression, expressionDef]) => {
25
25
  var _a, _b;
26
26
  let firstArg = null;
27
- if (!SummaryService_1.summarySupportedExpressions.includes(expression)) {
27
+ if (!ISummaryService_1.summarySupportedExpressions.includes(expression)) {
28
28
  return null;
29
29
  }
30
30
  if (Array.isArray((_a = expressionDef === null || expressionDef === void 0 ? void 0 : expressionDef.inputs) === null || _a === void 0 ? void 0 : _a[0])) {
@@ -117,6 +117,7 @@ const RowSummaryEditor = ({ rowSummary, onChange, availableScalarExpressions, on
117
117
  } })))));
118
118
  };
119
119
  const RowSummarySection = (props) => {
120
+ var _a;
120
121
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
121
122
  const { data: layout } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
122
123
  const availableScalarExpressions = React.useMemo(() => {
@@ -130,8 +131,17 @@ const RowSummarySection = (props) => {
130
131
  React.createElement("div", null,
131
132
  React.createElement(rebass_1.Flex, { mb: 1 },
132
133
  React.createElement(rebass_1.Flex, { flex: 1 }),
133
- React.createElement(SimpleButton_1.default, { icon: "plus" }, "Add Row Summary")),
134
- layout.RowSummaries.map((rowSummary, index) => {
134
+ React.createElement(SimpleButton_1.default, { onClick: () => {
135
+ var _a;
136
+ props.onChange(Object.assign(Object.assign({}, layout), { RowSummaries: [
137
+ ...((_a = layout.RowSummaries) !== null && _a !== void 0 ? _a : []),
138
+ {
139
+ Position: 'Top',
140
+ ColumnsMap: {},
141
+ },
142
+ ] }));
143
+ }, icon: "plus" }, "Add Row Summary")),
144
+ ((_a = layout.RowSummaries) !== null && _a !== void 0 ? _a : []).map((rowSummary, index) => {
135
145
  return (React.createElement(RowSummaryEditor, { key: index, onDelete: () => {
136
146
  const newSummaries = [...layout.RowSummaries];
137
147
  newSummaries.splice(index, 1);
@@ -26,7 +26,7 @@ import { RenderReactRootFn } from '../renderReactRoot';
26
26
  import { AgGridOptionsService } from './AgGridOptionsService';
27
27
  import { AgGridColumnAdapter } from './AgGridColumnAdapter';
28
28
  import { RowEditService } from '../Utilities/Services/RowEditService';
29
- import { SummaryService } from '../Utilities/Services/SummaryService';
29
+ import { ISummaryService } from '../Utilities/Services/Interface/ISummaryService';
30
30
  export type AdaptableVariant = 'vanilla' | 'react' | 'angular';
31
31
  export type AdaptableLifecycleState = 'initial' | 'preprocessOptions' | 'initAdaptableState' | 'setupAgGrid' | 'initAgGrid' | 'available' | 'ready' | 'preDestroyed';
32
32
  type RenderAgGridFrameworkComponentResult = false | GridApi;
@@ -82,7 +82,7 @@ export declare class AdaptableAgGrid implements IAdaptable {
82
82
  RowEditService: RowEditService;
83
83
  Fdc3Service: Fdc3Service;
84
84
  CellPopupService: CellPopupService;
85
- SummaryService: SummaryService;
85
+ SummaryService: ISummaryService;
86
86
  private LicenseService;
87
87
  private ChartingService;
88
88
  private ThemeService;
@@ -1143,7 +1143,9 @@ class AdaptableAgGrid {
1143
1143
  const allAgGridColDefIds = allAgGridFlattenedColDefs.map((colDef) => colDef.colId);
1144
1144
  const getColDef = (colId) => allAgGridFlattenedColDefs.find((colDef) => colDef.colId === colId);
1145
1145
  agGridState.columnVisibility = {
1146
- hiddenColIds: allAgGridColDefIds.filter((colDefId) => { var _a; return !((_a = currentLayout.Columns) === null || _a === void 0 ? void 0 : _a.includes(colDefId)); }),
1146
+ hiddenColIds: allAgGridFlattenedColDefs
1147
+ .filter((colDef) => { var _a; return !((_a = currentLayout.Columns) === null || _a === void 0 ? void 0 : _a.includes(colDef.colId)) || colDef.hide || colDef.initialHide; })
1148
+ .map((colDef) => colDef.colId),
1147
1149
  };
1148
1150
  agGridState.columnOrder = {
1149
1151
  orderedColIds: (0, sortWithOrder_1.sortWithOrderArray)(allAgGridColDefIds, currentLayout.Columns || [], {
@@ -217,18 +217,22 @@ class AgGridMenuAdapter {
217
217
  };
218
218
  }
219
219
  else {
220
- return adaptableMenuItems.find((menuItem) => menuItem.module === moduleOrGroup);
220
+ return adaptableMenuItems.filter((menuItem) => menuItem.module === moduleOrGroup);
221
221
  }
222
222
  })
223
- .filter((menuItem) => {
224
- if (!menuItem) {
223
+ .filter((menuItems) => {
224
+ if (!menuItems.length) {
225
225
  return false;
226
226
  }
227
- if (menuItem.subItems && menuItem.subItems.length === 0) {
228
- return false;
227
+ if (menuItems.length === 1) {
228
+ const singleMenuItem = menuItems[0];
229
+ if (singleMenuItem.subItems && singleMenuItem.subItems.length === 0) {
230
+ return false;
231
+ }
229
232
  }
230
233
  return true;
231
- });
234
+ })
235
+ .flat();
232
236
  }
233
237
  mapAdaptableMenuItemToSystemMenuItems(adaptableMenuItems) {
234
238
  return (adaptableMenuItems !== null && adaptableMenuItems !== void 0 ? adaptableMenuItems : []).map((menuItem) => {
package/src/env.js CHANGED
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
4
  INFINITE_TABLE_LICENSE_KEY: "StartDate=2021-06-29|EndDate=2030-01-01|Owner=Adaptable|Type=distribution|TS=1624971462479|C=137829811,1004007071,2756196225,1839832928,3994409405,636616862" || '',
5
- PUBLISH_TIMESTAMP: 1711118652410 || Date.now(),
6
- VERSION: "18.0.0-canary.13" || '--current-version--',
5
+ PUBLISH_TIMESTAMP: 1711463167212 || Date.now(),
6
+ VERSION: "18.0.0-canary.15" || '--current-version--',
7
7
  };
@@ -4771,6 +4771,19 @@ export declare const ADAPTABLE_METAMODEL: {
4771
4771
  name: string;
4772
4772
  kind: string;
4773
4773
  desc: string;
4774
+ props: ({
4775
+ name: string;
4776
+ kind: string;
4777
+ desc: string;
4778
+ isOpt?: undefined;
4779
+ ref?: undefined;
4780
+ } | {
4781
+ name: string;
4782
+ kind: string;
4783
+ desc: string;
4784
+ isOpt: boolean;
4785
+ ref: string;
4786
+ })[];
4774
4787
  };
4775
4788
  RowSummaryPosition: {
4776
4789
  name: string;
@@ -5358,6 +5371,18 @@ export declare const ADAPTABLE_METAMODEL: {
5358
5371
  kind: string;
5359
5372
  desc: string;
5360
5373
  };
5374
+ TransposeConfig: {
5375
+ name: string;
5376
+ kind: string;
5377
+ desc: string;
5378
+ props: {
5379
+ name: string;
5380
+ kind: string;
5381
+ desc: string;
5382
+ isOpt: boolean;
5383
+ defVal: string;
5384
+ }[];
5385
+ };
5361
5386
  UIControlConfig: {
5362
5387
  name: string;
5363
5388
  kind: string;