@openui5/sap.ui.core 1.97.1 → 1.98.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/.eslintrc.json +61 -2
- package/.reuse/dep5 +25 -30
- package/THIRDPARTY.txt +13 -20
- package/package.json +1 -1
- package/src/jquery.sap.global.js +1 -1
- package/src/jquery.sap.mobile.js +0 -8
- package/src/jquery.sap.properties.js +1 -1
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.storage.js +3 -3
- package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
- package/src/sap/base/util/restricted/_castArray.js +1 -1
- package/src/sap/base/util/restricted/_compact.js +1 -1
- package/src/sap/base/util/restricted/_curry.js +1 -1
- package/src/sap/base/util/restricted/_debounce.js +1 -1
- package/src/sap/base/util/restricted/_difference.js +1 -1
- package/src/sap/base/util/restricted/_differenceBy.js +1 -1
- package/src/sap/base/util/restricted/_differenceWith.js +1 -1
- package/src/sap/base/util/restricted/_flatMap.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
- package/src/sap/base/util/restricted/_flatten.js +1 -1
- package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
- package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
- package/src/sap/base/util/restricted/_intersection.js +1 -1
- package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
- package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
- package/src/sap/base/util/restricted/_isEqual.js +1 -1
- package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
- package/src/sap/base/util/restricted/_isNil.js +1 -1
- package/src/sap/base/util/restricted/_max.js +1 -1
- package/src/sap/base/util/restricted/_merge.js +1 -1
- package/src/sap/base/util/restricted/_mergeWith.js +1 -1
- package/src/sap/base/util/restricted/_min.js +1 -1
- package/src/sap/base/util/restricted/_omit.js +1 -1
- package/src/sap/base/util/restricted/_pick.js +1 -1
- package/src/sap/base/util/restricted/_pickBy.js +1 -1
- package/src/sap/base/util/restricted/_throttle.js +1 -1
- package/src/sap/base/util/restricted/_toArray.js +1 -1
- package/src/sap/base/util/restricted/_union.js +1 -1
- package/src/sap/base/util/restricted/_unionBy.js +1 -1
- package/src/sap/base/util/restricted/_unionWith.js +1 -1
- package/src/sap/base/util/restricted/_uniq.js +1 -1
- package/src/sap/base/util/restricted/_uniqBy.js +1 -1
- package/src/sap/base/util/restricted/_uniqWith.js +1 -1
- package/src/sap/base/util/restricted/_without.js +1 -1
- package/src/sap/base/util/restricted/_xor.js +1 -1
- package/src/sap/base/util/restricted/_xorBy.js +1 -1
- package/src/sap/base/util/restricted/_xorWith.js +1 -1
- package/src/sap/base/util/restricted/_zipObject.js +1 -1
- package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
- package/src/sap/ui/Device.js +80 -168
- package/src/sap/ui/Global.js +4 -4
- package/src/sap/ui/base/Event.js +1 -1
- package/src/sap/ui/base/EventProvider.js +1 -1
- package/src/sap/ui/base/Interface.js +1 -1
- package/src/sap/ui/base/ManagedObject.js +17 -6
- package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
- package/src/sap/ui/base/Metadata.js +1 -1
- package/src/sap/ui/base/Object.js +1 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/core/.library +1 -1
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/BusyIndicatorUtils.js +1 -1
- package/src/sap/ui/core/Component.js +1 -1
- package/src/sap/ui/core/ComponentContainer.js +1 -1
- package/src/sap/ui/core/ComponentMetadata.js +1 -1
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +2 -4
- package/src/sap/ui/core/Control.js +2 -2
- package/src/sap/ui/core/Core.js +1 -4
- package/src/sap/ui/core/CustomData.js +1 -1
- package/src/sap/ui/core/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/Element.js +2 -1
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +1 -1
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/Fragment.js +1 -1
- package/src/sap/ui/core/HTML.js +1 -1
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +2 -3
- package/src/sap/ui/core/IndicationColorSupport.js +1 -1
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +1 -1
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +1 -1
- package/src/sap/ui/core/Item.js +1 -1
- package/src/sap/ui/core/LabelEnablement.js +1 -1
- package/src/sap/ui/core/LayoutData.js +1 -1
- package/src/sap/ui/core/ListItem.js +1 -1
- package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
- package/src/sap/ui/core/LocalBusyIndicatorSupport.js +1 -1
- package/src/sap/ui/core/Locale.js +1 -1
- package/src/sap/ui/core/LocaleData.js +1 -1
- package/src/sap/ui/core/Manifest.js +1 -1
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Placeholder.js +28 -28
- package/src/sap/ui/core/Popup.js +1 -1
- package/src/sap/ui/core/RenderManager.js +1 -1
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/ResizeHandler.js +1 -1
- package/src/sap/ui/core/ScrollBar.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +2 -2
- package/src/sap/ui/core/UIArea.js +1 -1
- package/src/sap/ui/core/UIComponent.js +1 -1
- package/src/sap/ui/core/UIComponentMetadata.js +1 -1
- package/src/sap/ui/core/ValueStateSupport.js +1 -1
- package/src/sap/ui/core/VariantLayoutData.js +1 -1
- package/src/sap/ui/core/XMLComposite.js +1 -1
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/date/UniversalDateUtils.js +175 -5
- package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
- package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
- package/src/sap/ui/core/dnd/DragAndDrop.js +2 -2
- package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
- package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
- package/src/sap/ui/core/dnd/DragInfo.js +1 -1
- package/src/sap/ui/core/dnd/DropInfo.js +1 -1
- package/src/sap/ui/core/format/DateFormat.js +44 -8
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +43 -6
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +1 -1
- package/src/sap/ui/core/message/MessageManager.js +1 -1
- package/src/sap/ui/core/message/MessageMixin.js +2 -1
- package/src/sap/ui/core/message/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +1 -1
- package/src/sap/ui/core/messagebundle_it.properties +1 -1
- package/src/sap/ui/core/messagebundle_no.properties +4 -4
- package/src/sap/ui/core/mvc/HTMLView.js +1 -1
- package/src/sap/ui/core/mvc/JSONView.js +2 -1
- package/src/sap/ui/core/mvc/JSView.js +1 -1
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/View.js +2 -1
- package/src/sap/ui/core/mvc/XMLView.js +16 -3
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/plugin/LessSupport.js +1 -1
- package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
- package/src/sap/ui/core/postmessage/Bus.js +1 -1
- package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
- package/src/sap/ui/core/routing/Route.js +6 -6
- package/src/sap/ui/core/routing/Router.js +3 -2
- package/src/sap/ui/core/routing/Targets.js +17 -13
- package/src/sap/ui/core/rules/Model.support.js +95 -8
- package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
- package/src/sap/ui/core/search/SearchProvider.js +1 -1
- package/src/sap/ui/core/service/Service.js +1 -1
- package/src/sap/ui/core/service/ServiceFactory.js +1 -1
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/Support.js +1 -1
- package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
- package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
- package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
- package/src/sap/ui/core/support/plugins/Performance.js +1 -1
- package/src/sap/ui/core/support/plugins/Selector.js +1 -1
- package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
- package/src/sap/ui/core/support/plugins/Trace.js +1 -1
- package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
- package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +1 -5
- package/src/sap/ui/core/themes/base/parameterClasses.less +21 -21
- package/src/sap/ui/core/theming/Parameters.js +22 -142
- package/src/sap/ui/core/theming/ThemeHelper.js +26 -37
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
- package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
- package/src/sap/ui/core/tmpl/Template.js +1 -1
- package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
- package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
- package/src/sap/ui/core/util/DraftEnabledMockServer.js +21 -16
- package/src/sap/ui/core/util/Export.js +1 -1
- package/src/sap/ui/core/util/ExportCell.js +1 -1
- package/src/sap/ui/core/util/ExportColumn.js +1 -1
- package/src/sap/ui/core/util/ExportRow.js +1 -1
- package/src/sap/ui/core/util/ExportType.js +1 -1
- package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
- package/src/sap/ui/core/util/File.js +1 -1
- package/src/sap/ui/core/util/LibraryInfo.js +1 -1
- package/src/sap/ui/core/util/MockServer.js +138 -41
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +4 -0
- package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +26 -16
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
- package/src/sap/ui/core/ws/ReadyState.js +1 -1
- package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
- package/src/sap/ui/core/ws/WebSocket.js +1 -1
- package/src/sap/ui/debug/ControlTree.js +1 -1
- package/src/sap/ui/debug/DebugEnv.js +1 -1
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/events/jquery/EventSimulation.js +3 -13
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/CompositeDataState.js +26 -4
- package/src/sap/ui/model/CompositeType.js +1 -1
- package/src/sap/ui/model/DataState.js +27 -6
- package/src/sap/ui/model/ListBinding.js +2 -2
- package/src/sap/ui/model/MetaModel.js +2 -2
- package/src/sap/ui/model/Model.js +2 -2
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +1 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +39 -28
- package/src/sap/ui/model/analytics/ODataModelAdapter.js +2 -15
- package/src/sap/ui/model/json/JSONModel.js +1 -1
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
- package/src/sap/ui/model/odata/ODataModel.js +1 -1
- package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +1 -1
- package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
- package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +1 -1
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/type/UnitMixin.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +57 -4
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +184 -61
- package/src/sap/ui/model/odata/v2/ODataModel.js +79 -45
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +65 -5
- package/src/sap/ui/model/odata/v4/AnnotationHelper.js +5 -5
- package/src/sap/ui/model/odata/v4/Context.js +122 -35
- package/src/sap/ui/model/odata/v4/ODataBinding.js +38 -19
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +126 -51
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +203 -67
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +43 -40
- package/src/sap/ui/model/odata/v4/ODataModel.js +26 -11
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +37 -60
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +23 -20
- package/src/sap/ui/model/odata/v4/ODataUtils.js +5 -5
- package/src/sap/ui/model/odata/v4/SubmitMode.js +0 -1
- package/src/sap/ui/model/odata/v4/ValueListType.js +0 -1
- package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +18 -19
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +3 -5
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -4
- package/src/sap/ui/model/odata/v4/lib/_Batch.js +21 -20
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +150 -101
- package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +16 -16
- package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +60 -59
- package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_Parser.js +52 -43
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +34 -25
- package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +147 -147
- package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +13 -12
- package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +66 -67
- package/src/sap/ui/model/resource/ResourceModel.js +1 -1
- package/src/sap/ui/model/type/Boolean.js +1 -1
- package/src/sap/ui/model/type/Currency.js +1 -1
- package/src/sap/ui/model/type/Date.js +1 -1
- package/src/sap/ui/model/type/DateInterval.js +1 -1
- package/src/sap/ui/model/type/DateTime.js +1 -1
- package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
- package/src/sap/ui/model/type/FileSize.js +1 -1
- package/src/sap/ui/model/type/Float.js +1 -1
- package/src/sap/ui/model/type/Integer.js +1 -1
- package/src/sap/ui/model/type/String.js +1 -1
- package/src/sap/ui/model/type/Time.js +1 -1
- package/src/sap/ui/model/type/TimeInterval.js +1 -1
- package/src/sap/ui/model/type/Unit.js +1 -1
- package/src/sap/ui/model/xml/XMLModel.js +1 -1
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/test/BlanketReporter.js +1 -1
- package/src/sap/ui/test/TestUtils.js +2 -2
- package/src/sap/ui/test/_LogCollector.js +1 -1
- package/src/sap/ui/test/actions/Action.js +4 -2
- package/src/sap/ui/test/actions/Press.js +51 -2
- package/src/sap/ui/test/autowaiter/_XHRWaiter.js +1 -1
- package/src/sap/ui/test/starter/createSuite.js +3 -3
- package/src/sap/ui/thirdparty/jquery-mobile-custom.js +3 -6
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/sap/ui/util/XMLHelper.js +53 -30
- package/src/ui5loader.js +3 -3
|
@@ -282,10 +282,10 @@ sap.ui.define([
|
|
|
282
282
|
* <code>JSON.stringify</code>.
|
|
283
283
|
* <b>Warning: <code>Date</code> objects will be turned into strings</b>
|
|
284
284
|
*
|
|
285
|
-
* @param {
|
|
285
|
+
* @param {any} vValue - Any value, including <code>undefined</code>
|
|
286
286
|
* @param {function} [fnReplacer] - The replacer function to transform the result, see
|
|
287
287
|
* <code>JSON.stringify</code>
|
|
288
|
-
* @returns {
|
|
288
|
+
* @returns {any} - A clone
|
|
289
289
|
*/
|
|
290
290
|
clone : function clone(vValue, fnReplacer) {
|
|
291
291
|
return vValue === undefined || vValue === Infinity || vValue === -Infinity
|
|
@@ -361,7 +361,7 @@ sap.ui.define([
|
|
|
361
361
|
if (jqXHR.status === 412) {
|
|
362
362
|
sPreference = jqXHR.getResponseHeader("Preference-Applied");
|
|
363
363
|
|
|
364
|
-
if (sPreference && sPreference.replace(rWhitespace,
|
|
364
|
+
if (sPreference && sPreference.replace(rWhitespace, "") === "handling=strict") {
|
|
365
365
|
oResult.strictHandlingFailed = true;
|
|
366
366
|
} else {
|
|
367
367
|
oResult.isConcurrentModification = true;
|
|
@@ -608,7 +608,7 @@ sap.ui.define([
|
|
|
608
608
|
* The object to start at
|
|
609
609
|
* @param {string[]} aSegments
|
|
610
610
|
* Relative path to drill-down into, as array of segments
|
|
611
|
-
* @returns {
|
|
611
|
+
* @returns {any}
|
|
612
612
|
* The result matching to the given path, or <code>undefined</code> if the path leads
|
|
613
613
|
* into void
|
|
614
614
|
*/
|
|
@@ -633,6 +633,7 @@ sap.ui.define([
|
|
|
633
633
|
.replace(rAmpersand, "%26")
|
|
634
634
|
.replace(rHash, "%23")
|
|
635
635
|
.replace(rPlus, "%2B");
|
|
636
|
+
|
|
636
637
|
if (bEncodeEquals) {
|
|
637
638
|
sEncoded = sEncoded.replace(rEquals, "%3D");
|
|
638
639
|
}
|
|
@@ -699,7 +700,7 @@ sap.ui.define([
|
|
|
699
700
|
};
|
|
700
701
|
|
|
701
702
|
Object.keys(oMessage).forEach(function (sProperty) {
|
|
702
|
-
if (sProperty[0] ===
|
|
703
|
+
if (sProperty[0] === "@") {
|
|
703
704
|
// cannot use .getAnnotation() for compatibility reasons
|
|
704
705
|
if (sProperty.endsWith(".numericSeverity")) {
|
|
705
706
|
oRawMessage.numericSeverity = oMessage[sProperty];
|
|
@@ -985,7 +986,7 @@ sap.ui.define([
|
|
|
985
986
|
* @param {object} sName
|
|
986
987
|
* The name of the annotation without prefix "@" and namespace, e.g. ".ContentID" for a
|
|
987
988
|
* annotation "@Org.OData.Core.V1.ContentID"
|
|
988
|
-
* @returns {any
|
|
989
|
+
* @returns {any}
|
|
989
990
|
* The value of the annotation, or <code>undefined</code> in case there is not exactly one
|
|
990
991
|
* such annotation (ignoring the alias)
|
|
991
992
|
*/
|
|
@@ -1057,7 +1058,7 @@ sap.ui.define([
|
|
|
1057
1058
|
* A list of key properties, either as a string or an object with one property (its name
|
|
1058
1059
|
* is the alias in the key predicate, its value is the path in the instance). If not
|
|
1059
1060
|
* given, the entity's key is used.
|
|
1060
|
-
* @returns {string}
|
|
1061
|
+
* @returns {string|undefined}
|
|
1061
1062
|
* A filter using key properties without URI encoding, e.g.
|
|
1062
1063
|
* "Sector eq 'A/B&C' and ID eq 42)", or <code>undefined</code>, if at least one key
|
|
1063
1064
|
* property is undefined
|
|
@@ -1097,7 +1098,7 @@ sap.ui.define([
|
|
|
1097
1098
|
* @param {boolean} [bKeepSingleProperty]
|
|
1098
1099
|
* If true, the property name is not omitted if there is only one property
|
|
1099
1100
|
* (like "(ID='42')")
|
|
1100
|
-
* @returns {string}
|
|
1101
|
+
* @returns {string|undefined}
|
|
1101
1102
|
* The key predicate with proper URI encoding, e.g. "(Sector='A%2FB%26C',ID='42')" or
|
|
1102
1103
|
* "('42')", or <code>undefined</code>, if at least one key property is undefined
|
|
1103
1104
|
* @throws {Error}
|
|
@@ -1138,7 +1139,7 @@ sap.ui.define([
|
|
|
1138
1139
|
* given, the entity's key is used
|
|
1139
1140
|
* @param {boolean} [bReturnAlias]
|
|
1140
1141
|
* Whether to return the aliases instead of the keys
|
|
1141
|
-
* @returns {object}
|
|
1142
|
+
* @returns {object|undefined}
|
|
1142
1143
|
* The key properties map. For the metadata
|
|
1143
1144
|
* <Key>
|
|
1144
1145
|
* <PropertyRef Name="Info/ID" Alias="EntityInfoID"/>
|
|
@@ -1340,11 +1341,11 @@ sap.ui.define([
|
|
|
1340
1341
|
} else {
|
|
1341
1342
|
// must fire null to guarantee that a property binding has not
|
|
1342
1343
|
// this.vValue === undefined, see ODataPropertyBinding.setValue
|
|
1343
|
-
_Helper.fireChange(mChangeListeners, sPath,
|
|
1344
|
+
_Helper.fireChange(mChangeListeners, sPath, vNew === undefined ? null : vNew);
|
|
1344
1345
|
vNew = {};
|
|
1345
1346
|
}
|
|
1346
1347
|
|
|
1347
|
-
if (vOld && typeof
|
|
1348
|
+
if (vOld && typeof vOld === "object") {
|
|
1348
1349
|
Object.keys(vOld).forEach(function (sProperty) {
|
|
1349
1350
|
// not covered in the new value
|
|
1350
1351
|
if (!vNew.hasOwnProperty(sProperty)) {
|
|
@@ -1658,12 +1659,11 @@ sap.ui.define([
|
|
|
1658
1659
|
* @param {string} sLiteral The literal value
|
|
1659
1660
|
* @param {string} sType The type
|
|
1660
1661
|
* @param {string} sPath The path for this literal (for error messages)
|
|
1661
|
-
* @returns {
|
|
1662
|
+
* @returns {any} The model value
|
|
1662
1663
|
* @throws {Error} If the type is invalid or unsupported; the function only validates when a
|
|
1663
1664
|
* conversion is required
|
|
1664
1665
|
*/
|
|
1665
1666
|
parseLiteral : function (sLiteral, sType, sPath) {
|
|
1666
|
-
|
|
1667
1667
|
function checkNaN(nValue) {
|
|
1668
1668
|
if (!isFinite(nValue)) { // this rejects NaN, Infinity, -Infinity
|
|
1669
1669
|
throw new Error(sPath + ": Not a valid " + sType + " literal: " + sLiteral);
|
|
@@ -2157,9 +2157,9 @@ sap.ui.define([
|
|
|
2157
2157
|
* @param {function} fnFetchMetadata
|
|
2158
2158
|
* Function which fetches metadata for a given meta path
|
|
2159
2159
|
*
|
|
2160
|
-
* @returns {object} The query options for the child binding or
|
|
2161
|
-
* case the query options cannot be created, e.g. because $apply
|
|
2162
|
-
* $expand
|
|
2160
|
+
* @returns {object|undefined} The query options for the child binding or
|
|
2161
|
+
* <code>undefined</code> in case the query options cannot be created, e.g. because $apply
|
|
2162
|
+
* cannot be wrapped into $expand
|
|
2163
2163
|
*/
|
|
2164
2164
|
wrapChildQueryOptions : function (sBaseMetaPath, sChildMetaPath, mChildQueryOptions,
|
|
2165
2165
|
fnFetchMetadata) {
|
|
@@ -270,8 +270,8 @@ sap.ui.define([
|
|
|
270
270
|
// this.oAnnotatable is the Annotation itself currently.
|
|
271
271
|
var oAnnotatable = this.oAnnotatable.parent;
|
|
272
272
|
|
|
273
|
-
oAnnotatable.target[oAnnotatable.qualifiedName]
|
|
274
|
-
aResult.length ? aResult[0] : this.getInlineAnnotationValue(oElement);
|
|
273
|
+
oAnnotatable.target[oAnnotatable.qualifiedName]
|
|
274
|
+
= aResult.length ? aResult[0] : this.getInlineAnnotationValue(oElement);
|
|
275
275
|
};
|
|
276
276
|
|
|
277
277
|
/**
|
|
@@ -327,8 +327,9 @@ sap.ui.define([
|
|
|
327
327
|
_MetadataConverter.prototype.postProcessLabeledElement = function (oElement, aResult) {
|
|
328
328
|
var oResult = this.oAnnotatable.target;
|
|
329
329
|
|
|
330
|
-
oResult.$LabeledElement = aResult.length
|
|
331
|
-
|
|
330
|
+
oResult.$LabeledElement = aResult.length
|
|
331
|
+
? aResult[0]
|
|
332
|
+
: this.getInlineAnnotationValue(oElement);
|
|
332
333
|
oResult.$Name = oElement.getAttribute("Name");
|
|
333
334
|
return oResult;
|
|
334
335
|
};
|
|
@@ -337,12 +338,12 @@ sap.ui.define([
|
|
|
337
338
|
* Post-processing of a LabeledElementReference element within an Annotation element.
|
|
338
339
|
*
|
|
339
340
|
* @param {Element} oElement The element
|
|
340
|
-
* @param {any[]}
|
|
341
|
+
* @param {any[]} _aRes The results from child elements
|
|
341
342
|
* @returns {any} The value for the JSON
|
|
342
343
|
*/
|
|
343
|
-
_MetadataConverter.prototype.postProcessLabeledElementReference = function (oElement,
|
|
344
|
+
_MetadataConverter.prototype.postProcessLabeledElementReference = function (oElement, _aRes) {
|
|
344
345
|
return {
|
|
345
|
-
|
|
346
|
+
$LabeledElementReference : this.resolveAlias(oElement.textContent)
|
|
346
347
|
};
|
|
347
348
|
};
|
|
348
349
|
|
|
@@ -567,15 +568,15 @@ sap.ui.define([
|
|
|
567
568
|
_MetadataConverter.prototype.processIncludeAnnotations = function (oElement) {
|
|
568
569
|
var oReference = this.reference,
|
|
569
570
|
oIncludeAnnotation = {
|
|
570
|
-
|
|
571
|
+
$TermNamespace : oElement.getAttribute("TermNamespace") + "."
|
|
571
572
|
},
|
|
572
573
|
aIncludeAnnotations = this.getOrCreateArray(oReference, "$IncludeAnnotations");
|
|
573
574
|
|
|
574
575
|
this.processAttributes(oElement, oIncludeAnnotation, {
|
|
575
|
-
|
|
576
|
+
TargetNamespace : function setValue(sValue) {
|
|
576
577
|
return sValue ? sValue + "." : sValue;
|
|
577
578
|
},
|
|
578
|
-
|
|
579
|
+
Qualifier : this.setValue
|
|
579
580
|
});
|
|
580
581
|
|
|
581
582
|
aIncludeAnnotations.push(oIncludeAnnotation);
|
|
@@ -628,7 +629,7 @@ sap.ui.define([
|
|
|
628
629
|
* Whether parentheses in the path segment should be handled specially for alias replacement,
|
|
629
630
|
* for example to address a bound action's specific overload
|
|
630
631
|
* @param {string} sSegment The path segment
|
|
631
|
-
* @returns {string} The path segment with aliases resolved (if there were any)
|
|
632
|
+
* @returns {string|undefined} The path segment with aliases resolved (if there were any)
|
|
632
633
|
*/
|
|
633
634
|
_MetadataConverter.prototype.resolveAliasInParentheses = function (bHandleParentheses,
|
|
634
635
|
sSegment) {
|
|
@@ -656,7 +657,8 @@ sap.ui.define([
|
|
|
656
657
|
* @returns {string} The path with aliases resolved (if there were any)
|
|
657
658
|
*/
|
|
658
659
|
_MetadataConverter.prototype.resolveAliasInPath = function (sPath, bHandleParentheses) {
|
|
659
|
-
var iAt,
|
|
660
|
+
var iAt,
|
|
661
|
+
sTerm = "";
|
|
660
662
|
|
|
661
663
|
if (!sPath.includes(".")) {
|
|
662
664
|
return sPath; // no dot -> nothing to do
|
|
@@ -696,7 +698,7 @@ sap.ui.define([
|
|
|
696
698
|
* Helper for processAttributes, returns sValue converted to a number.
|
|
697
699
|
*
|
|
698
700
|
* @param {string} sValue The attribute value in the element
|
|
699
|
-
* @returns {number} The value as number or undefined
|
|
701
|
+
* @returns {number|undefined} The value as number or <code>undefined</code>
|
|
700
702
|
*/
|
|
701
703
|
_MetadataConverter.prototype.setNumber = function (sValue) {
|
|
702
704
|
return sValue ? parseInt(sValue) : undefined;
|
|
@@ -733,7 +735,7 @@ sap.ui.define([
|
|
|
733
735
|
* If true, the hook processElement at the aggregate is used, otherwise the processor is
|
|
734
736
|
* called directly
|
|
735
737
|
* @returns {any}
|
|
736
|
-
* The return value from __postProcessor or undefined if there is none
|
|
738
|
+
* The return value from __postProcessor or <code>undefined</code> if there is none
|
|
737
739
|
*/
|
|
738
740
|
_MetadataConverter.prototype.traverse = function (oElement, oConfig, bUseProcessElementHook) {
|
|
739
741
|
var oAnnotatable = this.oAnnotatable, // "push" oAnnotatable to the recursion stack
|
|
@@ -776,8 +778,8 @@ sap.ui.define([
|
|
|
776
778
|
}
|
|
777
779
|
}
|
|
778
780
|
if (oChildConfig) {
|
|
779
|
-
vChildResult
|
|
780
|
-
this.traverse(oChildNode, oChildConfig, bUseProcessElementHook);
|
|
781
|
+
vChildResult
|
|
782
|
+
= this.traverse(oChildNode, oChildConfig, bUseProcessElementHook);
|
|
781
783
|
if (vChildResult !== undefined && oConfig.__postProcessor) {
|
|
782
784
|
// only push if the element is interested in the results and if the
|
|
783
785
|
// child element returns anything (it might be another Annotation which
|
|
@@ -809,23 +811,23 @@ sap.ui.define([
|
|
|
809
811
|
|
|
810
812
|
// All Annotations elements that don't have expressions as child (leaf, non-recursive)
|
|
811
813
|
oAnnotationLeafConfig = {
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
814
|
+
AnnotationPath : {__postProcessor : $$.postProcessLeaf},
|
|
815
|
+
Binary : {__postProcessor : $$.postProcessLeaf},
|
|
816
|
+
Bool : {__postProcessor : $$.postProcessLeaf},
|
|
817
|
+
Date : {__postProcessor : $$.postProcessLeaf},
|
|
818
|
+
DateTimeOffset : {__postProcessor : $$.postProcessLeaf},
|
|
819
|
+
Decimal : {__postProcessor : $$.postProcessLeaf},
|
|
820
|
+
Duration : {__postProcessor : $$.postProcessLeaf},
|
|
821
|
+
EnumMember : {__postProcessor : $$.postProcessLeaf},
|
|
822
|
+
Float : {__postProcessor : $$.postProcessLeaf},
|
|
823
|
+
Guid : {__postProcessor : $$.postProcessLeaf},
|
|
824
|
+
Int : {__postProcessor : $$.postProcessLeaf},
|
|
825
|
+
LabeledElementReference : {__postProcessor : $$.postProcessLabeledElementReference},
|
|
826
|
+
NavigationPropertyPath : {__postProcessor : $$.postProcessLeaf},
|
|
827
|
+
Path : {__postProcessor : $$.postProcessLeaf},
|
|
828
|
+
PropertyPath : {__postProcessor : $$.postProcessLeaf},
|
|
829
|
+
String : {__postProcessor : $$.postProcessLeaf},
|
|
830
|
+
TimeOfDay : {__postProcessor : $$.postProcessLeaf}
|
|
829
831
|
};
|
|
830
832
|
|
|
831
833
|
// When oAnnotationExpressionConfig is defined, it is added to this array for the recursion
|
|
@@ -833,7 +835,7 @@ sap.ui.define([
|
|
|
833
835
|
|
|
834
836
|
// The configuration for an <Annotation> element to be included into other configurations
|
|
835
837
|
$$.oAnnotationConfig = {
|
|
836
|
-
|
|
838
|
+
Annotation : {
|
|
837
839
|
__xmlns : $$.sEdmNamespace,
|
|
838
840
|
__processor : $$.processAnnotation,
|
|
839
841
|
__postProcessor : $$.postProcessAnnotation,
|
|
@@ -848,60 +850,60 @@ sap.ui.define([
|
|
|
848
850
|
__include : aAnnotatableExpressionInclude
|
|
849
851
|
};
|
|
850
852
|
oAnnotationExpressionConfig = {
|
|
851
|
-
|
|
852
|
-
|
|
853
|
+
And : oOperatorConfig,
|
|
854
|
+
Apply : {
|
|
853
855
|
__processor : $$.processAnnotatableExpression,
|
|
854
856
|
__postProcessor : $$.postProcessApply,
|
|
855
857
|
__include : aAnnotatableExpressionInclude
|
|
856
858
|
},
|
|
857
|
-
|
|
859
|
+
Cast : {
|
|
858
860
|
__processor : $$.processAnnotatableExpression,
|
|
859
861
|
__postProcessor : $$.postProcessCastOrIsOf,
|
|
860
862
|
__include : aAnnotatableExpressionInclude
|
|
861
863
|
},
|
|
862
|
-
|
|
864
|
+
Collection : {
|
|
863
865
|
__postProcessor : $$.postProcessCollection,
|
|
864
866
|
__include : aExpressionInclude
|
|
865
867
|
},
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
868
|
+
Eq : oOperatorConfig,
|
|
869
|
+
Ge : oOperatorConfig,
|
|
870
|
+
Gt : oOperatorConfig,
|
|
871
|
+
If : oOperatorConfig,
|
|
872
|
+
IsOf : {
|
|
871
873
|
__processor : $$.processAnnotatableExpression,
|
|
872
874
|
__postProcessor : $$.postProcessCastOrIsOf,
|
|
873
875
|
__include : aAnnotatableExpressionInclude
|
|
874
876
|
},
|
|
875
|
-
|
|
877
|
+
LabeledElement : {
|
|
876
878
|
__processor : $$.processAnnotatableExpression,
|
|
877
879
|
__postProcessor : $$.postProcessLabeledElement,
|
|
878
880
|
__include : aAnnotatableExpressionInclude
|
|
879
881
|
},
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
882
|
+
Le : oOperatorConfig,
|
|
883
|
+
Lt : oOperatorConfig,
|
|
884
|
+
Ne : oOperatorConfig,
|
|
885
|
+
Null : {
|
|
884
886
|
__processor : $$.processAnnotatableExpression,
|
|
885
887
|
__postProcessor : $$.postProcessNull,
|
|
886
888
|
__include : [$$.oAnnotationConfig]
|
|
887
889
|
},
|
|
888
|
-
|
|
890
|
+
Not : {
|
|
889
891
|
__processor : $$.processAnnotatableExpression,
|
|
890
892
|
__postProcessor : $$.postProcessNot,
|
|
891
893
|
__include : aAnnotatableExpressionInclude
|
|
892
894
|
},
|
|
893
|
-
|
|
894
|
-
|
|
895
|
+
Or : oOperatorConfig,
|
|
896
|
+
Record : {
|
|
895
897
|
__processor : $$.processAnnotatableExpression,
|
|
896
898
|
__postProcessor : $$.postProcessRecord,
|
|
897
899
|
__include : [$$.oAnnotationConfig],
|
|
898
|
-
|
|
900
|
+
PropertyValue : {
|
|
899
901
|
__processor : $$.processPropertyValue,
|
|
900
902
|
__postProcessor : $$.postProcessPropertyValue,
|
|
901
903
|
__include : aAnnotatableExpressionInclude
|
|
902
904
|
}
|
|
903
905
|
},
|
|
904
|
-
|
|
906
|
+
UrlRef : {
|
|
905
907
|
__postProcessor : $$.postProcessUrlRef,
|
|
906
908
|
__include : aExpressionInclude
|
|
907
909
|
}
|
|
@@ -909,7 +911,7 @@ sap.ui.define([
|
|
|
909
911
|
|
|
910
912
|
// The configuration for an <Annotations> element to be included into other configurations
|
|
911
913
|
$$.oAnnotationsConfig = {
|
|
912
|
-
|
|
914
|
+
Annotations : {
|
|
913
915
|
__processor : $$.processAnnotations,
|
|
914
916
|
__include : [$$.oAnnotationConfig]
|
|
915
917
|
}
|
|
@@ -925,20 +927,19 @@ sap.ui.define([
|
|
|
925
927
|
* The configuration for a <Reference> element to be included into other configurations
|
|
926
928
|
*/
|
|
927
929
|
$$.oReferenceInclude = {
|
|
928
|
-
|
|
930
|
+
Reference : {
|
|
929
931
|
__xmlns : $$.sEdmxNamespace,
|
|
930
932
|
__processor : $$.processReference,
|
|
931
933
|
__include : [$$.oAnnotationConfig],
|
|
932
|
-
|
|
934
|
+
Include : {
|
|
933
935
|
__processor : $$.processInclude
|
|
934
936
|
},
|
|
935
|
-
|
|
937
|
+
IncludeAnnotations : {
|
|
936
938
|
__processor : $$.processIncludeAnnotations
|
|
937
939
|
}
|
|
938
940
|
}
|
|
939
941
|
};
|
|
940
|
-
|
|
941
942
|
})(_MetadataConverter.prototype);
|
|
942
943
|
|
|
943
944
|
return _MetadataConverter;
|
|
944
|
-
}, /* bExport= */false);
|
|
945
|
+
}, /* bExport= */false);
|
|
@@ -42,72 +42,72 @@ sap.ui.define([], function () {
|
|
|
42
42
|
sValue = '(?:[-+:./\\w"]|%2[bB])+',
|
|
43
43
|
// A Token: either an operator, a delimiter, a GUID (in aMatches[4]), a path (in
|
|
44
44
|
// aMatches[5]), a value (in aMatches[6]) or a system query option (in aMatches[7])
|
|
45
|
-
rToken = new RegExp("^(?:" + sOperators +
|
|
45
|
+
rToken = new RegExp("^(?:" + sOperators + "|" + sDelimiters + "|(" + sGuid + ")|("
|
|
46
46
|
+ sPath + ")|(" + sValue + ")|(" + sSystemQueryOption + "))"),
|
|
47
47
|
// The two hex digits of a %-escape
|
|
48
48
|
rEscapeDigits = /^[0-9a-f]{2}$/i,
|
|
49
49
|
// The list of built-in functions
|
|
50
50
|
mFunctions = {
|
|
51
|
-
|
|
51
|
+
ceiling : {
|
|
52
52
|
ambiguousParameters : true
|
|
53
53
|
},
|
|
54
|
-
|
|
54
|
+
concat : {
|
|
55
55
|
type : "Edm.String"
|
|
56
56
|
},
|
|
57
|
-
|
|
57
|
+
contains : {
|
|
58
58
|
type : "Edm.Boolean"
|
|
59
59
|
},
|
|
60
|
-
|
|
60
|
+
day : {
|
|
61
61
|
type : "Edm.Int32",
|
|
62
62
|
ambiguousParameters : true
|
|
63
63
|
},
|
|
64
|
-
|
|
64
|
+
endswith : {
|
|
65
65
|
type : "Edm.Boolean"
|
|
66
66
|
},
|
|
67
|
-
|
|
67
|
+
floor : {
|
|
68
68
|
ambiguousParameters : true
|
|
69
69
|
},
|
|
70
|
-
|
|
70
|
+
hour : {
|
|
71
71
|
type : "Edm.Int32",
|
|
72
72
|
ambiguousParameters : true
|
|
73
73
|
},
|
|
74
|
-
|
|
74
|
+
indexof : {
|
|
75
75
|
type : "Edm.Int32"
|
|
76
76
|
},
|
|
77
|
-
|
|
77
|
+
length : {
|
|
78
78
|
type : "Edm.Int32"
|
|
79
79
|
},
|
|
80
|
-
|
|
80
|
+
minute : {
|
|
81
81
|
type : "Edm.Int32",
|
|
82
82
|
ambiguousParameters : true
|
|
83
83
|
},
|
|
84
|
-
|
|
84
|
+
month : {
|
|
85
85
|
type : "Edm.Int32",
|
|
86
86
|
ambiguousParameters : true
|
|
87
87
|
},
|
|
88
|
-
|
|
88
|
+
round : {
|
|
89
89
|
ambiguousParameters : true
|
|
90
90
|
},
|
|
91
|
-
|
|
91
|
+
second : {
|
|
92
92
|
type : "Edm.Int32",
|
|
93
93
|
ambiguousParameters : true
|
|
94
94
|
},
|
|
95
|
-
|
|
95
|
+
startswith : {
|
|
96
96
|
type : "Edm.Boolean"
|
|
97
97
|
},
|
|
98
|
-
|
|
98
|
+
substring : {
|
|
99
99
|
type : "Edm.String"
|
|
100
100
|
},
|
|
101
|
-
|
|
101
|
+
tolower : {
|
|
102
102
|
type : "Edm.String"
|
|
103
103
|
},
|
|
104
|
-
|
|
104
|
+
toupper : {
|
|
105
105
|
type : "Edm.String"
|
|
106
106
|
},
|
|
107
|
-
|
|
107
|
+
trim : {
|
|
108
108
|
type : "Edm.String"
|
|
109
109
|
},
|
|
110
|
-
|
|
110
|
+
year : {
|
|
111
111
|
type : "Edm.Int32",
|
|
112
112
|
ambiguousParameters : true
|
|
113
113
|
}
|
|
@@ -141,18 +141,21 @@ sap.ui.define([], function () {
|
|
|
141
141
|
this.advanceBws();
|
|
142
142
|
} while (this.advanceIf(","));
|
|
143
143
|
this.advanceBws();
|
|
144
|
-
this.advance(
|
|
144
|
+
this.advance(")");
|
|
145
145
|
return oLeft;
|
|
146
146
|
},
|
|
147
147
|
nud : function () {
|
|
148
|
+
var oToken;
|
|
149
|
+
|
|
148
150
|
this.advanceBws();
|
|
149
|
-
|
|
151
|
+
oToken = this.expression(0);
|
|
152
|
+
|
|
150
153
|
this.advanceBws();
|
|
151
|
-
this.advance(
|
|
154
|
+
this.advance(")");
|
|
152
155
|
return oToken;
|
|
153
156
|
}
|
|
154
157
|
},
|
|
155
|
-
|
|
158
|
+
not : {
|
|
156
159
|
lbp : 7,
|
|
157
160
|
nud : function (oToken) {
|
|
158
161
|
oToken.precedence = 7;
|
|
@@ -223,10 +226,12 @@ sap.ui.define([], function () {
|
|
|
223
226
|
/**
|
|
224
227
|
* Returns the current token and advances to the next one.
|
|
225
228
|
*
|
|
226
|
-
* @param {string} [sExpectedTokenId]
|
|
227
|
-
* token
|
|
228
|
-
* @returns {object}
|
|
229
|
-
*
|
|
229
|
+
* @param {string} [sExpectedTokenId]
|
|
230
|
+
* The expected ID of the token or <code>undefined</code> to accept any token
|
|
231
|
+
* @returns {object|undefined}
|
|
232
|
+
* The current token or <code>undefined</code> if all tokens have been read
|
|
233
|
+
* @throws {SyntaxError}
|
|
234
|
+
* If the next token's ID is not as expected
|
|
230
235
|
*/
|
|
231
236
|
_Parser.prototype.advance = function (sExpectedTokenId) {
|
|
232
237
|
var oToken = this.current();
|
|
@@ -261,7 +266,9 @@ sap.ui.define([], function () {
|
|
|
261
266
|
|
|
262
267
|
/**
|
|
263
268
|
* Returns the current token in the array of tokens, but does not advance.
|
|
264
|
-
*
|
|
269
|
+
*
|
|
270
|
+
* @returns {object|undefined} The current token or <code>undefined</code> if all tokens have
|
|
271
|
+
* been read
|
|
265
272
|
*/
|
|
266
273
|
_Parser.prototype.current = function () {
|
|
267
274
|
return this.aTokens[this.iCurrentToken];
|
|
@@ -271,8 +278,8 @@ sap.ui.define([], function () {
|
|
|
271
278
|
* Throws an error.
|
|
272
279
|
*
|
|
273
280
|
* @param {string} sMessage The error message
|
|
274
|
-
* @param {object} [oToken] The token to report the error for or undefined to
|
|
275
|
-
* input
|
|
281
|
+
* @param {object} [oToken] The token to report the error for or <code>undefined</code> to
|
|
282
|
+
* indicate end of input
|
|
276
283
|
* @throws {SyntaxError} With this error message
|
|
277
284
|
*/
|
|
278
285
|
_Parser.prototype.error = function (sMessage, oToken) {
|
|
@@ -280,7 +287,7 @@ sap.ui.define([], function () {
|
|
|
280
287
|
|
|
281
288
|
if (oToken) {
|
|
282
289
|
sValue = oToken.value;
|
|
283
|
-
sMessage += "'" + (sValue === " " ?
|
|
290
|
+
sMessage += "'" + (sValue === " " ? sValue : sValue.replace(rRws, "")) + "' at "
|
|
284
291
|
+ oToken.at;
|
|
285
292
|
} else {
|
|
286
293
|
sMessage += "end of input";
|
|
@@ -292,7 +299,8 @@ sap.ui.define([], function () {
|
|
|
292
299
|
* Throws an error that the token was not as expected.
|
|
293
300
|
*
|
|
294
301
|
* @param {string} sWhat A description what was expected
|
|
295
|
-
* @param {object} [oToken] The unexpected token or undefined to indicate end of
|
|
302
|
+
* @param {object} [oToken] The unexpected token or <code>undefined</code> to indicate end of
|
|
303
|
+
* input
|
|
296
304
|
* @throws {SyntaxError} An error that the token was not as expected
|
|
297
305
|
*/
|
|
298
306
|
_Parser.prototype.expected = function (sWhat, oToken) {
|
|
@@ -386,7 +394,7 @@ sap.ui.define([], function () {
|
|
|
386
394
|
_FilterParser.prototype.getSymbolValue = function (oToken, sWhat, vDefault) {
|
|
387
395
|
var oSymbol = mFilterParserSymbols[oToken.id];
|
|
388
396
|
|
|
389
|
-
return oSymbol && sWhat in oSymbol ?
|
|
397
|
+
return oSymbol && sWhat in oSymbol ? oSymbol[sWhat] : vDefault;
|
|
390
398
|
};
|
|
391
399
|
|
|
392
400
|
/**
|
|
@@ -454,7 +462,7 @@ sap.ui.define([], function () {
|
|
|
454
462
|
* @alias sap.ui.model.odata.v4.lib._SystemQueryOptionParser
|
|
455
463
|
* @constructor
|
|
456
464
|
*/
|
|
457
|
-
function _SystemQueryOptionParser
|
|
465
|
+
function _SystemQueryOptionParser() {
|
|
458
466
|
}
|
|
459
467
|
|
|
460
468
|
_SystemQueryOptionParser.prototype = Object.create(_Parser.prototype);
|
|
@@ -496,7 +504,7 @@ sap.ui.define([], function () {
|
|
|
496
504
|
function brackets() {
|
|
497
505
|
for (;;) {
|
|
498
506
|
oToken = that.advance();
|
|
499
|
-
if (!oToken || oToken.id ===
|
|
507
|
+
if (!oToken || oToken.id === ";") {
|
|
500
508
|
that.expected("')'", oToken);
|
|
501
509
|
}
|
|
502
510
|
sValue += oToken.value;
|
|
@@ -556,7 +564,7 @@ sap.ui.define([], function () {
|
|
|
556
564
|
oExpand[sExpandPath] = vValue;
|
|
557
565
|
} while (this.advanceIf(","));
|
|
558
566
|
|
|
559
|
-
return {
|
|
567
|
+
return {$expand : oExpand};
|
|
560
568
|
};
|
|
561
569
|
|
|
562
570
|
/**
|
|
@@ -587,7 +595,7 @@ sap.ui.define([], function () {
|
|
|
587
595
|
aSelect.push(sPath);
|
|
588
596
|
} while (this.advanceIf(","));
|
|
589
597
|
|
|
590
|
-
return {
|
|
598
|
+
return {$select : aSelect};
|
|
591
599
|
};
|
|
592
600
|
|
|
593
601
|
/**
|
|
@@ -596,7 +604,7 @@ sap.ui.define([], function () {
|
|
|
596
604
|
* @returns {object} An object with "$foo" as key and the parsed value of bar as value.
|
|
597
605
|
*/
|
|
598
606
|
_SystemQueryOptionParser.prototype.parseSystemQueryOption = function () {
|
|
599
|
-
var oToken = this.advance(
|
|
607
|
+
var oToken = this.advance("OPTION");
|
|
600
608
|
|
|
601
609
|
switch (oToken.value) {
|
|
602
610
|
case "$expand":
|
|
@@ -646,7 +654,7 @@ sap.ui.define([], function () {
|
|
|
646
654
|
return c;
|
|
647
655
|
}
|
|
648
656
|
|
|
649
|
-
for (i = 1; i < sNext.length;
|
|
657
|
+
for (i = 1; i < sNext.length;) {
|
|
650
658
|
if (nextChar(true) === "'") {
|
|
651
659
|
if (nextChar(false) !== "'") {
|
|
652
660
|
return sNext.slice(0, i);
|
|
@@ -687,7 +695,7 @@ sap.ui.define([], function () {
|
|
|
687
695
|
if (c === '"') {
|
|
688
696
|
return sNext.slice(0, i + 1);
|
|
689
697
|
}
|
|
690
|
-
bEscaping = c ===
|
|
698
|
+
bEscaping = c === "\\";
|
|
691
699
|
}
|
|
692
700
|
}
|
|
693
701
|
throw new SyntaxError("Unterminated string at " + iAt + ": " + sOption);
|
|
@@ -769,7 +777,6 @@ sap.ui.define([], function () {
|
|
|
769
777
|
* @returns {string} The filter string
|
|
770
778
|
*/
|
|
771
779
|
buildFilterString : function (oSyntaxTree) {
|
|
772
|
-
|
|
773
780
|
function serialize(oNode, iParentPrecedence) {
|
|
774
781
|
var sFilter;
|
|
775
782
|
|
|
@@ -862,7 +869,9 @@ sap.ui.define([], function () {
|
|
|
862
869
|
*
|
|
863
870
|
* <b>Example:</b>
|
|
864
871
|
*
|
|
865
|
-
* <code>$expand=SO_2_BP,SO_2_SOITEM($expand=SOITEM_2_PRODUCT($expand=PRODUCT_2_BP
|
|
872
|
+
* <code>$expand=SO_2_BP,SO_2_SOITEM($expand=SOITEM_2_PRODUCT($expand=PRODUCT_2_BP
|
|
873
|
+
* ;$select=ID,Name);$select=*;$count=true;$orderby=Name desc)</code>
|
|
874
|
+
* is converted to
|
|
866
875
|
* <pre>
|
|
867
876
|
{
|
|
868
877
|
"$expand" : {
|