@sapui5/sap.fe.core 1.103.0 → 1.106.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -5
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +121 -0
- package/src/sap/fe/core/ActionRuntime.ts +122 -0
- package/src/sap/fe/core/AppComponent.js +24 -11
- package/src/sap/fe/core/AppComponent.ts +17 -5
- package/src/sap/fe/core/AppStateHandler.js +74 -62
- package/src/sap/fe/core/AppStateHandler.ts +24 -29
- package/src/sap/fe/core/BaseController.js +2 -2
- package/src/sap/fe/core/CommonUtils.js +147 -180
- package/src/sap/fe/core/CommonUtils.ts +166 -193
- package/src/sap/fe/core/ExtensionAPI.js +2 -2
- package/src/sap/fe/core/PageController.js +2 -2
- package/src/sap/fe/core/TemplateComponent.js +21 -10
- package/src/sap/fe/core/TemplateComponent.ts +3 -0
- package/src/sap/fe/core/TemplateModel.js +2 -2
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +11 -3
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +7 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +194 -43
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +162 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +14 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.ts +5 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +609 -227
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +268 -119
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +111 -76
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +96 -76
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +723 -637
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +361 -398
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -2
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +83 -55
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +42 -44
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +29 -27
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +35 -30
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +171 -74
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +167 -76
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +5 -21
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -17
- package/src/sap/fe/core/controllerextensions/MassEdit.js +3 -3
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
- package/src/sap/fe/core/controllerextensions/PageReady.js +3 -3
- package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -1
- package/src/sap/fe/core/controllerextensions/Paginator.js +13 -13
- package/src/sap/fe/core/controllerextensions/Paginator.ts +11 -11
- package/src/sap/fe/core/controllerextensions/Placeholder.js +2 -2
- package/src/sap/fe/core/controllerextensions/Routing.js +2 -2
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +154 -123
- package/src/sap/fe/core/controllerextensions/Share.ts +93 -95
- package/src/sap/fe/core/controllerextensions/SideEffects.js +157 -97
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +151 -95
- package/src/sap/fe/core/controllerextensions/ViewState.js +151 -80
- package/src/sap/fe/core/controllerextensions/ViewState.ts +95 -93
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +9 -9
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +6 -7
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +26 -11
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +30 -11
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +57 -40
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +55 -47
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +31 -32
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1376 -914
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +654 -714
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +372 -326
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +210 -276
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +309 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +320 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +670 -521
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +537 -535
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +85 -65
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +16 -21
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +25 -13
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +53 -43
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +18 -27
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +9 -15
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +19 -3
- package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +35 -0
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +26 -16
- package/src/sap/fe/core/controls/Any.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js +2 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +5 -5
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -3
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
- package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
- package/src/sap/fe/core/controls/FileWrapper.js +8 -3
- package/src/sap/fe/core/controls/FileWrapper.ts +5 -1
- package/src/sap/fe/core/controls/FilterBar.js +2 -2
- package/src/sap/fe/core/controls/FormElementWrapper.js +2 -2
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +48 -17
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -2
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +2 -2
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +2 -2
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -3
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +2 -2
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -2
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +1 -1
- package/src/sap/fe/core/converters/ConverterContext.js +23 -2
- package/src/sap/fe/core/converters/ConverterContext.ts +34 -9
- package/src/sap/fe/core/converters/ManifestSettings.js +19 -18
- package/src/sap/fe/core/converters/ManifestSettings.ts +53 -47
- package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js +32 -10
- package/src/sap/fe/core/converters/MetaModelConverter.ts +42 -19
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +5 -2
- package/src/sap/fe/core/converters/annotations/DataField.ts +5 -1
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +69 -23
- package/src/sap/fe/core/converters/controls/Common/Action.js +98 -51
- package/src/sap/fe/core/converters/controls/Common/Action.ts +121 -44
- package/src/sap/fe/core/converters/controls/Common/Chart.js +31 -34
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +26 -34
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +43 -7
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +60 -33
- package/src/sap/fe/core/converters/controls/Common/Form.js +8 -6
- package/src/sap/fe/core/converters/controls/Common/Form.ts +11 -14
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +16 -15
- package/src/sap/fe/core/converters/controls/Common/Table.js +188 -157
- package/src/sap/fe/core/converters/controls/Common/Table.ts +279 -230
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +4 -4
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +57 -21
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +71 -18
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +30 -8
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +24 -7
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +43 -34
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +37 -25
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +85 -49
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +74 -50
- package/src/sap/fe/core/converters/helpers/Aggregation.js +54 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +56 -8
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +6 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +10 -2
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +182 -0
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +167 -0
- package/src/sap/fe/core/converters/helpers/ID.js +3 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/Key.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -3
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +8 -14
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +6 -9
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +31 -31
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +54 -47
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +44 -15
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +64 -30
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
- package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
- package/src/sap/fe/core/formatters/StandardFormatter.js +13 -6
- package/src/sap/fe/core/formatters/StandardFormatter.ts +20 -14
- package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
- package/src/sap/fe/core/fpm/Component.js +33 -7
- package/src/sap/fe/core/fpm/Component.ts +14 -0
- package/src/sap/fe/core/helpers/AnnotationEnum.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +5 -4
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +4 -3
- package/src/sap/fe/core/helpers/BindingToolkit.js +56 -24
- package/src/sap/fe/core/helpers/BindingToolkit.ts +67 -21
- package/src/sap/fe/core/helpers/ClassSupport.js +31 -3
- package/src/sap/fe/core/helpers/ClassSupport.ts +24 -1
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -1
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -1
- package/src/sap/fe/core/helpers/LoaderUtils.js +39 -0
- package/src/sap/fe/core/helpers/LoaderUtils.ts +14 -0
- package/src/sap/fe/core/helpers/MassEditHelper.js +475 -99
- package/src/sap/fe/core/helpers/MassEditHelper.ts +468 -155
- package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
- package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +82 -36
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +52 -36
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +146 -0
- package/src/sap/fe/core/helpers/SideEffectsHelper.ts +128 -0
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.js +1 -1
- package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
- package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +109 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +47 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +119 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +98 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
- package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
- package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
- package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +179 -0
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +150 -0
- package/src/sap/fe/core/library.js +2 -2
- package/src/sap/fe/core/library.support.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/messagebundle.properties +4 -41
- package/src/sap/fe/core/messagebundle_ar.properties +22 -45
- package/src/sap/fe/core/messagebundle_bg.properties +22 -45
- package/src/sap/fe/core/messagebundle_ca.properties +22 -45
- package/src/sap/fe/core/messagebundle_cs.properties +22 -45
- package/src/sap/fe/core/messagebundle_cy.properties +21 -44
- package/src/sap/fe/core/messagebundle_da.properties +22 -45
- package/src/sap/fe/core/messagebundle_de.properties +22 -45
- package/src/sap/fe/core/messagebundle_el.properties +22 -45
- package/src/sap/fe/core/messagebundle_en.properties +21 -44
- package/src/sap/fe/core/messagebundle_en_GB.properties +21 -44
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +21 -42
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -40
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +21 -42
- package/src/sap/fe/core/messagebundle_es.properties +22 -45
- package/src/sap/fe/core/messagebundle_es_MX.properties +22 -45
- package/src/sap/fe/core/messagebundle_et.properties +22 -45
- package/src/sap/fe/core/messagebundle_fi.properties +22 -45
- package/src/sap/fe/core/messagebundle_fr.properties +21 -44
- package/src/sap/fe/core/messagebundle_fr_CA.properties +20 -43
- package/src/sap/fe/core/messagebundle_hi.properties +22 -45
- package/src/sap/fe/core/messagebundle_hr.properties +22 -45
- package/src/sap/fe/core/messagebundle_hu.properties +22 -45
- package/src/sap/fe/core/messagebundle_id.properties +22 -45
- package/src/sap/fe/core/messagebundle_it.properties +22 -45
- package/src/sap/fe/core/messagebundle_iw.properties +22 -45
- package/src/sap/fe/core/messagebundle_ja.properties +22 -45
- package/src/sap/fe/core/messagebundle_kk.properties +22 -45
- package/src/sap/fe/core/messagebundle_ko.properties +27 -50
- package/src/sap/fe/core/messagebundle_lt.properties +22 -45
- package/src/sap/fe/core/messagebundle_lv.properties +22 -45
- package/src/sap/fe/core/messagebundle_ms.properties +22 -45
- package/src/sap/fe/core/messagebundle_nl.properties +24 -47
- package/src/sap/fe/core/messagebundle_no.properties +22 -45
- package/src/sap/fe/core/messagebundle_pl.properties +23 -46
- package/src/sap/fe/core/messagebundle_pt.properties +23 -46
- package/src/sap/fe/core/messagebundle_pt_PT.properties +22 -45
- package/src/sap/fe/core/messagebundle_ro.properties +22 -45
- package/src/sap/fe/core/messagebundle_ru.properties +22 -45
- package/src/sap/fe/core/messagebundle_sh.properties +22 -45
- package/src/sap/fe/core/messagebundle_sk.properties +22 -45
- package/src/sap/fe/core/messagebundle_sl.properties +22 -45
- package/src/sap/fe/core/messagebundle_sv.properties +22 -45
- package/src/sap/fe/core/messagebundle_th.properties +20 -43
- package/src/sap/fe/core/messagebundle_tr.properties +22 -45
- package/src/sap/fe/core/messagebundle_uk.properties +22 -45
- package/src/sap/fe/core/messagebundle_vi.properties +22 -45
- package/src/sap/fe/core/messagebundle_zh_CN.properties +22 -45
- package/src/sap/fe/core/messagebundle_zh_TW.properties +22 -45
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +102 -74
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +62 -63
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +11 -8
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -7
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ShellServicesFactory.js +22 -2
- package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -0
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +2 -2
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +251 -200
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +160 -144
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -2
- package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.js +4 -3
- package/src/sap/fe/core/templating/CommonFormatters.ts +5 -1
- package/src/sap/fe/core/templating/CriticalityFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js +8 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +5 -2
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js +4 -5
- package/src/sap/fe/core/templating/EntitySetHelper.ts +4 -3
- package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js +34 -15
- package/src/sap/fe/core/templating/FilterHelper.ts +28 -12
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js +5 -3
- package/src/sap/fe/core/templating/UIFormatters.ts +7 -5
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +2 -2
- package/src/sap/fe/core/type/Email.js +2 -2
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/ui/
|
|
5
|
+
sap.ui.define(["sap/ui/mdc/condition/FilterOperatorUtil", "sap/ui/mdc/condition/Operator", "sap/ui/model/Filter", "sap/ui/model/FilterOperator", "sap/ui/model/ValidateException"], function (FilterOperatorUtil, Operator, Filter, ModelOperator, ValidateException) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var aSupportedOperations = ["DATE", "FROM", "TO", "DATERANGE"];
|
|
@@ -170,17 +170,15 @@ sap.ui.define(["sap/ui/core/Core", "sap/ui/mdc/condition/FilterOperatorUtil", "s
|
|
|
170
170
|
}
|
|
171
171
|
};
|
|
172
172
|
|
|
173
|
-
function _getDateRangeOperator(
|
|
174
|
-
var sDateRange = oResourceBundle && oResourceBundle.getText("C_DATE_RANGE");
|
|
173
|
+
function _getDateRangeOperator() {
|
|
175
174
|
return new Operator({
|
|
176
175
|
name: "DATERANGE",
|
|
177
176
|
filterOperator: ModelOperator.BT,
|
|
178
|
-
|
|
179
|
-
|
|
177
|
+
alias: {
|
|
178
|
+
Date: "DATERANGE",
|
|
179
|
+
DateTime: "DATERANGE"
|
|
180
|
+
},
|
|
180
181
|
valueTypes: [Operator.ValueType.Self, Operator.ValueType.Self],
|
|
181
|
-
longText: sDateRange,
|
|
182
|
-
tokenText: sDateRange,
|
|
183
|
-
additionalInfo: "",
|
|
184
182
|
validate: function (aValues, oType) {
|
|
185
183
|
if (aValues.length < 2) {
|
|
186
184
|
throw new ValidateException("Date Range must have two values");
|
|
@@ -198,45 +196,45 @@ sap.ui.define(["sap/ui/core/Core", "sap/ui/mdc/condition/FilterOperatorUtil", "s
|
|
|
198
196
|
});
|
|
199
197
|
}
|
|
200
198
|
|
|
201
|
-
function _getDateOperator(
|
|
202
|
-
var sDate = oResourceBundle && oResourceBundle.getText("C_DATE");
|
|
199
|
+
function _getDateOperator() {
|
|
203
200
|
return new Operator({
|
|
204
201
|
name: "DATE",
|
|
202
|
+
alias: {
|
|
203
|
+
Date: "DATE",
|
|
204
|
+
DateTime: "DATE"
|
|
205
|
+
},
|
|
205
206
|
filterOperator: ModelOperator.EQ,
|
|
206
|
-
tokenParse: "^#tokenText# \\((.+)\\)$",
|
|
207
|
-
tokenFormat: "#tokenText# ({0})",
|
|
208
207
|
valueTypes: [Operator.ValueType.Self],
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
208
|
+
getModelFilter: function (oCondition, sFieldPath, oType) {
|
|
209
|
+
return SemanticDateOperators.getModelFilterForDate(oCondition, sFieldPath, oType);
|
|
210
|
+
}
|
|
212
211
|
});
|
|
213
212
|
}
|
|
214
213
|
|
|
215
|
-
function _getFromOperator(
|
|
216
|
-
var sFrom = oResourceBundle && oResourceBundle.getText("C_FROM");
|
|
214
|
+
function _getFromOperator() {
|
|
217
215
|
return new Operator({
|
|
218
216
|
name: "FROM",
|
|
217
|
+
alias: {
|
|
218
|
+
Date: "FROM",
|
|
219
|
+
DateTime: "FROM"
|
|
220
|
+
},
|
|
219
221
|
filterOperator: ModelOperator.GE,
|
|
220
|
-
|
|
221
|
-
tokenFormat: "#tokenText# ({0})",
|
|
222
|
-
valueTypes: [Operator.ValueType.Self],
|
|
223
|
-
longText: sFrom,
|
|
224
|
-
tokenText: sFrom,
|
|
225
|
-
additionalInfo: ""
|
|
222
|
+
valueTypes: [Operator.ValueType.Self]
|
|
226
223
|
});
|
|
227
224
|
}
|
|
228
225
|
|
|
229
|
-
function _getToOperator(
|
|
230
|
-
var sTo = oResourceBundle && oResourceBundle.getText("C_TO");
|
|
226
|
+
function _getToOperator() {
|
|
231
227
|
return new Operator({
|
|
232
228
|
name: "TO",
|
|
229
|
+
alias: {
|
|
230
|
+
Date: "TO",
|
|
231
|
+
DateTime: "TO"
|
|
232
|
+
},
|
|
233
233
|
filterOperator: ModelOperator.LE,
|
|
234
|
-
tokenParse: "^#tokenText# \\((.+)\\)$",
|
|
235
|
-
tokenFormat: "#tokenText# ({0})",
|
|
236
234
|
valueTypes: [Operator.ValueType.Self],
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
235
|
+
getModelFilter: function (oCondition, sFieldPath, oType) {
|
|
236
|
+
return SemanticDateOperators.getModelFilterForTo(oCondition, sFieldPath, oType);
|
|
237
|
+
}
|
|
240
238
|
});
|
|
241
239
|
}
|
|
242
240
|
|
|
@@ -296,11 +294,10 @@ sap.ui.define(["sap/ui/core/Core", "sap/ui/mdc/condition/FilterOperatorUtil", "s
|
|
|
296
294
|
var SemanticDateOperators = {
|
|
297
295
|
// Extending operators for Sematic Date Control
|
|
298
296
|
addSemanticDateOperators: function () {
|
|
299
|
-
|
|
300
|
-
FilterOperatorUtil.addOperator(
|
|
301
|
-
FilterOperatorUtil.addOperator(
|
|
302
|
-
FilterOperatorUtil.addOperator(
|
|
303
|
-
FilterOperatorUtil.addOperator(_getToOperator(oResourceBundle));
|
|
297
|
+
FilterOperatorUtil.addOperator(_getDateRangeOperator());
|
|
298
|
+
FilterOperatorUtil.addOperator(_getDateOperator());
|
|
299
|
+
FilterOperatorUtil.addOperator(_getFromOperator());
|
|
300
|
+
FilterOperatorUtil.addOperator(_getToOperator());
|
|
304
301
|
},
|
|
305
302
|
getSupportedOperations: function () {
|
|
306
303
|
return aSupportedOperations;
|
|
@@ -342,8 +339,57 @@ sap.ui.define(["sap/ui/core/Core", "sap/ui/mdc/condition/FilterOperatorUtil", "s
|
|
|
342
339
|
}
|
|
343
340
|
|
|
344
341
|
return true;
|
|
342
|
+
},
|
|
343
|
+
getModelFilterForDate: function (oCondition, sFieldPath, oType) {
|
|
344
|
+
if (oType.isA("sap.ui.model.odata.type.DateTimeOffset")) {
|
|
345
|
+
var sFrom = oCondition.values[0];
|
|
346
|
+
var oModelFormat = oType.getModelFormat(); // use ModelFormat to convert in JS-Date and add 23:59:59
|
|
347
|
+
|
|
348
|
+
var oDate = oModelFormat.parse(sFrom);
|
|
349
|
+
oDate.setHours(23);
|
|
350
|
+
oDate.setMinutes(59);
|
|
351
|
+
oDate.setSeconds(59);
|
|
352
|
+
oDate.setMilliseconds(999);
|
|
353
|
+
var sTo = oModelFormat.format(oDate);
|
|
354
|
+
return new Filter({
|
|
355
|
+
path: sFieldPath,
|
|
356
|
+
operator: ModelOperator.BT,
|
|
357
|
+
value1: sFrom,
|
|
358
|
+
value2: sTo
|
|
359
|
+
});
|
|
360
|
+
} else {
|
|
361
|
+
return new Filter({
|
|
362
|
+
path: sFieldPath,
|
|
363
|
+
operator: ModelOperator.EQ,
|
|
364
|
+
value1: oCondition.values[0]
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
},
|
|
368
|
+
getModelFilterForTo: function (oCondition, sFieldPath, oType) {
|
|
369
|
+
if (oType.isA("sap.ui.model.odata.type.DateTimeOffset")) {
|
|
370
|
+
var value = oCondition.values[0];
|
|
371
|
+
var oModelFormat = oType.getModelFormat(); // use ModelFormat to convert in JS-Date and add 23:59:59
|
|
372
|
+
|
|
373
|
+
var oDate = oModelFormat.parse(value);
|
|
374
|
+
oDate.setHours(23);
|
|
375
|
+
oDate.setMinutes(59);
|
|
376
|
+
oDate.setSeconds(59);
|
|
377
|
+
oDate.setMilliseconds(999);
|
|
378
|
+
var sTo = oModelFormat.format(oDate);
|
|
379
|
+
return new Filter({
|
|
380
|
+
path: sFieldPath,
|
|
381
|
+
operator: ModelOperator.LE,
|
|
382
|
+
value1: sTo
|
|
383
|
+
});
|
|
384
|
+
} else {
|
|
385
|
+
return new Filter({
|
|
386
|
+
path: sFieldPath,
|
|
387
|
+
operator: ModelOperator.LE,
|
|
388
|
+
value1: oCondition.values[0]
|
|
389
|
+
});
|
|
390
|
+
}
|
|
345
391
|
}
|
|
346
392
|
};
|
|
347
393
|
return SemanticDateOperators;
|
|
348
394
|
}, false);
|
|
349
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljRGF0ZU9wZXJhdG9ycy50cyJdLCJuYW1lcyI6WyJhU3VwcG9ydGVkT3BlcmF0aW9ucyIsIkRZTkFNSUNfREFURV9DQVRFR09SWSIsIkZJWEVEX0RBVEVfQ0FURUdPUlkiLCJEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUlkiLCJEWU5BTUlDX01PTlRIX0NBVEVHT1JZIiwiRklYRURfV0VFS19DQVRFR09SWSIsIkZJWEVEX01PTlRIX0NBVEVHT1JZIiwiRklYRURfUVVBUlRFUl9DQVRFR09SWSIsIkZJWEVEX1lFQVJfQ0FURUdPUlkiLCJEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkiLCJEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWSIsIm1TZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiX2dldERhdGVSYW5nZU9wZXJhdG9yIiwib1Jlc291cmNlQnVuZGxlIiwic0RhdGVSYW5nZSIsImdldFRleHQiLCJPcGVyYXRvciIsIm5hbWUiLCJmaWx0ZXJPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJCVCIsInRva2VuUGFyc2UiLCJ0b2tlbkZvcm1hdCIsInZhbHVlVHlwZXMiLCJWYWx1ZVR5cGUiLCJTZWxmIiwibG9uZ1RleHQiLCJ0b2tlblRleHQiLCJhZGRpdGlvbmFsSW5mbyIsInZhbGlkYXRlIiwiYVZhbHVlcyIsIm9UeXBlIiwibGVuZ3RoIiwiVmFsaWRhdGVFeGNlcHRpb24iLCJmcm9tRGF0ZSIsIkRhdGUiLCJ0b0RhdGUiLCJnZXRUaW1lIiwicHJvdG90eXBlIiwiYXBwbHkiLCJfZ2V0RGF0ZU9wZXJhdG9yIiwic0RhdGUiLCJFUSIsIl9nZXRGcm9tT3BlcmF0b3IiLCJzRnJvbSIsIkdFIiwiX2dldFRvT3BlcmF0b3IiLCJzVG8iLCJMRSIsIl9maWx0ZXJPcGVyYXRpb24iLCJvT3BlcmF0aW9uIiwiYU9wZXJhdG9yQ29uZmlndXJhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImJSZXN1bHQiLCJzb21lIiwib09wZXJhdG9yQ29uZmlndXJhdGlvbiIsImoiLCJwYXRoIiwic1ZhbHVlIiwiYkV4Y2x1ZGUiLCJleGNsdWRlIiwiYU9wZXJhdG9yVmFsdWVzIiwiY29udGFpbnMiLCJzcGxpdCIsImluZGV4T2YiLCJlcXVhbHMiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJhZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiRmlsdGVyT3BlcmF0b3JVdGlsIiwiYWRkT3BlcmF0b3IiLCJnZXRTdXBwb3J0ZWRPcGVyYXRpb25zIiwiZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsIk9iamVjdCIsImtleXMiLCJyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRGaWx0ZXJPcGVyYXRpb25zIiwiYU9wZXJhdGlvbnMiLCJuIiwicHVzaCIsIm1hcCIsImtleSIsImhhc1NlbWFudGljRGF0ZU9wZXJhdGlvbnMiLCJvQ29uZGl0aW9ucyIsImFTZW1hbnRpY0RhdGVPcHMiLCJhRmlsdGVyQ29uZHRpb24iLCJvU2VtYW50aWNPcGVyYXRvciIsImZpbmQiLCJvQ29uZGl0aW9uIiwib3BlcmF0b3IiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFLQSxNQUFNQSxvQkFBb0IsR0FBRyxDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLElBQWpCLEVBQXVCLFdBQXZCLENBQTdCO0FBQ0EsTUFBTUMscUJBQXFCLEdBQUcsY0FBOUI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxZQUE1QjtBQUNBLE1BQU1DLHlCQUF5QixHQUFHLGtCQUFsQztBQUNBLE1BQU1DLDBCQUEwQixHQUFHLG1CQUFuQztBQUNBLE1BQU1DLHNCQUFzQixHQUFHLGVBQS9CO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsWUFBNUI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxh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VSxDQUFDQyxRQUFwQyxJQUFnRCxDQUFDLENBQXhEO0FBQ0EsU0FGeUIsQ0FBMUI7O0FBR0EsWUFBSUgsaUJBQUosRUFBdUI7QUFDdEIsaUJBQU8sS0FBUDtBQUNBO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0E7QUEzQzRCLEdBQTlCO1NBOENlckIscUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3JVdGlsIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9GaWx0ZXJPcGVyYXRvclV0aWxcIjtcbmltcG9ydCBPcGVyYXRvciBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vT3BlcmF0b3JcIjtcbmltcG9ydCBNb2RlbE9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBWYWxpZGF0ZUV4Y2VwdGlvbiBmcm9tIFwic2FwL3VpL21vZGVsL1ZhbGlkYXRlRXhjZXB0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IENvcmVFeCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxuY29uc3QgYVN1cHBvcnRlZE9wZXJhdGlvbnMgPSBbXCJEQVRFXCIsIFwiRlJPTVwiLCBcIlRPXCIsIFwiREFURVJBTkdFXCJdO1xuY29uc3QgRFlOQU1JQ19EQVRFX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEVcIjtcbmNvbnN0IEZJWEVEX0RBVEVfQ0FURUdPUlkgPSBcIkZJWEVELkRBVEVcIjtcbmNvbnN0IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuREFURS5JTlRcIjtcbmNvbnN0IERZTkFNSUNfREFURVJBTkdFX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEVSQU5HRVwiO1xuY29uc3QgRFlOQU1JQ19NT05USF9DQVRFR09SWSA9IFwiRFlOQU1JQy5NT05USFwiO1xuY29uc3QgRklYRURfV0VFS19DQVRFR09SWSA9IFwiRklYRUQuV0VFS1wiO1xuY29uc3QgRklYRURfTU9OVEhfQ0FURUdPUlkgPSBcIkZJWEVELk1PTlRIXCI7XG5jb25zdCBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZID0gXCJGSVhFRC5RVUFSVEVSXCI7XG5jb25zdCBGSVhFRF9ZRUFSX0NBVEVHT1JZID0gXCJGSVhFRC5ZRUFSXCI7XG5jb25zdCBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLldFRUsuSU5UXCI7XG5jb25zdCBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWSA9IFwiRFlOQU1JQy5NT05USC5JTlRcIjtcbmNvbnN0IERZTkFNSUNfUVVBUlRFUl9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuUVVBUlRFUi5JTlRcIjtcbmNvbnN0IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuWUVBUi5JTlRcIjtcbmNvbnN0IG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zOiBhbnkgPSB7XG5cdFwiREFURVwiOiB7XG5cdFx0XCJrZXlcIjogXCJEQVRFXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJGUk9NXCI6IHtcblx0XHRcImtleVwiOiBcIkZST01cIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPXCI6IHtcblx0XHRcImtleVwiOiBcIlRPXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJEQVRFUkFOR0VcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVJBTkdFXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVSQU5HRV9DQVRFR09SWVxuXHR9LFxuXHRcIlNQRUNJRklDTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiU1BFQ0lGSUNNT05USFwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIlRPREFZXCI6IHtcblx0XHRcImtleVwiOiBcIlRPREFZXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9EQVlGUk9NVE9cIjoge1xuXHRcdFwia2V5XCI6IFwiVE9EQVlGUk9NVE9cIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJZRVNURVJEQVlcIjoge1xuXHRcdFwia2V5XCI6IFwiWUVTVEVSREFZXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9NT1JST1dcIjoge1xuXHRcdFwia2V5XCI6IFwiVE9NT1JST1dcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUREFZU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUREFZU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFREQVlTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFREQVlTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU1dFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU1dFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUV0VFS1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUV0VFS1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfV0VFS19DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RXRUVLU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUV0VFS1NcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfV0VFS19JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUV0VFS1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUV0VFS1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfV0VFS19DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRXRUVLU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUV0VFS1NcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfV0VFS19JTlRfQ0FURUdPUllcblx0fSxcblx0XCJUSElTTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU01PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVE1PTlRIU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUTU9OVEhTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVE1PTlRIU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUTU9OVEhTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlRISVNRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFFVQVJURVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFFVQVJURVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUUVVBUlRFUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFFVQVJURVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFFVQVJURVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFFVQVJURVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJORVhUUVVBUlRFUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFFVQVJURVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjFcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjFcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJRVUFSVEVSMlwiOiB7XG5cdFx0XCJrZXlcIjogXCJRVUFSVEVSMlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVIzXCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVIzXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjRcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjRcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJUSElTWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJUSElTWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RZRUFSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFlFQVJTXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RZRUFSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRZRUFSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFlFQVJTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRZRUFSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIllFQVJUT0RBVEVcIjoge1xuXHRcdFwia2V5XCI6IFwiWUVBUlRPREFURVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkRBVEVUT1lFQVJcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVRPWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9XG59O1xuXG5mdW5jdGlvbiBfZ2V0RGF0ZVJhbmdlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0RhdGVSYW5nZSA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfREFURV9SQU5HRVwiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJEQVRFUkFOR0VcIixcblx0XHRmaWx0ZXJPcGVyYXRvcjogTW9kZWxPcGVyYXRvci5CVCxcblx0XHR0b2tlblBhcnNlOiBcIl4jdG9rZW5UZXh0IyBcXFxcKChbXiFdLiopIFxcXFwtICguKylcXFxcKSRcIixcblx0XHR0b2tlbkZvcm1hdDogXCIjdG9rZW5UZXh0IyAoezB9IC0gezF9KVwiLFxuXHRcdHZhbHVlVHlwZXM6IFsoT3BlcmF0b3IgYXMgYW55KS5WYWx1ZVR5cGUuU2VsZiwgKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzRGF0ZVJhbmdlLFxuXHRcdHRva2VuVGV4dDogc0RhdGVSYW5nZSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIixcblx0XHR2YWxpZGF0ZTogZnVuY3Rpb24gKGFWYWx1ZXM6IGFueSwgb1R5cGU6IGFueSkge1xuXHRcdFx0aWYgKGFWYWx1ZXMubGVuZ3RoIDwgMikge1xuXHRcdFx0XHR0aHJvdyBuZXcgVmFsaWRhdGVFeGNlcHRpb24oXCJEYXRlIFJhbmdlIG11c3QgaGF2ZSB0d28gdmFsdWVzXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgZnJvbURhdGUgPSBuZXcgRGF0ZShhVmFsdWVzWzBdKTtcblx0XHRcdFx0Y29uc3QgdG9EYXRlID0gbmV3IERhdGUoYVZhbHVlc1sxXSk7XG5cdFx0XHRcdGlmIChmcm9tRGF0ZS5nZXRUaW1lKCkgPiB0b0RhdGUuZ2V0VGltZSgpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFZhbGlkYXRlRXhjZXB0aW9uKFwiRnJvbSBEYXRlIFNob3VsZCBCZSBMZXNzIFRoYW4gVG8gRGF0ZVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0T3BlcmF0b3IucHJvdG90eXBlLnZhbGlkYXRlLmFwcGx5KHRoaXMsIFthVmFsdWVzLCBvVHlwZV0pO1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9nZXREYXRlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0RhdGUgPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0RBVEVcIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiREFURVwiLFxuXHRcdGZpbHRlck9wZXJhdG9yOiBNb2RlbE9wZXJhdG9yLkVRLFxuXHRcdHRva2VuUGFyc2U6IFwiXiN0b2tlblRleHQjIFxcXFwoKC4rKVxcXFwpJFwiLFxuXHRcdHRva2VuRm9ybWF0OiBcIiN0b2tlblRleHQjICh7MH0pXCIsXG5cdFx0dmFsdWVUeXBlczogWyhPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc0RhdGUsXG5cdFx0dG9rZW5UZXh0OiBzRGF0ZSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIlxuXHR9KTtcbn1cblxuZnVuY3Rpb24gX2dldEZyb21PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzRnJvbSA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfRlJPTVwiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJGUk9NXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuR0UsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzRnJvbSxcblx0XHR0b2tlblRleHQ6IHNGcm9tLFxuXHRcdGFkZGl0aW9uYWxJbmZvOiBcIlwiXG5cdH0pO1xufVxuXG5mdW5jdGlvbiBfZ2V0VG9PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzVG8gPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1RPXCIpO1xuXHRyZXR1cm4gbmV3IE9wZXJhdG9yKHtcblx0XHRuYW1lOiBcIlRPXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuTEUsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzVG8sXG5cdFx0dG9rZW5UZXh0OiBzVG8sXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCJcblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9maWx0ZXJPcGVyYXRpb24ob09wZXJhdGlvbjogYW55LCBhT3BlcmF0b3JDb25maWd1cmF0aW9uOiBhbnkpIHtcblx0aWYgKCFhT3BlcmF0b3JDb25maWd1cmF0aW9uKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0YU9wZXJhdG9yQ29uZmlndXJhdGlvbiA9IEFycmF5LmlzQXJyYXkoYU9wZXJhdG9yQ29uZmlndXJhdGlvbikgPyBhT3BlcmF0b3JDb25maWd1cmF0aW9uIDogW2FPcGVyYXRvckNvbmZpZ3VyYXRpb25dO1xuXHRsZXQgYlJlc3VsdDtcblxuXHRhT3BlcmF0b3JDb25maWd1cmF0aW9uLnNvbWUoZnVuY3Rpb24gKG9PcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRcdGxldCBqO1xuXHRcdGlmICghb09wZXJhdG9yQ29uZmlndXJhdGlvbi5wYXRoKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc1ZhbHVlID0gb09wZXJhdGlvbltvT3BlcmF0b3JDb25maWd1cmF0aW9uLnBhdGhdO1xuXHRcdGNvbnN0IGJFeGNsdWRlID0gb09wZXJhdG9yQ29uZmlndXJhdGlvbi5leGNsdWRlIHx8IGZhbHNlO1xuXHRcdGxldCBhT3BlcmF0b3JWYWx1ZXM7XG5cblx0XHRpZiAob09wZXJhdG9yQ29uZmlndXJhdGlvbi5jb250YWlucyAmJiBzVmFsdWUpIHtcblx0XHRcdGFPcGVyYXRvclZhbHVlcyA9IG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uY29udGFpbnMuc3BsaXQoXCIsXCIpO1xuXHRcdFx0YlJlc3VsdCA9IGJFeGNsdWRlO1xuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGFPcGVyYXRvclZhbHVlcy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRpZiAoYkV4Y2x1ZGUgJiYgc1ZhbHVlLmluZGV4T2YoYU9wZXJhdG9yVmFsdWVzW2pdKSA+IC0xKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IGZhbHNlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFiRXhjbHVkZSAmJiBzVmFsdWUuaW5kZXhPZihhT3BlcmF0b3JWYWx1ZXNbal0pID4gLTEpIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gdHJ1ZTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvT3BlcmF0b3JDb25maWd1cmF0aW9uLmVxdWFscyAmJiBzVmFsdWUpIHtcblx0XHRcdGFPcGVyYXRvclZhbHVlcyA9IG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uZXF1YWxzLnNwbGl0KFwiLFwiKTtcblx0XHRcdGJSZXN1bHQgPSBiRXhjbHVkZTtcblx0XHRcdGZvciAoaiA9IDA7IGogPCBhT3BlcmF0b3JWYWx1ZXMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0aWYgKGJFeGNsdWRlICYmIHNWYWx1ZSA9PT0gYU9wZXJhdG9yVmFsdWVzW2pdKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IGZhbHNlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFiRXhjbHVkZSAmJiBzVmFsdWUgPT09IGFPcGVyYXRvclZhbHVlc1tqXSkge1xuXHRcdFx0XHRcdGJSZXN1bHQgPSB0cnVlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9KTtcblx0cmV0dXJuIGJSZXN1bHQ7XG59XG5jb25zdCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgPSB7XG5cdC8vIEV4dGVuZGluZyBvcGVyYXRvcnMgZm9yIFNlbWF0aWMgRGF0ZSBDb250cm9sXG5cdGFkZFNlbWFudGljRGF0ZU9wZXJhdG9yczogZnVuY3Rpb24gKCkge1xuXHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IChDb3JlIGFzIENvcmVFeCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIik7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXREYXRlUmFuZ2VPcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldERhdGVPcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldEZyb21PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldFRvT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdH0sXG5cdGdldFN1cHBvcnRlZE9wZXJhdGlvbnM6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gYVN1cHBvcnRlZE9wZXJhdGlvbnM7XG5cdH0sXG5cdGdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnM6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMobVNlbWFudGljRGF0ZU9wZXJhdGlvbnMpO1xuXHR9LFxuXHQvLyBUT0RPOiBXb3VsZCBuZWVkIHRvIGNoZWNrIHdpdGggTURDIGZvciByZW1vdmVPcGVyYXRvciBtZXRob2Rcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuXHRyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnM6IGZ1bmN0aW9uICgpIHt9LFxuXHQvLyBUbyBmaWx0ZXIgb3BlcmF0b3JzIGJhc2VkIG9uIG1hbmlmZXN0IGFPcGVyYXRvckNvbmZpZ3VyYXRpb24gc2V0dGluZ3Ncblx0Z2V0RmlsdGVyT3BlcmF0aW9uczogZnVuY3Rpb24gKGFPcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRcdGNvbnN0IGFPcGVyYXRpb25zID0gW107XG5cdFx0Zm9yIChjb25zdCBuIGluIG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zKSB7XG5cdFx0XHRjb25zdCBvT3BlcmF0aW9uID0gbVNlbWFudGljRGF0ZU9wZXJhdGlvbnNbbl07XG5cdFx0XHRpZiAoX2ZpbHRlck9wZXJhdGlvbihvT3BlcmF0aW9uLCBhT3BlcmF0b3JDb25maWd1cmF0aW9uKSkge1xuXHRcdFx0XHRhT3BlcmF0aW9ucy5wdXNoKG9PcGVyYXRpb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gYU9wZXJhdGlvbnMubWFwKGZ1bmN0aW9uIChvT3BlcmF0aW9uOiBhbnkpIHtcblx0XHRcdHJldHVybiBvT3BlcmF0aW9uLmtleTtcblx0XHR9KTtcblx0fSxcblx0aGFzU2VtYW50aWNEYXRlT3BlcmF0aW9uczogZnVuY3Rpb24gKG9Db25kaXRpb25zOiBhbnkpIHtcblx0XHRjb25zdCBhU2VtYW50aWNEYXRlT3BzID0gdGhpcy5nZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zKCk7XG5cdFx0Zm9yIChjb25zdCBuIGluIG9Db25kaXRpb25zKSB7XG5cdFx0XHRjb25zdCBhRmlsdGVyQ29uZHRpb24gPSBvQ29uZGl0aW9uc1tuXTtcblx0XHRcdGNvbnN0IG9TZW1hbnRpY09wZXJhdG9yID0gYUZpbHRlckNvbmR0aW9uLmZpbmQoZnVuY3Rpb24gKG9Db25kaXRpb246IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gYVNlbWFudGljRGF0ZU9wcy5pbmRleE9mKG9Db25kaXRpb24ub3BlcmF0b3IpID4gLTE7XG5cdFx0XHR9KTtcblx0XHRcdGlmIChvU2VtYW50aWNPcGVyYXRvcikge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZW1hbnRpY0RhdGVPcGVyYXRvcnM7XG4iXX0=
|
|
395
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhU3VwcG9ydGVkT3BlcmF0aW9ucyIsIkRZTkFNSUNfREFURV9DQVRFR09SWSIsIkZJWEVEX0RBVEVfQ0FURUdPUlkiLCJEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUlkiLCJEWU5BTUlDX01PTlRIX0NBVEVHT1JZIiwiRklYRURfV0VFS19DQVRFR09SWSIsIkZJWEVEX01PTlRIX0NBVEVHT1JZIiwiRklYRURfUVVBUlRFUl9DQVRFR09SWSIsIkZJWEVEX1lFQVJfQ0FURUdPUlkiLCJEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkiLCJEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWSIsIm1TZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiX2dldERhdGVSYW5nZU9wZXJhdG9yIiwiT3BlcmF0b3IiLCJuYW1lIiwiZmlsdGVyT3BlcmF0b3IiLCJNb2RlbE9wZXJhdG9yIiwiQlQiLCJhbGlhcyIsIkRhdGUiLCJEYXRlVGltZSIsInZhbHVlVHlwZXMiLCJWYWx1ZVR5cGUiLCJTZWxmIiwidmFsaWRhdGUiLCJhVmFsdWVzIiwib1R5cGUiLCJsZW5ndGgiLCJWYWxpZGF0ZUV4Y2VwdGlvbiIsImZyb21EYXRlIiwidG9EYXRlIiwiZ2V0VGltZSIsInByb3RvdHlwZSIsImFwcGx5IiwiX2dldERhdGVPcGVyYXRvciIsIkVRIiwiZ2V0TW9kZWxGaWx0ZXIiLCJvQ29uZGl0aW9uIiwic0ZpZWxkUGF0aCIsIlNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImdldE1vZGVsRmlsdGVyRm9yRGF0ZSIsIl9nZXRGcm9tT3BlcmF0b3IiLCJHRSIsIl9nZXRUb09wZXJhdG9yIiwiTEUiLCJnZXRNb2RlbEZpbHRlckZvclRvIiwiX2ZpbHRlck9wZXJhdGlvbiIsIm9PcGVyYXRpb24iLCJhT3BlcmF0b3JDb25maWd1cmF0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwiYlJlc3VsdCIsInNvbWUiLCJvT3BlcmF0b3JDb25maWd1cmF0aW9uIiwiaiIsInBhdGgiLCJzVmFsdWUiLCJiRXhjbHVkZSIsImV4Y2x1ZGUiLCJhT3BlcmF0b3JWYWx1ZXMiLCJjb250YWlucyIsInNwbGl0IiwiaW5kZXhPZiIsImVxdWFscyIsImFkZFNlbWFudGljRGF0ZU9wZXJhdG9ycyIsIkZpbHRlck9wZXJhdG9yVXRpbCIsImFkZE9wZXJhdG9yIiwiZ2V0U3VwcG9ydGVkT3BlcmF0aW9ucyIsImdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnMiLCJPYmplY3QiLCJrZXlzIiwicmVtb3ZlU2VtYW50aWNEYXRlT3BlcmF0b3JzIiwiZ2V0RmlsdGVyT3BlcmF0aW9ucyIsImFPcGVyYXRpb25zIiwibiIsInB1c2giLCJtYXAiLCJrZXkiLCJoYXNTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwib0NvbmRpdGlvbnMiLCJhU2VtYW50aWNEYXRlT3BzIiwiYUZpbHRlckNvbmR0aW9uIiwib1NlbWFudGljT3BlcmF0b3IiLCJmaW5kIiwib3BlcmF0b3IiLCJpc0EiLCJzRnJvbSIsInZhbHVlcyIsIm9Nb2RlbEZvcm1hdCIsImdldE1vZGVsRm9ybWF0Iiwib0RhdGUiLCJwYXJzZSIsInNldEhvdXJzIiwic2V0TWludXRlcyIsInNldFNlY29uZHMiLCJzZXRNaWxsaXNlY29uZHMiLCJzVG8iLCJmb3JtYXQiLCJGaWx0ZXIiLCJ2YWx1ZTEiLCJ2YWx1ZTIiLCJ2YWx1ZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU2VtYW50aWNEYXRlT3BlcmF0b3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGaWx0ZXJPcGVyYXRvclV0aWwgZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0ZpbHRlck9wZXJhdG9yVXRpbFwiO1xuaW1wb3J0IE9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9PcGVyYXRvclwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IE1vZGVsT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IFZhbGlkYXRlRXhjZXB0aW9uIGZyb20gXCJzYXAvdWkvbW9kZWwvVmFsaWRhdGVFeGNlcHRpb25cIjtcblxuY29uc3QgYVN1cHBvcnRlZE9wZXJhdGlvbnMgPSBbXCJEQVRFXCIsIFwiRlJPTVwiLCBcIlRPXCIsIFwiREFURVJBTkdFXCJdO1xuY29uc3QgRFlOQU1JQ19EQVRFX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEVcIjtcbmNvbnN0IEZJWEVEX0RBVEVfQ0FURUdPUlkgPSBcIkZJWEVELkRBVEVcIjtcbmNvbnN0IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuREFURS5JTlRcIjtcbmNvbnN0IERZTkFNSUNfREFURVJBTkdFX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEVSQU5HRVwiO1xuY29uc3QgRFlOQU1JQ19NT05USF9DQVRFR09SWSA9IFwiRFlOQU1JQy5NT05USFwiO1xuY29uc3QgRklYRURfV0VFS19DQVRFR09SWSA9IFwiRklYRUQuV0VFS1wiO1xuY29uc3QgRklYRURfTU9OVEhfQ0FURUdPUlkgPSBcIkZJWEVELk1PTlRIXCI7XG5jb25zdCBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZID0gXCJGSVhFRC5RVUFSVEVSXCI7XG5jb25zdCBGSVhFRF9ZRUFSX0NBVEVHT1JZID0gXCJGSVhFRC5ZRUFSXCI7XG5jb25zdCBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLldFRUsuSU5UXCI7XG5jb25zdCBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWSA9IFwiRFlOQU1JQy5NT05USC5JTlRcIjtcbmNvbnN0IERZTkFNSUNfUVVBUlRFUl9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuUVVBUlRFUi5JTlRcIjtcbmNvbnN0IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuWUVBUi5JTlRcIjtcbmNvbnN0IG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zOiBhbnkgPSB7XG5cdFwiREFURVwiOiB7XG5cdFx0XCJrZXlcIjogXCJEQVRFXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJGUk9NXCI6IHtcblx0XHRcImtleVwiOiBcIkZST01cIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPXCI6IHtcblx0XHRcImtleVwiOiBcIlRPXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJEQVRFUkFOR0VcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVJBTkdFXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVSQU5HRV9DQVRFR09SWVxuXHR9LFxuXHRcIlNQRUNJRklDTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiU1BFQ0lGSUNNT05USFwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIlRPREFZXCI6IHtcblx0XHRcImtleVwiOiBcIlRPREFZXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9EQVlGUk9NVE9cIjoge1xuXHRcdFwia2V5XCI6IFwiVE9EQVlGUk9NVE9cIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJZRVNURVJEQVlcIjoge1xuXHRcdFwia2V5XCI6IFwiWUVTVEVSREFZXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9NT1JST1dcIjoge1xuXHRcdFwia2V5XCI6IFwiVE9NT1JST1dcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUREFZU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUREFZU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFREQVlTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFREQVlTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU1dFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU1dFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUV0VFS1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUV0VFS1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfV0VFS19DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RXRUVLU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUV0VFS1NcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfV0VFS19JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUV0VFS1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUV0VFS1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfV0VFS19DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRXRUVLU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUV0VFS1NcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfV0VFS19JTlRfQ0FURUdPUllcblx0fSxcblx0XCJUSElTTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU01PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVE1PTlRIU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUTU9OVEhTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVE1PTlRIU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUTU9OVEhTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlRISVNRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFFVQVJURVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFFVQVJURVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUUVVBUlRFUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFFVQVJURVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFFVQVJURVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFFVQVJURVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJORVhUUVVBUlRFUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFFVQVJURVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjFcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjFcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJRVUFSVEVSMlwiOiB7XG5cdFx0XCJrZXlcIjogXCJRVUFSVEVSMlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVIzXCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVIzXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjRcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjRcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJUSElTWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJUSElTWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RZRUFSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFlFQVJTXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RZRUFSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRZRUFSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFlFQVJTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRZRUFSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIllFQVJUT0RBVEVcIjoge1xuXHRcdFwia2V5XCI6IFwiWUVBUlRPREFURVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkRBVEVUT1lFQVJcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVRPWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9XG59O1xuXG5mdW5jdGlvbiBfZ2V0RGF0ZVJhbmdlT3BlcmF0b3IoKSB7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiREFURVJBTkdFXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuQlQsXG5cdFx0YWxpYXM6IHsgRGF0ZTogXCJEQVRFUkFOR0VcIiwgRGF0ZVRpbWU6IFwiREFURVJBTkdFXCIgfSxcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGYsIChPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHR2YWxpZGF0ZTogZnVuY3Rpb24gKGFWYWx1ZXM6IGFueSwgb1R5cGU6IGFueSkge1xuXHRcdFx0aWYgKGFWYWx1ZXMubGVuZ3RoIDwgMikge1xuXHRcdFx0XHR0aHJvdyBuZXcgVmFsaWRhdGVFeGNlcHRpb24oXCJEYXRlIFJhbmdlIG11c3QgaGF2ZSB0d28gdmFsdWVzXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgZnJvbURhdGUgPSBuZXcgRGF0ZShhVmFsdWVzWzBdKTtcblx0XHRcdFx0Y29uc3QgdG9EYXRlID0gbmV3IERhdGUoYVZhbHVlc1sxXSk7XG5cdFx0XHRcdGlmIChmcm9tRGF0ZS5nZXRUaW1lKCkgPiB0b0RhdGUuZ2V0VGltZSgpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFZhbGlkYXRlRXhjZXB0aW9uKFwiRnJvbSBEYXRlIFNob3VsZCBCZSBMZXNzIFRoYW4gVG8gRGF0ZVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0T3BlcmF0b3IucHJvdG90eXBlLnZhbGlkYXRlLmFwcGx5KHRoaXMsIFthVmFsdWVzLCBvVHlwZV0pO1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9nZXREYXRlT3BlcmF0b3IoKSB7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiREFURVwiLFxuXHRcdGFsaWFzOiB7IERhdGU6IFwiREFURVwiLCBEYXRlVGltZTogXCJEQVRFXCIgfSxcblx0XHRmaWx0ZXJPcGVyYXRvcjogTW9kZWxPcGVyYXRvci5FUSxcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGdldE1vZGVsRmlsdGVyOiBmdW5jdGlvbiAob0NvbmRpdGlvbjogYW55LCBzRmllbGRQYXRoOiBhbnksIG9UeXBlOiBhbnkpIHtcblx0XHRcdHJldHVybiBTZW1hbnRpY0RhdGVPcGVyYXRvcnMuZ2V0TW9kZWxGaWx0ZXJGb3JEYXRlKG9Db25kaXRpb24sIHNGaWVsZFBhdGgsIG9UeXBlKTtcblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBfZ2V0RnJvbU9wZXJhdG9yKCkge1xuXHRyZXR1cm4gbmV3IE9wZXJhdG9yKHtcblx0XHRuYW1lOiBcIkZST01cIixcblx0XHRhbGlhczogeyBEYXRlOiBcIkZST01cIiwgRGF0ZVRpbWU6IFwiRlJPTVwiIH0sXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuR0UsXG5cdFx0dmFsdWVUeXBlczogWyhPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gX2dldFRvT3BlcmF0b3IoKSB7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiVE9cIixcblx0XHRhbGlhczogeyBEYXRlOiBcIlRPXCIsIERhdGVUaW1lOiBcIlRPXCIgfSxcblx0XHRmaWx0ZXJPcGVyYXRvcjogTW9kZWxPcGVyYXRvci5MRSxcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGdldE1vZGVsRmlsdGVyOiBmdW5jdGlvbiAob0NvbmRpdGlvbjogYW55LCBzRmllbGRQYXRoOiBhbnksIG9UeXBlOiBhbnkpIHtcblx0XHRcdHJldHVybiBTZW1hbnRpY0RhdGVPcGVyYXRvcnMuZ2V0TW9kZWxGaWx0ZXJGb3JUbyhvQ29uZGl0aW9uLCBzRmllbGRQYXRoLCBvVHlwZSk7XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gX2ZpbHRlck9wZXJhdGlvbihvT3BlcmF0aW9uOiBhbnksIGFPcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRpZiAoIWFPcGVyYXRvckNvbmZpZ3VyYXRpb24pIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRhT3BlcmF0b3JDb25maWd1cmF0aW9uID0gQXJyYXkuaXNBcnJheShhT3BlcmF0b3JDb25maWd1cmF0aW9uKSA/IGFPcGVyYXRvckNvbmZpZ3VyYXRpb24gOiBbYU9wZXJhdG9yQ29uZmlndXJhdGlvbl07XG5cdGxldCBiUmVzdWx0O1xuXG5cdGFPcGVyYXRvckNvbmZpZ3VyYXRpb24uc29tZShmdW5jdGlvbiAob09wZXJhdG9yQ29uZmlndXJhdGlvbjogYW55KSB7XG5cdFx0bGV0IGo7XG5cdFx0aWYgKCFvT3BlcmF0b3JDb25maWd1cmF0aW9uLnBhdGgpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRjb25zdCBzVmFsdWUgPSBvT3BlcmF0aW9uW29PcGVyYXRvckNvbmZpZ3VyYXRpb24ucGF0aF07XG5cdFx0Y29uc3QgYkV4Y2x1ZGUgPSBvT3BlcmF0b3JDb25maWd1cmF0aW9uLmV4Y2x1ZGUgfHwgZmFsc2U7XG5cdFx0bGV0IGFPcGVyYXRvclZhbHVlcztcblxuXHRcdGlmIChvT3BlcmF0b3JDb25maWd1cmF0aW9uLmNvbnRhaW5zICYmIHNWYWx1ZSkge1xuXHRcdFx0YU9wZXJhdG9yVmFsdWVzID0gb09wZXJhdG9yQ29uZmlndXJhdGlvbi5jb250YWlucy5zcGxpdChcIixcIik7XG5cdFx0XHRiUmVzdWx0ID0gYkV4Y2x1ZGU7XG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgYU9wZXJhdG9yVmFsdWVzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGlmIChiRXhjbHVkZSAmJiBzVmFsdWUuaW5kZXhPZihhT3BlcmF0b3JWYWx1ZXNbal0pID4gLTEpIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gZmFsc2U7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIWJFeGNsdWRlICYmIHNWYWx1ZS5pbmRleE9mKGFPcGVyYXRvclZhbHVlc1tqXSkgPiAtMSkge1xuXHRcdFx0XHRcdGJSZXN1bHQgPSB0cnVlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uZXF1YWxzICYmIHNWYWx1ZSkge1xuXHRcdFx0YU9wZXJhdG9yVmFsdWVzID0gb09wZXJhdG9yQ29uZmlndXJhdGlvbi5lcXVhbHMuc3BsaXQoXCIsXCIpO1xuXHRcdFx0YlJlc3VsdCA9IGJFeGNsdWRlO1xuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGFPcGVyYXRvclZhbHVlcy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRpZiAoYkV4Y2x1ZGUgJiYgc1ZhbHVlID09PSBhT3BlcmF0b3JWYWx1ZXNbal0pIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gZmFsc2U7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIWJFeGNsdWRlICYmIHNWYWx1ZSA9PT0gYU9wZXJhdG9yVmFsdWVzW2pdKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IHRydWU7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0pO1xuXHRyZXR1cm4gYlJlc3VsdDtcbn1cbmNvbnN0IFNlbWFudGljRGF0ZU9wZXJhdG9ycyA9IHtcblx0Ly8gRXh0ZW5kaW5nIG9wZXJhdG9ycyBmb3IgU2VtYXRpYyBEYXRlIENvbnRyb2xcblx0YWRkU2VtYW50aWNEYXRlT3BlcmF0b3JzOiBmdW5jdGlvbiAoKSB7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXREYXRlUmFuZ2VPcGVyYXRvcigpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldERhdGVPcGVyYXRvcigpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldEZyb21PcGVyYXRvcigpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldFRvT3BlcmF0b3IoKSk7XG5cdH0sXG5cdGdldFN1cHBvcnRlZE9wZXJhdGlvbnM6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gYVN1cHBvcnRlZE9wZXJhdGlvbnM7XG5cdH0sXG5cdGdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnM6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMobVNlbWFudGljRGF0ZU9wZXJhdGlvbnMpO1xuXHR9LFxuXHQvLyBUT0RPOiBXb3VsZCBuZWVkIHRvIGNoZWNrIHdpdGggTURDIGZvciByZW1vdmVPcGVyYXRvciBtZXRob2Rcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuXHRyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnM6IGZ1bmN0aW9uICgpIHt9LFxuXHQvLyBUbyBmaWx0ZXIgb3BlcmF0b3JzIGJhc2VkIG9uIG1hbmlmZXN0IGFPcGVyYXRvckNvbmZpZ3VyYXRpb24gc2V0dGluZ3Ncblx0Z2V0RmlsdGVyT3BlcmF0aW9uczogZnVuY3Rpb24gKGFPcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRcdGNvbnN0IGFPcGVyYXRpb25zID0gW107XG5cdFx0Zm9yIChjb25zdCBuIGluIG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zKSB7XG5cdFx0XHRjb25zdCBvT3BlcmF0aW9uID0gbVNlbWFudGljRGF0ZU9wZXJhdGlvbnNbbl07XG5cdFx0XHRpZiAoX2ZpbHRlck9wZXJhdGlvbihvT3BlcmF0aW9uLCBhT3BlcmF0b3JDb25maWd1cmF0aW9uKSkge1xuXHRcdFx0XHRhT3BlcmF0aW9ucy5wdXNoKG9PcGVyYXRpb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gYU9wZXJhdGlvbnMubWFwKGZ1bmN0aW9uIChvT3BlcmF0aW9uOiBhbnkpIHtcblx0XHRcdHJldHVybiBvT3BlcmF0aW9uLmtleTtcblx0XHR9KTtcblx0fSxcblx0aGFzU2VtYW50aWNEYXRlT3BlcmF0aW9uczogZnVuY3Rpb24gKG9Db25kaXRpb25zOiBhbnkpIHtcblx0XHRjb25zdCBhU2VtYW50aWNEYXRlT3BzID0gdGhpcy5nZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zKCk7XG5cdFx0Zm9yIChjb25zdCBuIGluIG9Db25kaXRpb25zKSB7XG5cdFx0XHRjb25zdCBhRmlsdGVyQ29uZHRpb24gPSBvQ29uZGl0aW9uc1tuXTtcblx0XHRcdGNvbnN0IG9TZW1hbnRpY09wZXJhdG9yID0gYUZpbHRlckNvbmR0aW9uLmZpbmQoZnVuY3Rpb24gKG9Db25kaXRpb246IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gYVNlbWFudGljRGF0ZU9wcy5pbmRleE9mKG9Db25kaXRpb24ub3BlcmF0b3IpID4gLTE7XG5cdFx0XHR9KTtcblx0XHRcdGlmIChvU2VtYW50aWNPcGVyYXRvcikge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdGdldE1vZGVsRmlsdGVyRm9yRGF0ZTogZnVuY3Rpb24gKG9Db25kaXRpb246IGFueSwgc0ZpZWxkUGF0aDogYW55LCBvVHlwZTogYW55KSB7XG5cdFx0aWYgKG9UeXBlLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkRhdGVUaW1lT2Zmc2V0XCIpKSB7XG5cdFx0XHRjb25zdCBzRnJvbSA9IG9Db25kaXRpb24udmFsdWVzWzBdO1xuXHRcdFx0Y29uc3Qgb01vZGVsRm9ybWF0ID0gb1R5cGUuZ2V0TW9kZWxGb3JtYXQoKTsgLy8gdXNlIE1vZGVsRm9ybWF0IHRvIGNvbnZlcnQgaW4gSlMtRGF0ZSBhbmQgYWRkIDIzOjU5OjU5XG5cdFx0XHRjb25zdCBvRGF0ZSA9IG9Nb2RlbEZvcm1hdC5wYXJzZShzRnJvbSk7XG5cdFx0XHRvRGF0ZS5zZXRIb3VycygyMyk7XG5cdFx0XHRvRGF0ZS5zZXRNaW51dGVzKDU5KTtcblx0XHRcdG9EYXRlLnNldFNlY29uZHMoNTkpO1xuXHRcdFx0b0RhdGUuc2V0TWlsbGlzZWNvbmRzKDk5OSk7XG5cdFx0XHRjb25zdCBzVG8gPSBvTW9kZWxGb3JtYXQuZm9ybWF0KG9EYXRlKTtcblx0XHRcdHJldHVybiBuZXcgRmlsdGVyKHsgcGF0aDogc0ZpZWxkUGF0aCwgb3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuQlQsIHZhbHVlMTogc0Zyb20sIHZhbHVlMjogc1RvIH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gbmV3IEZpbHRlcih7IHBhdGg6IHNGaWVsZFBhdGgsIG9wZXJhdG9yOiBNb2RlbE9wZXJhdG9yLkVRLCB2YWx1ZTE6IG9Db25kaXRpb24udmFsdWVzWzBdIH0pO1xuXHRcdH1cblx0fSxcblxuXHRnZXRNb2RlbEZpbHRlckZvclRvOiBmdW5jdGlvbiAob0NvbmRpdGlvbjogYW55LCBzRmllbGRQYXRoOiBhbnksIG9UeXBlOiBhbnkpIHtcblx0XHRpZiAob1R5cGUuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGF0ZVRpbWVPZmZzZXRcIikpIHtcblx0XHRcdGNvbnN0IHZhbHVlID0gb0NvbmRpdGlvbi52YWx1ZXNbMF07XG5cdFx0XHRjb25zdCBvTW9kZWxGb3JtYXQgPSBvVHlwZS5nZXRNb2RlbEZvcm1hdCgpOyAvLyB1c2UgTW9kZWxGb3JtYXQgdG8gY29udmVydCBpbiBKUy1EYXRlIGFuZCBhZGQgMjM6NTk6NTlcblx0XHRcdGNvbnN0IG9EYXRlID0gb01vZGVsRm9ybWF0LnBhcnNlKHZhbHVlKTtcblx0XHRcdG9EYXRlLnNldEhvdXJzKDIzKTtcblx0XHRcdG9EYXRlLnNldE1pbnV0ZXMoNTkpO1xuXHRcdFx0b0RhdGUuc2V0U2Vjb25kcyg1OSk7XG5cdFx0XHRvRGF0ZS5zZXRNaWxsaXNlY29uZHMoOTk5KTtcblx0XHRcdGNvbnN0IHNUbyA9IG9Nb2RlbEZvcm1hdC5mb3JtYXQob0RhdGUpO1xuXHRcdFx0cmV0dXJuIG5ldyBGaWx0ZXIoeyBwYXRoOiBzRmllbGRQYXRoLCBvcGVyYXRvcjogTW9kZWxPcGVyYXRvci5MRSwgdmFsdWUxOiBzVG8gfSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBuZXcgRmlsdGVyKHsgcGF0aDogc0ZpZWxkUGF0aCwgb3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuTEUsIHZhbHVlMTogb0NvbmRpdGlvbi52YWx1ZXNbMF0gfSk7XG5cdFx0fVxuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZW1hbnRpY0RhdGVPcGVyYXRvcnM7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7RUFNQSxJQUFNQSxvQkFBb0IsR0FBRyxDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLElBQWpCLEVBQXVCLFdBQXZCLENBQTdCO0VBQ0EsSUFBTUMscUJBQXFCLEdBQUcsY0FBOUI7RUFDQSxJQUFNQyxtQkFBbUIsR0FBRyxZQUE1QjtFQUNBLElBQU1DLHlCQUF5QixHQUFHLGtCQUFsQztFQUNBLElBQU1DLDBCQUEwQixHQUFHLG1CQUFuQztFQUNBLElBQU1DLHNCQUFzQixHQUFHLGVBQS9CO0VBQ0EsSUFBTUMsbUJBQW1CLEdBQUcsWUFBNUI7RUFDQSxJQUFNQyxvQkFBb0IsR0FBRyxhQUE3QjtFQUNBLElBQU1DLHNCQUFzQixHQUFHLGVBQS9CO0VBQ0EsSUFBTUMsbUJBQW1CLEdBQUcsWUFBNUI7RUFDQSxJQUFNQyx5QkFBeUIsR0FBRyxrQkFBbEM7RUFDQSxJQUFNQywwQkFBMEIsR0FBRyxtQkFBbkM7RUFDQSxJQUFNQyw0QkFBNEIsR0FBRyxxQkFBckM7RUFDQSxJQUFNQyx5QkFBeUIsR0FBRyxrQkFBbEM7RUFDQSxJQUFNQyx1QkFBNEIsR0FBRztJQUNwQyxRQUFRO01BQ1AsT0FBTyxNQURBO01BRVAsWUFBWWI7SUFGTCxDQUQ0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
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import Core from "sap/ui/core/Core";
|
|
2
1
|
import FilterOperatorUtil from "sap/ui/mdc/condition/FilterOperatorUtil";
|
|
3
2
|
import Operator from "sap/ui/mdc/condition/Operator";
|
|
3
|
+
import Filter from "sap/ui/model/Filter";
|
|
4
4
|
import ModelOperator from "sap/ui/model/FilterOperator";
|
|
5
5
|
import ValidateException from "sap/ui/model/ValidateException";
|
|
6
|
-
import type { CoreEx } from "types/extension_types";
|
|
7
6
|
|
|
8
7
|
const aSupportedOperations = ["DATE", "FROM", "TO", "DATERANGE"];
|
|
9
8
|
const DYNAMIC_DATE_CATEGORY = "DYNAMIC.DATE";
|
|
@@ -170,17 +169,12 @@ const mSemanticDateOperations: any = {
|
|
|
170
169
|
}
|
|
171
170
|
};
|
|
172
171
|
|
|
173
|
-
function _getDateRangeOperator(
|
|
174
|
-
const sDateRange = oResourceBundle && oResourceBundle.getText("C_DATE_RANGE");
|
|
172
|
+
function _getDateRangeOperator() {
|
|
175
173
|
return new Operator({
|
|
176
174
|
name: "DATERANGE",
|
|
177
175
|
filterOperator: ModelOperator.BT,
|
|
178
|
-
|
|
179
|
-
tokenFormat: "#tokenText# ({0} - {1})",
|
|
176
|
+
alias: { Date: "DATERANGE", DateTime: "DATERANGE" },
|
|
180
177
|
valueTypes: [(Operator as any).ValueType.Self, (Operator as any).ValueType.Self],
|
|
181
|
-
longText: sDateRange,
|
|
182
|
-
tokenText: sDateRange,
|
|
183
|
-
additionalInfo: "",
|
|
184
178
|
validate: function (aValues: any, oType: any) {
|
|
185
179
|
if (aValues.length < 2) {
|
|
186
180
|
throw new ValidateException("Date Range must have two values");
|
|
@@ -196,45 +190,36 @@ function _getDateRangeOperator(oResourceBundle: any) {
|
|
|
196
190
|
});
|
|
197
191
|
}
|
|
198
192
|
|
|
199
|
-
function _getDateOperator(
|
|
200
|
-
const sDate = oResourceBundle && oResourceBundle.getText("C_DATE");
|
|
193
|
+
function _getDateOperator() {
|
|
201
194
|
return new Operator({
|
|
202
195
|
name: "DATE",
|
|
196
|
+
alias: { Date: "DATE", DateTime: "DATE" },
|
|
203
197
|
filterOperator: ModelOperator.EQ,
|
|
204
|
-
tokenParse: "^#tokenText# \\((.+)\\)$",
|
|
205
|
-
tokenFormat: "#tokenText# ({0})",
|
|
206
198
|
valueTypes: [(Operator as any).ValueType.Self],
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
199
|
+
getModelFilter: function (oCondition: any, sFieldPath: any, oType: any) {
|
|
200
|
+
return SemanticDateOperators.getModelFilterForDate(oCondition, sFieldPath, oType);
|
|
201
|
+
}
|
|
210
202
|
});
|
|
211
203
|
}
|
|
212
204
|
|
|
213
|
-
function _getFromOperator(
|
|
214
|
-
const sFrom = oResourceBundle && oResourceBundle.getText("C_FROM");
|
|
205
|
+
function _getFromOperator() {
|
|
215
206
|
return new Operator({
|
|
216
207
|
name: "FROM",
|
|
208
|
+
alias: { Date: "FROM", DateTime: "FROM" },
|
|
217
209
|
filterOperator: ModelOperator.GE,
|
|
218
|
-
|
|
219
|
-
tokenFormat: "#tokenText# ({0})",
|
|
220
|
-
valueTypes: [(Operator as any).ValueType.Self],
|
|
221
|
-
longText: sFrom,
|
|
222
|
-
tokenText: sFrom,
|
|
223
|
-
additionalInfo: ""
|
|
210
|
+
valueTypes: [(Operator as any).ValueType.Self]
|
|
224
211
|
});
|
|
225
212
|
}
|
|
226
213
|
|
|
227
|
-
function _getToOperator(
|
|
228
|
-
const sTo = oResourceBundle && oResourceBundle.getText("C_TO");
|
|
214
|
+
function _getToOperator() {
|
|
229
215
|
return new Operator({
|
|
230
216
|
name: "TO",
|
|
217
|
+
alias: { Date: "TO", DateTime: "TO" },
|
|
231
218
|
filterOperator: ModelOperator.LE,
|
|
232
|
-
tokenParse: "^#tokenText# \\((.+)\\)$",
|
|
233
|
-
tokenFormat: "#tokenText# ({0})",
|
|
234
219
|
valueTypes: [(Operator as any).ValueType.Self],
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
220
|
+
getModelFilter: function (oCondition: any, sFieldPath: any, oType: any) {
|
|
221
|
+
return SemanticDateOperators.getModelFilterForTo(oCondition, sFieldPath, oType);
|
|
222
|
+
}
|
|
238
223
|
});
|
|
239
224
|
}
|
|
240
225
|
|
|
@@ -290,11 +275,10 @@ function _filterOperation(oOperation: any, aOperatorConfiguration: any) {
|
|
|
290
275
|
const SemanticDateOperators = {
|
|
291
276
|
// Extending operators for Sematic Date Control
|
|
292
277
|
addSemanticDateOperators: function () {
|
|
293
|
-
|
|
294
|
-
FilterOperatorUtil.addOperator(
|
|
295
|
-
FilterOperatorUtil.addOperator(
|
|
296
|
-
FilterOperatorUtil.addOperator(
|
|
297
|
-
FilterOperatorUtil.addOperator(_getToOperator(oResourceBundle));
|
|
278
|
+
FilterOperatorUtil.addOperator(_getDateRangeOperator());
|
|
279
|
+
FilterOperatorUtil.addOperator(_getDateOperator());
|
|
280
|
+
FilterOperatorUtil.addOperator(_getFromOperator());
|
|
281
|
+
FilterOperatorUtil.addOperator(_getToOperator());
|
|
298
282
|
},
|
|
299
283
|
getSupportedOperations: function () {
|
|
300
284
|
return aSupportedOperations;
|
|
@@ -330,6 +314,38 @@ const SemanticDateOperators = {
|
|
|
330
314
|
}
|
|
331
315
|
}
|
|
332
316
|
return true;
|
|
317
|
+
},
|
|
318
|
+
|
|
319
|
+
getModelFilterForDate: function (oCondition: any, sFieldPath: any, oType: any) {
|
|
320
|
+
if (oType.isA("sap.ui.model.odata.type.DateTimeOffset")) {
|
|
321
|
+
const sFrom = oCondition.values[0];
|
|
322
|
+
const oModelFormat = oType.getModelFormat(); // use ModelFormat to convert in JS-Date and add 23:59:59
|
|
323
|
+
const oDate = oModelFormat.parse(sFrom);
|
|
324
|
+
oDate.setHours(23);
|
|
325
|
+
oDate.setMinutes(59);
|
|
326
|
+
oDate.setSeconds(59);
|
|
327
|
+
oDate.setMilliseconds(999);
|
|
328
|
+
const sTo = oModelFormat.format(oDate);
|
|
329
|
+
return new Filter({ path: sFieldPath, operator: ModelOperator.BT, value1: sFrom, value2: sTo });
|
|
330
|
+
} else {
|
|
331
|
+
return new Filter({ path: sFieldPath, operator: ModelOperator.EQ, value1: oCondition.values[0] });
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
|
|
335
|
+
getModelFilterForTo: function (oCondition: any, sFieldPath: any, oType: any) {
|
|
336
|
+
if (oType.isA("sap.ui.model.odata.type.DateTimeOffset")) {
|
|
337
|
+
const value = oCondition.values[0];
|
|
338
|
+
const oModelFormat = oType.getModelFormat(); // use ModelFormat to convert in JS-Date and add 23:59:59
|
|
339
|
+
const oDate = oModelFormat.parse(value);
|
|
340
|
+
oDate.setHours(23);
|
|
341
|
+
oDate.setMinutes(59);
|
|
342
|
+
oDate.setSeconds(59);
|
|
343
|
+
oDate.setMilliseconds(999);
|
|
344
|
+
const sTo = oModelFormat.format(oDate);
|
|
345
|
+
return new Filter({ path: sFieldPath, operator: ModelOperator.LE, value1: sTo });
|
|
346
|
+
} else {
|
|
347
|
+
return new Filter({ path: sFieldPath, operator: ModelOperator.LE, value1: oCondition.values[0] });
|
|
348
|
+
}
|
|
333
349
|
}
|
|
334
350
|
};
|
|
335
351
|
|
|
@@ -73,4 +73,4 @@ sap.ui.define(["sap/base/Log"], function (Log) {
|
|
|
73
73
|
};
|
|
74
74
|
return SemanticKeyHelper;
|
|
75
75
|
}, false);
|
|
76
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZW1hbnRpY0tleUhlbHBlciIsImdldFNlbWFudGljS2V5cyIsIm9NZXRhTW9kZWwiLCJzRW50aXR5U2V0TmFtZSIsImdldE9iamVjdCIsImdldFNlbWFudGljT2JqZWN0SW5mb3JtYXRpb24iLCJvU2VtYW50aWNPYmplY3QiLCJhU2VtYW50aWNLZXlzIiwic2VtYW50aWNPYmplY3QiLCJzZW1hbnRpY0tleXMiLCJnZXRTZW1hbnRpY1BhdGgiLCJvQ29udGV4dCIsImJTdHJpY3QiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsImdldE1ldGFDb250ZXh0IiwiZ2V0UGF0aCIsIm9TZW1hbnRpY09iamVjdEluZm9ybWF0aW9uIiwic1RlY2huaWNhbFBhdGgiLCJzU2VtYW50aWNQYXRoIiwiaXNBIiwiaXNSZWxhdGl2ZSIsImdldEhlYWRlckNvbnRleHQiLCJfaXNQYXRoRm9yU2VtYW50aWMiLCJvRW50aXR5VHlwZSIsIiRUeXBlIiwic1NlbWFudGljS2V5c1BhcnQiLCJtYXAiLCJvU2VtYW50aWNLZXkiLCJzUHJvcGVydHlQYXRoIiwiJFByb3BlcnR5UGF0aCIsInNLZXlWYWx1ZSIsImdldFByb3BlcnR5IiwidW5kZWZpbmVkIiwiRXJyb3IiLCJlbmNvZGVVUklDb21wb25lbnQiLCJsZW5ndGgiLCJqb2luIiwiZSIsIkxvZyIsImluZm8iLCJzUGF0aCIsInRlc3QiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlNlbWFudGljS2V5SGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuXG5jb25zdCBTZW1hbnRpY0tleUhlbHBlciA9IHtcblx0Z2V0U2VtYW50aWNLZXlzOiBmdW5jdGlvbiAob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsIHNFbnRpdHlTZXROYW1lOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gb01ldGFNb2RlbC5nZXRPYmplY3QoYC8ke3NFbnRpdHlTZXROYW1lfS9AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNlbWFudGljS2V5YCk7XG5cdH0sXG5cdGdldFNlbWFudGljT2JqZWN0SW5mb3JtYXRpb246IGZ1bmN0aW9uIChvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCwgc0VudGl0eVNldE5hbWU6IHN0cmluZykge1xuXHRcdGNvbnN0IG9TZW1hbnRpY09iamVjdCA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX0vQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY09iamVjdGApO1xuXHRcdGNvbnN0IGFTZW1hbnRpY0tleXMgPSB0aGlzLmdldFNlbWFudGljS2V5cyhvTWV0YU1vZGVsLCBzRW50aXR5U2V0TmFtZSk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbWFudGljT2JqZWN0OiBvU2VtYW50aWNPYmplY3QsXG5cdFx0XHRzZW1hbnRpY0tleXM6IGFTZW1hbnRpY0tleXNcblx0XHR9O1xuXHR9LFxuXHRnZXRTZW1hbnRpY1BhdGg6IGZ1bmN0aW9uIChvQ29udGV4dDogYW55LCBiU3RyaWN0OiBib29sZWFuID0gZmFsc2UpIHtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdHNFbnRpdHlTZXROYW1lID0gb01ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChvQ29udGV4dC5nZXRQYXRoKCkpLmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLFxuXHRcdFx0b1NlbWFudGljT2JqZWN0SW5mb3JtYXRpb24gPSB0aGlzLmdldFNlbWFudGljT2JqZWN0SW5mb3JtYXRpb24ob01ldGFNb2RlbCwgc0VudGl0eVNldE5hbWUpO1xuXHRcdGxldCBzVGVjaG5pY2FsUGF0aCwgc1NlbWFudGljUGF0aDtcblxuXHRcdGlmIChvQ29udGV4dC5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSAmJiBvQ29udGV4dC5pc1JlbGF0aXZlKCkpIHtcblx0XHRcdHNUZWNobmljYWxQYXRoID0gb0NvbnRleHQuZ2V0SGVhZGVyQ29udGV4dCgpLmdldFBhdGgoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c1RlY2huaWNhbFBhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX2lzUGF0aEZvclNlbWFudGljKHNUZWNobmljYWxQYXRoKSAmJiBvU2VtYW50aWNPYmplY3RJbmZvcm1hdGlvbi5zZW1hbnRpY0tleXMpIHtcblx0XHRcdGNvbnN0IGFTZW1hbnRpY0tleXMgPSBvU2VtYW50aWNPYmplY3RJbmZvcm1hdGlvbi5zZW1hbnRpY0tleXMsXG5cdFx0XHRcdG9FbnRpdHlUeXBlID0gb01ldGFNb2RlbC5nZXRPYmplY3QoYC8ke29NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX1gKS4kVHlwZX1gKTtcblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgc1NlbWFudGljS2V5c1BhcnQgPSBhU2VtYW50aWNLZXlzXG5cdFx0XHRcdFx0Lm1hcChmdW5jdGlvbiAob1NlbWFudGljS2V5OiBhbnkpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHNQcm9wZXJ0eVBhdGggPSBvU2VtYW50aWNLZXkuJFByb3BlcnR5UGF0aDtcblx0XHRcdFx0XHRcdGxldCBzS2V5VmFsdWUgPSBvQ29udGV4dC5nZXRQcm9wZXJ0eShzUHJvcGVydHlQYXRoKTtcblxuXHRcdFx0XHRcdFx0aWYgKHNLZXlWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHNLZXlWYWx1ZSA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IHJlc29sdmUgc2VtYW50aWMga2V5IHZhbHVlIGZvciAke3NQcm9wZXJ0eVBhdGh9YCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpZiAob0VudGl0eVR5cGVbc1Byb3BlcnR5UGF0aF0uJFR5cGUgPT09IFwiRWRtLlN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0XHRcdFx0c0tleVZhbHVlID0gYCcke2VuY29kZVVSSUNvbXBvbmVudChzS2V5VmFsdWUpfSdgO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChhU2VtYW50aWNLZXlzLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBTZXZlcmFsIHNlbWFudGljIGtleXMgLS0+IHBhdGggc2hvdWxkIGJlIGVudGl0eVNldChrZXkxPXZhbHVlMSwga2V5Mj12YWx1ZTIsIC4uLilcblx0XHRcdFx0XHRcdFx0XHQvLyBPdGhlcndpc2Ugd2Uga2VlcCBlbnRpdHlTZXQoa2V5VmFsdWUpXG5cdFx0XHRcdFx0XHRcdFx0c0tleVZhbHVlID0gYCR7c1Byb3BlcnR5UGF0aH09JHtzS2V5VmFsdWV9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc0tleVZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmpvaW4oXCIsXCIpO1xuXG5cdFx0XHRcdHNTZW1hbnRpY1BhdGggPSBgLyR7c0VudGl0eVNldE5hbWV9KCR7c1NlbWFudGljS2V5c1BhcnR9KWA7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdExvZy5pbmZvKGUgYXMgYW55KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gYlN0cmljdCA/IHNTZW1hbnRpY1BhdGggOiBzU2VtYW50aWNQYXRoIHx8IHNUZWNobmljYWxQYXRoO1xuXHR9LFxuXG5cdC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXHQvLyBJTlRFUk5BTCBNRVRIT0RTXG5cdC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cdF9pc1BhdGhGb3JTZW1hbnRpYzogZnVuY3Rpb24gKHNQYXRoOiBhbnkpIHtcblx0XHQvLyBPbmx5IHBhdGggb24gcm9vdCBvYmplY3RzIGFsbG93IHNlbWFudGljIGtleXMsIGkuZS4gc1BhdGggPSB4eHgoeXl5KVxuXHRcdHJldHVybiAvXlteXFwoXFwpXStcXChbXlxcKFxcKV0rXFwpJC8udGVzdChzUGF0aCk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlbWFudGljS2V5SGVscGVyO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7O0VBR0EsSUFBTUEsaUJBQWlCLEdBQUc7SUFDekJDLGVBQWUsRUFBRSxVQUFVQyxVQUFWLEVBQXNDQyxjQUF0QyxFQUE4RDtNQUM5RSxPQUFPRCxVQUFVLENBQUNFLFNBQVgsWUFBeUJELGNBQXpCLGtEQUFQO0lBQ0EsQ0FId0I7SUFJekJFLDRCQUE0QixFQUFFLFVBQVVILFVBQVYsRUFBc0NDLGNBQXRDLEVBQThEO01BQzNGLElBQU1HLGVBQWUsR0FBR0osVUFBVSxDQUFDRSxTQUFYLFlBQXlCRCxjQUF6QixxREFBeEI7TUFDQSxJQUFNSSxhQUFhLEdBQUcsS0FBS04sZUFBTCxDQUFxQkMsVUFBckIsRUFBaUNDLGNBQWpDLENBQXRCO01BQ0EsT0FBTztRQUNOSyxjQUFjLEVBQUVGLGVBRFY7UUFFTkcsWUFBWSxFQUFFRjtNQUZSLENBQVA7SUFJQSxDQVh3QjtJQVl6QkcsZUFBZSxFQUFFLFVBQVVDLFFBQVYsRUFBbUQ7TUFBQSxJQUExQkMsT0FBMEIsdUVBQVAsS0FBTztNQUNuRSxJQUFNVixVQUFVLEdBQUdTLFFBQVEsQ0FBQ0UsUUFBVCxHQUFvQkMsWUFBcEIsRUFBbkI7TUFBQSxJQUNDWCxjQUFjLEdBQUdELFVBQVUsQ0FBQ2EsY0FBWCxDQUEwQkosUUFBUSxDQUFDSyxPQUFULEVBQTFCLEVBQThDWixTQUE5QyxDQUF3RCxhQUF4RCxDQURsQjtNQUFBLElBRUNhLDBCQUEwQixHQUFHLEtBQUtaLDRCQUFMLENBQWtDSCxVQUFsQyxFQUE4Q0MsY0FBOUMsQ0FGOUI7TUFHQSxJQUFJZSxjQUFKLEVBQW9CQyxhQUFwQjs7TUFFQSxJQUFJUixRQUFRLENBQUNTLEdBQVQsQ0FBYSx3Q0FBYixLQUEwRFQsUUFBUSxDQUFDVSxVQUFULEVBQTlELEVBQXFGO1FBQ3BGSCxjQUFjLEdBQUdQLFFBQVEsQ0FBQ1csZ0JBQVQsR0FBNEJOLE9BQTVCLEVBQWpCO01BQ0EsQ0FGRCxNQUVPO1FBQ05FLGNBQWMsR0FBR1AsUUFBUSxDQUFDSyxPQUFULEVBQWpCO01BQ0E7O01BRUQsSUFBSSxLQUFLTyxrQkFBTCxDQUF3QkwsY0FBeEIsS0FBMkNELDBCQUEwQixDQUFDUixZQUExRSxFQUF3RjtRQUN2RixJQUFNRixhQUFhLEdBQUdVLDBCQUEwQixDQUFDUixZQUFqRDtRQUFBLElBQ0NlLFdBQVcsR0FBR3RCLFVBQVUsQ0FBQ0UsU0FBWCxZQUF5QkYsVUFBVSxDQUFDRSxTQUFYLFlBQXlCRCxjQUF6QixHQUEyQ3NCLEtBQXBFLEVBRGY7O1FBR0EsSUFBSTtVQUNILElBQU1DLGlCQUFpQixHQUFHbkIsYUFBYSxDQUNyQ29CLEdBRHdCLENBQ3BCLFVBQVVDLFlBQVYsRUFBNkI7WUFDakMsSUFBTUMsYUFBYSxHQUFHRCxZQUFZLENBQUNFLGFBQW5DO1lBQ0EsSUFBSUMsU0FBUyxHQUFHcEIsUUFBUSxDQUFDcUIsV0FBVCxDQUFxQkgsYUFBckIsQ0FBaEI7O1lBRUEsSUFBSUUsU0FBUyxLQUFLRSxTQUFkLElBQTJCRixTQUFTLEtBQUssSUFBN0MsRUFBbUQ7Y0FDbEQsTUFBTSxJQUFJRyxLQUFKLG1EQUFxREwsYUFBckQsRUFBTjtZQUNBLENBRkQsTUFFTztjQUNOLElBQUlMLFdBQVcsQ0FBQ0ssYUFBRCxDQUFYLENBQTJCSixLQUEzQixLQUFxQyxZQUF6QyxFQUF1RDtnQkFDdERNLFNBQVMsY0FBT0ksa0JBQWtCLENBQUNKLFNBQUQsQ0FBekIsTUFBVDtjQUNBOztjQUNELElBQUl4QixhQUFhLENBQUM2QixNQUFkLEdBQXVCLENBQTNCLEVBQThCO2dCQUM3QjtnQkFDQTtnQkFDQUwsU0FBUyxhQUFNRixhQUFOLGNBQXVCRSxTQUF2QixDQUFUO2NBQ0E7O2NBQ0QsT0FBT0EsU0FBUDtZQUNBO1VBQ0QsQ0FsQndCLEVBbUJ4Qk0sSUFuQndCLENBbUJuQixHQW5CbUIsQ0FBMUI7VUFxQkFsQixhQUFhLGNBQU9oQixjQUFQLGNBQXlCdUIsaUJBQXpCLE1BQWI7UUFDQSxDQXZCRCxDQXVCRSxPQUFPWSxDQUFQLEVBQVU7VUFDWEMsR0FBRyxDQUFDQyxJQUFKLENBQVNGLENBQVQ7UUFDQTtNQUNEOztNQUVELE9BQU8xQixPQUFPLEdBQUdPLGFBQUgsR0FBbUJBLGFBQWEsSUFBSUQsY0FBbEQ7SUFDQSxDQXpEd0I7SUEyRHpCO0lBQ0E7SUFDQTtJQUVBSyxrQkFBa0IsRUFBRSxVQUFVa0IsS0FBVixFQUFzQjtNQUN6QztNQUNBLE9BQU8seUJBQXlCQyxJQUF6QixDQUE4QkQsS0FBOUIsQ0FBUDtJQUNBO0VBbEV3QixDQUExQjtTQXFFZXpDLGlCIn0=
|