UNPKG

@adaptabletools/adaptable

Version:

Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

386 lines (385 loc) 18.8 kB
import * as GeneralConstants from '../Utilities/Constants/GeneralConstants'; import UIHelper, { getHexForName, GRAY, GREEN, RED } from '../View/UIHelper'; import { EMPTY_STRING, EMPTY_ARRAY, DEFAULT_DATE_FORMAT_PATTERN_WITH_TIME, SYSTEM_REPORT_NAMES, SYSTEM_REPORT_FORMATS, SYSTEM_EXPORT_DESTINATIONS, } from '../Utilities/Constants/GeneralConstants'; import { SystemAlertPredicateIds, SystemBadgeStylePredicateIds, SystemFilterPredicateIds, SystemFlashingCellPredicateIds, SystemFormatColumnPredicateIds, } from '../AdaptableState/Common/AdaptablePredicate'; import * as ModuleConstants from '../Utilities/Constants/ModuleConstants'; import { addUuidsToInitialState } from '../Utilities/Helpers/AdaptableHelper'; const DefaultAdaptableOptions = { adaptableId: GeneralConstants.ADAPTABLE_ID, adaptableStateKey: undefined, primaryKey: EMPTY_STRING, autogeneratePrimaryKey: false, userName: 'anonymous', initialState: undefined, adaptableContext: {}, actionColumnOptions: { actionColumns: undefined, }, alertOptions: { alertForms: undefined, maxAlertsInStore: 20, cellHighlightDuration: 2000, rowHighlightDuration: 4000, statusbarHighlightDuration: 2000, dataChangeDetectionPolicy: 'rawValue', commandHandlers: undefined, alertMessageText: undefined, showMissingPrimaryKeyAlert: false, }, calendarOptions: { holidays: undefined }, cellSummaryOptions: { customCellSummaryOperations: undefined, numericDisplayFormat: { FractionDigits: 2, }, }, chartingOptions: { saveChartBehaviour: 'none', agGridContainerName: GeneralConstants.AG_GRID_CHART_WINDOW, externalChartingOptions: {}, }, columnOptions: { columnFriendlyName: undefined, columnTypes: EMPTY_ARRAY, showMissingColumnsWarning: true, addColumnGroupToColumnFriendlyName: false, }, columnMenuOptions: { customColumnMenu: undefined, }, commentOptions: { showPopupCloseButton: true, dateFormat: DEFAULT_DATE_FORMAT_PATTERN_WITH_TIME, }, containerOptions: { adaptableContainer: 'adaptable', agGridContainer: 'grid', modalContainer: undefined, systemStatusContainer: undefined, alertContainer: undefined, }, contextMenuOptions: { customContextMenu: undefined, }, customSortOptions: { customSortComparers: undefined }, dashboardOptions: { canFloat: true, showQuickSearchInHeader: true, customDashboardButtons: undefined, customToolbars: undefined, buttonsLocation: 'right', }, dataChangeHistoryOptions: { activeByDefault: false, showDataChange: undefined, changeHistoryButton: undefined, showLastDataChangeOnly: true, }, dataImportOptions: { fileHandlers: undefined, }, dataSetOptions: { dataSets: EMPTY_ARRAY }, editOptions: { validateOnServer: undefined, displayServerValidationMessages: true, isCellEditable: undefined, smartEditCustomOperations: undefined, customEditColumnValues: undefined, }, entitlementOptions: { defaultAccessLevel: 'Full', moduleEntitlements: undefined, }, exportOptions: { exportDataFormat: 'rawValue', exportDateFormat: undefined, customDestinations: undefined, processExport: undefined, appendFileTimestamp: false, systemReportNames: SYSTEM_REPORT_NAMES, systemReportFormats: SYSTEM_REPORT_FORMATS, systemExportDestinations: SYSTEM_EXPORT_DESTINATIONS, reportFilename: undefined, csvSeparator: ',', skipColumnHeaders: false, }, expressionOptions: { evaluateAdaptableQLExternally: undefined, displayColumnFriendlyNamesForExpressions: true, systemBooleanFunctions: undefined, systemScalarFunctions: undefined, systemObservableFunctions: undefined, systemAggregatedBooleanFunctions: undefined, systemAggregatedScalarFunctions: undefined, moduleExpressionFunctions: undefined, performExpressionValidation: true, maxTimeframeSize: 28800000, // 8 hours caseSensitiveExpressions: false, }, fdc3Options: { enableLogging: false, actionColumnDefaultConfiguration: { columnId: 'fdc3ActionColumn', headerName: 'FDC3 Actions', width: 200, resizable: true, movable: false, rowScope: { ExcludeDataRows: false, ExcludeGroupRows: true, ExcludeSummaryRows: true, }, }, uiControlsDefaultConfiguration: { // default config is set in FDC3 Service, to make it easier to overview contexts: {}, intents: {}, }, }, filterOptions: { filterActionOnDataChange: { applyFilter: 'Always', throttleDelay: 0, }, clearFiltersOnStartUp: false, enableFilterOnSpecialColumns: true, useAdaptableFiltering: true, showDatePicker: true, columnFilterOptions: { indicateFilteredColumns: true, autoApplyColumnFilter: true, defaultNumericColumnFilter: 'Equals', defaultTextColumnFilter: 'Contains', defaultDateColumnFilter: 'On', hideQuickFilterDropdown: undefined, hideQuickFilterInput: undefined, quickFilterDebounce: 250, quickFilterHeight: null, showQuickFilter: true, quickFilterWildcards: {}, }, gridFilterOptions: { availableFilterEditors: ['ExpressionEditor', 'QueryBuilder'], }, }, flashingCellOptions: { defaultFlashDuration: 500, defaultFlashTarget: 'cell', defaultDownChangeStyle: { BackColor: getHexForName(RED), }, defaultUpChangeStyle: { BackColor: getHexForName(GREEN), }, defaultNeutralChangeStyle: { BackColor: getHexForName(GRAY), }, }, formatColumnOptions: { customDisplayFormatters: undefined, }, layoutOptions: { layoutViewOptions: { maxColumnsToDisplay: 10, }, layoutTagOptions: { autoGenerateTagsForLayouts: false, isObjectAvailableInLayout: undefined, autoCheckTagsForLayouts: false, }, }, noteOptions: { showPopupCloseButton: true, dateFormat: DEFAULT_DATE_FORMAT_PATTERN_WITH_TIME, }, notificationsOptions: { maxNotifications: 3, position: 'BottomRight', duration: 3000, showProgressBar: false, closeWhenClicked: false, pauseWhenHovering: false, isDraggable: false, transition: 'Slide', showApplicationIcon: false, showSystemStatusMessageNotifications: false, maxSystemMessagesInStore: 100, }, predicateOptions: { customPredicateDefs: [], systemFilterPredicates: SystemFilterPredicateIds, systemAlertPredicates: SystemAlertPredicateIds, systemFormatColumnPredicates: SystemFormatColumnPredicateIds, systemFlashingCellPredicates: SystemFlashingCellPredicateIds, systemBadgeStylePredicates: SystemBadgeStylePredicateIds, caseSensitivePredicates: false, evaluateValuesPredicateUsingTime: true, }, quickSearchOptions: { clearQuickSearchOnStartUp: false, quickSearchPlaceholder: 'Search', filterGridAfterQuickSearch: false, isQuickSearchCaseSensitive: false, runCustomQuickSearch: undefined, }, rowFormOptions: { autoHandle: true, disableInlineEditing: false, setPrimaryKeyValue: undefined, rowFormTitle: undefined, rowFormDescription: undefined, rowFormFieldLabel: undefined, rowFormButtons: undefined, onRowFormSubmit: undefined, includeColumnInRowForm: undefined, }, settingsPanelOptions: { popupType: 'modal', title: ModuleConstants.SettingsPanelFriendlyName, icon: 'ConfigurationIcon', navigation: {}, alwaysShowInDashboard: false, alwaysShowInToolPanel: false, showModuleIcons: true, }, stateOptions: { debounceStateDelay: 400, applyState: (state) => state, saveState: (state) => state, loadState: undefined, persistState: undefined, clearState: undefined, autoMigrateState: true, }, teamSharingOptions: { enableTeamSharing: false, persistSharedEntities: undefined, loadSharedEntities: undefined, applySharedEntities: (sharedEntities) => sharedEntities, saveSharedEntities: (sharedEntities) => sharedEntities, updateInterval: 0, updateNotification: undefined, suppressOverrideConfigWarning: false, showUpdateNotificationOncePerUpdate: false, }, toolPanelOptions: { showToolPanelsDropdown: true, customButtons: undefined, customToolPanels: undefined, }, userInterfaceOptions: { alternativeModuleNames: undefined, applicationIcon: undefined, useCustomMacLikeScrollbars: false, loadingScreenOptions: { showLoadingScreen: true, loadingScreenDelay: 200, loadingScreenTitle: 'Initialising Grid', loadingScreenText: 'Retrieving your settings and setting up the grid...', }, englishVariant: 'GB', disableDeleteConfirmation: false, dateInputOptions: { useNativeInput: false, dateFormat: 'yyyy-MM-dd', // locale is not explicitly defaulted to 'en-US' as this is already done by the react-day-picker showWeekNumber: false, showOutsideDays: true, datepickerButtons: ['close', 'today'], }, colorPalette: UIHelper.getDefaultColors(), editableCellStyle: undefined, readOnlyCellStyle: undefined, editedCellStyle: undefined, styleClassNames: EMPTY_ARRAY, showDocumentationLinks: true, showAdapTableVersion: true, showAgGridVersion: true, }, }; export function applyDefaultAdaptableOptions(adaptableOptions) { const adaptableOptsWithDefaults = Object.assign({}, DefaultAdaptableOptions, adaptableOptions); adaptableOptsWithDefaults.adaptableStateKey = adaptableOptsWithDefaults.adaptableStateKey ?? adaptableOptsWithDefaults.adaptableId; // action column options adaptableOptsWithDefaults.actionColumnOptions = Object.assign({}, DefaultAdaptableOptions.actionColumnOptions, adaptableOptions.actionColumnOptions); // action column options adaptableOptsWithDefaults.rowFormOptions = Object.assign({}, DefaultAdaptableOptions.rowFormOptions, adaptableOptions.rowFormOptions); // alert options adaptableOptsWithDefaults.alertOptions = Object.assign({}, DefaultAdaptableOptions.alertOptions, adaptableOptions.alertOptions); // calendar options adaptableOptsWithDefaults.calendarOptions = Object.assign({}, DefaultAdaptableOptions.calendarOptions, adaptableOptions.calendarOptions); // cell summary options adaptableOptsWithDefaults.cellSummaryOptions = Object.assign({}, DefaultAdaptableOptions.cellSummaryOptions, adaptableOptions.cellSummaryOptions); // charting options adaptableOptsWithDefaults.chartingOptions = Object.assign({}, DefaultAdaptableOptions.chartingOptions, adaptableOptions.chartingOptions); adaptableOptsWithDefaults.chartingOptions.externalChartingOptions = Object.assign({}, DefaultAdaptableOptions.chartingOptions.externalChartingOptions, adaptableOptsWithDefaults.chartingOptions.externalChartingOptions); // column options adaptableOptsWithDefaults.columnOptions = Object.assign({}, DefaultAdaptableOptions.columnOptions, adaptableOptions.columnOptions); // TEMP filter options adaptableOptsWithDefaults.filterOptions = Object.assign({}, DefaultAdaptableOptions.filterOptions, adaptableOptions.filterOptions); adaptableOptsWithDefaults.filterOptions.columnFilterOptions = Object.assign({}, DefaultAdaptableOptions.filterOptions.columnFilterOptions, adaptableOptsWithDefaults.filterOptions.columnFilterOptions); adaptableOptsWithDefaults.filterOptions.gridFilterOptions = Object.assign({}, DefaultAdaptableOptions.filterOptions.gridFilterOptions, adaptableOptsWithDefaults.filterOptions.gridFilterOptions); // column menu options adaptableOptsWithDefaults.columnMenuOptions = Object.assign({}, DefaultAdaptableOptions.columnMenuOptions, adaptableOptions.columnMenuOptions); // comment options adaptableOptsWithDefaults.commentOptions = Object.assign({}, DefaultAdaptableOptions.commentOptions, adaptableOptions.commentOptions); // container options adaptableOptsWithDefaults.containerOptions = Object.assign({}, DefaultAdaptableOptions.containerOptions, adaptableOptions.containerOptions); // context menu options adaptableOptsWithDefaults.contextMenuOptions = Object.assign({}, DefaultAdaptableOptions.contextMenuOptions, adaptableOptions.contextMenuOptions); // custom sort options adaptableOptsWithDefaults.customSortOptions = Object.assign({}, DefaultAdaptableOptions.customSortOptions, adaptableOptions.customSortOptions); // dashboard options adaptableOptsWithDefaults.dashboardOptions = Object.assign({}, DefaultAdaptableOptions.dashboardOptions, adaptableOptions.dashboardOptions); // data import options adaptableOptsWithDefaults.dataImportOptions = Object.assign({}, DefaultAdaptableOptions.dataImportOptions, adaptableOptions.dataImportOptions); // data change history options adaptableOptsWithDefaults.dataChangeHistoryOptions = Object.assign({}, DefaultAdaptableOptions.dataChangeHistoryOptions, adaptableOptions.dataChangeHistoryOptions); // data set options adaptableOptsWithDefaults.dataSetOptions = Object.assign({}, DefaultAdaptableOptions.dataSetOptions, adaptableOptions.dataSetOptions); // edit options adaptableOptsWithDefaults.editOptions = Object.assign({}, DefaultAdaptableOptions.editOptions, adaptableOptions.editOptions); // entitlement options adaptableOptsWithDefaults.entitlementOptions = Object.assign({}, DefaultAdaptableOptions.entitlementOptions, adaptableOptions.entitlementOptions); // export options adaptableOptsWithDefaults.exportOptions = Object.assign({}, DefaultAdaptableOptions.exportOptions, adaptableOptions.exportOptions); // expression options adaptableOptsWithDefaults.expressionOptions = Object.assign({}, DefaultAdaptableOptions.expressionOptions, adaptableOptions.expressionOptions); // fdc3 options adaptableOptsWithDefaults.fdc3Options = Object.assign({}, DefaultAdaptableOptions.fdc3Options, adaptableOptions.fdc3Options); adaptableOptsWithDefaults.fdc3Options.actionColumnDefaultConfiguration = Object.assign({}, DefaultAdaptableOptions.fdc3Options.actionColumnDefaultConfiguration, adaptableOptsWithDefaults.fdc3Options.actionColumnDefaultConfiguration); adaptableOptsWithDefaults.fdc3Options.uiControlsDefaultConfiguration = Object.assign({}, DefaultAdaptableOptions.fdc3Options.uiControlsDefaultConfiguration, adaptableOptsWithDefaults.fdc3Options.uiControlsDefaultConfiguration); // flashing cell options adaptableOptsWithDefaults.flashingCellOptions = Object.assign({}, DefaultAdaptableOptions.flashingCellOptions, adaptableOptions.flashingCellOptions); // format column options adaptableOptsWithDefaults.formatColumnOptions = Object.assign({}, DefaultAdaptableOptions.formatColumnOptions, adaptableOptions.formatColumnOptions); // layout options adaptableOptsWithDefaults.layoutOptions = Object.assign({}, DefaultAdaptableOptions.layoutOptions, adaptableOptions.layoutOptions); adaptableOptsWithDefaults.layoutOptions.layoutTagOptions = Object.assign({}, DefaultAdaptableOptions.layoutOptions.layoutTagOptions, adaptableOptsWithDefaults.layoutOptions.layoutTagOptions); adaptableOptsWithDefaults.layoutOptions.layoutViewOptions = Object.assign({}, DefaultAdaptableOptions.layoutOptions.layoutViewOptions, adaptableOptsWithDefaults.layoutOptions.layoutViewOptions); // note options adaptableOptsWithDefaults.noteOptions = Object.assign({}, DefaultAdaptableOptions.noteOptions, adaptableOptions.noteOptions); // notification options adaptableOptsWithDefaults.notificationsOptions = Object.assign({}, DefaultAdaptableOptions.notificationsOptions, adaptableOptions.notificationsOptions); // predicate options adaptableOptsWithDefaults.predicateOptions = Object.assign({}, DefaultAdaptableOptions.predicateOptions, adaptableOptsWithDefaults.predicateOptions); // quick search options adaptableOptsWithDefaults.quickSearchOptions = Object.assign({}, DefaultAdaptableOptions.quickSearchOptions, adaptableOptions.quickSearchOptions); // settings panel options adaptableOptsWithDefaults.settingsPanelOptions = Object.assign({}, DefaultAdaptableOptions.settingsPanelOptions, adaptableOptions.settingsPanelOptions); // state optoins adaptableOptsWithDefaults.stateOptions = Object.assign({}, DefaultAdaptableOptions.stateOptions, adaptableOptions.stateOptions); // team sharing options adaptableOptsWithDefaults.teamSharingOptions = Object.assign({}, DefaultAdaptableOptions.teamSharingOptions, adaptableOptions.teamSharingOptions); // tool panel adaptableOptsWithDefaults.toolPanelOptions = Object.assign({}, DefaultAdaptableOptions.toolPanelOptions, adaptableOptions.toolPanelOptions); // user interface options adaptableOptsWithDefaults.userInterfaceOptions = Object.assign({}, DefaultAdaptableOptions.userInterfaceOptions, adaptableOptions.userInterfaceOptions); adaptableOptsWithDefaults.userInterfaceOptions.loadingScreenOptions = Object.assign({}, DefaultAdaptableOptions.userInterfaceOptions.loadingScreenOptions, adaptableOptsWithDefaults.userInterfaceOptions.loadingScreenOptions); adaptableOptsWithDefaults.userInterfaceOptions.dateInputOptions = Object.assign({}, DefaultAdaptableOptions.userInterfaceOptions.dateInputOptions, adaptableOptsWithDefaults.userInterfaceOptions.dateInputOptions); const { initialState } = adaptableOptsWithDefaults; adaptableOptsWithDefaults.initialState = addUuidsToInitialState(initialState); return adaptableOptsWithDefaults; } export const getDefaultAdaptableOptions = () => DefaultAdaptableOptions;