@adaptabletools/adaptable 23.0.0-canary.4 → 23.0.0-canary.6
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/index.css +117 -62
- package/package.json +9 -4
- package/src/AdaptableOptions/EditOptions.d.ts +2 -2
- package/src/AdaptableState/Common/AggregationColumns.d.ts +14 -6
- package/src/AdaptableState/Common/AggregationColumns.js +27 -2
- package/src/AdaptableState/Common/ColumnScope.d.ts +4 -0
- package/src/AdaptableState/Common/Enums.d.ts +5 -5
- package/src/AdaptableState/Common/Enums.js +4 -4
- package/src/AdaptableState/PlusMinusState.d.ts +3 -3
- package/src/AdaptableState/ShortcutState.d.ts +2 -6
- package/src/AdaptableState/StyledColumnState.d.ts +3 -5
- package/src/AdaptableState/ThemeState.d.ts +33 -28
- package/src/Api/EventApi.d.ts +14 -1
- package/src/Api/Events/ThemeChanged.d.ts +6 -0
- package/src/Api/Events/ThemeSelected.d.ts +11 -0
- package/src/Api/Events/ThemeSelected.js +1 -0
- package/src/Api/Implementation/EventApiImpl.js +4 -0
- package/src/Api/Implementation/LayoutApiImpl.d.ts +0 -2
- package/src/Api/Implementation/LayoutApiImpl.js +0 -14
- package/src/Api/Implementation/LayoutHelpers.d.ts +2 -0
- package/src/Api/Implementation/LayoutHelpers.js +17 -7
- package/src/Api/Implementation/ThemeApiImpl.d.ts +3 -2
- package/src/Api/Implementation/ThemeApiImpl.js +19 -15
- package/src/Api/Internal/EventInternalApi.d.ts +2 -0
- package/src/Api/Internal/EventInternalApi.js +8 -1
- package/src/Api/Internal/StyledColumnInternalApi.d.ts +4 -4
- package/src/Api/Internal/StyledColumnInternalApi.js +4 -4
- package/src/Api/Internal/ThemeInternalApi.d.ts +0 -1
- package/src/Api/Internal/ThemeInternalApi.js +0 -10
- package/src/Api/LayoutApi.d.ts +1 -8
- package/src/Api/ThemeApi.d.ts +6 -2
- package/src/Redux/ActionsReducers/ThemeRedux.d.ts +3 -3
- package/src/Strategy/FormatColumnModule.js +14 -7
- package/src/Strategy/LayoutModule.js +13 -8
- package/src/Strategy/StyledColumnModule.js +64 -36
- package/src/Utilities/Constants/ReduxConstants.d.ts +2 -2
- package/src/Utilities/Constants/ReduxConstants.js +1 -14
- package/src/Utilities/Helpers/FormatHelper.js +20 -1
- package/src/Utilities/Helpers/SparklineOptionsHelper.d.ts +7 -0
- package/src/Utilities/Helpers/SparklineOptionsHelper.js +65 -0
- package/src/Utilities/Helpers/StyledColumnGradientHelper.d.ts +23 -1
- package/src/Utilities/Helpers/StyledColumnGradientHelper.js +204 -0
- package/src/Utilities/Helpers/ThemeHelpers.d.ts +5 -0
- package/src/Utilities/Helpers/ThemeHelpers.js +38 -0
- package/src/Utilities/Helpers/percentBarPreviewHelper.d.ts +19 -0
- package/src/Utilities/Helpers/percentBarPreviewHelper.js +143 -0
- package/src/Utilities/ObjectFactory.d.ts +1 -3
- package/src/Utilities/ObjectFactory.js +0 -8
- package/src/Utilities/Services/ThemeService.js +1 -1
- package/src/View/Alert/Wizard/AlertBehaviourWizardSection.js +17 -16
- package/src/View/Alert/Wizard/AlertButtonsEditor.js +114 -103
- package/src/View/Alert/Wizard/AlertMessageWizardSection.js +13 -14
- package/src/View/Alert/Wizard/AlertNotificationWizardSection.js +55 -55
- package/src/View/Alert/Wizard/AlertRulesWizardSection.js +3 -2
- package/src/View/Alert/Wizard/AlertScheduledWizardSection.js +2 -2
- package/src/View/Alert/Wizard/AlertScopeWizardSection.js +31 -39
- package/src/View/Alert/Wizard/AlertTypeWizardSection.js +3 -4
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnDefinitionWizardSection.js +9 -13
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +30 -17
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +7 -9
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnTypeSection.js +3 -3
- package/src/View/CellSummary/CellSummaryViewPanel.js +1 -1
- package/src/View/Charting/ChartingWizard/AgChargingWizard/AgChargingWizard.js +3 -10
- package/src/View/Charting/ChartingWizard/AgChargingWizard/PreviewChartSection.js +1 -1
- package/src/View/Charting/ChartingWizard/AgChargingWizard/SettingsSection.js +32 -41
- package/src/View/Charting/ChartingWizard/ExternalChartingWizard/ExternalChartingWizard.js +4 -31
- package/src/View/Charting/ChartingWizard/ExternalChartingWizard/PreviewChartSection.d.ts +5 -0
- package/src/View/Charting/ChartingWizard/ExternalChartingWizard/PreviewChartSection.js +21 -0
- package/src/View/Charting/ChartingWizard/ExternalChartingWizard/SettingsSection.d.ts +1 -0
- package/src/View/Charting/ChartingWizard/ExternalChartingWizard/SettingsSection.js +10 -7
- package/src/View/Comments/CommentsEditor.js +1 -1
- package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +0 -1
- package/src/View/Components/ColumnFilter/components/ColumnFilterInputList.js +3 -1
- package/src/View/Components/ModuleProfile.js +1 -1
- package/src/View/Components/Popups/WindowPopups/windowFactory.d.ts +0 -1
- package/src/View/Components/Popups/WindowPopups/windowFactory.js +0 -1
- package/src/View/Components/RangesComponent.d.ts +7 -2
- package/src/View/Components/RangesComponent.js +94 -22
- package/src/View/Components/StyleComponent.d.ts +1 -0
- package/src/View/Components/StyleComponent.js +1 -1
- package/src/View/Components/ValueSelector/index.js +70 -57
- package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +8 -13
- package/src/View/CustomSort/Wizard/CustomSortValuesWizardSection.js +8 -8
- package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +1 -1
- package/src/View/DataImport/DataImportWizard/sections/ColumnsSection.js +11 -12
- package/src/View/DataImport/DataImportWizard/sections/UploadSection/UploadSection.js +6 -4
- package/src/View/DataImport/DataImportWizard/sections/UploadSection/UploadTextSection.js +3 -2
- package/src/View/DataImport/DataImportWizard/sections/ValidationSection.js +5 -15
- package/src/View/Export/Wizard/ReportColumnsWizardSection.js +24 -26
- package/src/View/Export/Wizard/ReportNameWizardSection.js +10 -13
- package/src/View/Export/Wizard/ReportRowsWizardSection.js +20 -22
- package/src/View/Export/Wizard/ScheduledReportSettings.d.ts +2 -0
- package/src/View/Export/Wizard/ScheduledReportSettings.js +13 -13
- package/src/View/Export/Wizard/ScheduledReportWizard.js +4 -5
- package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.js +8 -6
- package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.js +21 -22
- package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +20 -11
- package/src/View/FlashingCell/Wizard/FlashingCellStyleWizardSection.js +21 -5
- package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +4 -4
- package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.d.ts +7 -0
- package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +117 -12
- package/src/View/FormatColumn/Wizard/FormatColumnPreview.d.ts +15 -0
- package/src/View/FormatColumn/Wizard/FormatColumnPreview.js +66 -0
- package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.d.ts +4 -0
- package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +30 -0
- package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +13 -8
- package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +1 -1
- package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.d.ts +3 -1
- package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +62 -13
- package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +5 -3
- package/src/View/FreeTextColumn/Utilities/getFreeTextColumnSettingsTags.d.ts +2 -0
- package/src/View/FreeTextColumn/Utilities/getFreeTextColumnSettingsTags.js +15 -0
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnDefinitionWizardSection.d.ts +10 -0
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnDefinitionWizardSection.js +53 -0
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.d.ts +2 -3
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +33 -68
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnWizard.js +15 -11
- package/src/View/Layout/TransposedPopup.js +2 -2
- package/src/View/Layout/Wizard/LayoutWizard.js +3 -3
- package/src/View/Layout/Wizard/sections/AggregationsSection.d.ts +2 -3
- package/src/View/Layout/Wizard/sections/AggregationsSection.js +115 -26
- package/src/View/Layout/Wizard/sections/ColumnsSection.js +79 -79
- package/src/View/Layout/Wizard/sections/FilterSection.js +31 -32
- package/src/View/Layout/Wizard/sections/GridFilterSection.js +11 -11
- package/src/View/Layout/Wizard/sections/PivotAggregationsSection.d.ts +1 -2
- package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +101 -52
- package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +9 -8
- package/src/View/Layout/Wizard/sections/PivotRowGroupingSection.js +4 -4
- package/src/View/Layout/Wizard/sections/RowGroupingSection.js +36 -33
- package/src/View/Layout/Wizard/sections/RowSelectionSection.js +2 -2
- package/src/View/Layout/Wizard/sections/RowSummarySection.js +95 -73
- package/src/View/Layout/Wizard/sections/SettingsSection.js +4 -5
- package/src/View/Layout/Wizard/sections/SortSection.js +2 -2
- package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +1 -1
- package/src/View/NamedQuery/Wizard/NamedQuerySettingsWizardSection.js +9 -14
- package/src/View/NamedQuery/Wizard/NamedQueryWizard.js +1 -3
- package/src/View/PlusMinus/Wizard/PlusMinusRuleWizardSection.d.ts +4 -0
- package/src/View/PlusMinus/Wizard/PlusMinusRuleWizardSection.js +43 -13
- package/src/View/PlusMinus/Wizard/PlusMinusScopeWizardSection.js +11 -18
- package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.d.ts +2 -6
- package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +6 -22
- package/src/View/PlusMinus/Wizard/PlusMinusWizard.js +15 -21
- package/src/View/Schedule/Wizard/ScheduleScheduleWizard.js +2 -2
- package/src/View/Shortcut/Wizard/ShortcutScopeWizardSection.js +11 -18
- package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.js +17 -6
- package/src/View/Shortcut/Wizard/ShortcutWizard.js +3 -3
- package/src/View/Shortcut/shortcutOperations.d.ts +3 -0
- package/src/View/Shortcut/shortcutOperations.js +28 -0
- package/src/View/SpecialColumnSettingsWizardStep.js +9 -8
- package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.d.ts +5 -0
- package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.js +24 -15
- package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.d.ts +10 -2
- package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.js +96 -16
- package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.d.ts +14 -0
- package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.js +45 -24
- package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.d.ts +2 -3
- package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.js +108 -33
- package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +21 -13
- package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.d.ts +5 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.js +121 -23
- package/src/View/StyledColumn/Wizard/StyledColumnWizardGradientSection.d.ts +1 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardGradientSection.js +34 -11
- package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.d.ts +5 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.js +86 -12
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.d.ts +5 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.js +121 -34
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRatingSection.d.ts +1 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRatingSection.js +55 -75
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/BulletRangesSummaryPreview.d.ts +5 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/BulletRangesSummaryPreview.js +16 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/GradientSummaryPreview.js +7 -13
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarColumnComparisonPreview.js +5 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarRangesPreview.js +4 -3
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarStylePreview.d.ts +5 -4
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarStylePreview.js +12 -14
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/RangeBarRangesSummaryPreview.d.ts +5 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/RangeBarRangesSummaryPreview.js +16 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview.d.ts +3 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview.js +31 -3
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview.d.ts +9 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview.js +58 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnGradientPreview.d.ts +10 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnGradientPreview.js +30 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnIconPreview.d.ts +10 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnIconPreview.js +91 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnPercentBarPreview.d.ts +8 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnPercentBarPreview.js +52 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview.d.ts +8 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview.js +53 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview.d.ts +18 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview.js +58 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnSparklinePreview.d.ts +10 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnSparklinePreview.js +126 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardRangesSection.js +12 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.d.ts +1 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +52 -29
- package/src/View/SystemStatus/Utilities/getStatusItemStyle.js +1 -1
- package/src/View/Theme/ThemePopup.d.ts +2 -14
- package/src/View/Theme/ThemePopup.js +1 -36
- package/src/View/UIHelper.js +1 -1
- package/src/View/Wizard/OnePageAdaptableWizard.js +7 -21
- package/src/agGrid/AdaptableAgGrid.d.ts +1 -0
- package/src/agGrid/AdaptableAgGrid.js +36 -26
- package/src/agGrid/AgGridAdapter.d.ts +1 -1
- package/src/agGrid/AgGridAdapter.js +27 -17
- package/src/agGrid/AgGridColumnAdapter.js +9 -15
- package/src/agGrid/AgGridMenuAdapter.d.ts +0 -1
- package/src/agGrid/AgGridMenuAdapter.js +20 -37
- package/src/agGrid/buildValueAggregationMenuItem.d.ts +19 -0
- package/src/agGrid/buildValueAggregationMenuItem.js +111 -0
- package/src/agGrid/cellRenderers/IconRenderer.d.ts +6 -0
- package/src/agGrid/cellRenderers/IconRenderer.js +43 -15
- package/src/agGrid/createAgGridIcon.d.ts +10 -0
- package/src/agGrid/createAgGridIcon.js +16 -0
- package/src/components/DragAndDropContext/UnusedPanel.js +1 -1
- package/src/components/ExpressionEditor/BaseEditorInput.js +1 -1
- package/src/components/ExpressionEditor/ExpressionFunctionDocumentation.js +1 -1
- package/src/components/Input/NumberInput.js +1 -1
- package/src/components/Panel/index.js +1 -1
- package/src/components/SimpleButton/index.js +4 -4
- package/src/components/Toggle/Toggle.js +1 -1
- package/src/components/Toggle/ToggleGroup.js +1 -1
- package/src/env.js +2 -2
- package/src/layout-manager/src/index.js +2 -9
- package/src/metamodel/adaptable.metamodel.d.ts +39 -29
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/types.d.ts +5 -4
- package/themes/dark.css +1 -68
- package/themes/light.css +1 -5
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/src/Aggregation/ParameterizedAggregationRegistry.d.ts +0 -35
- package/src/Aggregation/ParameterizedAggregationRegistry.js +0 -63
- package/src/Aggregation/definitions/weightedAverageAggregationDefinition.d.ts +0 -3
- package/src/Aggregation/definitions/weightedAverageAggregationDefinition.js +0 -55
- package/src/Aggregation/parameterizedAggregationColumnMenu.d.ts +0 -8
- package/src/Aggregation/parameterizedAggregationColumnMenu.js +0 -137
- package/src/Aggregation/parameterizedAggregationHeader.d.ts +0 -13
- package/src/Aggregation/parameterizedAggregationHeader.js +0 -60
- package/src/Aggregation/parameterizedAggregationHelpers.d.ts +0 -23
- package/src/Aggregation/parameterizedAggregationHelpers.js +0 -111
- package/src/Aggregation/parameterizedAggregationWizardHelpers.d.ts +0 -9
- package/src/Aggregation/parameterizedAggregationWizardHelpers.js +0 -66
- package/src/Aggregation/validateParameterizedAggregations.d.ts +0 -4
- package/src/Aggregation/validateParameterizedAggregations.js +0 -20
- package/src/View/Layout/Wizard/sections/ParameterizedAggFuncPicker.d.ts +0 -12
- package/src/View/Layout/Wizard/sections/ParameterizedAggFuncPicker.js +0 -43
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgeSettings.d.ts +0 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgeSettings.js +0 -28
- package/src/View/Theme/VariantSelector.d.ts +0 -8
- package/src/View/Theme/VariantSelector.js +0 -20
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import FormLayout, { FormRow } from '../../../components/FormLayout';
|
|
3
2
|
import Input from '../../../components/Input';
|
|
4
|
-
import {
|
|
5
|
-
import { Box } from '../../../components/Flex';
|
|
3
|
+
import { Box, Flex } from '../../../components/Flex';
|
|
6
4
|
import { SingleSelect } from '../../../components/NewSelect';
|
|
5
|
+
import { Card } from '../../../components/Card';
|
|
6
|
+
import { Tag } from '../../../components/Tag';
|
|
7
7
|
export const ScheduledReportSettings = (props) => {
|
|
8
8
|
const handleNameChange = (event) => {
|
|
9
9
|
props.onChange({
|
|
@@ -23,14 +23,14 @@ export const ScheduledReportSettings = (props) => {
|
|
|
23
23
|
label: reportName,
|
|
24
24
|
value: reportName,
|
|
25
25
|
}));
|
|
26
|
-
return (
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
26
|
+
return (_jsxs(Flex, { flexDirection: "column", className: "twa:gap-3 twa:p-3", "data-name": "scheduled-report-settings", children: [props.fixedReportName ? (_jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Report" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "The report that will be exported on this schedule" })] }), _jsx(Card.Body, { children: _jsx(Tag, { children: props.fixedReportName }) })] })) : null, props.allReportNames ? (_jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Report" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Choose which report to export on this schedule" })] }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(SingleSelect, { className: "twa:max-w-[300px]", "data-name": "select-report", items: reportOptions, value: props.reportSchedule?.ReportName || undefined, placeholder: "Select Report", onValueChange: (value) => props.onChange({
|
|
27
|
+
...props.reportSchedule,
|
|
28
|
+
ReportName: value,
|
|
29
|
+
}) }) })] })) : null, _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Name" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Provide a unique name for this scheduled export" })] }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(Input, { "data-name": "schedule-name", className: "twa:max-w-[300px] twa:w-full", onChange: handleNameChange, placeholder: "Enter Schedule Name", type: "string", value: props.reportSchedule?.Name ?? '' }) })] }), _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Format" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Choose the export file format" })] }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(SingleSelect, { className: "twa:max-w-[300px]", "data-name": "select-format", items: formatOptions, value: props.reportSchedule?.ReportFormat, placeholder: "Select Format", onValueChange: (value) => props.onChange({
|
|
30
|
+
...props.reportSchedule,
|
|
31
|
+
ReportFormat: value,
|
|
32
|
+
}) }) })] }), _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Destination" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Choose where the exported report is sent" })] }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(SingleSelect, { className: "twa:max-w-[300px]", "data-name": "select-destination", items: destinationOptions, value: props.reportSchedule?.ExportDestination, placeholder: "Select Destination", onValueChange: (value) => props.onChange({
|
|
33
|
+
...props.reportSchedule,
|
|
34
|
+
ExportDestination: value,
|
|
35
|
+
}) }) })] })] }));
|
|
36
36
|
};
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useDispatch } from 'react-redux';
|
|
4
4
|
import * as ExportRedux from '../../../Redux/ActionsReducers/ExportRedux';
|
|
5
5
|
import ObjectFactory from '../../../Utilities/ObjectFactory';
|
|
6
|
-
import { OnePageAdaptableWizard, OnePageWizardSummary,
|
|
7
|
-
import { Tag } from '../../../components/Tag';
|
|
6
|
+
import { OnePageAdaptableWizard, OnePageWizardSummary, useOnePageAdaptableWizardContext, } from '../../Wizard/OnePageAdaptableWizard';
|
|
8
7
|
import { isScheduleValid, ScheduleBuilderWizard, } from '../../Schedule/Wizard/ScheduleScheduleWizard';
|
|
9
8
|
import { ScheduleScheduleSummary } from '../../Schedule/Wizard/ScheduleScheduleSummary';
|
|
10
9
|
import { ObjectTagsWizardSection, renderObjectTagsSummary, } from '../../Wizard/ObjectTagsWizardSection';
|
|
@@ -46,7 +45,7 @@ export const ScheduledReportWizard = (props) => {
|
|
|
46
45
|
title: 'Settings',
|
|
47
46
|
isValid: (data, api) => isReportScheduleSettingsValid(data, api),
|
|
48
47
|
renderSummary: () => _jsx(ScheduledReportSettingsSummary, {}),
|
|
49
|
-
render: () => (_jsx(
|
|
48
|
+
render: () => (_jsx(ScheduledReportSettingsSection, { onChange: setReportSchedule, reportName: reportName })),
|
|
50
49
|
},
|
|
51
50
|
{
|
|
52
51
|
title: 'Schedule',
|
|
@@ -76,5 +75,5 @@ const ScheduledReportSettingsSection = (props) => {
|
|
|
76
75
|
const allReportNames = fixedReportName
|
|
77
76
|
? undefined
|
|
78
77
|
: api.exportApi.internalApi.getAllAvailableReportNames();
|
|
79
|
-
return (
|
|
78
|
+
return (_jsx(ScheduledReportSettings, { reportSchedule: data, onChange: props.onChange, allFormats: allFormats ?? [], allDestinations: allDestinations ?? [], allReportNames: allReportNames, fixedReportName: fixedReportName }));
|
|
80
79
|
};
|
|
@@ -2,6 +2,8 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
|
|
3
3
|
import { CodeBlock } from '../../../components/CodeBlock';
|
|
4
4
|
import { EntityRulesEditor, EntityRulesSummary } from '../../Components/EntityRulesEditor';
|
|
5
|
+
import { Box, Flex } from '../../../components/Flex';
|
|
6
|
+
import { Card } from '../../../components/Card';
|
|
5
7
|
export const renderFlashingAlertRulesSummary = (flashingAlert) => {
|
|
6
8
|
const { api: { flashingCellApi }, } = useOnePageAdaptableWizardContext();
|
|
7
9
|
const FlashTarget = flashingAlert.FlashTarget ?? flashingCellApi.getFlashingCellFlashTarget(flashingAlert);
|
|
@@ -14,10 +16,10 @@ export const renderFlashingAlertRulesSummary = (flashingAlert) => {
|
|
|
14
16
|
export const FlashingAlertRulesWizardSection = (props) => {
|
|
15
17
|
const { data, api, moduleInfo } = useOnePageAdaptableWizardContext();
|
|
16
18
|
const predicateDefs = api.flashingCellApi.getFlashingCellPredicateDefsForScope(data.Scope);
|
|
17
|
-
return (_jsx(EntityRulesEditor, { module: moduleInfo.ModuleName, defaultPredicateId: "AnyChange", data: data, predicateDefs: predicateDefs, getPredicateDefsForColId: (colId) => api.flashingCellApi.getFlashingCellPredicateDefsForScope({ ColumnIds: [colId] }), onChange: props.onChange, showAggregation: false, showObservable: false, showBoolean: true, showPredicate: true, descriptions: {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
return (_jsx(Flex, { flexDirection: "column", className: "twa:h-full twa:gap-3 twa:p-3", children: _jsxs(Card, { shadow: false, className: "twa:flex-1 twa:min-h-0", children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Rule" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Build the rule that determines when cells should flash on a data change" })] }), _jsx(Card.Body, { className: "twa:flex-1 twa:min-h-0", children: _jsx(EntityRulesEditor, { module: moduleInfo.ModuleName, defaultPredicateId: "AnyChange", data: data, predicateDefs: predicateDefs, getPredicateDefsForColId: (colId) => api.flashingCellApi.getFlashingCellPredicateDefsForScope({ ColumnIds: [colId] }), onChange: props.onChange, showAggregation: false, showObservable: false, showBoolean: true, showPredicate: true, descriptions: {
|
|
20
|
+
selectPredicate: 'Select a Flashing Cell Rule - to be applied when data changes',
|
|
21
|
+
useBooleanQuery: (_jsxs(_Fragment, { children: ["Use an BooleanQuery if ", _jsx("i", { children: "Scope" }), " is 'All Columns' - so any data change may be evaluated in a complex BooleanExpression"] })),
|
|
22
|
+
useObservableQuery: (_jsxs(_Fragment, { children: ["Use an ObservableQuery if ", _jsx("i", { children: "Scope" }), " is 'All Columns' - so any data change may be evaluated in a complex ObservableExpression"] })),
|
|
23
|
+
useAggregationQuery: (_jsxs(_Fragment, { children: ["Use an AggregatedBooleanQuery if ", _jsx("i", { children: "Scope" }), " is 'All Columns' - so any data change may be evaluated in a complex AggregatedBooleanExpression"] })),
|
|
24
|
+
} }) })] }) }));
|
|
23
25
|
};
|
|
@@ -1,32 +1,31 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { NewScopeComponent } from '../../Components/NewScopeComponent';
|
|
4
4
|
import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
|
|
5
|
-
import { Flex } from '../../../components/Flex';
|
|
5
|
+
import { Box, Flex } from '../../../components/Flex';
|
|
6
6
|
import { isScopeColumnIds } from '../../../AdaptableState/Common/ColumnScope';
|
|
7
7
|
export const FlashingAlertScopeWizardSection = (props) => {
|
|
8
8
|
const { data, api } = useOnePageAdaptableWizardContext();
|
|
9
9
|
const availableColumns = React.useMemo(() => api.columnApi
|
|
10
10
|
.getUIAvailableColumns()
|
|
11
11
|
.filter((column) => !column.isActionColumn && !api.columnApi.isFdc3Column(column.columnId)), [api]);
|
|
12
|
-
return (
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
} }) }));
|
|
12
|
+
return (_jsxs(Flex, { flexDirection: "column", className: "twa:h-full", children: [_jsxs(Flex, { flexDirection: "row", alignItems: "center", className: "twa:p-2 twa:gap-3 twa:border-b twa:mb-2 twa:border-b-foreground/20", children: [_jsx(Box, { className: "twa:text-5 twa:font-medium", children: "Columns" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:max-w-[520px]", children: "Specify which data changes should trigger cell flashing" })] }), _jsx(Box, { className: "twa:flex-1 twa:min-h-0 twa:overflow-auto twa:p-2", children: _jsx(NewScopeComponent, { descriptions: {
|
|
13
|
+
rowScope: 'Changes anywhere in the row will trigger a Flashing Cell',
|
|
14
|
+
columnScope: 'Changes in selected columns will trigger a Flashing Cell',
|
|
15
|
+
dataTypeScope: 'Changes in columns with these Data Types will trigger a Flashing Cell',
|
|
16
|
+
}, scopeColumns: availableColumns, scope: data.Scope, updateScope: (Scope) => {
|
|
17
|
+
const newData = { ...data, Scope };
|
|
18
|
+
if (newData.Rule.Predicates) {
|
|
19
|
+
const validPredicateIds = new Set(api.flashingCellApi.getFlashingCellPredicateDefsForScope(Scope).map((def) => def.id));
|
|
20
|
+
newData.Rule = {
|
|
21
|
+
Predicates: newData.Rule.Predicates.filter((p) => validPredicateIds.has(p.PredicateId)).filter((predicate) => {
|
|
22
|
+
if (isScopeColumnIds(Scope) && Scope.ColumnIds.length > 1) {
|
|
23
|
+
return predicate.PredicateId !== 'In' && predicate.PredicateId !== 'NotIn';
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
props.onChange(newData);
|
|
30
|
+
} }) })] }));
|
|
32
31
|
};
|
|
@@ -3,14 +3,14 @@ import * as React from 'react';
|
|
|
3
3
|
import { useRef } from 'react';
|
|
4
4
|
import Input from '../../../components/Input';
|
|
5
5
|
import usePrevious from '../../../components/utils/usePrevious';
|
|
6
|
-
import { Tabs } from '../../../components/Tabs';
|
|
7
6
|
import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
|
|
8
7
|
import { CodeBlock } from '../../../components/CodeBlock';
|
|
9
|
-
import FormLayout, { FormRow } from '../../../components/FormLayout';
|
|
10
8
|
import { CheckBox } from '../../../components/CheckBox';
|
|
11
9
|
import { Box, Flex } from '../../../components/Flex';
|
|
12
10
|
import { Tag } from '../../../components/Tag';
|
|
13
11
|
import { SummaryText } from '../../Wizard/OnePageAdaptableWizard';
|
|
12
|
+
import { Card } from '../../../components/Card';
|
|
13
|
+
import { TypeRadio } from '../../Wizard/TypeRadio';
|
|
14
14
|
export const isSettingsValid = (data, api) => {
|
|
15
15
|
if (!data.Name?.trim()) {
|
|
16
16
|
return 'Name is required';
|
|
@@ -22,8 +22,17 @@ export const isSettingsValid = (data, api) => {
|
|
|
22
22
|
}
|
|
23
23
|
return true;
|
|
24
24
|
};
|
|
25
|
+
const formatFlashTarget = (flashTarget) => {
|
|
26
|
+
if (!flashTarget) {
|
|
27
|
+
return 'Not specified';
|
|
28
|
+
}
|
|
29
|
+
if (typeof flashTarget === 'string') {
|
|
30
|
+
return flashTarget;
|
|
31
|
+
}
|
|
32
|
+
return flashTarget.join(', ');
|
|
33
|
+
};
|
|
25
34
|
export const renderFlashingAlertSettingsSummary = (flashingAlert) => {
|
|
26
|
-
return (_jsxs(_Fragment, { children: [_jsxs(SummaryText, { children: ["Name ", _jsx(Tag, { children: flashingAlert.Name || 'Not specified' })] }), _jsx(Box, { className: "twa:text-2", children: flashingAlert.FlashDuration === 'always' ? (_jsx(_Fragment, { children: "Flashing is never removed" })) : (_jsxs(_Fragment, { children: ["Flashing is removed after ", _jsx(CodeBlock, { children: flashingAlert.FlashDuration }), ' ', "milliseconds"] })) })] }));
|
|
35
|
+
return (_jsxs(_Fragment, { children: [_jsxs(SummaryText, { children: ["Name ", _jsx(Tag, { children: flashingAlert.Name || 'Not specified' })] }), _jsx(Box, { className: "twa:text-2", children: flashingAlert.FlashDuration === 'always' ? (_jsx(_Fragment, { children: "Flashing is never removed" })) : (_jsxs(_Fragment, { children: ["Flashing is removed after ", _jsx(CodeBlock, { children: flashingAlert.FlashDuration }), ' ', "milliseconds"] })) }), _jsxs(SummaryText, { children: ["Flash Target ", _jsx(Tag, { children: formatFlashTarget(flashingAlert.FlashTarget) })] })] }));
|
|
27
36
|
};
|
|
28
37
|
export const FlashingAlertSettingsWizardSection = (props) => {
|
|
29
38
|
let { data: flashingCell } = useOnePageAdaptableWizardContext();
|
|
@@ -46,7 +55,7 @@ export const FlashingAlertSettingsWizardSection = (props) => {
|
|
|
46
55
|
inputRef.current?.focus();
|
|
47
56
|
}
|
|
48
57
|
}, [duration, oldDuration]);
|
|
49
|
-
const
|
|
58
|
+
const handleDurationTypeChange = (type) => {
|
|
50
59
|
setDuration(type === 'number' ? numberDuration.current : 'always');
|
|
51
60
|
};
|
|
52
61
|
const handleTargetChange = (type, checked) => {
|
|
@@ -67,11 +76,11 @@ export const FlashingAlertSettingsWizardSection = (props) => {
|
|
|
67
76
|
FlashTarget,
|
|
68
77
|
});
|
|
69
78
|
};
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
79
|
+
const isTargetChecked = (type) => flashingCell?.FlashTarget === type || flashingCell?.FlashTarget?.includes?.(type);
|
|
80
|
+
return (_jsx(Box, { "data-name": "flashing-cell-settings", children: _jsxs(Flex, { flexDirection: "column", className: "twa:gap-3 twa:p-3", children: [_jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Name" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Provide a unique name for the Flashing Cell rule" })] }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(Input, { "data-name": "flashing-cell-name", className: "twa:max-w-[300px] twa:w-full", onChange: handleNameChange, placeholder: "Enter Name", value: flashingCell.Name ?? '' }) })] }), _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Flash Duration" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Choose how long the flash style remains visible after a change" })] }), _jsx(Card.Body, { children: _jsxs(Flex, { flexDirection: "column", className: "twa:gap-3", children: [_jsx(TypeRadio, { "data-name": "duration-always", text: "Always", description: "The flash style is never removed automatically", checked: duration === 'always', onClick: () => handleDurationTypeChange('always') }), _jsx(TypeRadio, { "data-name": "duration-timed", text: "Timed", description: "The flash style is removed after a set number of milliseconds", checked: duration !== 'always', onClick: () => handleDurationTypeChange('number') }), duration !== 'always' ? (_jsxs(Flex, { alignItems: "center", className: "twa:ml-6", children: [_jsx(Input, { "data-name": "duration-input", readOnly: props.readOnly, type: "number", name: "value", ref: inputRef, className: "twa:w-24 twa:mr-2", value: duration, onChange: (event) => {
|
|
81
|
+
const value = event.target.value;
|
|
82
|
+
const parsed = Number(value);
|
|
83
|
+
numberDuration.current = isNaN(parsed) ? 500 : parsed;
|
|
84
|
+
setDuration(numberDuration.current);
|
|
85
|
+
} }), _jsx(Box, { className: "twa:text-2", children: "ms" })] })) : null] }) })] }), _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Flash Target" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Choose which parts of the grid flash when a change occurs" })] }), _jsx(Card.Body, { children: _jsxs(Flex, { flexDirection: "column", children: [_jsx(CheckBox, { "data-name": "flashing-target", onChange: (checked) => handleTargetChange('cell', checked), checked: isTargetChecked('cell'), children: "Cell" }), _jsx(CheckBox, { "data-name": "flashing-target-row", onChange: (checked) => handleTargetChange('row', checked), checked: isTargetChecked('row'), children: "Row" }), _jsx(CheckBox, { "data-name": "flashing-target-aggFuncCell", onChange: (checked) => handleTargetChange('aggFuncCell', checked), checked: isTargetChecked('aggFuncCell'), children: "Aggregated Function Cell" })] }) })] })] }) }));
|
|
77
86
|
};
|
|
@@ -1,14 +1,30 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
|
|
3
|
-
import { Tabs } from '../../../components/Tabs';
|
|
4
3
|
import { StyleComponent } from '../../Components/StyleComponent';
|
|
5
4
|
import { StylePreview } from '../../../components/StylePreview';
|
|
6
|
-
import { Box } from '../../../components/Flex';
|
|
7
|
-
|
|
5
|
+
import { Box, Flex } from '../../../components/Flex';
|
|
6
|
+
import { Card } from '../../../components/Card';
|
|
7
|
+
const FLASH_STYLE_CARDS = [
|
|
8
|
+
{
|
|
9
|
+
key: 'UpChangeStyle',
|
|
10
|
+
title: 'Up Change Style',
|
|
11
|
+
description: 'Style applied when a cell value increases',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
key: 'DownChangeStyle',
|
|
15
|
+
title: 'Down Change Style',
|
|
16
|
+
description: 'Style applied when a cell value decreases',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
key: 'NeutralChangeStyle',
|
|
20
|
+
title: 'Neutral Change Style',
|
|
21
|
+
description: 'Style applied when a cell value changes but not up or down (e.g. text edits)',
|
|
22
|
+
},
|
|
23
|
+
];
|
|
8
24
|
export const FlashingAlertStyleWizardSection = (props) => {
|
|
9
25
|
let { data: flashingAlert, api } = useOnePageAdaptableWizardContext();
|
|
10
26
|
flashingAlert = flashingAlert ?? props.flashingAlert;
|
|
11
|
-
return (_jsx(
|
|
27
|
+
return (_jsx(Flex, { flexDirection: "column", className: "twa:gap-3 twa:p-3", children: FLASH_STYLE_CARDS.map(({ key, title, description }) => (_jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: title }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: description })] }), _jsx(Card.Body, { children: _jsx(StyleComponent, { headless: true, api: api, Style: flashingAlert[key] ?? {}, UpdateStyle: (style) => props.onStyleChange(key, style) }) })] }, key))) }));
|
|
12
28
|
};
|
|
13
29
|
export const FlashingCellStyle = (props) => {
|
|
14
30
|
const { data, ...boxProps } = props;
|
|
@@ -63,7 +63,7 @@ export const FlashingCellWizard = (props) => {
|
|
|
63
63
|
{
|
|
64
64
|
details: 'Set Name, Duration and Target Properties',
|
|
65
65
|
isValid: isSettingsValid,
|
|
66
|
-
render: () =>
|
|
66
|
+
render: () => _jsx(FlashingAlertSettingsWizardSection, { onChange: setFlashingCell }),
|
|
67
67
|
renderSummary: renderFlashingAlertSettingsSummary,
|
|
68
68
|
title: 'Settings',
|
|
69
69
|
},
|
|
@@ -83,9 +83,9 @@ export const FlashingCellWizard = (props) => {
|
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
85
|
details: 'Choose Flash Styles for Up, Down and Neutral Changes',
|
|
86
|
-
render: () => (_jsx(
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
render: () => (_jsx(FlashingAlertStyleWizardSection, { onStyleChange: (styleName, style) => {
|
|
87
|
+
updateStyles[styleName](style);
|
|
88
|
+
} })),
|
|
89
89
|
renderSummary: renderFlashingAlertStyleSummary,
|
|
90
90
|
title: 'Flash Styles',
|
|
91
91
|
},
|
|
@@ -10,7 +10,14 @@ export interface FormatColumnFormatWizardState {
|
|
|
10
10
|
DisplayFormat: AdaptableFormat;
|
|
11
11
|
NumericFormat?: 'Percent' | 'Thousand' | 'Million' | 'Dollar' | 'Sterling' | undefined;
|
|
12
12
|
}
|
|
13
|
+
type DisplayFormatSummaryItem = {
|
|
14
|
+
label: string;
|
|
15
|
+
value: string;
|
|
16
|
+
};
|
|
17
|
+
export declare const getFormatColumnDisplayFormatSummaryItems: (data: FormatColumn) => DisplayFormatSummaryItem[];
|
|
18
|
+
export declare const hasFormatColumnDisplayFormat: (data: FormatColumn) => boolean;
|
|
13
19
|
export declare const getFormatColumnFormatSummaryValue: (data: FormatColumn) => string;
|
|
14
20
|
export declare const renderFormatColumnFormatSummary: (data: FormatColumn) => React.JSX.Element;
|
|
15
21
|
export declare const getFormatDisplayTypeForScope: (scope: ColumnScope, api: AdaptableApi) => "number" | "date" | "text" | undefined;
|
|
16
22
|
export declare const FormatColumnFormatWizardSection: (props: FormatColumnFormatWizardSectionProps) => React.JSX.Element;
|
|
23
|
+
export {};
|
|
@@ -31,24 +31,122 @@ const DateFormatPresets = [
|
|
|
31
31
|
'yyyyMMdd',
|
|
32
32
|
'HH:mm:ss',
|
|
33
33
|
];
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
const NUMERIC_PRESET_LABELS = {
|
|
35
|
+
Percentage: 'Percentage',
|
|
36
|
+
Thousand: 'K (Thousand)',
|
|
37
|
+
Million: 'M (Million)',
|
|
38
|
+
Billion: 'B (Billion)',
|
|
39
|
+
BasisPoints: 'bps (Basis Pts)',
|
|
40
|
+
Dollar: 'Dollar',
|
|
41
|
+
Sterling: 'Sterling',
|
|
42
|
+
Euro: 'Euro',
|
|
43
|
+
Yen: 'Yen',
|
|
44
|
+
Bitcoin: 'Bitcoin',
|
|
45
|
+
Integer: 'Integer',
|
|
46
|
+
Decimal: 'Decimal',
|
|
47
|
+
Accounting: 'Accounting',
|
|
48
|
+
FXRate: 'FX Rate',
|
|
49
|
+
Scientific: 'Scientific',
|
|
50
|
+
};
|
|
51
|
+
const appendDisplayFormatItem = (items, label, value) => {
|
|
52
|
+
if (value == null || value === '' || value === false) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
items.push({ label, value: String(value) });
|
|
56
|
+
};
|
|
57
|
+
const appendNumberFormatOptions = (items, options) => {
|
|
58
|
+
appendDisplayFormatItem(items, 'Fraction Digits', options.FractionDigits);
|
|
59
|
+
appendDisplayFormatItem(items, 'Fraction Separator', options.FractionSeparator);
|
|
60
|
+
appendDisplayFormatItem(items, 'Integer Digits', options.IntegerDigits);
|
|
61
|
+
appendDisplayFormatItem(items, 'Integer Separator', options.IntegerSeparator);
|
|
62
|
+
appendDisplayFormatItem(items, 'Prefix', options.Prefix);
|
|
63
|
+
appendDisplayFormatItem(items, 'Suffix', options.Suffix);
|
|
64
|
+
appendDisplayFormatItem(items, 'Content', options.Content);
|
|
65
|
+
if (options.Multiplier != null && options.Multiplier !== 1) {
|
|
66
|
+
items.push({ label: 'Multiplier', value: String(options.Multiplier) });
|
|
67
|
+
}
|
|
68
|
+
appendDisplayFormatItem(items, 'Parentheses', options.Parentheses);
|
|
69
|
+
appendDisplayFormatItem(items, 'Truncate', options.Truncate);
|
|
70
|
+
appendDisplayFormatItem(items, 'Absolute Value', options.Abs);
|
|
71
|
+
appendDisplayFormatItem(items, 'Ceiling', options.Ceiling);
|
|
72
|
+
appendDisplayFormatItem(items, 'Floor', options.Floor);
|
|
73
|
+
appendDisplayFormatItem(items, 'Round', options.Round);
|
|
74
|
+
appendDisplayFormatItem(items, 'Empty', options.Empty);
|
|
75
|
+
if (options.Notation === 'scientific') {
|
|
76
|
+
items.push({ label: 'Notation', value: 'Scientific' });
|
|
77
|
+
}
|
|
78
|
+
if (options.CustomDisplayFormats?.length) {
|
|
79
|
+
items.push({
|
|
80
|
+
label: 'Custom Formats',
|
|
81
|
+
value: options.CustomDisplayFormats.join(', '),
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const appendStringFormatOptions = (items, options) => {
|
|
86
|
+
appendDisplayFormatItem(items, 'Case', options.Case);
|
|
87
|
+
appendDisplayFormatItem(items, 'Trim', options.Trim);
|
|
88
|
+
appendDisplayFormatItem(items, 'Prefix', options.Prefix);
|
|
89
|
+
appendDisplayFormatItem(items, 'Suffix', options.Suffix);
|
|
90
|
+
appendDisplayFormatItem(items, 'Content', options.Content);
|
|
91
|
+
appendDisplayFormatItem(items, 'Empty', options.Empty);
|
|
92
|
+
if (options.CustomDisplayFormats?.length) {
|
|
93
|
+
items.push({
|
|
94
|
+
label: 'Custom Formats',
|
|
95
|
+
value: options.CustomDisplayFormats.join(', '),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
export const getFormatColumnDisplayFormatSummaryItems = (data) => {
|
|
100
|
+
if (data.DisplayFormat == null) {
|
|
101
|
+
return [];
|
|
102
|
+
}
|
|
103
|
+
if (isAdaptableNumericFormatPreset(data.DisplayFormat)) {
|
|
104
|
+
return [{ label: '', value: `${NUMERIC_PRESET_LABELS[data.DisplayFormat]} Preset` }];
|
|
105
|
+
}
|
|
36
106
|
const resolved = resolveDisplayFormat(data.DisplayFormat);
|
|
37
107
|
if (!resolved) {
|
|
38
|
-
|
|
108
|
+
return [];
|
|
39
109
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
110
|
+
const items = [];
|
|
111
|
+
if (resolved.Formatter === 'NumberFormatter') {
|
|
112
|
+
appendNumberFormatOptions(items, resolved.Options);
|
|
113
|
+
if (!items.length) {
|
|
114
|
+
items.push({ label: '', value: 'Number Format' });
|
|
43
115
|
}
|
|
44
|
-
|
|
45
|
-
|
|
116
|
+
return items;
|
|
117
|
+
}
|
|
118
|
+
if (resolved.Formatter === 'DateFormatter') {
|
|
119
|
+
const options = resolved.Options;
|
|
120
|
+
appendDisplayFormatItem(items, 'Pattern', options.Pattern);
|
|
121
|
+
if (options.CustomDisplayFormats?.length) {
|
|
122
|
+
items.push({
|
|
123
|
+
label: 'Custom Formats',
|
|
124
|
+
value: options.CustomDisplayFormats.join(', '),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
if (!items.length) {
|
|
128
|
+
items.push({ label: '', value: 'Date Format' });
|
|
46
129
|
}
|
|
47
|
-
|
|
48
|
-
|
|
130
|
+
return items;
|
|
131
|
+
}
|
|
132
|
+
if (resolved.Formatter === 'StringFormatter') {
|
|
133
|
+
appendStringFormatOptions(items, resolved.Options);
|
|
134
|
+
if (!items.length) {
|
|
135
|
+
items.push({ label: '', value: 'String Format' });
|
|
49
136
|
}
|
|
137
|
+
return items;
|
|
50
138
|
}
|
|
51
|
-
return
|
|
139
|
+
return items;
|
|
140
|
+
};
|
|
141
|
+
export const hasFormatColumnDisplayFormat = (data) => getFormatColumnDisplayFormatSummaryItems(data).length > 0;
|
|
142
|
+
export const getFormatColumnFormatSummaryValue = (data) => {
|
|
143
|
+
const items = getFormatColumnDisplayFormatSummaryItems(data);
|
|
144
|
+
if (!items.length) {
|
|
145
|
+
return 'No Display Format';
|
|
146
|
+
}
|
|
147
|
+
return items
|
|
148
|
+
.map(({ label, value }) => (label ? `${label}: ${value}` : value))
|
|
149
|
+
.join(', ');
|
|
52
150
|
};
|
|
53
151
|
const renderCustomFormatter = (data, customFormatter, setFormatOption) => {
|
|
54
152
|
const resolved = resolveDisplayFormat(data.DisplayFormat);
|
|
@@ -64,7 +162,14 @@ const renderCustomFormatter = (data, customFormatter, setFormatOption) => {
|
|
|
64
162
|
} }) }, customFormatter.id));
|
|
65
163
|
};
|
|
66
164
|
export const renderFormatColumnFormatSummary = (data) => {
|
|
67
|
-
|
|
165
|
+
const items = getFormatColumnDisplayFormatSummaryItems(data);
|
|
166
|
+
if (!items.length) {
|
|
167
|
+
return _jsx(Tag, { children: "No Display Format" });
|
|
168
|
+
}
|
|
169
|
+
if (items.length === 1 && !items[0].label) {
|
|
170
|
+
return _jsx(Tag, { children: items[0].value });
|
|
171
|
+
}
|
|
172
|
+
return (_jsx(Box, { className: "twa:flex twa:flex-col twa:gap-2", children: items.map(({ label, value }) => (_jsxs(Box, { children: [label, " ", _jsx(Tag, { children: value })] }, label))) }));
|
|
68
173
|
};
|
|
69
174
|
export const getFormatDisplayTypeForScope = (scope, api) => {
|
|
70
175
|
if (scope == undefined) {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { FormatColumn } from '../../../AdaptableState/FormatColumnState';
|
|
3
|
+
import { AdaptableApi } from '../../../Api/AdaptableApi';
|
|
4
|
+
/** Today's date as sample text — no Display Format options applied. */
|
|
5
|
+
export declare const getFormatColumnPreviewDateSampleText: () => string;
|
|
6
|
+
export declare const getFormatColumnStylePreviewText: (formatColumn: FormatColumn, api: AdaptableApi) => string;
|
|
7
|
+
export declare const getFormatColumnPreviewSampleValue: (formatColumn: FormatColumn, api: AdaptableApi) => string | number;
|
|
8
|
+
export declare const getFormatColumnPreviewText: (formatColumn: FormatColumn, api: AdaptableApi) => string;
|
|
9
|
+
export declare const FormatColumnPreviewContent: React.FunctionComponent<{
|
|
10
|
+
formatColumn: FormatColumn;
|
|
11
|
+
api: AdaptableApi;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const renderFormatColumnPreviewSummary: (formatColumn: FormatColumn, api: AdaptableApi) => React.JSX.Element;
|
|
14
|
+
export declare const FormatColumnPreview: React.FunctionComponent;
|
|
15
|
+
export declare const FormatColumnPreviewSummaryCard: React.FunctionComponent;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { resolveDisplayFormat } from '../../../AdaptableState/Common/AdaptableFormatPresets';
|
|
3
|
+
import { DEFAULT_DOUBLE_DISPLAY_VALUE, DEFAULT_STRING_DISPLAY_VALUE, } from '../../../Utilities/Constants/GeneralConstants';
|
|
4
|
+
import FormatHelper from '../../../Utilities/Helpers/FormatHelper';
|
|
5
|
+
import { convertAdaptableStyleToCSS } from '../../../Utilities/Helpers/StyleHelper';
|
|
6
|
+
import { Card } from '../../../components/Card';
|
|
7
|
+
import { Box } from '../../../components/Flex';
|
|
8
|
+
import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
|
|
9
|
+
import { getFormatDisplayTypeForScope } from './FormatColumnFormatWizardSection';
|
|
10
|
+
const toFormatColumnPreviewStyle = (formatColumn) => {
|
|
11
|
+
const style = formatColumn.Style ?? {};
|
|
12
|
+
return {
|
|
13
|
+
...convertAdaptableStyleToCSS(style),
|
|
14
|
+
borderWidth: style.BorderColor ? 2 : 0,
|
|
15
|
+
borderStyle: 'solid',
|
|
16
|
+
textAlign: style.Alignment ? style.Alignment.toLowerCase() : undefined,
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
/** Today's date as sample text — no Display Format options applied. */
|
|
20
|
+
export const getFormatColumnPreviewDateSampleText = () => new Date().toLocaleDateString();
|
|
21
|
+
export const getFormatColumnStylePreviewText = (formatColumn, api) => {
|
|
22
|
+
const formatType = getFormatDisplayTypeForScope(formatColumn.Scope, api);
|
|
23
|
+
if (formatType === 'number') {
|
|
24
|
+
return String(DEFAULT_DOUBLE_DISPLAY_VALUE);
|
|
25
|
+
}
|
|
26
|
+
if (formatType === 'date') {
|
|
27
|
+
return getFormatColumnPreviewDateSampleText();
|
|
28
|
+
}
|
|
29
|
+
return DEFAULT_STRING_DISPLAY_VALUE;
|
|
30
|
+
};
|
|
31
|
+
export const getFormatColumnPreviewSampleValue = (formatColumn, api) => {
|
|
32
|
+
const formatType = getFormatDisplayTypeForScope(formatColumn.Scope, api);
|
|
33
|
+
if (formatType === 'number') {
|
|
34
|
+
return DEFAULT_DOUBLE_DISPLAY_VALUE;
|
|
35
|
+
}
|
|
36
|
+
if (formatType === 'date') {
|
|
37
|
+
return getFormatColumnPreviewDateSampleText();
|
|
38
|
+
}
|
|
39
|
+
return DEFAULT_STRING_DISPLAY_VALUE;
|
|
40
|
+
};
|
|
41
|
+
export const getFormatColumnPreviewText = (formatColumn, api) => {
|
|
42
|
+
const sample = getFormatColumnPreviewSampleValue(formatColumn, api);
|
|
43
|
+
const resolved = resolveDisplayFormat(formatColumn.DisplayFormat);
|
|
44
|
+
if (!resolved) {
|
|
45
|
+
return String(sample);
|
|
46
|
+
}
|
|
47
|
+
if (resolved.Formatter === 'NumberFormatter' && typeof sample === 'number') {
|
|
48
|
+
return FormatHelper.NumberFormatter(sample, resolved.Options) ?? String(sample);
|
|
49
|
+
}
|
|
50
|
+
if (resolved.Formatter === 'DateFormatter') {
|
|
51
|
+
return FormatHelper.DateFormatter(new Date(), resolved.Options) ?? String(sample);
|
|
52
|
+
}
|
|
53
|
+
if (resolved.Formatter === 'StringFormatter' && typeof sample === 'string') {
|
|
54
|
+
return FormatHelper.StringFormatter(sample, resolved.Options) ?? sample;
|
|
55
|
+
}
|
|
56
|
+
return String(sample);
|
|
57
|
+
};
|
|
58
|
+
export const FormatColumnPreviewContent = ({ formatColumn, api }) => (_jsx(Box, { className: "ab-FormatPreview twa:p-2 twa:inline-block", style: toFormatColumnPreviewStyle(formatColumn), children: getFormatColumnPreviewText(formatColumn, api) }));
|
|
59
|
+
export const renderFormatColumnPreviewSummary = (formatColumn, api) => _jsx(FormatColumnPreviewContent, { formatColumn: formatColumn, api: api });
|
|
60
|
+
export const FormatColumnPreview = () => {
|
|
61
|
+
const { data, api } = useOnePageAdaptableWizardContext();
|
|
62
|
+
return _jsx(FormatColumnPreviewContent, { formatColumn: data, api: api });
|
|
63
|
+
};
|
|
64
|
+
export const FormatColumnPreviewSummaryCard = () => {
|
|
65
|
+
return (_jsxs(Card, { shadow: false, children: [_jsx(Card.Title, { children: _jsx(Box, { className: "twa:font-medium", children: "Preview" }) }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(FormatColumnPreview, {}) })] }));
|
|
66
|
+
};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { FormatColumn } from '../../../../types';
|
|
3
|
+
import { AdaptableApi } from '../../../Api/AdaptableApi';
|
|
3
4
|
type FormatColumnRuleWizardSectionProps = {
|
|
4
5
|
onChange: (data: FormatColumn) => void;
|
|
5
6
|
defaultPredicateId: string;
|
|
6
7
|
};
|
|
8
|
+
export declare const hasFormatColumnCondition: (formatColumn: FormatColumn) => boolean;
|
|
9
|
+
export declare const renderFormatColumnConditionSummary: (formatColumn: FormatColumn, api: AdaptableApi) => React.JSX.Element;
|
|
10
|
+
export declare const renderFormatColumnConditionWizardSummary: (formatColumn: FormatColumn) => React.JSX.Element;
|
|
7
11
|
export declare function FormatColumnRuleWizardSection(props: FormatColumnRuleWizardSectionProps): React.JSX.Element;
|
|
8
12
|
export {};
|
|
@@ -2,6 +2,36 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
|
|
3
3
|
import { EntityRulesEditor } from '../../Components/EntityRulesEditor';
|
|
4
4
|
import HelpBlock from '../../../components/HelpBlock';
|
|
5
|
+
import { Box } from '../../../components/Flex';
|
|
6
|
+
import { Tag } from '../../../components/Tag';
|
|
7
|
+
export const hasFormatColumnCondition = (formatColumn) => {
|
|
8
|
+
const rule = formatColumn.Rule;
|
|
9
|
+
if (!rule) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
return Boolean(rule.Predicates?.length ||
|
|
13
|
+
rule.BooleanExpression ||
|
|
14
|
+
('ObservableExpression' in rule && rule.ObservableExpression) ||
|
|
15
|
+
('AggregatedBooleanExpression' in rule && rule.AggregatedBooleanExpression));
|
|
16
|
+
};
|
|
17
|
+
export const renderFormatColumnConditionSummary = (formatColumn, api) => {
|
|
18
|
+
if (formatColumn.Target === 'columnHeader') {
|
|
19
|
+
return _jsx(Tag, { children: "No Condition" });
|
|
20
|
+
}
|
|
21
|
+
if (!hasFormatColumnCondition(formatColumn)) {
|
|
22
|
+
return _jsx(Tag, { children: "No Condition" });
|
|
23
|
+
}
|
|
24
|
+
const rule = formatColumn.Rule;
|
|
25
|
+
if (rule?.Predicates?.length) {
|
|
26
|
+
return (_jsx(Box, { className: "twa:flex twa:flex-col twa:gap-2", children: rule.Predicates.map((predicate, index) => (_jsx(Tag, { children: api.predicateApi.predicateToString(predicate) }, index))) }));
|
|
27
|
+
}
|
|
28
|
+
const expressionText = api.internalApi.getAdaptableQueryExpressionText(rule);
|
|
29
|
+
return _jsx(Tag, { children: expressionText || 'No Condition' });
|
|
30
|
+
};
|
|
31
|
+
export const renderFormatColumnConditionWizardSummary = (formatColumn) => {
|
|
32
|
+
const { api } = useOnePageAdaptableWizardContext();
|
|
33
|
+
return renderFormatColumnConditionSummary(formatColumn, api);
|
|
34
|
+
};
|
|
5
35
|
export function FormatColumnRuleWizardSection(props) {
|
|
6
36
|
const { data, api, moduleInfo } = useOnePageAdaptableWizardContext();
|
|
7
37
|
if (data.Target && data.Target === 'columnHeader') {
|