@adaptabletools/adaptable 11.1.15 → 11.1.16
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/base.css +2 -0
- package/bundle.cjs.js +94 -94
- package/index.css +3 -0
- package/package.json +1 -1
- package/publishTimestamp.d.ts +1 -1
- package/publishTimestamp.js +1 -1
- package/src/AdaptableOptions/AlertOptions.d.ts +8 -2
- package/src/AdaptableOptions/DashboardOptions.d.ts +4 -3
- package/src/AdaptableOptions/ExportOptions.d.ts +2 -2
- package/src/AdaptableOptions/FilterOptions.d.ts +5 -4
- package/src/AdaptableOptions/LayoutOptions.d.ts +56 -10
- package/src/AdaptableOptions/ToolPanelOptions.d.ts +4 -3
- package/src/AdaptableOptions/UserInterfaceOptions.d.ts +18 -16
- package/src/Api/AdaptableApi.d.ts +10 -0
- package/src/Api/ConfigApi.d.ts +3 -3
- package/src/Api/EventApi.d.ts +1 -0
- package/src/Api/Events/LayoutChanged.d.ts +1 -1
- package/src/Api/ExportApi.d.ts +16 -0
- package/src/Api/FinanceApi.d.ts +104 -3
- package/src/Api/Implementation/AdaptableApiImpl.d.ts +6 -0
- package/src/Api/Implementation/AdaptableApiImpl.js +53 -0
- package/src/Api/Implementation/AlertApiImpl.js +5 -5
- package/src/Api/Implementation/ApiBase.js +3 -0
- package/src/Api/Implementation/ConditionalStyleApiImpl.js +3 -3
- package/src/Api/Implementation/ConfigApiImpl.js +5 -1
- package/src/Api/Implementation/CustomSortApiImpl.js +4 -4
- package/src/Api/Implementation/EventApiImpl.d.ts +1 -0
- package/src/Api/Implementation/EventApiImpl.js +3 -0
- package/src/Api/Implementation/ExportApiImpl.d.ts +3 -0
- package/src/Api/Implementation/ExportApiImpl.js +10 -0
- package/src/Api/Implementation/FlashingCellApiImpl.d.ts +1 -1
- package/src/Api/Implementation/FlashingCellApiImpl.js +7 -6
- package/src/Api/Implementation/FormatColumnApiImpl.js +5 -5
- package/src/Api/Implementation/InternalApiImpl.d.ts +11 -5
- package/src/Api/Implementation/InternalApiImpl.js +65 -3
- package/src/Api/Implementation/PlusMinusApiImpl.js +4 -7
- package/src/Api/Implementation/ScheduleApiImpl.d.ts +2 -1
- package/src/Api/Implementation/ScheduleApiImpl.js +15 -7
- package/src/Api/Implementation/ShortcutApiImpl.js +3 -3
- package/src/Api/InternalApi.d.ts +11 -7
- package/src/Api/LayoutApi.d.ts +4 -6
- package/src/Api/ScheduleApi.d.ts +5 -1
- package/src/PredefinedConfig/AlertState.d.ts +3 -3
- package/src/PredefinedConfig/Common/AdaptableButton.d.ts +2 -5
- package/src/PredefinedConfig/Common/AdaptableForm.d.ts +4 -3
- package/src/PredefinedConfig/Common/AdaptableObject.d.ts +18 -1
- package/src/PredefinedConfig/Common/AdaptablePredicate.js +9 -0
- package/src/PredefinedConfig/Common/BaseContext.d.ts +10 -0
- package/src/PredefinedConfig/Common/BaseContext.js +2 -0
- package/src/PredefinedConfig/Common/CellSummary.d.ts +3 -3
- package/src/PredefinedConfig/Common/FDC3Context.d.ts +9 -9
- package/src/PredefinedConfig/Common/Menu.d.ts +4 -13
- package/src/PredefinedConfig/DataSourceState.d.ts +2 -2
- package/src/PredefinedConfig/FilterState.d.ts +1 -1
- package/src/Redux/ActionsReducers/PopupRedux.d.ts +5 -5
- package/src/Redux/Store/AdaptableStore.d.ts +1 -0
- package/src/Redux/Store/AdaptableStore.js +6 -1
- package/src/Redux/Store/Interface/IAdaptableStore.d.ts +1 -0
- package/src/Strategy/AlertModule.js +3 -0
- package/src/Strategy/CalculatedColumnModule.d.ts +3 -17
- package/src/Strategy/CalculatedColumnModule.js +2 -0
- package/src/Strategy/ConditionalStyleModule.js +4 -1
- package/src/Strategy/CustomSortModule.js +2 -0
- package/src/Strategy/DataSourceModule.js +2 -0
- package/src/Strategy/ExportModule.d.ts +5 -3
- package/src/Strategy/ExportModule.js +10 -0
- package/src/Strategy/FlashingCellModule.js +2 -0
- package/src/Strategy/FormatColumnModule.js +2 -0
- package/src/Strategy/FreeTextColumnModule.js +2 -0
- package/src/Strategy/Interface/IModule.d.ts +5 -3
- package/src/Strategy/Interface/IScheduleModule.d.ts +1 -1
- package/src/Strategy/LayoutModule.d.ts +2 -1
- package/src/Strategy/LayoutModule.js +35 -2
- package/src/Strategy/PlusMinusModule.js +7 -4
- package/src/Strategy/QueryModule.d.ts +2 -8
- package/src/Strategy/QueryModule.js +2 -0
- package/src/Strategy/ScheduleModule.d.ts +4 -3
- package/src/Strategy/ScheduleModule.js +4 -2
- package/src/Strategy/ShortcutModule.js +6 -1
- package/src/Strategy/StatusBarModule.d.ts +2 -1
- package/src/Strategy/StatusBarModule.js +2 -3
- package/src/Strategy/Utilities/getObjectTagsViewItems.d.ts +4 -0
- package/src/Strategy/Utilities/getObjectTagsViewItems.js +13 -0
- package/src/Utilities/Defaults/DefaultAdaptableOptions.js +2 -1
- package/src/Utilities/Emitter.d.ts +1 -0
- package/src/Utilities/Emitter.js +9 -0
- package/src/Utilities/Extensions/TypeExtensions.d.ts +2 -0
- package/src/Utilities/Interface/MessagePopups.d.ts +3 -3
- package/src/Utilities/ObjectFactory.d.ts +2 -2
- package/src/Utilities/Services/AlertService.js +1 -1
- package/src/Utilities/Services/DataService.js +1 -1
- package/src/Utilities/Services/Interface/IModuleService.d.ts +1 -1
- package/src/Utilities/Services/ModuleService.d.ts +1 -1
- package/src/Utilities/Services/ModuleService.js +1 -0
- package/src/View/Alert/AlertStatusSubPanel.js +2 -1
- package/src/View/Alert/Wizard/AlertWizard.js +9 -0
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.js +9 -0
- package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +1 -0
- package/src/View/Components/FilterForm/FilterForm.js +1 -1
- package/src/View/Components/FilterForm/QuickFilterForm.js +11 -7
- package/src/View/Components/FilterForm/getDefaultColumnFilterPredicate.d.ts +1 -1
- package/src/View/Components/Popups/AdaptableToaster.js +3 -1
- package/src/View/Components/Popups/FormPopups/FormPopups.d.ts +3 -3
- package/src/View/Components/TagValueSelector/index.d.ts +13 -0
- package/src/View/Components/TagValueSelector/index.js +22 -0
- package/src/View/ConditionalStyle/Wizard/ConditionalStyleWizard.js +9 -0
- package/src/View/CustomSort/Wizard/CustomSortWizard.js +9 -0
- package/src/View/DataSource/Wizard/DataSourceSettingsWizard.js +1 -1
- package/src/View/DataSource/Wizard/DataSourceWizard.js +10 -0
- package/src/View/Export/ExportSelector.d.ts +4 -0
- package/src/View/Export/ExportSelector.js +75 -0
- package/src/View/Export/ExportViewPanel.js +6 -7
- package/src/View/Export/ReportExportDropdown.d.ts +2 -5
- package/src/View/Export/Wizard/NewReportWizard.js +9 -0
- package/src/View/Export/constants.d.ts +2 -0
- package/src/View/Export/constants.js +5 -0
- package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +9 -0
- package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +9 -0
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnWizard.js +9 -0
- package/src/View/GridInfo/GridOptionsComponent.d.ts +0 -1
- package/src/View/GridInfo/GridOptionsComponent.js +0 -1
- package/src/View/Layout/LayoutCloneButton.d.ts +6 -0
- package/src/View/Layout/LayoutCloneButton.js +15 -0
- package/src/View/Layout/LayoutRadioSelector.d.ts +2 -1
- package/src/View/Layout/LayoutRadioSelector.js +1 -1
- package/src/View/Layout/LayoutStatusBarSubPanelPopover.js +6 -1
- package/src/View/Layout/Wizard/LayoutEditorWizard.d.ts +1 -0
- package/src/View/PlusMinus/Wizard/PlusMinusWizard.js +9 -0
- package/src/View/Query/Wizard/NamedQueryWizard.js +9 -0
- package/src/View/Schedule/Wizard/ScheduleWizard.js +10 -0
- package/src/View/Shortcut/Wizard/ShortcutWizard.js +10 -0
- package/src/View/StatusBar/StatusBarPopup.js +1 -1
- package/src/View/Wizard/ObjectTagsWizardSection.d.ts +8 -0
- package/src/View/Wizard/ObjectTagsWizardSection.js +22 -0
- package/src/View/Wizard/OnePageAdaptableWizard.d.ts +1 -0
- package/src/View/Wizard/OnePageAdaptableWizard.js +12 -5
- package/src/agGrid/Adaptable.d.ts +12 -0
- package/src/agGrid/Adaptable.js +80 -45
- package/src/agGrid/createAgStatusPanelComponent.js +1 -0
- package/src/components/AdaptableFormComponent/AdaptableFormComponent.d.ts +8 -7
- package/src/components/ExpressionEditor/index.js +5 -2
- package/src/metamodel/adaptable.metamodel.d.ts +44 -2
- package/src/metamodel/adaptable.metamodel.js +222 -21
- package/src/types.d.ts +6 -5
- package/version.d.ts +1 -1
- package/version.js +1 -1
|
@@ -9,9 +9,17 @@ const ArrayExtensions_1 = tslib_1.__importDefault(require("../Utilities/Extensio
|
|
|
9
9
|
const LayoutRadioSelector_1 = require("../View/Layout/LayoutRadioSelector");
|
|
10
10
|
const LayoutStatusBarSubPanelPopover_1 = require("../View/Layout/LayoutStatusBarSubPanelPopover");
|
|
11
11
|
const EditCurrentLayoutButton_1 = require("../View/Layout/EditCurrentLayoutButton");
|
|
12
|
+
const LayoutCloneButton_1 = require("../View/Layout/LayoutCloneButton");
|
|
12
13
|
class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
13
14
|
constructor(api) {
|
|
14
15
|
super(ModuleConstants.LayoutModuleId, 'Layout', 'layout', 'LayoutPopup', 'Named sets of column visibility, order, groupings, aggregation, pivots etc.', api);
|
|
16
|
+
this.api.eventApi.on('LayoutChanged', (layoutChangedInfo) => {
|
|
17
|
+
var _a;
|
|
18
|
+
if (layoutChangedInfo.newLayoutState.CurrentLayout !== ((_a = layoutChangedInfo.oldLayoutState) === null || _a === void 0 ? void 0 : _a.CurrentLayout)) {
|
|
19
|
+
// we are interested only if current layout was changed (is different from the previous one)
|
|
20
|
+
this.handleLayoutChange();
|
|
21
|
+
}
|
|
22
|
+
});
|
|
15
23
|
}
|
|
16
24
|
getModuleAdaptableObjects() {
|
|
17
25
|
return this.api.layoutApi.getAllLayout();
|
|
@@ -136,7 +144,7 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
136
144
|
}
|
|
137
145
|
toView(layout) {
|
|
138
146
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
139
|
-
const maxColumnsToDisplay = (_d = (_c = (_b = (_a = this.api.internalApi.getAdaptableOptions()) === null || _a === void 0 ? void 0 : _a.layoutOptions) === null || _b === void 0 ? void 0 : _b.
|
|
147
|
+
const maxColumnsToDisplay = (_d = (_c = (_b = (_a = this.api.internalApi.getAdaptableOptions()) === null || _a === void 0 ? void 0 : _a.layoutOptions) === null || _b === void 0 ? void 0 : _b.viewOptions) === null || _c === void 0 ? void 0 : _c.maxColumnsToDisplay) !== null && _d !== void 0 ? _d : 10;
|
|
140
148
|
const columnIdToFriendlyName = (columnId) => {
|
|
141
149
|
return this.api.columnApi.getFriendlyNameFromColumnId(columnId);
|
|
142
150
|
};
|
|
@@ -181,7 +189,7 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
181
189
|
}
|
|
182
190
|
getViewProperties() {
|
|
183
191
|
return {
|
|
184
|
-
actions: [LayoutRadioSelector_1.LayoutRadioSelector],
|
|
192
|
+
actions: [LayoutRadioSelector_1.LayoutRadioSelector, LayoutCloneButton_1.LayoutCloneButton],
|
|
185
193
|
getDeleteAction: (layout) => {
|
|
186
194
|
// make sure we do not delete the last layout
|
|
187
195
|
if (this.getModuleAdaptableObjects().length === 1) {
|
|
@@ -211,5 +219,30 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
211
219
|
},
|
|
212
220
|
};
|
|
213
221
|
}
|
|
222
|
+
handleLayoutChange() {
|
|
223
|
+
// update objects associated with the current layout via the LayoutOptions.isObjectAssociatedWithLayout() method
|
|
224
|
+
if (!this.api.internalApi.getAdaptableOptions().layoutOptions.isObjectAvailableInLayout) {
|
|
225
|
+
// no need if no callback implementation is provided
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
// PlusMinus
|
|
229
|
+
this.api.internalApi
|
|
230
|
+
.getModuleService()
|
|
231
|
+
.getModuleById('PlusMinus')
|
|
232
|
+
.checkListenToKeyDown();
|
|
233
|
+
// Shortcut
|
|
234
|
+
this.api.internalApi
|
|
235
|
+
.getModuleService()
|
|
236
|
+
.getModuleById('Shortcut')
|
|
237
|
+
.checkListenToKeyDown();
|
|
238
|
+
// Schedule
|
|
239
|
+
this.api.internalApi
|
|
240
|
+
.getModuleService()
|
|
241
|
+
.getModuleById('Schedule')
|
|
242
|
+
.setUpScheduleJobs();
|
|
243
|
+
// ConditionalStyle, CustomSort, FlashingCell, FormatColumn
|
|
244
|
+
// we need to refresh the column defs, as some configs may have changed
|
|
245
|
+
this.api.internalApi.getAdaptableInstance().setupColumns();
|
|
246
|
+
}
|
|
214
247
|
}
|
|
215
248
|
exports.LayoutModule = LayoutModule;
|
|
@@ -12,6 +12,7 @@ const ModuleConstants_1 = require("../Utilities/Constants/ModuleConstants");
|
|
|
12
12
|
const getScopeViewItems_1 = require("./Utilities/getScopeViewItems");
|
|
13
13
|
const PlusMinusWizard_1 = require("../View/PlusMinus/Wizard/PlusMinusWizard");
|
|
14
14
|
const getRuleViewItems_1 = require("./Utilities/getRuleViewItems");
|
|
15
|
+
const getObjectTagsViewItems_1 = require("./Utilities/getObjectTagsViewItems");
|
|
15
16
|
class PlusMinusModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
16
17
|
constructor(api) {
|
|
17
18
|
super(ModuleConstants.PlusMinusModuleId, 'Plus Minus', 'plus-minus', 'PlusMinusPopup', 'Configure how a cell value will edit when the + or - keys are pressed', api);
|
|
@@ -46,13 +47,14 @@ class PlusMinusModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
checkListenToKeyDown() {
|
|
49
|
-
|
|
50
|
+
const oldShouldHandleKeyDown = this.shouldHandleKeyDown;
|
|
51
|
+
const newShouldHandleKeyDown = ArrayExtensions_1.ArrayExtensions.IsNotNullOrEmpty(this.api.plusMinusApi.getAllPlusMinus());
|
|
52
|
+
if (!oldShouldHandleKeyDown && newShouldHandleKeyDown) {
|
|
50
53
|
this.adaptable._on('KeyDown', (keyDownEvent) => {
|
|
51
54
|
this.handleKeyDown(keyDownEvent);
|
|
52
55
|
});
|
|
53
56
|
}
|
|
54
|
-
|
|
55
|
-
this.shouldHandleKeyDown = ArrayExtensions_1.ArrayExtensions.IsNotNullOrEmpty(plusMinusNudges);
|
|
57
|
+
this.shouldHandleKeyDown = newShouldHandleKeyDown;
|
|
56
58
|
}
|
|
57
59
|
addColumnMenuItems(column) {
|
|
58
60
|
if (column && this.isModuleEditable() && column.dataType == 'Number') {
|
|
@@ -68,7 +70,7 @@ class PlusMinusModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
68
70
|
}
|
|
69
71
|
handleKeyDown(keyEvent) {
|
|
70
72
|
if (this.shouldHandleKeyDown) {
|
|
71
|
-
//it's a
|
|
73
|
+
//it's a special key so we handle the string representation of the key '
|
|
72
74
|
let keyEventString = Helper_1.Helper.getStringRepresentionFromKey(keyEvent);
|
|
73
75
|
if (keyEventString == '-' || keyEventString == '+') {
|
|
74
76
|
let plusMinusNudges = this.api.plusMinusApi.getAllActivePlusMinus();
|
|
@@ -197,6 +199,7 @@ class PlusMinusModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
197
199
|
label: 'Nudge Value',
|
|
198
200
|
values: [plusMinus.NudgeValue],
|
|
199
201
|
},
|
|
202
|
+
getObjectTagsViewItems_1.getObjectTagsViewItems(plusMinus, this.api),
|
|
200
203
|
].filter(Boolean),
|
|
201
204
|
};
|
|
202
205
|
}
|
|
@@ -15,17 +15,11 @@ export declare class QueryModule extends AdaptableModuleBase implements IModule
|
|
|
15
15
|
getReferencedNamedQueryNames(namedQuery: NamedQuery): string[];
|
|
16
16
|
toView(query: NamedQuery): {
|
|
17
17
|
abObject: NamedQuery;
|
|
18
|
-
items:
|
|
19
|
-
name: string;
|
|
20
|
-
values: string[];
|
|
21
|
-
}[];
|
|
18
|
+
items: import("./Interface/IModule").AdaptableObjectItemView[];
|
|
22
19
|
};
|
|
23
20
|
toViewAll(): {
|
|
24
21
|
abObject: NamedQuery;
|
|
25
|
-
items:
|
|
26
|
-
name: string;
|
|
27
|
-
values: string[];
|
|
28
|
-
}[];
|
|
22
|
+
items: import("./Interface/IModule").AdaptableObjectItemView[];
|
|
29
23
|
}[];
|
|
30
24
|
getViewProperties(): {
|
|
31
25
|
getDeleteAction: (namedQuery: NamedQuery) => QueryRedux.NamedQueryDeleteAction;
|
|
@@ -7,6 +7,7 @@ const ModuleConstants = tslib_1.__importStar(require("../Utilities/Constants/Mod
|
|
|
7
7
|
const QueryRedux = tslib_1.__importStar(require("../Redux/ActionsReducers/QueryRedux"));
|
|
8
8
|
const NamedQueryWizard_1 = require("../View/Query/Wizard/NamedQueryWizard");
|
|
9
9
|
const EditCurrentQueryButton_1 = require("../View/Query/EditCurrentQueryButton");
|
|
10
|
+
const getObjectTagsViewItems_1 = require("./Utilities/getObjectTagsViewItems");
|
|
10
11
|
class QueryModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
11
12
|
constructor(api) {
|
|
12
13
|
super(ModuleConstants.QueryModuleId, 'Query', 'query', 'QueryPopup', 'Run real-time text-based queries using a wealth of powerful functions and operators', api);
|
|
@@ -39,6 +40,7 @@ class QueryModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
39
40
|
name: 'Expression',
|
|
40
41
|
values: [query.BooleanExpression],
|
|
41
42
|
},
|
|
43
|
+
getObjectTagsViewItems_1.getObjectTagsViewItems(query, this.api),
|
|
42
44
|
],
|
|
43
45
|
};
|
|
44
46
|
}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { AdaptableModuleBase } from './AdaptableModuleBase';
|
|
3
|
-
import { AdaptableObjectView
|
|
3
|
+
import { AdaptableObjectView } from './Interface/IModule';
|
|
4
4
|
import { AdaptableApi } from '../Api/AdaptableApi';
|
|
5
5
|
import { BaseSchedule } from '../PredefinedConfig/Common/Schedule';
|
|
6
6
|
import * as ScheduleRedux from '../Redux/ActionsReducers/ScheduleRedux';
|
|
7
|
-
|
|
7
|
+
import { IScheduleModule } from './Interface/IScheduleModule';
|
|
8
|
+
export declare class ScheduleModule extends AdaptableModuleBase implements IScheduleModule {
|
|
8
9
|
private scheduleJobs;
|
|
9
10
|
constructor(api: AdaptableApi);
|
|
10
11
|
handleAdaptableReady(): void;
|
|
11
|
-
|
|
12
|
+
setUpScheduleJobs(): void;
|
|
12
13
|
private addSchedule;
|
|
13
14
|
private addMidnightRefreshSchedule;
|
|
14
15
|
private getDateFromSchedule;
|
|
@@ -10,6 +10,7 @@ const ScheduleWizard_1 = require("../View/Schedule/Wizard/ScheduleWizard");
|
|
|
10
10
|
const ScheduleSettingsSummary_1 = require("../View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsSummary");
|
|
11
11
|
const UIHelper_1 = tslib_1.__importDefault(require("../View/UIHelper"));
|
|
12
12
|
const ScheduleRedux = tslib_1.__importStar(require("../Redux/ActionsReducers/ScheduleRedux"));
|
|
13
|
+
const getObjectTagsViewItems_1 = require("./Utilities/getObjectTagsViewItems");
|
|
13
14
|
const dateTimeouts = {};
|
|
14
15
|
const NodeSchedule = {
|
|
15
16
|
scheduleJob: (date, fn) => {
|
|
@@ -39,9 +40,9 @@ class ScheduleModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
39
40
|
this.addMidnightRefreshSchedule();
|
|
40
41
|
}
|
|
41
42
|
handleAdaptableReady() {
|
|
42
|
-
this.
|
|
43
|
+
this.setUpScheduleJobs();
|
|
43
44
|
}
|
|
44
|
-
|
|
45
|
+
setUpScheduleJobs() {
|
|
45
46
|
this.clearAllJobs();
|
|
46
47
|
//add schedules
|
|
47
48
|
this.api.scheduleApi
|
|
@@ -148,6 +149,7 @@ class ScheduleModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
148
149
|
name: 'Schedule',
|
|
149
150
|
values: [UIHelper_1.default.getScheduleDescription(schedule.Schedule)],
|
|
150
151
|
},
|
|
152
|
+
getObjectTagsViewItems_1.getObjectTagsViewItems(schedule, this.api),
|
|
151
153
|
],
|
|
152
154
|
};
|
|
153
155
|
}
|
|
@@ -11,6 +11,7 @@ const StringExtensions_1 = tslib_1.__importDefault(require("../Utilities/Extensi
|
|
|
11
11
|
const ShortcutWizard_1 = require("../View/Shortcut/Wizard/ShortcutWizard");
|
|
12
12
|
const getScopeViewItems_1 = require("./Utilities/getScopeViewItems");
|
|
13
13
|
const getShortcutSettingsViewItems_1 = require("./Utilities/getShortcutSettingsViewItems");
|
|
14
|
+
const getObjectTagsViewItems_1 = require("./Utilities/getObjectTagsViewItems");
|
|
14
15
|
class ShortcutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
15
16
|
constructor(api) {
|
|
16
17
|
super(ModuleConstants.ShortcutModuleId, 'Shortcut', 'shortcut', 'ShortcutPopup', 'Set up rules so cells update mathematically when keys are pressed in numeric cells', api);
|
|
@@ -74,7 +75,11 @@ class ShortcutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
74
75
|
toView(shortcut) {
|
|
75
76
|
return {
|
|
76
77
|
abObject: shortcut,
|
|
77
|
-
items: [
|
|
78
|
+
items: [
|
|
79
|
+
getScopeViewItems_1.getScopeViewItems(shortcut.Scope, this.api),
|
|
80
|
+
getShortcutSettingsViewItems_1.getShortcutSettingsViewItems(shortcut),
|
|
81
|
+
getObjectTagsViewItems_1.getObjectTagsViewItems(shortcut, this.api),
|
|
82
|
+
],
|
|
78
83
|
};
|
|
79
84
|
}
|
|
80
85
|
toViewAll() {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { AdaptableModuleBase } from './AdaptableModuleBase';
|
|
2
2
|
import { IModule } from './Interface/IModule';
|
|
3
3
|
import { AdaptableApi } from '../Api/AdaptableApi';
|
|
4
|
+
import { GridOptions } from '@ag-grid-community/all-modules';
|
|
4
5
|
export declare class StatusBarModule extends AdaptableModuleBase implements IModule {
|
|
5
6
|
constructor(api: AdaptableApi);
|
|
6
|
-
syncStateWithOptions(): void;
|
|
7
|
+
syncStateWithOptions(agGridAdaptablePanels: GridOptions['statusBar']['statusPanels']): void;
|
|
7
8
|
isModuleAvailable(): boolean;
|
|
8
9
|
}
|
|
@@ -8,8 +8,7 @@ class StatusBarModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
8
8
|
constructor(api) {
|
|
9
9
|
super(ModuleConstants.StatusBarModuleId, 'Status Bar', 'statusbar', 'StatusBarPopup', 'Configure AdapTable Status Bar', api);
|
|
10
10
|
}
|
|
11
|
-
syncStateWithOptions() {
|
|
12
|
-
const agGridStatusPanels = this.api.statusBarApi.getAgGridStatusPanels();
|
|
11
|
+
syncStateWithOptions(agGridAdaptablePanels) {
|
|
13
12
|
const statusPanelsState = this.api.statusBarApi.getStatusPanels();
|
|
14
13
|
/**
|
|
15
14
|
* Grid config determines how many adaptable status panels are rendered.
|
|
@@ -17,7 +16,7 @@ class StatusBarModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
17
16
|
* - if a status panel is removed from ag-grid, it's sub-panels are made available;
|
|
18
17
|
* - if a new status panel is added it is added to state with an empty list
|
|
19
18
|
*/
|
|
20
|
-
const newStatusPanelsState =
|
|
19
|
+
const newStatusPanelsState = agGridAdaptablePanels.map((agGridStatusPanel) => {
|
|
21
20
|
let statusPanelState = statusPanelsState.find((statusPanel) => statusPanel.Key === agGridStatusPanel.key);
|
|
22
21
|
// no state found
|
|
23
22
|
if (!statusPanelState) {
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AdaptableObject } from '../../PredefinedConfig/Common/AdaptableObject';
|
|
2
|
+
import { AdaptableApi } from '../../Api/AdaptableApi';
|
|
3
|
+
import { AdaptableObjectItemView } from '../Interface/IModule';
|
|
4
|
+
export declare const getObjectTagsViewItems: (object: AdaptableObject, api: AdaptableApi) => AdaptableObjectItemView;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getObjectTagsViewItems = void 0;
|
|
4
|
+
const ObjectTagsWizardSection_1 = require("../../View/Wizard/ObjectTagsWizardSection");
|
|
5
|
+
exports.getObjectTagsViewItems = (object, api) => {
|
|
6
|
+
if (!api.internalApi.shouldDisplayTagSections()) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
name: 'Tags',
|
|
11
|
+
view: () => ObjectTagsWizardSection_1.renderObjectTagsSummary(object),
|
|
12
|
+
};
|
|
13
|
+
};
|
|
@@ -25,6 +25,7 @@ exports.DefaultAdaptableOptions = {
|
|
|
25
25
|
maxAlertsInStore: 20,
|
|
26
26
|
cellHighlightDuration: 2000,
|
|
27
27
|
rowHighlightDuration: 4000,
|
|
28
|
+
statusbarHighlightDuration: 2000,
|
|
28
29
|
dataChangeDetectionPolicy: 'rawValue',
|
|
29
30
|
actionHandlers: undefined,
|
|
30
31
|
},
|
|
@@ -133,7 +134,7 @@ exports.DefaultAdaptableOptions = {
|
|
|
133
134
|
autoSizeColumnsInLayout: false,
|
|
134
135
|
autoSizeColumnsInPivotLayout: false,
|
|
135
136
|
createDefaultLayout: false,
|
|
136
|
-
|
|
137
|
+
viewOptions: {
|
|
137
138
|
maxColumnsToDisplay: 10,
|
|
138
139
|
},
|
|
139
140
|
},
|
|
@@ -4,6 +4,7 @@ export declare type EmitterAnyCallback = (eventName: string, data?: any) => any;
|
|
|
4
4
|
declare class Emittery {
|
|
5
5
|
static mixin(emitteryPropertyName: string, methodNames: string[]): (target: any) => any;
|
|
6
6
|
constructor();
|
|
7
|
+
destroy(): void;
|
|
7
8
|
on(eventName: string, listener: EmitterCallback): any;
|
|
8
9
|
off(eventName: string, listener: EmitterCallback): void;
|
|
9
10
|
once(eventName: string): Promise<unknown>;
|
package/src/Utilities/Emitter.js
CHANGED
|
@@ -80,6 +80,15 @@ class Emittery {
|
|
|
80
80
|
eventsMap.set(this, new Map());
|
|
81
81
|
triggeredMap.set(this, new Map());
|
|
82
82
|
}
|
|
83
|
+
destroy() {
|
|
84
|
+
this.clearListeners();
|
|
85
|
+
// should not be needed, since those maps are weak
|
|
86
|
+
// but let's do it anyway - some of our users suggested this Emitter class
|
|
87
|
+
// could be a source of memory leaks, so let's clean this up
|
|
88
|
+
anyMap.delete(this);
|
|
89
|
+
eventsMap.delete(this);
|
|
90
|
+
triggeredMap.delete(this);
|
|
91
|
+
}
|
|
83
92
|
on(eventName, listener) {
|
|
84
93
|
assertEventName(eventName);
|
|
85
94
|
assertListener(listener);
|
|
@@ -41,4 +41,6 @@ export declare type XOR<FirstType, SecondType> = FirstType | SecondType extends
|
|
|
41
41
|
export declare type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
|
|
42
42
|
[K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;
|
|
43
43
|
}[Keys];
|
|
44
|
+
/** Similar to the builtin Extract, but checks the filter strictly */
|
|
45
|
+
export declare type StrictExtract<T, U extends Partial<T>> = Extract<T, U>;
|
|
44
46
|
export {};
|
|
@@ -3,7 +3,7 @@ import { ModuleParams } from '../../View/Components/SharedProps/ModuleViewPopupP
|
|
|
3
3
|
import { AdaptableModule } from '../../PredefinedConfig/Common/Types';
|
|
4
4
|
import { AdaptableMessageType } from '../../PredefinedConfig/Common/AdaptableMessageType';
|
|
5
5
|
import { AdaptableAlert } from '../../PredefinedConfig/Common/AdaptableAlert';
|
|
6
|
-
import { AdaptableForm,
|
|
6
|
+
import { AdaptableForm, BaseContext } from '../../types';
|
|
7
7
|
export interface UIConfirmation {
|
|
8
8
|
Header: string;
|
|
9
9
|
Msg: string;
|
|
@@ -79,7 +79,7 @@ export interface FormPopup {
|
|
|
79
79
|
/**
|
|
80
80
|
* Allows to customise the context before submitting the form
|
|
81
81
|
*/
|
|
82
|
-
prepareContext?: (context:
|
|
83
|
-
Form: AdaptableForm<
|
|
82
|
+
prepareContext?: (context: BaseContext) => Promise<BaseContext> | BaseContext;
|
|
83
|
+
Form: AdaptableForm<BaseContext>;
|
|
84
84
|
}[];
|
|
85
85
|
}
|
|
@@ -19,7 +19,7 @@ import { IPushPullReport } from '../PredefinedConfig/SystemState';
|
|
|
19
19
|
import { IPushPullSchedule } from '../PredefinedConfig/IPushPullState';
|
|
20
20
|
import { OpenFinSchedule, OpenFinReport } from '../PredefinedConfig/OpenFinState';
|
|
21
21
|
import { NamedQuery } from '../PredefinedConfig/QueryState';
|
|
22
|
-
import { ColumnFilter } from '../PredefinedConfig/FilterState';
|
|
22
|
+
import { ColumnFilter, SystemFilterPredicateId } from '../PredefinedConfig/FilterState';
|
|
23
23
|
import { ReminderSchedule } from '../PredefinedConfig/ScheduleState';
|
|
24
24
|
import { AdaptableCellChangedAlert, AdaptableGenericAlert, AdaptableRowChangedAlert } from '../PredefinedConfig/Common/AdaptableAlert';
|
|
25
25
|
import { AdaptableMessageType } from '../PredefinedConfig/Common/AdaptableMessageType';
|
|
@@ -63,7 +63,7 @@ export declare function CreateEmptyLayout(layout?: Partial<Layout> & {
|
|
|
63
63
|
export declare function CreateEmptyStyle(): AdaptableStyle;
|
|
64
64
|
export declare function CreateSystemStatusMessageInfo(message: string, type: AdaptableMessageType, furtherInfo?: string): SystemStatusMessageInfo;
|
|
65
65
|
export declare function CreateEmptyCellSummmary(): CellSummmary;
|
|
66
|
-
export declare function CreateColumnFilter(ColumnId: string, PredicateId:
|
|
66
|
+
export declare function CreateColumnFilter(ColumnId: string, PredicateId: SystemFilterPredicateId, Inputs: any[]): ColumnFilter;
|
|
67
67
|
export declare function CreateToastOptions(notificationsOptions: NotificationsOptions, { onClose }?: {
|
|
68
68
|
onClose?: VoidFunction;
|
|
69
69
|
}): ToastOptions;
|
|
@@ -8,7 +8,7 @@ export interface IModuleService extends IAdaptableService {
|
|
|
8
8
|
isModuleEditable(adaptableModule: AdaptableModule): boolean;
|
|
9
9
|
createModuleMenus(): void;
|
|
10
10
|
getTeamSharingAction(adaptableModule: AdaptableModule): TeamSharingImportInfo<AdaptableObject> | undefined;
|
|
11
|
-
getModuleById(adaptableModule: AdaptableModule):
|
|
11
|
+
getModuleById<T = IModule>(adaptableModule: AdaptableModule): T | undefined;
|
|
12
12
|
getModuleInfoByModule(adaptableModule: AdaptableModule): ModuleInfo | undefined;
|
|
13
13
|
getModuleInfoByFriendlyName(friendlyName: string): ModuleInfo | undefined;
|
|
14
14
|
getModuleDocumentationPageByModule(adaptableModule: AdaptableModule): string;
|
|
@@ -11,7 +11,7 @@ export declare class ModuleService implements IModuleService {
|
|
|
11
11
|
isModuleAvailable(adaptableModule: AdaptableModule): boolean;
|
|
12
12
|
isModuleEditable(adaptableModule: AdaptableModule): boolean;
|
|
13
13
|
getTeamSharingAction(adaptableModule: AdaptableModule): TeamSharingImportInfo<AdaptableObject> | undefined;
|
|
14
|
-
getModuleById(adaptableModule: AdaptableModule):
|
|
14
|
+
getModuleById<T = IModule>(adaptableModule: AdaptableModule): T | undefined;
|
|
15
15
|
getModuleInfoByModule(adaptableModule: AdaptableModule): ModuleInfo | undefined;
|
|
16
16
|
getModuleInfoByFriendlyName(friendlyName: string): ModuleInfo | undefined;
|
|
17
17
|
getPopupMaxWidth(adaptableModule: AdaptableModule): number | undefined;
|
|
@@ -16,6 +16,7 @@ exports.AlertStatusPanel = () => {
|
|
|
16
16
|
const [style, setStyle] = React.useState(initialStyle);
|
|
17
17
|
const dispatch = react_redux_1.useDispatch();
|
|
18
18
|
const module = adaptable.ModuleService.getModuleById(ModuleConstants.AlertModuleId);
|
|
19
|
+
const statusbarHighlightDuration = adaptable.adaptableOptions.alertOptions.statusbarHighlightDuration;
|
|
19
20
|
/**
|
|
20
21
|
* Using a selector to so the component updates each time an alert is triggered.
|
|
21
22
|
*/
|
|
@@ -46,7 +47,7 @@ exports.AlertStatusPanel = () => {
|
|
|
46
47
|
*/
|
|
47
48
|
timeoutId.current = setTimeout(() => {
|
|
48
49
|
setStyle(initialStyle);
|
|
49
|
-
},
|
|
50
|
+
}, statusbarHighlightDuration);
|
|
50
51
|
}, [alerts]);
|
|
51
52
|
// Dropdown content
|
|
52
53
|
const handleDeleteAlert = React.useCallback((alert) => dispatch(SystemRedux.SystemAlertDelete(alert)), []);
|
|
@@ -19,6 +19,7 @@ const ObjectFactory_1 = tslib_1.__importDefault(require("../../../Utilities/Obje
|
|
|
19
19
|
const react_redux_1 = require("react-redux");
|
|
20
20
|
const AlertRedux = tslib_1.__importStar(require("../../../Redux/ActionsReducers/AlertRedux"));
|
|
21
21
|
const AdaptableContext_1 = require("../../AdaptableContext");
|
|
22
|
+
const ObjectTagsWizardSection_1 = require("../../Wizard/ObjectTagsWizardSection");
|
|
22
23
|
exports.AlertWizard = (props) => {
|
|
23
24
|
const [alertDefinition, setAlertDefinition] = react_1.useState(() => {
|
|
24
25
|
var _a;
|
|
@@ -159,6 +160,14 @@ exports.AlertWizard = (props) => {
|
|
|
159
160
|
React.createElement(AlertBehaviourWizardSection_1.AlertBehaviourWizardSection, { onChange: setAlertDefinition }))),
|
|
160
161
|
renderSummary: AlertBehaviourWizardSection_1.renderAlertBehaviourSummary,
|
|
161
162
|
},
|
|
163
|
+
{
|
|
164
|
+
details: 'Select Alert tags',
|
|
165
|
+
title: 'Tags',
|
|
166
|
+
isVisible: () => api.internalApi.shouldDisplayTagSections(),
|
|
167
|
+
render: () => (React.createElement(rebass_1.Box, { padding: 2 },
|
|
168
|
+
React.createElement(ObjectTagsWizardSection_1.ObjectTagsWizardSection, { onChange: setAlertDefinition }))),
|
|
169
|
+
renderSummary: ObjectTagsWizardSection_1.renderObjectTagsSummary,
|
|
170
|
+
},
|
|
162
171
|
'-',
|
|
163
172
|
{
|
|
164
173
|
details: 'Review your Alert',
|
|
@@ -13,6 +13,7 @@ const AdaptableContext_1 = require("../../AdaptableContext");
|
|
|
13
13
|
const ObjectFactory_1 = tslib_1.__importDefault(require("../../../Utilities/ObjectFactory"));
|
|
14
14
|
const react_redux_1 = require("react-redux");
|
|
15
15
|
const CalculatedColumnRedux = tslib_1.__importStar(require("../../../Redux/ActionsReducers/CalculatedColumnRedux"));
|
|
16
|
+
const ObjectTagsWizardSection_1 = require("../../Wizard/ObjectTagsWizardSection");
|
|
16
17
|
exports.CalculatedColumnWizard = (props) => {
|
|
17
18
|
var _a;
|
|
18
19
|
const adaptable = AdaptableContext_1.useAdaptable();
|
|
@@ -61,6 +62,14 @@ exports.CalculatedColumnWizard = (props) => {
|
|
|
61
62
|
React.createElement(CalculatedColumnSettingsWizardSection_1.CalculatedColumnSettingsWizardSection, { isEdit: isEdit, onChange: setCalculatedColumn })));
|
|
62
63
|
},
|
|
63
64
|
},
|
|
65
|
+
{
|
|
66
|
+
details: 'Select Calculated Column tags',
|
|
67
|
+
title: 'Tags',
|
|
68
|
+
isVisible: () => adaptable.api.internalApi.shouldDisplayTagSections(),
|
|
69
|
+
render: () => (React.createElement(rebass_1.Box, { padding: 2 },
|
|
70
|
+
React.createElement(ObjectTagsWizardSection_1.ObjectTagsWizardSection, { onChange: setCalculatedColumn }))),
|
|
71
|
+
renderSummary: ObjectTagsWizardSection_1.renderObjectTagsSummary,
|
|
72
|
+
},
|
|
64
73
|
'-',
|
|
65
74
|
{
|
|
66
75
|
render: () => {
|
|
@@ -146,7 +146,7 @@ class FilterFormComponent extends React.Component {
|
|
|
146
146
|
' ',
|
|
147
147
|
this.state.showTab && React.createElement("hr", null),
|
|
148
148
|
predicateDefs
|
|
149
|
-
.filter((p) => p.id
|
|
149
|
+
.filter((p) => p.id !== 'Values' && p.id !== 'ExcludeValues')
|
|
150
150
|
.map((predicateDef, index) => this.renderColumnPredicate(predicateDef, index)))))))) : (React.createElement(HelpBlock_1.default, null, isFilterable))));
|
|
151
151
|
}
|
|
152
152
|
renderColumnPredicate(predicateDef, index) {
|
|
@@ -52,7 +52,7 @@ class QuickFilterFormComponent extends React.Component {
|
|
|
52
52
|
}
|
|
53
53
|
componentDidMount() {
|
|
54
54
|
var _a, _b;
|
|
55
|
-
if (((_b = (_a = this.state) === null || _a === void 0 ? void 0 : _a.filter) === null || _b === void 0 ? void 0 : _b.Predicate
|
|
55
|
+
if (this.hasValuesPredicate((_b = (_a = this.state) === null || _a === void 0 ? void 0 : _a.filter) === null || _b === void 0 ? void 0 : _b.Predicate)) {
|
|
56
56
|
this.loadPermittedValues();
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -65,7 +65,7 @@ class QuickFilterFormComponent extends React.Component {
|
|
|
65
65
|
return;
|
|
66
66
|
}
|
|
67
67
|
this.setState({ filter });
|
|
68
|
-
if ((filter === null || filter === void 0 ? void 0 : filter.Predicate)
|
|
68
|
+
if (this.hasValuesPredicate(filter === null || filter === void 0 ? void 0 : filter.Predicate)) {
|
|
69
69
|
this.setState({ isDistinctColumnValuesLoading: true });
|
|
70
70
|
this.loadPermittedValues();
|
|
71
71
|
}
|
|
@@ -138,7 +138,7 @@ class QuickFilterFormComponent extends React.Component {
|
|
|
138
138
|
showQuickFilterInput && this.renderPredicateInput(activePredicateDef, filter)));
|
|
139
139
|
}
|
|
140
140
|
renderLabel(filter, activePredicateDef) {
|
|
141
|
-
if ((filter === null || filter === void 0 ? void 0 : filter.Predicate
|
|
141
|
+
if (this.hasValuesPredicate(filter === null || filter === void 0 ? void 0 : filter.Predicate)) {
|
|
142
142
|
if (ArrayExtensions_1.default.IsNullOrEmpty(filter.Predicate.Inputs) &&
|
|
143
143
|
ArrayExtensions_1.default.IsNullOrEmptyOrContainsSingleEmptyValue(this.state.distinctColumnValues)) {
|
|
144
144
|
return this.renderNoValuesDropdown(filter);
|
|
@@ -238,7 +238,7 @@ class QuickFilterFormComponent extends React.Component {
|
|
|
238
238
|
React.createElement(SimpleButton_1.default, { onClick: () => this.clearFilter() }, "Clear Filter"),
|
|
239
239
|
((_a = this.props.api.internalApi.getAdaptableOptions().filterOptions) === null || _a === void 0 ? void 0 : _a.autoApplyFilter) ==
|
|
240
240
|
false && (React.createElement(SimpleButton_1.default, { ml: 2, onClick: () => this.updateFilter(this.state.filter) }, "Apply Filter"))),
|
|
241
|
-
React.createElement(ListBoxFilterForm_1.ListBoxFilterForm, { suppressClientSideFilter: this.state.suppressClientSideFilter, isLoading: this.state.isDistinctColumnValuesLoading, onFilterChange: this.handleFilterChange, currentColumn: this.props.currentColumn, columns: [], columnDistinctValues: this.state.distinctColumnValues, dataType: this.props.currentColumn.dataType, uiSelectedColumnValues: this.state.filter.Predicate.Inputs, useAgGridStyle: true, onColumnValueSelectedChange: (list) => this.onColumnValuesChange(list) })));
|
|
241
|
+
React.createElement(ListBoxFilterForm_1.ListBoxFilterForm, { suppressClientSideFilter: this.state.suppressClientSideFilter, isLoading: this.state.isDistinctColumnValuesLoading, onFilterChange: this.handleFilterChange, currentColumn: this.props.currentColumn, columns: [], columnDistinctValues: this.state.distinctColumnValues, dataType: this.props.currentColumn.dataType, uiSelectedColumnValues: this.state.filter.Predicate.Inputs.filter((input) => input !== ''), useAgGridStyle: true, onColumnValueSelectedChange: (list) => this.onColumnValuesChange(list) })));
|
|
242
242
|
} },
|
|
243
243
|
React.createElement(SimpleButton_1.default, { style: {
|
|
244
244
|
flex: 1,
|
|
@@ -248,12 +248,13 @@ class QuickFilterFormComponent extends React.Component {
|
|
|
248
248
|
borderRadius: 0,
|
|
249
249
|
borderLeftWidth: 0,
|
|
250
250
|
borderColor: 'var(--ab-color-primarydark)',
|
|
251
|
-
}, disabled: ArrayExtensions_1.default.IsNullOrEmptyOrContainsSingleEmptyValue(this.state.distinctColumnValues) }, filter.Predicate.Inputs.join(', ') ||
|
|
251
|
+
}, disabled: ArrayExtensions_1.default.IsNullOrEmptyOrContainsSingleEmptyValue(this.state.distinctColumnValues) }, filter.Predicate.Inputs.join(', ') ||
|
|
252
|
+
(filter.Predicate.PredicateId === 'Values' ? 'Select Values' : 'Exclude Values'))));
|
|
252
253
|
}
|
|
253
254
|
onColumnValuesChange(columnValues) {
|
|
254
255
|
var _a;
|
|
255
256
|
const { filter } = this.state;
|
|
256
|
-
filter.Predicate = { PredicateId:
|
|
257
|
+
filter.Predicate = { PredicateId: filter.Predicate.PredicateId, Inputs: columnValues };
|
|
257
258
|
if ((_a = this.props.api.internalApi.getAdaptableOptions().filterOptions) === null || _a === void 0 ? void 0 : _a.autoApplyFilter) {
|
|
258
259
|
this.updateFilter(filter);
|
|
259
260
|
}
|
|
@@ -270,7 +271,7 @@ class QuickFilterFormComponent extends React.Component {
|
|
|
270
271
|
Inputs: ((_a = predicateDef.inputs) !== null && _a !== void 0 ? _a : []).map((i) => { var _a; return (_a = i.defaultValue) !== null && _a !== void 0 ? _a : ''; }),
|
|
271
272
|
};
|
|
272
273
|
this.updateFilter(filter);
|
|
273
|
-
if (predicateId === 'Values') {
|
|
274
|
+
if (predicateId === 'Values' || predicateId === 'ExcludeValues') {
|
|
274
275
|
this.loadPermittedValues();
|
|
275
276
|
requestAnimationFrame(() => {
|
|
276
277
|
if (this.valuesDropdown) {
|
|
@@ -308,6 +309,9 @@ class QuickFilterFormComponent extends React.Component {
|
|
|
308
309
|
const { filter } = this.state;
|
|
309
310
|
this.props.api.filterApi.clearColumnFilterByColumn(filter.ColumnId);
|
|
310
311
|
}
|
|
312
|
+
hasValuesPredicate(predicate) {
|
|
313
|
+
return (predicate === null || predicate === void 0 ? void 0 : predicate.PredicateId) === 'Values' || (predicate === null || predicate === void 0 ? void 0 : predicate.PredicateId) === 'ExcludeValues';
|
|
314
|
+
}
|
|
311
315
|
}
|
|
312
316
|
function mapStateToProps(state, ownProps) {
|
|
313
317
|
return {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { AdaptableColumn } from '../../../PredefinedConfig/Common/AdaptableColumn';
|
|
2
2
|
import { SystemFilterPredicateId } from '../../../PredefinedConfig/FilterState';
|
|
3
|
-
export declare const getDefaultColumnFilterPredicate: (column: AdaptableColumn, defaultColumnFilter: "Before" | "After" | "
|
|
3
|
+
export declare const getDefaultColumnFilterPredicate: (column: AdaptableColumn, defaultColumnFilter: "Before" | "After" | "Blanks" | "NonBlanks" | "Equals" | "NotEquals" | "GreaterThan" | "LessThan" | "Positive" | "Negative" | "Zero" | "Between" | "NotBetween" | "Is" | "IsNot" | "Contains" | "NotContains" | "StartsWith" | "EndsWith" | "Regex" | "Today" | "Yesterday" | "Tomorrow" | "ThisWeek" | "ThisMonth" | "ThisQuarter" | "ThisYear" | "InPast" | "InFuture" | "On" | "NotOn" | "NextWorkDay" | "LastWorkDay" | "True" | "False" | "Values" | "ExcludeValues" | "InRange" | "BooleanToggle" | ((column: AdaptableColumn) => SystemFilterPredicateId)) => SystemFilterPredicateId;
|
|
@@ -9,7 +9,9 @@ const react_toastify_1 = require("react-toastify");
|
|
|
9
9
|
exports.showToast = (props) => {
|
|
10
10
|
const toastProps = ObjectFactory_1.default.CreateToastOptions(props.api.internalApi.getAdaptableOptions().notificationsOptions, {
|
|
11
11
|
onClose: () => {
|
|
12
|
-
props.api.
|
|
12
|
+
if (!props.api.isDestroyed()) {
|
|
13
|
+
props.api.internalApi.hidePopupAlert();
|
|
14
|
+
}
|
|
13
15
|
},
|
|
14
16
|
});
|
|
15
17
|
const content = (React.createElement(AdaptablePopupAlert_1.AdaptablePopupAlert, Object.assign({ headless: true }, props, { onClose: () => {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { AdaptableForm,
|
|
2
|
+
import { AdaptableForm, BaseContext } from '../../../../../types';
|
|
3
3
|
export interface FormDialogProps {
|
|
4
4
|
id: string;
|
|
5
5
|
formProps: any;
|
|
6
|
-
prepareContext: (context:
|
|
7
|
-
form: AdaptableForm<
|
|
6
|
+
prepareContext: (context: BaseContext) => Promise<BaseContext> | BaseContext;
|
|
7
|
+
form: AdaptableForm<BaseContext>;
|
|
8
8
|
}
|
|
9
9
|
export declare const FormDialog: React.FunctionComponent<FormDialogProps>;
|
|
10
10
|
export declare const FormPopups: React.FunctionComponent;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ValueSelectorProps } from '../ValueSelector';
|
|
3
|
+
import { AdaptableObjectTag } from '../../../PredefinedConfig/Common/AdaptableObject';
|
|
4
|
+
export interface TagsSelectorProps extends Omit<ValueSelectorProps<AdaptableObjectTag, string | number>, 'options' | 'value' | 'onChange' | 'allowReorder' | 'toIdentifier' | 'toLabel' | 'selectionBoxPosition' | 'noSelectionLabel' | 'xSelectedLabel'> {
|
|
5
|
+
availableTags?: AdaptableObjectTag[];
|
|
6
|
+
selectedTags?: AdaptableObjectTag[];
|
|
7
|
+
onChange: (selectedTags: AdaptableObjectTag[]) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const TagValueSelector: (props: TagsSelectorProps) => JSX.Element;
|
|
10
|
+
export interface TagValueOptionsTagsProps {
|
|
11
|
+
tags?: AdaptableObjectTag[];
|
|
12
|
+
}
|
|
13
|
+
export declare const TagValueOptionsTags: (props: TagValueOptionsTagsProps) => JSX.Element;
|