@adaptabletools/adaptable 22.0.0-canary.0 → 22.0.0-canary.2
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/README.md +4 -6
- package/index.css +3 -14
- package/index.css.map +1 -1
- package/package.json +1 -1
- package/src/AdaptableInterfaces/IAdaptable.d.ts +9 -0
- package/src/AdaptableOptions/AdaptablePlugin.js +6 -1
- package/src/AdaptableOptions/ExportOptions.d.ts +1 -2
- package/src/AdaptableOptions/FilterOptions.d.ts +3 -0
- package/src/AdaptableState/Common/AdaptableColumn.d.ts +6 -0
- package/src/AdaptableState/Common/RowDataChangedInfo.d.ts +3 -0
- package/src/AdaptableState/InitialState.d.ts +1 -1
- package/src/AdaptableState/Selection/GridCell.d.ts +9 -0
- package/src/Api/GridApi.d.ts +14 -0
- package/src/Api/Implementation/ActionColumnApiImpl.js +1 -0
- package/src/Api/Implementation/AdaptableApiImpl.js +52 -0
- package/src/Api/Implementation/AlertApiImpl.js +1 -0
- package/src/Api/Implementation/ApiBase.js +1 -0
- package/src/Api/Implementation/CalculatedColumnApiImpl.js +1 -0
- package/src/Api/Implementation/ChartingApiImpl.js +4 -0
- package/src/Api/Implementation/ColumnApiImpl.js +1 -0
- package/src/Api/Implementation/ColumnFilterApiImpl.js +1 -0
- package/src/Api/Implementation/CommentsApiImpl.js +1 -0
- package/src/Api/Implementation/CustomSortApiImpl.js +1 -0
- package/src/Api/Implementation/DashboardApiImpl.js +1 -0
- package/src/Api/Implementation/DataChangeHistoryApiImpl.js +12 -15
- package/src/Api/Implementation/DataImportApiImpl.js +1 -0
- package/src/Api/Implementation/DataSetApiImpl.js +1 -0
- package/src/Api/Implementation/EntitlementApiImpl.js +1 -0
- package/src/Api/Implementation/EventApiImpl.js +16 -14
- package/src/Api/Implementation/ExportApiImpl.js +1 -0
- package/src/Api/Implementation/ExpressionApiImpl.js +1 -0
- package/src/Api/Implementation/Fdc3ApiImpl.js +1 -0
- package/src/Api/Implementation/FilterApiImpl.js +3 -0
- package/src/Api/Implementation/FlashingCellApiImpl.js +1 -0
- package/src/Api/Implementation/FormatColumnApiImpl.js +1 -0
- package/src/Api/Implementation/FreeTextColumnApiImpl.js +1 -0
- package/src/Api/Implementation/GridApiImpl.d.ts +9 -0
- package/src/Api/Implementation/GridApiImpl.js +17 -0
- package/src/Api/Implementation/GridFilterApiImpl.js +1 -0
- package/src/Api/Implementation/LayoutApiImpl.js +1 -0
- package/src/Api/Implementation/NamedQueryApiImpl.js +1 -0
- package/src/Api/Implementation/NoteApiImpl.js +1 -0
- package/src/Api/Implementation/PredicateApiImpl.js +1 -0
- package/src/Api/Implementation/RowFormApiImpl.js +1 -0
- package/src/Api/Implementation/StyledColumnApiImpl.js +1 -0
- package/src/Api/Implementation/SystemStatusApiImpl.js +2 -0
- package/src/Api/Implementation/TeamSharingApiImpl.js +1 -0
- package/src/Api/Implementation/ThemeApiImpl.js +1 -0
- package/src/Api/Implementation/UserInterfaceApiImpl.js +2 -1
- package/src/Redux/Store/AdaptableReduxLocalStorageEngine.js +6 -0
- package/src/Redux/Store/AdaptableStore.js +57 -50
- package/src/Strategy/AdaptableModuleBase.js +4 -0
- package/src/Strategy/AlertModule.js +1 -0
- package/src/Strategy/CalculatedColumnModule.js +1 -0
- package/src/Strategy/CellSummaryModule.js +1 -1
- package/src/Strategy/DataChangeHistoryModule.js +1 -0
- package/src/Strategy/FlashingCellModule.js +1 -0
- package/src/Strategy/FreeTextColumnModule.js +1 -0
- package/src/Strategy/LayoutModule.js +2 -1
- package/src/Strategy/PlusMinusModule.js +2 -0
- package/src/Strategy/ScheduleModule.js +1 -0
- package/src/Strategy/ShortcutModule.js +2 -0
- package/src/Strategy/TeamSharingModule.js +10 -10
- package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +18 -17
- package/src/Utilities/Constants/DocumentationLinkConstants.js +18 -17
- package/src/Utilities/ExpressionFunctions/deepMap.js +31 -31
- package/src/Utilities/MenuItem.js +18 -0
- package/src/Utilities/Services/AggregatedScalarLiveValue.js +8 -0
- package/src/Utilities/Services/AlertService.js +6 -4
- package/src/Utilities/Services/AnnotationsService.js +3 -0
- package/src/Utilities/Services/CalculatedColumnExpressionService.js +2 -1
- package/src/Utilities/Services/ChartingService.js +1 -0
- package/src/Utilities/Services/DataService.js +10 -2
- package/src/Utilities/Services/Fdc3Service.js +5 -3
- package/src/Utilities/Services/FlashingCellService.js +5 -0
- package/src/Utilities/Services/LicenseService/index.js +1 -1
- package/src/Utilities/Services/MetamodelService.js +2 -2
- package/src/Utilities/Services/ModuleService.js +38 -38
- package/src/Utilities/Services/QueryLanguageService.js +6 -5
- package/src/Utilities/Services/RowFormService.js +1 -0
- package/src/Utilities/Services/RowSummaryService.js +10 -7
- package/src/Utilities/Services/TeamSharingService.js +3 -1
- package/src/Utilities/Services/ThemeService.js +11 -9
- package/src/Utilities/Services/ValidationService.js +1 -0
- package/src/Utilities/createAgStatusPanelComponent.js +3 -0
- package/src/View/BulkUpdate/BulkUpdateViewPanel.js +1 -0
- package/src/View/CalculatedColumn/CalculatedColumnSummary.js +8 -8
- package/src/View/CellSummary/CellSummaryViewPanel.js +1 -0
- package/src/View/Components/Buttons/ButtonBase/index.js +9 -9
- package/src/View/Components/Buttons/EntityListActionButtons.js +18 -18
- package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +1 -1
- package/src/View/Components/ExpressionWizard.js +5 -5
- package/src/View/Components/Panels/PanelDashboard/index.js +8 -8
- package/src/View/Components/Panels/PanelToolPanel/index.js +7 -7
- package/src/View/Components/ToolPanel/AdaptableToolPanel.js +2 -0
- package/src/View/CustomSort/CustomSortSummary.js +13 -13
- package/src/View/FormatColumn/FormatColumnSummary.js +13 -13
- package/src/View/FreeTextColumn/FreeTextColumnSummary.js +13 -13
- package/src/View/SmartEdit/SmartEditViewPanel.js +1 -0
- package/src/View/Theme/ThemePopup.js +13 -16
- package/src/agGrid/Adaptable.js +4 -0
- package/src/agGrid/AdaptableAgGrid.d.ts +9 -0
- package/src/agGrid/AdaptableAgGrid.js +160 -37
- package/src/agGrid/AdaptableFilterHandler.js +4 -0
- package/src/agGrid/AdaptableLogger.d.ts +3 -0
- package/src/agGrid/AdaptableLogger.js +10 -0
- package/src/agGrid/AgGridAdapter.js +11 -1
- package/src/agGrid/AgGridColumnAdapter.js +2 -0
- package/src/agGrid/AgGridExportAdapter.js +10 -9
- package/src/agGrid/AgGridFilterAdapter.js +4 -0
- package/src/agGrid/AgGridFloatingFilterAdapter.js +3 -0
- package/src/agGrid/AgGridMenuAdapter.js +1 -0
- package/src/agGrid/AgGridModulesAdapter.js +2 -1
- package/src/agGrid/AgGridOptionsService.js +3 -0
- package/src/agGrid/AgGridThemeAdapter.js +2 -0
- package/src/agGrid/cellRenderers/ActionColumnRenderer.js +5 -0
- package/src/agGrid/cellRenderers/BadgeRenderer.js +2 -0
- package/src/agGrid/cellRenderers/PercentBarRenderer.js +1 -0
- package/src/agGrid/editors/AdaptableDateEditor/index.js +6 -3
- package/src/agGrid/editors/AdaptableNumberEditor/index.js +16 -12
- package/src/agGrid/editors/AdaptablePercentageEditor/index.js +17 -13
- package/src/agGrid/index.d.ts +6 -0
- package/src/agGrid/index.js +6 -0
- package/src/components/Datepicker/index.js +1 -1
- package/src/components/overlayBaseZIndex.js +1 -1
- package/src/components/utils/useContainerScrollObserver/index.js +17 -14
- package/src/devTools/index.js +54 -53
- package/src/env.js +2 -2
- package/src/layout-manager/src/LMEmitter.js +11 -11
- package/src/layout-manager/src/LMLogger.js +7 -0
- package/src/layout-manager/src/index.js +56 -51
- package/src/metamodel/adaptable.metamodel.d.ts +57 -0
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/migration/AdaptableUpgradeHelper.js +3 -0
- package/src/migration/VersionUpgrade.js +1 -0
- package/src/migration/VersionUpgrade17.js +1 -2
- package/src/parser/src/ExpressionEvaluationError.js +1 -0
- package/tsconfig.esm.tsbuildinfo +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Helper from '../Helpers/Helper';
|
|
2
2
|
import { AgGridRequiredModulesDocsLink, HOST_URL_DOCS, } from '../Constants/DocumentationLinkConstants';
|
|
3
3
|
export class ModuleService {
|
|
4
|
+
adaptableApi;
|
|
4
5
|
constructor(adaptableApi) {
|
|
5
6
|
this.adaptableApi = adaptableApi;
|
|
6
7
|
this.adaptableApi = adaptableApi;
|
|
@@ -105,84 +106,83 @@ export class ModuleService {
|
|
|
105
106
|
}
|
|
106
107
|
getModuleDocumentationPageByModule(adaptableModule) {
|
|
107
108
|
let url = `${HOST_URL_DOCS}/`;
|
|
108
|
-
let learnUrl = url + 'guide/';
|
|
109
109
|
switch (adaptableModule) {
|
|
110
110
|
case 'Alert':
|
|
111
|
-
return
|
|
111
|
+
return url + 'handbook-alerting';
|
|
112
112
|
case 'BulkUpdate':
|
|
113
113
|
return url + 'handbook-editing-bulk-update';
|
|
114
114
|
case 'CalculatedColumn':
|
|
115
|
-
return
|
|
115
|
+
return url + 'handbook-calculated-column';
|
|
116
116
|
case 'CellSummary':
|
|
117
|
-
return
|
|
117
|
+
return url + 'handbook-summarising';
|
|
118
118
|
case 'Charting':
|
|
119
|
-
return
|
|
119
|
+
return url + 'handbook-charts';
|
|
120
120
|
case 'ColumnFilter':
|
|
121
|
-
return
|
|
121
|
+
return url + 'handbook-column-filter';
|
|
122
122
|
case 'ColumnInfo':
|
|
123
|
-
return
|
|
123
|
+
return url + 'dev-guide-column-grid-column-info';
|
|
124
124
|
case 'Comment':
|
|
125
|
-
return
|
|
125
|
+
return url + 'handbook-comments';
|
|
126
126
|
case 'CustomSort':
|
|
127
|
-
return
|
|
127
|
+
return url + 'handbook-custom-sorting';
|
|
128
128
|
case 'Dashboard':
|
|
129
|
-
return
|
|
129
|
+
return url + 'ui-dashboard';
|
|
130
130
|
case 'DataChangeHistory':
|
|
131
|
-
return
|
|
131
|
+
return url + 'handbook-monitoring-data-change-history';
|
|
132
132
|
case 'DataImport':
|
|
133
|
-
return
|
|
133
|
+
return url + 'handbook-importing';
|
|
134
134
|
case 'DataSet':
|
|
135
|
-
return
|
|
135
|
+
return url + 'handbook-data-sets';
|
|
136
136
|
case 'Export':
|
|
137
|
-
return
|
|
137
|
+
return url + 'handbook-exporting';
|
|
138
138
|
case 'Fdc3':
|
|
139
|
-
return
|
|
139
|
+
return url + 'handbook-fdc3';
|
|
140
140
|
case 'FlashingCell':
|
|
141
|
-
return
|
|
141
|
+
return url + 'handbook-flashing-cell';
|
|
142
142
|
case 'FormatColumn':
|
|
143
|
-
return
|
|
143
|
+
return url + 'handbook-column-formatting';
|
|
144
144
|
case 'FreeTextColumn':
|
|
145
|
-
return
|
|
145
|
+
return url + 'handbook-freetext-column';
|
|
146
146
|
case 'GridFilter':
|
|
147
|
-
return
|
|
147
|
+
return url + 'handbook-grid-filter';
|
|
148
148
|
case 'GridInfo':
|
|
149
|
-
return
|
|
149
|
+
return url + 'dev-guide-column-grid-column-info';
|
|
150
150
|
case 'Layout':
|
|
151
|
-
return
|
|
151
|
+
return url + 'handbook-layouts';
|
|
152
152
|
case 'NamedQuery':
|
|
153
|
-
return
|
|
153
|
+
return url + 'handbook-named-queries';
|
|
154
154
|
case 'Note':
|
|
155
|
-
return
|
|
155
|
+
return url + 'handbook-notes';
|
|
156
156
|
case 'PlusMinus':
|
|
157
|
-
return
|
|
157
|
+
return url + 'handbook-editing-plus-minus';
|
|
158
158
|
case 'QuickSearch':
|
|
159
|
-
return
|
|
159
|
+
return url + 'handbook-quick-search';
|
|
160
160
|
case 'Schedule':
|
|
161
|
-
return
|
|
161
|
+
return url + 'handbook-scheduling';
|
|
162
162
|
case 'SettingsPanel':
|
|
163
|
-
return
|
|
163
|
+
return url + 'ui-settings-panel';
|
|
164
164
|
case 'Shortcut':
|
|
165
|
-
return
|
|
165
|
+
return url + 'handbook-editing-shortcut';
|
|
166
166
|
case 'SmartEdit':
|
|
167
|
-
return
|
|
167
|
+
return url + 'handbook-editing-smart-edit';
|
|
168
168
|
case 'StateManagement':
|
|
169
|
-
return
|
|
169
|
+
return url + 'dev-guide-adaptable-state-management';
|
|
170
170
|
case 'StatusBar':
|
|
171
|
-
return
|
|
171
|
+
return url + 'ui-status-bar';
|
|
172
172
|
case 'StyledColumn':
|
|
173
|
-
return
|
|
173
|
+
return url + 'handbook-styled-column-overview';
|
|
174
174
|
case 'SystemStatus':
|
|
175
|
-
return
|
|
175
|
+
return url + 'handbook-system-status-message';
|
|
176
176
|
case 'TeamSharing':
|
|
177
|
-
return
|
|
177
|
+
return url + 'handbook-team-sharing';
|
|
178
178
|
case 'Theme':
|
|
179
|
-
return
|
|
179
|
+
return url + 'handbook-theming';
|
|
180
180
|
case 'ToolPanel':
|
|
181
|
-
return
|
|
181
|
+
return url + 'ui-tool-panel';
|
|
182
182
|
case 'IPushPull':
|
|
183
|
-
return
|
|
183
|
+
return url + 'integrations-ipushpull';
|
|
184
184
|
case 'OpenFin':
|
|
185
|
-
return
|
|
185
|
+
return url + 'integrations-openfin';
|
|
186
186
|
default:
|
|
187
187
|
return 'good';
|
|
188
188
|
}
|
|
@@ -9,13 +9,14 @@ import { scalarExpressionFunctions } from '../ExpressionFunctions/scalarExpressi
|
|
|
9
9
|
import { getTypedKeys } from '../Extensions/TypeExtensions';
|
|
10
10
|
import { AggregatedScalarLiveValue } from './AggregatedScalarLiveValue';
|
|
11
11
|
export class QueryLanguageService {
|
|
12
|
+
adaptableApi;
|
|
13
|
+
cacheBooleanValidation = new Map();
|
|
14
|
+
cacheObservableValidation = new Map();
|
|
15
|
+
cacheAggregatedBooleanValidation = new Map();
|
|
16
|
+
cacheAggregatedScalarValidation = new Map();
|
|
17
|
+
cacheModuleSpecificExpressionFunctions = new Map();
|
|
12
18
|
constructor(adaptableApi) {
|
|
13
19
|
this.adaptableApi = adaptableApi;
|
|
14
|
-
this.cacheBooleanValidation = new Map();
|
|
15
|
-
this.cacheObservableValidation = new Map();
|
|
16
|
-
this.cacheAggregatedBooleanValidation = new Map();
|
|
17
|
-
this.cacheAggregatedScalarValidation = new Map();
|
|
18
|
-
this.cacheModuleSpecificExpressionFunctions = new Map();
|
|
19
20
|
}
|
|
20
21
|
evaluateBooleanExpression(expression, module, rowNode, evalContext) {
|
|
21
22
|
if (expression == undefined) {
|
|
@@ -10,15 +10,12 @@ import isEqual from 'lodash/isEqual';
|
|
|
10
10
|
* The logic is extracted here to make it easier to follow
|
|
11
11
|
*/
|
|
12
12
|
export class RowSummaryService {
|
|
13
|
+
api;
|
|
14
|
+
cachedCellSummary = new Map();
|
|
15
|
+
previousRowSummaries;
|
|
16
|
+
previousLayout;
|
|
13
17
|
constructor(api) {
|
|
14
18
|
this.api = api;
|
|
15
|
-
this.cachedCellSummary = new Map();
|
|
16
|
-
this._throttleAcumulatedColumnsThatChanged = new Set();
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* @param colId optional to evaluate only one column
|
|
20
|
-
*/
|
|
21
|
-
this._throttledEvaluateRowSummary = throttle(this.evaluateRowSummary, 300);
|
|
22
19
|
}
|
|
23
20
|
onAdaptableReady() {
|
|
24
21
|
this.rowSummariesSubscriptions();
|
|
@@ -66,12 +63,18 @@ export class RowSummaryService {
|
|
|
66
63
|
this.throttledEvaluateRowSummary();
|
|
67
64
|
});
|
|
68
65
|
}
|
|
66
|
+
_throttleAcumulatedColumnsThatChanged = new Set();
|
|
69
67
|
throttledEvaluateRowSummary(reason) {
|
|
70
68
|
if (reason) {
|
|
71
69
|
reason.columnIds.forEach((col) => this._throttleAcumulatedColumnsThatChanged.add(col));
|
|
72
70
|
}
|
|
73
71
|
this._throttledEvaluateRowSummary(reason);
|
|
74
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
*
|
|
75
|
+
* @param colId optional to evaluate only one column
|
|
76
|
+
*/
|
|
77
|
+
_throttledEvaluateRowSummary = throttle(this.evaluateRowSummary, 300);
|
|
75
78
|
evaluateRowSummary(reason) {
|
|
76
79
|
if (this._throttleAcumulatedColumnsThatChanged.size > 0) {
|
|
77
80
|
const columnIds = Array.from(this._throttleAcumulatedColumnsThatChanged.values());
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { createUuid } from '../../AdaptableState/Uuid';
|
|
2
2
|
import ObjectFactory from '../ObjectFactory';
|
|
3
3
|
export class TeamSharingService {
|
|
4
|
+
adaptableApi;
|
|
5
|
+
dismissedNotifications = [];
|
|
6
|
+
updateCheckTimerId;
|
|
4
7
|
constructor(adaptableApi) {
|
|
5
8
|
this.adaptableApi = adaptableApi;
|
|
6
|
-
this.dismissedNotifications = [];
|
|
7
9
|
const teamSharingOptions = adaptableApi.optionsApi.getTeamSharingOptions();
|
|
8
10
|
if (teamSharingOptions.updateInterval > 0) {
|
|
9
11
|
// convert minutes to millis
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
export class ThemeService {
|
|
2
|
+
api;
|
|
3
|
+
unsubscribe = () => { };
|
|
4
|
+
styleSheetObject;
|
|
2
5
|
constructor(api) {
|
|
3
|
-
this.unsubscribe = () => { };
|
|
4
|
-
this.onThemeChanged = () => {
|
|
5
|
-
let currentTheme = this.api.themeApi.getCurrentThemeObject();
|
|
6
|
-
currentTheme = this.mapOsTheme(currentTheme);
|
|
7
|
-
this.applyNewThemeVariables(currentTheme);
|
|
8
|
-
// this needs to be called after variables are set
|
|
9
|
-
// as it may show the warning for a custom/runtime theme
|
|
10
|
-
this.showMissingThemeFiles(currentTheme);
|
|
11
|
-
};
|
|
12
6
|
this.api = api;
|
|
13
7
|
this.subscribe();
|
|
14
8
|
if (!this.styleSheetObject) {
|
|
@@ -33,6 +27,14 @@ export class ThemeService {
|
|
|
33
27
|
prefferedColorSchemeUnsubscribe();
|
|
34
28
|
};
|
|
35
29
|
}
|
|
30
|
+
onThemeChanged = () => {
|
|
31
|
+
let currentTheme = this.api.themeApi.getCurrentThemeObject();
|
|
32
|
+
currentTheme = this.mapOsTheme(currentTheme);
|
|
33
|
+
this.applyNewThemeVariables(currentTheme);
|
|
34
|
+
// this needs to be called after variables are set
|
|
35
|
+
// as it may show the warning for a custom/runtime theme
|
|
36
|
+
this.showMissingThemeFiles(currentTheme);
|
|
37
|
+
};
|
|
36
38
|
applyNewThemeVariables(theme) {
|
|
37
39
|
const variables = theme.CSSVariables;
|
|
38
40
|
if (!variables || Object.keys(variables).length === 0) {
|
|
@@ -4,6 +4,7 @@ import { AlertModuleId } from '../Constants/ModuleConstants';
|
|
|
4
4
|
import { SERVER_VALIDATION_HEADER, SERVER_VALIDATION_MESSAGE_TYPE, } from '../Constants/GeneralConstants';
|
|
5
5
|
import { errorOnce } from '../../agGrid/AdaptableLogger';
|
|
6
6
|
export class ValidationService {
|
|
7
|
+
adaptableApi;
|
|
7
8
|
constructor(adaptableApi) {
|
|
8
9
|
this.adaptableApi = adaptableApi;
|
|
9
10
|
this.adaptableApi = adaptableApi;
|
|
@@ -9,14 +9,6 @@ import { CalculatedColumnWizard } from './Wizard/CalculatedColumnWizard';
|
|
|
9
9
|
export class CalculatedColumnSummaryComponent extends React.Component {
|
|
10
10
|
constructor(props) {
|
|
11
11
|
super(props);
|
|
12
|
-
this.onFinishWizard = (calculatedColumn) => {
|
|
13
|
-
this.props.onEdit(calculatedColumn);
|
|
14
|
-
this.setState({
|
|
15
|
-
editedAdaptableObject: null,
|
|
16
|
-
wizardStartIndex: 0,
|
|
17
|
-
wizardStatus: WizardStatus.None,
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
12
|
this.state = UIHelper.getEmptyConfigState();
|
|
21
13
|
}
|
|
22
14
|
render() {
|
|
@@ -44,6 +36,14 @@ export class CalculatedColumnSummaryComponent extends React.Component {
|
|
|
44
36
|
wizardStatus: WizardStatus.None,
|
|
45
37
|
});
|
|
46
38
|
}
|
|
39
|
+
onFinishWizard = (calculatedColumn) => {
|
|
40
|
+
this.props.onEdit(calculatedColumn);
|
|
41
|
+
this.setState({
|
|
42
|
+
editedAdaptableObject: null,
|
|
43
|
+
wizardStartIndex: 0,
|
|
44
|
+
wizardStatus: WizardStatus.None,
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
47
|
}
|
|
48
48
|
function mapStateToProps(state) {
|
|
49
49
|
return {
|
|
@@ -10,6 +10,7 @@ import { connect } from 'react-redux';
|
|
|
10
10
|
import { Select } from '../../components/Select';
|
|
11
11
|
import { Flex } from '../../components/Flex';
|
|
12
12
|
class CellSummaryViewPanelComponent extends React.Component {
|
|
13
|
+
cleanupEvent;
|
|
13
14
|
constructor(props) {
|
|
14
15
|
super(props);
|
|
15
16
|
}
|
|
@@ -7,6 +7,15 @@ const Glyphicon = ({ glyph, style }) => {
|
|
|
7
7
|
};
|
|
8
8
|
const baseClassName = 'ab-Button twa:text-current';
|
|
9
9
|
export class ButtonBase extends React.Component {
|
|
10
|
+
static defaultProps = {
|
|
11
|
+
overrideDisableButton: false,
|
|
12
|
+
toolTipAndText: '',
|
|
13
|
+
glyph: '',
|
|
14
|
+
displayMode: 'Glyph+Text',
|
|
15
|
+
transformGlyph: false,
|
|
16
|
+
accessLevel: 'Full',
|
|
17
|
+
showDefaultStyle: false,
|
|
18
|
+
};
|
|
10
19
|
render() {
|
|
11
20
|
let isDisabled;
|
|
12
21
|
isDisabled = this.props.accessLevel == 'Hidden';
|
|
@@ -59,12 +68,3 @@ export class ButtonBase extends React.Component {
|
|
|
59
68
|
return hideToolTip ? button : buttonwithtooltip;
|
|
60
69
|
}
|
|
61
70
|
}
|
|
62
|
-
ButtonBase.defaultProps = {
|
|
63
|
-
overrideDisableButton: false,
|
|
64
|
-
toolTipAndText: '',
|
|
65
|
-
glyph: '',
|
|
66
|
-
displayMode: 'Glyph+Text',
|
|
67
|
-
transformGlyph: false,
|
|
68
|
-
accessLevel: 'Full',
|
|
69
|
-
showDefaultStyle: false,
|
|
70
|
-
};
|
|
@@ -10,6 +10,24 @@ const stopPropagation = (e) => {
|
|
|
10
10
|
e.stopPropagation();
|
|
11
11
|
};
|
|
12
12
|
export class EntityListActionButtons extends React.Component {
|
|
13
|
+
static defaultProps = {
|
|
14
|
+
// Adaptable: null,
|
|
15
|
+
suspendableObject: null,
|
|
16
|
+
showEdit: true,
|
|
17
|
+
showDelete: true,
|
|
18
|
+
showShare: false,
|
|
19
|
+
showSuspend: false,
|
|
20
|
+
overrideDisableEdit: false,
|
|
21
|
+
overrideDisableDelete: false,
|
|
22
|
+
overrideDisableClone: false,
|
|
23
|
+
overrideDisableShare: false,
|
|
24
|
+
confirmDeleteAction: null,
|
|
25
|
+
entityType: '',
|
|
26
|
+
accessLevel: 'Full',
|
|
27
|
+
editSize: 'xsmall',
|
|
28
|
+
deleteSize: 'xsmall',
|
|
29
|
+
shareSize: 'xsmall',
|
|
30
|
+
};
|
|
13
31
|
render() {
|
|
14
32
|
const { justifyContent } = this.props;
|
|
15
33
|
const justifyContentClassName = clsx({
|
|
@@ -25,21 +43,3 @@ export class EntityListActionButtons extends React.Component {
|
|
|
25
43
|
this.props.showSuspend && this.props.suspendableObject && (React.createElement(SuspendToggleButton, { className: `twa:ml-[2px] twa:align-self-center`, onSuspend: this.props.onSuspend, onUnSuspend: this.props.onUnSuspend, suspendableObject: this.props.suspendableObject, disabled: this.props.accessLevel == 'ReadOnly' }))));
|
|
26
44
|
}
|
|
27
45
|
}
|
|
28
|
-
EntityListActionButtons.defaultProps = {
|
|
29
|
-
// Adaptable: null,
|
|
30
|
-
suspendableObject: null,
|
|
31
|
-
showEdit: true,
|
|
32
|
-
showDelete: true,
|
|
33
|
-
showShare: false,
|
|
34
|
-
showSuspend: false,
|
|
35
|
-
overrideDisableEdit: false,
|
|
36
|
-
overrideDisableDelete: false,
|
|
37
|
-
overrideDisableClone: false,
|
|
38
|
-
overrideDisableShare: false,
|
|
39
|
-
confirmDeleteAction: null,
|
|
40
|
-
entityType: '',
|
|
41
|
-
accessLevel: 'Full',
|
|
42
|
-
editSize: 'xsmall',
|
|
43
|
-
deleteSize: 'xsmall',
|
|
44
|
-
shareSize: 'xsmall',
|
|
45
|
-
};
|
|
@@ -204,7 +204,7 @@ export const FloatingFilterValues = (props) => {
|
|
|
204
204
|
...(props.value?.length
|
|
205
205
|
? {
|
|
206
206
|
valueContainer: {
|
|
207
|
-
fontWeight: 'var(--ab-cmp-
|
|
207
|
+
fontWeight: 'var(--ab-cmp-floatingfilter-selected-options-text__font-weight)',
|
|
208
208
|
},
|
|
209
209
|
}
|
|
210
210
|
: {}),
|
|
@@ -9,11 +9,6 @@ import { Flex } from '../../components/Flex';
|
|
|
9
9
|
export class ExpressionWizard extends React.Component {
|
|
10
10
|
constructor(props) {
|
|
11
11
|
super(props);
|
|
12
|
-
this.handleCustomExpressionChange = (expression) => {
|
|
13
|
-
this.setState({
|
|
14
|
-
expression,
|
|
15
|
-
}, () => this.props.updateGoBackState());
|
|
16
|
-
};
|
|
17
12
|
this.state = {
|
|
18
13
|
// this is realy horrible but its only way to use the Expression Wizard for both Report (that has Query) and Format Column (that has Rule)
|
|
19
14
|
// once we move to the new Wizard we can remove this monstrosity
|
|
@@ -43,6 +38,11 @@ export class ExpressionWizard extends React.Component {
|
|
|
43
38
|
.getQueryLanguageService()
|
|
44
39
|
.validateBoolean(this.state.expression, NamedQueryModuleId).isValid);
|
|
45
40
|
}
|
|
41
|
+
handleCustomExpressionChange = (expression) => {
|
|
42
|
+
this.setState({
|
|
43
|
+
expression,
|
|
44
|
+
}, () => this.props.updateGoBackState());
|
|
45
|
+
};
|
|
46
46
|
canNext() {
|
|
47
47
|
if (this.isValidExpression() == false) {
|
|
48
48
|
return false;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { DashboardToolbar as DashboardToolbarUI } from '../../../../components/Dashboard';
|
|
3
3
|
export class PanelDashboard extends React.Component {
|
|
4
|
+
static defaultProps = {
|
|
5
|
+
showConfigureActionButton: true,
|
|
6
|
+
showCloseActionButton: true,
|
|
7
|
+
headerText: 'Module',
|
|
8
|
+
onClose: null,
|
|
9
|
+
onConfigure: null,
|
|
10
|
+
accessLevel: 'Full',
|
|
11
|
+
};
|
|
4
12
|
render() {
|
|
5
13
|
const { headerText, showConfigureActionButton, showCloseActionButton, onConfigure, onClose, accessLevel, children, } = this.props;
|
|
6
14
|
return (React.createElement(DashboardToolbarUI, { title: headerText, onConfigure: onConfigure, showConfigure: showConfigureActionButton, showClose: showCloseActionButton, onClose: onClose, accessLevel: accessLevel }, children));
|
|
7
15
|
}
|
|
8
16
|
}
|
|
9
|
-
PanelDashboard.defaultProps = {
|
|
10
|
-
showConfigureActionButton: true,
|
|
11
|
-
showCloseActionButton: true,
|
|
12
|
-
headerText: 'Module',
|
|
13
|
-
onClose: null,
|
|
14
|
-
onConfigure: null,
|
|
15
|
-
accessLevel: 'Full',
|
|
16
|
-
};
|
|
@@ -7,6 +7,13 @@ import { ButtonMaximise } from '../../Buttons/ButtonMaximise';
|
|
|
7
7
|
import { twMerge } from '../../../../twMerge';
|
|
8
8
|
import { Flex } from '../../../../components/Flex';
|
|
9
9
|
export class PanelToolPanel extends React.Component {
|
|
10
|
+
static defaultProps = {
|
|
11
|
+
headerText: '',
|
|
12
|
+
onClose: null,
|
|
13
|
+
onConfigure: null,
|
|
14
|
+
onMinimiseChanged: null,
|
|
15
|
+
isMinimised: true,
|
|
16
|
+
};
|
|
10
17
|
render() {
|
|
11
18
|
const { useDefaultPanelStyle, isMinimised, onMinimiseChanged, headerText, onClose, onConfigure, ...props } = this.props;
|
|
12
19
|
let header = (React.createElement(React.Fragment, null,
|
|
@@ -38,10 +45,3 @@ export class PanelToolPanel extends React.Component {
|
|
|
38
45
|
} }));
|
|
39
46
|
}
|
|
40
47
|
}
|
|
41
|
-
PanelToolPanel.defaultProps = {
|
|
42
|
-
headerText: '',
|
|
43
|
-
onClose: null,
|
|
44
|
-
onConfigure: null,
|
|
45
|
-
onMinimiseChanged: null,
|
|
46
|
-
isMinimised: true,
|
|
47
|
-
};
|
|
@@ -222,6 +222,8 @@ export const getAdaptableToolPanelAgGridComponent = (adaptable) => {
|
|
|
222
222
|
};
|
|
223
223
|
}
|
|
224
224
|
return class AdaptableToolPanelAgGridComponent {
|
|
225
|
+
gui;
|
|
226
|
+
unmountReactRoot;
|
|
225
227
|
init(params) {
|
|
226
228
|
const api = adaptable.api;
|
|
227
229
|
this.gui = document.createElement('div');
|
|
@@ -16,19 +16,6 @@ import { CustomSortWizard } from './Wizard/CustomSortWizard';
|
|
|
16
16
|
export class CustomSortSummaryComponent extends React.Component {
|
|
17
17
|
constructor(props) {
|
|
18
18
|
super(props);
|
|
19
|
-
this.onFinishWizard = (customSort) => {
|
|
20
|
-
if (this.props.CustomSorts.find((x) => x.ColumnId == customSort.ColumnId)) {
|
|
21
|
-
this.props.onEditCustomSort(customSort);
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
this.props.onAddCustomSort(customSort);
|
|
25
|
-
}
|
|
26
|
-
this.setState({
|
|
27
|
-
editedAdaptableObject: null,
|
|
28
|
-
wizardStartIndex: 0,
|
|
29
|
-
wizardStatus: WizardStatus.None,
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
19
|
this.state = UIHelper.getEmptyConfigState();
|
|
33
20
|
}
|
|
34
21
|
render() {
|
|
@@ -76,6 +63,19 @@ export class CustomSortSummaryComponent extends React.Component {
|
|
|
76
63
|
wizardStatus: WizardStatus.None,
|
|
77
64
|
});
|
|
78
65
|
}
|
|
66
|
+
onFinishWizard = (customSort) => {
|
|
67
|
+
if (this.props.CustomSorts.find((x) => x.ColumnId == customSort.ColumnId)) {
|
|
68
|
+
this.props.onEditCustomSort(customSort);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this.props.onAddCustomSort(customSort);
|
|
72
|
+
}
|
|
73
|
+
this.setState({
|
|
74
|
+
editedAdaptableObject: null,
|
|
75
|
+
wizardStartIndex: 0,
|
|
76
|
+
wizardStatus: WizardStatus.None,
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
79
|
canFinishWizard() {
|
|
80
80
|
let customSort = this.state.editedAdaptableObject;
|
|
81
81
|
return (StringExtensions.IsNotNullOrEmpty(customSort.ColumnId) &&
|
|
@@ -15,19 +15,6 @@ import { FormatColumnWizard } from './Wizard/FormatColumnWizard';
|
|
|
15
15
|
export class FormatColumnSummaryComponent extends React.Component {
|
|
16
16
|
constructor(props) {
|
|
17
17
|
super(props);
|
|
18
|
-
this.onFinishWizard = (formatColumn) => {
|
|
19
|
-
if (this.props.FormatColumns.find((x) => x.Uuid == formatColumn.Uuid)) {
|
|
20
|
-
this.props.onEditFormatColumn(formatColumn);
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
this.props.onAddFormatColumn(formatColumn);
|
|
24
|
-
}
|
|
25
|
-
this.setState({
|
|
26
|
-
editedAdaptableObject: null,
|
|
27
|
-
wizardStartIndex: 0,
|
|
28
|
-
wizardStatus: WizardStatus.None,
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
18
|
this.state = UIHelper.getEmptyConfigState();
|
|
32
19
|
}
|
|
33
20
|
render() {
|
|
@@ -70,6 +57,19 @@ export class FormatColumnSummaryComponent extends React.Component {
|
|
|
70
57
|
wizardStatus: WizardStatus.None,
|
|
71
58
|
});
|
|
72
59
|
}
|
|
60
|
+
onFinishWizard = (formatColumn) => {
|
|
61
|
+
if (this.props.FormatColumns.find((x) => x.Uuid == formatColumn.Uuid)) {
|
|
62
|
+
this.props.onEditFormatColumn(formatColumn);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
this.props.onAddFormatColumn(formatColumn);
|
|
66
|
+
}
|
|
67
|
+
this.setState({
|
|
68
|
+
editedAdaptableObject: null,
|
|
69
|
+
wizardStartIndex: 0,
|
|
70
|
+
wizardStatus: WizardStatus.None,
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
73
|
canFinishWizard() {
|
|
74
74
|
let formatColumn = this.state.editedAdaptableObject;
|
|
75
75
|
return formatColumn.Scope != undefined && UIHelper.IsNotEmptyStyle(formatColumn.Style);
|
|
@@ -15,19 +15,6 @@ import { FreeTextColumnWizard } from './Wizard/FreeTextColumnWizard';
|
|
|
15
15
|
export class FreeTextColumnSummaryComponent extends React.Component {
|
|
16
16
|
constructor(props) {
|
|
17
17
|
super(props);
|
|
18
|
-
this.onFinishWizard = (FreeTextColumn) => {
|
|
19
|
-
if (this.props.FreeTextColumns.find((x) => x.ColumnId == FreeTextColumn.ColumnId)) {
|
|
20
|
-
this.props.onEditFreeTextColumn(FreeTextColumn);
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
this.props.onAddFreeTextColumn(FreeTextColumn);
|
|
24
|
-
}
|
|
25
|
-
this.setState({
|
|
26
|
-
editedAdaptableObject: null,
|
|
27
|
-
wizardStartIndex: 0,
|
|
28
|
-
wizardStatus: WizardStatus.None,
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
18
|
this.state = UIHelper.getEmptyConfigState();
|
|
32
19
|
}
|
|
33
20
|
render() {
|
|
@@ -68,6 +55,19 @@ export class FreeTextColumnSummaryComponent extends React.Component {
|
|
|
68
55
|
wizardStatus: WizardStatus.None,
|
|
69
56
|
});
|
|
70
57
|
}
|
|
58
|
+
onFinishWizard = (FreeTextColumn) => {
|
|
59
|
+
if (this.props.FreeTextColumns.find((x) => x.ColumnId == FreeTextColumn.ColumnId)) {
|
|
60
|
+
this.props.onEditFreeTextColumn(FreeTextColumn);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this.props.onAddFreeTextColumn(FreeTextColumn);
|
|
64
|
+
}
|
|
65
|
+
this.setState({
|
|
66
|
+
editedAdaptableObject: null,
|
|
67
|
+
wizardStartIndex: 0,
|
|
68
|
+
wizardStatus: WizardStatus.None,
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
71
|
canFinishWizard() {
|
|
72
72
|
let FreeTextColumn = this.state.editedAdaptableObject;
|
|
73
73
|
return StringExtensions.IsNotNullOrEmpty(FreeTextColumn.ColumnId);
|
|
@@ -13,6 +13,7 @@ import { connect } from 'react-redux';
|
|
|
13
13
|
import { Select } from '../../components/Select';
|
|
14
14
|
import { Flex } from '../../components/Flex';
|
|
15
15
|
class SmartEditViewPanelComponent extends React.Component {
|
|
16
|
+
cleanupEvent;
|
|
16
17
|
constructor(props) {
|
|
17
18
|
super(props);
|
|
18
19
|
this.state = {
|
|
@@ -11,22 +11,6 @@ import { Icon } from '../../components/icons';
|
|
|
11
11
|
import { ThemeSelector } from './ThemeSelector';
|
|
12
12
|
import { Box } from '../../components/Flex';
|
|
13
13
|
class ThemePopupComponent extends React.Component {
|
|
14
|
-
constructor() {
|
|
15
|
-
super(...arguments);
|
|
16
|
-
this.handleCreateNewTheme = (variant) => {
|
|
17
|
-
let nthItem = this.props.UserThemes.length + 1;
|
|
18
|
-
let name = 'Custom-Theme-' + nthItem;
|
|
19
|
-
// make sure it is unique
|
|
20
|
-
while (this.props.UserThemes.some((theme) => theme.Name === name)) {
|
|
21
|
-
nthItem++;
|
|
22
|
-
name = 'Custom-Theme-' + nthItem;
|
|
23
|
-
}
|
|
24
|
-
const newTheme = ObjectFactory.CreateEmptyTheme(name);
|
|
25
|
-
newTheme.Variant = variant;
|
|
26
|
-
this.props.api.themeApi.addUserTheme(newTheme);
|
|
27
|
-
this.props.api.themeApi.loadTheme(newTheme.Name);
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
14
|
render() {
|
|
31
15
|
const isCustomTheme = this.props.api.themeApi
|
|
32
16
|
.getUserThemes()
|
|
@@ -59,6 +43,19 @@ class ThemePopupComponent extends React.Component {
|
|
|
59
43
|
onChangeTheme(value) {
|
|
60
44
|
this.props.SelectTheme(value);
|
|
61
45
|
}
|
|
46
|
+
handleCreateNewTheme = (variant) => {
|
|
47
|
+
let nthItem = this.props.UserThemes.length + 1;
|
|
48
|
+
let name = 'Custom-Theme-' + nthItem;
|
|
49
|
+
// make sure it is unique
|
|
50
|
+
while (this.props.UserThemes.some((theme) => theme.Name === name)) {
|
|
51
|
+
nthItem++;
|
|
52
|
+
name = 'Custom-Theme-' + nthItem;
|
|
53
|
+
}
|
|
54
|
+
const newTheme = ObjectFactory.CreateEmptyTheme(name);
|
|
55
|
+
newTheme.Variant = variant;
|
|
56
|
+
this.props.api.themeApi.addUserTheme(newTheme);
|
|
57
|
+
this.props.api.themeApi.loadTheme(newTheme.Name);
|
|
58
|
+
};
|
|
62
59
|
}
|
|
63
60
|
function mapStateToProps(state, ownProps) {
|
|
64
61
|
return {
|