diff --git a/DVHMA-OpenUI5/www/resources/.theming b/DVHMA-OpenUI5/www/resources/.theming new file mode 100644 index 0000000..ab043c2 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/.theming @@ -0,0 +1,15 @@ +{ "aBuildFiles" : [ "library" ], + "aFiles" : [ "library" ], + "oExtends" : "Base", + "sBaseFileId" : "library", + "sBaseLibraryId" : "sap/ui/core", + "sBaseThemeId" : "base", + "sEntity" : "Framework", + "sId" : "UI5", + "sLabel" : "SAP Development Toolkit for HTML5", + "sRuntimePathPattern" : "/%frameworkId%/%libId%/themes/%themeId%/%fileId%.css", + "sRuntimeResourcePathPattern" : "%../%%frameworkId%/%libId%/themes/%themeId%", + "sSourcePathPattern" : "/%frameworkId%/%libId%/themes/%themeId%/%fileId%.less", + "sVendor" : "SAP", + "sCompiler" : "Less" +} \ No newline at end of file diff --git a/DVHMA-OpenUI5/www/resources/jquery.sap.act-dbg.js b/DVHMA-OpenUI5/www/resources/jquery.sap.act-dbg.js new file mode 100644 index 0000000..30ed961 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/jquery.sap.act-dbg.js @@ -0,0 +1,184 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides functionality for activity detection +sap.ui.define(['jquery.sap.global'], + function(jQuery) { + "use strict"; + + if (typeof window.jQuery.sap.act === "object" || typeof window.jQuery.sap.act === "function" ) { + return; + } + +// Date.now = Date.now || function() { +// return new Date().getTime(); +// }; + + /** + * @public + * @name jQuery.sap.act + * @namespace + * @static + */ + + var _act = {}, + _active = true, + _deactivatetimer = null, + _I_MAX_IDLE_TIME = 10000, //max. idle time in ms + _deactivateSupported = !!window.addEventListener, //Just skip IE8 + _aActivateListeners = [], + _activityDetected = false, + _domChangeObserver = null; + + function _onDeactivate(){ + _deactivatetimer = null; + + if (_activityDetected) { + _onActivate(); + return; + } + + _active = false; + //_triggerEvent(_aDeactivateListeners); //Maybe provide later + _domChangeObserver.observe(document.documentElement, {childList: true, attributes: true, subtree: true, characterData: true}); + } + + function _onActivate(){ + // Never activate when document is not visible to the user + if (document.hidden === true) { + // In case of IE<10 document.visible is undefined, else it is either true or false + return; + } + + if (!_active) { + _active = true; + _triggerEvent(_aActivateListeners); + _domChangeObserver.disconnect(); + } + if (_deactivatetimer) { + _activityDetected = true; + } else { + _deactivatetimer = setTimeout(_onDeactivate, _I_MAX_IDLE_TIME); + _activityDetected = false; + } + } + + function _triggerEvent(aListeners){ + if (aListeners.length == 0) { + return; + } + var aEventListeners = aListeners.slice(); + setTimeout(function(){ + var oInfo; + for (var i = 0, iL = aEventListeners.length; i < iL; i++) { + oInfo = aEventListeners[i]; + oInfo.fFunction.call(oInfo.oListener || window); + } + }, 0); + } + + + /** + * Registers the given handler to the activity event, which is fired when an activity was detected after a certain period of inactivity. + * + * The Event is not fired for Internet Explorer 8. + * + * @param {Function} fnFunction The function to call, when an activity event occurs. + * @param {Object} [oListener] The 'this' context of the handler function. + * @protected + * + * @function + * @name jQuery.sap.act#attachActivate + */ + _act.attachActivate = function(fnFunction, oListener){ + _aActivateListeners.push({oListener: oListener, fFunction:fnFunction}); + }; + + /** + * Deregisters a previously registered handler from the activity event. + * + * @param {Function} fnFunction The function to call, when an activity event occurs. + * @param {Object} [oListener] The 'this' context of the handler function. + * @protected + * + * @function + * @name jQuery.sap.act#detachActivate + */ + _act.detachActivate = function(fnFunction, oListener){ + for (var i = 0, iL = _aActivateListeners.length; i < iL; i++) { + if (_aActivateListeners[i].fFunction === fnFunction && _aActivateListeners[i].oListener === oListener) { + _aActivateListeners.splice(i,1); + break; + } + } + }; + + /** + * Checks whether recently an activity was detected. + * + * Not supported for Internet Explorer 8. + * + * @return true if recently an activity was detected, false otherwise + * @protected + * + * @function + * @name jQuery.sap.act#isActive + */ + _act.isActive = !_deactivateSupported ? function(){ return true; } : function(){ return _active; }; + + /** + * Reports an activity. + * + * @public + * + * @function + * @name jQuery.sap.act#refresh + */ + _act.refresh = !_deactivateSupported ? function(){} : _onActivate; + + + // Setup and registering handlers + + if (_deactivateSupported) { + var aEvents = ["resize", "orientationchange", "mousemove", "mousedown", "mouseup", //"mouseout", "mouseover", + "touchstart", "touchmove", "touchend", "touchcancel", "paste", "cut", "keydown", "keyup", + "DOMMouseScroll", "mousewheel"]; + for (var i = 0; i < aEvents.length; i++) { + window.addEventListener(aEvents[i], _act.refresh, true); + } + + if (window.MutationObserver) { + _domChangeObserver = new window.MutationObserver(_act.refresh); + } else if (window.WebKitMutationObserver) { + _domChangeObserver = new window.WebKitMutationObserver(_act.refresh); + } else { + _domChangeObserver = { + observe : function(){ + document.documentElement.addEventListener("DOMSubtreeModified", _act.refresh); + }, + disconnect : function(){ + document.documentElement.removeEventListener("DOMSubtreeModified", _act.refresh); + } + }; + } + + if (typeof (document.hidden) === "boolean") { + document.addEventListener("visibilitychange", function() { + // Only trigger refresh if document has changed to visible + if (document.hidden !== true) { + _act.refresh(); + } + }, false); + } + + _onActivate(); + } + + jQuery.sap.act = _act; + + return jQuery; + +}, /* bExport= */ false); diff --git a/DVHMA-OpenUI5/www/resources/jquery.sap.act.js b/DVHMA-OpenUI5/www/resources/jquery.sap.act.js new file mode 100644 index 0000000..9957218 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/jquery.sap.act.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";if(typeof window.jQuery.sap.act==="object"||typeof window.jQuery.sap.act==="function"){return;}var _={},a=true,b=null,c=10000,d=!!window.addEventListener,e=[],f=false,g=null;function h(){b=null;if(f){j();return;}a=false;g.observe(document.documentElement,{childList:true,attributes:true,subtree:true,characterData:true});}function j(){if(document.hidden===true){return;}if(!a){a=true;k(e);g.disconnect();}if(b){f=true;}else{b=setTimeout(h,c);f=false;}}function k(l){if(l.length==0){return;}var m=l.slice();setTimeout(function(){var I;for(var i=0,L=m.length;i + * { + * routes: [{ + * path: string //identifier for one kind of hash + * handler: function //function what will be called when the changed hash is matched against the path. + * //first parameter: the json data passed in when calling the addHistory + * //second parameter: the type of the navigation {@link jQuery.sap.history.NavType} + * }], + * defaultHandler: function //this function will be called when empty hash is matched + * //first parameter: the type of the navigation {@link jQuery.sap.history.NavType} + * } + * + * @public + * @name jQuery.sap.history + * @class Enables the back and forward buttons in browser to navigate back or forth through the browser history stack.

+ * + * It also supports adding virtual history which used only to mark some intermediate state in order to navigate back to the previous state. + * And this state will be skipped from the browser history stack immediately after a new history state is added to the history stack after this state

+ * + * By providing the hash saved from the return value of calling jQuery.sap.history.addHistory, jQuery.sap.history.backToHash will navigate back directly to the + * history state with the same hash.

+ * + * Please use jQuery.sap.history.back() to go one step back in the history stack instead of using window.history.back(), because it handles the empty history stack + * situation and will call the defaultHandler for this case.

+ * + * + * Example for the usage of history handling: + *
+		 *	//Initialization
+		 *	jQuery.sap.history({
+		 *		routes: [], //please refer to the jQuery.sap.history function comment for the format. 
+		 *		defaultHandler: function(){
+		 *			//code here
+		 *		}
+		 *	});
+		 *   
+		 *	//add history
+		 *	var hash = jQuery.sap.history.addHistory("IDENTIFIER", jsonData);
+		 *   
+		 *	//add virtual history
+		 *	jQuery.sap.history.addVirtualHistory();
+		 *   
+		 *	//back to hash
+		 *	jQuery.sap.history.backToHash(hash);
+		 *   
+		 *	//back one step along the history stack
+		 *	jQuery.sap.history.back();
+		 * 
+ * + */ + $.sap.history = function(mSettings){ + //if mSetting is not a object map, return + if (!jQuery.isPlainObject(mSettings)) { + return; + } + + + if (!bInitialized) { + var jWindowDom = $(window), + //using href instead of hash to avoid the escape problem in firefox + sHash = (window.location.href.split("#")[1] || ""); + + jWindowDom.bind('hashchange', detectHashChange); + + if ($.isArray(mSettings.routes)) { + var i, route; + for (i = 0 ; i < mSettings.routes.length ; i++) { + route = mSettings.routes[i]; + if (route.path && route.handler) { + $.sap.history.addRoute(route.path, route.handler); + } + } + } + + if (jQuery.isFunction(mSettings.defaultHandler)) { + defaultHandler = mSettings.defaultHandler; + } + + //push the current hash to the history stack + hashHistory.push(sHash); + + //goes in from bookmark + if (sHash.length > 1) { + jWindowDom.trigger("hashchange", [true]); + } else { + currentHash = sHash; + } + + bInitialized = true; + } + }; + + /** + * This function adds a history record. It will not trigger the related handler of the routes, the changes have to be done by the + * developer. Normally, a history record should be added when changes are done already. + * + * @param {string} sIdf The identifier defined in the routes which will be matched in order to call the corresponding handler + * @param {object} oStateData The object passed to the corresponding handler when the identifier is matched with the url hash + * @param {boolean} bBookmarkable Default value is set to true. If this is set to false, the default handler will be called when this identifier and data are matched + * @param {boolean} [bVirtual] This states if the history is a virtual history that should be skipped when going forward or backward in the history stack. + * @returns {string} sHash The complete hash string which contains the identifier, stringified data, optional uid, and bookmarkable digit. This hash can be passed into + * the backToHash function when navigating back to this state is intended. + * + * @function + * @public + * @name jQuery.sap.history#addHistory + */ + $.sap.history.addHistory = function(sIdf, oStateData, bBookmarkable, bVirtual){ + var uid, sHash; + if (bBookmarkable === undefined) { + bBookmarkable = true; + } + + if (!bVirtual) { + sHash = preGenHash(sIdf, oStateData); + uid = getAppendId(sHash); + if (uid) { + sHash += (sIdSeperator + uid); + } + sHash += (sIdSeperator + (bBookmarkable ? "1" : "0")); + + } else { + sHash = getNextSuffix(currentHash); + } + aHashChangeBuffer.push(sHash); + mSkipHandler[sHash] = true; + window.location.hash = sHash; + + return sHash; + }; + + + /** + * This function adds a virtual history record based on the current hash. A virtual record is only for marking the current state of the application, + * and when the back button clicked it will return to the previous state. It is used when the marked state shouldn't be seen by the user when user click + * the back or forward button of the browser. For example, when showing a context menu a virtual history record should be added and this record will be skipped + * when user navigates back and it will return directly to the previous history record. If you avoid adding the virtual history record, it will return to one + * history record before the one your virtual record is based on. That's why virtual record is necessary. + * + * @function + * @public + * @name jQuery.sap.history#addVirtualHistory + */ + $.sap.history.addVirtualHistory = function(){ + $.sap.history.addHistory("", undefined, false, true); + }; + + + /** + * Adds a route to the history handling. + * + * @param {string} sIdf The identifier that is matched with the hash in the url in order to call the corresponding handler. + * @param {function} fn The function that will be called when the identifier is matched with the hash. + * @param {object} [oThis] If oThis is provided, the fn function's this keyword will be bound to this object. + * + * @returns {object} It returns the this object to enable chaining. + * + * @function + * @public + * @name jQuery.sap.history#addRoute + */ + $.sap.history.addRoute = function(sIdf, fn, oThis){ + if (oThis) { + fn = jQuery.proxy(fn, oThis); + } + + var oRoute = {}; + oRoute.sIdentifier = sIdf; + oRoute['action'] = fn; + + routes.push(oRoute); + return this; + }; + + /** + * Set the default handler which will be called when there's an empty hash in the url. + * + * @param {function} fn The function that will be set as the default handler + * @public + * + * @function + * @name jQuery.sap.history#setDefaultHandler + */ + $.sap.history.setDefaultHandler = function(fn){ + defaultHandler = fn; + }; + + $.sap.history.getDefaultHandler = function(){ + return defaultHandler; + }; + + + + /** + * This function calculate the number of back steps to the specific sHash passed as parameter, + * and then go back to the history state with this hash. + * + * @param {string} sHash The hash string needs to be navigated. This is normally returned when you call the addhistory method. + * @public + * + * @function + * @name jQuery.sap.history#backToHash + */ + $.sap.history.backToHash = function(sHash){ + sHash = sHash || ""; + var iSteps; + + //back is called directly after restoring the bookmark. Since there's no history stored, call the default handler. + if (hashHistory.length === 1) { + if ($.isFunction(defaultHandler)) { + defaultHandler(); + } + } else { + iSteps = calculateStepsToHash(currentHash, sHash); + if (iSteps < 0) { + window.history.go(iSteps); + } else { + jQuery.sap.log.error("jQuery.sap.history.backToHash: " + sHash + "is not in the history stack or it's after the current hash"); + } + } + }; + + /** + * This function will navigate back to the recent history state which has the sPath identifier. It is usually used to navigate back along one + * specific route and jump over the intermediate history state if there are any. + * + * @param {string} sPath The route identifier to which the history navigates back. + * @public + * + * @function + * @name jQuery.sap.history#backThroughPath + */ + $.sap.history.backThroughPath = function(sPath){ + sPath = sPath || ""; + sPath = window.encodeURIComponent(sPath); + var iSteps; + + //back is called directly after restoring the bookmark. Since there's no history stored, call the default handler. + if (hashHistory.length === 1) { + if ($.isFunction(defaultHandler)) { + defaultHandler(); + } + } else { + iSteps = calculateStepsToHash(currentHash, sPath, true); + if (iSteps < 0) { + window.history.go(iSteps); + } else { + jQuery.sap.log.error("jQuery.sap.history.backThroughPath: there's no history state which has the " + sPath + " identifier in the history stack before the current hash"); + } + } + }; + + /** + * This function navigates back through the history stack. The number of steps is set by the parameter iSteps. It also handles the situation when it's called while there's nothing in the history stack. + * Normally this happens when the application is restored from the bookmark. If there's nothing in the history stack, the default handler will be called with NavType jQuery.sap.history.NavType.Back. + * + * @param {int} [iSteps] how many steps you want to go back, by default the value is 1. + * @public + * + * @function + * @name jQuery.sap.history#back + */ + $.sap.history.back = function(iSteps){ + + //back is called directly after restoring the bookmark. Since there's no history stored, call the default handler. + if (hashHistory.length === 1) { + if ($.isFunction(defaultHandler)) { + defaultHandler($.sap.history.NavType.Back); + } + } else { + if (!iSteps) { + iSteps = 1; + } + window.history.go(-1 * iSteps); + } + }; + + /** + * @public + * @name jQuery.sap.history.NavType + * @namespace + * @static + */ + $.sap.history.NavType = {}; + + /** + * This indicates that the new hash is achieved by pressing the back button. + * @type {string} + * @public + * @constant + * @name jQuery.sap.history.NavType.Back + */ + $.sap.history.NavType.Back = "_back"; + + /** + * This indicates that the new hash is achieved by pressing the forward button. + * @type {string} + * @public + * @constant + * @name jQuery.sap.history.NavType.Forward + */ + $.sap.history.NavType.Forward = "_forward"; + + /** + * This indicates that the new hash is restored from the bookmark. + * @type {string} + * @public + * @constant + * @name jQuery.sap.history.NavType.Bookmark + */ + $.sap.history.NavType.Bookmark = "_bookmark"; + + /** + * This indicates that the new hash is achieved by some unknown direction. + * This happens when the user navigates out of the application and then click on the forward button + * in the browser to navigate back to the application. + * @type {string} + * @public + * @constant + * @name jQuery.sap.history.NavType.Unknown + */ + $.sap.history.NavType.Unknown = "_unknown"; + + /** + * This function calculates the number of steps from the sCurrentHash to sToHash. If the sCurrentHash or the sToHash is not in the history stack, it returns 0. + * + * @private + */ + function calculateStepsToHash(sCurrentHash, sToHash, bPrefix){ + var iCurrentIndex = $.inArray(sCurrentHash, hashHistory), + iToIndex, + i, + tempHash; + if (iCurrentIndex > 0) { + if (bPrefix) { + for (i = iCurrentIndex - 1; i >= 0 ; i--) { + tempHash = hashHistory[i]; + if (tempHash.indexOf(sToHash) === 0 && !isVirtualHash(tempHash)) { + return i - iCurrentIndex; + } + } + } else { + iToIndex = $.inArray(sToHash, hashHistory); + + //When back to home is needed, and application is started with nonempty hash but it's nonbookmarkable + if ((iToIndex === -1) && sToHash.length === 0) { + return -1 * iCurrentIndex; + } + + if ((iToIndex > -1) && (iToIndex < iCurrentIndex)) { + return iToIndex - iCurrentIndex; + } + } + } + + return 0; + } + + + + /** + * This function is bound to the window's hashchange event, and it detects the change of the hash. + * When history is added by calling the addHistory or addVirtualHistory function, it will not call the real onHashChange function + * because changes are already done. Only when a hash is navigated by clicking the back or forward buttons in the browser, + * the onHashChange will be called. + * + * @private + */ + function detectHashChange(oEvent, bManual){ + //Firefox will decode the hash when it's set to the window.location.hash, + //so we need to parse the href instead of reading the window.location.hash + var sHash = (window.location.href.split("#")[1] || ""); + sHash = formatHash(sHash); + + if (bManual || !mSkipHandler[sHash]) { + aHashChangeBuffer.push(sHash); + } + + if (!bInProcessing) { + bInProcessing = true; + if (aHashChangeBuffer.length > 0) { + var newHash = aHashChangeBuffer.shift(); + + if (mSkipHandler[newHash]) { + reorganizeHistoryArray(newHash); + delete mSkipHandler[newHash]; + } else { + onHashChange(newHash); + } + currentHash = newHash; + } + bInProcessing = false; + } + } + + /** + * This function removes the leading # sign if there's any. If the bRemoveId is set to true, it will also remove the unique + * id inside the hash. + * + * @private + */ + function formatHash(hash, bRemoveId){ + var sRes = hash, iSharpIndex = hash ? hash.indexOf("#") : -1; + + if (iSharpIndex === 0) { + sRes = sRes.slice(iSharpIndex + 1); + } + + if (bRemoveId) { + sRes = sRes.replace(rIdRegex, ""); + } + + return sRes; + } + + /** + * This function returns a hash with suffix added to the end based on the sHash parameter. It handles as well when the current + * hash is already with suffix. It returns a new suffix with an unique number in the end. + * + * @private + */ + function getNextSuffix(sHash){ + var sPath = sHash ? sHash : ""; + + if (isVirtualHash(sPath)) { + var iIndex = sPath.lastIndexOf(skipSuffix); + sPath = sPath.slice(0, iIndex); + } + + return sPath + skipSuffix + skipIndex++; + } + + /** + * This function encode the identifier and data into a string. + * + * @private + */ + function preGenHash(sIdf, oStateData){ + var sEncodedIdf = window.encodeURIComponent(sIdf); + var sEncodedData = window.encodeURIComponent(window.JSON.stringify(oStateData)); + return sEncodedIdf + sIdSeperator + sEncodedData; + } + + /** + * This function checks if the combination of the identifier and data is unique in the current history stack. + * If yes, it returns an empty string. Otherwise it returns an unique id. + * + * @private + */ + function getAppendId(sHash){ + var iIndex = $.inArray(currentHash, hashHistory), + i, sHistory; + if (iIndex > -1) { + for (i = 0 ; i < iIndex + 1 ; i++) { + sHistory = hashHistory[i]; + if (sHistory.slice(0, sHistory.length - 2) === sHash) { + return jQuery.sap.uid(); + } + } + } + + return ""; + } + + /** + * This function manages the internal array of history records. + * + * @private + */ + function reorganizeHistoryArray(sHash){ + var iIndex = $.inArray(currentHash, hashHistory); + + if ( !(iIndex === -1 || iIndex === hashHistory.length - 1) ) { + hashHistory.splice(iIndex + 1, hashHistory.length - 1 - iIndex); + } + hashHistory.push(sHash); + } + + /** + * This method judges if a hash is a virtual hash that needs to be skipped. + * + * @private + */ + function isVirtualHash(sHash){ + return skipRegex.test(sHash); + } + + /** + * This function calculates the steps forward or backward that need to skip the virtual history states. + * + * @private + */ + function calcStepsToRealHistory(sCurrentHash, bForward){ + var iIndex = $.inArray(sCurrentHash, hashHistory), + i; + + if (iIndex !== -1) { + if (bForward) { + for (i = iIndex ; i < hashHistory.length ; i++) { + if (!isVirtualHash(hashHistory[i])) { + return i - iIndex; + } + } + } else { + for (i = iIndex ; i >= 0 ; i--) { + if (!isVirtualHash(hashHistory[i])) { + return i - iIndex; + } + } + return -1 * (iIndex + 1); + } + } + } + + + /** + * This is the main function that handles the hash change event. + * + * @private + */ + function onHashChange(sHash){ + var oRoute, iStep, oParsedHash, iNewHashIndex, sNavType; + + //handle the nonbookmarkable hash + if (currentHash === undefined) { + //url with hash opened from bookmark + oParsedHash = parseHashToObject(sHash); + + if (!oParsedHash || !oParsedHash.bBookmarkable) { + if (jQuery.isFunction(defaultHandler)) { + defaultHandler($.sap.history.NavType.Bookmark); + } + return; + } + } + + if (sHash.length === 0) { + if (jQuery.isFunction(defaultHandler)) { + defaultHandler($.sap.history.NavType.Back); + } + } else { + //application restored from bookmark with non-empty hash, and later navigates back to the first hash token + //the defaultHandler should be triggered + iNewHashIndex = jQuery.inArray(sHash, hashHistory); + if (iNewHashIndex === 0) { + oParsedHash = parseHashToObject(sHash); + if (!oParsedHash || !oParsedHash.bBookmarkable) { + if (jQuery.isFunction(defaultHandler)) { + defaultHandler($.sap.history.NavType.Back); + } + return; + } + } + + //need to handle when iNewHashIndex equals -1. + //This happens when user navigates out the current application, and later navigates back. + //In this case, the hashHistory is an empty array. + + + if (isVirtualHash(sHash)) { + //this is a virtual history, should do the skipping calculation + if (isVirtualHash(currentHash)) { + //go back to the first one that is not virtual + iStep = calcStepsToRealHistory(sHash, false); + window.history.go(iStep); + } else { + var sameFamilyRegex = new RegExp(jQuery.sap.escapeRegExp(currentHash + skipSuffix) + "[0-9]*$"); + if (sameFamilyRegex.test(sHash)) { + //going forward + //search forward in history for the first non-virtual hash + //if there is, change to that one window.history.go + //if not, stay and return false + iStep = calcStepsToRealHistory(sHash, true); + if (iStep) { + window.history.go(iStep); + } else { + window.history.back(); + } + + } else { + //going backward + //search backward for the first non-virtual hash and there must be one + iStep = calcStepsToRealHistory(sHash, false); + window.history.go(iStep); + } + } + } else { + if (iNewHashIndex === -1) { + sNavType = $.sap.history.NavType.Unknown; + hashHistory.push(sHash); + } else { + if (jQuery.inArray(currentHash, hashHistory, iNewHashIndex + 1) === -1) { + sNavType = $.sap.history.NavType.Forward; + } else { + sNavType = $.sap.history.NavType.Back; + } + } + + + oParsedHash = parseHashToObject(sHash); + if (oParsedHash) { + oRoute = findRouteByIdentifier(oParsedHash.sIdentifier); + + if (oRoute) { + oRoute.action.apply(null, [oParsedHash.oStateData, sNavType]); + } + } else { + jQuery.sap.log.error("hash format error! The current Hash: " + sHash); + } + + } + } + } + + /** + * This function returns the route object matched by the identifier passed as parameter. + * @private + */ + function findRouteByIdentifier(sIdf){ + var i; + for (i = 0 ; i < routes.length ; i++) { + if (routes[i].sIdentifier === sIdf) { + return routes[i]; + } + } + } + + /** + * This function parses the hash from the url to a concrete project in the format: + * { + * sIdentifier: string, + * oStateData: object, + * uid: string (optional), + * bBookmarkable: boolean + * + * } + * @private + */ + function parseHashToObject(sHash){ + if (isVirtualHash(sHash)) { + var i = sHash.lastIndexOf(skipSuffix); + sHash = sHash.slice(0, i); + } + + + var aParts = sHash.split(sIdSeperator), oReturn = {}; + if (aParts.length === 4 || aParts.length === 3) { + oReturn.sIdentifier = window.decodeURIComponent(aParts[0]); + oReturn.oStateData = window.JSON.parse(window.decodeURIComponent(aParts[1])); + if (aParts.length === 4) { + oReturn.uid = aParts[2]; + } + + oReturn.bBookmarkable = aParts[aParts.length - 1] === "0" ? false : true; + + return oReturn; + } else { + //here can be empty hash only with a skipable suffix + return null; + } + } + + })(jQuery, this); + + return jQuery; + +}, /* bExport= */ false); diff --git a/DVHMA-OpenUI5/www/resources/jquery.sap.history.js b/DVHMA-OpenUI5/www/resources/jquery.sap.history.js new file mode 100644 index 0000000..80c0051 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/jquery.sap.history.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','jquery.sap.strings'],function(q){"use strict";(function($,w){var s="_skip",r=/\|id-[0-9]+-[0-9]+/,a=new RegExp(s+"[0-9]*$"),b=[],h=[],S={},c=0,d,I="|",H=[],e=false,f,g=false;$.sap.history=function(z){if(!q.isPlainObject(z)){return;}if(!g){var W=$(w),A=(w.location.href.split("#")[1]||"");W.bind('hashchange',k);if($.isArray(z.routes)){var i,B;for(i=0;i1){W.trigger("hashchange",[true]);}else{d=A;}g=true;}};$.sap.history.addHistory=function(i,z,B,V){var A,C;if(B===undefined){B=true;}if(!V){C=p(i,z);A=n(C);if(A){C+=(I+A);}C+=(I+(B?"1":"0"));}else{C=m(d);}H.push(C);S[C]=true;w.location.hash=C;return C;};$.sap.history.addVirtualHistory=function(){$.sap.history.addHistory("",undefined,false,true);};$.sap.history.addRoute=function(i,z,T){if(T){z=q.proxy(z,T);}var R={};R.sIdentifier=i;R['action']=z;b.push(R);return this;};$.sap.history.setDefaultHandler=function(i){f=i;};$.sap.history.getDefaultHandler=function(){return f;};$.sap.history.backToHash=function(i){i=i||"";var z;if(h.length===1){if($.isFunction(f)){f();}}else{z=j(d,i);if(z<0){w.history.go(z);}else{q.sap.log.error("jQuery.sap.history.backToHash: "+i+"is not in the history stack or it's after the current hash");}}};$.sap.history.backThroughPath=function(P){P=P||"";P=w.encodeURIComponent(P);var i;if(h.length===1){if($.isFunction(f)){f();}}else{i=j(d,P,true);if(i<0){w.history.go(i);}else{q.sap.log.error("jQuery.sap.history.backThroughPath: there's no history state which has the "+P+" identifier in the history stack before the current hash");}}};$.sap.history.back=function(i){if(h.length===1){if($.isFunction(f)){f($.sap.history.NavType.Back);}}else{if(!i){i=1;}w.history.go(-1*i);}};$.sap.history.NavType={};$.sap.history.NavType.Back="_back";$.sap.history.NavType.Forward="_forward";$.sap.history.NavType.Bookmark="_bookmark";$.sap.history.NavType.Unknown="_unknown";function j(C,T,P){var z=$.inArray(C,h),A,i,B;if(z>0){if(P){for(i=z-1;i>=0;i--){B=h[i];if(B.indexOf(T)===0&&!t(B)){return i-z;}}}else{A=$.inArray(T,h);if((A===-1)&&T.length===0){return-1*z;}if((A>-1)&&(A0){var z=H.shift();if(S[z]){o(z);delete S[z];}else{v(z);}d=z;}e=false;}}function l(i,R){var z=i,A=i?i.indexOf("#"):-1;if(A===0){z=z.slice(A+1);}if(R){z=z.replace(r,"");}return z;}function m(i){var P=i?i:"";if(t(P)){var z=P.lastIndexOf(s);P=P.slice(0,z);}return P+s+c++;}function p(i,z){var E=w.encodeURIComponent(i);var A=w.encodeURIComponent(w.JSON.stringify(z));return E+I+A;}function n(z){var A=$.inArray(d,h),i,B;if(A>-1){for(i=0;i=0;i--){if(!t(h[i])){return i-z;}}return-1*(z+1);}}}function v(i){var R,z,P,N,A;if(d===undefined){P=y(i);if(!P||!P.bBookmarkable){if(q.isFunction(f)){f($.sap.history.NavType.Bookmark);}return;}}if(i.length===0){if(q.isFunction(f)){f($.sap.history.NavType.Back);}}else{N=q.inArray(i,h);if(N===0){P=y(i);if(!P||!P.bBookmarkable){if(q.isFunction(f)){f($.sap.history.NavType.Back);}return;}}if(t(i)){if(t(d)){z=u(i,false);w.history.go(z);}else{var B=new RegExp(q.sap.escapeRegExp(d+s)+"[0-9]*$");if(B.test(i)){z=u(i,true);if(z){w.history.go(z);}else{w.history.back();}}else{z=u(i,false);w.history.go(z);}}}else{if(N===-1){A=$.sap.history.NavType.Unknown;h.push(i);}else{if(q.inArray(d,h,N+1)===-1){A=$.sap.history.NavType.Forward;}else{A=$.sap.history.NavType.Back;}}P=y(i);if(P){R=x(P.sIdentifier);if(R){R.action.apply(null,[P.oStateData,A]);}}else{q.sap.log.error("hash format error! The current Hash: "+i);}}}}function x(z){var i;for(i=0;ijQuery.sap.storage(jQuery.sap.storage.Type.session) + * returning an object implementing this interface. + * + * A typical intended usage of this API is the storage of a string representing the state of a control. + * In such usage, the data is stored in the browser session, and + * the methods to be used are {@link #put} and {@link #get}. + * The method {@link #remove} can be used to delete the previously saved state. + * + * In sake of completeness, the method {@link #clear} is available. + * However, it should be called only in very particular situations, + * when a global erasing of data is required. If only keys with certain prefix + * should be deleted the method {@link #removeAll} should be used. + * + * @author SAP SE + * @version 1.28.5 + * @since 0.11.0 + * @public + * @name jQuery.sap.storage.Storage + */ + + /** + * + * Constructor for an instance of jQuery.sap.storage.Storage + * + * @param {jQuery.sap.storage.Type | Storage} [pStorage=jQuery.sap.storage.Type.session] the type this storage should be of or an Object implementing the typical Storage API for direct usage. + * @param {string} [sStorageKeyPrefix='state.key_'] the prefix to use in this storage. + * + * @private + */ + var fnStorage = function(pStorage, sStorageKeyPrefix){ + var sType = "unknown", + sPrefix = sStorageKeyPrefix || sStateStorageKeyPrefix; + sPrefix += "-"; + var sTestKey = sPrefix + "___sapui5TEST___", + oStorage; + + + if (!pStorage || typeof (pStorage) === "string") { + sType = pStorage || "session"; + try { + oStorage = window[sType + "Storage"]; + } catch (e) { + oStorage = null; + } + try { // Test for QUOTA_EXCEEDED_ERR (Happens e.g. in mobile Safari when private browsing active) + if (oStorage) { + oStorage.setItem(sTestKey, "1"); + oStorage.removeItem(sTestKey); + } + } catch (e) { + oStorage = null; + } + } else if (typeof (pStorage) === "object") { + sType = pStorage.getType ? pStorage.getType() : "unknown"; + oStorage = pStorage; + } + var bStorageAvailable = !!oStorage; + + + /** + * Returns whether the given storage is suppported. + * + * @return {boolean} true if storage is supported, false otherwise (e.g. due to browser security settings) + * @public + * @name jQuery.sap.storage.Storage#isSupported + * @function + */ + this.isSupported = function(){ + if (!bStorageAvailable) { //No storage available at all or not accessible + return false; + } + if (typeof (oStorage.isSupported) == "function") { //Possibility to define for custom storage + return oStorage.isSupported(); + } + return true; + }; + + /** + * Stores the passed state string in the session, under the key + * sStorageKeyPrefix + sId. + * + * sStorageKeyPrefix is the id prefix defined for the storage instance (@see jQuery.sap#storage) + * + * @param {string} sId Id for the state to store + * @param {string} sStateToStore content to store + * @return {boolean} true if the data were successfully stored, false otherwise + * @public + * @name jQuery.sap.storage.Storage#put + * @function + */ + this.put = function(sId, sStateToStore) { + //precondition: non-empty sId and available storage feature + jQuery.sap.assert(typeof sId === "string" && sId, "sId must be a non-empty string"); + jQuery.sap.assert(typeof sStateToStore === "string" || bSupportJSON, "sStateToStore must be string or JSON must be supported"); + if (this.isSupported() && sId) { + try { + oStorage.setItem(sPrefix + sId, bSupportJSON ? JSON.stringify(sStateToStore) : sStateToStore); + return true; + } catch (e) { + return false; + } + } else { + return false; + } + }; + + /** + * Retrieves the state string stored in the session under the key + * sStorageKeyPrefix + sId. + * + * sStorageKeyPrefix is the id prefix defined for the storage instance (@see jQuery.sap#storage) + * + * @param {string} sId Id for the state to retrieve + * @return {string} the string from the storage, if the retrieval + * was successful, and null otherwise + * @public + * @name jQuery.sap.storage.Storage#get + * @function + */ + this.get = function(sId) { + //precondition: non-empty sId and available storage feature + jQuery.sap.assert(typeof sId === "string" && sId, "sId must be a non-empty string"); + if (this.isSupported() && sId ) { + try { + var sItem = oStorage.getItem(sPrefix + sId); + return bSupportJSON ? JSON.parse(sItem) : sItem; + } catch (e) { + return null; + } + } else { + return null; + } + }; + + /** + * Deletes the state string stored in the session under the key + * sStorageKeyPrefix + sId.s + * + * sStorageKeyPrefix is the id prefix defined for the storage instance (@see jQuery.sap#storage) + * + * @param {string} sId Id for the state to delete + * @return {boolean} true if the deletion + * was successful or the data doesn't exist under the specified key, + * and false if the feature is unavailable or a problem occurred + * @public + * @name jQuery.sap.storage.Storage#remove + * @function + */ + this.remove = function(sId) { + //precondition: non-empty sId and available storage feature + jQuery.sap.assert(typeof sId === "string" && sId, "sId must be a non-empty string"); + if (this.isSupported() && sId) { + try { + oStorage.removeItem(sPrefix + sId); + return true; + } catch (e) { + return false; + } + } else { + return false; + } + }; + + /** + * Deletes all state strings stored in the session under the key prefix + * sStorageKeyPrefix + sIdPrefix. + * + * sStorageKeyPrefix is the id prefix defined for the storage instance (@see jQuery.sap#storage) + * + * @param {string} sIdPrefix Id prefix for the states to delete + * @return {boolean} true if the deletion + * was successful or the data doesn't exist under the specified key, + * and false if the feature is unavailable or a problem occurred + * @since 1.13.0 + * @public + * @name jQuery.sap.storage.Storage#removeAll + * @function + */ + this.removeAll = function(sIdPrefix) { + //precondition: available storage feature (in case of IE8 typeof native functions returns "object") + if (this.isSupported() && oStorage.length && (document.addEventListener ? /function/ : /function|object/).test(typeof (oStorage.key))) { + try { + var len = oStorage.length; + var aKeysToRemove = []; + var key, i; + var p = sPrefix + (sIdPrefix || ""); + for (i = 0; i < len; i++) { + key = oStorage.key(i); + if (key && key.indexOf(p) == 0) { + aKeysToRemove.push(key); + } + } + + for (i = 0; i < aKeysToRemove.length; i++) { + oStorage.removeItem(aKeysToRemove[i]); + } + + return true; + } catch (e) { + return false; + } + } else { + return false; + } + }; + + /** + * Deletes all the entries saved in the session (Independent of the current Storage instance!). + * + * CAUTION: This method should be called only in very particular situations, + * when a global erasing of data is required. Given that the method deletes + * the data saved under any ID, it should not be called when managing data + * for specific controls. + * + * @return {boolean} true if execution of removal + * was successful or the data to remove doesn't exist, + * and false if the feature is unavailable or a problem occurred + * @public + * @name jQuery.sap.storage.Storage#clear + * @function + */ + this.clear = function() { + //precondition: available storage feature + if (this.isSupported()) { + try { + oStorage.clear(); + return true; + } catch (e) { + return false; + } + } else { + return false; + } + }; + + /** + * Returns the type of the storage. + * @returns {jQuery.sap.storage.Type | string} the type of the storage or "unknown" + * @public + * @name jQuery.sap.storage.Storage#getType + * @function + */ + this.getType = function(){ + return sType; + }; + }; + + + /** + * A map holding instances of different 'standard' storages. + * Used to limit number of created storage objects. + * @private + */ + var mStorages = {}; + + /** + * Returns a {@link jQuery.sap.storage.Storage Storage} object for a given HTML5 storage (type) and, + * as a convenience, provides static functions to access the default (session) storage. + * + * When called as a function, it returns an instance of {@link jQuery.sap.storage.Storage}, providing access + * to the storage of the given {@link jQuery.sap.storage.Type} or to the given HTML5 Storage object. + * + * The default session storage can be easily accessed with methods {@link jQuery.sap.storage.get}, + * {@link jQuery.sap.storage.put}, {@link jQuery.sap.storage.remove}, {@link jQuery.sap.storage.clear}, + * {@link jQuery.sap.storage.getType} and {@link jQuery.sap.storage.removeAll} + * + * @param {jQuery.sap.storage.Type | Storage} + * oStorage the type specifying the storage to use or an object implementing the browser's Storage API. + * @param {string} [sIdPrefix] Prefix used for the Ids. If not set a default prefix is used. + * @returns {jQuery.sap.storage.Storage} + * + * @version 1.28.5 + * @since 0.11.0 + * @namespace + * @type Function + * @public + * + * @borrows jQuery.sap.storage.Storage#get as get + * @borrows jQuery.sap.storage.Storage#put as put + * @borrows jQuery.sap.storage.Storage#remove as remove + * @borrows jQuery.sap.storage.Storage#clear as clear + * @borrows jQuery.sap.storage.Storage#getType as getType + * @borrows jQuery.sap.storage.Storage#removeAll as removeAll + * @borrows jQuery.sap.storage.Storage#isSupported as isSupported + */ + jQuery.sap.storage = function(oStorage, sIdPrefix){ + // if nothing or the default was passed in, simply return ourself + if (!oStorage) { + oStorage = jQuery.sap.storage.Type.session; + } + + if (typeof (oStorage) === "string" && jQuery.sap.storage.Type[oStorage]) { + var sKey = oStorage; + if (sIdPrefix && sIdPrefix != sStateStorageKeyPrefix) { + sKey = oStorage + "_" + sIdPrefix; + } + + return mStorages[sKey] || (mStorages[sKey] = new fnStorage(oStorage, sIdPrefix)); + } + + // OK, tough but probably good for issue identification. As something was passed in, let's at least ensure our used API is fulfilled. + jQuery.sap.assert(oStorage instanceof Object && oStorage.clear && oStorage.setItem && oStorage.getItem && oStorage.removeItem, "storage: duck typing the storage"); + return new fnStorage(oStorage, sIdPrefix); + }; + + /** + * Enumeration of the storage types supported by {@link jQuery.sap.storage.Storage} + * @class + * @static + * @public + * @version 1.28.5 + * @since 0.11.0 + */ + jQuery.sap.storage.Type = { + /** + * Indicates usage of the browser's localStorage feature + * @public + */ + local: "local", + /** + * Indicates usage of the browser's sessionStorage feature + * @public + */ + session: "session", + /** + * Indicates usage of the browser's globalStorage feature + * @public + */ + global: "global" + }; + + // ensure the storage constructor applied to our storage object + fnStorage.apply(jQuery.sap.storage); + mStorages[jQuery.sap.storage.Type.session] = jQuery.sap.storage; + + return jQuery; + +}, /* bExport= */ false); diff --git a/DVHMA-OpenUI5/www/resources/jquery.sap.storage.js b/DVHMA-OpenUI5/www/resources/jquery.sap.storage.js new file mode 100644 index 0000000..c727391 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/jquery.sap.storage.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var s=!!(window.JSON&&JSON.parse&&JSON.stringify);var S="state.key_";var f=function(a,b){var t="unknown",P=b||S;P+="-";var T=P+"___sapui5TEST___",o;if(!a||typeof(a)==="string"){t=a||"session";try{o=window[t+"Storage"];}catch(e){o=null;}try{if(o){o.setItem(T,"1");o.removeItem(T);}}catch(e){o=null;}}else if(typeof(a)==="object"){t=a.getType?a.getType():"unknown";o=a;}var c=!!o;this.isSupported=function(){if(!c){return false;}if(typeof(o.isSupported)=="function"){return o.isSupported();}return true;};this.put=function(i,d){if(this.isSupported()&&i){try{o.setItem(P+i,s?JSON.stringify(d):d);return true;}catch(e){return false;}}else{return false;}};this.get=function(i){if(this.isSupported()&&i){try{var I=o.getItem(P+i);return s?JSON.parse(I):I;}catch(e){return null;}}else{return null;}};this.remove=function(i){if(this.isSupported()&&i){try{o.removeItem(P+i);return true;}catch(e){return false;}}else{return false;}};this.removeAll=function(I){if(this.isSupported()&&o.length&&(document.addEventListener?/function/:/function|object/).test(typeof(o.key))){try{var l=o.length;var k=[];var d,i;var p=P+(I||"");for(i=0;i 0) { + + var sErrorText = jQuery.sap.serializeXML(oDocument), rParserError = /error on line (\d+) at column (\d+): ([^<]*)/; + + if (rParserError.test(sErrorText)) { + oParseError.reason = RegExp.$3; + oParseError.url = ""; + oParseError.line = parseInt(RegExp.$1, 10); + oParseError.linepos = parseInt(RegExp.$2, 10); + oParseError.srcText = ""; + + } + return oParseError; + } + + if (!oDocument || !oDocument.documentElement) { + return oParseError; + } + + return { + errorCode : 0 + }; + }; + + return jQuery; + +}, /* bExport= */ false); diff --git a/DVHMA-OpenUI5/www/resources/jquery.sap.xml.js b/DVHMA-OpenUI5/www/resources/jquery.sap.xml.js new file mode 100644 index 0000000..f9fa120 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/jquery.sap.xml.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/Device'],function(q,D){"use strict";q.sap.parseXML=function parseXML(x){var X;if(window.DOMParser){var p=new DOMParser();try{X=p.parseFromString(x,"text/xml");}catch(e){var P=q.sap.getParseError(X);X={};P.reason=e.message;X.parseError=P;return X;}}else{X=new ActiveXObject("Microsoft.XMLDOM");X.async=false;X.loadXML(x);}var P=q.sap.getParseError(X);if(P){if(!X.parseError){X.parseError=P;}}return X;};q.sap.serializeXML=function serializeXML(x){var X="";if(window.ActiveXObject){X=x.xml;if(X){return X;}}if(window.XMLSerializer){var s=new XMLSerializer();X=s.serializeToString(x);}return X;};q.sap.isEqualNode=function(n,N){if(n===N){return true;}if(!n||!N){return false;}if(n.isEqualNode){return n.isEqualNode(N);}if(n.nodeType!=N.nodeType){return false;}if(n.nodeValue!=N.nodeValue){return false;}if(n.baseName!=N.baseName){return false;}if(n.nodeName!=N.nodeName){return false;}if(n.nameSpaceURI!=N.nameSpaceURI){return false;}if(n.prefix!=N.prefix){return false;}if(n.nodeType!=1){return true;}if(n.attributes.length!=N.attributes.length){return false;}for(var i=0;i0){var e=q.sap.serializeXML(d),r=/error on line (\d+) at column (\d+): ([^<]*)/;if(r.test(e)){p.reason=RegExp.$3;p.url="";p.line=parseInt(RegExp.$1,10);p.linepos=parseInt(RegExp.$2,10);p.srcText="";}return p;}if(!d||!d.documentElement){return p;}return{errorCode:0};};return q;},false); diff --git a/DVHMA-OpenUI5/www/resources/sap-ui-core-dbg.js b/DVHMA-OpenUI5/www/resources/sap-ui-core-dbg.js new file mode 100644 index 0000000..a801774 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap-ui-core-dbg.js @@ -0,0 +1,51329 @@ +/*! + * jQuery JavaScript Library v1.11.1 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-05-01T17:42Z + */ + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper window is present, + // execute the factory and get jQuery + // For environments that do not inherently posses a window with a document + // (such as Node.js), expose a jQuery-making factory as module.exports + // This accentuates the need for the creation of a real window + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +// + +var deletedIds = []; + +var slice = deletedIds.slice; + +var concat = deletedIds.concat; + +var push = deletedIds.push; + +var indexOf = deletedIds.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var support = {}; + + + +var + version = "1.11.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1, IE<9 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: deletedIds.sort, + splice: deletedIds.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( support.ownLast ) { + for ( key in obj ) { + return hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call(obj) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Support: Android<4.1, IE<9 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( indexOf ) { + return indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + while ( j < len ) { + first[ i++ ] = second[ j++ ]; + } + + // Support: IE<9 + // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) + if ( len !== len ) { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: function() { + return +( new Date() ); + }, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v1.10.19 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-04-18 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + characterEncoding + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document (jQuery #6963) + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== strundefined && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, + doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent !== parent.top ) { + // IE11 does not have attachEvent, so all must suffer + if ( parent.addEventListener ) { + parent.addEventListener( "unload", function() { + setDocument(); + }, false ); + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", function() { + setDocument(); + }); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { + div.innerHTML = "
"; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowclip^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (oldCache = outerCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + outerCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context !== document && context; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is no seed and only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); +}; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +}); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return typeof rootjQuery.ready !== "undefined" ? + rootjQuery.ready( selector ) : + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.extend({ + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +jQuery.fn.extend({ + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.unique( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); +var rnotwhite = (/\S+/g); + + + +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + + } else if ( !(--remaining) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend({ + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +}); + +/** + * Clean-up method for dom ready events + */ +function detach() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } +} + +/** + * The ready event handler and self cleanup method + */ +function completed() { + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + + +var strundefined = typeof undefined; + + + +// Support: IE<9 +// Iteration over object's inherited properties before its own +var i; +for ( i in jQuery( support ) ) { + break; +} +support.ownLast = i !== "0"; + +// Note: most support tests are defined in their respective modules. +// false until the test is run +support.inlineBlockNeedsLayout = false; + +// Execute ASAP in case we need to set body.style.zoom +jQuery(function() { + // Minified: var a,b,c,d + var val, div, body, container; + + body = document.getElementsByTagName( "body" )[ 0 ]; + if ( !body || !body.style ) { + // Return for frameset docs that don't have a body + return; + } + + // Setup + div = document.createElement( "div" ); + container = document.createElement( "div" ); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild( container ).appendChild( div ); + + if ( typeof div.style.zoom !== strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; + + support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; + if ( val ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); +}); + + + + +(function() { + var div = document.createElement( "div" ); + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +/** + * Determines whether an object can have data + */ +jQuery.acceptData = function( elem ) { + var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], + nodeType = +elem.nodeType || 1; + + // Do not set data on non-element DOM nodes because it will not be cleared (#8335). + return nodeType !== 1 && nodeType !== 9 ? + false : + + // Nodes accept data unless otherwise specified; rejection can be conditional + !noData || noData !== true && elem.getAttribute("classid") === noData; +}; + + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /([A-Z])/g; + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + +function internalData( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements (space-suffixed to avoid Object.prototype collisions) + // throw uncatchable exceptions if you attempt to set expando properties + noData: { + "applet ": true, + "embed ": true, + // ...but Flash objects (which have this classid) *can* handle expandos + "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var i, name, data, + elem = this[0], + attrs = elem && elem.attributes; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + + +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); + }; + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; +}; +var rcheckableType = (/^(?:checkbox|radio)$/i); + + + +(function() { + // Minified: var a,b,c + var input = document.createElement( "input" ), + div = document.createElement( "div" ), + fragment = document.createDocumentFragment(); + + // Setup + div.innerHTML = "
a"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName( "tbody" ).length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = + document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + input.type = "checkbox"; + input.checked = true; + fragment.appendChild( input ); + support.appendChecked = input.checked; + + // Make sure textarea (and checkbox) defaultValue is properly cloned + // Support: IE6-IE11+ + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // #11217 - WebKit loses check when the name is after the checked attribute + fragment.appendChild( div ); + div.innerHTML = ""; + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + support.noCloneEvent = true; + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } +})(); + + +(function() { + var i, eventName, + div = document.createElement( "div" ); + + // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) + for ( i in { submit: true, change: true, focusin: true }) { + eventName = "on" + i; + + if ( !(support[ i + "Bubbles" ] = eventName in window) ) { + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + div.setAttribute( eventName, "t" ); + support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && jQuery.acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + // Support: IE < 9, Android < 4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && e.stopImmediatePropagation ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + jQuery._removeData( doc, fix ); + } else { + jQuery._data( doc, fix, attaches ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
", "
" ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + col: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!support.noCloneEvent || !support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
" && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + deletedIds.push( id ); + } + } + } + } + } +}); + +jQuery.fn.extend({ + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + remove: function( selector, keepData /* Internal Use Only */ ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map(function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var arg = arguments[ 0 ]; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + arg = this.parentNode; + + jQuery.cleanData( getAll( this ) ); + + if ( arg ) { + arg.replaceChild( elem, this ); + } + }); + + // Force removal if there was no new content (e.g., from empty arguments) + return arg && (arg.length || arg.nodeType) ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + + +var iframe, + elemdisplay = {}; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var style, + elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + // getDefaultComputedStyle might be reliably used only on attached element + display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? + + // Use of this method is a temporary fix (more like optmization) until something better comes along, + // since it was removed from specification and supported only in FF + style.display : jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = (iframe || jQuery( "'); + } + }; + /************************************************************** + * END - Life Cycle Methods + **************************************************************/ + + /************************************************************** + * START - Touch Event Handlers + **************************************************************/ + SplitContainer.prototype.ontouchstart = function(oEvent){ + if (!sap.ui.Device.system.phone) { + if (oEvent.originalEvent && oEvent.originalEvent._sapui_handledByControl) { + this._bIgnoreSwipe = true; + } else { + this._bIgnoreSwipe = false; + } + } + }; + + SplitContainer.prototype.onswiperight = function(oEvent) { + //only enabled on tablet or Windows 8 + if ((sap.ui.Device.system.tablet || (sap.ui.Device.os.windows && sap.ui.Device.os.version >= 8)) + && (this._portraitHide() || this._hideMode()) + && !this._bIgnoreSwipe) { + //if event is already handled by inner control, master won't be shown. + //this fix the problem when for example, carousel control in rendered in detail area. + //CSN 2013 224661 + if (!this._bDetailNavButton) { + this.showMaster(); + } + } + }; + + //handles closing of master navContainer and navigation inside it + SplitContainer.prototype.ontap = function(oEvent) { + if (sap.ui.Device.system.phone) { + return; + } + + var bIsMasterNav = true; + + if (jQuery(oEvent.target).parents(".sapMSplitContainerDetail").length > 0) { + bIsMasterNav = false; + } + + // when press not in MasterNav and not the showMasterButton, master will be hidden + // this should happen when: + // 1. showhidemode in portrait + // 2. hidemode + if (((!this._oldIsLandscape && this.getMode() == "ShowHideMode") || this.getMode() == "HideMode") + // press isn't occuring in master area + && !bIsMasterNav + // master is open + && this._bMasterisOpen + // press isn't triggered by the showMasterButton + && !jQuery.sap.containsOrEquals(this._oShowMasterBtn.getDomRef(), oEvent.target)) { + this.hideMaster(); + } + }; + + SplitContainer.prototype.onswipeleft = function(oEvent) { + //only enabled on tablet or Windows 8 + if ((sap.ui.Device.system.tablet || (sap.ui.Device.os.windows && sap.ui.Device.os.version >= 8)) + && (this._portraitHide() || this._hideMode()) + && !this._bIgnoreSwipe) { + this.hideMaster(); + } + }; + + SplitContainer.prototype._onMasterButtonTap = function(oEvent){ + if (sap.ui.Device.system.phone) { + return; + } + + if (!this._oldIsLandscape) { + if (this.getMode() == "PopoverMode") { + if (!this._oPopOver.isOpen()) { + this._oPopOver.openBy(this._oShowMasterBtn, true); + } else { + this._oPopOver.close(); + } + } else { + this.showMaster(); + } + } else { + if (this.getMode() === "HideMode") { + this.showMaster(); + } + } + }; + //************************************************************** + //* End - Touch Event Handlers + //************************************************************** + + //************************************************************** + //* START - Public methods + //************************************************************** + + + /** + * Navigate to given page inside the SplitContainer. The navigation is done inside the master area if the page has been added, otherwise it tries to do the page navigation in the detail area. + * + * @param {string} sPageId + * The screen to which drilldown should happen. The ID or the control itself can be given. + * @param {string} sTransitionName + * The type of the transition/animation to apply. This parameter can be omitted; then the default is "slide" (horizontal movement from the right). + * Other options are: "fade", "flip", and "show" and the names of any registered custom transitions. + * + * None of the standard transitions is currently making use of any given transition parameters. + * @param {object} oData + * This optional object can carry any payload data which should be made available to the target page. The "beforeShow" event on the target page will contain this data object as "data" property. + * + * Use case: in scenarios where the entity triggering the navigation can or should not directly initialize the target page, it can fill this object and the target page itself (or a listener on it) can take over the initialization, using the given data. + * + * When the "transitionParameters" object is used, this "data" object must also be given (either as object or as null) in order to have a proper parameter order. + * @param {object} oTransitionParameters + * This optional object can contain additional information for the transition function, like the DOM element which triggered the transition or the desired transition duration. + * + * For a proper parameter order, the "data" parameter must be given when the "transitionParameters" parameter is used. (it can be given as "null") + * + * NOTE: it depends on the transition function how the object should be structured and which parameters are actually used to influence the transition. + * The "show", "slide" and "fade" transitions do not use any parameter. + * @type sap.m.SplitContainer + * @public + * @since 1.10.0 + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.to = function(pageId, transitionName, data, oTransitionParameters) { + if (this._oMasterNav.getPage(pageId)) { + this._oMasterNav.to(pageId, transitionName, data, oTransitionParameters); + } else { + this._oDetailNav.to(pageId, transitionName, data, oTransitionParameters); + } + }; + + + /** + * Navigates back to the nearest previous page in the SplitContainer history with the given ID. If there is no such page among the previous pages, nothing happens. + * The transition effect which had been used to get to the current page is inverted and used for this navigation. + * + * Calling this navigation method triggers first the (cancelable) "navigate" event on the SplitContainer, then the "beforeHide" pseudo event on the source page and "beforeFirstShow" (if applicable) and"beforeShow" on the target page. Later - after the transition has completed - the "afterShow" pseudo event is triggered on the target page and "afterHide" on the page which has been left. The given backData object is available in the "beforeFirstShow", "beforeShow" and "afterShow" event object as "data" property. The original "data" object from the "to" navigation is also available in these event objects. + * + * @param {string} sPageId + * The screen to which drilldown should happen. The ID or the control itself can be given. + * @param {object} oBackData + * This optional object can carry any payload data which should be made available to the target page of the back navigation. The event on the target page will contain this data object as "backData" property. (The original data from the "to()" navigation will still be available as "data" property.) + * + * In scenarios where the entity triggering the navigation can or should not directly initialize the target page, it can fill this object and the target page itself (or a listener on it) can take over the initialization, using the given data. + * For back navigation this can be used e.g. when returning from a detail page to transfer any settings done there. + * + * When the "transitionParameters" object is used, this "data" object must also be given (either as object or as null) in order to have a proper parameter order. + * @param {object} oTransitionParameters + * This optional object can give additional information to the transition function, like the DOM element which triggered the transition or the desired transition duration. + * The animation type can NOT be selected here - it is always the inverse of the "to" navigation. + * + * In order to use the "transitionParameters" property, the "data" property must be used (at least "null" must be given) for a proper parameter order. + * + * NOTE: it depends on the transition function how the object should be structured and which parameters are actually used to influence the transition. + * @type sap.m.SplitContainer + * @public + * @since 1.10.0 + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.backToPage = function(pageId, backData, oTransitionParameters) { + if (this._oMasterNav.getPage(pageId)) { + this._oMasterNav.backToPage(pageId, backData, oTransitionParameters); + } else { + this._oDetailNav.backToPage(pageId, backData, oTransitionParameters); + } + }; + + + + /** + * Inserts the page/control with the specified ID into the navigation history stack of the NavContainer. + * + * This can be used for deep-linking when the user directly reached a drilldown detail page using a bookmark and then wants to navigate up in the drilldown hierarchy. Normally such a back navigation would not be possible because there is no previous page in the SplitContainer's history stack. + * + * @param {string} sPageId + * The ID of the control/page/screen which is inserted into the history stack. The respective control must be aggregated by the SplitContainer, otherwise this will cause an error. + * @param {string} sTransitionName + * The type of the transition/animation which would have been used to navigate from the (inserted) previous page to the current page. When navigating back, the inverse animation will be applied. + * This parameter can be omitted; then the default is "slide" (horizontal movement from the right). + * @param {object} oData + * This optional object can carry any payload data which would have been given to the inserted previous page if the user would have done a normal forward navigation to it. + * @type sap.m.SplitContainer + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.insertPreviousPage = function(pageId, transitionName, data) { + if (this._oMasterNav.getPage(pageId)) { + this._oMasterNav.insertPreviousPage(pageId, transitionName, data); + } else { + this._oDetailNav.insertPreviousPage(pageId, transitionName, data); + } + return this; + }; + + + + /** + * navigate to given master page + * + * @param {string} sPageId + * The screen to which drilldown should happen. The ID or the control itself can be given. + * @param {string} sTransitionName + * The type of the transition/animation to apply. This parameter can be omitted; then the default is "slide" (horizontal movement from the right). + * Other options are: "fade", "flip", and "show" and the names of any registered custom transitions. + * + * None of the standard transitions is currently making use of any given transition parameters. + * @param {object} oData + * Since version 1.7.1. This optional object can carry any payload data which should be made available to the target page. The "beforeShow" event on the target page will contain this data object as "data" property. + * + * Use case: in scenarios where the entity triggering the navigation can or should not directly initialize the target page, it can fill this object and the target page itself (or a listener on it) can take over the initialization, using the given data. + * + * When the "transitionParameters" object is used, this "data" object must also be given (either as object or as null) in order to have a proper parameter order. + * @param {object} oTransitionParameters + * Since version 1.7.1. This optional object can contain additional information for the transition function, like the DOM element which triggered the transition or the desired transition duration. + * + * For a proper parameter order, the "data" parameter must be given when the "transitionParameters" parameter is used. (it can be given as "null") + * + * NOTE: it depends on the transition function how the object should be structured and which parameters are actually used to influence the transition. + * The "show", "slide" and "fade" transitions do not use any parameter. + * @type sap.m.SplitContainer + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.toMaster = function(pageId, transitionName, data, oTransitionParameters) { + this._oMasterNav.to(pageId, transitionName, data, oTransitionParameters); + }; + + + /** + * navigate back within MasterView + * + * @param {object} oBackData + * This optional object can carry any payload data which should be made available to the target page of the back navigation. The event on the target page will contain this data object as "backData" property. (The original data from the "to()" navigation will still be available as "data" property.) + * + * In scenarios where the entity triggering the navigation can or should not directly initialize the target page, it can fill this object and the target page itself (or a listener on it) can take over the initialization, using the given data. + * For back navigation this can be used e.g. when returning from a detail page to transfer any settings done there. + * + * When the "transitionParameters" object is used, this "data" object must also be given (either as object or as null) in order to have a proper parameter order. + * @param {object} oTransitionParameter + * This optional object can give additional information to the transition function, like the DOM element which triggered the transition or the desired transition duration. + * The animation type can NOT be selected here - it is always the inverse of the "to" navigation. + * + * In order to use the "transitionParameters" property, the "data" property must be used (at least "null" must be given) for a proper parameter order. + * + * NOTE: it depends on the transition function how the object should be structured and which parameters are actually used to influence the transition. + * @type sap.m.SplitContainer + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.backMaster = function(backData, oTransitionParameters) { + this._oMasterNav.back(backData, oTransitionParameters); + }; + + SplitContainer.prototype.backMasterToPage = function(pageId, backData, oTransitionParameters) { + this._oMasterNav.backToPage(pageId, backData, oTransitionParameters); + }; + + + /** + * navigate to given detail page + * + * @param {string} sPageId + * @param {string} sTransitionName + * The type of the transition/animation to apply. This parameter can be omitted; then the default is "slide" (horizontal movement from the right). + * Other options are: "fade", "flip", and "show" and the names of any registered custom transitions. + * + * None of the standard transitions is currently making use of any given transition parameters. + * @param {object} oData + * This optional object can carry any payload data which should be made available to the target page. The "beforeShow" event on the target page will contain this data object as "data" property. + * + * Use case: in scenarios where the entity triggering the navigation can or should not directly initialize the target page, it can fill this object and the target page itself (or a listener on it) can take over the initialization, using the given data. + * + * When the "transitionParameters" object is used, this "data" object must also be given (either as object or as null) in order to have a proper parameter order. + * @param {object} oTransitionParameter + * This optional object can contain additional information for the transition function, like the DOM element which triggered the transition or the desired transition duration. + * + * For a proper parameter order, the "data" parameter must be given when the "transitionParameters" parameter is used. (it can be given as "null") + * + * NOTE: it depends on the transition function how the object should be structured and which parameters are actually used to influence the transition. + * The "show", "slide" and "fade" transitions do not use any parameter. + * @type sap.m.SplitContainer + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.toDetail = function(pageId, transitionName, data, oTransitionParameters) { + this._oDetailNav.to(pageId, transitionName, data, oTransitionParameters); + }; + + + /** + * navigate back within DetailView + * + * @param {object} oBackData + * This optional object can carry any payload data which should be made available to the target page of the back navigation. The event on the target page will contain this data object as "backData" property. (The original data from the "to()" navigation will still be available as "data" property.) + * + * In scenarios where the entity triggering the navigation can or should not directly initialize the target page, it can fill this object and the target page itself (or a listener on it) can take over the initialization, using the given data. + * For back navigation this can be used e.g. when returning from a detail page to transfer any settings done there. + * + * When the "transitionParameters" object is used, this "data" object must also be given (either as object or as null) in order to have a proper parameter order. + * @param {object} oTransitionParameter + * This optional object can give additional information to the transition function, like the DOM element which triggered the transition or the desired transition duration. + * The animation type can NOT be selected here - it is always the inverse of the "to" navigation. + * + * In order to use the "transitionParameters" property, the "data" property must be used (at least "null" must be given) for a proper parameter order. + * + * NOTE: it depends on the transition function how the object should be structured and which parameters are actually used to influence the transition. + * @type sap.m.SplitContainer + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.backDetail = function(backData, oTransitionParameters) { + this._oDetailNav.back(backData, oTransitionParameters); + }; + + SplitContainer.prototype.backDetailToPage = function(pageId, backData, oTransitionParameters) { + this._oDetailNav.backToPage(pageId, backData, oTransitionParameters); + }; + + + /** + * Navigates back to the initial/top level of Master (this is the element aggregated as "initialPage", or the first added element). If already on the initial page, nothing happens. + * The transition effect which had been used to get to the current page is inverted and used for this navigation. + * + * @param {object} oBackData + * This optional object can carry any payload data which should be made available to the target page of the back navigation. The event on the target page will contain this data object as "backData" property. (The original data from the "to()" navigation will still be available as "data" property.) + * + * In scenarios where the entity triggering the navigation can or should not directly initialize the target page, it can fill this object and the target page itself (or a listener on it) can take over the initialization, using the given data. + * For back navigation this can be used e.g. when returning from a detail page to transfer any settings done there. + * + * When the "transitionParameters" object is used, this "data" object must also be given (either as object or as null) in order to have a proper parameter order. + * @param {object} oTransitionParameter + * This optional object can give additional information to the transition function, like the DOM element which triggered the transition or the desired transition duration. + * The animation type can NOT be selected here - it is always the inverse of the "to" navigation. + * + * In order to use the "transitionParameters" property, the "data" property must be used (at least "null" must be given) for a proper parameter order. + * + * NOTE: it depends on the transition function how the object should be structured and which parameters are actually used to influence the transition. + * @type sap.ui.core.Control + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.backToTopMaster = function(backData, oTransitionParameters) { + this._oMasterNav.backToTop(backData, oTransitionParameters); + }; + + + /** + * Navigates back to the initial/top level of Detail (this is the element aggregated as "initialPage", or the first added element). If already on the initial page, nothing happens. + * The transition effect which had been used to get to the current page is inverted and used for this navigation. + * + * @param {object} oBackData + * This optional object can carry any payload data which should be made available to the target page of the back navigation. The event on the target page will contain this data object as "backData" property. (The original data from the "to()" navigation will still be available as "data" property.) + * + * In scenarios where the entity triggering the navigation can or should not directly initialize the target page, it can fill this object and the target page itself (or a listener on it) can take over the initialization, using the given data. + * For back navigation this can be used e.g. when returning from a detail page to transfer any settings done there. + * + * When the "transitionParameters" object is used, this "data" object must also be given (either as object or as null) in order to have a proper parameter order. + * @param {object} oTransitionParameter + * This optional object can give additional information to the transition function, like the DOM element which triggered the transition or the desired transition duration. + * The animation type can NOT be selected here - it is always the inverse of the "to" navigation. + * + * In order to use the "transitionParameters" property, the "data" property must be used (at least "null" must be given) for a proper parameter order. + * + * NOTE: it depends on the transition function how the object should be structured and which parameters are actually used to influence the transition. + * @type sap.ui.core.Control + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.backToTopDetail = function(backData, oTransitionParameters) { + this._oDetailNav.backToTop(backData, oTransitionParameters); + }; + + SplitContainer.prototype.addMasterPage = function(oPage) { + if (this._hasPageInArray(this._aMasterPages, oPage)) { + return; + } + + // When the same NavContainer is used for both aggregations, calling "addPage()" will not do anything in case the oPage is already + // aggregated by this NavContainer, but in the other "virtual" aggregation of this SplitContainer (i.e. moved from detailPages to masterPages). + // This would lead to the page being added to the "master" array, but not removed from the "detail" array because the patched method + // in the NavContainer (removePage) is not called. Hence, remove it directly from the detail array. + if (this._oMasterNav === this._oDetailNav && jQuery.inArray(oPage, this._oDetailNav.getPages()) !== -1) { + this._removePageFromArray(this._aDetailPages, oPage); + } + this._oMasterNav.addPage(oPage); + this._aMasterPages.push(oPage); + return this; + }; + + SplitContainer.prototype.addDetailPage = function(oPage) { + var that = this, + oRealPage = this._getRealPage(oPage); + + if (this._hasPageInArray(this._aDetailPages, oPage)) { + return; + } + + //processing the header in page + oPage.addDelegate({ + onBeforeShow: function(){ + if (oRealPage) { + if (!sap.ui.Device.system.phone) { + //now it's a tablet + //this is the initialization of header in page inside the detail navigation container + //rules are displayed below + // 1. navigation button is completely removed from the page in detail nav container + // 2. iOS: show title if there is + // 3: Android: Icon isn't shown directly in header, the icon is added to the showMasterButton. + // 4: Android: show title in portrait mode, hide title in landscape + if (that._needShowMasterButton()) { + that._setMasterButton(oRealPage); + } + } + } + } + }); + + if (oRealPage) { + oRealPage.addDelegate({ + //before rendering is used in order to avoid invalidate in renderer (set button to the header in page) + onBeforeRendering: function(){ + // Maintain the masterButton only when the page is still the current page in detail NavContainer. + // If the rerendering occurs after the page navigation, it's not needed to maintain the master button anymore. + // This check is needed otherwise it may cause endless rerendering of the last page and the current page. + if (!sap.ui.Device.system.phone && (that._oDetailNav.getCurrentPage() === oRealPage)) { + if (!oRealPage.getShowNavButton() && that._needShowMasterButton()) { + that._setMasterButton(oRealPage, true); + } else { + that._removeMasterButton(oRealPage); + } + } + } + }); + + if (!sap.ui.Device.system.phone) { + // Setting custom header to the page replaces the internal header completely, therefore the button which shows the master area has to be inserted to the custom header when it's set. + oRealPage._setCustomHeaderInSC = oRealPage.setCustomHeader; + oRealPage.setCustomHeader = function(oHeader) { + this._setCustomHeaderInSC.apply(this, arguments); + if (oHeader && that._needShowMasterButton()) { + that._setMasterButton(oRealPage); + } + return this; + }; + + oRealPage._setShowNavButtonInSC = oRealPage.setShowNavButton; + oRealPage.setShowNavButton = function(bShow) { + this._setShowNavButtonInSC.apply(this, arguments); + if (!bShow && that._needShowMasterButton()) { + that._setMasterButton(oRealPage); + } else { + that._removeMasterButton(oRealPage, true); + } + return this; + }; + } + } + + // When the same NavContainer is used for both aggregations, calling "addPage()" will not do anything in case the oPage is already + // aggregated by this NavContainer, but in the other "virtual" aggregation of this SplitContainer (i.e. moved from masterPages to detailPages). + // This would lead to the page being added to the "detail" array, but not removed from the "master" array because the patched method + // in the NavContainer (removePage) is not called. Hence, remove it directly from the master array. + if (this._oMasterNav === this._oDetailNav && jQuery.inArray(oPage, this._oMasterNav.getPages()) !== -1) { + this._removePageFromArray(this._aMasterPages, oPage); + } + + this._oDetailNav.addPage(oPage); + this._aDetailPages.push(oPage); + return this; + }; + + SplitContainer.prototype.getMasterPages = function() { + return this._aMasterPages; + }; + + SplitContainer.prototype.getDetailPages = function() { + return this._aDetailPages; + }; + + SplitContainer.prototype.indexOfMasterPage = function(oPage) { + return this._indexOfMasterPage(oPage); + }; + + SplitContainer.prototype.indexOfDetailPage = function(oPage) { + return this._indexOfDetailPage(oPage); + }; + + SplitContainer.prototype.insertMasterPage = function(oPage, iIndex, bSuppressInvalidate) { + return this._insertPage(this._aMasterPages, "masterPages", oPage, iIndex, bSuppressInvalidate); + }; + + SplitContainer.prototype.removeMasterPage = function(oPage, bSuppressInvalidate) { + return this._removePage(this._aMasterPages, "masterPages", oPage, bSuppressInvalidate); + }; + + SplitContainer.prototype.removeAllMasterPages = function(bSuppressInvalidate) { + this._aMasterPages = []; + return this.removeAllAggregation("masterPages", bSuppressInvalidate); + }; + + SplitContainer.prototype.insertDetailPage = function(oPage, iIndex, bSuppressInvalidate) { + return this._insertPage(this._aDetailPages, "detailPages", oPage, iIndex, bSuppressInvalidate); + }; + + SplitContainer.prototype._restoreMethodsInPage = function(oPage) { + if (sap.ui.Device.system.phone) { + // no need to restore the functions on phone + return; + } + + var oRealPage = this._getRealPage(oPage); + + if (oRealPage) { + // Since page is removed from SplitContainer, the patched version setCustomHeader and setShowNavButton needs to be deleted. + oRealPage.setCustomHeader = oRealPage._setCustomHeaderInSC; + delete oRealPage._setCustomHeaderInSC; + + oRealPage.setShowNavButton = oRealPage._setShowNavButtonInSC; + delete oRealPage._setShowNavButtonInSC; + } + }; + + SplitContainer.prototype.removeDetailPage = function(oPage, bSuppressInvalidate) { + this._restoreMethodsInPage(oPage); + + return this._removePage(this._aDetailPages, "detailPages", oPage, bSuppressInvalidate); + }; + + SplitContainer.prototype.removeAllDetailPages = function(bSuppressInvalidate) { + var aPages = this.getDetailPages(); + + // restore the original setCustomHeader function + for (var i = 0 ; i < aPages.length ; i++) { + this._restoreMethodsInPage(aPages[i]); + } + + this._aDetailPages = []; + + return this.removeAllAggregation("detailPages", bSuppressInvalidate); + }; + + + /** + * Add a content entity either to master area or detail area depending on the master parameter. + * + * This method is provided mainly for providing API consistency between sap.m.SplitContainer and sap.m.App. So that the same code line can be reused. + * + * @param {sap.ui.core.Control} oPage + * The content entities between which this SplitContainer navigates in either master area or detail area depending on the master parameter. These can be of type sap.m.Page, sap.ui.core.View, sap.m.Carousel or any other control with fullscreen/page semantics. + * @param {boolean} bMaster + * States if the page should be added to the master area. If it's set to false, the page is added to detail area. + * @type sap.m.SplitContainer + * @public + * @since 1.11.1 + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.addPage = function(oPage, bMaster){ + if (bMaster) { + return this.addMasterPage(oPage); + } else { + return this.addDetailPage(oPage); + } + }; + + + /** + * When in ShowHideMode and the device is in portrait mode, this function can be used to make the master page visible. + * + * @type sap.m.SplitContainer + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.showMaster = function() { + var _this$ = this._oMasterNav.$(), + that = this, + fnAnimationEnd = jQuery.proxy(this._afterShowMasterAnimation, this), + _curPage = this._getRealPage(this._oDetailNav.getCurrentPage()); + + function afterPopoverOpen(){ + this._oPopOver.detachAfterOpen(afterPopoverOpen, this); + this._bMasterOpening = false; + this._bMasterisOpen = true; + this.fireAfterMasterOpen(); + } + + if (this._portraitPopover()) { + if (!this._oPopOver.isOpen()) { + this._oPopOver.attachAfterOpen(afterPopoverOpen, this); + this.fireBeforeMasterOpen(); + this._oPopOver.openBy(this._oShowMasterBtn, true); + this._bMasterOpening = true; + } + } else { + if ((this._portraitHide() || this._hideMode()) + && (!this._bMasterisOpen || this._bMasterClosing)) { + if (this._isMie9) { + this._oMasterNav.$().css("width", "320px"); + _this$.animate({ + left: "+=320" + }, { + duration: 300, + complete: fnAnimationEnd + }); + this._bMasterisOpen = true; + that._bMasterOpening = false; + this._removeMasterButton(_curPage); + } else { + _this$.bind("webkitTransitionEnd transitionend", fnAnimationEnd); + } + + this.fireBeforeMasterOpen(); + _this$.toggleClass("sapMSplitContainerMasterVisible", true); + _this$.toggleClass("sapMSplitContainerMasterHidden", false); + this._bMasterOpening = true; + that._removeMasterButton(_curPage); + + // workaround for bug in current webkit versions: in slided-in elements the z-order may be wrong and will be corrected once a re-layout is enforced + // see http://code.google.com/p/chromium/issues/detail?id=246965 + if (sap.ui.Device.browser.webkit) { + var oMNav = this._oMasterNav; + window.setTimeout(function(){ + oMNav.$().css("box-shadow", "none"); // remove box-shadow + window.setTimeout(function(){ + oMNav.$().css("box-shadow", ""); // add it again + },50); + },0); + } + } + } + return this; + }; + + + /** + * When in ShowHideMode and the device is in portrait mode, this function can be used to hide the master page. + * + * @type sap.m.SplitContainer + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.hideMaster = function() { + var _this$ = this._oMasterNav.$(), + fnAnimationEnd = jQuery.proxy(this._afterHideMasterAnimation, this); + if (this._portraitPopover()) { + if (this._oPopOver.isOpen()) { + this._oPopOver.close(); + this._bMasterClosing = true; + } + } else { + if ((this._portraitHide() || this._hideMode()) && this._bMasterisOpen) { + if (this._isMie9) { + _this$.animate({ + left: "-=320" + }, { + duration: 300, + complete: fnAnimationEnd + }); + } else { + _this$.bind("webkitTransitionEnd transitionend", fnAnimationEnd); + } + + this.fireBeforeMasterClose(); + _this$.toggleClass("sapMSplitContainerMasterVisible" , false); + _this$.toggleClass("sapMSplitContainerMasterHidden" , true); + this._bMasterClosing = true; + } + } + return this; + }; + + SplitContainer.prototype._afterShowMasterAnimation = function() { + if (this._portraitHide() || this._hideMode()) { + if (!this._isMie9) { + var $MasterNav = this._oMasterNav.$(); + $MasterNav.unbind("webkitTransitionEnd transitionend", this._afterShowMasterAnimation); + } + this._bMasterOpening = false; + this._bMasterisOpen = true; + this.fireAfterMasterOpen(); + } + }; + + SplitContainer.prototype._afterHideMasterAnimation = function() { + if (this._portraitHide() || this._hideMode()) { + if (!this._isMie9) { + var $MasterNav = this._oMasterNav.$(); + $MasterNav.unbind("webkitTransitionEnd transitionend", this._afterHideMasterAnimation); + } + } + var oCurPage = this._getRealPage(this._oDetailNav.getCurrentPage()); + this._setMasterButton(oCurPage); + + this._bMasterClosing = false; + this._bMasterisOpen = false; + // If the focus is still inside the master area after master is open, the focus should be removed. + // Otherwise user can still type something on mobile device and the browser will show the master area again. + if (jQuery.sap.containsOrEquals(this._oMasterNav.getDomRef(), document.activeElement)) { + document.activeElement.blur(); + } + this.fireAfterMasterClose(); + }; + + + /** + * Returns the current shown master page. + * + * @type sap.ui.core.Control + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.getCurrentMasterPage = function() { + return this._oMasterNav.getCurrentPage(); + }; + + + /** + * Returns the current shown detail page. + * + * @type sap.ui.core.Control + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.getCurrentDetailPage = function() { + return this._oDetailNav.getCurrentPage(); + }; + + + /** + * Returns the current shown page either in master area or in detail area. When the parameter is set to true, the current page in master area is returned. Otherwise the current page in detail area is returned. + * + * This method is provided mainly for providing API consistency between sap.m.SplitContainer and sap.m.App. So that the same code line can be reused. + * + * @param {boolean} bMaster + * States if this function returns the current page in master area. If it's set to false, the current page in detail area will be returned. + * @type sap.ui.core.Control + * @public + * @since 1.11.1 + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.getCurrentPage = function(bMaster){ + if (bMaster) { + return this.getCurrentMasterPage(); + } else { + return this.getCurrentDetailPage(); + } + }; + + + /** + * Returns the previous page (the page from which the user drilled down to the current page with "to()"). + * Note: this is not the page which the user has seen before, but the page which is the target of the next "back()" navigation. + * If there is no previous page, "undefined" is returned. + * + * @param {boolean} bMaster + * States if this function returns the previous page in master area. If it's set to false, the previous page in detail area will be returned. + * @type sap.ui.core.Control + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.getPreviousPage = function(bMaster) { + if (bMaster) { + return this._oMasterNav.getPreviousPage(); + } else { + return this._oDetailNav.getPreviousPage(); + } + }; + + + /** + * Returns the page with the given id in master area. If there's no page that has the given id, null is returned. + * + * @param {string} sId + * The id of the page that needs to be fetched. + * @type sap.ui.core.Control + * @public + * @since 1.11.1 + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.getMasterPage = function(pageId){ + return this._oMasterNav.getPage(pageId); + }; + + + /** + * Returns the page with the given id in detail area. If there's no page that has the given id, null is returned. + * + * @param {string} sId + * The id of the page that needs to be fetched. + * @type sap.ui.core.Control + * @public + * @since 1.11.1 + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.getDetailPage = function(pageId){ + return this._oDetailNav.getPage(pageId); + }; + + + /** + * Returns the page with the given id from either master area or detail area depending on the master parameter. If there's no page that has the given id, null is returned. + * + * @param {string} sId + * The id of the page that needs to be fetched. + * @param {boolean} bMaster + * If the page with given id should be fetched from the master area. If it's set to false, the page will be fetched from detail area. + * @type sap.ui.core.Control + * @public + * @since 1.11.1 + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.getPage = function(pageId, bMaster){ + if (bMaster) { + return this.getMasterPage(pageId); + } else { + return this.getDetailPage(pageId); + } + }; + + + /** + * + * Returns whether master area is currently shown on the screen. In desktop browser or tablet, this method returns true when master area is shown on the screen no matter in portrait or landscape mode. And on mobile phone devices, this method returns true when the current shown page is from the pages which are added to the master area, otherwise it returns false. + * + * @type boolean + * @public + * @since 1.16.5 + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + SplitContainer.prototype.isMasterShown = function(){ + if (sap.ui.Device.system.phone) { + var oCurPage = this._oMasterNav.getCurrentPage(); + return this._indexOfMasterPage(oCurPage) !== -1; + } else { + var sMode = this.getMode(); + switch (sMode) { + case sap.m.SplitAppMode.StretchCompressMode: + // master area is always shown in this mode + return true; + case sap.m.SplitAppMode.HideMode: + return this._bMasterisOpen; + case sap.m.SplitAppMode.PopoverMode: + case sap.m.SplitAppMode.ShowHideMode: + return sap.ui.Device.orientation.landscape || this._bMasterisOpen; + default: + return false; + } + } + }; + + //************************************************************** + //* END - Public methods + //************************************************************** + + //************************************************************** + //* START - Setters/Getters of the SplitContainer control + //************************************************************** + SplitContainer.prototype.setInitialMaster = function(sPage) { + this._oMasterNav.setInitialPage(sPage); + this.setAssociation('initialMaster', sPage, true); + return this; + }; + + SplitContainer.prototype.setInitialDetail = function(sPage) { + if (!sap.ui.Device.system.phone) { + this._oDetailNav.setInitialPage(sPage); + } + this.setAssociation('initialDetail', sPage, true); + return this; + }; + + SplitContainer.prototype.setDefaultTransitionNameDetail = function(sTransition) { + this.setProperty("defaultTransitionNameDetail", sTransition, true); + this._oDetailNav.setDefaultTransitionName(sTransition); + return this; + }; + + SplitContainer.prototype.setDefaultTransitionNameMaster = function(sTransition) { + this.setProperty("defaultTransitionNameMaster", sTransition, true); + this._oMasterNav.setDefaultTransitionName(sTransition); + return this; + }; + + SplitContainer.prototype.setMasterButtonText = function(sText) { + if (!sap.ui.Device.system.phone) { + if (!sText) { + sText = this._rb.getText("SplitContainer_NAVBUTTON_TEXT"); + } + this._oShowMasterBtn.setText(sText); + } + this.setProperty("masterButtonText", sText, true); + return this; + }; + + SplitContainer.prototype.setMode = function(sMode) { + var sOldMode = this.getMode(); + if (sOldMode === sMode) { + return; + } + this.setProperty("mode", sMode, true); + this._bMasterisOpen = false; + //the reposition of master and detail area only occurs in tablet and after it's rendered + if (!sap.ui.Device.system.phone && this.getDomRef()) { + if (sOldMode === "HideMode" && this._oldIsLandscape) { + //remove the master button + this._removeMasterButton(this._oDetailNav.getCurrentPage()); + if (this._isMie9) { + this._oMasterNav.$().css({ + left: 0, + width: "" + }); + } + } + + if (sMode !== "PopoverMode" && this._oPopOver.getContent().length > 0) { + this._updateMasterPosition("landscape"); + } else if (sMode == "PopoverMode") { + if (!this._oldIsLandscape) { + if (this._oPopOver.getContent().length === 0) { + this._updateMasterPosition("popover"); + } + this._setMasterButton(this._oDetailNav.getCurrentPage()); + } + this.$().toggleClass("sapMSplitContainerShowHide", false); + this.$().toggleClass("sapMSplitContainerStretchCompress", false); + this.$().toggleClass("sapMSplitContainerHideMode", false); + this.$().toggleClass("sapMSplitContainerPopover", true); + } + + if (sMode == "StretchCompressMode") { + this.$().toggleClass("sapMSplitContainerShowHide", false); + this.$().toggleClass("sapMSplitContainerPopover", false); + this.$().toggleClass("sapMSplitContainerHideMode", false); + this.$().toggleClass("sapMSplitContainerStretchCompress", true); + this._removeMasterButton(this._oDetailNav.getCurrentPage()); + } + + if (sMode == "ShowHideMode") { + this.$().toggleClass("sapMSplitContainerPopover", false); + this.$().toggleClass("sapMSplitContainerStretchCompress", false); + this.$().toggleClass("sapMSplitContainerHideMode", false); + this.$().toggleClass("sapMSplitContainerShowHide", true); + if (!sap.ui.Device.orientation.landscape) { + this._setMasterButton(this._oDetailNav.getCurrentPage()); + } + } + + if (sMode === "HideMode") { + this.$().toggleClass("sapMSplitContainerPopover", false); + this.$().toggleClass("sapMSplitContainerStretchCompress", false); + this.$().toggleClass("sapMSplitContainerShowHide", false); + this.$().toggleClass("sapMSplitContainerHideMode", true); + this.$().toggleClass("sapMSplitContainerMasterHidden", true); + this._setMasterButton(this._oDetailNav.getCurrentPage()); + if (this._isMie9) { + this._oMasterNav.$().css({ + left: "", + width: "auto" + }); + } + } + } + return this; + }; + + SplitContainer.prototype.setBackgroundOpacity = function(fOpacity) { + if (fOpacity > 1 || fOpacity < 0) { + jQuery.sap.log.warning("Invalid value " + fOpacity + " for SplitContainer.setBackgroundOpacity() ignored. Valid values are: floats between 0 and 1."); + return this; + } + this.$("BG").css("opacity", fOpacity); + return this.setProperty("backgroundOpacity", fOpacity, true); // no rerendering - live opacity change looks cooler + }; + + + /************************************************************** + * START - Private methods + **************************************************************/ + + /** + * @private + */ + SplitContainer.prototype._indexOfMasterPage = function(oPage) { + return jQuery.inArray(oPage, this._aMasterPages); + }; + + /** + * @private + */ + SplitContainer.prototype._indexOfDetailPage = function(oPage) { + return jQuery.inArray(oPage, this._aDetailPages); + }; + + + /** + * @private + */ + SplitContainer.prototype._insertPage = function(aPageArray, sAggregation, oPage, iIndex, bSuppressInvalidate) { + this.insertAggregation(sAggregation, oPage, iIndex, bSuppressInvalidate); + var i; + if (iIndex < 0) { + i = 0; + } else if (iIndex > aPageArray.length) { + i = aPageArray.length; + } else { + i = iIndex; + } + var iOldIndex = jQuery.inArray(oPage, aPageArray); + aPageArray.splice(i, 0, oPage); + if (iOldIndex != -1) { + // this is the insert order ui5 is doing it: first add, then remove when it was added before (even so this would remove the just added control) + this._removePageFromArray(aPageArray, oPage); + } + return this; + }; + + + /** + * @private + */ + SplitContainer.prototype._removePage = function(aPageArray, sAggregation, oPage, bSuppressInvalidate) { + var oRemovedPage = this.removeAggregation(sAggregation, oPage, bSuppressInvalidate); + if (oRemovedPage) { + this._removePageFromArray(aPageArray, oRemovedPage); + } + return oRemovedPage; + }; + + + /** + * @private + */ + SplitContainer.prototype._removePageFromArray = function(aPageArray, oPage) { + var iIndex = jQuery.inArray(oPage, aPageArray); + if (iIndex != -1) { + aPageArray.splice(iIndex, 1); + } + }; + + + SplitContainer.prototype._handleNavigationEvent = function(oEvent, bAfter, bMaster){ + var sEventName = (bAfter ? "After" : "") + (bMaster ? "Master" : "Detail") + "Navigate", + bContinue; + sEventName = sEventName.charAt(0).toLowerCase() + sEventName.slice(1); + + bContinue = this.fireEvent(sEventName, oEvent.mParameters, true); + if (!bContinue) { + oEvent.preventDefault(); + } + }; + + SplitContainer.prototype._handleResize = function() { + var isLandscape = sap.ui.Device.orientation.landscape, + _currentPage = this._oDetailNav.getCurrentPage(), + mode = this.getMode(); + + if (this._oldIsLandscape !== isLandscape) { + this._oldIsLandscape = isLandscape; + if (!sap.ui.Device.system.phone) { + this.$().toggleClass("sapMSplitContainerPortrait", !isLandscape); + + //hidemode doesn't react to orientation change + if (mode === "HideMode") { + return; + } + + if (mode === "ShowHideMode") { + if (isLandscape) { + this.fireBeforeMasterOpen(); + } else { + this.fireBeforeMasterClose(); + } + } + + if (this._isMie9) { + if (isLandscape) { + this._oMasterNav.$().css({ + left: 0, + width: "" + }); + } else { + if (mode === "ShowHideMode" || mode === "PopoverMode") { + this._oMasterNav.$().css({ + left: -320, + width: "auto" + }); + } + } + } + + if (mode === "ShowHideMode" || mode === "PopoverMode") { + if (isLandscape) { + this._oMasterNav.$().toggleClass("sapMSplitContainerMasterVisible", false); + this._oMasterNav.$().toggleClass("sapMSplitContainerMasterHidden", false); + } + } + + if (mode === "ShowHideMode") { + if (isLandscape) { + this._bMasterisOpen = true; + this.fireAfterMasterOpen(); + } else { + this._bMasterisOpen = false; + this.fireAfterMasterClose(); + } + } + + if (this.getMode() == "PopoverMode") { + if (this._oPopOver.oPopup.isOpen()) { + //Wait for the popover to be closed properly + this._oPopOver.attachAfterClose(this._handlePopClose, this); + this._oPopOver.close(); + } else { + this._handlePopClose(); + } + } + + _currentPage = this._getRealPage(_currentPage); + if (!this._oldIsLandscape && mode != "StretchCompressMode") { + this._setMasterButton(_currentPage); + } else { + this._removeMasterButton(_currentPage); + } + } + // execute the code after SplitContainer has changed itself due to orientation change event + if (this._onOrientationChange) { + this._onOrientationChange(); + } + } + }; + + SplitContainer.prototype._handlePopClose = function(oEvent) { + this._oPopOver.detachAfterClose(this._handlePopClose, this); + if (this._oldIsLandscape) { + this._updateMasterPosition("landscape"); + } else { + this._updateMasterPosition("popover"); + } + }; + + SplitContainer.prototype._getRealPage = function(oPage){ + var oReturn = oPage, aContent; + + while (oReturn) { + if (oReturn instanceof sap.m.Page) { + return oReturn; + } + if (oReturn instanceof sap.m.MessagePage) { + return oReturn; + } + if (oReturn instanceof sap.ui.core.mvc.View) { + aContent = oReturn.getContent(); + if (aContent.length === 1) { + oReturn = aContent[0]; + continue; + } + } else if (oReturn instanceof sap.m.NavContainer) { + oReturn = oReturn.getCurrentPage(); + continue; + } + oReturn = null; + } + return oReturn; + }; + + //updates the dom position of the Master NavContainer (inside popover or left next to the Detail NavContainer) + SplitContainer.prototype._updateMasterPosition = function(sPos) { + var that = this; + if (sPos == "popover") { + //remove the NavContainer dom from the left side without rerendering the whole app + this.removeAggregation("_navMaster", this._oMasterNav, true); + this._oMasterNav.$().remove(); + this._oPopOver.addContent(this._oMasterNav); + this._bMasterisOpen = false; + } + if (sPos == "landscape") { + var fRearrangeNavMaster = function(){ + that._oPopOver.removeAggregation("content", that._oMasterNav, false); + that.setAggregation("_navMaster", that._oMasterNav, true); + //render only the master navContainer, to prevent the whole app from rerendering + var $master = that.$(); + if ($master[0]) { + var rm = sap.ui.getCore().createRenderManager(); + rm.renderControl(that._oMasterNav.addStyleClass("sapMSplitContainerMaster")); + rm.flush($master[0], false, 1); + rm.destroy(); + } + }; + + if (this._oPopOver.isOpen()) { + var fAfterCloseHandler = function(){ + this._oPopOver.detachAfterClose(fAfterCloseHandler, this); + this._bMasterisOpen = false; + fRearrangeNavMaster(); + }; + this._oPopOver.attachAfterClose(fAfterCloseHandler, this); + this._oPopOver.close(); + } else { + fRearrangeNavMaster(); + } + } + }; + + //Portrait - Tablet - ShowHideMode + SplitContainer.prototype._portraitHide = function() { + if (!this._oldIsLandscape && !sap.ui.Device.system.phone && this.getMode() === "ShowHideMode") { + return true; + } else { + return false; + } + }; + + //Portrait - Tablet - PopoverMode + SplitContainer.prototype._portraitPopover = function() { + if (!this._oldIsLandscape && !sap.ui.Device.system.phone && this.getMode() === "PopoverMode") { + return true; + } else { + return false; + } + }; + + //hide mode - not phone + SplitContainer.prototype._hideMode = function() { + return this.getMode() === "HideMode" && !sap.ui.Device.system.phone; + }; + + SplitContainer.prototype._needShowMasterButton = function() { + return (this._portraitHide() || this._hideMode() || this._portraitPopover()) && (!this._bMasterisOpen || this._bMasterClosing); + }; + + SplitContainer.prototype._createShowMasterButton = function() { + if (this._oShowMasterBtn && !this._oShowMasterBtn.bIsDestroyed) { + return; + } + + this._oShowMasterBtn = new sap.m.Button(this.getId() + "-MasterBtn", { + icon: IconPool.getIconURI("menu2"), + type: sap.m.ButtonType.Default, + press: jQuery.proxy(this._onMasterButtonTap, this) + }).addStyleClass("sapMSplitContainerMasterBtn"); + }; + + SplitContainer.prototype._setMasterButton = function(oPage, fnCallBack, bSuppressRerendering) { + if (!oPage) { + return; + } + + if (typeof fnCallBack === 'boolean') { + bSuppressRerendering = fnCallBack; + fnCallBack = undefined; + } + + oPage = this._getRealPage(oPage); + + var oHeaderAggregation = SplitContainer._getHeaderButtonAggregation(oPage), + sHeaderAggregationName = oHeaderAggregation.sAggregationName, + aHeaderContent = oHeaderAggregation.aAggregationContent; + + for (var i = 0; i < aHeaderContent.length; i++) { + if (aHeaderContent[i] instanceof sap.m.Button && (aHeaderContent[i].getType() == sap.m.ButtonType.Back || (aHeaderContent[i].getType() == sap.m.ButtonType.Up && aHeaderContent[i] !== this._oShowMasterBtn))) { + this._bDetailNavButton = true; + return; + } + } + this._bDetailNavButton = false; + + var oPageHeader = oPage._getAnyHeader(); + var bIsSet = false; + + for (var i = 0; i < aHeaderContent.length; i++) { + if (aHeaderContent[i] === this._oShowMasterBtn) { + bIsSet = true; + } + } + + if (!bIsSet) { + // showMasterBtn could have already be destroyed by destroying the customHeader of the previous page + // When this is the case, showMasterBtn will be instantiated again + this._createShowMasterButton(); + + this._oShowMasterBtn.removeStyleClass("sapMSplitContainerMasterBtnHidden"); + + if (oPageHeader) { + oPageHeader.insertAggregation(sHeaderAggregationName, this._oShowMasterBtn, 0, bSuppressRerendering); + } + } else { + if (this._isMie9) { + this._oShowMasterBtn.$().fadeIn(); + } + this._oShowMasterBtn.$().parent().toggleClass("sapMSplitContainerMasterBtnHide", false); + this._oShowMasterBtn.removeStyleClass("sapMSplitContainerMasterBtnHidden"); + this._oShowMasterBtn.$().parent().toggleClass("sapMSplitContainerMasterBtnShow", true); + } + + if (fnCallBack) { + fnCallBack(oPage); + } + this.fireMasterButton({show: true}); + + }; + + /** + * @private + * @static + * @returns object aggregation with two properties aggregation content and aggregationName + */ + SplitContainer._getHeaderButtonAggregation = function (oPage) { + var oHeader = oPage._getAnyHeader(), + aAggregationContent, + sAggregationName; + + if (oHeader.getContentLeft) { + aAggregationContent = oHeader.getContentLeft(); + sAggregationName = "contentLeft"; + } + if (oHeader.getContent) { + aAggregationContent = oHeader.getContent(); + sAggregationName = "content"; + } + + return { + aAggregationContent : aAggregationContent, + sAggregationName : sAggregationName + }; + }; + + SplitContainer.prototype._removeMasterButton = function(oPage, fnCallBack, bNoAnim) { + if (!oPage) { + return; + } + + var that = this, + bHidden = this._oShowMasterBtn.$().is(":hidden"), + oHeader; + + if (typeof fnCallBack === "boolean") { + bNoAnim = fnCallBack; + fnCallBack = undefined; + } + + if (!bHidden && !bNoAnim) { + oPage = this._getRealPage(oPage); + oHeader = oPage._getAnyHeader(); + if (oHeader /*&& !this._checkCustomHeader(oPage)*/) { + var aHeaderContent = SplitContainer._getHeaderButtonAggregation(oPage).aAggregationContent; + for (var i = 0; i < aHeaderContent.length; i++) { + if (aHeaderContent[i] === this._oShowMasterBtn) { + if (this._isMie9) { + this._oShowMasterBtn.$().fadeOut(); + if (fnCallBack) { + fnCallBack(oPage); + } + } + this._oShowMasterBtn.$().parent().toggleClass("sapMSplitContainerMasterBtnShow", false); + this._oShowMasterBtn.$().parent().toggleClass("sapMSplitContainerMasterBtnHide", true); + /*eslint-disable no-loop-func */ + this._oShowMasterBtn.$().parent().bind("webkitAnimationEnd animationend", function(){ + jQuery(this).unbind("webkitAnimationEnd animationend"); + that._oShowMasterBtn.addStyleClass("sapMSplitContainerMasterBtnHidden"); + if (fnCallBack) { + fnCallBack(oPage); + } + }); + /*eslint-enable no-loop-func */ + return; + } + } + } + this.fireMasterButton({show: false}); + } else { + // The master button is invisible even without this CSS class because the page in which the master button is can be out of the viewport. + // Therefore this class has to be set here. + this._oShowMasterBtn.addStyleClass("sapMSplitContainerMasterBtnHidden"); + if (fnCallBack) { + fnCallBack(oPage); + } + if (!bHidden) { + this.fireMasterButton({show: false}); + } + } + }; + + SplitContainer.prototype._callMethodInManagedObject = function(sFunctionName, sAggregationName){ + var args = Array.prototype.slice.call(arguments); + if (sAggregationName === "masterPages") { + if (sFunctionName === "indexOfAggregation") { + return this._indexOfMasterPage.apply(this, args.slice(2)); + } else { + return this._callNavContainerMethod(sFunctionName, this._oMasterNav, args); + } + } else if (sAggregationName === "detailPages") { + if (sFunctionName === "indexOfAggregation") { + return this._indexOfDetailPage.apply(this, args.slice(2)); + } else { + return this._callNavContainerMethod(sFunctionName, this._oDetailNav, args); + } + } else { + return sap.ui.base.ManagedObject.prototype[sFunctionName].apply(this, args.slice(1)); + } + }; + + SplitContainer.prototype._callNavContainerMethod = function(sFunctionName, oNavContainer, aArgs) { + aArgs[1] = "pages"; + aArgs = aArgs.slice(1); + var sRealFunctionName = SplitContainer._mFunctionMapping[sFunctionName]; + if (sRealFunctionName) { + aArgs.shift(); + sFunctionName = sRealFunctionName; + } + return oNavContainer[sFunctionName].apply(oNavContainer, aArgs); + }; + + /************************************************************** + * END - Private methods + **************************************************************/ + + /************************************************************** + * START - forward aggregation related methods to NavContainer + **************************************************************/ + SplitContainer.prototype.validateAggregation = function(sAggregationName, oObject, bMultiple){ + return this._callMethodInManagedObject("validateAggregation", sAggregationName, oObject, bMultiple); + }; + + SplitContainer.prototype.setAggregation = function(sAggregationName, oObject, bSuppressInvalidate){ + this._callMethodInManagedObject("setAggregation", sAggregationName, oObject, bSuppressInvalidate); + return this; + }; + + SplitContainer.prototype.getAggregation = function(sAggregationName, oDefaultForCreation){ + return this._callMethodInManagedObject("getAggregation", sAggregationName, oDefaultForCreation); + }; + + SplitContainer.prototype.indexOfAggregation = function(sAggregationName, oObject){ + return this._callMethodInManagedObject("indexOfAggregation", sAggregationName, oObject); + }; + + SplitContainer.prototype.insertAggregation = function(sAggregationName, oObject, iIndex, bSuppressInvalidate){ + this._callMethodInManagedObject("insertAggregation", sAggregationName, oObject, iIndex, bSuppressInvalidate); + return this; + }; + + SplitContainer.prototype.addAggregation = function(sAggregationName, oObject, bSuppressInvalidate){ + this._callMethodInManagedObject("addAggregation", sAggregationName, oObject, bSuppressInvalidate); + return this; + }; + + SplitContainer.prototype.removeAggregation = function(sAggregationName, oObject, bSuppressInvalidate){ + return this._callMethodInManagedObject("removeAggregation", sAggregationName, oObject, bSuppressInvalidate); + }; + + SplitContainer.prototype.removeAllAggregation = function(sAggregationName, bSuppressInvalidate){ + return this._callMethodInManagedObject("removeAllAggregation", sAggregationName, bSuppressInvalidate); + }; + + SplitContainer.prototype.destroyAggregation = function(sAggregationName, bSuppressInvalidate){ + this._callMethodInManagedObject("destroyAggregation", sAggregationName, bSuppressInvalidate); + return this; + }; + /************************************************************** + * END - forward aggregation related methods to NavContainer + **************************************************************/ + + /************************************************************** + * START - Static methods + **************************************************************/ + /** + * @private + */ + SplitContainer._mFunctionMapping = { + "getAggregation" : "getPage", + "addAggregation" : "addPage", + "insertAggregation" : "insertPage", + "removeAggregation" : "removePage", + "removeAllAggregation" : "removeAllPages" + }; + + /* + * @private + */ + SplitContainer.prototype._hasPageInArray = function (array, oPage) { + var bFound = false; + + array.forEach(function(oArrayEntry) { + if (oPage === oArrayEntry) { + bFound = true; + } + }); + return bFound; + }; + + /************************************************************** + * END - Static methods + **************************************************************/ + + + return SplitContainer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/SplitContainer.js b/DVHMA-OpenUI5/www/resources/sap/m/SplitContainer.js new file mode 100644 index 0000000..daa8837 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/SplitContainer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./library','sap/ui/core/Control','sap/ui/core/IconPool','sap/ui/core/theming/Parameters'],function(q,l,C,I,P){"use strict";var S=C.extend("sap.m.SplitContainer",{metadata:{library:"sap.m",properties:{defaultTransitionNameDetail:{type:"string",group:"Appearance",defaultValue:"slide"},defaultTransitionNameMaster:{type:"string",group:"Appearance",defaultValue:"slide"},mode:{type:"sap.m.SplitAppMode",group:"Appearance",defaultValue:sap.m.SplitAppMode.ShowHideMode},masterButtonText:{type:"string",group:"Appearance",defaultValue:null},backgroundColor:{type:"string",group:"Appearance",defaultValue:null},backgroundImage:{type:"sap.ui.core.URI",group:"Appearance",defaultValue:null},backgroundRepeat:{type:"boolean",group:"Appearance",defaultValue:false},backgroundOpacity:{type:"float",group:"Appearance",defaultValue:1}},aggregations:{masterPages:{type:"sap.ui.core.Control",multiple:true,singularName:"masterPage"},detailPages:{type:"sap.ui.core.Control",multiple:true,singularName:"detailPage"},_navMaster:{type:"sap.m.NavContainer",multiple:false,visibility:"hidden"},_navDetail:{type:"sap.m.NavContainer",multiple:false,visibility:"hidden"},_navPopover:{type:"sap.m.Popover",multiple:false,visibility:"hidden"}},associations:{initialDetail:{type:"sap.ui.core.Control",multiple:false},initialMaster:{type:"sap.ui.core.Control",multiple:false}},events:{masterNavigate:{allowPreventDefault:true,parameters:{from:{type:"sap.ui.core.Control"},fromId:{type:"string"},to:{type:"sap.ui.core.Control"},toId:{type:"string"},firstTime:{type:"boolean"},isTo:{type:"boolean"},isBack:{type:"boolean"},isBackToTop:{type:"boolean"},isBackToPage:{type:"boolean"},direction:{type:"string"}}},afterMasterNavigate:{parameters:{from:{type:"sap.ui.core.Control"},fromId:{type:"string"},to:{type:"sap.ui.core.Control"},toId:{type:"string"},firstTime:{type:"boolean"},isTo:{type:"boolean"},isBack:{type:"boolean"},isBackToTop:{type:"boolean"},isBackToPage:{type:"boolean"},direction:{type:"string"}}},masterButton:{},beforeMasterOpen:{},afterMasterOpen:{},beforeMasterClose:{},afterMasterClose:{},detailNavigate:{allowPreventDefault:true,parameters:{from:{type:"sap.ui.core.Control"},fromId:{type:"string"},to:{type:"sap.ui.core.Control"},toId:{type:"string"},firstTime:{type:"boolean"},isTo:{type:"boolean"},isBack:{type:"boolean"},isBackToTop:{type:"boolean"},isBackToPage:{type:"boolean"},direction:{type:"string"}}},afterDetailNavigate:{parameters:{from:{type:"sap.ui.core.Control"},fromId:{type:"string"},to:{type:"sap.ui.core.Control"},toId:{type:"string"},firstTime:{type:"boolean"},isTo:{type:"boolean"},isBack:{type:"boolean"},isBackToTop:{type:"boolean"},isBackToPage:{type:"boolean"},direction:{type:"string"}}}}}});S.prototype.init=function(){var t=this;this._isMie9=false;if(sap.ui.Device.browser.internet_explorer&&sap.ui.Device.browser.version<10){this._isMie9=true;}this.oCore=sap.ui.getCore();this._aMasterPages=[];this._aDetailPages=[];if(!sap.ui.Device.system.phone){this._rb=sap.ui.getCore().getLibraryResourceBundle("sap.m");this._oMasterNav=new sap.m.NavContainer(this.getId()+"-Master",{width:"",navigate:function(e){t._handleNavigationEvent(e,false,true);},afterNavigate:function(e){t._handleNavigationEvent(e,true,true);}});this._oDetailNav=new sap.m.NavContainer(this.getId()+"-Detail",{width:"",navigate:function(e){t._handleNavigationEvent(e,false,false);},afterNavigate:function(e){t._handleNavigationEvent(e,true,false);}});this.setAggregation("_navMaster",this._oMasterNav,true);this.setAggregation("_navDetail",this._oDetailNav,true);this._createShowMasterButton();this._oPopOver=new sap.m.Popover(this.getId()+"-Popover",{placement:sap.m.PlacementType.Bottom,showHeader:false,contentWidth:"320px",contentHeight:"600px",beforeOpen:function(){t.fireBeforeMasterOpen();},beforeClose:function(){t.fireBeforeMasterClose();},afterOpen:function(){t.fireAfterMasterOpen();t._bMasterisOpen=true;},afterClose:function(){t._afterHideMasterAnimation();}}).addStyleClass("sapMSplitContainerPopover");this.setAggregation("_navPopover",this._oPopOver,true);}else{this._oMasterNav=this._oDetailNav=new sap.m.NavContainer();this.setAggregation("_navMaster",this._oMasterNav,true);}this._oldIsLandscape=sap.ui.Device.orientation.landscape;this._bMasterisOpen=false;var t=this;var p=function(r,n,s){return function(c,a,b){r.apply(t[n],arguments);if(a==="pages"&&q.inArray(c,t[s])!==-1){t._removePageFromArray(t[s],c);}};};var m=this._oMasterNav._removeChild;this._oMasterNav._removeChild=p(m,"_oMasterNav","_aMasterPages");if(this._oDetailNav){var d=this._oDetailNav._removeChild;this._oDetailNav._removeChild=p(d,"_oDetailNav","_aDetailPages");}};S.prototype.onBeforeRendering=function(){if(this._fnResize){sap.ui.Device.resize.detachHandler(this._fnResize);}if(this._bMasterisOpen&&(this._portraitHide()||this._hideMode())){this._oShowMasterBtn.removeStyleClass("sapMSplitContainerMasterBtnHidden");this._bMasterisOpen=false;}};S.prototype.exit=function(){if(this._fnResize){sap.ui.Device.resize.detachHandler(this._fnResize);}delete this._aMasterPages;delete this._aDetailPages;if(this._oShowMasterBtn){this._oShowMasterBtn.destroy();this._oShowMasterBtn=null;}};S.prototype.onAfterRendering=function(){if(!sap.ui.Device.system.phone){if(this._oPopOver&&this._oPopOver.isOpen()){this._oPopOver.close();}}if(!this._fnResize){this._fnResize=q.proxy(this._handleResize,this);}sap.ui.Device.resize.attachHandler(this._fnResize);if(sap.ui.Device.os.windows&&sap.ui.Device.browser.internet_explorer){this._oMasterNav.$().append('');}};S.prototype.ontouchstart=function(e){if(!sap.ui.Device.system.phone){if(e.originalEvent&&e.originalEvent._sapui_handledByControl){this._bIgnoreSwipe=true;}else{this._bIgnoreSwipe=false;}}};S.prototype.onswiperight=function(e){if((sap.ui.Device.system.tablet||(sap.ui.Device.os.windows&&sap.ui.Device.os.version>=8))&&(this._portraitHide()||this._hideMode())&&!this._bIgnoreSwipe){if(!this._bDetailNavButton){this.showMaster();}}};S.prototype.ontap=function(e){if(sap.ui.Device.system.phone){return;}var i=true;if(q(e.target).parents(".sapMSplitContainerDetail").length>0){i=false;}if(((!this._oldIsLandscape&&this.getMode()=="ShowHideMode")||this.getMode()=="HideMode")&&!i&&this._bMasterisOpen&&!q.sap.containsOrEquals(this._oShowMasterBtn.getDomRef(),e.target)){this.hideMaster();}};S.prototype.onswipeleft=function(e){if((sap.ui.Device.system.tablet||(sap.ui.Device.os.windows&&sap.ui.Device.os.version>=8))&&(this._portraitHide()||this._hideMode())&&!this._bIgnoreSwipe){this.hideMaster();}};S.prototype._onMasterButtonTap=function(e){if(sap.ui.Device.system.phone){return;}if(!this._oldIsLandscape){if(this.getMode()=="PopoverMode"){if(!this._oPopOver.isOpen()){this._oPopOver.openBy(this._oShowMasterBtn,true);}else{this._oPopOver.close();}}else{this.showMaster();}}else{if(this.getMode()==="HideMode"){this.showMaster();}}};S.prototype.to=function(p,t,d,T){if(this._oMasterNav.getPage(p)){this._oMasterNav.to(p,t,d,T);}else{this._oDetailNav.to(p,t,d,T);}};S.prototype.backToPage=function(p,b,t){if(this._oMasterNav.getPage(p)){this._oMasterNav.backToPage(p,b,t);}else{this._oDetailNav.backToPage(p,b,t);}};S.prototype.insertPreviousPage=function(p,t,d){if(this._oMasterNav.getPage(p)){this._oMasterNav.insertPreviousPage(p,t,d);}else{this._oDetailNav.insertPreviousPage(p,t,d);}return this;};S.prototype.toMaster=function(p,t,d,T){this._oMasterNav.to(p,t,d,T);};S.prototype.backMaster=function(b,t){this._oMasterNav.back(b,t);};S.prototype.backMasterToPage=function(p,b,t){this._oMasterNav.backToPage(p,b,t);};S.prototype.toDetail=function(p,t,d,T){this._oDetailNav.to(p,t,d,T);};S.prototype.backDetail=function(b,t){this._oDetailNav.back(b,t);};S.prototype.backDetailToPage=function(p,b,t){this._oDetailNav.backToPage(p,b,t);};S.prototype.backToTopMaster=function(b,t){this._oMasterNav.backToTop(b,t);};S.prototype.backToTopDetail=function(b,t){this._oDetailNav.backToTop(b,t);};S.prototype.addMasterPage=function(p){if(this._hasPageInArray(this._aMasterPages,p)){return;}if(this._oMasterNav===this._oDetailNav&&q.inArray(p,this._oDetailNav.getPages())!==-1){this._removePageFromArray(this._aDetailPages,p);}this._oMasterNav.addPage(p);this._aMasterPages.push(p);return this;};S.prototype.addDetailPage=function(p){var t=this,r=this._getRealPage(p);if(this._hasPageInArray(this._aDetailPages,p)){return;}p.addDelegate({onBeforeShow:function(){if(r){if(!sap.ui.Device.system.phone){if(t._needShowMasterButton()){t._setMasterButton(r);}}}}});if(r){r.addDelegate({onBeforeRendering:function(){if(!sap.ui.Device.system.phone&&(t._oDetailNav.getCurrentPage()===r)){if(!r.getShowNavButton()&&t._needShowMasterButton()){t._setMasterButton(r,true);}else{t._removeMasterButton(r);}}}});if(!sap.ui.Device.system.phone){r._setCustomHeaderInSC=r.setCustomHeader;r.setCustomHeader=function(h){this._setCustomHeaderInSC.apply(this,arguments);if(h&&t._needShowMasterButton()){t._setMasterButton(r);}return this;};r._setShowNavButtonInSC=r.setShowNavButton;r.setShowNavButton=function(s){this._setShowNavButtonInSC.apply(this,arguments);if(!s&&t._needShowMasterButton()){t._setMasterButton(r);}else{t._removeMasterButton(r,true);}return this;};}}if(this._oMasterNav===this._oDetailNav&&q.inArray(p,this._oMasterNav.getPages())!==-1){this._removePageFromArray(this._aMasterPages,p);}this._oDetailNav.addPage(p);this._aDetailPages.push(p);return this;};S.prototype.getMasterPages=function(){return this._aMasterPages;};S.prototype.getDetailPages=function(){return this._aDetailPages;};S.prototype.indexOfMasterPage=function(p){return this._indexOfMasterPage(p);};S.prototype.indexOfDetailPage=function(p){return this._indexOfDetailPage(p);};S.prototype.insertMasterPage=function(p,i,s){return this._insertPage(this._aMasterPages,"masterPages",p,i,s);};S.prototype.removeMasterPage=function(p,s){return this._removePage(this._aMasterPages,"masterPages",p,s);};S.prototype.removeAllMasterPages=function(s){this._aMasterPages=[];return this.removeAllAggregation("masterPages",s);};S.prototype.insertDetailPage=function(p,i,s){return this._insertPage(this._aDetailPages,"detailPages",p,i,s);};S.prototype._restoreMethodsInPage=function(p){if(sap.ui.Device.system.phone){return;}var r=this._getRealPage(p);if(r){r.setCustomHeader=r._setCustomHeaderInSC;delete r._setCustomHeaderInSC;r.setShowNavButton=r._setShowNavButtonInSC;delete r._setShowNavButtonInSC;}};S.prototype.removeDetailPage=function(p,s){this._restoreMethodsInPage(p);return this._removePage(this._aDetailPages,"detailPages",p,s);};S.prototype.removeAllDetailPages=function(s){var p=this.getDetailPages();for(var i=0;i0){this._updateMasterPosition("landscape");}else if(m=="PopoverMode"){if(!this._oldIsLandscape){if(this._oPopOver.getContent().length===0){this._updateMasterPosition("popover");}this._setMasterButton(this._oDetailNav.getCurrentPage());}this.$().toggleClass("sapMSplitContainerShowHide",false);this.$().toggleClass("sapMSplitContainerStretchCompress",false);this.$().toggleClass("sapMSplitContainerHideMode",false);this.$().toggleClass("sapMSplitContainerPopover",true);}if(m=="StretchCompressMode"){this.$().toggleClass("sapMSplitContainerShowHide",false);this.$().toggleClass("sapMSplitContainerPopover",false);this.$().toggleClass("sapMSplitContainerHideMode",false);this.$().toggleClass("sapMSplitContainerStretchCompress",true);this._removeMasterButton(this._oDetailNav.getCurrentPage());}if(m=="ShowHideMode"){this.$().toggleClass("sapMSplitContainerPopover",false);this.$().toggleClass("sapMSplitContainerStretchCompress",false);this.$().toggleClass("sapMSplitContainerHideMode",false);this.$().toggleClass("sapMSplitContainerShowHide",true);if(!sap.ui.Device.orientation.landscape){this._setMasterButton(this._oDetailNav.getCurrentPage());}}if(m==="HideMode"){this.$().toggleClass("sapMSplitContainerPopover",false);this.$().toggleClass("sapMSplitContainerStretchCompress",false);this.$().toggleClass("sapMSplitContainerShowHide",false);this.$().toggleClass("sapMSplitContainerHideMode",true);this.$().toggleClass("sapMSplitContainerMasterHidden",true);this._setMasterButton(this._oDetailNav.getCurrentPage());if(this._isMie9){this._oMasterNav.$().css({left:"",width:"auto"});}}}return this;};S.prototype.setBackgroundOpacity=function(o){if(o>1||o<0){q.sap.log.warning("Invalid value "+o+" for SplitContainer.setBackgroundOpacity() ignored. Valid values are: floats between 0 and 1.");return this;}this.$("BG").css("opacity",o);return this.setProperty("backgroundOpacity",o,true);};S.prototype._indexOfMasterPage=function(p){return q.inArray(p,this._aMasterPages);};S.prototype._indexOfDetailPage=function(p){return q.inArray(p,this._aDetailPages);};S.prototype._insertPage=function(p,a,o,b,s){this.insertAggregation(a,o,b,s);var i;if(b<0){i=0;}else if(b>p.length){i=p.length;}else{i=b;}var O=q.inArray(o,p);p.splice(i,0,o);if(O!=-1){this._removePageFromArray(p,o);}return this;};S.prototype._removePage=function(p,a,o,s){var r=this.removeAggregation(a,o,s);if(r){this._removePageFromArray(p,r);}return r;};S.prototype._removePageFromArray=function(p,o){var i=q.inArray(o,p);if(i!=-1){p.splice(i,1);}};S.prototype._handleNavigationEvent=function(e,a,m){var E=(a?"After":"")+(m?"Master":"Detail")+"Navigate",c;E=E.charAt(0).toLowerCase()+E.slice(1);c=this.fireEvent(E,e.mParameters,true);if(!c){e.preventDefault();}};S.prototype._handleResize=function(){var i=sap.ui.Device.orientation.landscape,_=this._oDetailNav.getCurrentPage(),m=this.getMode();if(this._oldIsLandscape!==i){this._oldIsLandscape=i;if(!sap.ui.Device.system.phone){this.$().toggleClass("sapMSplitContainerPortrait",!i);if(m==="HideMode"){return;}if(m==="ShowHideMode"){if(i){this.fireBeforeMasterOpen();}else{this.fireBeforeMasterClose();}}if(this._isMie9){if(i){this._oMasterNav.$().css({left:0,width:""});}else{if(m==="ShowHideMode"||m==="PopoverMode"){this._oMasterNav.$().css({left:-320,width:"auto"});}}}if(m==="ShowHideMode"||m==="PopoverMode"){if(i){this._oMasterNav.$().toggleClass("sapMSplitContainerMasterVisible",false);this._oMasterNav.$().toggleClass("sapMSplitContainerMasterHidden",false);}}if(m==="ShowHideMode"){if(i){this._bMasterisOpen=true;this.fireAfterMasterOpen();}else{this._bMasterisOpen=false;this.fireAfterMasterClose();}}if(this.getMode()=="PopoverMode"){if(this._oPopOver.oPopup.isOpen()){this._oPopOver.attachAfterClose(this._handlePopClose,this);this._oPopOver.close();}else{this._handlePopClose();}}_=this._getRealPage(_);if(!this._oldIsLandscape&&m!="StretchCompressMode"){this._setMasterButton(_);}else{this._removeMasterButton(_);}}if(this._onOrientationChange){this._onOrientationChange();}}};S.prototype._handlePopClose=function(e){this._oPopOver.detachAfterClose(this._handlePopClose,this);if(this._oldIsLandscape){this._updateMasterPosition("landscape");}else{this._updateMasterPosition("popover");}};S.prototype._getRealPage=function(p){var r=p,c;while(r){if(r instanceof sap.m.Page){return r;}if(r instanceof sap.m.MessagePage){return r;}if(r instanceof sap.ui.core.mvc.View){c=r.getContent();if(c.length===1){r=c[0];continue;}}else if(r instanceof sap.m.NavContainer){r=r.getCurrentPage();continue;}r=null;}return r;};S.prototype._updateMasterPosition=function(p){var t=this;if(p=="popover"){this.removeAggregation("_navMaster",this._oMasterNav,true);this._oMasterNav.$().remove();this._oPopOver.addContent(this._oMasterNav);this._bMasterisOpen=false;}if(p=="landscape"){var r=function(){t._oPopOver.removeAggregation("content",t._oMasterNav,false);t.setAggregation("_navMaster",t._oMasterNav,true);var $=t.$();if($[0]){var b=sap.ui.getCore().createRenderManager();b.renderControl(t._oMasterNav.addStyleClass("sapMSplitContainerMaster"));b.flush($[0],false,1);b.destroy();}};if(this._oPopOver.isOpen()){var a=function(){this._oPopOver.detachAfterClose(a,this);this._bMasterisOpen=false;r();};this._oPopOver.attachAfterClose(a,this);this._oPopOver.close();}else{r();}}};S.prototype._portraitHide=function(){if(!this._oldIsLandscape&&!sap.ui.Device.system.phone&&this.getMode()==="ShowHideMode"){return true;}else{return false;}};S.prototype._portraitPopover=function(){if(!this._oldIsLandscape&&!sap.ui.Device.system.phone&&this.getMode()==="PopoverMode"){return true;}else{return false;}};S.prototype._hideMode=function(){return this.getMode()==="HideMode"&&!sap.ui.Device.system.phone;};S.prototype._needShowMasterButton=function(){return(this._portraitHide()||this._hideMode()||this._portraitPopover())&&(!this._bMasterisOpen||this._bMasterClosing);};S.prototype._createShowMasterButton=function(){if(this._oShowMasterBtn&&!this._oShowMasterBtn.bIsDestroyed){return;}this._oShowMasterBtn=new sap.m.Button(this.getId()+"-MasterBtn",{icon:I.getIconURI("menu2"),type:sap.m.ButtonType.Default,press:q.proxy(this._onMasterButtonTap,this)}).addStyleClass("sapMSplitContainerMasterBtn");};S.prototype._setMasterButton=function(p,c,s){if(!p){return;}if(typeof c==='boolean'){s=c;c=undefined;}p=this._getRealPage(p);var h=S._getHeaderButtonAggregation(p),H=h.sAggregationName,a=h.aAggregationContent;for(var i=0;i"); // div element + + if (this.renderBeforeContent) { + this.renderBeforeContent(oRm, oControl); + } + + if (!sap.ui.Device.system.phone) { + if (oControl.getMode() === "PopoverMode" && sap.ui.Device.orientation.portrait) { + oControl._oDetailNav.addStyleClass("sapMSplitContainerDetail"); + oRm.renderControl(oControl._oDetailNav); + //add master to popover if it's not yet added + if (oControl._oPopOver.getContent().length === 0) { + oControl._oPopOver.addAggregation("content", oControl._oMasterNav, true); + } + } else { + oControl._oMasterNav.addStyleClass("sapMSplitContainerMaster"); + oRm.renderControl(oControl._oMasterNav); + + oControl._oDetailNav.addStyleClass("sapMSplitContainerDetail"); + oRm.renderControl(oControl._oDetailNav); + } + } else { + oControl._oMasterNav.addStyleClass("sapMSplitContainerMobile"); + oRm.renderControl(oControl._oMasterNav); + } + + oRm.write(""); + }; + + + return SplitContainerRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/SplitContainerRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/SplitContainerRenderer.js new file mode 100644 index 0000000..dba68d0 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/SplitContainerRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var S={};S.render=function(r,c){r.write("");if(this.renderBeforeContent){this.renderBeforeContent(r,c);}if(!sap.ui.Device.system.phone){if(c.getMode()==="PopoverMode"&&sap.ui.Device.orientation.portrait){c._oDetailNav.addStyleClass("sapMSplitContainerDetail");r.renderControl(c._oDetailNav);if(c._oPopOver.getContent().length===0){c._oPopOver.addAggregation("content",c._oMasterNav,true);}}else{c._oMasterNav.addStyleClass("sapMSplitContainerMaster");r.renderControl(c._oMasterNav);c._oDetailNav.addStyleClass("sapMSplitContainerDetail");r.renderControl(c._oDetailNav);}}else{c._oMasterNav.addStyleClass("sapMSplitContainerMobile");r.renderControl(c._oMasterNav);}r.write("");};return S;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/StandardListItem-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/StandardListItem-dbg.js new file mode 100644 index 0000000..dd4e664 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/StandardListItem-dbg.js @@ -0,0 +1,164 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.StandardListItem. +sap.ui.define(['jquery.sap.global', './ListItemBase', './library', 'sap/ui/core/EnabledPropagator', 'sap/ui/core/IconPool'], + function(jQuery, ListItemBase, library, EnabledPropagator, IconPool) { + "use strict"; + + + + /** + * Constructor for a new StandardListItem. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * The StandardListItem is a list item providing image, titel and description. + * @extends sap.m.ListItemBase + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.m.StandardListItem + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var StandardListItem = ListItemBase.extend("sap.m.StandardListItem", /** @lends sap.m.StandardListItem.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * List item text + */ + title : {type : "string", group : "Misc", defaultValue : null}, + + /** + * Description gets only visible when the title property is not empty. + */ + description : {type : "string", group : "Misc", defaultValue : null}, + + /** + * List item icon + */ + icon : {type : "sap.ui.core.URI", group : "Misc", defaultValue : null}, + + /** + * If false image will not be shown as embedded icon. Instead it will take the full height of the listitem. + */ + iconInset : {type : "boolean", group : "Appearance", defaultValue : true}, + + /** + * By default, this is set to true but then one or more requests are sent trying to get the density perfect version of image if this version of image doesn't exist on the server. + * + * If bandwidth is the key for the application, set this value to false. + */ + iconDensityAware : {type : "boolean", group : "Misc", defaultValue : true}, + + /** + * List item active icon + */ + activeIcon : {type : "sap.ui.core.URI", group : "Misc", defaultValue : null}, + + /** + * Info text shown on the right side of the description. + */ + info : {type : "string", group : "Misc", defaultValue : null}, + + /** + * Info state defines the color of the info text. E.g. Error, Warning, Success... + */ + infoState : {type : "sap.ui.core.ValueState", group : "Misc", defaultValue : sap.ui.core.ValueState.None}, + + /** + * By default the title size adapts to the available space and gets bigger if the description is empty. If you have list items with and without description this results in titles with different sizes. In this cases it can be better to switch the size adaption off with setting this property to "false". + * @since 1.16.3 + */ + adaptTitleSize : {type : "boolean", group : "Appearance", defaultValue : true}, + + /** + * This property specifies the title text directionality with enumerated options. By default, the control inherits text direction from the DOM. + * @since 1.28.0 + */ + titleTextDirection : {type : "sap.ui.core.TextDirection", group : "Appearance", defaultValue : sap.ui.core.TextDirection.Inherit}, + + /** + * This property specifies the info text directionality with enumerated options. By default, the control inherits text direction from the DOM. + * @since 1.28.0 + */ + infoTextDirection : {type : "sap.ui.core.TextDirection", group : "Appearance", defaultValue : sap.ui.core.TextDirection.Inherit} + } + }}); + + + StandardListItem.prototype.exit = function() { + if (this._image) { + this._image.destroy(); + } + + ListItemBase.prototype.exit.apply(this, arguments); + }; + + + /** + * @private + */ + StandardListItem.prototype._getImage = function(sImgId, sImgStyle, sSrc, bIconDensityAware) { + var oImage = this._image; + + if (oImage) { + oImage.setSrc(sSrc); + if (oImage instanceof sap.m.Image) { + oImage.setDensityAware(bIconDensityAware); + } + } else { + oImage = IconPool.createControlByURI({ + id: sImgId, + src : sSrc, + densityAware : bIconDensityAware + }, sap.m.Image).setParent(this, null, true); + } + + if (oImage instanceof sap.m.Image) { + oImage.addStyleClass(sImgStyle, true); + } else { + oImage.addStyleClass(sImgStyle + "Icon", true); + } + + this._image = oImage; + return this._image; + }; + + // overwrite base method to hook into the active handling + StandardListItem.prototype._activeHandlingInheritor = function() { + var oImage = sap.ui.getCore().byId(this.getId() + "-img"); + if (oImage instanceof sap.ui.core.Icon) { + oImage.$().toggleClass("sapMSLIIconActive", this._active); + } + + if (oImage && this.getActiveIcon()) { + oImage.setSrc(this.getActiveIcon()); + } + }; + + // overwrite base method to hook into the inactive handling + StandardListItem.prototype._inactiveHandlingInheritor = function() { + var oImage = sap.ui.getCore().byId(this.getId() + "-img"); + if (oImage instanceof sap.ui.core.Icon) { + oImage.$().toggleClass("sapMSLIIconActive", this._active); + } + + if (oImage) { + oImage.setSrc(this.getIcon()); + } + }; + + return StandardListItem; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/StandardListItem.js b/DVHMA-OpenUI5/www/resources/sap/m/StandardListItem.js new file mode 100644 index 0000000..61b40f0 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/StandardListItem.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./ListItemBase','./library','sap/ui/core/EnabledPropagator','sap/ui/core/IconPool'],function(q,L,l,E,I){"use strict";var S=L.extend("sap.m.StandardListItem",{metadata:{library:"sap.m",properties:{title:{type:"string",group:"Misc",defaultValue:null},description:{type:"string",group:"Misc",defaultValue:null},icon:{type:"sap.ui.core.URI",group:"Misc",defaultValue:null},iconInset:{type:"boolean",group:"Appearance",defaultValue:true},iconDensityAware:{type:"boolean",group:"Misc",defaultValue:true},activeIcon:{type:"sap.ui.core.URI",group:"Misc",defaultValue:null},info:{type:"string",group:"Misc",defaultValue:null},infoState:{type:"sap.ui.core.ValueState",group:"Misc",defaultValue:sap.ui.core.ValueState.None},adaptTitleSize:{type:"boolean",group:"Appearance",defaultValue:true},titleTextDirection:{type:"sap.ui.core.TextDirection",group:"Appearance",defaultValue:sap.ui.core.TextDirection.Inherit},infoTextDirection:{type:"sap.ui.core.TextDirection",group:"Appearance",defaultValue:sap.ui.core.TextDirection.Inherit}}}});S.prototype.exit=function(){if(this._image){this._image.destroy();}L.prototype.exit.apply(this,arguments);};S.prototype._getImage=function(i,s,a,b){var o=this._image;if(o){o.setSrc(a);if(o instanceof sap.m.Image){o.setDensityAware(b);}}else{o=I.createControlByURI({id:i,src:a,densityAware:b},sap.m.Image).setParent(this,null,true);}if(o instanceof sap.m.Image){o.addStyleClass(s,true);}else{o.addStyleClass(s+"Icon",true);}this._image=o;return this._image;};S.prototype._activeHandlingInheritor=function(){var i=sap.ui.getCore().byId(this.getId()+"-img");if(i instanceof sap.ui.core.Icon){i.$().toggleClass("sapMSLIIconActive",this._active);}if(i&&this.getActiveIcon()){i.setSrc(this.getActiveIcon());}};S.prototype._inactiveHandlingInheritor=function(){var i=sap.ui.getCore().byId(this.getId()+"-img");if(i instanceof sap.ui.core.Icon){i.$().toggleClass("sapMSLIIconActive",this._active);}if(i){i.setSrc(this.getIcon());}};return S;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/StandardListItemRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/StandardListItemRenderer-dbg.js new file mode 100644 index 0000000..5f670d1 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/StandardListItemRenderer-dbg.js @@ -0,0 +1,181 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define(['jquery.sap.global', './ListItemBaseRenderer', 'sap/ui/core/Renderer'], + function(jQuery, ListItemBaseRenderer, Renderer) { + "use strict"; + + + /** + * StandardListItem renderer. + * @namespace + */ + var StandardListItemRenderer = Renderer.extend(ListItemBaseRenderer); + + /** + * Renders the HTML for the given control, using the provided + * {@link sap.ui.core.RenderManager}. + * + * @param {sap.ui.core.RenderManager} + * oRenderManager the RenderManager that can be used for writing to the + * Render-Output-Buffer + * @param {sap.ui.core.Control} + * oControl an object representation of the control that should be + * rendered + */ + StandardListItemRenderer.renderLIAttributes = function(rm, oLI) { + rm.addClass("sapMSLI"); + if (oLI._showSeparators == sap.m.ListSeparators.None && !oLI.getIconInset()) { + rm.addClass("sapMSLIShowSeparatorNone"); + } + if (oLI.getIcon()) { + rm.addClass("sapMSLIIcon"); + } + if (!oLI.getIconInset()) { + rm.addClass("sapMSLIIconThumb"); + } + if ((oLI.getDescription() || !oLI.getAdaptTitleSize()) && oLI.getIcon() && oLI.getIconInset()) { + rm.addClass("sapMSLIDescIcon"); + } + if ((oLI.getDescription() || !oLI.getAdaptTitleSize()) && !oLI.getIcon()) { + rm.addClass("sapMSLIDescNoIcon"); + } + if (!oLI.getDescription() && oLI.getIcon()) { + rm.addClass("sapMSLINoDescIcon"); + } + if (oLI.getType() == sap.m.ListType.Detail || oLI.getType() == sap.m.ListType.DetailAndActive) { + rm.addClass("sapMSLIDetail"); + } + + }; + + StandardListItemRenderer.renderLIContent = function(rm, oLI) { + + var sTextDir = oLI.getTitleTextDirection(), + sInfoDir = oLI.getInfoTextDirection(); + + // image + if (oLI.getIcon()) { + if (oLI.getIconInset()) { + var oList = sap.ui.getCore().byId(oLI._listId); + if (oList && oList.getMode() == sap.m.ListMode.None & !oList.getShowUnread()) { + rm.renderControl(oLI._getImage((oLI.getId() + "-img"), "sapMSLIImgFirst", oLI.getIcon(), oLI.getIconDensityAware())); + } else { + rm.renderControl(oLI._getImage((oLI.getId() + "-img"), "sapMSLIImg", oLI.getIcon(), oLI.getIconDensityAware())); + } + } else { + rm.renderControl(oLI._getImage((oLI.getId() + "-img"), "sapMSLIImgThumb", oLI.getIcon(), oLI.getIconDensityAware())); + } + } + + var isDescription = oLI.getTitle() && (oLI.getDescription() || !oLI.getAdaptTitleSize()) || (oLI._showSeparators == sap.m.ListSeparators.None && !oLI.getIconInset()); + var isInfo = oLI.getInfo(); + + if (isDescription) { + rm.write(""); + } + + rm.write(""); + + //noFlex: make an additional div for the contents table + if (!isDescription && oLI._bNoFlex) { + rm.write('
'); + } + // List item text (also written when no title for keeping the space) + rm.write(""); + rm.writeEscaped(oLI.getTitle()); + rm.write("
"); + + //info div top when @sapUiInfoTop: true; + if (isInfo && (sap.ui.core.theming.Parameters.get("sapUiInfoTop") == "true" || !isDescription)) { + rm.write(""); + rm.writeEscaped(isInfo); + rm.write(""); + } + + //noFlex: make an additional div for the contents table + if (!isDescription && oLI._bNoFlex) { + rm.write(''); + } + rm.write(""); + + rm.write(""); + + // List item text + if (isDescription) { + rm.write(""); + if (oLI.getDescription()) { + rm.writeEscaped(oLI.getDescription()); + } else { + rm.write(" "); + } + rm.write(""); + } + + if (isInfo && sap.ui.core.theming.Parameters.get("sapUiInfoTop") == "false" && isDescription) { + rm.write(""); + rm.writeEscaped(isInfo); + rm.write(""); + } + rm.write(""); + + if (isDescription) { + rm.write(""); + } + + }; + + + return StandardListItemRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/StandardListItemRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/StandardListItemRenderer.js new file mode 100644 index 0000000..b34b8cf --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/StandardListItemRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./ListItemBaseRenderer','sap/ui/core/Renderer'],function(q,L,R){"use strict";var S=R.extend(L);S.renderLIAttributes=function(r,l){r.addClass("sapMSLI");if(l._showSeparators==sap.m.ListSeparators.None&&!l.getIconInset()){r.addClass("sapMSLIShowSeparatorNone");}if(l.getIcon()){r.addClass("sapMSLIIcon");}if(!l.getIconInset()){r.addClass("sapMSLIIconThumb");}if((l.getDescription()||!l.getAdaptTitleSize())&&l.getIcon()&&l.getIconInset()){r.addClass("sapMSLIDescIcon");}if((l.getDescription()||!l.getAdaptTitleSize())&&!l.getIcon()){r.addClass("sapMSLIDescNoIcon");}if(!l.getDescription()&&l.getIcon()){r.addClass("sapMSLINoDescIcon");}if(l.getType()==sap.m.ListType.Detail||l.getType()==sap.m.ListType.DetailAndActive){r.addClass("sapMSLIDetail");}};S.renderLIContent=function(r,l){var t=l.getTitleTextDirection(),i=l.getInfoTextDirection();if(l.getIcon()){if(l.getIconInset()){var o=sap.ui.getCore().byId(l._listId);if(o&&o.getMode()==sap.m.ListMode.None&!o.getShowUnread()){r.renderControl(l._getImage((l.getId()+"-img"),"sapMSLIImgFirst",l.getIcon(),l.getIconDensityAware()));}else{r.renderControl(l._getImage((l.getId()+"-img"),"sapMSLIImg",l.getIcon(),l.getIconDensityAware()));}}else{r.renderControl(l._getImage((l.getId()+"-img"),"sapMSLIImgThumb",l.getIcon(),l.getIconDensityAware()));}}var a=l.getTitle()&&(l.getDescription()||!l.getAdaptTitleSize())||(l._showSeparators==sap.m.ListSeparators.None&&!l.getIconInset());var b=l.getInfo();if(a){r.write("");}r.write("");if(!a&&l._bNoFlex){r.write('
');}r.write("");r.writeEscaped(l.getTitle());r.write("
");if(b&&(sap.ui.core.theming.Parameters.get("sapUiInfoTop")=="true"||!a)){r.write("");r.writeEscaped(b);r.write("");}if(!a&&l._bNoFlex){r.write('');}r.write("");r.write("");if(a){r.write("");if(l.getDescription()){r.writeEscaped(l.getDescription());}else{r.write(" ");}r.write("");}if(b&&sap.ui.core.theming.Parameters.get("sapUiInfoTop")=="false"&&a){r.write("");r.writeEscaped(b);r.write("");}r.write("");if(a){r.write("");}};return S;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/StandardTile-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/StandardTile-dbg.js new file mode 100644 index 0000000..826f9d5 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/StandardTile-dbg.js @@ -0,0 +1,148 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.StandardTile. +sap.ui.define(['jquery.sap.global', './Tile', './library', 'sap/ui/core/IconPool'], + function(jQuery, Tile, library, IconPool) { + "use strict"; + + + + /** + * Constructor for a new StandardTile. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * The StandardTile + * @extends sap.m.Tile + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.12 + * @alias sap.m.StandardTile + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var StandardTile = Tile.extend("sap.m.StandardTile", /** @lends sap.m.StandardTile.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * Tile title + */ + title : {type : "string", group : "Misc", defaultValue : null}, + + /** + * Tile description + */ + info : {type : "string", group : "Misc", defaultValue : null}, + + /** + * Tile icon + */ + icon : {type : "sap.ui.core.URI", group : "Misc", defaultValue : null}, + + /** + * Tile active icon + */ + activeIcon : {type : "sap.ui.core.URI", group : "Misc", defaultValue : null}, + + /** + * Number field + */ + number : {type : "string", group : "Misc", defaultValue : null}, + + /** + * Number units qualifier + */ + numberUnit : {type : "string", group : "Misc", defaultValue : null}, + + /** + * Info state defines the color of the info text. E.g. Error, Warning, Success... + */ + infoState : {type : "sap.ui.core.ValueState", group : "Misc", defaultValue : sap.ui.core.ValueState.None}, + + /** + * Tile type. + */ + type : {type : "sap.m.StandardTileType", group : "Misc", defaultValue : sap.m.StandardTileType.None}, + + /** + * By default, this is set to true but then one or more requests are sent trying to get the density perfect version of image if this version of image doesn't exist on the server. + * + * If bandwidth is the key for the application, set this value to false. + */ + iconDensityAware : {type : "boolean", group : "Appearance", defaultValue : true} + }, + associations : { + + /** + * Association to controls / ids which describe this control (see WAI-ARIA attribute aria-describedby). + */ + ariaDescribedBy : {type : "sap.ui.core.Control", multiple : true, singularName : "ariaDescribedBy"} + } + }}); + + ///** + // * This file defines behavior for the control, + // */ + + + /** + * Called when the control is destroyed. + * + * @private + */ + StandardTile.prototype.exit = function() { + if (this._oImageControl) { + this._oImageControl.destroy(); + this._oImageControl = null; + } + }; + + /* + * Overrides the icon property of the Tile Control + */ + StandardTile.prototype.getIcon = function() { + if (!this.getProperty("icon") && this.getType() === "Create") { + return IconPool.getIconURI("add"); + } else { + return this.getProperty("icon"); + } + }; + + + /** + * Lazy load tile icon image. + * @private + */ + StandardTile.prototype._getImage = function() { + + var sImgId = this.getId() + "-img"; + var sSize = sap.ui.Device.system.phone ? "1.3rem" : "2rem"; + + var mProperties = { + src : this.getIcon(), + height : sSize, + width : sSize, + size: sSize, + densityAware : this.getIconDensityAware() + }; + + this._oImageControl = sap.m.ImageHelper.getImageControl(sImgId, this._oImageControl, this, mProperties); + + return this._oImageControl; + }; + + + return StandardTile; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/StandardTile.js b/DVHMA-OpenUI5/www/resources/sap/m/StandardTile.js new file mode 100644 index 0000000..759ab20 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/StandardTile.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Tile','./library','sap/ui/core/IconPool'],function(q,T,l,I){"use strict";var S=T.extend("sap.m.StandardTile",{metadata:{library:"sap.m",properties:{title:{type:"string",group:"Misc",defaultValue:null},info:{type:"string",group:"Misc",defaultValue:null},icon:{type:"sap.ui.core.URI",group:"Misc",defaultValue:null},activeIcon:{type:"sap.ui.core.URI",group:"Misc",defaultValue:null},number:{type:"string",group:"Misc",defaultValue:null},numberUnit:{type:"string",group:"Misc",defaultValue:null},infoState:{type:"sap.ui.core.ValueState",group:"Misc",defaultValue:sap.ui.core.ValueState.None},type:{type:"sap.m.StandardTileType",group:"Misc",defaultValue:sap.m.StandardTileType.None},iconDensityAware:{type:"boolean",group:"Appearance",defaultValue:true}},associations:{ariaDescribedBy:{type:"sap.ui.core.Control",multiple:true,singularName:"ariaDescribedBy"}}}});S.prototype.exit=function(){if(this._oImageControl){this._oImageControl.destroy();this._oImageControl=null;}};S.prototype.getIcon=function(){if(!this.getProperty("icon")&&this.getType()==="Create"){return I.getIconURI("add");}else{return this.getProperty("icon");}};S.prototype._getImage=function(){var i=this.getId()+"-img";var s=sap.ui.Device.system.phone?"1.3rem":"2rem";var p={src:this.getIcon(),height:s,width:s,size:s,densityAware:this.getIconDensityAware()};this._oImageControl=sap.m.ImageHelper.getImageControl(i,this._oImageControl,this,p);return this._oImageControl;};return S;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/StandardTileRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/StandardTileRenderer-dbg.js new file mode 100644 index 0000000..da83aa9 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/StandardTileRenderer-dbg.js @@ -0,0 +1,152 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define(['jquery.sap.global', './TileRenderer', 'sap/ui/core/ValueStateSupport'], + function(jQuery, TileRenderer, ValueStateSupport) { + "use strict"; + + /** + * CustomTile renderer. + * @namespace + */ + var StandardTileRenderer = sap.ui.core.Renderer.extend(TileRenderer); + + /** + * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}. + * + * @param {sap.ui.core.RenderManager} + * oRm the RenderManager that can be used for writing to the render output buffer + * @param {sap.ui.core.Control} + * oControl an object representation of the control that should be rendered + */ + StandardTileRenderer._renderContent = function(rm, oTile) { + var infoState = oTile.getInfoState(); + + rm.write(""); + if (oTile.getIcon()) { + rm.write(""); + rm.renderControl(oTile._getImage()); + rm.write(""); + } + + + if (oTile.getNumber()) { + + rm.write(""); + + rm.write(""); + rm.writeEscaped(oTile.getNumber()); + rm.write(""); + + if (oTile.getNumberUnit()) { + rm.write(""); + rm.writeEscaped(oTile.getNumberUnit()); + rm.write(""); + } + rm.write(""); // End number div + } + rm.write(""); // End top row div + + + rm.write(""); + + rm.write(""); + if (oTile.getTitle()) { + rm.writeEscaped(oTile.getTitle()); + } + rm.write(""); // End title div + + if (oTile.getInfo()) { + rm.write(""); + if (oTile.getInfo()) { + rm.writeEscaped(oTile.getInfo()); + } + rm.write(""); // End info + } + + /* WAI ARIA adding hidden element for infoStatus */ + if (infoState != sap.ui.core.ValueState.None) { + rm.write(""); + rm.writeEscaped(ValueStateSupport.getAdditionalText(infoState)); + rm.write(""); + } + + rm.write(""); // End bottom row type tile styling + + }; + + + return StandardTileRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/StandardTileRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/StandardTileRenderer.js new file mode 100644 index 0000000..bee1f1f --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/StandardTileRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./TileRenderer','sap/ui/core/ValueStateSupport'],function(q,T,V){"use strict";var S=sap.ui.core.Renderer.extend(T);S._renderContent=function(r,t){var i=t.getInfoState();r.write("");if(t.getIcon()){r.write("");r.renderControl(t._getImage());r.write("");}if(t.getNumber()){r.write("");r.write("");r.writeEscaped(t.getNumber());r.write("");if(t.getNumberUnit()){r.write("");r.writeEscaped(t.getNumberUnit());r.write("");}r.write("");}r.write("");r.write("");r.write("");if(t.getTitle()){r.writeEscaped(t.getTitle());}r.write("");if(t.getInfo()){r.write("");if(t.getInfo()){r.writeEscaped(t.getInfo());}r.write("");}if(i!=sap.ui.core.ValueState.None){r.write("");r.writeEscaped(V.getAdditionalText(i));r.write("");}r.write("");};return S;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Support-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/Support-dbg.js new file mode 100644 index 0000000..b471ac3 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Support-dbg.js @@ -0,0 +1,396 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define(['jquery.sap.global'], + function(jQuery) { + "use strict"; + + + /** + *
+	 * sap.m.Support shows the technical information for SAPUI5 Mobile Applications.
+	 * This technical information includes
+	 * 	* SAPUI5 Version
+	 * 	* User Agent
+	 * 	* Configurations (Bootstrap and Computed)
+	 * 	* URI parameters
+	 * 	* All loaded module names
+	 *
+	 * In order to show the device information, the user must follow the following gestures.
+	 * 	1 - Hold two finger for 3 seconds minimum.
+	 * 	2 - Tab with a third finger while holding the first two fingers.
+	 *
+	 * NOTE: This class is internal and all its functions must not be used by an application
+	 *
+	 * As sap.m.Support is a static class, a jQuery.sap.require("sap.m.Support");
+	 * statement must be implicitly executed before the class is used.
+	 *
+	 *
+	 * Enable Support:
+	 * --------------------------------------------------
+	 * //import library
+	 * jQuery.sap.require("sap.m.Support");
+	 *
+	 * //By default after require, support is enabled but implicitly we can call
+	 * sap.m.Support.on();
+	 *
+	 * Disable Support:
+	 * --------------------------------------------------
+	 * sap.m.Support.off();
+	 * 
+ * + * @author SAP SE + * @since 1.11.0 + * + * @static + * @protected + * @name sap.m.Support + */ + var Support = (function($, document) { + + var dialog, startTime, isEventRegistered, lastTouchUID; + var timeDiff = 0; + var minHoldTime = 3000; // 3s(3000ms) two-finger hold time + var holdFingersNumber = 2; // two-fingers hold + var maxFingersAllowed = 3; // two-fingers hold + 1-finger tab + var releasedFingersNumber = 1, + oData = {}, + e2eTraceConst = { + btnStart : "startE2ETrace", + selLevel : "logLevelE2ETrace", + taContent : "outputE2ETrace", + infoText : "Ent-to-End trace is running in the background." + + " Navigate to the URL that you would like to trace." + + " The result of the trace will be shown in dialog after the trace is terminated.", + infoDuration : 5000 // 5 sec. + }, + controlIDs = { + dvLoadedLibs : "LoadedLibs", + dvLoadedModules : "LoadedModules" + }; + + // copied from core + function line(buffer, right, border, label, content) { + buffer.push("
"); + } + + // copied from core + function multiline(buffer, right, border, label, content) { + line(buffer, right, border, label, function(buffer) { + buffer.push("

"); + var ctnt = content; + if ($.isFunction(content)) { + ctnt = content(buffer) || ""; + } + buffer.push($.sap.escapeHTML(ctnt)); + buffer.push("
"); + $.each(content, function(i, v) { + var val = ""; + if (v) { + if (typeof (v) == "string" || typeof (v) == "boolean" || ($.isArray(v) && v.length == 1)) { + val = v; + } else if (($.isArray(v) || $.isPlainObject(v)) && window.JSON) { + val = window.JSON.stringify(v); + } + } + line(buffer, false, false, i, "" + val); + }); + buffer.push("
"); + }); + } + + // copied from core + function getTechnicalContent() { + var html, + oConfig = sap.ui.getCore().getConfiguration(); + var oLoadedLibs = {}; + jQuery.each(sap.ui.getCore().getLoadedLibraries(), function(sName, oLibInfo) { + oLoadedLibs[sName] = oLibInfo.version; + }); + oData = { + version: sap.ui.version, + build: sap.ui.buildinfo.buildtime, + change: sap.ui.buildinfo.lastchange, + useragent: navigator.userAgent, + docmode: document.documentMode || "", + debug: $.sap.debug(), + bootconfig: window["sap-ui-config"] || {}, + modules: $.sap.getAllDeclaredModules(), + loadedlibs: oLoadedLibs, + uriparams: $.sap.getUriParameters().mParams, + appurl: window.location.href, + config: { + theme: oConfig.getTheme(), + language: oConfig.getLanguage(), + formatLocale: oConfig.getFormatLocale(), + accessibility: "" + oConfig.getAccessibility(), + animation: "" + oConfig.getAnimation(), + rtl: "" + oConfig.getRTL(), + debug: "" + oConfig.getDebug(), + inspect: "" + oConfig.getInspect(), + originInfo: "" + oConfig.getOriginInfo(), + noDuplicateIds: "" + oConfig.getNoDuplicateIds() + } + }; + + html = [""]; + line(html, true, true, "SAPUI5 Version", function(buffer) { + buffer.push(oData.version, " (built at ", oData.build, ", last change ", oData.change, ")"); + }); + line(html, true, true, "User Agent", function(buffer) { + buffer.push(oData.useragent, (oData.docmode ? ", Document Mode '" + oData.docmode + "'" : "")); + }); + line(html, true, true, "Debug Sources", function(buffer) { + buffer.push((oData.debug ? "ON" : "OFF") ); + }); + line(html, true, true, "Application", oData.appurl); + multiline(html, true, true, "Configuration (bootstrap)", oData.bootconfig); + multiline(html, true, true, "Configuration (computed)", oData.config); + multiline(html, true, true, "URI Parameters", oData.uriparams); + // e2e trace section + line(html, true, true, "End-to-End Trace", function(buffer) { + buffer.push("", + "" + ); + buffer.push(""); + buffer.push("
"); + buffer.push(""); + buffer.push(""); + buffer.push("
"); + }); + + line(html, true, true, "Loaded Libraries", function(buffer) { + buffer.push("
    "); + $.each(oData.loadedlibs, function(i, v) { + if (v && (typeof (v) === "string" || typeof (v) === "boolean")) { + buffer.push("
  • ", i + " " + v, "
  • "); + } + }); + buffer.push("
"); + }); + + line(html, true, true, "Loaded Modules", function(buffer) { + buffer.push("
"); + }); + + html.push("
"); + + return new sap.ui.core.HTML({ + content : html.join("").replace(/\{/g, "{").replace(/\}/g, "}") + }); + } + + function buildControlId(controlId) { + return dialog.getId() + "-" + controlId; + } + + function fillPanelContent(panelId, arContent) { + + var panelHeader = "Modules"; + var libsCount = 0, arDivContent = []; + + libsCount = arContent.length; + $.each(arContent.sort(), function(i, module) { + arDivContent.push(new sap.m.Label({ text : " - " + module }).addStyleClass("sapUiSupportPnlLbl")); + }); + + // insert content into div placeholders + var objPanel = new sap.m.Panel({ + expandable : true, + expanded : false, + headerToolbar : new sap.m.Toolbar({ + design : sap.m.ToolbarDesign.Transparent, + content : [new sap.m.Label({ + text : panelHeader + " (" + libsCount + ")", + design : sap.m.LabelDesign.Bold + })] + }), + content : arDivContent + }); + + objPanel.placeAt( buildControlId(panelId), "only"); + } + + // setup dialog elements and bind some events + function setupDialog() { + // setup e2e values as log level and content + if (dialog.traceXml) { + dialog.$(e2eTraceConst.taContent).text(dialog.traceXml); + } + if (dialog.e2eLogLevel) { + dialog.$(e2eTraceConst.selLevel).val(dialog.e2eLogLevel); + } + + fillPanelContent(controlIDs.dvLoadedModules, oData.modules); + + + // bind button Start event + dialog.$(e2eTraceConst.btnStart).one("tap", function() { + + dialog.e2eLogLevel = dialog.$(e2eTraceConst.selLevel).val(); + dialog.$(e2eTraceConst.btnStart).addClass("sapUiSupportRunningTrace").text("Running..."); + dialog.traceXml = ""; + dialog.$(e2eTraceConst.taContent).text(""); + + sap.ui.core.support.trace.E2eTraceLib.start(dialog.e2eLogLevel, function(traceXml) { + dialog.traceXml = traceXml; + }); + + // show info message about the E2E trace activation + sap.m.MessageToast.show(e2eTraceConst.infoText, {duration: e2eTraceConst.infoDuration}); + + //close the dialog, but keep it for later use + dialog.close(); + }); + } + + // get or create dialog instance and return + function getDialog() { + if (dialog) { + return dialog; + } + + $.sap.require("sap.m.Dialog"); + $.sap.require("sap.m.Button"); + $.sap.require("sap.ui.core.HTML"); + $.sap.require("sap.m.MessageToast"); + $.sap.require("sap.ui.core.support.trace.E2eTraceLib"); + + dialog = new sap.m.Dialog({ + title : "Technical Information", + horizontalScrolling: true, + verticalScrolling: true, + stretch: jQuery.device.is.phone, + leftButton : new sap.m.Button({ + text : "Close", + press : function() { + dialog.close(); + } + }), + afterOpen : function() { + Support.off(); + }, + afterClose : function() { + Support.on(); + } + }).addStyleClass("sapMSupport"); + + return dialog; + } + + + + //function is triggered when a touch is detected + function onTouchStart(oEvent) { + if (oEvent.touches) { + var currentTouches = oEvent.touches.length; + + if (currentTouches > maxFingersAllowed) { + document.removeEventListener('touchend', onTouchEnd); + return; + } + + switch (currentTouches) { + + case holdFingersNumber: + startTime = Date.now(); + document.addEventListener('touchend', onTouchEnd); + break; + + case maxFingersAllowed: + if (startTime) { + timeDiff = Date.now() - startTime; + lastTouchUID = oEvent.touches[currentTouches - 1].identifier; + } + break; + } + } + } + + //function is triggered when a touch is removed e.g. the user’s finger is removed from the touchscreen. + function onTouchEnd(oEvent) { + document.removeEventListener('touchend', onTouchEnd); + + // Check if two fingers are holded for 3 seconds or more and after that it`s tapped with a third finger + if (timeDiff > minHoldTime + && oEvent.touches.length === holdFingersNumber + && oEvent.changedTouches.length === releasedFingersNumber + && oEvent.changedTouches[0].identifier === lastTouchUID) { + + timeDiff = 0; + startTime = 0; + show(); + } + } + + function show() { + var container = getDialog(); + container.removeAllAggregation("content"); + container.addAggregation("content", getTechnicalContent()); + dialog.open(); + setupDialog(); + } + + return ({ + /** + * Enables support. + * + * @returns {sap.m.Support} this to allow method chaining + * @protected + * @name sap.m.Support.on + * @function + */ + on : function() { + if (!isEventRegistered && "ontouchstart" in document) { + isEventRegistered = true; + document.addEventListener("touchstart", onTouchStart); + } + return this; + }, + + /** + * Disables support. + * + * @returns {sap.m.Support} this to allow method chaining + * @protected + * @name sap.m.Support.off + * @function + */ + off : function() { + if (isEventRegistered) { + isEventRegistered = false; + document.removeEventListener("touchstart", onTouchStart); + } + return this; + }, + + open : function() { + show(); + }, + + /** + * Returns if event is registered or not. + * + * @returns {boolean} + * @protected + * @name sap.m.Support.isEventRegistered + * @function + */ + isEventRegistered : function() { + return isEventRegistered; + } + }).on(); + + }(jQuery, document)); + + + return Support; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Support.js b/DVHMA-OpenUI5/www/resources/sap/m/Support.js new file mode 100644 index 0000000..1f4b499 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Support.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var S=(function($,d){var a,s,b,l;var t=0;var m=3000;var h=2;var c=3;var r=1,D={},e={btnStart:"startE2ETrace",selLevel:"logLevelE2ETrace",taContent:"outputE2ETrace",infoText:"Ent-to-End trace is running in the background."+" Navigate to the URL that you would like to trace."+" The result of the trace will be shown in dialog after the trace is terminated.",infoDuration:5000},f={dvLoadedLibs:"LoadedLibs",dvLoadedModules:"LoadedModules"};function g(i,v,z,A,B){i.push("
");var C=B;if($.isFunction(B)){C=B(i)||"";}i.push($.sap.escapeHTML(C));i.push("");}function j(z,A,B,C,E){g(z,A,B,C,function(z){z.push("");$.each(E,function(i,v){var F="";if(v){if(typeof(v)=="string"||typeof(v)=="boolean"||($.isArray(v)&&v.length==1)){F=v;}else if(($.isArray(v)||$.isPlainObject(v))&&window.JSON){F=window.JSON.stringify(v);}}g(z,false,false,i,""+F);});z.push("
");});}function k(){var z,C=sap.ui.getCore().getConfiguration();var L={};q.each(sap.ui.getCore().getLoadedLibraries(),function(N,i){L[N]=i.version;});D={version:sap.ui.version,build:sap.ui.buildinfo.buildtime,change:sap.ui.buildinfo.lastchange,useragent:navigator.userAgent,docmode:d.documentMode||"",debug:$.sap.debug(),bootconfig:window["sap-ui-config"]||{},modules:$.sap.getAllDeclaredModules(),loadedlibs:L,uriparams:$.sap.getUriParameters().mParams,appurl:window.location.href,config:{theme:C.getTheme(),language:C.getLanguage(),formatLocale:C.getFormatLocale(),accessibility:""+C.getAccessibility(),animation:""+C.getAnimation(),rtl:""+C.getRTL(),debug:""+C.getDebug(),inspect:""+C.getInspect(),originInfo:""+C.getOriginInfo(),noDuplicateIds:""+C.getNoDuplicateIds()}};z=[""];g(z,true,true,"SAPUI5 Version",function(i){i.push(D.version," (built at ",D.build,", last change ",D.change,")");});g(z,true,true,"User Agent",function(i){i.push(D.useragent,(D.docmode?", Document Mode '"+D.docmode+"'":""));});g(z,true,true,"Debug Sources",function(i){i.push((D.debug?"ON":"OFF"));});g(z,true,true,"Application",D.appurl);j(z,true,true,"Configuration (bootstrap)",D.bootconfig);j(z,true,true,"Configuration (computed)",D.config);j(z,true,true,"URI Parameters",D.uriparams);g(z,true,true,"End-to-End Trace",function(i){i.push("","");i.push("");i.push("
");i.push("");i.push("");i.push("
");});g(z,true,true,"Loaded Libraries",function(A){A.push("
    ");$.each(D.loadedlibs,function(i,v){if(v&&(typeof(v)==="string"||typeof(v)==="boolean")){A.push("
  • ",i+" "+v,"
  • ");}});A.push("
");});g(z,true,true,"Loaded Modules",function(i){i.push("
");});z.push("
");return new sap.ui.core.HTML({content:z.join("").replace(/\{/g,"{").replace(/\}/g,"}")});}function n(i){return a.getId()+"-"+i;}function o(v,z){var A="Modules";var B=0,C=[];B=z.length;$.each(z.sort(),function(i,F){C.push(new sap.m.Label({text:" - "+F}).addStyleClass("sapUiSupportPnlLbl"));});var E=new sap.m.Panel({expandable:true,expanded:false,headerToolbar:new sap.m.Toolbar({design:sap.m.ToolbarDesign.Transparent,content:[new sap.m.Label({text:A+" ("+B+")",design:sap.m.LabelDesign.Bold})]}),content:C});E.placeAt(n(v),"only");}function p(){if(a.traceXml){a.$(e.taContent).text(a.traceXml);}if(a.e2eLogLevel){a.$(e.selLevel).val(a.e2eLogLevel);}o(f.dvLoadedModules,D.modules);a.$(e.btnStart).one("tap",function(){a.e2eLogLevel=a.$(e.selLevel).val();a.$(e.btnStart).addClass("sapUiSupportRunningTrace").text("Running...");a.traceXml="";a.$(e.taContent).text("");sap.ui.core.support.trace.E2eTraceLib.start(a.e2eLogLevel,function(i){a.traceXml=i;});sap.m.MessageToast.show(e.infoText,{duration:e.infoDuration});a.close();});}function u(){if(a){return a;}$.sap.require("sap.m.Dialog");$.sap.require("sap.m.Button");$.sap.require("sap.ui.core.HTML");$.sap.require("sap.m.MessageToast");$.sap.require("sap.ui.core.support.trace.E2eTraceLib");a=new sap.m.Dialog({title:"Technical Information",horizontalScrolling:true,verticalScrolling:true,stretch:q.device.is.phone,leftButton:new sap.m.Button({text:"Close",press:function(){a.close();}}),afterOpen:function(){S.off();},afterClose:function(){S.on();}}).addStyleClass("sapMSupport");return a;}function w(E){if(E.touches){var i=E.touches.length;if(i>c){d.removeEventListener('touchend',x);return;}switch(i){case h:s=Date.now();d.addEventListener('touchend',x);break;case c:if(s){t=Date.now()-s;l=E.touches[i-1].identifier;}break;}}}function x(E){d.removeEventListener('touchend',x);if(t>m&&E.touches.length===h&&E.changedTouches.length===r&&E.changedTouches[0].identifier===l){t=0;s=0;y();}}function y(){var i=u();i.removeAllAggregation("content");i.addAggregation("content",k());a.open();p();}return({on:function(){if(!b&&"ontouchstart"in d){b=true;d.addEventListener("touchstart",w);}return this;},off:function(){if(b){b=false;d.removeEventListener("touchstart",w);}return this;},open:function(){y();},isEventRegistered:function(){return b;}}).on();}(q,document));return S;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Switch-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/Switch-dbg.js new file mode 100644 index 0000000..e531b4d --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Switch-dbg.js @@ -0,0 +1,438 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.Switch. +sap.ui.define(['jquery.sap.global', './SwitchRenderer', './library', 'sap/ui/core/Control', 'sap/ui/core/EnabledPropagator', 'sap/ui/core/IconPool', 'sap/ui/core/theming/Parameters'], + function(jQuery, SwitchRenderer, library, Control, EnabledPropagator, IconPool, Parameters) { + "use strict"; + + /** + * Constructor for a new Switch. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * A switch is a user interface control on mobile devices that is used for change between binary states. The user can also drag the button handle or tap to change the state. + * @extends sap.ui.core.Control + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.m.Switch + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var Switch = Control.extend("sap.m.Switch", /** @lends sap.m.Switch.prototype */ { metadata: { + + library: "sap.m", + properties: { + + /** + * A boolean value indicating whether the switch is on or off. + */ + state: { type: "boolean", group: "Misc", defaultValue: false }, + + /** + * Custom text for the "ON" state. + * + * "ON" translated to the current language is the default value. + * Beware that the given text will be cut off after three characters. + */ + customTextOn: { type: "string", group: "Misc", defaultValue: "" }, + + /** + * Custom text for the "OFF" state. + * + * "OFF" translated to the current language is the default value. + * Beware that the given text will be cut off after three characters. + */ + customTextOff: { type: "string", group: "Misc", defaultValue: "" }, + + /** + * Whether the switch is enabled. + */ + enabled: { type: "boolean", group: "Data", defaultValue: true }, + + /** + * The name to be used in the HTML code for the switch (e.g. for HTML forms that send data to the server via submit). + */ + name: { type: "string", group: "Misc", defaultValue: "" }, + + /** + * Type of a Switch. Possibles values "Default", "AcceptReject". + */ + type: { type : "sap.m.SwitchType", group: "Appearance", defaultValue: sap.m.SwitchType.Default } + }, + associations: { + + /** + * Association to controls / ids which label this control (see WAI-ARIA attribute aria-labelledby). + * @since 1.27.0 + */ + ariaLabelledBy: { type: "sap.ui.core.Control", multiple: true, singularName: "ariaLabelledBy" } + }, + events: { + + /** + * Triggered when a switch changes the state. + */ + change: { + parameters: { + + /** + * The new state of the switch. + */ + state: { type: "boolean" } + } + } + } + }}); + + IconPool.insertFontFaceStyle(); + EnabledPropagator.apply(Switch.prototype, [true]); + + /* =========================================================== */ + /* Internal methods and properties */ + /* =========================================================== */ + + /** + * Slide the switch. + * + * @private + */ + Switch.prototype._slide = function(iPosition) { + if (iPosition > Switch._OFFPOSITION) { + iPosition = Switch._OFFPOSITION; + } else if (iPosition < Switch._ONPOSITION) { + iPosition = Switch._ONPOSITION; + } else { + iPosition = iPosition; + } + + if (this._iCurrentPosition === iPosition) { + return; + } + + this._iCurrentPosition = iPosition; + this.getDomRef("inner").style[sap.ui.getCore().getConfiguration().getRTL() ? "right" : "left"] = iPosition + "px"; + this._setTempState(Math.abs(iPosition) < Switch._SWAPPOINT); + }; + + Switch.prototype._setTempState = function(b) { + if (this._bTempState === b) { + return; + } + + this._bTempState = b; + this.getDomRef("handle").setAttribute("data-sap-ui-swt", b ? this._sOn : this._sOff); + }; + + Switch.prototype._setDomState = function(bState) { + var CSS_CLASS = SwitchRenderer.CSS_CLASS, + sState = bState ? this._sOn : this._sOff, + oDomRef = this.getDomRef(); + + if (!oDomRef) { + return; + } + + var sId = this.getId(), + oOnDomRef = oDomRef.querySelector("#" + sId + "-texton"), + oOffDomRef = oDomRef.querySelector("#" + sId + "-textoff"), + sAriaLabelledBy = oDomRef.getAttribute("aria-labelledby"), + $Switch = this.$("switch"), + oSwitchInnerDomRef = this.getDomRef("inner"), + oCheckboxDomRef = null; + + this.getDomRef("handle").setAttribute("data-sap-ui-swt", sState); + + if (this.getName()) { + oCheckboxDomRef = this.getDomRef("input"); + oCheckboxDomRef.setAttribute("checked", bState); + oCheckboxDomRef.setAttribute("value", sState); + } + + if (bState) { + $Switch.removeClass(CSS_CLASS + "Off").addClass(CSS_CLASS + "On"); + oDomRef.setAttribute("aria-checked", "true"); + oDomRef.setAttribute("aria-labelledby", sAriaLabelledBy.replace(sId + "-textoff", sId + "-texton")); + oOnDomRef.removeAttribute("aria-hidden"); + oOffDomRef.setAttribute("aria-hidden", "true"); + } else { + $Switch.removeClass(CSS_CLASS + "On").addClass(CSS_CLASS + "Off"); + oDomRef.setAttribute("aria-checked", "false"); + oDomRef.setAttribute("aria-labelledby", sAriaLabelledBy.replace(sId + "-texton", sId + "-textoff")); + oOnDomRef.setAttribute("aria-hidden", "true"); + oOffDomRef.removeAttribute("aria-hidden"); + } + + $Switch.addClass(CSS_CLASS + "Trans"); + + // remove inline styles + oSwitchInnerDomRef.style.cssText = ""; + }; + + Switch._getCssParameter = function(sParameter) { + var fnGetCssParameter = Parameters.get; + return fnGetCssParameter(sParameter) || fnGetCssParameter(sParameter + "-" + sap.ui.Device.os.name.toLowerCase()); + }; + + var sParamTransitionTime = "sapMSwitch-TRANSITIONTIME", + sTransitionTime = Switch._getCssParameter(sParamTransitionTime); + + // the milliseconds takes the transition from one state to another + Switch._TRANSITIONTIME = Number(sTransitionTime) || 0; + + // the position of the inner HTML element whether the switch is "ON" + Switch._ONPOSITION = Number(Switch._getCssParameter("sapMSwitch-ONPOSITION")); + + // the position of the inner HTML element whether the switch is "OFF" + Switch._OFFPOSITION = Number(Switch._getCssParameter("sapMSwitch-OFFPOSITION")); + + // swap point + Switch._SWAPPOINT = Math.abs((Switch._ONPOSITION - Switch._OFFPOSITION) / 2); + + // resource bundle + Switch._oRb = sap.ui.getCore().getLibraryResourceBundle("sap.m"); + + /* =========================================================== */ + /* Lifecycle methods */ + /* =========================================================== */ + + /** + * Required adaptations before rendering. + * + * @private + */ + Switch.prototype.onBeforeRendering = function() { + var Swt = Switch; + + this._sOn = this.getCustomTextOn() || Swt._oRb.getText("SWITCH_ON"); + this._sOff = this.getCustomTextOff() || Swt._oRb.getText("SWITCH_OFF"); + }; + + /* =========================================================== */ + /* Event handlers */ + /* =========================================================== */ + + /** + * Handle the touch start event happening on the switch. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + Switch.prototype.ontouchstart = function(oEvent) { + var oTargetTouch = oEvent.targetTouches[0], + CSS_CLASS = SwitchRenderer.CSS_CLASS, + $SwitchInner = this.$("inner"); + + // mark the event for components that needs to know if the event was handled by the Switch + oEvent.setMarked(); + + // only process single touches (only the first active touch point) + if (sap.m.touch.countContained(oEvent.touches, this.getId()) > 1 || + !this.getEnabled() || + + // detect which mouse button caused the event and only process the standard click + // (this is usually the left button, oEvent.button === 0 for standard click) + // note: if the current event is a touch event oEvent.button property will be not defined + oEvent.button) { + + return; + } + + // track the id of the first active touch point + this._iActiveTouchId = oTargetTouch.identifier; + + // note: force ie browsers to set the focus to switch + jQuery.sap.delayedCall(0, this, "focus"); + + // add active state + this.$("switch").addClass(CSS_CLASS + "Pressed") + .removeClass(CSS_CLASS + "Trans"); + + this._bTempState = this.getState(); + this._iStartPressPosX = oTargetTouch.pageX; + this._iPosition = $SwitchInner.position().left; + + // track movement to determine if the interaction was a click or a tap + this._bDragging = false; + }; + + /** + * Handle the touch move event on the switch. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + Switch.prototype.ontouchmove = function(oEvent) { + + // mark the event for components that needs to know if the event was handled by the Switch + oEvent.setMarked(); + + // note: prevent native document scrolling + oEvent.preventDefault(); + + var oTouch, + iPosition, + fnTouch = sap.m.touch; + + if (!this.getEnabled() || + + // detect which mouse button caused the event and only process the standard click + // (this is usually the left button, oEvent.button === 0 for standard click) + // note: if the current event is a touch event oEvent.button property will be not defined + oEvent.button) { + + return; + } + + // only process single touches (only the first active touch point), + // the active touch has to be in the list of touches + jQuery.sap.assert(fnTouch.find(oEvent.touches, this._iActiveTouchId), "missing touchend"); + + // find the active touch point + oTouch = fnTouch.find(oEvent.changedTouches, this._iActiveTouchId); + + // only process the active touch + if (!oTouch || + + // note: do not rely on a specific granularity of the touchmove event. + // On windows 8 surfaces, the touchmove events are dispatched even if + // the user doesn’t move the touch point along the surface. + oTouch.pageX === this._iStartPressPosX) { + + return; + } + + // interaction was not a click or a tap + this._bDragging = true; + + iPosition = ((this._iStartPressPosX - oTouch.pageX) * -1) + this._iPosition; + + // RTL mirror + if (sap.ui.getCore().getConfiguration().getRTL()) { + iPosition = -iPosition; + } + + this._slide(iPosition); + }; + + /** + * Handle the touch end event on the switch. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + Switch.prototype.ontouchend = function(oEvent) { + + // mark the event for components that needs to know if the event was handled by the Switch + oEvent.setMarked(); + + var oTouch, + fnTouch = sap.m.touch, + assert = jQuery.sap.assert; + + if (!this.getEnabled() || + + // detect which mouse button caused the event and only process the standard click + // (this is usually the left button, oEvent.button === 0 for standard click) + // note: if the current event is a touch event oEvent.button property will be not defined + oEvent.button) { + + return; + } + + // only process single touches (only the first active touch) + assert(this._iActiveTouchId !== undefined, "expect to already be touching"); + + // find the active touch point + oTouch = fnTouch.find(oEvent.changedTouches, this._iActiveTouchId); + + // process this event only if the touch we're tracking has changed + if (oTouch) { + + // the touchend for the touch we're monitoring + assert(!fnTouch.find(oEvent.touches, this._iActiveTouchId), "touchend still active"); + + // remove active state + this.$("switch").removeClass(SwitchRenderer.CSS_CLASS + "Pressed"); + + // note: update the DOM before the change event is fired for better user experience + this._setDomState(this._bDragging ? this._bTempState : !this.getState()); + + // fire the change event after the CSS transition is completed + jQuery.sap.delayedCall(Switch._TRANSITIONTIME, this, function() { + var bState = this.getState(); + + // change the state + this.setState(this._bDragging ? this._bTempState : !bState); + + if (bState !== this.getState()) { + this.fireChange({ state: this.getState() }); + } + }); + } + }; + + /** + * Handle the touchcancel event on the switch. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + Switch.prototype.ontouchcancel = Switch.prototype.ontouchend; + + /** + * Handle when the space or enter key are pressed. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + Switch.prototype.onsapselect = function(oEvent) { + var bState; + + if (this.getEnabled()) { + + // mark the event for components that needs to know if the event was handled by the Switch + oEvent.setMarked(); + + // note: prevent document scrolling when space keys is pressed + oEvent.preventDefault(); + + this.setState(!this.getState()); + + bState = this.getState(); + + // fire the change event after the CSS transition is completed + jQuery.sap.delayedCall(Switch._TRANSITIONTIME, this, function() { + this.fireChange({ state: bState }); + }); + } + }; + + /* =========================================================== */ + /* API method */ + /* =========================================================== */ + + /** + * Change the switch state between on and off. + * + * @param {boolean} bState + * @public + * @return {sap.m.Switch} this to allow method chaining. + */ + Switch.prototype.setState = function(bState) { + this.setProperty("state", bState, true); + this._setDomState(this.getState()); + return this; + }; + + return Switch; + + }, /* bExport= */ true); \ No newline at end of file diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Switch.js b/DVHMA-OpenUI5/www/resources/sap/m/Switch.js new file mode 100644 index 0000000..bf51666 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Switch.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./SwitchRenderer','./library','sap/ui/core/Control','sap/ui/core/EnabledPropagator','sap/ui/core/IconPool','sap/ui/core/theming/Parameters'],function(q,S,l,C,E,I,P){"use strict";var a=C.extend("sap.m.Switch",{metadata:{library:"sap.m",properties:{state:{type:"boolean",group:"Misc",defaultValue:false},customTextOn:{type:"string",group:"Misc",defaultValue:""},customTextOff:{type:"string",group:"Misc",defaultValue:""},enabled:{type:"boolean",group:"Data",defaultValue:true},name:{type:"string",group:"Misc",defaultValue:""},type:{type:"sap.m.SwitchType",group:"Appearance",defaultValue:sap.m.SwitchType.Default}},associations:{ariaLabelledBy:{type:"sap.ui.core.Control",multiple:true,singularName:"ariaLabelledBy"}},events:{change:{parameters:{state:{type:"boolean"}}}}}});I.insertFontFaceStyle();E.apply(a.prototype,[true]);a.prototype._slide=function(i){if(i>a._OFFPOSITION){i=a._OFFPOSITION;}else if(i1||!this.getEnabled()||e.button){return;}this._iActiveTouchId=T.identifier;q.sap.delayedCall(0,this,"focus");this.$("switch").addClass(b+"Pressed").removeClass(b+"Trans");this._bTempState=this.getState();this._iStartPressPosX=T.pageX;this._iPosition=s.position().left;this._bDragging=false;};a.prototype.ontouchmove=function(e){e.setMarked();e.preventDefault();var T,i,f=sap.m.touch;if(!this.getEnabled()||e.button){return;}T=f.find(e.changedTouches,this._iActiveTouchId);if(!T||T.pageX===this._iStartPressPosX){return;}this._bDragging=true;i=((this._iStartPressPosX-T.pageX)*-1)+this._iPosition;if(sap.ui.getCore().getConfiguration().getRTL()){i=-i;}this._slide(i);};a.prototype.ontouchend=function(e){e.setMarked();var T,f=sap.m.touch,b=q.sap.assert;if(!this.getEnabled()||e.button){return;}b(this._iActiveTouchId!==undefined,"expect to already be touching");T=f.find(e.changedTouches,this._iActiveTouchId);if(T){b(!f.find(e.touches,this._iActiveTouchId),"touchend still active");this.$("switch").removeClass(S.CSS_CLASS+"Pressed");this._setDomState(this._bDragging?this._bTempState:!this.getState());q.sap.delayedCall(a._TRANSITIONTIME,this,function(){var s=this.getState();this.setState(this._bDragging?this._bTempState:!s);if(s!==this.getState()){this.fireChange({state:this.getState()});}});}};a.prototype.ontouchcancel=a.prototype.ontouchend;a.prototype.onsapselect=function(e){var s;if(this.getEnabled()){e.setMarked();e.preventDefault();this.setState(!this.getState());s=this.getState();q.sap.delayedCall(a._TRANSITIONTIME,this,function(){this.fireChange({state:s});});}};a.prototype.setState=function(s){this.setProperty("state",s,true);this._setDomState(this.getState());return this;};return a;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/SwitchRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/SwitchRenderer-dbg.js new file mode 100644 index 0000000..4a23639 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/SwitchRenderer-dbg.js @@ -0,0 +1,240 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define(['jquery.sap.global'], + function(jQuery) { + "use strict"; + + /** + * Switch renderer. + * @namespace + */ + var SwitchRenderer = {}; + + /** + * CSS class to be applied to the HTML root element of the Switch control. + * + * @type {string} + */ + SwitchRenderer.CSS_CLASS = "sapMSwt"; + + /** + * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}. + * + * @param {sap.ui.core.RenderManager} oRm The RenderManager that can be used for writing to the Render-Output-Buffer. + * @param {sap.ui.core.Control} oSwitch An object representation of the control that should be rendered. + */ + SwitchRenderer.render = function(oRm, oSwitch) { + var bState = oSwitch.getState(), + sState = bState ? oSwitch._sOn : oSwitch._sOff, + sTooltip = oSwitch.getTooltip_AsString(), + bEnabled = oSwitch.getEnabled(), + sName = oSwitch.getName(), + CSS_CLASS = SwitchRenderer.CSS_CLASS; + + oRm.write(""); + + // text + this.renderText(oRm, oSwitch); + + // handle + this.renderHandle(oRm, oSwitch, sState); + + oRm.write(""); + oRm.write(""); + + if (sName) { + + // checkbox + this.renderCheckbox(oRm, oSwitch, sState); + } + + oRm.write(""); + }; + + SwitchRenderer.renderText = function(oRm, oSwitch) { + var CSS_CLASS = SwitchRenderer.CSS_CLASS, + bType = oSwitch.getType(), + bDefaultType = bType === sap.m.SwitchType.Default, + bAcceptRejectType = bType === sap.m.SwitchType.AcceptReject, + bState = oSwitch.getState(), + bAccessibility = sap.ui.getCore().getConfiguration().getAccessibility(), + oRb = oSwitch.constructor._oRb; + + // on + oRm.write(""); + oRm.write(""); + + if (bDefaultType) { + oRm.writeEscaped(oSwitch._sOn); + } + + oRm.write(""); + + if (bAcceptRejectType && bAccessibility) { + this.renderInvisibleElement(oRm, oSwitch, oRb.getText("SWITCH_ARIA_ACCEPT")); + } + + oRm.write(""); + + // off + oRm.write(""); + oRm.write(""); + + if (bDefaultType) { + oRm.writeEscaped(oSwitch._sOff); + } + + oRm.write(""); + + if (bAcceptRejectType && bAccessibility) { + this.renderInvisibleElement(oRm, oSwitch, oRb.getText("SWITCH_ARIA_REJECT")); + } + + oRm.write(""); + }; + + SwitchRenderer.renderHandle = function(oRm, oSwitch, sState) { + var CSS_CLASS = SwitchRenderer.CSS_CLASS; + + oRm.write(""); + }; + + SwitchRenderer.renderCheckbox = function(oRm, oSwitch, sState) { + oRm.write('"); + }; + + /** + * Writes the accessibility state. + * To be overwritten by subclasses. + * + * @param {sap.ui.core.RenderManager} oRm The RenderManager that can be used for writing to the render output buffer. + * @param {sap.ui.core.Control} oSwitch An object representation of the control that should be rendered. + */ + SwitchRenderer.writeAccessibilityState = function(oRm, oSwitch) { + var sLabelledbyId = oSwitch.getId() + (oSwitch.getState() ? "-texton" : "-textoff"); + + oRm.writeAccessibilityState(oSwitch, { + role: "checkbox", + checked: oSwitch.getState(), + live: "assertive", + labelledby: { + value: sLabelledbyId, + append: true + } + }); + }; + + /** + * Writes an invisible span element with a text node that is referenced in the ariaLabelledBy + * associations for screen reader announcement. + * To be overwritten by subclasses. + * + * @param {sap.ui.core.RenderManager} oRm The RenderManager that can be used for writing to the render output buffer. + * @param {sap.ui.core.Control} oSwitch An object representation of the control that should be rendered. + * @param {string} sText + */ + SwitchRenderer.renderInvisibleElement = function(oRm, oSwitch, sText) { + oRm.write('"); + }; + + return SwitchRenderer; + + }, /* bExport= */ true); \ No newline at end of file diff --git a/DVHMA-OpenUI5/www/resources/sap/m/SwitchRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/SwitchRenderer.js new file mode 100644 index 0000000..fe0c11a --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/SwitchRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var S={};S.CSS_CLASS="sapMSwt";S.render=function(r,s){var b=s.getState(),a=b?s._sOn:s._sOff,t=s.getTooltip_AsString(),e=s.getEnabled(),n=s.getName(),C=S.CSS_CLASS;r.write("");this.renderText(r,s);this.renderHandle(r,s,a);r.write("");r.write("");if(n){this.renderCheckbox(r,s,a);}r.write("");};S.renderText=function(r,s){var C=S.CSS_CLASS,t=s.getType(),d=t===sap.m.SwitchType.Default,a=t===sap.m.SwitchType.AcceptReject,b=s.getState(),A=sap.ui.getCore().getConfiguration().getAccessibility(),R=s.constructor._oRb;r.write("");r.write("");if(d){r.writeEscaped(s._sOn);}r.write("");if(a&&A){this.renderInvisibleElement(r,s,R.getText("SWITCH_ARIA_ACCEPT"));}r.write("");r.write("");r.write("");if(d){r.writeEscaped(s._sOff);}r.write("");if(a&&A){this.renderInvisibleElement(r,s,R.getText("SWITCH_ARIA_REJECT"));}r.write("");};S.renderHandle=function(r,s,a){var C=S.CSS_CLASS;r.write("");};S.renderCheckbox=function(r,s,a){r.write('");};S.writeAccessibilityState=function(r,s){var l=s.getId()+(s.getState()?"-texton":"-textoff");r.writeAccessibilityState(s,{role:"checkbox",checked:s.getState(),live:"assertive",labelledby:{value:l,append:true}});};S.renderInvisibleElement=function(r,s,t){r.write('");};return S;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Table-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/Table-dbg.js new file mode 100644 index 0000000..130e3df --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Table-dbg.js @@ -0,0 +1,544 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.Table. +sap.ui.define(['jquery.sap.global', './ListBase', './library'], + function(jQuery, ListBase, library) { + "use strict"; + + + + /** + * Constructor for a new Table. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * The Table control provides a set of sophisticated and convenience functions for responsive table design. + * For mobile devices, the recommended limit of table rows is 100(based on 4 columns) to assure proper performance. To improve initial rendering on large tables, use the "growing" feature. Please refer to the SAPUI5 Developer Guide for more information + * @extends sap.m.ListBase + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.16 + * @alias sap.m.Table + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var Table = ListBase.extend("sap.m.Table", /** @lends sap.m.Table.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * This property is used to set the background color of the table. Depending on the theme you can change the state of the background from "Solid" over "Translucent" to "Transparent". + */ + backgroundDesign : {type : "sap.m.BackgroundDesign", group : "Appearance", defaultValue : sap.m.BackgroundDesign.Translucent}, + + /** + * Defines the algorithm to be used to layout the table cells, rows, and columns. + * + * If you set this property to false, then table is rendered with "auto" layout algorithm. This means, the width of the table and its cells depends on the content thereof. The column width is set by the widest unbreakable content in the cells. This can make the rendering slow, since the browser needs to read through all the content in the table, before determining the final layout. + * Note: Since table does not have own scroll container, setting fixedLayout to false can force the table to overflow and this can cause visual problems. So, we highly suggest to use this property when table has a few columns in wide screens or horizontal scroll container(e.g Dialog, Popover) to handle overflow. + * Please note that with "auto" layout mode Column width property is taken into account as minimum width. + * + * By default, table is rendered with "fixed" layout algorithm. This means the horizontal layout only depends on the table's width and the width of the columns, not the contents of the cells. Cells in subsequent rows do not affect column widths. This allows a browser to layout the table faster than the auto table layout since the browser can begin to display the table once the first row has been analyzed. + * @since 1.22 + */ + fixedLayout : {type : "boolean", group : "Behavior", defaultValue : true}, + + /** + * Setting this property to true will show an overlay on top of the Table content and users cannot click anymore on the Table content. + * @since 1.22.1 + */ + showOverlay : {type : "boolean", group : "Appearance", defaultValue : false} + }, + aggregations : { + + /** + * Columns of the Table + */ + columns : {type : "sap.m.Column", multiple : true, singularName : "column"} + } + }}); + + // class name for the navigation items + Table.prototype.sNavItemClass = "sapMListTblRow"; + + Table.prototype.init = function() { + this._hasPopin = false; + this._iItemNeedsColumn = 0; + this._selectAllCheckBox = null; + ListBase.prototype.init.call(this); + }; + + Table.prototype.onBeforeRendering = function() { + ListBase.prototype.onBeforeRendering.call(this); + this._notifyColumns("ItemsRemoved"); + }; + + Table.prototype.onAfterRendering = function() { + ListBase.prototype.onAfterRendering.call(this); + + // notify columns after rendering + var $Table = jQuery(this.getTableDomRef()); + this._notifyColumns("ColumnRendered", $Table, !this.getFixedLayout()); + + this.updateSelectAllCheckbox(); + this._renderOverlay(); + }; + + Table.prototype._renderOverlay = function() { + var $this = this.$(), + $overlay = $this.find(".sapMTableOverlay"), + bShowOverlay = this.getShowOverlay(); + if (bShowOverlay && $overlay.length === 0) { + $overlay = jQuery("
").addClass("sapUiOverlay sapMTableOverlay").css("z-index", "1"); + $this.append($overlay); + } else if (!bShowOverlay) { + $overlay.remove(); + } + }; + + Table.prototype.setShowOverlay = function(bShow) { + this.setProperty("showOverlay", bShow, true); + this._renderOverlay(); + return this; + }; + + Table.prototype.exit = function () { + ListBase.prototype.exit.call(this); + if (this._selectAllCheckBox) { + this._selectAllCheckBox.destroy(); + this._selectAllCheckBox = null; + } + }; + + Table.prototype.destroyAggregation = function(sAggregationName) { + sAggregationName == "items" && this._notifyColumns("ItemsRemoved"); + return ListBase.prototype.destroyAggregation.apply(this, arguments); + }; + + Table.prototype.removeAllAggregation = function(sAggregationName) { + sAggregationName == "items" && this._notifyColumns("ItemsRemoved"); + return ListBase.prototype.removeAllAggregation.apply(this, arguments); + }; + + Table.prototype.removeSelections = function() { + ListBase.prototype.removeSelections.apply(this, arguments); + this.updateSelectAllCheckbox(); + return this; + }; + + Table.prototype.selectAll = function () { + ListBase.prototype.selectAll.apply(this, arguments); + this.updateSelectAllCheckbox(); + return this; + }; + + /** + * Getter for aggregation columns. + * + * @param {Boolean} [bSort] set true to get the columns in an order that respects personalization settings + * @returns {sap.m.Column[]} columns of the Table + * @public + */ + Table.prototype.getColumns = function(bSort) { + var aColumns = this.getAggregation("columns", []); + if (bSort) { + aColumns.sort(function(c1, c2) { + return c1.getOrder() - c2.getOrder(); + }); + } + return aColumns; + }; + + /* + * This hook method is called if growing feature is enabled and after new page loaded + * @overwrite + */ + Table.prototype.onAfterPageLoaded = function() { + this.updateSelectAllCheckbox(); + ListBase.prototype.onAfterPageLoaded.apply(this, arguments); + }; + + /* + * This hook method is called from renderer to determine whether items should render or not + * @overwrite + */ + Table.prototype.shouldRenderItems = function() { + return this.getColumns().some(function(oColumn) { + return oColumn.getVisible(); + }); + }; + + // this gets called when item type column requirement is changed + Table.prototype.onItemTypeColumnChange = function(oItem, bNeedsTypeColumn) { + this._iItemNeedsColumn += (bNeedsTypeColumn ? 1 : -1); + + // update type column visibility + if (this._iItemNeedsColumn == 1 && bNeedsTypeColumn) { + this._setTypeColumnVisibility(true); + } else if (this._iItemNeedsColumn == 0) { + this._setTypeColumnVisibility(false); + } + }; + + // this gets called when selected property of the item is changed + Table.prototype.onItemSelectedChange = function(oItem, bSelect) { + ListBase.prototype.onItemSelectedChange.apply(this, arguments); + jQuery.sap.delayedCall(0, this, function() { + this.updateSelectAllCheckbox(); + }); + }; + + // Handle pop-in touch start events for active feedback + Table.prototype.ontouchstart = function(oEvent) { + ListBase.prototype.ontouchstart.call(this, oEvent); + this._handlePopinEvent(oEvent); + }; + + // Handle pop-in touch end events for active feedback + Table.prototype.ontouchend = function(oEvent) { + this._handlePopinEvent(oEvent); + }; + + // Android cancels touch events by native scrolling, deactivate popin + Table.prototype.ontouchcancel = Table.prototype.ontouchend; + + // Handle pop-in touch move events for active feedback + Table.prototype.ontouchmove = function(oEvent) { + this._handlePopinEvent(oEvent); + }; + + // Handle pop-in tap events for active feedback + Table.prototype.ontap = function(oEvent) { + this._handlePopinEvent(oEvent); + }; + + /* + * Returns the DOM reference + * @protected + */ + Table.prototype.getTableDomRef = function() { + return this.getDomRef("listUl"); + }; + + /* + * Returns items container DOM reference + * @overwrite + */ + Table.prototype.getItemsContainerDomRef = function() { + return this.getDomRef("tblBody"); + }; + + /* + * Sets DOM References for keyboard navigation + * @overwrite + */ + Table.prototype.setNavigationItems = function(oItemNavigation) { + var $Header = this.$("tblHeader"); + var $Footer = this.$("tblFooter"); + var $Rows = this.$("tblBody").find(".sapMLIB"); + + var aItemDomRefs = $Header.add($Rows).add($Footer).get(); + this._oItemNavigation.setItemDomRefs(aItemDomRefs); + + // header and footer are in the item navigation but + // initial focus should be at the first item row + if (oItemNavigation.getFocusedIndex() == -1) { + oItemNavigation.setFocusedIndex($Header[0] ? 1 : 0); + } + }; + + /* + * Determines for growing feature to handle all data from scratch + * if column merging and growing feature are active at the same time + * it is complicated to remerge or demerge columns when we + * insert or delete items from the table with growing diff logic + * + * @protected + */ + Table.prototype.checkGrowingFromScratch = function() { + // no merging for popin case + if (this.hasPopin()) { + return false; + } + + // check visibility and merge feature of columns + return this.getColumns().some(function(oColumn) { + return oColumn.getVisible() && oColumn.getMergeDuplicates(); + }); + }; + + /* + * This method is called asynchronously if resize event comes from column + * @protected + */ + Table.prototype.onColumnResize = function(oColumn) { + // if list did not have pop-in and will not have pop-in + // then we do not need re-render, we can just change display of column + if (!this.hasPopin() && !this._mutex) { + var hasPopin = this.getColumns().some(function(col) { + return col.isPopin(); + }); + + if (!hasPopin) { + oColumn.setDisplayViaMedia(this.getTableDomRef()); + return; + } + } + + this._dirty = window.innerWidth; + if (!this._mutex) { + var clean = window.innerWidth; + this._mutex = true; + this.rerender(); + + // do not re-render if resize event comes so frequently + jQuery.sap.delayedCall(200, this, function() { + // but check if any event come during the wait-time + if (Math.abs(this._dirty - clean) > 10) { + this._dirty = 0; + this.rerender(); + } + this._mutex = false; + }); + } + }; + + /* + * This method is called from Column control when column visibility is changed via CSS media query + * + * @param {boolean} bColVisible whether column is now visible or not + * @protected + */ + Table.prototype.setTableHeaderVisibility = function(bColVisible) { + if (!this.getDomRef()) { + return; + } + + // find first visible column + var $table = jQuery(this.getTableDomRef()), + $headRow = $table.find("thead > tr"), + bHeaderVisible = !$headRow.hasClass("sapMListTblHeaderNone"), + aVisibleColumns = $headRow.find(".sapMListTblCell").filter(":visible"), + $firstVisibleCol = aVisibleColumns.eq(0); + + // check if only one column is visible + if (aVisibleColumns.length == 1) { + $firstVisibleCol.width(""); // cover the space + } else { + $firstVisibleCol.width($firstVisibleCol.attr("data-sap-width")); + } + + // update GroupHeader colspan according to visible column count + $table.find(".sapMGHLICell").attr("colspan", aVisibleColumns.length); + + // remove or show column header row(thead) according to column visibility value + if (!bColVisible && bHeaderVisible) { + $headRow[0].className = "sapMListTblRow sapMListTblHeader"; + this._headerHidden = false; + } else if (bColVisible && !bHeaderVisible && !aVisibleColumns.length) { + $headRow[0].className = "sapMListTblHeaderNone"; + this._headerHidden = true; + } + }; + + // updates the type column visibility and sets the aria flag + Table.prototype._setTypeColumnVisibility = function(bVisible) { + var $Table = jQuery(this.getTableDomRef()), + $TypeColumnHeader = this.$("tblHeadNav"), + iTypeColumnIndex = $TypeColumnHeader.index() + 1, + $TypeColumnCells = $Table.find("tr > td:nth-child(" + iTypeColumnIndex + ")"); + + $Table.toggleClass("sapMListTblHasNav", bVisible); + $TypeColumnHeader.attr("aria-hidden", !bVisible); + $TypeColumnCells.attr("aria-hidden", !bVisible); + }; + + // notify all columns with given action and param + Table.prototype._notifyColumns = function(sAction, vParam1, vParam2) { + this.getColumns().forEach(function(oColumn) { + oColumn["on" + sAction](vParam1, vParam2); + }); + }; + + // pass pop-in events to ColumnListItem + Table.prototype._handlePopinEvent = function(oEvent, bRowOnly) { + if (bRowOnly && !sap.m.ColumnListItem.isPopinFocused()) { + return; + } + + if (this.hasPopin()) { + return sap.m.ColumnListItem.handleEvents(oEvent, this.getItemsContainerDomRef()); + } + }; + + /** + * This method takes care of the select all checkbox for table lists. It + * will automatically be created on demand and returned when needed + * + * @private + * @return {sap.m.CheckBox} reference to the internal select all checkbox + */ + Table.prototype._getSelectAllCheckbox = function() { + return this._selectAllCheckBox || (this._selectAllCheckBox = new sap.m.CheckBox(this.getId("sa"), { + activeHandling : false + }).setParent(this, null, true).attachSelect(function () { + if (this._selectAllCheckBox.getSelected()) { + this.selectAll(true); + } else { + this.removeSelections(false, true); + } + }, this).setTabIndex(-1)); + }; + + /* + * Internal public function to update the selectAll checkbox + * according to the current selection on the list items. + * + * @protected + */ + Table.prototype.updateSelectAllCheckbox = function () { + // checks if the list is in multi select mode and has selectAll checkbox + if (this._selectAllCheckBox && this.getMode() === "MultiSelect") { + var aItems = this.getItems(), + iSelectedItemCount = this.getSelectedItems().length, + iSelectableItemCount = aItems.filter(function(oItem) { + return oItem.isSelectable(); + }).length; + + // set state of the checkbox by comparing item length and selected item length + this._selectAllCheckBox.setSelected(aItems.length > 0 && iSelectedItemCount == iSelectableItemCount); + } + }; + + /* + * Returns colspan for all columns except navigation + * Because we render navigation always even it is empty + * @protected + */ + Table.prototype.getColSpan = function() { + return (this._colCount || 1 ) - 1; + }; + + /* + * Returns the number of total columns + * @protected + */ + Table.prototype.getColCount = function() { + return (this._colCount || 0); + }; + + /* + * Returns whether or not the table is in pop-in mode + * @protected + */ + Table.prototype.hasPopin = function() { + return !!this._hasPopin; + }; + + /* + * Returns whether given event is initialized within header row or not + * @protected + */ + Table.prototype.isHeaderRowEvent = function(oEvent) { + var $Header = this.$("tblHeader"); + return !!jQuery(oEvent.target).closest($Header, this.getTableDomRef()).length; + }; + + /* + * Returns whether give event is initialized within footer row or not + * @protected + */ + Table.prototype.isFooterRowEvent = function(oEvent) { + var $Footer = this.$("tblFooter"); + return !!jQuery(oEvent.target).closest($Footer, this.getTableDomRef()).length; + }; + + // this gets called after navigation items are focused + Table.prototype.onNavigationItemFocus = function(oEvent) { + var iIndex = oEvent.getParameter("index"), + aItemDomRefs = this._oItemNavigation.getItemDomRefs(), + oItemDomRef = aItemDomRefs[iIndex]; + + if (this.getItemsContainerDomRef().contains(oItemDomRef)) { + ListBase.prototype.onNavigationItemFocus.call(this, oEvent, !this._headerHidden, this._hasFooter); + } else { + this.getNavigationRoot().removeAttribute("aria-activedescendant"); + } + }; + + // keyboard handling + Table.prototype.onsapspace = function(oEvent) { + if (oEvent.isMarked()) { + return; + } + + // toggle select all header checkbox and fire its event + if (oEvent.target === this.getDomRef("tblHeader") && this._selectAllCheckBox) { + this._selectAllCheckBox.setSelected(!this._selectAllCheckBox.getSelected()).fireSelect(); + oEvent.preventDefault(); + oEvent.setMarked(); + } + + // handle space event for pop-ins + this._handlePopinEvent(oEvent, true); + }; + + // Handle enter event for pop-ins + Table.prototype.onsapenter = function(oEvent) { + this._handlePopinEvent(oEvent, true); + }; + + // Handle delete event for pop-ins + Table.prototype.onsapdelete = function(oEvent) { + this._handlePopinEvent(oEvent, true); + }; + + // Handle tab key + Table.prototype.onsaptabnext = function(oEvent) { + if (this._handlePopinEvent(oEvent)) { + return; + } + + var $Row = jQuery(); + if (oEvent.target.id == this.getId("nodata")) { + $Row = this.$("nodata"); + } if (this.isHeaderRowEvent(oEvent)) { + $Row = this.$("tblHeader"); + } else if (this.isFooterRowEvent(oEvent)) { + $Row = this.$("tblFooter"); + } + + var oLastTabbableDomRef = $Row.find(":sapTabbable").get(-1) || $Row[0]; + if (oEvent.target === oLastTabbableDomRef) { + this.forwardTab(true); + } + }; + + // Handle shift-tab key + Table.prototype.onsaptabprevious = function(oEvent) { + var sTargetId = oEvent.target.id; + if (sTargetId == this.getId("nodata") || + sTargetId == this.getId("tblHeader") || + sTargetId == this.getId("tblFooter")) { + this.forwardTab(false); + } else if (sTargetId == this.getId("trigger")) { + this.focusPrevious(); + oEvent.preventDefault(); + } else { + this._handlePopinEvent(oEvent); + } + }; + + return Table; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Table.js b/DVHMA-OpenUI5/www/resources/sap/m/Table.js new file mode 100644 index 0000000..740de51 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Table.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./ListBase','./library'],function(q,L,l){"use strict";var T=L.extend("sap.m.Table",{metadata:{library:"sap.m",properties:{backgroundDesign:{type:"sap.m.BackgroundDesign",group:"Appearance",defaultValue:sap.m.BackgroundDesign.Translucent},fixedLayout:{type:"boolean",group:"Behavior",defaultValue:true},showOverlay:{type:"boolean",group:"Appearance",defaultValue:false}},aggregations:{columns:{type:"sap.m.Column",multiple:true,singularName:"column"}}}});T.prototype.sNavItemClass="sapMListTblRow";T.prototype.init=function(){this._hasPopin=false;this._iItemNeedsColumn=0;this._selectAllCheckBox=null;L.prototype.init.call(this);};T.prototype.onBeforeRendering=function(){L.prototype.onBeforeRendering.call(this);this._notifyColumns("ItemsRemoved");};T.prototype.onAfterRendering=function(){L.prototype.onAfterRendering.call(this);var t=q(this.getTableDomRef());this._notifyColumns("ColumnRendered",t,!this.getFixedLayout());this.updateSelectAllCheckbox();this._renderOverlay();};T.prototype._renderOverlay=function(){var $=this.$(),a=$.find(".sapMTableOverlay"),s=this.getShowOverlay();if(s&&a.length===0){a=q("
").addClass("sapUiOverlay sapMTableOverlay").css("z-index","1");$.append(a);}else if(!s){a.remove();}};T.prototype.setShowOverlay=function(s){this.setProperty("showOverlay",s,true);this._renderOverlay();return this;};T.prototype.exit=function(){L.prototype.exit.call(this);if(this._selectAllCheckBox){this._selectAllCheckBox.destroy();this._selectAllCheckBox=null;}};T.prototype.destroyAggregation=function(a){a=="items"&&this._notifyColumns("ItemsRemoved");return L.prototype.destroyAggregation.apply(this,arguments);};T.prototype.removeAllAggregation=function(a){a=="items"&&this._notifyColumns("ItemsRemoved");return L.prototype.removeAllAggregation.apply(this,arguments);};T.prototype.removeSelections=function(){L.prototype.removeSelections.apply(this,arguments);this.updateSelectAllCheckbox();return this;};T.prototype.selectAll=function(){L.prototype.selectAll.apply(this,arguments);this.updateSelectAllCheckbox();return this;};T.prototype.getColumns=function(s){var c=this.getAggregation("columns",[]);if(s){c.sort(function(a,b){return a.getOrder()-b.getOrder();});}return c;};T.prototype.onAfterPageLoaded=function(){this.updateSelectAllCheckbox();L.prototype.onAfterPageLoaded.apply(this,arguments);};T.prototype.shouldRenderItems=function(){return this.getColumns().some(function(c){return c.getVisible();});};T.prototype.onItemTypeColumnChange=function(i,n){this._iItemNeedsColumn+=(n?1:-1);if(this._iItemNeedsColumn==1&&n){this._setTypeColumnVisibility(true);}else if(this._iItemNeedsColumn==0){this._setTypeColumnVisibility(false);}};T.prototype.onItemSelectedChange=function(i,s){L.prototype.onItemSelectedChange.apply(this,arguments);q.sap.delayedCall(0,this,function(){this.updateSelectAllCheckbox();});};T.prototype.ontouchstart=function(e){L.prototype.ontouchstart.call(this,e);this._handlePopinEvent(e);};T.prototype.ontouchend=function(e){this._handlePopinEvent(e);};T.prototype.ontouchcancel=T.prototype.ontouchend;T.prototype.ontouchmove=function(e){this._handlePopinEvent(e);};T.prototype.ontap=function(e){this._handlePopinEvent(e);};T.prototype.getTableDomRef=function(){return this.getDomRef("listUl");};T.prototype.getItemsContainerDomRef=function(){return this.getDomRef("tblBody");};T.prototype.setNavigationItems=function(i){var h=this.$("tblHeader");var f=this.$("tblFooter");var r=this.$("tblBody").find(".sapMLIB");var I=h.add(r).add(f).get();this._oItemNavigation.setItemDomRefs(I);if(i.getFocusedIndex()==-1){i.setFocusedIndex(h[0]?1:0);}};T.prototype.checkGrowingFromScratch=function(){if(this.hasPopin()){return false;}return this.getColumns().some(function(c){return c.getVisible()&&c.getMergeDuplicates();});};T.prototype.onColumnResize=function(c){if(!this.hasPopin()&&!this._mutex){var h=this.getColumns().some(function(b){return b.isPopin();});if(!h){c.setDisplayViaMedia(this.getTableDomRef());return;}}this._dirty=window.innerWidth;if(!this._mutex){var a=window.innerWidth;this._mutex=true;this.rerender();q.sap.delayedCall(200,this,function(){if(Math.abs(this._dirty-a)>10){this._dirty=0;this.rerender();}this._mutex=false;});}};T.prototype.setTableHeaderVisibility=function(c){if(!this.getDomRef()){return;}var $=q(this.getTableDomRef()),a=$.find("thead > tr"),h=!a.hasClass("sapMListTblHeaderNone"),v=a.find(".sapMListTblCell").filter(":visible"),b=v.eq(0);if(v.length==1){b.width("");}else{b.width(b.attr("data-sap-width"));}$.find(".sapMGHLICell").attr("colspan",v.length);if(!c&&h){a[0].className="sapMListTblRow sapMListTblHeader";this._headerHidden=false;}else if(c&&!h&&!v.length){a[0].className="sapMListTblHeaderNone";this._headerHidden=true;}};T.prototype._setTypeColumnVisibility=function(v){var t=q(this.getTableDomRef()),$=this.$("tblHeadNav"),i=$.index()+1,a=t.find("tr > td:nth-child("+i+")");t.toggleClass("sapMListTblHasNav",v);$.attr("aria-hidden",!v);a.attr("aria-hidden",!v);};T.prototype._notifyColumns=function(a,p,P){this.getColumns().forEach(function(c){c["on"+a](p,P);});};T.prototype._handlePopinEvent=function(e,r){if(r&&!sap.m.ColumnListItem.isPopinFocused()){return;}if(this.hasPopin()){return sap.m.ColumnListItem.handleEvents(e,this.getItemsContainerDomRef());}};T.prototype._getSelectAllCheckbox=function(){return this._selectAllCheckBox||(this._selectAllCheckBox=new sap.m.CheckBox(this.getId("sa"),{activeHandling:false}).setParent(this,null,true).attachSelect(function(){if(this._selectAllCheckBox.getSelected()){this.selectAll(true);}else{this.removeSelections(false,true);}},this).setTabIndex(-1));};T.prototype.updateSelectAllCheckbox=function(){if(this._selectAllCheckBox&&this.getMode()==="MultiSelect"){var i=this.getItems(),s=this.getSelectedItems().length,S=i.filter(function(I){return I.isSelectable();}).length;this._selectAllCheckBox.setSelected(i.length>0&&s==S);}};T.prototype.getColSpan=function(){return(this._colCount||1)-1;};T.prototype.getColCount=function(){return(this._colCount||0);};T.prototype.hasPopin=function(){return!!this._hasPopin;};T.prototype.isHeaderRowEvent=function(e){var h=this.$("tblHeader");return!!q(e.target).closest(h,this.getTableDomRef()).length;};T.prototype.isFooterRowEvent=function(e){var f=this.$("tblFooter");return!!q(e.target).closest(f,this.getTableDomRef()).length;};T.prototype.onNavigationItemFocus=function(e){var i=e.getParameter("index"),I=this._oItemNavigation.getItemDomRefs(),o=I[i];if(this.getItemsContainerDomRef().contains(o)){L.prototype.onNavigationItemFocus.call(this,e,!this._headerHidden,this._hasFooter);}else{this.getNavigationRoot().removeAttribute("aria-activedescendant");}};T.prototype.onsapspace=function(e){if(e.isMarked()){return;}if(e.target===this.getDomRef("tblHeader")&&this._selectAllCheckBox){this._selectAllCheckBox.setSelected(!this._selectAllCheckBox.getSelected()).fireSelect();e.preventDefault();e.setMarked();}this._handlePopinEvent(e,true);};T.prototype.onsapenter=function(e){this._handlePopinEvent(e,true);};T.prototype.onsapdelete=function(e){this._handlePopinEvent(e,true);};T.prototype.onsaptabnext=function(e){if(this._handlePopinEvent(e)){return;}var r=q();if(e.target.id==this.getId("nodata")){r=this.$("nodata");}if(this.isHeaderRowEvent(e)){r=this.$("tblHeader");}else if(this.isFooterRowEvent(e)){r=this.$("tblFooter");}var o=r.find(":sapTabbable").get(-1)||r[0];if(e.target===o){this.forwardTab(true);}};T.prototype.onsaptabprevious=function(e){var t=e.target.id;if(t==this.getId("nodata")||t==this.getId("tblHeader")||t==this.getId("tblFooter")){this.forwardTab(false);}else if(t==this.getId("trigger")){this.focusPrevious();e.preventDefault();}else{this._handlePopinEvent(e);}};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TablePersoController-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/TablePersoController-dbg.js new file mode 100644 index 0000000..94f7a54 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TablePersoController-dbg.js @@ -0,0 +1,659 @@ +/* + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides TablePersoController +sap.ui.define(['jquery.sap.global', './TablePersoDialog', 'sap/ui/base/ManagedObject'], + function(jQuery, TablePersoDialog, ManagedObject) { + "use strict"; + + + + /** + * The TablePersoController can be used to connect a table that you want to provide + * a personalization dialog for, with a persistence service such as one provided by + * the unified shell. + * + * @param {string} + * [sId] optional id for the new control; generated automatically if + * no non-empty id is given Note: this can be omitted, no matter + * whether mSettings will be given or not! + * @param {object} + * [mSettings] optional map/JSON-object with initial settings for the + * new component instance + * @public + * + * @class Table Personalization Controller + * @extends sap.ui.base.ManagedObject + * @author SAP + * @version 1.28.5 + * @alias sap.m.TablePersoController + */ + var TablePersoController = ManagedObject.extend("sap.m.TablePersoController", /** @lends sap.m.TablePersoController */ + + { + constructor: function(sId, mSettings) { + + ManagedObject.apply(this, arguments); + + }, + + metadata: { + properties: { + "contentWidth": {type: "sap.ui.core.CSSSize"}, + "contentHeight": {type: "sap.ui.core.CSSSize", defaultValue: "20rem", since: "1.22"}, + "componentName": {type: "string", since: "1.20.2"}, + "hasGrouping": {type: "boolean", defaultValue: false, since: "1.22"}, + "showSelectAll": {type: "boolean", defaultValue: true, since: "1.22"}, + "showResetAll": {type: "boolean", defaultValue: true, since: "1.22"} + }, + aggregations: { + "_tablePersoDialog": { + type: "sap.m.TablePersoDialog", + multiple: false, + visibility: "hidden" + }, + "persoService": { + type: "Object", + multiple: false + } + }, + associations: { + "table": { + type: "sap.m.Table", + multiple: false + }, + "tables": { + type: "sap.m.Table", + multiple: true + } + }, + events: { + personalizationsDone: {} + }, + library: "sap.m" + } + + }); + + + /** + * Initializes the TablePersoController instance after creation. + * + * @protected + */ + TablePersoController.prototype.init = function() { + + // Table Personalization schema + this._schemaProperty = "_persoSchemaVersion"; + this._schemaVersion = "1.0"; + + // To store the intermediate personalization data + this._oPersonalizations = null; + //Initialize delegate map + this._mDelegateMap = {}; + //Initialize table personalization map + this._mTablePersMap = {}; + //Initialize map to contain initial states of all tables + this._mInitialTableStateMap = {}; + //Internal flag which may be checked by clients which + //have workaround for missing event in place + this._triggersPersDoneEvent = true; + + }; + + /** + * Do some clean up: remove event delegates, etc + * + * @protected + */ + TablePersoController.prototype.exit = function() { + + // Clean up onBeforRendering delegates + this._callFunctionForAllTables(jQuery.proxy(function(oTable){ + oTable.removeDelegate(this._mDelegateMap[oTable]); + }, this)); + + delete this._mDelegateMap; + delete this._mTablePersMap; + delete this._mInitialTableStateMap; + }; + + /** + * Activates the controller, i.e. tries to retrieve existing persisted + * personalizations, creates a TablePersoDialog for the associated + * table and attaches a close handler to apply the personalizations to + * the table and persist them. + * @public + */ + TablePersoController.prototype.activate = function() { + + //Remember initial table columns states before personalization + this._callFunctionForAllTables(this._rememberInitialTableStates); + // Add 'onBeforeRendering' delegates to all tables + this._callFunctionForAllTables(this._createAndAddDelegateForTable); + + return this; + }; + + /** + * Returns a _tablePersoDialog instance if available. It can be NULL if + * the controller has not been activated yet. + * + * @public + */ + TablePersoController.prototype.getTablePersoDialog = function() { + return this.getAggregation("_tablePersoDialog"); + }; + + + /** + * Applies the personalizations by getting the existing personalizations + * and adjusting to the table. + * + * @param {object} oTable + * @public + */ + TablePersoController.prototype.applyPersonalizations = function(oTable) { + var oReadPromise = this.getPersoService().getPersData(); + var that = this; + oReadPromise.done(function(oPersData) { + if (!!oPersData) { + that._adjustTable(oPersData, oTable); + } + }); + oReadPromise.fail(function() { + jQuery.sap.log.error("Problem reading persisted personalization data."); + }); + }; + + /** + * Creates 'onBeforeRendering' delegate for given table and adds it to the controller' + * '_mDelegateMap' + * + * @private + */ + TablePersoController.prototype._createAndAddDelegateForTable = function(oTable) { + if (!this._mDelegateMap[oTable]) { + //Use 'jQuery.proxy' to conveniently use 'this' within the + //delegate function + var oTableOnBeforeRenderingDel = {onBeforeRendering : jQuery.proxy(function () { + // Try to retrieve existing persisted personalizations + // and adjust the table + this.applyPersonalizations(oTable); + // This function will be called whenever its table is rendered or + // re-rendered. The TablePersoDialog only needs to be created once, though! + if (!this.getAggregation("_tablePersoDialog")) { + this._createTablePersoDialog(oTable); + } + }, this)}; + //By adding our function as a delegate to the table's 'beforeRendering' event, + //this._fnTableOnBeforeRenderingDel will be executed whenever the table is + //rendered or re-rendered + + oTable.addDelegate(oTableOnBeforeRenderingDel); + //Finally add delegate to map to enable proper housekeeping, i.e. cleaning + //up delegate when TablePersoController instance is destroyed + this._mDelegateMap[oTable] = oTableOnBeforeRenderingDel; + } + }; + + /** + * Creation of the TablePersoDialog based on the content of oTable and + * save the personalizations + * + */ + TablePersoController.prototype._createTablePersoDialog = function(oTable) { + // Create a new TablePersoDialog control for the associated table + var oTablePersoDialog = new TablePersoDialog({ + persoDialogFor: oTable, + persoMap : this._getPersoColumnMap(oTable), + columnInfoCallback: this._tableColumnInfo, + initialColumnState : this._mInitialTableStateMap[oTable], + persoService: this.getPersoService(), + contentWidth: this.getContentWidth(), + contentHeight: this.getContentHeight(), + hasGrouping: this.getHasGrouping(), + showSelectAll: this.getShowSelectAll(), + showResetAll: this.getShowResetAll() + }); + + // Link to this new TablePersoDialog via the aggregation + this.setAggregation("_tablePersoDialog", oTablePersoDialog); + + // When the TablePersoDialog closes, we want to retrieve the personalizations + // made, amend the table, and also persist them + oTablePersoDialog.attachConfirm(jQuery.proxy(function() { + this._oPersonalizations = oTablePersoDialog.retrievePersonalizations(); + this._callFunctionForAllTables(this._personalizeTable); + this.savePersonalizations(); + this.firePersonalizationsDone(); + }, this)); + + }; + + /** + * Adjusts the table by getting the existing personalizations + * and applying them to the table. + * + * @private + */ + TablePersoController.prototype._adjustTable = function(oData, oTable) { + if (oData && oData.hasOwnProperty(this._schemaProperty) && oData[this._schemaProperty] === this._schemaVersion) { + this._oPersonalizations = oData; + if (!!oTable) { + this._personalizeTable(oTable); + } else { + this._callFunctionForAllTables(this._personalizeTable); + } + + } + }; + + + /** + * Personalizes the table, i.e. sets column order and visibility + * according to the stored personalization settings + * + * @private + */ + TablePersoController.prototype._personalizeTable = function(oTable) { + var mPersoMap = this._getPersoColumnMap(oTable); + + //mPersoMap may be null if oTable's id is not static + //or if any of the column ids is not static + if (!!mPersoMap && !!this._oPersonalizations) { + var bDoSaveMigration = false; + // Set order and visibility + for ( var c = 0, cl = this._oPersonalizations.aColumns.length; c < cl; c++) { + var oNewSetting = this._oPersonalizations.aColumns[c]; + var oTableColumn = mPersoMap[oNewSetting.id]; + if (!oTableColumn) { + //Fallback for deprecated personalization procedure + oTableColumn = sap.ui.getCore().byId(oNewSetting.id); + if (!!oTableColumn) { + //migrate old persistence id + jQuery.sap.log.info("Migrating personalization persistence id of column " + oNewSetting.id ); + oNewSetting.id = mPersoMap[oTableColumn]; + bDoSaveMigration = true; + } + } + + if (oTableColumn) { + oTableColumn.setVisible(oNewSetting.visible); + oTableColumn.setOrder(oNewSetting.order); + } else { + jQuery.sap.log.warning("Personalization could not be applied to column " + oNewSetting.id + " - not found!"); + } + } + + if (bDoSaveMigration) { + this.savePersonalizations(); + } + + // Force re-rendering of Table for column reorder + oTable.invalidate(); + } + }; + + + /** + * Persist the personalizations + * + * @public + */ + TablePersoController.prototype.savePersonalizations = function() { + + var oBundle = this._oPersonalizations; + + // Add schema version to bundle + oBundle[this._schemaProperty] = this._schemaVersion; + + // Commit to backend service + var oWritePromise = this.getPersoService().setPersData(oBundle); + oWritePromise.done(function() { + // all OK + }); + oWritePromise.fail(function() { + jQuery.sap.log.error("Problem persisting personalization data."); + }); + + }; + + + /** + * Refresh the personalizations: reloads the personalization information from the table perso + * provider, applies it to the controller's table and updates the controller's table perso dialog. + * + * @public + */ + TablePersoController.prototype.refresh = function() { + var fnRefreshTable = function(oTable) { + this._mTablePersMap = {}; + oTable.invalidate(); + }; + + this._callFunctionForAllTables(fnRefreshTable); + var oTablePersoDialog = this.getAggregation("_tablePersoDialog"); + if (!!oTablePersoDialog) { + //need to refresh the map which contains columns and personalizations + //columns may have been removed or added. (CSN 0120031469 0000415411 2014) + oTablePersoDialog.setPersoMap(this._getPersoColumnMap(sap.ui.getCore().byId(oTablePersoDialog.getPersoDialogFor()))); + } + }; + + + /** + * Opens the TablePersoDialog, stores the personalized settings on close, + * modifies the table columns, and sends them to the persistence service + * + * @public + */ + TablePersoController.prototype.openDialog = function() { + var oTablePersoDialog = this.getAggregation("_tablePersoDialog"); + if (!!oTablePersoDialog) { + jQuery.sap.syncStyleClass("sapUiSizeCompact", oTablePersoDialog.getPersoDialogFor(), oTablePersoDialog._oDialog); + oTablePersoDialog.open(); + } else { + jQuery.sap.log.warning("sap.m.TablePersoController: trying to open TablePersoDialog before TablePersoService has been activated."); + } + }; + + /** + * Reflector for the controller's 'contentWidth' property. + * @param {sap.ui.core.CSSSize} sWidth + * @public + */ + TablePersoController.prototype.setContentWidth = function(sWidth) { + this.setProperty("contentWidth", sWidth, true); + var oTablePersoDialog = this.getAggregation("_tablePersoDialog"); + if (!!oTablePersoDialog) { + oTablePersoDialog.setContentWidth(sWidth); + } + return this; + }; + + /** + * Reflector for the controller's 'contentHeight' property. + * @param {sap.ui.core.CSSSize} sHeight + * @public + */ + TablePersoController.prototype.setContentHeight = function(sHeight) { + this.setProperty("contentHeight", sHeight, true); + var oTablePersoDialog = this.getAggregation("_tablePersoDialog"); + if (!!oTablePersoDialog) { + oTablePersoDialog.setContentHeight(sHeight); + } + return this; + }; + + /** + * Reflector for the controller's 'hasGrouping' property. + * @param {boolean} bHasGrouping + * @public + */ + TablePersoController.prototype.setHasGrouping = function(bHasGrouping) { + this.setProperty("hasGrouping", bHasGrouping, true); + var oTablePersoDialog = this.getAggregation("_tablePersoDialog"); + if (!!oTablePersoDialog) { + oTablePersoDialog.setHasGrouping(bHasGrouping); + } + return this; + }; + + /** + * Reflector for the controller's 'showSelectAll' property. + * @param {boolean} bShowSelectAll + * @public + */ + TablePersoController.prototype.setShowSelectAll = function(bShowSelectAll) { + this.setProperty("showSelectAll", bShowSelectAll, true); + var oTablePersoDialog = this.getAggregation("_tablePersoDialog"); + if (!!oTablePersoDialog) { + oTablePersoDialog.setShowSelectAll(bShowSelectAll); + } + return this; + }; + + /** + * Reflector for the controller's 'showResetAll' property. + * @param {boolean} bShowResetAll + * @public + */ + TablePersoController.prototype.setShowResetAll = function(bShowResetAll) { + this.setProperty("showResetAll", bShowResetAll, true); + var oTablePersoDialog = this.getAggregation("_tablePersoDialog"); + if (!!oTablePersoDialog) { + oTablePersoDialog.setShowResetAll(bShowResetAll); + } + return this; + }; + + /** + * Using this method, the first part of tablePerso persistence ids can be + * provided, in case the table's app does not provide that part itself. + * + * If a component name is set using this method, it will be used, regardless of + * whether the table's app has a different component name or not. + * + * @param {string} sCompName + * @public + */ + TablePersoController.prototype.setComponentName = function(sCompName) { + this.setProperty("componentName", sCompName, true); + return this; + }; + + /** + * Returns the controller's component name set via 'setComponentName' if present, otherwise it + * delivers the given oControl's component name by recursive asking its + * parents for their component name. If none of oControl's ancestors has a component + * name, the function returns 'empty_component'. + * + * @private + */ + TablePersoController.prototype._getMyComponentName = function(oControl) { + if (this.getComponentName()) { + return this.getComponentName(); + } + + if (oControl === null) { + return "empty_component"; + } + var oMetadata = oControl.getMetadata(); + if (oControl.getMetadata().getStereotype() === "component") { + return oMetadata._sComponentName; + } + return this._getMyComponentName(oControl.getParent()); + }; + + /** + * Checks if a table is specified for the singular association 'table'. + * Otherwise, the first table of the multiple association 'tables' will be returned. + * This function returns controls, not ids! + * + * @private + */ + TablePersoController.prototype._getFirstTable = function() { + var oTable = sap.ui.getCore().byId(this.getAssociation("table")); + var aTables = this.getAssociation("tables"); + if (!oTable && aTables && aTables.length > 0) { + oTable = sap.ui.getCore().byId(aTables[0]); + } + return oTable; + }; + + /** + * Takes a function and calls it for all table, specified in the controller's + * 'table' or 'tables' association. The passed in function must take + * a table as first parameter! + * + * @private + */ + TablePersoController.prototype._callFunctionForAllTables = function(fnToCall) { + var oTable = sap.ui.getCore().byId(this.getAssociation("table")); + if (!!oTable) { + fnToCall.call(this, oTable); + } + var aTables = this.getAssociation("tables"); + if (aTables) { + for ( var i = 0, iLength = this.getAssociation("tables").length; i < iLength; i++) { + oTable = sap.ui.getCore().byId(this.getAssociation("tables")[i]); + fnToCall.call(this, oTable); + } + } + }; + + /** + * Simple heuristic to determine if an ID is generated or static + * @private + */ + TablePersoController.prototype._isStatic = function (sId) { + var sUidPrefix = sap.ui.getCore().getConfiguration().getUIDPrefix(); + var rGeneratedPrefix = new RegExp("^" + sUidPrefix); + return !rGeneratedPrefix.test(sId); + }; + + + /** + * Lazy instantiation of private member _mPersMap + * This is a map containg key value pairs of the following kind: + * - key: a table column object + * - value: column personalization identifier of the form + * -- + * and vice versa! This map is created once, before the corresponding + * table is rendered for the first time. + * @param oTable the table for whose columns shall be the resulting map's keys. + * @private + */ + TablePersoController.prototype._getPersoColumnMap = function(oTable) { + var mResult = this._mTablePersMap[oTable]; + if (!mResult) { + mResult = {}; + //convenience function to extract last part of an id + //need this for columns and table + var fnExtractIdSuffix = function(sId) { + var iLastDashIndex = sId.lastIndexOf("-"); + //if no dash was found 'substring' will still work: + //it returns the entire string, which should not happen + //but would be ok in that case + return sId.substring(iLastDashIndex + 1); + }; + + var sTableIdSuffix = fnExtractIdSuffix.call(this, oTable.getId()); + + //Check table id. Must be static + if (!this._isStatic(sTableIdSuffix)) { + jQuery.sap.log.error("Table " + oTable.getId() + " must have a static id suffix. Otherwise personalization can not be persisted."); + //Invalidate persoMap + mResult = null; + return null; + } + var sNextPersoColumnIdentifier; + var sComponentName = this._getMyComponentName(oTable); + + + var that = this; + + oTable.getColumns().forEach(function(oNextColumn) { + //Check if result has been invalidated by a previous iteration + if (!!mResult) { + //'this' refers to the current table column + var sNextColumnId = oNextColumn.getId(); + var sNextColumnIdSuffix = fnExtractIdSuffix.call(that, sNextColumnId); + // columns must have static IDs for personalization to be stable + if (!that._isStatic(sNextColumnIdSuffix)) { + jQuery.sap.log.error("Suffix " + sNextColumnIdSuffix + " of table column " + sNextColumnId + " must be static. Otherwise personalization can not be persisted for its table."); + //Invalidate persoMap + mResult = null; + return null; + } + //concatenate the parts + sNextPersoColumnIdentifier = sComponentName + "-" + sTableIdSuffix + "-" + sNextColumnIdSuffix; + //add column as key and identifier as value + mResult[oNextColumn] = sNextPersoColumnIdentifier; + //add vice versa as well + mResult[sNextPersoColumnIdentifier] = oNextColumn; + } + }); + this._mTablePersMap[oTable] = mResult; + } + return mResult; + }; + + /** + * Store's the given table's initial state in the controler's initial state map. + * @private + * @param {object} oTable the table for which initial state shall be remembered + */ + TablePersoController.prototype._rememberInitialTableStates = function (oTable) { + this._mInitialTableStateMap[oTable] = this._tableColumnInfo(oTable, this._getPersoColumnMap(oTable), this.getPersoService()); + }; + + /** + * Returns table column settings (header text, order, visibility) for a table + * @private + * @param {object} oTable the table for which column settings should be returned + * @param {object} oPersoMap the table's personalization map + * @param {object} oPersoService the table's personalization provider instance + */ + TablePersoController.prototype._tableColumnInfo = function (oTable, oPersoMap, oPersoService) { + + //Check if persoMap has been passed into the dialog. + //Otherwise, personalization is not possible. + if (!!oPersoMap) { + var aColumns = oTable.getColumns(), + aColumnInfo = []; + aColumns.forEach(function(oColumn){ + var sCaption = null; + if (oPersoService.getCaption) { + sCaption = oPersoService.getCaption(oColumn); + } + + var sGroup = null; + if (oPersoService.getGroup) { + sGroup = oPersoService.getGroup(oColumn); + } + + if (!sCaption) { + var oColHeader = oColumn.getHeader(); + //Check if header control has either text or 'title' property + if (oColHeader.getText && oColHeader.getText()) { + sCaption = oColHeader.getText(); + } else if (oColHeader.getTitle && oColHeader.getTitle()) { + sCaption = oColHeader.getTitle(); + } + + if (!sCaption) { + //Fallback: use column id and issue warning to let app developer know to add captions to columns + sCaption = oColumn.getId(); + jQuery.sap.log.warning("Please 'getCaption' callback implentation in your TablePersoProvider for column " + oColumn + ". Table personalization uses column id as fallback value."); + } + } + + //In this case, oColumn is one of our controls. Therefore, sap.ui.core.Element.toString() + //is called which delivers something like 'Element sap.m.Column#' where sId is the column's sId property + aColumnInfo.push({ + text : sCaption, + order : oColumn.getOrder(), + visible : oColumn.getVisible(), + id: oPersoMap[oColumn], + group : sGroup + }); + }); + + // Sort to make sure they're presented in the right order + aColumnInfo.sort(function(a, b) { return a.order - b.order; }); + + return aColumnInfo; + } + return null; + }; + + + + return TablePersoController; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TablePersoController.js b/DVHMA-OpenUI5/www/resources/sap/m/TablePersoController.js new file mode 100644 index 0000000..aeb6757 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TablePersoController.js @@ -0,0 +1,6 @@ +/* + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./TablePersoDialog','sap/ui/base/ManagedObject'],function(q,T,M){"use strict";var d=M.extend("sap.m.TablePersoController",{constructor:function(i,s){M.apply(this,arguments);},metadata:{properties:{"contentWidth":{type:"sap.ui.core.CSSSize"},"contentHeight":{type:"sap.ui.core.CSSSize",defaultValue:"20rem",since:"1.22"},"componentName":{type:"string",since:"1.20.2"},"hasGrouping":{type:"boolean",defaultValue:false,since:"1.22"},"showSelectAll":{type:"boolean",defaultValue:true,since:"1.22"},"showResetAll":{type:"boolean",defaultValue:true,since:"1.22"}},aggregations:{"_tablePersoDialog":{type:"sap.m.TablePersoDialog",multiple:false,visibility:"hidden"},"persoService":{type:"Object",multiple:false}},associations:{"table":{type:"sap.m.Table",multiple:false},"tables":{type:"sap.m.Table",multiple:true}},events:{personalizationsDone:{}},library:"sap.m"}});d.prototype.init=function(){this._schemaProperty="_persoSchemaVersion";this._schemaVersion="1.0";this._oPersonalizations=null;this._mDelegateMap={};this._mTablePersMap={};this._mInitialTableStateMap={};this._triggersPersDoneEvent=true;};d.prototype.exit=function(){this._callFunctionForAllTables(q.proxy(function(t){t.removeDelegate(this._mDelegateMap[t]);},this));delete this._mDelegateMap;delete this._mTablePersMap;delete this._mInitialTableStateMap;};d.prototype.activate=function(){this._callFunctionForAllTables(this._rememberInitialTableStates);this._callFunctionForAllTables(this._createAndAddDelegateForTable);return this;};d.prototype.getTablePersoDialog=function(){return this.getAggregation("_tablePersoDialog");};d.prototype.applyPersonalizations=function(t){var r=this.getPersoService().getPersData();var a=this;r.done(function(p){if(!!p){a._adjustTable(p,t);}});r.fail(function(){q.sap.log.error("Problem reading persisted personalization data.");});};d.prototype._createAndAddDelegateForTable=function(t){if(!this._mDelegateMap[t]){var o={onBeforeRendering:q.proxy(function(){this.applyPersonalizations(t);if(!this.getAggregation("_tablePersoDialog")){this._createTablePersoDialog(t);}},this)};t.addDelegate(o);this._mDelegateMap[t]=o;}};d.prototype._createTablePersoDialog=function(t){var o=new T({persoDialogFor:t,persoMap:this._getPersoColumnMap(t),columnInfoCallback:this._tableColumnInfo,initialColumnState:this._mInitialTableStateMap[t],persoService:this.getPersoService(),contentWidth:this.getContentWidth(),contentHeight:this.getContentHeight(),hasGrouping:this.getHasGrouping(),showSelectAll:this.getShowSelectAll(),showResetAll:this.getShowResetAll()});this.setAggregation("_tablePersoDialog",o);o.attachConfirm(q.proxy(function(){this._oPersonalizations=o.retrievePersonalizations();this._callFunctionForAllTables(this._personalizeTable);this.savePersonalizations();this.firePersonalizationsDone();},this));};d.prototype._adjustTable=function(D,t){if(D&&D.hasOwnProperty(this._schemaProperty)&&D[this._schemaProperty]===this._schemaVersion){this._oPersonalizations=D;if(!!t){this._personalizeTable(t);}else{this._callFunctionForAllTables(this._personalizeTable);}}};d.prototype._personalizeTable=function(t){var p=this._getPersoColumnMap(t);if(!!p&&!!this._oPersonalizations){var D=false;for(var c=0,a=this._oPersonalizations.aColumns.length;c0){t=sap.ui.getCore().byId(a[0]);}return t;};d.prototype._callFunctionForAllTables=function(t){var o=sap.ui.getCore().byId(this.getAssociation("table"));if(!!o){t.call(this,o);}var a=this.getAssociation("tables");if(a){for(var i=0,l=this.getAssociation("tables").length;i
  • The result of calling sap.m.TablePersoProvider's 'getCaption' callback if it is implemented and delivers a non-null value for a column
  • + *
  • the column header control's 'text' property if no caption property is available
  • + *
  • the column header control's 'title' property if neither 'text' nor 'caption' property are available
  • + *
  • the column id is displayed as last fallback, if none of the above is at hand. In that case, a warning is logged.
  • + * + * @param {string} + * [sId] optional id for the new control; generated automatically if + * no non-empty id is given Note: this can be omitted, no matter + * whether mSettings will be given or not! + * @param {object} + * [mSettings] optional map/JSON-object with initial settings for the + * new component instance + * @public + * + * @class Table Personalization Dialog + * @extends sap.ui.base.ManagedObject + * @author SAP + * @version 1.28.5 + * @alias sap.m.TablePersoDialog + */ + var TablePersoDialog = ManagedObject.extend("sap.m.TablePersoDialog", /** @lends sap.m.TablePersoDialog */ + + { + constructor : function(sId, mSettings) { + + ManagedObject.apply(this, arguments); + + }, + + metadata : { + properties: { + "contentWidth": {type: "sap.ui.core.CSSSize"}, + "contentHeight": {type: "sap.ui.core.CSSSize", since: "1.22"}, + "persoMap": {type: "object"}, + "columnInfoCallback": {type: "object", since: "1.22"}, + "initialColumnState": {type: "object", since: "1.22"}, + "hasGrouping": {type: "boolean", since: "1.22"}, + "showSelectAll": {type: "boolean", since: "1.22"}, + "showResetAll": {type: "boolean", since: "1.22"} + }, + aggregations: { + "persoService": { + type: "Object", + multiple: false + } + }, + associations: { + "persoDialogFor": "sap.m.Table" + }, + events: { + confirm: {}, + cancel: {} + }, + library: "sap.m" + } + + }); + + + + + /** + * Initializes the TablePersoDialog instance after creation. + * + * @protected + */ + TablePersoDialog.prototype.init = function() { + var that = this, + iLiveChangeTimer = 0; + + // Resource bundle, for texts + this._oRb = sap.ui.getCore().getLibraryResourceBundle("sap.m"); + + // To store the column settings + this._oP13nModel = new sap.ui.model.json.JSONModel(); + // Make sure that model can contain more than the 100 entries + // it may contain by default + this._oP13nModel.setSizeLimit(Number.MAX_VALUE); + + this._fnUpdateCheckBoxes = jQuery.proxy(function(oEvent) { + var bSelected = oEvent.getParameter('selected'), + oData = this._oP13nModel.getData(); + if (oEvent.getSource().getId() === this._getSelectAllCheckboxId()) { + // 'Select All' checkbox has been changed + oData.aColumns.forEach(function(oColumn) { + oColumn.visible = bSelected; + }); + } else { + // One of the list checkboxes has been modified + // Update the state of the 'Select All' checkbox + var bSelectAll = !oData.aColumns.some(function(oColumn) { + return !oColumn.visible; + }); + + oData.aHeader.visible = bSelectAll; + } + // Call setData to trigger update of bound controls + this._oP13nModel.setData(oData); + }, this); + + + // Template for list inside the dialog - 1 item per column + this._oColumnItemTemplate = new InputListItem({ + label: "{Personalization>text}", + content: new sap.m.CheckBox({ + selected: "{Personalization>visible}", + select: this._fnUpdateCheckBoxes + }) + }).addStyleClass("sapMPersoDialogLI"); + + // Button definition for sorting of the table content(up/down) + this._oButtonUp = new Button({ + icon: "sap-icon://arrow-top", + enabled: false, + press: function(oEvent) { + that._moveItem(-1); + } + }); + + this._oButtonDown = new Button({ + icon: "sap-icon://arrow-bottom", + enabled: false, + press: function(oEvent) { + that._moveItem(1); + } + }); + + this._fnHandleResize = function() { + // Check if dialog is rendered + if (that._oDialog) { + var $dialogCont = jQuery("#" + that._oDialog.getId() + "-cont"); + if ($dialogCont.children().length > 0) { + var iContentHeight = $dialogCont.children()[0].clientHeight; + + // Take the header border into account otherwise the scroll container's + // height is 2px more and causes the selectAllToolbar to scroll as well + var iHeaderHeight = that.getShowSelectAll() ? that._oSelectAllToolbar.$().outerHeight() : 0; + that._oScrollContainer.setHeight((iContentHeight - iHeaderHeight) + 'px'); + } + } + }; + + this._fnUpdateArrowButtons = function() { + // Initialisation of the enabled property + var bButtonDownEnabled = true, + bButtonUpEnabled = true, + sValue = that._oSearchField.getValue(), + iItemCount = that._oList.getItems().length; + if (!!sValue || that._oList.getSelectedItems().length === 0) { + // Disable buttons if search filters the list or if list is empty + bButtonUpEnabled = false; + bButtonDownEnabled = false; + } else { + // Data available (1 or more items) + if (that._oList.getItems()[0].getSelected()) { + // First item selected: disable button "arrow top" and focus button "arrow bottom" + bButtonUpEnabled = false; + jQuery.sap.focus(that._oButtonDown.getDomRef()); + } + if (that._oList.getItems()[iItemCount - 1].getSelected()) { + // Last item selected: disable button "arrow bottom" and focus button "arrow top" + bButtonDownEnabled = false; + jQuery.sap.focus(that._oButtonUp.getDomRef()); + } + } + + that._oButtonUp.setEnabled(bButtonUpEnabled); + that._oButtonDown.setEnabled(bButtonDownEnabled); + }; + + this._fnAfterListRendering = function(oEvent) { + // Find all checkboxes in the list + var aItems = oEvent.srcControl.$().find('.sapMCb'), + iItemsLength = aItems.length; + // 'forEach' does not work + for (var i = 0; i < iItemsLength; i++) { + var $checkBox = jQuery(aItems[i]).parent(), + aSiblings = $checkBox.siblings(), + $label = aSiblings.length == 1 ? jQuery(aSiblings[0]) : null; + + if ($label) { + $checkBox = $checkBox.detach(); + $checkBox[0].className = 'sapMLIBSelectM'; + $checkBox.insertBefore($label); + } + } + + if (that._sLastSelectedItemId) { + var aItems = that._oList.getItems(), + fnItemMatches = function (oListItem) { + var bResult = (oListItem.getBindingContext('Personalization') && + oListItem.getBindingContext('Personalization').getProperty('id') === that._sLastSelectedItemId); + if (bResult) { + that._oList.setSelectedItem(oListItem); + } + return bResult; + }; + // Use 'some' to make sure it only traverses the array of listItems + // as far as needed + aItems.some(fnItemMatches); + // Clear last selected item so it does not get used again + that._sLastSelectedItemId = null; + } + }; + + this._fnAfterToolbarRendering = function (oEvent) { + // Remove the toolbar from the tab chain + that._oSelectAllToolbar.$().attr('tabindex', '-1'); + }; + + this._fnAfterDialogOpen = function (oEvent) { + // On shift+tab the subheader gets focused + that._oDialog.getSubHeader().$().attr('tabindex', '-1'); + // Make sure that arrow buttons are updated when dialog is opened + that._fnUpdateArrowButtons.call(that); + }; + + this._fnAfterScrollContainerRendering = function (oEvent) { + // Scroll container gets focused in Firefox + that._oScrollContainer.$().attr('tabindex', '-1'); + }; + + this._oList = new List({ + includeItemInSelection: true, + noDataText: this._oRb.getText('PERSODIALOG_NO_DATA'), + mode: sap.m.ListMode.SingleSelectMaster, + selectionChange: this._fnUpdateArrowButtons + }); + + this._oList.addDelegate({onAfterRendering : this._fnAfterListRendering}); + + this._oSearchField = new sap.m.SearchField(this.getId() + "-searchField", { + width: "100%", + liveChange: function (oEvent) { + var sValue = oEvent.getSource().getValue(), + iDelay = (sValue ? 300 : 0); // No delay if value is empty + + // Execute search after user stops typing for 300ms + clearTimeout(iLiveChangeTimer); + if (iDelay) { + iLiveChangeTimer = setTimeout(function () { + that._executeSearch(); + }, iDelay); + } else { + that._executeSearch(); + } + }, + // Execute the standard search + search: function (oEvent) { + that._executeSearch(); + } + }); + + this._oScrollContainer = new sap.m.ScrollContainer({ + horizontal: false, + vertical: true, + content:[this._oList], + width:'100%' + }); + + this._oScrollContainer.addDelegate({onAfterRendering : this._fnAfterScrollContainerRendering}); + + this._resetAllButton = new Button({ + icon: "sap-icon://undo", + tooltip: this._oRb.getText('PERSODIALOG_UNDO'), + press : function () { + that._resetAll(); + } + }).addStyleClass("sapMPersoDialogResetBtn"); + + this._oSelectAllCheckbox = new sap.m.CheckBox(this._getSelectAllCheckboxId(), { + selected: "{Personalization>/aHeader/visible}", + select: this._fnUpdateCheckBoxes, + text: "{Personalization>/aHeader/text}" + }).addStyleClass("sapMPersoDialogSelectAllCb"); + + this._oSelectAllToolbar = new Toolbar({ + active: true, + design : sap.m.ToolbarDesign.Transparent, + content: [this._oSelectAllCheckbox, this._resetAllButton] + }).addStyleClass("sapMPersoDialogFixedBar"); + + this._oSelectAllToolbar.addDelegate({onAfterRendering: this._fnAfterToolbarRendering}); + + this._oDialog = new Dialog({ + title : this._oRb.getText("PERSODIALOG_COLUMNS_TITLE"), + stretch: sap.ui.Device.system.phone, + horizontalScrolling: false, + verticalScrolling: false, + initialFocus: (sap.ui.Device.system.desktop ? this._oList : null), + content : [ this._oSelectAllToolbar, this._oScrollContainer], + subHeader : new Toolbar({ + active : true, + content: [ this._oButtonUp, this._oButtonDown, this._oSearchField ] + }), + leftButton : new Button({ + text : this._oRb.getText("PERSODIALOG_OK"), + press : function () { + that._oDialog.close(); + that._oSearchField.setValue(""); + that._oSelectAllToolbar.setVisible(true); + sap.ui.Device.resize.detachHandler(that._fnHandleResize); + that.fireConfirm(); + } + }), + rightButton : new Button({ + text: this._oRb.getText("PERSODIALOG_CANCEL"), + press: function () { + that._oDialog.close(); + that._oSearchField.setValue(""); + that._oSelectAllToolbar.setVisible(true); + sap.ui.Device.resize.detachHandler(that._fnHandleResize); + that.fireCancel(); + } + }), + afterOpen: this._fnAfterDialogOpen + }).addStyleClass("sapMPersoDialog"); + }; + + /** + * Returns the personalizations made. Currently supports + * a 'columns' property which holds an array of settings, + * one element per column in the associated table. The element + * contains column-specific information as follows: id: column id; + * order: new order; text: the column's header text that was displayed + * in the dialog; visible: visibility (true or false). + * + * @return object personalizationData + * @public + */ + TablePersoDialog.prototype.retrievePersonalizations = function () { + return this._oP13nModel.getData(); + }; + + /** + * Sets the content of the dialog, being list items representing + * the associated table's column settings, and opens the dialog + * @public + */ + TablePersoDialog.prototype.open = function () { + var aSorter = null; + if (this.getHasGrouping()) { + aSorter = [new sap.ui.model.Sorter('group', false, true)]; + } + // Get the associated Table's column info and set it into the Personalization model + this._readCurrentSettingsFromTable(); + + this._oDialog.setModel(this._oP13nModel, "Personalization"); + this._oList.bindAggregation("items", { + path: "Personalization>/aColumns", + sorter: aSorter, + template: this._oColumnItemTemplate + }); + + if (!this._oList.getSelectedItem()) { + // Make sure initial selection is set + var aItems = this._oList.getItems(); + if (this.getHasGrouping()) { + aItems = aItems.filter(function (oItem){ + return oItem.getMetadata().getName() != "sap.m.GroupHeaderListItem"; + }); + } + if (aItems.length > 0) { + this._sLastSelectedItemId = aItems[0].getBindingContext('Personalization').getProperty('id'); + } + } + + // Update 'Move' button's state + this._fnUpdateArrowButtons.call(this); + + // Now show the dialog + this._oDialog.open(); + + this._fnHandleResize.call(this); + sap.ui.Device.resize.attachHandler(this._fnHandleResize); + }; + + + TablePersoDialog.prototype.setContentHeight = function(sHeight) { + this.setProperty("contentHeight", sHeight, true); + this._oDialog.setContentHeight(sHeight); + return this; + }; + + TablePersoDialog.prototype.setContentWidth = function(sWidth) { + this.setProperty("contentWidth", sWidth, true); + this._oDialog.setContentWidth(sWidth); + return this; + }; + + /** + * Destroys the control + * @private + */ + TablePersoDialog.prototype.exit = function () { + this._oRb = null; + this._oP13nModel = null; + + if (this._oColumnItemTemplate) { + this._oColumnItemTemplate.destroy(); + this._oColumnItemTemplate = null; + } + + if (this._oSelectAllToolbar) { + this._oSelectAllToolbar.destroy(); + this._oSelectAllToolbar = null; + } + + if (this._oList) { + this._oList.destroy(); + this._oList = null; + } + + if (this._oSearchField) { + this._oSearchField.destroy(); + this._oSearchField = null; + } + + if (this._oScrollContainer) { + this._oScrollContainer.destroy(); + this._oScrollContainer = null; + } + + if (this._oDialog) { + this._oDialog.destroy(); + this._oDialog = null; + } + + if (this._oButtonDown) { + this._oButtonDown.destroy(); + this._oButtonDown = null; + } + if (this._oButtonUp) { + this._oButtonUp.destroy(); + this._oButtonUp = null; + } + }; + + /* =========================================================== */ + /* begin: internal methods */ + /* =========================================================== */ + + /** + * Turn column visibility and order back to initial state (state before table + * was personalized) + * @private + */ + TablePersoDialog.prototype._resetAll = function () { + if (this.getInitialColumnState()) { + // Deep copy of Initial Data, otherwise initial data will be changed + // and can only be used once to restore the initial state + + var aInitialStateCopy = jQuery.extend(true, [], this.getInitialColumnState()), + that = this; + // CSN 0120031469 0000184938 2014 + // Remember last selected row, so it can be selected again after + // reset all is done + var oLastSelectedItem = this._oList.getSelectedItem(); + this._sLastSelectedItemId = oLastSelectedItem && + oLastSelectedItem.getBindingContext('Personalization') && + oLastSelectedItem.getBindingContext('Personalization').getProperty('id'); + + // CSN 0120061532 0001380609 2014 + // Make sure that captions are not replaced by column id's. This my be the case if + // initalStateCopy has been created too early + if (!!this._mColumnCaptions) { + aInitialStateCopy.forEach( + function(oColumn) { + oColumn.text = that._mColumnCaptions[oColumn.id]; + }); + } + + this._oP13nModel.getData().aColumns = aInitialStateCopy; + + this._oP13nModel.getData().aHeader.visible = !this.getInitialColumnState().some(function(oColumn) { + return !oColumn.visible; + }); + + this._oP13nModel.updateBindings(); + } + }; + + + + /** + * Moves an item up or down, swapping it with the neighbour. + * Does this in the bound model. + * @private + * @param {int} iDirection the move direction (-1 up, 1 down) + */ + TablePersoDialog.prototype._moveItem = function (iDirection) { + + // Abort if nothing selected + var oSelectedItem = this._oList.getSelectedItem(); + if (!oSelectedItem) { + return; + } + + // The items themselves + var oData = this._oP13nModel.getData(); + + // Get array index of selected item + var item = oSelectedItem.getBindingContext("Personalization").getPath().split("/").pop() * 1; + + // Get array index of item to swap with + var swap = item + iDirection; + + // Abort if out of bounds + if ( swap < 0 || swap >= oData.aColumns.length ) { + return; + } + + // Do the swap + var temp = oData.aColumns[swap]; + oData.aColumns[swap] = oData.aColumns[item]; + // Make sure the order member is adapted as well! + oData.aColumns[swap].order = swap; + oData.aColumns[item] = temp; + // Make sure the order member is adapted as well! + oData.aColumns[item].order = item; + + // Remove selection before binding + this._oList.removeSelections(true); + + // Call setData to trigger update of bound controls + this._oP13nModel.updateBindings(); + + + // Switch the selected item + var oSwapItem = this._oList.getItems()[swap]; + this._oList.setSelectedItem(oSwapItem, true); + + // Scroll to selected item + // Make sure that item is selected so 'oSwapItem.$()' + // is not empty + sap.ui.getCore().applyChanges(); + // swapItem need to be rendered, otherwise we can not + // perfrom the necessary calculations + if (!!oSwapItem.getDomRef()) { + var iElementOffset = oSwapItem.$().position().top, + // This is the minimal height that should be visible from the selected element + // 18 means 18px which corresponds to 3em + iMinHeight = 18, + iViewPortHeight = this._oScrollContainer.$().height(), + iViewPortStart = this._oScrollContainer.$().offset().top - this._oList.$().offset().top, + iViewPortEnd = iViewPortStart + iViewPortHeight; + + if (iElementOffset < iViewPortStart ) { + // Selected element is above or below visible viewport + // scroll page up + this._oScrollContainer.scrollTo(0, Math.max(0, iViewPortStart - iViewPortHeight + iMinHeight)); + } else if (iElementOffset + iMinHeight > iViewPortEnd) { + // Selected element is above or below visible viewport + // scroll down a page (this is the height of the scroll container) + this._oScrollContainer.scrollTo(0, iElementOffset); + } + // Otherwise, element is within the scroll container's viewport, so no action is necessary + } + + this._fnUpdateArrowButtons.call(this); + + }; + + + /** + * Reads current column settings from the table and stores in the model + * @private + */ + TablePersoDialog.prototype._readCurrentSettingsFromTable = function() { + var oTable = sap.ui.getCore().byId(this.getPersoDialogFor()), + that = this, + aCurrentColumns = this.getColumnInfoCallback().call(this, oTable, this.getPersoMap(), this.getPersoService()); + this._oP13nModel.setData({ + aColumns : aCurrentColumns, + aHeader : { + text : this._oRb.getText("PERSODIALOG_SELECT_ALL"), + visible : !aCurrentColumns.some(function(oColumn) { + return !oColumn.visible; + }), + id: this._getSelectAllCheckboxId() + } + }); + + // Remember column captions, needed for 'Reset All' + this._mColumnCaptions = {}; + aCurrentColumns.forEach( + function(oColumn) { + that._mColumnCaptions[oColumn.id] = oColumn.text; + }); + }; + + TablePersoDialog.prototype._getSelectAllCheckboxId = function () { + return this.getId() + '_SelectAll'; + }; + + /** + * Filters the columns list with the given sValue + * @private + */ + TablePersoDialog.prototype._executeSearch = function () { + var sValue = this._oSearchField.getValue(), + oFilter = new sap.ui.model.Filter("text", sap.ui.model.FilterOperator.Contains, sValue), + oBinding = this._oList.getBinding("items"); + + this._oSelectAllToolbar.setVisible(!sValue && this.getShowSelectAll()); + oBinding.filter([oFilter]); + this._fnUpdateArrowButtons.call(this); + return this; + }; + + /** + * Reflector for the TablePersoDialog's Dialog's hasGrouping property. + * @param {boolean} bHasGrouping + * @public + */ + TablePersoDialog.prototype.setHasGrouping = function (bHasGrouping) { + this.setProperty("hasGrouping", bHasGrouping, true); + var oBar = this._oDialog.getSubHeader(); + if (!bHasGrouping) { + if (oBar.getContent().length === 1) { + // Only search field is displayed, add up- and down + // buttons + oBar.insertContent(this._oButtonDown, 0); + oBar.insertContent(this._oButtonUp, 0); + } + } else { + oBar.removeContent(this._oButtonUp); + oBar.removeContent(this._oButtonDown); + } + return this; + }; + + /** + * Reflector for the TablePersoDialog's Dialog's showSelectAll property. + * @param {boolean} bShowSelectAll + * @public + */ + TablePersoDialog.prototype.setShowSelectAll = function (bShowSelectAll) { + this.setProperty("showSelectAll", bShowSelectAll, true); + this._oSelectAllToolbar.setVisible(bShowSelectAll); + // Need to recalculate content height now + this._fnHandleResize.call(this); + return this; + }; + + /** + * Reflector for the TablePersoDialog's Dialog's showResetAll property. + * @param {boolean} bShowResetAll + * @public + */ + TablePersoDialog.prototype.setShowResetAll = function (bShowResetAll) { + this.setProperty("showResetAll", bShowResetAll, true); + this._resetAllButton.setVisible(bShowResetAll); + return this; + }; + + + + + + return TablePersoDialog; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TablePersoDialog.js b/DVHMA-OpenUI5/www/resources/sap/m/TablePersoDialog.js new file mode 100644 index 0000000..cde791a --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TablePersoDialog.js @@ -0,0 +1,6 @@ +/* + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Button','./Dialog','./InputListItem','./List','./Toolbar','sap/ui/base/ManagedObject'],function(q,B,D,I,L,T,M){"use strict";var a=M.extend("sap.m.TablePersoDialog",{constructor:function(i,s){M.apply(this,arguments);},metadata:{properties:{"contentWidth":{type:"sap.ui.core.CSSSize"},"contentHeight":{type:"sap.ui.core.CSSSize",since:"1.22"},"persoMap":{type:"object"},"columnInfoCallback":{type:"object",since:"1.22"},"initialColumnState":{type:"object",since:"1.22"},"hasGrouping":{type:"boolean",since:"1.22"},"showSelectAll":{type:"boolean",since:"1.22"},"showResetAll":{type:"boolean",since:"1.22"}},aggregations:{"persoService":{type:"Object",multiple:false}},associations:{"persoDialogFor":"sap.m.Table"},events:{confirm:{},cancel:{}},library:"sap.m"}});a.prototype.init=function(){var t=this,l=0;this._oRb=sap.ui.getCore().getLibraryResourceBundle("sap.m");this._oP13nModel=new sap.ui.model.json.JSONModel();this._oP13nModel.setSizeLimit(Number.MAX_VALUE);this._fnUpdateCheckBoxes=q.proxy(function(e){var s=e.getParameter('selected'),d=this._oP13nModel.getData();if(e.getSource().getId()===this._getSelectAllCheckboxId()){d.aColumns.forEach(function(c){c.visible=s;});}else{var S=!d.aColumns.some(function(c){return!c.visible;});d.aHeader.visible=S;}this._oP13nModel.setData(d);},this);this._oColumnItemTemplate=new I({label:"{Personalization>text}",content:new sap.m.CheckBox({selected:"{Personalization>visible}",select:this._fnUpdateCheckBoxes})}).addStyleClass("sapMPersoDialogLI");this._oButtonUp=new B({icon:"sap-icon://arrow-top",enabled:false,press:function(e){t._moveItem(-1);}});this._oButtonDown=new B({icon:"sap-icon://arrow-bottom",enabled:false,press:function(e){t._moveItem(1);}});this._fnHandleResize=function(){if(t._oDialog){var $=q("#"+t._oDialog.getId()+"-cont");if($.children().length>0){var c=$.children()[0].clientHeight;var h=t.getShowSelectAll()?t._oSelectAllToolbar.$().outerHeight():0;t._oScrollContainer.setHeight((c-h)+'px');}}};this._fnUpdateArrowButtons=function(){var b=true,c=true,v=t._oSearchField.getValue(),i=t._oList.getItems().length;if(!!v||t._oList.getSelectedItems().length===0){c=false;b=false;}else{if(t._oList.getItems()[0].getSelected()){c=false;q.sap.focus(t._oButtonDown.getDomRef());}if(t._oList.getItems()[i-1].getSelected()){b=false;q.sap.focus(t._oButtonUp.getDomRef());}}t._oButtonUp.setEnabled(c);t._oButtonDown.setEnabled(b);};this._fnAfterListRendering=function(e){var b=e.srcControl.$().find('.sapMCb'),c=b.length;for(var i=0;i/aHeader/visible}",select:this._fnUpdateCheckBoxes,text:"{Personalization>/aHeader/text}"}).addStyleClass("sapMPersoDialogSelectAllCb");this._oSelectAllToolbar=new T({active:true,design:sap.m.ToolbarDesign.Transparent,content:[this._oSelectAllCheckbox,this._resetAllButton]}).addStyleClass("sapMPersoDialogFixedBar");this._oSelectAllToolbar.addDelegate({onAfterRendering:this._fnAfterToolbarRendering});this._oDialog=new D({title:this._oRb.getText("PERSODIALOG_COLUMNS_TITLE"),stretch:sap.ui.Device.system.phone,horizontalScrolling:false,verticalScrolling:false,initialFocus:(sap.ui.Device.system.desktop?this._oList:null),content:[this._oSelectAllToolbar,this._oScrollContainer],subHeader:new T({active:true,content:[this._oButtonUp,this._oButtonDown,this._oSearchField]}),leftButton:new B({text:this._oRb.getText("PERSODIALOG_OK"),press:function(){t._oDialog.close();t._oSearchField.setValue("");t._oSelectAllToolbar.setVisible(true);sap.ui.Device.resize.detachHandler(t._fnHandleResize);t.fireConfirm();}}),rightButton:new B({text:this._oRb.getText("PERSODIALOG_CANCEL"),press:function(){t._oDialog.close();t._oSearchField.setValue("");t._oSelectAllToolbar.setVisible(true);sap.ui.Device.resize.detachHandler(t._fnHandleResize);t.fireCancel();}}),afterOpen:this._fnAfterDialogOpen}).addStyleClass("sapMPersoDialog");};a.prototype.retrievePersonalizations=function(){return this._oP13nModel.getData();};a.prototype.open=function(){var s=null;if(this.getHasGrouping()){s=[new sap.ui.model.Sorter('group',false,true)];}this._readCurrentSettingsFromTable();this._oDialog.setModel(this._oP13nModel,"Personalization");this._oList.bindAggregation("items",{path:"Personalization>/aColumns",sorter:s,template:this._oColumnItemTemplate});if(!this._oList.getSelectedItem()){var i=this._oList.getItems();if(this.getHasGrouping()){i=i.filter(function(o){return o.getMetadata().getName()!="sap.m.GroupHeaderListItem";});}if(i.length>0){this._sLastSelectedItemId=i[0].getBindingContext('Personalization').getProperty('id');}}this._fnUpdateArrowButtons.call(this);this._oDialog.open();this._fnHandleResize.call(this);sap.ui.Device.resize.attachHandler(this._fnHandleResize);};a.prototype.setContentHeight=function(h){this.setProperty("contentHeight",h,true);this._oDialog.setContentHeight(h);return this;};a.prototype.setContentWidth=function(w){this.setProperty("contentWidth",w,true);this._oDialog.setContentWidth(w);return this;};a.prototype.exit=function(){this._oRb=null;this._oP13nModel=null;if(this._oColumnItemTemplate){this._oColumnItemTemplate.destroy();this._oColumnItemTemplate=null;}if(this._oSelectAllToolbar){this._oSelectAllToolbar.destroy();this._oSelectAllToolbar=null;}if(this._oList){this._oList.destroy();this._oList=null;}if(this._oSearchField){this._oSearchField.destroy();this._oSearchField=null;}if(this._oScrollContainer){this._oScrollContainer.destroy();this._oScrollContainer=null;}if(this._oDialog){this._oDialog.destroy();this._oDialog=null;}if(this._oButtonDown){this._oButtonDown.destroy();this._oButtonDown=null;}if(this._oButtonUp){this._oButtonUp.destroy();this._oButtonUp=null;}};a.prototype._resetAll=function(){if(this.getInitialColumnState()){var i=q.extend(true,[],this.getInitialColumnState()),t=this;var l=this._oList.getSelectedItem();this._sLastSelectedItemId=l&&l.getBindingContext('Personalization')&&l.getBindingContext('Personalization').getProperty('id');if(!!this._mColumnCaptions){i.forEach(function(c){c.text=t._mColumnCaptions[c.id];});}this._oP13nModel.getData().aColumns=i;this._oP13nModel.getData().aHeader.visible=!this.getInitialColumnState().some(function(c){return!c.visible;});this._oP13nModel.updateBindings();}};a.prototype._moveItem=function(d){var s=this._oList.getSelectedItem();if(!s){return;}var o=this._oP13nModel.getData();var i=s.getBindingContext("Personalization").getPath().split("/").pop()*1;var b=i+d;if(b<0||b>=o.aColumns.length){return;}var t=o.aColumns[b];o.aColumns[b]=o.aColumns[i];o.aColumns[b].order=b;o.aColumns[i]=t;o.aColumns[i].order=i;this._oList.removeSelections(true);this._oP13nModel.updateBindings();var S=this._oList.getItems()[b];this._oList.setSelectedItem(S,true);sap.ui.getCore().applyChanges();if(!!S.getDomRef()){var e=S.$().position().top,m=18,v=this._oScrollContainer.$().height(),V=this._oScrollContainer.$().offset().top-this._oList.$().offset().top,c=V+v;if(ec){this._oScrollContainer.scrollTo(0,e);}}this._fnUpdateArrowButtons.call(this);};a.prototype._readCurrentSettingsFromTable=function(){var t=sap.ui.getCore().byId(this.getPersoDialogFor()),b=this,c=this.getColumnInfoCallback().call(this,t,this.getPersoMap(),this.getPersoService());this._oP13nModel.setData({aColumns:c,aHeader:{text:this._oRb.getText("PERSODIALOG_SELECT_ALL"),visible:!c.some(function(C){return!C.visible;}),id:this._getSelectAllCheckboxId()}});this._mColumnCaptions={};c.forEach(function(C){b._mColumnCaptions[C.id]=C.text;});};a.prototype._getSelectAllCheckboxId=function(){return this.getId()+'_SelectAll';};a.prototype._executeSearch=function(){var v=this._oSearchField.getValue(),f=new sap.ui.model.Filter("text",sap.ui.model.FilterOperator.Contains,v),b=this._oList.getBinding("items");this._oSelectAllToolbar.setVisible(!v&&this.getShowSelectAll());b.filter([f]);this._fnUpdateArrowButtons.call(this);return this;};a.prototype.setHasGrouping=function(h){this.setProperty("hasGrouping",h,true);var b=this._oDialog.getSubHeader();if(!h){if(b.getContent().length===1){b.insertContent(this._oButtonDown,0);b.insertContent(this._oButtonUp,0);}}else{b.removeContent(this._oButtonUp);b.removeContent(this._oButtonDown);}return this;};a.prototype.setShowSelectAll=function(s){this.setProperty("showSelectAll",s,true);this._oSelectAllToolbar.setVisible(s);this._fnHandleResize.call(this);return this;};a.prototype.setShowResetAll=function(s){this.setProperty("showResetAll",s,true);this._resetAllButton.setVisible(s);return this;};return a;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TablePersoProvider-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/TablePersoProvider-dbg.js new file mode 100644 index 0000000..5f4b157 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TablePersoProvider-dbg.js @@ -0,0 +1,147 @@ +/* + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides TablePersoProvider +sap.ui.define(['jquery.sap.global', 'sap/ui/base/ManagedObject'], + function(jQuery, ManagedObject) { + "use strict"; + + + + /** + * This is an abstract TablePersoProvider, describing the interface for a real + * TablePersoProvider. + * + * @public + * + * @class Table Personalization Provider + * @extends sap.ui.base.ManagedObject + * @abstract + * @author SAP + * @version 1.28.5 + * @alias sap.m.TablePersoProvider + */ + var TablePersoProvider = ManagedObject.extend("sap.m.TablePersoProvider", /** @lends sap.m.TablePersoProvider */ + + { + constructor: function(sId, mSettings) { + + ManagedObject.apply(this, arguments); + + }, + + metadata: { + "abstract": true, + library: "sap.m" + } + + }); + + + /** + * Initializes the TablePersoProvider instance after creation. + * + * @protected + */ + TablePersoProvider.prototype.init = function() { + + jQuery.sap.log.warning("This is the abstract base class for a TablePersoProvider. Do not create instances of this class, but use a concrete sub class instead."); + jQuery.sap.log.debug("TablePersoProvider init"); + + }; + + /** + * Retrieves the personalization bundle. + * This must return a jQuery promise (see http://api.jquery.com/promise/) + * @public + */ + TablePersoProvider.prototype.getPersData = function() { + + jQuery.sap.log.debug("TablePersoProvider getPersData"); + + }; + + /** + * Stores the personalization bundle, overwriting any + * previous bundle completely + * This must return a jQuery promise (see http://api.jquery.com/promise/) + * @param {object} oBundle + * @public + */ + TablePersoProvider.prototype.setPersData = function(oBundle) { + + jQuery.sap.log.debug("TablePersoProvider setPersData"); + + }; + + /** + * Removes the personalization bundle + * This must return a jQuery promise (see http://api.jquery.com/promise/) + * @public + */ + TablePersoProvider.prototype.delPersData = function() { + + jQuery.sap.log.debug("TablePersoProvider delPersData"); + + }; + + /** + * Callback function which can be used to determine the title of a given column + * within the TablePersoDialog. As a default, the column header controls are + * asked for their 'text' or 'title' property. This works in most cases, for example + * if the header control is a sap.m.Label (has 'text' property) or a sap.m.ObjectListItem + * (has 'title' property). + * + * If the header control used in a column has neither 'text' nor 'title' property, or if you would like to + * display a modified column name for a certain column, this callback function can be used. + * + * If the callback delivers null for a column (which is the default implementation), the default + * texts described above are displayed for that column in the TablePersoDialog. + * + * In case neither the callback delivers null and neither 'text' nor ' title' property are at hand, + * the TablePersoDialog will display the column id and a warning message is logged. + * + * @param {sap.m.Column} oColumn column whose caption shall be determined + * @public + */ + TablePersoProvider.prototype.getCaption = function(oColumn) { + return null; + }; + + /** + * Callback function which can be used to determine the group of a given column + * within the TablePersoDialog. As a default, the columns are not assigned to a group. + * + * This information is used to group the columns within the TablePersoDialog if the TablePersoController's + * 'group' flag is set, otherwise, the groups are ignored. + * + * @param {sap.m.Column} oColumn column whose group shall be determined + * @public + */ + TablePersoProvider.prototype.getGroup = function(oColumn) { + return null; + }; + + + /** + * Resets user’s personalization for a given table so that ‘getPersData’ will + * deliver its initial state. If no table is specified, all personalizations + * of the currently logged on user are reset. + * + * This must return a jQuery promise (see http://api.jquery.com/promise/) + * @public + */ + TablePersoProvider.prototype.resetPersData = function() { + + jQuery.sap.log.debug("TablePersoProvider resetPersData"); + + }; + + + + return TablePersoProvider; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TablePersoProvider.js b/DVHMA-OpenUI5/www/resources/sap/m/TablePersoProvider.js new file mode 100644 index 0000000..3f12165 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TablePersoProvider.js @@ -0,0 +1,6 @@ +/* + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/base/ManagedObject'],function(q,M){"use strict";var T=M.extend("sap.m.TablePersoProvider",{constructor:function(i,s){M.apply(this,arguments);},metadata:{"abstract":true,library:"sap.m"}});T.prototype.init=function(){q.sap.log.warning("This is the abstract base class for a TablePersoProvider. Do not create instances of this class, but use a concrete sub class instead.");q.sap.log.debug("TablePersoProvider init");};T.prototype.getPersData=function(){q.sap.log.debug("TablePersoProvider getPersData");};T.prototype.setPersData=function(b){q.sap.log.debug("TablePersoProvider setPersData");};T.prototype.delPersData=function(){q.sap.log.debug("TablePersoProvider delPersData");};T.prototype.getCaption=function(c){return null;};T.prototype.getGroup=function(c){return null;};T.prototype.resetPersData=function(){q.sap.log.debug("TablePersoProvider resetPersData");};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TableRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/TableRenderer-dbg.js new file mode 100644 index 0000000..9e2b211 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TableRenderer-dbg.js @@ -0,0 +1,243 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define(['jquery.sap.global', 'sap/ui/core/Renderer', './ListBaseRenderer'], + function(jQuery, Renderer, ListBaseRenderer) { + "use strict"; + + + /** + * List renderer. + * @namespace + * + * TableRenderer extends the ListBaseRenderer + */ + var TableRenderer = Renderer.extend(ListBaseRenderer); + + + /** + * Renders the Header and/or Footer of the Table like List Control + * + * @param {sap.ui.core.RenderManager} rm RenderManager + * @param {sap.m.ListBase} oTable Table control + * @param {String} type Whether "Head" or "Foot" + */ + TableRenderer.renderColumns = function(rm, oTable, type) { + var index = 0, + hiddens = 0, + hasPopin = false, + hasFooter = false, + mode = oTable.getMode(), + iModeOrder = ListBaseRenderer.ModeOrder[mode], + clsPrefix = "sapMListTbl", + idPrefix = oTable.getId("tbl"), + cellTag = (type == "Head") ? "th" : "td", + cellRole = (type == "Head") ? "columnheader" : "gridcell", + groupTag = "t" + type.toLowerCase(), + aColumns = oTable.getColumns(), + isHeaderHidden = (type == "Head") && aColumns.every(function(oColumn) { + return !oColumn.getHeader() || + !oColumn.getVisible() || + oColumn.isPopin() || + oColumn.isNeverVisible() || + oColumn.isHidden(); + }), + hasOneHeader = (type == "Head") && aColumns.filter(function(oColumn) { + return oColumn.getVisible() && + !oColumn.isPopin() && + !oColumn.isNeverVisible() && + !oColumn.isHidden(); + }).length == 1, + createBlankCell = function(cls, id, bAriaHidden) { + rm.write("<"); + rm.write(cellTag); + rm.writeAttribute("role", cellRole); + bAriaHidden && rm.writeAttribute("aria-hidden", "true"); + id && rm.writeAttribute("id", idPrefix + id); + rm.addClass(clsPrefix + cls); + rm.writeClasses(); + rm.write(">"); + index++; + }; + + rm.write("<" + groupTag + ">"); + rm.write(""); + + if (iModeOrder == -1) { + if (mode == "MultiSelect" && type == "Head" && !isHeaderHidden) { + rm.write("
    "); + index++; + } else { + createBlankCell("SelCol"); + } + } + + aColumns.forEach(function(oColumn, order) { + oColumn.setIndex(-1); + oColumn.setInitialOrder(order); + }); + + oTable.getColumns(true).forEach(function(oColumn, order) { + if (!oColumn.getVisible()) { + return; + } + if (oColumn.isPopin()) { + hasPopin = true; + return; + } + if (oColumn.isNeverVisible()) { + return; + } + if (oColumn.isHidden()) { + hiddens++; + } + + var control = oColumn["get" + type + "er"](), + width = hasOneHeader ? "" : oColumn.getWidth(), + cls = oColumn.getStyleClass(true), + align = oColumn.getCssAlign(); + + rm.write("<" + cellTag); + cls && rm.addClass(cls); + rm.addClass(clsPrefix + "Cell"); + rm.addClass(clsPrefix + type + "erCell"); + rm.writeAttribute("id", idPrefix + type + index); + rm.writeAttribute("data-sap-width", oColumn.getWidth()); + rm.writeAttribute("role", cellRole); + width && rm.addStyle("width", width); + + if (align) { + rm.addStyle("text-align", align); + } + + rm.writeClasses(); + rm.writeStyles(); + rm.write(">"); + if (control) { + oColumn.applyAlignTo(control); + rm.renderControl(control); + } + if (type == "Head" && !hasFooter) { + hasFooter = !!oColumn.getFooter(); + } + rm.write(""); + oColumn.setIndex(index++); + }); + + createBlankCell("NavCol", type + "Nav", !oTable._iItemNeedsColumn); + + if (iModeOrder == 1) { + createBlankCell("SelCol"); + } + + rm.write(""); + + if (type == "Head") { + oTable._hasPopin = hasPopin; + oTable._colCount = index - hiddens; + oTable._hasFooter = hasFooter; + oTable._headerHidden = isHeaderHidden; + } + }; + + + /** + * add table container class name + */ + TableRenderer.renderContainerAttributes = function(rm, oControl) { + rm.addClass("sapMListTblCnt"); + }; + + /** + * render table tag and add required classes + */ + TableRenderer.renderListStartAttributes = function(rm, oControl) { + rm.write(""); + }; + + /** + * render footer and finish rendering table + */ + TableRenderer.renderListEndAttributes = function(rm, oControl) { + rm.write(""); // items should be rendered before foot + oControl._hasFooter && this.renderColumns(rm, oControl, "Foot"); + rm.write("
    "); + rm.write("
    "); + rm.renderControl(oTable._getSelectAllCheckbox()); + rm.write("
    "); + }; + + /** + * render no data + */ + TableRenderer.renderNoData = function(rm, oControl) { + rm.write(""); + + rm.write(""); + rm.writeEscaped(oControl.getNoDataText()); + rm.write(""); + + rm.write(""); + }; + + return TableRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TableRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/TableRenderer.js new file mode 100644 index 0000000..dd32922 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TableRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/core/Renderer','./ListBaseRenderer'],function(q,R,L){"use strict";var T=R.extend(L);T.renderColumns=function(r,t,a){var i=0,h=0,b=false,c=false,m=t.getMode(),M=L.ModeOrder[m],d="sapMListTbl",e=t.getId("tbl"),f=(a=="Head")?"th":"td",g=(a=="Head")?"columnheader":"gridcell",j="t"+a.toLowerCase(),C=t.getColumns(),k=(a=="Head")&&C.every(function(o){return!o.getHeader()||!o.getVisible()||o.isPopin()||o.isNeverVisible()||o.isHidden();}),l=(a=="Head")&&C.filter(function(o){return o.getVisible()&&!o.isPopin()&&!o.isNeverVisible()&&!o.isHidden();}).length==1,n=function(o,p,A){r.write("<");r.write(f);r.writeAttribute("role",g);A&&r.writeAttribute("aria-hidden","true");p&&r.writeAttribute("id",e+p);r.addClass(d+o);r.writeClasses();r.write(">");i++;};r.write("<"+j+">");r.write("");if(M==-1){if(m=="MultiSelect"&&a=="Head"&&!k){r.write("");r.write("
    ");r.renderControl(t._getSelectAllCheckbox());r.write("
    ");i++;}else{n("SelCol");}}C.forEach(function(o,p){o.setIndex(-1);o.setInitialOrder(p);});t.getColumns(true).forEach(function(o,p){if(!o.getVisible()){return;}if(o.isPopin()){b=true;return;}if(o.isNeverVisible()){return;}if(o.isHidden()){h++;}var s=o["get"+a+"er"](),w=l?"":o.getWidth(),u=o.getStyleClass(true),v=o.getCssAlign();r.write("<"+f);u&&r.addClass(u);r.addClass(d+"Cell");r.addClass(d+a+"erCell");r.writeAttribute("id",e+a+i);r.writeAttribute("data-sap-width",o.getWidth());r.writeAttribute("role",g);w&&r.addStyle("width",w);if(v){r.addStyle("text-align",v);}r.writeClasses();r.writeStyles();r.write(">");if(s){o.applyAlignTo(s);r.renderControl(s);}if(a=="Head"&&!c){c=!!o.getFooter();}r.write("");o.setIndex(i++);});n("NavCol",a+"Nav",!t._iItemNeedsColumn);if(M==1){n("SelCol");}r.write("");if(a=="Head"){t._hasPopin=b;t._colCount=i-h;t._hasFooter=c;t._headerHidden=k;}};T.renderContainerAttributes=function(r,c){r.addClass("sapMListTblCnt");};T.renderListStartAttributes=function(r,c){r.write("");};T.renderListEndAttributes=function(r,c){r.write("");c._hasFooter&&this.renderColumns(r,c,"Foot");r.write("");};T.renderNoData=function(r,c){r.write("");r.write("");r.writeEscaped(c.getNoDataText());r.write("");r.write("");};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TableSelectDialog-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/TableSelectDialog-dbg.js new file mode 100644 index 0000000..39fbac4 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TableSelectDialog-dbg.js @@ -0,0 +1,1015 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.TableSelectDialog. +sap.ui.define(['jquery.sap.global', './Button', './Dialog', './SearchField', './Table', './library', 'sap/ui/core/Control'], + function(jQuery, Button, Dialog, SearchField, Table, library, Control) { + "use strict"; + + + + /** + * Constructor for a new TableSelectDialog. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * A TableSelectDialog provides you a easier way to create a dialog that contains a list with grouping and search functionality. + * The Table used in a SelectDialog is a Table with Columns. After selecting an item, the dialog will be closed and a callback function will return the item being selected. + * @extends sap.ui.core.Control + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.16 + * @alias sap.m.TableSelectDialog + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var TableSelectDialog = Control.extend("sap.m.TableSelectDialog", /** @lends sap.m.TableSelectDialog.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * The title text appears in the dialog header. + */ + title : {type : "string", group : "Appearance", defaultValue : null}, + + /** + * This is the text shown when the table has no data. + */ + noDataText : {type : "string", group : "Appearance", defaultValue : null}, + + /** + * If on, the user can select several options from the table. + */ + multiSelect : {type : "boolean", group : "Dimension", defaultValue : false}, + + /** + * Number of items initially displayed in the table + */ + growingThreshold : {type : "int", group : "Misc", defaultValue : null}, + + /** + * The content width of the inner dialog. For more information, see the dialog documentation. + * @since 1.18 + */ + contentWidth : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : null}, + + /** + * This flag controls whether the dialog clears the selection or not. When the dialog is opened multiple times in the same context to allow for corrections of previous user inputs, set this flag to "true". When the dialog should reset the selection to allow for a new selection each time set it to "false" + * Note: This property must be set before the dialog is opened to have an effect. + * @since 1.18 + */ + rememberSelections : {type : "boolean", group : "Behavior", defaultValue : false}, + + /** + * The content height of the inner dialog. For more information, see the dialog documentation. + */ + contentHeight : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : null} + }, + defaultAggregation : "items", + aggregations : { + + /** + * The items of the table. + */ + items : {type : "sap.m.ColumnListItem", multiple : true, singularName : "item", bindable : "bindable"}, + + /** + * The internal dialog that will be shown when method open is called. + */ + _dialog : {type : "sap.ui.core.Control", multiple : false, visibility : "hidden"}, + + /** + * The columns bindings. + */ + columns : {type : "sap.m.Column", multiple : true, singularName : "column", bindable : "bindable"} + }, + events : { + + /** + * This event will be fired when the dialog is confirmed by selecting an item in single selection mode or by pressing the confirmation button in multi selection mode . The items being selected are returned as event parameters. + */ + confirm : { + parameters : { + + /** + * Returns the selected list item. When no item is selected, "null" is returned. When multi-selection is enabled and multiple items are selected, only the first selected item is returned. + */ + selectedItem : {type : "sap.m.StandardListItem"}, + + /** + * Returns an array containing the visible selected list items. If no items are selected, an empty array is returned. + */ + selectedItems : {type : "sap.m.StandardListItem[]"}, + + /** + * Returns the binding contexts of the selected items including the non-visible items. + * Note: In contrast to the parameter "selectedItems", this parameter will also include the selected but NOT visible items (e.g. due to list filtering). An empty array will be set for this parameter if no Databinding is used. + */ + selectedContexts : {type : "string"} + } + }, + + /** + * Fired when the search button has been clicked on dialog. + */ + search : { + parameters : { + + /** + * The value entered in the search field. + */ + value : {type : "string"}, + + /** + * The Items binding of the Table Select Dialog. It will only be available if the items aggregation is bound to a model. + */ + itemsBinding : {type : "any"} + } + }, + + /** + * This event is fired when the value of the search field is changed by a user - e.g. at each key press. + */ + liveChange : { + parameters : { + + /** + * The value entered in the search field. + */ + value : {type : "string"}, + + /** + * The Items binding of the Table Select Dialog. It will only be available if the items aggregation is bound to a model. + */ + itemsBinding : {type : "any"} + } + }, + + /** + * This event will be fired when the cancel button is clicked + */ + cancel : {} + } + }}); + + + /* =========================================================== */ + /* begin: API methods */ + /* =========================================================== */ + + /** + * Initializes the control + * @private + */ + TableSelectDialog.prototype.init = function () { + var that = this, + iLiveChangeTimer = 0, + fnResetAfterClose = null; + + fnResetAfterClose = function () { + that._oSelectedItem = that._oTable.getSelectedItem(); + that._aSelectedItems = that._oTable.getSelectedItems(); + + that._oDialog.detachAfterClose(fnResetAfterClose); + that._fireConfirmAndUpdateSelection(); + }; + + this._bAppendedToUIArea = false; + this._bInitBusy = false; + this._bFirstRender = true; + this._oRb = sap.ui.getCore().getLibraryResourceBundle("sap.m"); + + // store a reference to the table for binding management + this._oTable = new Table(this.getId() + "-table", { + growing: true, + growingScrollToLoad: true, + mode: sap.m.ListMode.SingleSelectMaster, + infoToolbar: new sap.m.Toolbar({ + visible: false, + active: false, + content: [ + new sap.m.Label({ + text: this._oRb.getText("TABLESELECTDIALOG_SELECTEDITEMS", [0]) + }) + ] + }), + selectionChange: function (oEvent) { + if (that._oDialog) { + if (!that.getMultiSelect()) { + // attach the reset function to afterClose to hide the dialog changes from the end user + that._oDialog.attachAfterClose(fnResetAfterClose); + that._oDialog.close(); + } else { + // update the selection label + that._updateSelectionIndicator(); + } + } + } + }); + this._table = this._oTable; // for downward compatibility + + // store a reference to the busyIndicator to display when data is currently loaded by a service + this._oBusyIndicator = new sap.m.BusyIndicator(this.getId() + "-busyIndicator").addStyleClass("sapMTableSelectDialogBusyIndicator", true); + + // store a reference to the searchField for filtering + this._oSearchField = new SearchField(this.getId() + "-searchField", { + width: "100%", + liveChange: function (oEvent) { + var sValue = oEvent.getSource().getValue(), + iDelay = (sValue ? 300 : 0); // no delay if value is empty + + // execute search after user stopped typing for 300ms + clearTimeout(iLiveChangeTimer); + if (iDelay) { + iLiveChangeTimer = setTimeout(function () { + that._executeSearch(sValue, "liveChange"); + }, iDelay); + } else { + that._executeSearch(sValue, "liveChange"); + } + }, + search: function (oEvent) { + that._executeSearch(oEvent.getSource().getValue(), "search"); + } + }); + this._searchField = this._oSearchField; // for downward compatibility + + // store a reference to the subheader for hiding it when data loads + this._oSubHeader = new sap.m.Bar(this.getId() + "-subHeader", { + contentMiddle: [ + this._searchField + ] + }); + + // store a reference to the internal dialog + this._oDialog = new Dialog(this.getId() + "-dialog", { + stretch: sap.ui.Device.system.phone, + contentHeight: "2000px", + subHeader: this._oSubHeader, + content: [this._oBusyIndicator, this._oTable], + leftButton: this._getCancelButton(), + initialFocus: ((sap.ui.Device.system.desktop && this._oSearchField) ? this._oSearchField : null) + }); + this._dialog = this._oDialog; // for downward compatibility + + //CSN# 3863876/2013: ESC key should also cancel dialog, not only close it + var fnDialogEscape = this._oDialog.onsapescape; + this._oDialog.onsapescape = function(oEvent) { + // call original escape function of the dialog + if (fnDialogEscape) { + fnDialogEscape.call(that._oDialog, oEvent); + } + // execute cancel action + that._onCancel(); + }; + + // internally set top and bottom margin of the dialog to 8rem respectively + // CSN# 333642/2014: in base theme the parameter sapUiFontSize is "medium", implement a fallback + this._oDialog._iVMargin = 8 * (parseInt(sap.ui.core.theming.Parameters.get("sapUiFontSize"), 10) || 16); //128 + + // helper variables for search update behaviour + this._sSearchFieldValue = ""; + + // flags to control the busy indicator behaviour because the growing table will always show the no data text when updating + this._bFirstRequest = true; // to only show the busy indicator for the first request when the dialog has been openend + this._iTableUpdateRequested = 0; // to only show the busy indicator when we initiated the change + }; + + /** + * Destroys the control + * @private + */ + TableSelectDialog.prototype.exit = function () { + // internal variables + this._oTable = null; + this._oSearchField = null; + this._oSubHeader = null; + this._oBusyIndicator = null; + this._sSearchFieldValue = null; + this._iTableUpdateRequested = null; + this._bFirstRequest = false; + this._bInitBusy = false; + this._bFirstRender = false; + + // sap.ui.core.Popup removes its content on close()/destroy() automatically from the static UIArea, + // but only if it added it there itself. As we did that, we have to remove it also on our own + if ( this._bAppendedToUIArea ) { + var oStatic = sap.ui.getCore().getStaticAreaRef(); + oStatic = sap.ui.getCore().getUIArea(oStatic); + oStatic.removeContent(this, true); + } + + if (this._oDialog) { + this._oDialog.destroy(); + this._oDialog = null; + } + + if (this._oOkButton) { + this._oOkButton.destroy(); + this._oOkButton = null; + } + + // selections + this._oSelectedItem = null; + this._aSelectedItems = null; + this._aInitiallySelectedItems = null; + + // compatibility + this._table = null; + this._searchField = null; + this._dialog = null; + }; + + /* + * Is called after renderer is finished to show the busy state + * @overwrite + * @protected + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype.onAfterRendering = function () { + if (this._bInitBusy && this._bFirstRender) { + this._setBusy(true); + this._bInitBusy = false; + this._bFirstRender = false; + } + + return this; + }; + + /* + * Invalidates the dialog instead of this control (we don't have a renderer) + * @overwrite + * @protected + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype.invalidate = function () { + // CSN #80686/2014: only invalidate inner dialog if call does not come from inside + if (this._oDialog && (!arguments[0] || arguments[0] && arguments[0].getId() !== this.getId() + "-dialog")) { + this._oDialog.invalidate(arguments); + } else { + Control.prototype.invalidate.apply(this, arguments); + } + + return this; + }; + + /** + * Opens the internal dialog with a searchfield and a table. + * @public + * @param {string} sSearchValue + * Value for the search. The table will be automatically trigger the search event if this parameter is set. + * @returns {sap.m.TableSelectDialog} this to allow method chaining + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + TableSelectDialog.prototype.open = function (sSearchValue) { + if (!this.getParent() && !this._bAppendedToUIArea) { + var oStatic = sap.ui.getCore().getStaticAreaRef(); + oStatic = sap.ui.getCore().getUIArea(oStatic); + oStatic.addContent(this, true); + this._bAppendedToUIArea = true; + } + + // reset internal variables + this._bFirstRequest = true; + + // set search field value + this._oSearchField.setValue(sSearchValue); + + + // open the dialog + this._oDialog.open(); + + + // open dialog with busy state if a list update is still in progress + if (this._bInitBusy) { + this._setBusy(true); + } + + // store the current selection for the cancel event + this._aInitiallySelectedItems = this._oTable.getSelectedItems(); + + // refresh the selection indicator to be in sync with the model + this._updateSelectionIndicator(); + + //now return the control for chaining + return this; + }; + + /** + * Sets the growing threshold to the internal table + * @public + * @param {int} iValue Value for the table's growing threshold. + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype.setGrowingThreshold = function (iValue) { + this._oTable.setGrowingThreshold(iValue); + this.setProperty("growingThreshold", iValue, true); + + return this; + }; + + /** + * Enable/Disable multi selection mode. + * @overwrite + * @public + * @param {boolean} bMulti flag for multi selection mode + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype.setMultiSelect = function (bMulti) { + this.setProperty("multiSelect", bMulti, true); + if (bMulti) { + this._oTable.setMode(sap.m.ListMode.MultiSelect); + this._oTable.setIncludeItemInSelection(true); + this._oDialog.setRightButton(this._getCancelButton()); + this._oDialog.setLeftButton(this._getOkButton()); + } else { + this._oTable.setMode(sap.m.ListMode.SingleSelectMaster); + this._oDialog.setLeftButton(this._getCancelButton()); + } + + return this; + }; + + /** + * Set the title of the internal dialog + * @overwrite + * @public + * @param {string} sTitle the title text for the dialog + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype.setTitle = function (sTitle) { + this.setProperty("title", sTitle, true); + this._oDialog.setTitle(sTitle); + + return this; + }; + + /** + * Set the no data text of the internal table + * @overwrite + * @public + * @param {string} sNoDataText the no data text for the table + */ + TableSelectDialog.prototype.setNoDataText = function (sNoDataText) { + this._oTable.setNoDataText(sNoDataText); + + return this; + }; + + /** + * Get the internal List's no data text property + * @overwrite + * @public + * @returns {string} the current no data text + */ + TableSelectDialog.prototype.getNoDataText = function () { + return this._oTable.getNoDataText(); + }; + + /** + * Get content width of the select dialog {@link sap.m.Dialog} + * @overwrite + * @public + * @returns {sap.ui.core.CSSSize} sWidth the content width of the internal dialog + */ + TableSelectDialog.prototype.getContentWidth = function () { + return this._oDialog.getContentWidth(); + }; + + /** + * Set content width of the select dialog {@link sap.m.Dialog} + * @param {sap.ui.core.CSSSize} sWidth the new content width value for the dialog + * @public + * @overwrite + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype.setContentWidth = function (sWidth) { + this._oDialog.setContentWidth(sWidth); + + return this; + }; + + /** + * Get content height of the select dialog {@link sap.m.Dialog} + * @overwrite + * @public + * @returns {sap.ui.core.CSSSize} sHeight the content height of the internal dialog + */ + TableSelectDialog.prototype.getContentHeight = function () { + return this._oDialog.getContentHeight(); + }; + + /** + * Set content height of the select dialog {@link sap.m.Dialog} + * @param {sap.ui.core.CSSSize} sHeight the new content height value for the dialog + * @public + * @overwrite + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype.setContentHeight = function (sHeight) { + this._oDialog.setContentHeight(sHeight); + + return this; + }; + + /** + * Forward method to the inner dialog: addStyleClass + * @public + * @override + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype.addStyleClass = function () { + this._oDialog.addStyleClass.apply(this._oDialog, arguments); + return this; + }; + + /** + * Forward method to the inner dialog: removeStyleClass + * @public + * @override + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype.removeStyleClass = function () { + this._oDialog.removeStyleClass.apply(this._oDialog, arguments); + return this; + }; + + /** + * Forward method to the inner dialog: toggleStyleClass + * @public + * @override + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype.toggleStyleClass = function () { + this._oDialog.toggleStyleClass.apply(this._oDialog, arguments); + return this; + }; + + /** + * Forward method to the inner dialog: hasStyleClass + * @public + * @override + * @returns {boolean} true if the class is set, false otherwise + */ + TableSelectDialog.prototype.hasStyleClass = function () { + return this._oDialog.hasStyleClass.apply(this._oDialog, arguments); + }; + + /** + * Forward method to the inner dialog: getDomRef + * @public + * @override + * @return {Element} The Element's DOM Element sub DOM Element or null + */ + TableSelectDialog.prototype.getDomRef = function () { + if (this._oDialog) { + return this._oDialog.getDomRef.apply(this._oDialog, arguments); + } else { + return null; + } + }; + + /* =========================================================== */ + /* begin: forward aggregation methods to table */ + /* =========================================================== */ + + /* + * Set the model for the internal table AND the current control so that + * both controls can be used with data binding + * @overwrite + * @public + * @param {sap.ui.Model} oModel the model that holds the data for the table + * @param {string} sName the optional model name + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype._setModel = TableSelectDialog.prototype.setModel; + TableSelectDialog.prototype.setModel = function (oModel, sModelName) { + var aArgs = Array.prototype.slice.call(arguments); + + // reset busy mode if model was changed + this._setBusy(false); + this._bInitBusy = false; + + // we made a request in this control, so we update the counter + this._iTableUpdateRequested += 1; + + // attach events to listen to model updates and show/hide a busy indicator + this._oTable.attachUpdateStarted(this._updateStarted, this); + this._oTable.attachUpdateFinished(this._updateFinished, this); + + // pass the model to the table and also to the local control to allow binding of own properties + this._oTable.setModel(oModel, sModelName); + TableSelectDialog.prototype._setModel.apply(this, aArgs); + + // reset the selection label when setting the model + this._updateSelectionIndicator(); + + return this; + }; + + /* + * Forwards a function call to a managed object based on the aggregation name. + * If the name is items, it will be forwarded to the table, otherwise called locally + * @private + * @param {string} sFunctionName the name of the function to be called + * @param {string} sAggregationName the name of the aggregation asociated + * @returns {mixed} the return type of the called function + */ + TableSelectDialog.prototype._callMethodInManagedObject = function (sFunctionName, sAggregationName) { + var aArgs = Array.prototype.slice.call(arguments); + + if (sAggregationName === "items") { + // apply to the internal table + return this._oTable[sFunctionName].apply(this._oTable, aArgs.slice(1)); + } else if (sAggregationName === "columns") { + // apply to the internal table + return this._oTable[sFunctionName].apply(this._oTable, aArgs.slice(1)); + } else { + // apply to this control + return sap.ui.base.ManagedObject.prototype[sFunctionName].apply(this, aArgs.slice(1)); + } + }; + + /** + * Forwards aggregations with the name of items or columns to the internal table. + * @overwrite + * @protected + * @param {string} sAggregationName the name for the binding + * @param {object} oBindingInfo the configuration parameters for the binding + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype.bindAggregation = function () { + var args = Array.prototype.slice.call(arguments); + + // propagate the bind aggregation function to list + this._callMethodInManagedObject.apply(this, ["bindAggregation"].concat(args)); + return this; + }; + + TableSelectDialog.prototype.validateAggregation = function (sAggregationName, oObject, bMultiple) { + return this._callMethodInManagedObject("validateAggregation", sAggregationName, oObject, bMultiple); + }; + + TableSelectDialog.prototype.setAggregation = function (sAggregationName, oObject, bSuppressInvalidate) { + this._callMethodInManagedObject("setAggregation", sAggregationName, oObject, bSuppressInvalidate); + return this; + }; + + TableSelectDialog.prototype.getAggregation = function (sAggregationName, oDefaultForCreation) { + return this._callMethodInManagedObject("getAggregation", sAggregationName, oDefaultForCreation); + }; + + TableSelectDialog.prototype.indexOfAggregation = function (sAggregationName, oObject) { + return this._callMethodInManagedObject("indexOfAggregation", sAggregationName, oObject); + }; + + TableSelectDialog.prototype.insertAggregation = function (sAggregationName, oObject, iIndex, bSuppressInvalidate) { + this._callMethodInManagedObject("insertAggregation", sAggregationName, oObject, iIndex, bSuppressInvalidate); + return this; + }; + + TableSelectDialog.prototype.addAggregation = function (sAggregationName, oObject, bSuppressInvalidate) { + this._callMethodInManagedObject("addAggregation", sAggregationName, oObject, bSuppressInvalidate); + return this; + }; + + TableSelectDialog.prototype.removeAggregation = function (sAggregationName, oObject, bSuppressInvalidate) { + this._callMethodInManagedObject("removeAggregation", sAggregationName, oObject, bSuppressInvalidate); + return this; + }; + + TableSelectDialog.prototype.removeAllAggregation = function (sAggregationName, bSuppressInvalidate) { + return this._callMethodInManagedObject("removeAllAggregation", sAggregationName, bSuppressInvalidate); + }; + + TableSelectDialog.prototype.destroyAggregation = function (sAggregationName, bSuppressInvalidate) { + this._callMethodInManagedObject("destroyAggregation", sAggregationName, bSuppressInvalidate); + return this; + }; + + TableSelectDialog.prototype.getBinding = function (sAggregationName) { + return this._callMethodInManagedObject("getBinding", sAggregationName); + }; + + TableSelectDialog.prototype.getBindingInfo = function (sAggregationName) { + return this._callMethodInManagedObject("getBindingInfo", sAggregationName); + }; + + TableSelectDialog.prototype.getBindingPath = function (sAggregationName) { + return this._callMethodInManagedObject("getBindingPath", sAggregationName); + }; + + TableSelectDialog.prototype.getBindingContext = function (sModelName) { + return this._oTable.getBindingContext(sModelName); + }; + + /* + * Set the binding context for the internal table AND the current control so that + * both controls can be used with the context + * @overwrite + * @public + * @param {sap.ui.model.Context} oContext the new context + * @param {string} sModelName the optional model name + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype._setBindingContext = TableSelectDialog.prototype.setBindingContext; + TableSelectDialog.prototype.setBindingContext = function (oContext, sModelName) { + var args = Array.prototype.slice.call(arguments); + + // pass the model to the list and also to the local control to allow binding of own properties + this._oTable.setBindingContext(oContext, sModelName); + TableSelectDialog.prototype._setBindingContext.apply(this, args); + + return this; + }; + + /* =========================================================== */ + /* end: forward aggregation methods to table */ + /* =========================================================== */ + + /* =========================================================== */ + /* begin: internal methods and properties */ + /* =========================================================== */ + + /* + * Fires the search event on the internal when dialog is opened. + * This function is also called whenever a search event on the searchfield is triggered + * @private + * @param {string} sValue the new Search value or undefined if called by management functions + * @param {string} sEventType the search field event type that has been called (liveChange / search) + * @returns {sap.m.TableSelectDialog} this pointer for chaining + */ + TableSelectDialog.prototype._executeSearch = function (sValue, sEventType) { + var oTable = this._oTable, + oBinding = (oTable ? oTable.getBinding("items") : undefined), + bSearchValueDifferent = (this._sSearchFieldValue !== sValue); // to prevent unwanted duplicate requests + + // fire either the Search event or the liveChange event when dialog is opened. + // 1) when the clear icon is called then both liveChange and search events are fired but we only want to process the first one + // 2) when a livechange has been triggered by typing we don't want the next search event to be processed (typing + enter or typing + search button) + if (this._oDialog.isOpen() && ((bSearchValueDifferent && sEventType === "liveChange") || sEventType === "search")) { + // set the internal value to the passed value to check if the same value has already been filtered (happens when clear is called, it fires liveChange and change events) + this._sSearchFieldValue = sValue; + + // only set when the binding has already been executed + // only set when the binding has already been executed + if (oBinding) { + // we made another request in this control, so we update the counter + this._iTableUpdateRequested += 1; + if (sEventType === "search") { + // fire the search so the data can be updated externally + this.fireSearch({value: sValue, itemsBinding: oBinding}); + } else if (sEventType === "liveChange") { + // fire the liveChange so the data can be updated externally + this.fireLiveChange({value: sValue, itemsBinding: oBinding}); + } + } else { + // no binding, just fire the event for manual filtering + if (sEventType === "search") { + // fire the search so the data can be updated externally + this.fireSearch({value: sValue}); + } else if (sEventType === "liveChange") { + // fire the liveChange so the data can be updated externally + this.fireLiveChange({value: sValue}); + } + } + } + + return this; + }; + + /* + * Internal function that shows/hides a local busy indicator and hides/shows the list + * based on the parameter flag. For the first request, the search field is also hidden. + * @private + * @param {boolean} bBusy flag (true = show, false = hide) + */ + TableSelectDialog.prototype._setBusy = function (bBusy) { + if (this._iTableUpdateRequested) { // check if the event was caused by our control + if (bBusy) { + if (this._bFirstRequest) { // also hide the header bar for the first request + this._oSubHeader.$().css('display', 'none'); + } + this._oTable.addStyleClass('sapMSelectDialogListHide'); + this._oBusyIndicator.$().css('display', 'inline-block'); + } else { + if (this._bFirstRequest) { // also show the header bar again for the first request + this._oSubHeader.$().css('display', 'block'); + } + this._oTable.removeStyleClass('sapMSelectDialogListHide'); + this._oBusyIndicator.$().css('display', 'none'); + } + } + }; + + /* + * Event function that is called when the model sent a request to update the data. + * It shows a busy indicator and hides searchField and list in the dialog. + * @private + * @param {jQuery.EventObject} oEvent The event object + */ + TableSelectDialog.prototype._updateStarted = function (oEvent) { + if (this.getModel() && this.getModel() instanceof sap.ui.model.odata.ODataModel) { + if (this._oDialog.isOpen() && this._iTableUpdateRequested) { + // only set busy mode when we have an oData model + this._setBusy(true); + } else { + this._bInitBusy = true; + } + } + }; + + /* + * Event function that is called when the model request is finished. + * It hides the busy indicator and shows searchField and list in the dialog. + * @private + * @param {jQuery.EventObject} oEvent The event object + */ + TableSelectDialog.prototype._updateFinished = function (oEvent) { + this._updateSelectionIndicator(); + // only reset busy mode when we have an oData model + if (this.getModel() && this.getModel() instanceof sap.ui.model.odata.ODataModel) { + this._setBusy(false); + this._bInitBusy = false; + } + + if (sap.ui.Device.system.desktop) { + + if (this._oTable.getItems()[0]) { + this._oDialog.setInitialFocus(this._oTable.getItems()[0]); + } else { + this._oDialog.setInitialFocus(this._oSearchField); + } + + // set initial focus manually after all items are visible + if (this._bFirstRequest) { + var oFocusControl = this._oTable.getItems()[0]; + if (!oFocusControl) { + oFocusControl = this._oSearchField; + } + + if (oFocusControl.getFocusDomRef()) { + oFocusControl.getFocusDomRef().focus(); + } + } + } + + this._bFirstRequest = false; + + // we received a request (from this or from another control) so set the counter to 0 + this._iTableUpdateRequested = 0; + }; + + /* + * Lazy load the ok button if needed for MultiSelect mode + * @private + * @return {sap.m.Button} the button + */ + TableSelectDialog.prototype._getOkButton = function () { + var that = this, + fnOKAfterClose = null; + + fnOKAfterClose = function () { + that._oSelectedItem = that._oTable.getSelectedItem(); + that._aSelectedItems = that._oTable.getSelectedItems(); + + that._oDialog.detachAfterClose(fnOKAfterClose); + that._fireConfirmAndUpdateSelection(); + }; + + if (!this._oOkButton) { + this._oOkButton = new Button(this.getId() + "-ok", { + text: this._oRb.getText("MSGBOX_OK"), + press: function () { + // attach the reset function to afterClose to hide the dialog changes from the end user + that._oDialog.attachAfterClose(fnOKAfterClose); + that._oDialog.close(); + } + }); + } + return this._oOkButton; + }; + + /* + * Lazy load the cancel button + * @private + * @return {sap.m.Button} the button + */ + TableSelectDialog.prototype._getCancelButton = function () { + var that = this; + + if (!this._oCancelButton) { + this._oCancelButton = new Button(this.getId() + "-cancel", { + text: this._oRb.getText("MSGBOX_CANCEL"), + press: function () { + that._onCancel(); + } + }); + } + return this._oCancelButton; + }; + + /* + * Internal event handler for the cancel button and ESC key + * @private + */ + TableSelectDialog.prototype._onCancel = function (oEvent) { + var that = this, + fnAfterClose = null; + + fnAfterClose = function () { + // reset internal selection values + that._oSelectedItem = null; + that._aSelectedItems = []; + that._sSearchFieldValue = null; + + // detach this function + that._oDialog.detachAfterClose(fnAfterClose); + + // fire cancel event + that.fireCancel(); + + // reset selection + that._resetSelection(); + }; + + // attach the reset function to afterClose to hide the dialog changes from the end user + this._oDialog.attachAfterClose(fnAfterClose); + this._oDialog.close(); + }; + + /* + * Internal function to update the selection indicator bar + * @private + */ + TableSelectDialog.prototype._updateSelectionIndicator = function () { + var iSelectedContexts = this._oTable.getSelectedContexts(true).length, + oInfoBar = this._oTable.getInfoToolbar(); + + // update the selection label + oInfoBar.setVisible(!!iSelectedContexts); + oInfoBar.getContent()[0].setText(this._oRb.getText("TABLESELECTDIALOG_SELECTEDITEMS", [iSelectedContexts])); + }; + + /* + * Internal function to fire the confirm event and to update the selection of the table. + * The function is called on pressing ok and on close in single select mode + * @private + */ + TableSelectDialog.prototype._fireConfirmAndUpdateSelection = function () { + // fire confirm event with current selection + this.fireConfirm({ + selectedItem: this._oSelectedItem, + selectedItems: this._aSelectedItems, + selectedContexts: this._oTable.getSelectedContexts(true) + }); + this._updateSelection(); + }; + + /* + * Internal function to remove/keep the table selection based on property "rememberSelection" + * @private + */ + TableSelectDialog.prototype._updateSelection = function () { + // cleanup old selection on close to allow reuse of dialog + // due to the delayed call (dialog onAfterClose) the control could be already destroyed + if (!this.getRememberSelections() && !this.bIsDestroyed) { + this._oTable.removeSelections(true); + delete this._oSelectedItem; + delete this._aSelectedItems; + } + }; + + /* + * Internal function to reset the selection to the items that were selected when the dialog was opened + * @private + */ + TableSelectDialog.prototype._resetSelection = function () { + var i = 0; + + // due to the delayed call (dialog onAfterClose) the control could be already destroyed + if (!this.bIsDestroyed) { + this._oTable.removeSelections(); + for (; i < this._aInitiallySelectedItems.length; i++) { + this._oTable.setSelectedItem(this._aInitiallySelectedItems[i]); + } + } + }; + + /* =========================================================== */ + /* end: internal methods */ + /* =========================================================== */ + + + return TableSelectDialog; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TableSelectDialog.js b/DVHMA-OpenUI5/www/resources/sap/m/TableSelectDialog.js new file mode 100644 index 0000000..6f873e8 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TableSelectDialog.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Button','./Dialog','./SearchField','./Table','./library','sap/ui/core/Control'],function(q,B,D,S,T,l,C){"use strict";var a=C.extend("sap.m.TableSelectDialog",{metadata:{library:"sap.m",properties:{title:{type:"string",group:"Appearance",defaultValue:null},noDataText:{type:"string",group:"Appearance",defaultValue:null},multiSelect:{type:"boolean",group:"Dimension",defaultValue:false},growingThreshold:{type:"int",group:"Misc",defaultValue:null},contentWidth:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:null},rememberSelections:{type:"boolean",group:"Behavior",defaultValue:false},contentHeight:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:null}},defaultAggregation:"items",aggregations:{items:{type:"sap.m.ColumnListItem",multiple:true,singularName:"item",bindable:"bindable"},_dialog:{type:"sap.ui.core.Control",multiple:false,visibility:"hidden"},columns:{type:"sap.m.Column",multiple:true,singularName:"column",bindable:"bindable"}},events:{confirm:{parameters:{selectedItem:{type:"sap.m.StandardListItem"},selectedItems:{type:"sap.m.StandardListItem[]"},selectedContexts:{type:"string"}}},search:{parameters:{value:{type:"string"},itemsBinding:{type:"any"}}},liveChange:{parameters:{value:{type:"string"},itemsBinding:{type:"any"}}},cancel:{}}}});a.prototype.init=function(){var t=this,L=0,r=null;r=function(){t._oSelectedItem=t._oTable.getSelectedItem();t._aSelectedItems=t._oTable.getSelectedItems();t._oDialog.detachAfterClose(r);t._fireConfirmAndUpdateSelection();};this._bAppendedToUIArea=false;this._bInitBusy=false;this._bFirstRender=true;this._oRb=sap.ui.getCore().getLibraryResourceBundle("sap.m");this._oTable=new T(this.getId()+"-table",{growing:true,growingScrollToLoad:true,mode:sap.m.ListMode.SingleSelectMaster,infoToolbar:new sap.m.Toolbar({visible:false,active:false,content:[new sap.m.Label({text:this._oRb.getText("TABLESELECTDIALOG_SELECTEDITEMS",[0])})]}),selectionChange:function(e){if(t._oDialog){if(!t.getMultiSelect()){t._oDialog.attachAfterClose(r);t._oDialog.close();}else{t._updateSelectionIndicator();}}}});this._table=this._oTable;this._oBusyIndicator=new sap.m.BusyIndicator(this.getId()+"-busyIndicator").addStyleClass("sapMTableSelectDialogBusyIndicator",true);this._oSearchField=new S(this.getId()+"-searchField",{width:"100%",liveChange:function(e){var v=e.getSource().getValue(),i=(v?300:0);clearTimeout(L);if(i){L=setTimeout(function(){t._executeSearch(v,"liveChange");},i);}else{t._executeSearch(v,"liveChange");}},search:function(e){t._executeSearch(e.getSource().getValue(),"search");}});this._searchField=this._oSearchField;this._oSubHeader=new sap.m.Bar(this.getId()+"-subHeader",{contentMiddle:[this._searchField]});this._oDialog=new D(this.getId()+"-dialog",{stretch:sap.ui.Device.system.phone,contentHeight:"2000px",subHeader:this._oSubHeader,content:[this._oBusyIndicator,this._oTable],leftButton:this._getCancelButton(),initialFocus:((sap.ui.Device.system.desktop&&this._oSearchField)?this._oSearchField:null)});this._dialog=this._oDialog;var d=this._oDialog.onsapescape;this._oDialog.onsapescape=function(e){if(d){d.call(t._oDialog,e);}t._onCancel();};this._oDialog._iVMargin=8*(parseInt(sap.ui.core.theming.Parameters.get("sapUiFontSize"),10)||16);this._sSearchFieldValue="";this._bFirstRequest=true;this._iTableUpdateRequested=0;};a.prototype.exit=function(){this._oTable=null;this._oSearchField=null;this._oSubHeader=null;this._oBusyIndicator=null;this._sSearchFieldValue=null;this._iTableUpdateRequested=null;this._bFirstRequest=false;this._bInitBusy=false;this._bFirstRender=false;if(this._bAppendedToUIArea){var s=sap.ui.getCore().getStaticAreaRef();s=sap.ui.getCore().getUIArea(s);s.removeContent(this,true);}if(this._oDialog){this._oDialog.destroy();this._oDialog=null;}if(this._oOkButton){this._oOkButton.destroy();this._oOkButton=null;}this._oSelectedItem=null;this._aSelectedItems=null;this._aInitiallySelectedItems=null;this._table=null;this._searchField=null;this._dialog=null;};a.prototype.onAfterRendering=function(){if(this._bInitBusy&&this._bFirstRender){this._setBusy(true);this._bInitBusy=false;this._bFirstRender=false;}return this;};a.prototype.invalidate=function(){if(this._oDialog&&(!arguments[0]||arguments[0]&&arguments[0].getId()!==this.getId()+"-dialog")){this._oDialog.invalidate(arguments);}else{C.prototype.invalidate.apply(this,arguments);}return this;};a.prototype.open=function(s){if(!this.getParent()&&!this._bAppendedToUIArea){var o=sap.ui.getCore().getStaticAreaRef();o=sap.ui.getCore().getUIArea(o);o.addContent(this,true);this._bAppendedToUIArea=true;}this._bFirstRequest=true;this._oSearchField.setValue(s);this._oDialog.open();if(this._bInitBusy){this._setBusy(true);}this._aInitiallySelectedItems=this._oTable.getSelectedItems();this._updateSelectionIndicator();return this;};a.prototype.setGrowingThreshold=function(v){this._oTable.setGrowingThreshold(v);this.setProperty("growingThreshold",v,true);return this;};a.prototype.setMultiSelect=function(m){this.setProperty("multiSelect",m,true);if(m){this._oTable.setMode(sap.m.ListMode.MultiSelect);this._oTable.setIncludeItemInSelection(true);this._oDialog.setRightButton(this._getCancelButton());this._oDialog.setLeftButton(this._getOkButton());}else{this._oTable.setMode(sap.m.ListMode.SingleSelectMaster);this._oDialog.setLeftButton(this._getCancelButton());}return this;};a.prototype.setTitle=function(t){this.setProperty("title",t,true);this._oDialog.setTitle(t);return this;};a.prototype.setNoDataText=function(n){this._oTable.setNoDataText(n);return this;};a.prototype.getNoDataText=function(){return this._oTable.getNoDataText();};a.prototype.getContentWidth=function(){return this._oDialog.getContentWidth();};a.prototype.setContentWidth=function(w){this._oDialog.setContentWidth(w);return this;};a.prototype.getContentHeight=function(){return this._oDialog.getContentHeight();};a.prototype.setContentHeight=function(h){this._oDialog.setContentHeight(h);return this;};a.prototype.addStyleClass=function(){this._oDialog.addStyleClass.apply(this._oDialog,arguments);return this;};a.prototype.removeStyleClass=function(){this._oDialog.removeStyleClass.apply(this._oDialog,arguments);return this;};a.prototype.toggleStyleClass=function(){this._oDialog.toggleStyleClass.apply(this._oDialog,arguments);return this;};a.prototype.hasStyleClass=function(){return this._oDialog.hasStyleClass.apply(this._oDialog,arguments);};a.prototype.getDomRef=function(){if(this._oDialog){return this._oDialog.getDomRef.apply(this._oDialog,arguments);}else{return null;}};a.prototype._setModel=a.prototype.setModel;a.prototype.setModel=function(m,M){var A=Array.prototype.slice.call(arguments);this._setBusy(false);this._bInitBusy=false;this._iTableUpdateRequested+=1;this._oTable.attachUpdateStarted(this._updateStarted,this);this._oTable.attachUpdateFinished(this._updateFinished,this);this._oTable.setModel(m,M);a.prototype._setModel.apply(this,A);this._updateSelectionIndicator();return this;};a.prototype._callMethodInManagedObject=function(f,A){var b=Array.prototype.slice.call(arguments);if(A==="items"){return this._oTable[f].apply(this._oTable,b.slice(1));}else if(A==="columns"){return this._oTable[f].apply(this._oTable,b.slice(1));}else{return sap.ui.base.ManagedObject.prototype[f].apply(this,b.slice(1));}};a.prototype.bindAggregation=function(){var b=Array.prototype.slice.call(arguments);this._callMethodInManagedObject.apply(this,["bindAggregation"].concat(b));return this;};a.prototype.validateAggregation=function(A,o,m){return this._callMethodInManagedObject("validateAggregation",A,o,m);};a.prototype.setAggregation=function(A,o,s){this._callMethodInManagedObject("setAggregation",A,o,s);return this;};a.prototype.getAggregation=function(A,d){return this._callMethodInManagedObject("getAggregation",A,d);};a.prototype.indexOfAggregation=function(A,o){return this._callMethodInManagedObject("indexOfAggregation",A,o);};a.prototype.insertAggregation=function(A,o,i,s){this._callMethodInManagedObject("insertAggregation",A,o,i,s);return this;};a.prototype.addAggregation=function(A,o,s){this._callMethodInManagedObject("addAggregation",A,o,s);return this;};a.prototype.removeAggregation=function(A,o,s){this._callMethodInManagedObject("removeAggregation",A,o,s);return this;};a.prototype.removeAllAggregation=function(A,s){return this._callMethodInManagedObject("removeAllAggregation",A,s);};a.prototype.destroyAggregation=function(A,s){this._callMethodInManagedObject("destroyAggregation",A,s);return this;};a.prototype.getBinding=function(A){return this._callMethodInManagedObject("getBinding",A);};a.prototype.getBindingInfo=function(A){return this._callMethodInManagedObject("getBindingInfo",A);};a.prototype.getBindingPath=function(A){return this._callMethodInManagedObject("getBindingPath",A);};a.prototype.getBindingContext=function(m){return this._oTable.getBindingContext(m);};a.prototype._setBindingContext=a.prototype.setBindingContext;a.prototype.setBindingContext=function(c,m){var b=Array.prototype.slice.call(arguments);this._oTable.setBindingContext(c,m);a.prototype._setBindingContext.apply(this,b);return this;};a.prototype._executeSearch=function(v,e){var t=this._oTable,b=(t?t.getBinding("items"):undefined),s=(this._sSearchFieldValue!==v);if(this._oDialog.isOpen()&&((s&&e==="liveChange")||e==="search")){this._sSearchFieldValue=v;if(b){this._iTableUpdateRequested+=1;if(e==="search"){this.fireSearch({value:v,itemsBinding:b});}else if(e==="liveChange"){this.fireLiveChange({value:v,itemsBinding:b});}}else{if(e==="search"){this.fireSearch({value:v});}else if(e==="liveChange"){this.fireLiveChange({value:v});}}}return this;};a.prototype._setBusy=function(b){if(this._iTableUpdateRequested){if(b){if(this._bFirstRequest){this._oSubHeader.$().css('display','none');}this._oTable.addStyleClass('sapMSelectDialogListHide');this._oBusyIndicator.$().css('display','inline-block');}else{if(this._bFirstRequest){this._oSubHeader.$().css('display','block');}this._oTable.removeStyleClass('sapMSelectDialogListHide');this._oBusyIndicator.$().css('display','none');}}};a.prototype._updateStarted=function(e){if(this.getModel()&&this.getModel()instanceof sap.ui.model.odata.ODataModel){if(this._oDialog.isOpen()&&this._iTableUpdateRequested){this._setBusy(true);}else{this._bInitBusy=true;}}};a.prototype._updateFinished=function(e){this._updateSelectionIndicator();if(this.getModel()&&this.getModel()instanceof sap.ui.model.odata.ODataModel){this._setBusy(false);this._bInitBusy=false;}if(sap.ui.Device.system.desktop){if(this._oTable.getItems()[0]){this._oDialog.setInitialFocus(this._oTable.getItems()[0]);}else{this._oDialog.setInitialFocus(this._oSearchField);}if(this._bFirstRequest){var f=this._oTable.getItems()[0];if(!f){f=this._oSearchField;}if(f.getFocusDomRef()){f.getFocusDomRef().focus();}}}this._bFirstRequest=false;this._iTableUpdateRequested=0;};a.prototype._getOkButton=function(){var t=this,o=null;o=function(){t._oSelectedItem=t._oTable.getSelectedItem();t._aSelectedItems=t._oTable.getSelectedItems();t._oDialog.detachAfterClose(o);t._fireConfirmAndUpdateSelection();};if(!this._oOkButton){this._oOkButton=new B(this.getId()+"-ok",{text:this._oRb.getText("MSGBOX_OK"),press:function(){t._oDialog.attachAfterClose(o);t._oDialog.close();}});}return this._oOkButton;};a.prototype._getCancelButton=function(){var t=this;if(!this._oCancelButton){this._oCancelButton=new B(this.getId()+"-cancel",{text:this._oRb.getText("MSGBOX_CANCEL"),press:function(){t._onCancel();}});}return this._oCancelButton;};a.prototype._onCancel=function(e){var t=this,A=null;A=function(){t._oSelectedItem=null;t._aSelectedItems=[];t._sSearchFieldValue=null;t._oDialog.detachAfterClose(A);t.fireCancel();t._resetSelection();};this._oDialog.attachAfterClose(A);this._oDialog.close();};a.prototype._updateSelectionIndicator=function(){var s=this._oTable.getSelectedContexts(true).length,i=this._oTable.getInfoToolbar();i.setVisible(!!s);i.getContent()[0].setText(this._oRb.getText("TABLESELECTDIALOG_SELECTEDITEMS",[s]));};a.prototype._fireConfirmAndUpdateSelection=function(){this.fireConfirm({selectedItem:this._oSelectedItem,selectedItems:this._aSelectedItems,selectedContexts:this._oTable.getSelectedContexts(true)});this._updateSelection();};a.prototype._updateSelection=function(){if(!this.getRememberSelections()&&!this.bIsDestroyed){this._oTable.removeSelections(true);delete this._oSelectedItem;delete this._aSelectedItems;}};a.prototype._resetSelection=function(){var i=0;if(!this.bIsDestroyed){this._oTable.removeSelections();for(;i 0 && !/\s/.test(sText)) { + this.$().addClass("sapMTextBreakWord"); + } else { + this.$().removeClass("sapMTextBreakWord"); + } + } + } + + return this; + }; + + // returns the text value and normalize line-ending character for rendering + Text.prototype.getText = function(bNormalize) { + var sText = this.getProperty("text"); + + // handle line ending characters for renderer + if (bNormalize) { + return sText.replace(/\r\n/g, "\n"); + } + + return sText; + }; + + // required adaptations after rendering + Text.prototype.onAfterRendering = function() { + // check visible, max-lines and line-clamping support + if (this.getVisible() && + this.hasMaxLines() && + !this.canUseNativeLineClamp()) { + + // set max-height for maxLines support + this.clampHeight(); + } + }; + + /** + * Determines whether max lines should be rendered or not + * + * @since 1.22 + * @protected + * @returns {HTMLElement|null} + */ + Text.prototype.hasMaxLines = function() { + return (this.getWrapping() && this.getMaxLines() > 1); + }; + + /** + * Returns the text node container's DOM reference. + * This can be different then getDomRef when inner wrapper is needed. + * + * @since 1.22 + * @protected + * @returns {HTMLElement|null} + */ + Text.prototype.getTextDomRef = function() { + if (!this.getVisible()) { + return null; + } + + if (this.hasMaxLines()) { + return this.getDomRef("inner"); + } + + return this.getDomRef(); + }; + + /** + * Decides whether the control can use native line clamp feature or not. + * In RTL mode native line clamp feature is not supported + * + * @since 1.20 + * @protected + * @return {Boolean} + */ + Text.prototype.canUseNativeLineClamp = function() { + // has line clamp feature + if (!Text.hasNativeLineClamp) { + return false; + } + + // is text direction rtl + var oDirection = sap.ui.core.TextDirection; + if (this.getTextDirection() == oDirection.RTL) { + return false; + } + + // is text direction inherited as rtl + if (this.getTextDirection() == oDirection.Inherit && sap.ui.getCore().getConfiguration().getRTL()) { + return false; + } + + return true; + }; + + /** + * Caches and returns the computed line height of the text. + * + * @since 1.22 + * @protected + * @see sap.m.Text#cacheLineHeight + * @param {HTMLElement} [oDomRef] DOM reference of the text container. + * @returns {Number} returns calculated line-height + */ + Text.prototype.getLineHeight = function(oDomRef) { + // return cached value if possible and available + if (this.cacheLineHeight && this._fLineHeight) { + return this._fLineHeight; + } + + // check whether dom ref exist or not + oDomRef = oDomRef || this.getTextDomRef(); + if (!oDomRef) { + return 0; + } + + // check line-height + var oStyle = window.getComputedStyle(oDomRef), + sLineHeight = oStyle.lineHeight, + fLineHeight; + + // calculate line-height in px + if (/px$/i.test(sLineHeight)) { + // we can rely on calculated px line-height value + fLineHeight = parseFloat(sLineHeight); + } else if (/^normal$/i.test(sLineHeight)) { + // use default value to calculate normal line-height + fLineHeight = parseFloat(oStyle.fontSize) * this.normalLineHeight; + } else { + // calculate line-height with using font-size and line-height + fLineHeight = parseFloat(oStyle.fontSize) * parseFloat(sLineHeight); + } + + // on rasterizing the font, sub pixel line-heights are converted to integer + // for most of the font rendering engine but this is not the case for firefox + if (!sap.ui.Device.browser.firefox) { + fLineHeight = Math.floor(fLineHeight); + } + + // cache line height + if (this.cacheLineHeight && fLineHeight) { + this._fLineHeight = fLineHeight; + } + + // return + return fLineHeight; + }; + + /** + * Returns the max height according to max lines and line height calculation. + * This is not calculated max-height! + * + * @since 1.22 + * @protected + * @param {HTMLElement} [oDomRef] DOM reference of the text container. + * @returns {Number} + */ + Text.prototype.getClampHeight = function(oDomRef) { + oDomRef = oDomRef || this.getTextDomRef(); + return this.getMaxLines() * this.getLineHeight(oDomRef); + }; + + /** + * Sets the max-height to support maxLines property + * + * @since 1.22 + * @protected + * @param {HTMLElement} [oDomRef] DOM reference of the text container. + * @returns {Number} calculated max height value + */ + Text.prototype.clampHeight = function(oDomRef) { + oDomRef = oDomRef || this.getTextDomRef(); + if (!oDomRef) { + return 0; + } + + // calc the max height and set on dom + var iMaxHeight = this.getClampHeight(oDomRef); + if (iMaxHeight) { + oDomRef.style.maxHeight = iMaxHeight + "px"; + } + + return iMaxHeight; + }; + + /** + * Clamps the wrapping text according to max lines and returns the found ellipsis position. + * Parameters can be used for better performance. + * + * @param {HTMLElement} [oDomRef] DOM reference of the text container. + * @param {number} [iStartPos] Start point of the ellipsis search. + * @param {number} [iEndPos] End point of the ellipsis search. + * @returns {number|undefined} Returns found ellipsis position or undefined + * @since 1.20 + * @protected + */ + Text.prototype.clampText = function(oDomRef, iStartPos, iEndPos) { + // check DOM reference + oDomRef = oDomRef || this.getTextDomRef(); + if (!oDomRef) { + return; + } + + // init + var iEllipsisPos; + var sText = this.getText(true); + var iMaxHeight = this.getClampHeight(oDomRef); + + // init positions + iStartPos = iStartPos || 0; + iEndPos = iEndPos || sText.length; + + // do not set content if not needed + oDomRef.textContent = sText.slice(0, iEndPos); + + // if text overflow + if (oDomRef.scrollHeight > iMaxHeight) { + + // cache values + var oStyle = oDomRef.style, + sHeight = oStyle.height, + sEllipsis = this.ellipsis, + iEllipsisLen = sEllipsis.length; + + // set height during ellipsis search + oStyle.height = iMaxHeight + "px"; + + // implementing binary search to find the position of ellipsis + // complexity O(logn) so 1024 characters text can be found within 10 steps! + while ((iEndPos - iStartPos) > iEllipsisLen) { + + // check the middle position and update text + iEllipsisPos = (iStartPos + iEndPos) >> 1; + oDomRef.textContent = sText.slice(0, iEllipsisPos - iEllipsisLen) + sEllipsis; + + // check overflow + if (oDomRef.scrollHeight > iMaxHeight) { + iEndPos = iEllipsisPos; + } else { + iStartPos = iEllipsisPos; + } + } + + // last check maybe we overflowed on last character + if (oDomRef.scrollHeight > iMaxHeight && iStartPos > 0) { + iEllipsisPos = iStartPos; + oDomRef.textContent = sText.slice(0, iEllipsisPos - iEllipsisLen) + sEllipsis; + } + + // reset height + oStyle.height = sHeight; + } + + // return the found position + return iEllipsisPos; + }; + + return Text; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Text.js b/DVHMA-OpenUI5/www/resources/sap/m/Text.js new file mode 100644 index 0000000..f395708 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Text.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./library','sap/ui/core/Control'],function(q,l,C){"use strict";var T=C.extend("sap.m.Text",{metadata:{interfaces:["sap.ui.core.IShrinkable"],library:"sap.m",properties:{text:{type:"string",defaultValue:'',bindable:"bindable"},textDirection:{type:"sap.ui.core.TextDirection",group:"Appearance",defaultValue:sap.ui.core.TextDirection.Inherit},wrapping:{type:"boolean",group:"Appearance",defaultValue:true},textAlign:{type:"sap.ui.core.TextAlign",group:"Appearance",defaultValue:sap.ui.core.TextAlign.Begin},width:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:null},maxLines:{type:"int",group:"Appearance",defaultValue:null}}}});T.prototype.normalLineHeight=1.2;T.prototype.cacheLineHeight=true;T.prototype.ellipsis='…';T.hasNativeLineClamp=(function(){return(typeof document.documentElement.style.webkitLineClamp!="undefined");})();T.prototype.setText=function(t){this.setProperty("text",t,true);var d=this.getTextDomRef();if(d){d.textContent=this.getText(true);if(this.getWrapping()){if(t&&t.length>0&&!/\s/.test(t)){this.$().addClass("sapMTextBreakWord");}else{this.$().removeClass("sapMTextBreakWord");}}}return this;};T.prototype.getText=function(n){var t=this.getProperty("text");if(n){return t.replace(/\r\n/g,"\n");}return t;};T.prototype.onAfterRendering=function(){if(this.getVisible()&&this.hasMaxLines()&&!this.canUseNativeLineClamp()){this.clampHeight();}};T.prototype.hasMaxLines=function(){return(this.getWrapping()&&this.getMaxLines()>1);};T.prototype.getTextDomRef=function(){if(!this.getVisible()){return null;}if(this.hasMaxLines()){return this.getDomRef("inner");}return this.getDomRef();};T.prototype.canUseNativeLineClamp=function(){if(!T.hasNativeLineClamp){return false;}var d=sap.ui.core.TextDirection;if(this.getTextDirection()==d.RTL){return false;}if(this.getTextDirection()==d.Inherit&&sap.ui.getCore().getConfiguration().getRTL()){return false;}return true;};T.prototype.getLineHeight=function(d){if(this.cacheLineHeight&&this._fLineHeight){return this._fLineHeight;}d=d||this.getTextDomRef();if(!d){return 0;}var s=window.getComputedStyle(d),L=s.lineHeight,f;if(/px$/i.test(L)){f=parseFloat(L);}else if(/^normal$/i.test(L)){f=parseFloat(s.fontSize)*this.normalLineHeight;}else{f=parseFloat(s.fontSize)*parseFloat(L);}if(!sap.ui.Device.browser.firefox){f=Math.floor(f);}if(this.cacheLineHeight&&f){this._fLineHeight=f;}return f;};T.prototype.getClampHeight=function(d){d=d||this.getTextDomRef();return this.getMaxLines()*this.getLineHeight(d);};T.prototype.clampHeight=function(d){d=d||this.getTextDomRef();if(!d){return 0;}var m=this.getClampHeight(d);if(m){d.style.maxHeight=m+"px";}return m;};T.prototype.clampText=function(d,s,e){d=d||this.getTextDomRef();if(!d){return;}var E;var t=this.getText(true);var m=this.getClampHeight(d);s=s||0;e=e||t.length;d.textContent=t.slice(0,e);if(d.scrollHeight>m){var S=d.style,h=S.height,a=this.ellipsis,i=a.length;S.height=m+"px";while((e-s)>i){E=(s+e)>>1;d.textContent=t.slice(0,E-i)+a;if(d.scrollHeight>m){e=E;}else{s=E;}}if(d.scrollHeight>m&&s>0){E=s;d.textContent=t.slice(0,E-i)+a;}S.height=h;}return E;};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TextArea-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/TextArea-dbg.js new file mode 100644 index 0000000..0045893 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TextArea-dbg.js @@ -0,0 +1,212 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.TextArea. +sap.ui.define(['jquery.sap.global', './InputBase', './library'], + function(jQuery, InputBase, library) { + "use strict"; + + + + /** + * Constructor for a new TextArea. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * Enable users to input multi-line text. + * @extends sap.m.InputBase + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.9.0 + * @alias sap.m.TextArea + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var TextArea = InputBase.extend("sap.m.TextArea", /** @lends sap.m.TextArea.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * Specifies the height of the text area (in lines). + */ + rows : {type : "int", group : "Appearance", defaultValue : 2}, + + /** + * Specifies the width of the textarea (in average character width). + */ + cols : {type : "int", group : "Appearance", defaultValue : 20}, + + /** + * Defines the height of the textarea with CSS. This property can overwrite the rows property. + */ + height : {type : "sap.ui.core.CSSSize", group : "Appearance", defaultValue : null}, + + /** + * Maximum number of characters that user can input. If your value property's length bigger than maxLength then value is not truncated and user can see whole value property but cannot write anymore. + */ + maxLength : {type : "int", group : "Behavior", defaultValue : 0}, + + /** + * The wrap attribute specifies how the text in a text area is to be wrapped when submitted in a form. Possible values are: Soft, Hard, Off. + */ + wrapping : {type : "sap.ui.core.Wrapping", group : "Behavior", defaultValue : null} + }, + events : { + + /** + * This event is fired when the value of the input is changed - e.g. at each keypress + */ + liveChange : { + parameters : { + + /** + * The new value of the textarea. + */ + value : {type : "string"} + } + } + } + }}); + + TextArea.prototype.init = function() { + InputBase.prototype.init.call(this); + this._inputProxy = jQuery.proxy(this._onInput, this); + }; + + // Attach listeners on after rendering and find iscroll + TextArea.prototype.onAfterRendering = function() { + InputBase.prototype.onAfterRendering.call(this); + + // bind events + this.bindToInputEvent(this._inputProxy); + + // touch browser behaviour differs + if (sap.ui.Device.support.touch) { + + // check behaviour mode + if (this._behaviour.INSIDE_SCROLLABLE_WITHOUT_FOCUS) { + + // Bind browser events to mimic native scrolling + this._$input.on("touchstart", jQuery.proxy(this._onTouchStart, this)); + this._$input.on("touchmove", jQuery.proxy(this._onTouchMove, this)); + } else if (this._behaviour.PAGE_NON_SCROLLABLE_AFTER_FOCUS) { + + // stop bubbling to disable preventDefault calls + this._$input.on("touchmove", function(e) { + if (jQuery(this).is(":focus")) { + e.stopPropagation(); + } + }); + } + } + }; + + // overwrite the input base enter handling for change event + TextArea.prototype.onsapenter = function(oEvent) { + }; + + // Overwrite input base revert handling for escape + // to fire own liveChange event and property set + TextArea.prototype.onValueRevertedByEscape = function(sValue) { + this._onInput(); + }; + + TextArea.prototype._onInput = function(oEvent) { + var value = this._$input.val(); + + // some browsers does not respect to maxlength property of textarea + if (this.getMaxLength() > 0 && value.length > this.getMaxLength()) { + value = value.substring(0, this.getMaxLength()); + this._$input.val(value); + } + + if (value != this.getValue()) { + this.setProperty("value", value, true); + + // get the value back maybe there is a formatter + value = this.getValue(); + + this.fireLiveChange({ + value: value, + + // backwards compatibility + newValue: value + }); + } + }; + + /** + * Some browsers let us to scroll inside of the textarea without focusing. + * Android is very buggy and no touch event is publishing after focus. + * Android 4.1+ has touch events but page scroll is not possible after + * we reached the edge(bottom, top) of the textarea + * + * @private + */ + TextArea.prototype._behaviour = (function(oDevice) { + return { + INSIDE_SCROLLABLE_WITHOUT_FOCUS : oDevice.os.ios || oDevice.os.blackberry || oDevice.browser.chrome, + PAGE_NON_SCROLLABLE_AFTER_FOCUS : oDevice.os.android && oDevice.os.version >= 4.1 + }; + }(sap.ui.Device)); + + + /** + * On touch start get iscroll and save starting point + * + * @private + * @param {jQuery.EventObject} oEvent The event object + */ + TextArea.prototype._onTouchStart = function(oEvent) { + var oTouchEvent = oEvent.touches[0]; + this._iStartY = oTouchEvent.pageY; + this._iStartX = oTouchEvent.pageX; + this._bHorizontalScroll = undefined; + + // disable swipe handling of jQuery-mobile since it calls preventDefault + // on touchmove and this can break the scrolling nature of the textarea + oEvent.setMarked("swipestartHandled"); + }; + + + /** + * Touch move listener doing native scroll workaround + * + * @private + * @param {jQuery.EventObject} oEvent The event object + */ + TextArea.prototype._onTouchMove = function(oEvent) { + + var oDomRef = this._$input[0], // textarea dom reference + iPageY = oEvent.touches[0].pageY, + iScrollTop = oDomRef.scrollTop, + bTop = iScrollTop <= 0, + bBottom = iScrollTop + oDomRef.clientHeight >= oDomRef.scrollHeight, + bGoingUp = this._iStartY > iPageY, + bGoingDown = this._iStartY < iPageY, + bOnEnd = bTop && bGoingDown || bBottom && bGoingUp; + + if (this._bHorizontalScroll === undefined) { // check once + this._bHorizontalScroll = Math.abs(this._iStartY - iPageY) < Math.abs(this._iStartX - oEvent.touches[0].pageX); + } + + if (this._bHorizontalScroll || !bOnEnd) { + + // to prevent the rubber-band effect we are calling prevent default on touchmove + // from jquery.sap.mobile but this breaks the scrolling nature of the textarea + oEvent.setMarked(); + } + }; + + return TextArea; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TextArea.js b/DVHMA-OpenUI5/www/resources/sap/m/TextArea.js new file mode 100644 index 0000000..6583a50 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TextArea.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./InputBase','./library'],function(q,I,l){"use strict";var T=I.extend("sap.m.TextArea",{metadata:{library:"sap.m",properties:{rows:{type:"int",group:"Appearance",defaultValue:2},cols:{type:"int",group:"Appearance",defaultValue:20},height:{type:"sap.ui.core.CSSSize",group:"Appearance",defaultValue:null},maxLength:{type:"int",group:"Behavior",defaultValue:0},wrapping:{type:"sap.ui.core.Wrapping",group:"Behavior",defaultValue:null}},events:{liveChange:{parameters:{value:{type:"string"}}}}}});T.prototype.init=function(){I.prototype.init.call(this);this._inputProxy=q.proxy(this._onInput,this);};T.prototype.onAfterRendering=function(){I.prototype.onAfterRendering.call(this);this.bindToInputEvent(this._inputProxy);if(sap.ui.Device.support.touch){if(this._behaviour.INSIDE_SCROLLABLE_WITHOUT_FOCUS){this._$input.on("touchstart",q.proxy(this._onTouchStart,this));this._$input.on("touchmove",q.proxy(this._onTouchMove,this));}else if(this._behaviour.PAGE_NON_SCROLLABLE_AFTER_FOCUS){this._$input.on("touchmove",function(e){if(q(this).is(":focus")){e.stopPropagation();}});}}};T.prototype.onsapenter=function(e){};T.prototype.onValueRevertedByEscape=function(v){this._onInput();};T.prototype._onInput=function(e){var v=this._$input.val();if(this.getMaxLength()>0&&v.length>this.getMaxLength()){v=v.substring(0,this.getMaxLength());this._$input.val(v);}if(v!=this.getValue()){this.setProperty("value",v,true);v=this.getValue();this.fireLiveChange({value:v,newValue:v});}};T.prototype._behaviour=(function(d){return{INSIDE_SCROLLABLE_WITHOUT_FOCUS:d.os.ios||d.os.blackberry||d.browser.chrome,PAGE_NON_SCROLLABLE_AFTER_FOCUS:d.os.android&&d.os.version>=4.1};}(sap.ui.Device));T.prototype._onTouchStart=function(e){var t=e.touches[0];this._iStartY=t.pageY;this._iStartX=t.pageX;this._bHorizontalScroll=undefined;e.setMarked("swipestartHandled");};T.prototype._onTouchMove=function(e){var d=this._$input[0],p=e.touches[0].pageY,s=d.scrollTop,t=s<=0,b=s+d.clientHeight>=d.scrollHeight,g=this._iStartY>p,G=this._iStartY"); + }; + + // TextArea does not have value property as HTML element, so overwrite base method + TextAreaRenderer.writeInnerValue = function() { + }; + + // Write the value of the TextArea + TextAreaRenderer.writeInnerContent = function(oRm, oControl) { + oRm.writeEscaped(oControl.getValue()); + }; + + // Add extra classes for TextArea element + TextAreaRenderer.addInnerClasses = function(oRm, oControl) { + oRm.addClass("sapMTextAreaInner"); + }; + + // Write accessibility attributes + TextAreaRenderer.writeAccessibilityState = function(oRm, oControl) { + InputBaseRenderer.writeAccessibilityState.apply(this, arguments); + oRm.writeAccessibilityState(oControl, { + role: "textbox", + multiline: true + }); + }; + + // Add extra attributes to TextArea + TextAreaRenderer.writeInnerAttributes = function(oRm, oControl) { + if (oControl.getWrapping() && oControl.getWrapping() != "None") { + oRm.writeAttribute("wrap", oControl.getWrapping()); + } + oRm.writeAttribute("rows", oControl.getRows()); + oRm.writeAttribute("cols", oControl.getCols()); + }; + + return TextAreaRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TextAreaRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/TextAreaRenderer.js new file mode 100644 index 0000000..284e3fb --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TextAreaRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/core/Renderer','./InputBaseRenderer'],function(q,R,I){"use strict";var T={};var T=R.extend(I);T.addOuterClasses=function(r,c){r.addClass("sapMTextArea");};T.addOuterStyles=function(r,c){c.getHeight()&&r.addStyle("height",c.getHeight());};T.openInputTag=function(r,c){r.write("");};T.writeInnerValue=function(){};T.writeInnerContent=function(r,c){r.writeEscaped(c.getValue());};T.addInnerClasses=function(r,c){r.addClass("sapMTextAreaInner");};T.writeAccessibilityState=function(r,c){I.writeAccessibilityState.apply(this,arguments);r.writeAccessibilityState(c,{role:"textbox",multiline:true});};T.writeInnerAttributes=function(r,c){if(c.getWrapping()&&c.getWrapping()!="None"){r.writeAttribute("wrap",c.getWrapping());}r.writeAttribute("rows",c.getRows());r.writeAttribute("cols",c.getCols());};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TextRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/TextRenderer-dbg.js new file mode 100644 index 0000000..b90b931 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TextRenderer-dbg.js @@ -0,0 +1,115 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides default renderer for control sap.m.Text +sap.ui.define(['jquery.sap.global', 'sap/ui/core/Renderer'], + function(jQuery, Renderer) { + "use strict"; + + + /** + * Text renderer + * @author SAP SE + * @namespace + */ + var TextRenderer = {}; + + /** + * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}. + * @param {sap.ui.core.RenderManager} oRm The RenderManager that can be used for writing to the render output buffer. + * @param {sap.m.Text} oText An object representation of the control that should be rendered. + */ + TextRenderer.render = function(oRm, oText) { + // get control values + var sWidth = oText.getWidth(), + sText = oText.getText(true), + sTextDir = oText.getTextDirection(), + sTooltip = oText.getTooltip_AsString(), + nMaxLines = oText.getMaxLines(), + bWrapping = oText.getWrapping(), + sTextAlign = oText.getTextAlign(); + + // start writing html + oRm.write(" 0 && !/\s/.test(sText)) { + oRm.addClass("sapMTextBreakWord"); + } + } + + // write style and attributes + sWidth ? oRm.addStyle("width", sWidth) : oRm.addClass("sapMTextMaxWidth"); + if (sTextDir !== sap.ui.core.TextDirection.Inherit){ + oRm.writeAttribute("dir", sTextDir.toLowerCase()); + } + sTooltip && oRm.writeAttributeEscaped("title", sTooltip); + if (sTextAlign) { + sTextAlign = Renderer.getTextAlign(sTextAlign, sTextDir); + if (sTextAlign) { + oRm.addStyle("text-align", sTextAlign); + } + } + + // finish writing html + oRm.writeClasses(); + oRm.writeStyles(); + oRm.write(">"); + + // handle max lines + if (oText.hasMaxLines()) { + this.renderMaxLines(oRm, oText); + } else { + this.renderText(oRm, oText); + } + + // finalize + oRm.write(""); + }; + + /** + * Renders the max lines inner wrapper + * @param {sap.ui.core.RenderManager} oRm The RenderManager that can be used for writing to the render output buffer. + * @param {sap.m.Text} oText An object representation of the control that should be rendered. + */ + TextRenderer.renderMaxLines = function(oRm, oText) { + oRm.write(""); + this.renderText(oRm, oText); + oRm.write("
    "); + }; + + /** + * Renders the normalized text property. + * @param {sap.ui.core.RenderManager} oRm The RenderManager that can be used for writing to the render output buffer. + * @param {sap.m.Text} oText An object representation of the control that should be rendered. + */ + TextRenderer.renderText = function(oRm, oText) { + var sText = oText.getText(true); + oRm.writeEscaped(sText); + }; + + return TextRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TextRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/TextRenderer.js new file mode 100644 index 0000000..dccc17e --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TextRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/core/Renderer'],function(q,R){"use strict";var T={};T.render=function(r,t){var w=t.getWidth(),s=t.getText(true),a=t.getTextDirection(),b=t.getTooltip_AsString(),n=t.getMaxLines(),W=t.getWrapping(),c=t.getTextAlign();r.write("0&&!/\s/.test(s)){r.addClass("sapMTextBreakWord");}}w?r.addStyle("width",w):r.addClass("sapMTextMaxWidth");if(a!==sap.ui.core.TextDirection.Inherit){r.writeAttribute("dir",a.toLowerCase());}b&&r.writeAttributeEscaped("title",b);if(c){c=R.getTextAlign(c,a);if(c){r.addStyle("text-align",c);}}r.writeClasses();r.writeStyles();r.write(">");if(t.hasMaxLines()){this.renderMaxLines(r,t);}else{this.renderText(r,t);}r.write("");};T.renderMaxLines=function(r,t){r.write("");this.renderText(r,t);r.write("");};T.renderText=function(r,t){var s=t.getText(true);r.writeEscaped(s);};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Tile-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/Tile-dbg.js new file mode 100644 index 0000000..430bf0b --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Tile-dbg.js @@ -0,0 +1,285 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.Tile. +sap.ui.define(['jquery.sap.global', './library', 'sap/ui/core/Control'], + function(jQuery, library, Control) { + "use strict"; + + + + /** + * Constructor for a new Tile. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * A tile to be displayed in the tile container. Use this + * tile as the base class for + * specialized tile implementations. + * Use the renderers _addOuterClass methods to add a style class to the main + * surface of the Tile. In this class set the background color, gradients + * or background images. + * Instead of implementing the default render method in the renderer implement + * your content HTML in the _renderContent method of the specialized + * tile. + * @extends sap.ui.core.Control + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.12 + * @alias sap.m.Tile + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var Tile = Control.extend("sap.m.Tile", /** @lends sap.m.Tile.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * Determines whether the tile is movable within the surrounding tile container. The remove event is fired by the tile contianer. + */ + removable : {type : "boolean", group : "Misc", defaultValue : true} + }, + events : { + + /** + * Tap event is raised if the user tap or click to the + * control. + */ + press : {} + } + }}); + + /* + * @see JSDoc generated by SAPUI5 Control API generator + */ + + + /** + * Initializes the control + * @private + */ + Tile.prototype.init = function() { + //keyboard support for desktop environments + if (sap.ui.Device.system.desktop) { + var fnOnSpaceOrEnter = jQuery.proxy(function(oEvent) { + if (oEvent.srcControl === this && !oEvent.isMarked()) { + this.ontap(); + //event should not trigger any further actions + oEvent.stopPropagation(); + } + }, this); + + this.onsapspace = fnOnSpaceOrEnter; + this.onsapenter = fnOnSpaceOrEnter; + } + }; + + /** + * Handles the internal event onAfterRendering + * @private + */ + Tile.prototype.onAfterRendering = function(){ + if (this._rendered && !this._bIsDragged && this.getParent() instanceof sap.m.TileContainer) { + this.setPos(this._posX,this._posY); + } + this._rendered = true; + }; + + + /** + * Sets the position of the tile to the given coordinates. + * @param {int} iX left position + * @param {int} iY top position + * @private + */ + Tile.prototype.setPos = function(iX,iY){ + // store in member + this._posX = iX = Math.floor(iX); + this._posY = iY = Math.floor(iY); + if (!this._rendered) { + return; + } + var o = this.getDomRef(); + if ("webkitTransform" in o.style) { + this.$().css('-webkit-transform','translate3d(' + iX + 'px,' + iY + 'px,0)'); + } else if ("transform" in o.style) { + this.$().css('transform','translate3d(' + iX + 'px,' + iY + 'px,0)'); + } else if ("msTransform" in o.style) { + this.$().css('msTransform','translate(' + iX + 'px,' + iY + 'px)'); + } else if ("MozTransform" in o.style) { + this.$().css('-moz-transform','translate3d(' + iX + 'px,' + iY + 'px,0)'); + } + if (this._invisible) { + this.$().css("visibility",""); + delete this._invisible; + } + //jQuery.sap.log.info("Set tile pos, id:" + this.getId() + ", x:" + iX + ", y:" + iY); + + }; + + /** + * Sets the pixel size of the tile + * @param {int} iX left position + * @param {int} iY top position + * @private + */ + Tile.prototype.setSize = function(iWidth,iHeight){ + //jQuery.sap.log.debug("Set tile size, id:" + this.getId() + ", x:" + iWidth + ", y:" + iHeight); + this._width = iWidth; + this._height = iHeight; + }; + + + /** + * Returns and optionally sets whether the tile is editable. + * @param {boolean} optional The editable state of the tile. + * @returns {boolean} whether the tile is editable + * @see sap.m.TileContainer + * @private + */ + Tile.prototype.isEditable = function(bIsEditable) { + if (bIsEditable === true || bIsEditable === false) { + this._bIsEditable = bIsEditable; + } + + return this._bIsEditable; + }; + + /** + * Returns and optionally sets whether the tile is dragged and applies or removes the drag styles. + * @param {boolean} optional The editable state of the tile. + * @returns {boolean} whether the tile is dragged + * @see sap.m.TileContainer + * @private + */ + Tile.prototype.isDragged = function(bIsDragged) { + if (!this._bIsEditable) { + return; + } + if (bIsDragged === true || bIsDragged === false) { + var o = this.$(); + o.toggleClass("sapMTileDrag",bIsDragged); + this._bIsDragged = bIsDragged; + } + return this._bIsDragged; + }; + + /** + * Set active state. + * @private + */ + Tile.prototype.ontouchstart = function(oEvent) { + if (!this.isEditable() && !this._parentPreventsTapEvent) { + this.$().toggleClass("sapMTileActive sapMTileActive-CTX",true); + this._clientX = oEvent.clientX; + this._clientY = oEvent.clientY; + } + }; + + /** + * Unset active state. + * @private + */ + Tile.prototype.ontouchend = function() { + if (!this.isEditable()) { + this.$().toggleClass("sapMTileActive sapMTileActive-CTX",false); + } + }; + + /** + * Check if a parent Tile wants to prevent the Tap events for its children - readonly + * @private + */ + Object.defineProperty(Tile.prototype,"_parentPreventsTapEvent",{ + get : function () { + var oParent = this.getParent(); + while (oParent) { + if (oParent._bAvoidChildTapEvent || (oParent instanceof Tile && oParent.isEditable())) { + return true; + } + oParent = oParent.getParent(); + } + + return false; + } + }); + + /** + * Unset active state on touch move + * @private + */ + Tile.prototype.ontouchmove = function(oEvent) { + if (!this.isEditable() && !this._parentPreventsTapEvent) { + if (Math.abs(oEvent.clientX - this._clientX) > 30 || Math.abs(oEvent.clientY - this._clientY) > 10) { + this.$().toggleClass("sapMTileActive sapMTileActive-CTX",false); + } + } + }; + + Tile.prototype.ontap = function() { + if (!this.isEditable() && !this._parentPreventsTapEvent) { + this.firePress({}); + } + }; + + /** + * Set initial visibility of the tile + * @param {boolean} bVisible visibility + * @private + */ + Tile.prototype._setVisible = function(bVisible){ + this._invisible = !bVisible; + return this; + }; + + /** + * Gets the index of tile in TileContainer. + * @private + * @returns The corresponding index of the tile if it is in TileContainer or otherwise null + */ + Tile.prototype._getTileIndex = function() { + var oTileContainer = this.getParent(), + iTileIndex = null; + if (oTileContainer && oTileContainer instanceof sap.m.TileContainer) { + iTileIndex = oTileContainer.indexOfAggregation("tiles", this) + 1; + } + return iTileIndex; + }; + + /** + * Gets the number of tiles in the TileContainer + * @private + * @returns The number of tiles in TileContainer if it is in TileContainer or otherwise null + */ + Tile.prototype._getTilesCount = function() { + var oTileContainer = this.getParent(), + iTileCount = null; + if (oTileContainer && oTileContainer instanceof sap.m.TileContainer) { + iTileCount = oTileContainer.getTiles().length; + } + return iTileCount; + }; + + + /** + * Updates the value of the ARIA posinset attribute of the controls DOM element + * @private + * @returns {sap.m.Tile} This tile. + */ + Tile.prototype._updateAriaPosition = function () { + this.$().attr('aria-posinset', this._getTileIndex()); + return this; + }; + + return Tile; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Tile.js b/DVHMA-OpenUI5/www/resources/sap/m/Tile.js new file mode 100644 index 0000000..4b45dce --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Tile.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./library','sap/ui/core/Control'],function(q,l,C){"use strict";var T=C.extend("sap.m.Tile",{metadata:{library:"sap.m",properties:{removable:{type:"boolean",group:"Misc",defaultValue:true}},events:{press:{}}}});T.prototype.init=function(){if(sap.ui.Device.system.desktop){var o=q.proxy(function(e){if(e.srcControl===this&&!e.isMarked()){this.ontap();e.stopPropagation();}},this);this.onsapspace=o;this.onsapenter=o;}};T.prototype.onAfterRendering=function(){if(this._rendered&&!this._bIsDragged&&this.getParent()instanceof sap.m.TileContainer){this.setPos(this._posX,this._posY);}this._rendered=true;};T.prototype.setPos=function(x,y){this._posX=x=Math.floor(x);this._posY=y=Math.floor(y);if(!this._rendered){return;}var o=this.getDomRef();if("webkitTransform"in o.style){this.$().css('-webkit-transform','translate3d('+x+'px,'+y+'px,0)');}else if("transform"in o.style){this.$().css('transform','translate3d('+x+'px,'+y+'px,0)');}else if("msTransform"in o.style){this.$().css('msTransform','translate('+x+'px,'+y+'px)');}else if("MozTransform"in o.style){this.$().css('-moz-transform','translate3d('+x+'px,'+y+'px,0)');}if(this._invisible){this.$().css("visibility","");delete this._invisible;}};T.prototype.setSize=function(w,h){this._width=w;this._height=h;};T.prototype.isEditable=function(i){if(i===true||i===false){this._bIsEditable=i;}return this._bIsEditable;};T.prototype.isDragged=function(i){if(!this._bIsEditable){return;}if(i===true||i===false){var o=this.$();o.toggleClass("sapMTileDrag",i);this._bIsDragged=i;}return this._bIsDragged;};T.prototype.ontouchstart=function(e){if(!this.isEditable()&&!this._parentPreventsTapEvent){this.$().toggleClass("sapMTileActive sapMTileActive-CTX",true);this._clientX=e.clientX;this._clientY=e.clientY;}};T.prototype.ontouchend=function(){if(!this.isEditable()){this.$().toggleClass("sapMTileActive sapMTileActive-CTX",false);}};Object.defineProperty(T.prototype,"_parentPreventsTapEvent",{get:function(){var p=this.getParent();while(p){if(p._bAvoidChildTapEvent||(p instanceof T&&p.isEditable())){return true;}p=p.getParent();}return false;}});T.prototype.ontouchmove=function(e){if(!this.isEditable()&&!this._parentPreventsTapEvent){if(Math.abs(e.clientX-this._clientX)>30||Math.abs(e.clientY-this._clientY)>10){this.$().toggleClass("sapMTileActive sapMTileActive-CTX",false);}}};T.prototype.ontap=function(){if(!this.isEditable()&&!this._parentPreventsTapEvent){this.firePress({});}};T.prototype._setVisible=function(v){this._invisible=!v;return this;};T.prototype._getTileIndex=function(){var t=this.getParent(),i=null;if(t&&t instanceof sap.m.TileContainer){i=t.indexOfAggregation("tiles",this)+1;}return i;};T.prototype._getTilesCount=function(){var t=this.getParent(),i=null;if(t&&t instanceof sap.m.TileContainer){i=t.getTiles().length;}return i;};T.prototype._updateAriaPosition=function(){this.$().attr('aria-posinset',this._getTileIndex());return this;};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TileContainer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/TileContainer-dbg.js new file mode 100644 index 0000000..ff2b873 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TileContainer-dbg.js @@ -0,0 +1,1723 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.TileContainer. +sap.ui.define(['jquery.sap.global', './library', 'sap/ui/core/Control', 'sap/ui/core/IconPool'], + function(jQuery, library, Control, IconPool) { + "use strict"; + + + + /** + * Constructor for a new TileContainer. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * A container that arranges same-size tiles nicely on carousel pages + * @extends sap.ui.core.Control + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.12 + * @alias sap.m.TileContainer + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var TileContainer = Control.extend("sap.m.TileContainer", /** @lends sap.m.TileContainer.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * The width of the container in pixel + */ + width : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : '100%'}, + + /** + * The height of the container in pixel + */ + height : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : '100%'}, + + /** + * Whether the tile container is editable and you can move or delete or add tiles. + */ + editable : {type : "boolean", group : "Misc", defaultValue : null}, + + /** + * Determines whether the user is allowed to add tiles in edit mode (editable = true) + */ + allowAdd : {type : "boolean", group : "Misc", defaultValue : null} + }, + defaultAggregation : "tiles", + aggregations : { + + /** + * The tiles to be displayed by the tile container + */ + tiles : {type : "sap.ui.core.Control", multiple : true, singularName : "tile"} + }, + events : { + + /** + * Fired if a tile was moved + */ + tileMove : { + parameters : { + + /** + * The tile that has been moved + */ + tile : {type : "sap.m.Tile"}, + + /** + * The new index of the tile in the tiles aggregation + */ + newIndex : {type : "int"} + } + }, + + /** + * Fired if a tile is deleted during edit mode. + */ + tileDelete : { + parameters : { + + /** + * The tile + */ + tile : {type : "sap.m.Tile"} + } + }, + + /** + * Fired if a Tile is added + */ + tileAdd : {} + } + }}); + + + IconPool.insertFontFaceStyle(); + + TileContainer.prototype._bRtl = sap.ui.getCore().getConfiguration().getRTL(); + + /** + * Initializes the control + * + * @private + */ + TileContainer.prototype.init = function() { + this._iCurrentTileStartIndex = 0; + this._iCurrentPage = 0; + this._iPages = 0; + this._iScrollLeft = 0; + this._iScrollGap = 0; // gap to the left and right that is allowed to be moved while touchmove event if max scrollwidth or min scrollwidth is already reached + + if (!sap.ui.Device.system.desktop) { + this._iScrollGap = 0; + } + + this.bAllowTextSelection = false; + + //ugly but needed, initial timeout to wait until all elements are resized. + //TODO: Check whether this is needed in no less mode + this._iInitialResizeTimeout = 400; //needed + + this._oDragSession = null; + this._oTouchSession = null; + + this._bAvoidChildTapEvent = false; + + // the amount on the left and right during drag drop of a tile needed to start showing the edge of the page + this._iEdgeShowStart = sap.ui.Device.system.phone ? 10 : 20; + + // the amount of pixels a tile needs to be moved over the left or right edge to trigger a scroll + if (sap.ui.Device.system.phone) { + this._iTriggerScrollOffset = 10; + } else if (sap.ui.Device.system.desktop) { + this._iTriggerScrollOffset = -40; + } else { + this._iTriggerScrollOffset = 20; + } + + // keyboard support + this._iCurrentFocusIndex = -1; + if (sap.ui.Device.system.desktop || sap.ui.Device.system.combi) { + var fnOnHome = jQuery.proxy(function(oEvent) { + if (this._iCurrentFocusIndex >= 0) { + var iRowFirstTileIndex = this._iCurrentFocusIndex - this._iCurrentFocusIndex % this._iMaxTilesX; + var iFirstOnPageOrVeryFirstIndex = this._iCurrentTileStartIndex === this._iCurrentFocusIndex ? 0 : this._iCurrentTileStartIndex; + var iTargetTileIndex = oEvent.ctrlKey + // if we are on the first tile of the current page already, go to the very first tile + ? iFirstOnPageOrVeryFirstIndex + : iRowFirstTileIndex; + var oFirstTile = this.getTiles()[iTargetTileIndex]; + + if (!!oFirstTile) { + this._findTile(oFirstTile.$()).focus(); + // event should not trigger any further actions + oEvent.stopPropagation(); + } + this._handleAriaActiveDescendant(); + } + }, this), + + fnOnEnd = jQuery.proxy(function(oEvent) { + if (this._iCurrentFocusIndex >= 0) { + var oTiles = this.getTiles(); + var iRowFirstTileIndex = this._iCurrentFocusIndex - this._iCurrentFocusIndex % this._iMaxTilesX; + var iRowLastTileIndex = iRowFirstTileIndex + this._iMaxTilesX < oTiles.length ? iRowFirstTileIndex + this._iMaxTilesX - 1 : oTiles.length - 1; + var iLastTileIndex = this._iCurrentTileStartIndex + this._iMaxTiles < oTiles.length ? this._iCurrentTileStartIndex + this._iMaxTiles - 1 : oTiles.length - 1; + var iLastOnPageOrVeryLastIndex = iLastTileIndex === this._iCurrentFocusIndex ? oTiles.length - 1 : iLastTileIndex; + var iTargetTileIndex = oEvent.ctrlKey + ? iLastOnPageOrVeryLastIndex + : iRowLastTileIndex; + + if (oTiles.length > 0) { + this._findTile(oTiles[iTargetTileIndex].$()).focus(); + // event should not trigger any further actions + oEvent.stopPropagation(); + } + this._handleAriaActiveDescendant(); + } + }, this), + + fnOnPageUp = jQuery.proxy(function(oEvent) { + + if (this.getTiles().length > 0) { + var iNextIndex = this._iCurrentFocusIndex - this._iMaxTiles >= 0 ? this._iCurrentFocusIndex - this._iMaxTiles : 0; + + var oNextTile = this.getTiles()[iNextIndex]; + + if (!!oNextTile) { + this._findTile(oNextTile.$()).focus(); + // event should not trigger any further actions + oEvent.stopPropagation(); + } + this._handleAriaActiveDescendant(); + } + }, this), + + fnOnPageDown = jQuery.proxy(function(oEvent) { + var iTilesCount = this.getTiles().length; + + if (iTilesCount > 0) { + var iNextIndex = this._iCurrentFocusIndex + this._iMaxTiles < iTilesCount ? this._iCurrentFocusIndex + this._iMaxTiles : iTilesCount - 1; + + var oNextTile = this.getTiles()[iNextIndex]; + + if (!!oNextTile) { + this._findTile(oNextTile.$()).focus(); + // event should not trigger any further actions + oEvent.stopPropagation(); + } + this._handleAriaActiveDescendant(); + } + }, this), + + fnOnRight = jQuery.proxy(function(oEvent) { + if (this._iCurrentFocusIndex >= 0) { + var oTiles = this.getTiles(); + var iNextIndex = this._iCurrentFocusIndex + 1 < oTiles.length ? this._iCurrentFocusIndex + 1 : this._iCurrentFocusIndex; + + if (!oEvent.ctrlKey) { + var oNextTile = oTiles[iNextIndex]; + + if (!!oNextTile) { + if (iNextIndex < this._iCurrentTileStartIndex + this._iMaxTiles) { // tile on same page? + this._findTile(oNextTile.$()).focus(); + } else { + this.scrollIntoView(oNextTile, true); + var that = this; + setTimeout(function() { + that._findTile(oNextTile.$()).focus(); + }, 400); + } + } + } else if (this.getEditable()) { + var oTile = oTiles[this._iCurrentFocusIndex]; + this.moveTile(oTile, iNextIndex); + oTile.$().focus(); + } + this._handleAriaActiveDescendant(); + + // event should not trigger any further actions + oEvent.stopPropagation(); + } + }, this), + + fnOnLeft = jQuery.proxy(function(oEvent) { + if (this._iCurrentFocusIndex >= 0) { + var oTiles = this.getTiles(); + var iNextIndex = this._iCurrentFocusIndex - 1 >= 0 ? this._iCurrentFocusIndex - 1 : this._iCurrentFocusIndex; + + if (!oEvent.ctrlKey) { + var oNextTile = oTiles[iNextIndex]; + + if (!!oNextTile) { + if (iNextIndex >= this._iCurrentTileStartIndex) { // tile on same page? + this._findTile(oNextTile.$()).focus(); + } else { + this.scrollIntoView(oNextTile, true); + var that = this; + setTimeout(function () { + that._findTile(oNextTile.$()).focus(); + }, 400); + } + } + } else if (this.getEditable()) { + var oTile = oTiles[this._iCurrentFocusIndex]; + this.moveTile(oTile, iNextIndex); + oTile.$().focus(); + } + this._handleAriaActiveDescendant(); + // event should not trigger any further actions + oEvent.stopPropagation(); + } + }, this), + + fnOnDown = jQuery.proxy(function(oEvent) { + if (this._iCurrentFocusIndex >= 0) { + var iModCurr = this._iCurrentFocusIndex % this._iMaxTiles, + iNextIndex = this._iCurrentFocusIndex + this._iMaxTilesX, + iModNext = iNextIndex % this._iMaxTiles; + + if (!oEvent.ctrlKey) { + var oNextTile = this.getTiles()[iNextIndex]; + + if ((iModNext > iModCurr) && !!oNextTile) { + // '(iModNext > iModCurr)' means: still on same page + this._findTile(oNextTile.$()).focus(); + } + } else if (this.getEditable()) { + var oTile = this.getTiles()[this._iCurrentFocusIndex]; + this.moveTile(oTile, iNextIndex); + oTile.$().focus(); + } + this._handleAriaActiveDescendant(); + // event should not trigger any further actions + oEvent.stopPropagation(); + } + }, this), + + fnOnUp = jQuery.proxy(function(oEvent) { + if (this._iCurrentFocusIndex >= 0) { + var iModCurr = this._iCurrentFocusIndex % this._iMaxTiles, + iNextIndex = this._iCurrentFocusIndex - this._iMaxTilesX, + iModNext = iNextIndex % this._iMaxTiles; + + if (!oEvent.ctrlKey) { + var oNextTile = this.getTiles()[iNextIndex]; + if ((iModNext < iModCurr) && !!oNextTile) { + // '(iModNext < iModCurr)' means: still on same page + this._findTile(oNextTile.$()).focus(); + } + } else if (this.getEditable()) { + var oTile = this.getTiles()[this._iCurrentFocusIndex]; + this.moveTile(oTile, iNextIndex); + oTile.$().focus(); + } + this._handleAriaActiveDescendant(); + // event should not trigger any further actions + oEvent.stopPropagation(); + } + }, this), + + fnOnDelete = jQuery.proxy(function(oEvent) { + if (this._iCurrentFocusIndex >= 0 && this.getEditable()) { + var oTile = this.getTiles()[this._iCurrentFocusIndex]; + if (oTile.getRemovable()) { + this.deleteTile(oTile); + + if (this._iCurrentFocusIndex === this.getTiles().length) { + if (this.getTiles().length !== 0) { + this.getTiles()[this._iCurrentFocusIndex - 1].$().focus(); + } else { + this._findNextTabbable().focus(); + } + } else { + this.getTiles()[this._iCurrentFocusIndex].$().focus(); + } + this._handleAriaActiveDescendant(); + } + + oEvent.stopPropagation(); + } + }, this); + + this.onsaphome = fnOnHome; + this.onsaphomemodifiers = fnOnHome; + this.onsapend = fnOnEnd; + this.onsapendmodifiers = fnOnEnd; + this.onsapright = this._bRtl ? fnOnLeft : fnOnRight; + this.onsaprightmodifiers = this._bRtl ? fnOnLeft : fnOnRight; + this.onsapleft = this._bRtl ? fnOnRight : fnOnLeft; + this.onsapleftmodifiers = this._bRtl ? fnOnRight : fnOnLeft; + this.onsapup = fnOnUp; + this.onsapupmodifiers = fnOnUp; + this.onsapdown = fnOnDown; + this.onsapdownmodifiers = fnOnDown; + this.onsappageup = fnOnPageUp; + this.onsappagedown = fnOnPageDown; + this.onsapdelete = fnOnDelete; + + this.data("sap-ui-fastnavgroup", "true", true); // Define group for F6 handling + } + }; + + /** + * Finds the next tabbable element after the tile container + * @returns {Element} the next tabbable element after the tile container + * @private + */ + TileContainer.prototype._findNextTabbable = function() { + var $Ref = this.$(); + var $Tabbables = jQuery.merge( + jQuery.merge($Ref.nextAll(), $Ref.parents().nextAll()).find(':sapTabbable').addBack(':sapTabbable'), + jQuery.merge($Ref.parents().prevAll(), $Ref.prevAll()).find(':sapTabbable').addBack(':sapTabbable') + ); + + return $Tabbables.first(); + }; + + /** + * Handles the internal event onBeforeRendering. + * + * @private + */ + TileContainer.prototype.onBeforeRendering = function() { + + // unregister the resize listener + if (this._sResizeListenerId) { + sap.ui.core.ResizeHandler.deregister(this._sResizeListenerId); + this._sResizeListenerId = null; + } + }; + + /** + * Handles the internal event onAfterRendering. + * + * @private + */ + TileContainer.prototype.onAfterRendering = function() { + + // init resizing + this._sResizeListenerId = sap.ui.core.ResizeHandler.register(this.getDomRef().parentElement, jQuery.proxy(this._resize, this)); + + // init the dimensions to the container scoll area + this._applyDimension(); + this.$().toggleClass("sapMTCEditable",this.getEditable() === true); + var that = this; + + this._sInitialResizeTimeoutId = setTimeout(function() { + that._update(true); + }, this._iInitialResizeTimeout); + + if (sap.ui.Device.system.desktop || sap.ui.Device.system.combi) { + if (this.getTiles().length > 0 && this._mFocusables) { + this._mFocusables[this.getTiles()[0].getId()].eq(0).attr('tabindex', '0'); + } + } + }; + + /** + * Sets the editable property to the tile container that allows to move icons. + * This is currently also set with a long tap + * + * @param {boolean} bValue Whether the container is in edit mode or not. + * @returns {sap.m.TileContainer} This tile container. + * @public + */ + TileContainer.prototype.setEditable = function(bValue) { + var aTiles = this.getTiles(); + + // set the property + this.setProperty("editable", bValue, true); + var bEditable = this.getEditable(); + this.$().toggleClass("sapMTCEditable", bEditable); + + for (var i = 0;i < aTiles.length; i++) { + var oTile = aTiles[i]; + + if (oTile instanceof sap.m.Tile) { + oTile.isEditable(bEditable); + } + } + + return this; // allow chaining; + }; + + /** + * Applies the containers dimensions. + * + * @private + */ + TileContainer.prototype._applyDimension = function() { + var oDim = this._getContainerDimension(), + $this = this.$(), + oThisPos, + iOffset = 10, + $scroll = this.$("scrl"), + scrollPos, + scrollOuterHeight, + pagerHeight = this.$("pager").outerHeight(); + + $scroll.css({ + width : oDim.outerwidth + "px", + height : (oDim.outerheight - pagerHeight) + "px" + }); + + oThisPos = $this.position(); + + scrollPos = $scroll.position(); + scrollOuterHeight = $scroll.outerHeight(); + + if (sap.ui.Device.system.phone) { + iOffset = 2; + } else if (sap.ui.Device.system.desktop) { + iOffset = 0; + } + + this.$("blind").css({ + top : (scrollPos.top + iOffset) + "px", + left : (scrollPos.left + iOffset) + "px", + right: "auto", + width : ($scroll.outerWidth() - iOffset) + "px", + height : (scrollOuterHeight - iOffset) + "px" + }); + + this.$("rightedge").css({ + top : (oThisPos.top + iOffset) + "px", + right : iOffset + "px", + left : "auto", + height : (scrollOuterHeight - iOffset) + "px" + }); + + this.$("leftedge").css({ + top : (oThisPos.top + iOffset) + "px", + left : (oThisPos.left + iOffset) + "px", + right: "auto", + height : (scrollOuterHeight - iOffset) + "px" + }); + }; + + /** + * Handles the resize event for the tile container. + * This is called whenever the orientation of browser size changes. + * + * @private + */ + TileContainer.prototype._resize = function() { + if (this._oDragSession) { + return; + } + + setTimeout(jQuery.proxy(function() { + this._update(true); + delete this._iInitialResizeTimeout; + },this), + this._iInitialResizeTimeout); + + this._iInitialResizeTimeout = 0; //now we do not need to wait + }; + + /** + * Called from parent if the control is destroyed. + * + * @private + */ + TileContainer.prototype.exit = function() { + + if (this._sResizeListenerId) { + sap.ui.core.ResizeHandler.deregister(this._sResizeListenerId); + this._sResizeListenerId = null; + } + + if (this._sInitialResizeTimeoutId) { + clearTimeout(this._sInitialResizeTimeoutId); + } + }; + + /** + * Updates all tiles + * + * @private + */ + TileContainer.prototype._update = function(bAnimated) { + + if (!this.getDomRef()) { + return; + } + + if (!this.$().is(":visible")) { + return; + } + + this._updateTilePositions(); + + if (!this._oDragSession) { + this.scrollIntoView(this._iCurrentTileStartIndex || 0, bAnimated); + } + }; + + /** + * Returns the index of the first tile that is visible in the current page + * + * @returns {int} The index of the first tile that is visible in the current page. + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + TileContainer.prototype.getPageFirstTileIndex = function() { + return this._iCurrentTileStartIndex || 0; + }; + + /** + * Moves a given tile to the given index. + * + * @param {sap.m.Tile} vTile The tile to move + * @param {int} iNewIndex The new Tile position in the tiles aggregation. + * @returns {sap.m.TileContainer} This tile container. + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + TileContainer.prototype.moveTile = function(vTile, iNewIndex) { + if (!isNaN(vTile)) { + vTile = this.getTiles()[vTile]; + } + + if (!vTile) { + jQuery.sap.log.info("No Tile to move"); + return this; + } + + + + // Save the initial ARIA position of the moved tile + var iOldPosInset = vTile.$().attr('aria-posinset'); + + this.deleteTile(vTile); + this.insertTile(vTile,iNewIndex); + + // Update the aria-posinset HTML attribute for the tiles that changed position + var iNewPosInset = iNewIndex + 1; + if (typeof iOldPosInset !== undefined) { + this._updateTilesAriaPosition(parseInt(iOldPosInset, 10), iNewPosInset); + } + + return this; + }; + + /** + * Adds a tile to the end of the tiles collection + * + * @param {sap.m.Tile} oTile The tile to add. + * @returns {sap.m.TileContainer} This tile container. + * @override + * @public + */ + TileContainer.prototype.addTile = function(oTile) { + this.insertTile(oTile,this.getTiles().length); + this._handleAriaSize(); + }; + + /** + * Inserts a tile to the given index + * + * @param {sap.m.Tile} oTile The tile to insert + * @param {int} iIndex The new Tile position in the tiles aggregation. + * @returns {sap.m.TileContainer} This tile container. + * @override + * @public + */ + TileContainer.prototype.insertTile = function(oTile, iIndex) { + var that = this; + // keyboard support for desktop environments + if (sap.ui.Device.system.desktop || sap.ui.Device.system.combi) { + oTile.addEventDelegate({ + "onAfterRendering": function() { + if (!that._mFocusables) { + that._mFocusables = {}; + } + + that._mFocusables[this.getId()] = this.$().find("[tabindex!='-1']").addBack().filter(that._isFocusable); + that._mFocusables[this.getId()].attr('tabindex', '-1'); + } + }, oTile); + + var fnOnFocusIn = function(oEvent) { + var iIndex = that.indexOfAggregation("tiles", this), + iExpectedPage = Math.floor(iIndex / that._iMaxTiles), + iPageDelta = iExpectedPage - that._iCurrentPage; + + + var iPreviousTileIndex = that._iCurrentFocusIndex >= 0 ? that._iCurrentFocusIndex : 0; + var oPrevTile = that.getTiles()[iPreviousTileIndex]; + + if (oPrevTile) { + that._mFocusables[oPrevTile.getId()].attr("tabindex", "-1"); + that._mFocusables[this.getId()].attr("tabindex", "0"); + } + + if (iPageDelta != 0) { + that.scrollIntoView(iIndex); + that._resize(); + } + that._handleAriaActiveDescendant(); + + that._iCurrentFocusIndex = iIndex; + }; + + oTile.addEventDelegate({ + "onfocusin": fnOnFocusIn + }, oTile); + } + + if (this.getDomRef()) { + this.insertAggregation("tiles", oTile, iIndex, true); + + if (!this._oDragSession) { + var oRm = sap.ui.getCore().createRenderManager(), + oContent = this.$("cnt")[0]; + oRm.renderControl(oTile); + oRm.flush(oContent, false, iIndex); + oRm.destroy(); + } + + //this._applyPageStartIndex(iIndex); + this._update(false); + } else { + this.insertAggregation("tiles",oTile,iIndex); + } + this._handleAriaSize(); + + return this; + }; + + /** + * Checks if a DOM element is focusable - to be used within jQuery.filter function + * @param {int} index Index of the element within an array + * @param {Element} element DOM element to check + * @returns {Boolean} If a DOM element is focusable + * @private + */ + TileContainer.prototype._isFocusable = function(index, element) { + var isTabIndexNotNaN = !isNaN(jQuery(element).attr("tabindex")); + var nodeName = element.nodeName.toLowerCase(); + if ( nodeName === "area" ) { + var map = element.parentNode, + mapName = map.name, + img; + if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { + return false; + } + img = jQuery( "img[usemap=#" + mapName + "]" )[0]; + return !!img; + } + /*eslint-disable no-nested-ternary */ + return ( /input|select|textarea|button|object/.test( nodeName ) + ? !element.disabled + : nodeName == "a" + ? element.href || isTabIndexNotNaN + : isTabIndexNotNaN); + /*eslint-enable no-nested-ternary */ + }; + + /** + * Deletes a tile. + * + * @param {sap.m.Tile} oTile The tile to move + * @returns {sap.m.TileContainer} This tile container. + * @override + * @public + */ + TileContainer.prototype.deleteTile = function(oTile) { + + if (this.getDomRef()) { + var iIndex = this.indexOfAggregation("tiles",oTile) - 1; + this.removeAggregation("tiles",oTile,true); + + if (!this._oDragSession) { + oTile.getDomRef().parentNode.removeChild(oTile.getDomRef()); + if (sap.ui.Device.system.desktop || sap.ui.Device.system.combi) { + if (this._mFocusables && this._mFocusables[oTile.getId()]) { + delete this._mFocusables[oTile.getId()]; + } + } + } + + this._applyPageStartIndex(iIndex < 0 ? 0 : iIndex); + this._update(false); + } else { + this.removeAggregation("tiles",oTile,false); + } + this._handleAriaSize(); + return this; + }; + + TileContainer.prototype.removeTile = TileContainer.prototype.deleteTile; + + TileContainer.prototype.removeAllTiles = function() { + var iTileCount = this.getTiles().length - 1; //Zero based index + for (var iIndex = iTileCount; iIndex >= 0; iIndex--) { + var oTile = this.getTiles()[iIndex]; + this.deleteTile(oTile); + } + return this; + }; + + TileContainer.prototype.destroyTiles = function(){ + if (this.getDomRef()) { + var aTiles = this.getTiles(); + this.removeAllAggregation("tiles", true); + this._update(); + for (var i = 0;i < aTiles.length; i++) { + var tile = aTiles[i]; + tile.destroy(); + } + } else { + this.destroyAggregation("tiles", false); + } + return this; + }; + + TileContainer.prototype.rerender = function() { + if (!this._oDragSession || this._oDragSession.bDropped) { + Control.prototype.rerender.apply(this); + } + }; + + /** + * Scrolls one page to the left + * + * @public + */ + TileContainer.prototype.scrollLeft = function() { + if (this._bRtl) { + this.scrollIntoView(this._iCurrentTileStartIndex + this._iMaxTiles); + } else { + this.scrollIntoView(this._iCurrentTileStartIndex - this._iMaxTiles); + } + }; + + /** + * Scrolls one page to the right. + * + * @public + */ + TileContainer.prototype.scrollRight = function() { + if (this._bRtl) { + this.scrollIntoView(this._iCurrentTileStartIndex - this._iMaxTiles); + } else { + this.scrollIntoView(this._iCurrentTileStartIndex + this._iMaxTiles); + } + }; + + /** + * Scrolls to the page where the given tile or tile index is included. + * Optionally this can be done animated or not. With IE9 the scroll is never animated. + * + * @param {sap.m.Tile|int} vTile The tile or tile index to be scrolled into view. + * @param {boolean} bAnimated Whether the scroll should be animated. + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + TileContainer.prototype.scrollIntoView = function(vTile, bAnimated) { + + var iContentWidth = this._getContentDimension().outerwidth, + iIndex = vTile; + + if (isNaN(vTile)) { + iIndex = this.indexOfAggregation("tiles",vTile); + } + + if (!this.getTiles()[iIndex]) { + return; + } + + this._applyPageStartIndex(iIndex); + + this._iCurrentPage = Math.floor(this._iCurrentTileStartIndex / this._iMaxTiles); + + if (this._bRtl) { + this._scrollTo((this._iPages - this._iCurrentPage) * iContentWidth, bAnimated); + } else { + this._scrollTo(this._iCurrentPage * iContentWidth, bAnimated); + } + + this._updatePager(); + }; + + /** + * Updates the tile positions. + * + * @private + */ + TileContainer.prototype._updateTilePositions = function(){ + + if (this.getTiles().length === 0) { // no tiles + return; + } + + this._applyPageStartIndex(this._iCurrentTileStartIndex); + this._applyDimension(); + + var aTiles = this.getTiles(), + oContentDimension = this._getContentDimension(); + + this._iPages = Math.ceil(aTiles.length / this._iMaxTiles); + + for (var i = 0; i < aTiles.length; i++) { + + if (aTiles[i].isDragged()) { + continue; + } + + var iPage = Math.floor(i / this._iMaxTiles), + oTile = aTiles[i], + iLeft = (iPage * oContentDimension.outerwidth) + this._iOffsetX + i % this._iMaxTilesX * this._oTileDimension.width, + iTop = this._iOffsetY + Math.floor(i / this._iMaxTilesX) * this._oTileDimension.height - (iPage * this._iMaxTilesY * this._oTileDimension.height); + + if (this._bRtl) { + iLeft = (this._iPages - iPage) * oContentDimension.outerwidth - this._iOffsetX - (i % this._iMaxTilesX + 1) * this._oTileDimension.width; + } + + oTile.setPos(iLeft,iTop); + oTile.setSize(this._oTileDimension.width, this._oTileDimension.height); + } + }; + + /** + * Convenience method which returns $node if it has css class 'sapMTile' + * or the first child with that class. + * + * @private + */ + TileContainer.prototype._findTile = function($node) { + if ($node.hasClass('sapMTile') || $node.hasClass('sapMCustomTile')) { + return $node; + } else { + // return $node.find('.sapMTile'); + return $node.find('.sapMTile') || $node.find('.sapMCustomTile'); + } + }; + + /** + * Updates the pager part of the tile container. + * This is done dynamically + * + * @private + */ + TileContainer.prototype._updatePager = function() { + + var oPager = this.$("pager")[0], + oScrollLeft = this.$("leftscroller")[0], + oScrollRight = this.$("rightscroller")[0]; + + if (this._iPages > 1) { + var aHTML = [""]; + + for (var i = 0;i < this._iPages;i++) { + aHTML.push(""); + } + + oPager.innerHTML = aHTML.join(""); + oPager.style.display = "block"; + oPager.childNodes[this._iCurrentPage].className = "sapMTCActive"; + + if (sap.ui.Device.system.desktop) { + + var hide = { + r: this._iCurrentPage == this._iPages - 1, + l: this._iCurrentPage == 0 + }; + + if (this._bRtl) { + var tmp = hide.r; + hide.r = hide.l; + hide.l = tmp; + // Less builder swaps left and right in RTL styles, + // and that is not required here + oScrollRight.style.left = "auto"; + oScrollLeft.style.right = "auto"; + } + + oScrollRight.style.right = hide.r ? "-100px" : "1rem"; + oScrollLeft.style.left = hide.l ? "-100px" : "1rem"; + oScrollLeft.style.display = "block"; + oScrollRight.style.display = "block"; + + if (hide.r) { + oScrollRight.style.display = "none"; + } + + if (hide.l) { + oScrollLeft.style.display = "none"; + } + } + } else { + + oPager.innerHTML = ""; + oScrollRight.style.right = "-100px"; + oScrollLeft.style.left = "-100px"; + oScrollLeft.style.display = "none"; + oScrollRight.style.display = "none"; + } + }; + + /** + * Returns the dimension (width and height) of the pages content. + * + * @returns {object} Width and height of the pages content + * @private + */ + TileContainer.prototype._getContentDimension = function() { + + if (!this.getDomRef()) { + return; + } + + var oScroll = this.$("scrl"); + + return { + width : oScroll.width(), + height : oScroll.height() - 20, + outerheight : oScroll.outerHeight() - 20, + outerwidth : oScroll.outerWidth() + }; + }; + + /** + * Returns the dimension (width and height) of the tile container content. + * + * @returns {object} Width and height of the pages content. + * @private + */ + TileContainer.prototype._getContainerDimension = function() { + var oDomRef = this.$(); + + if (!oDomRef) { + return; + } + + return { + width : oDomRef.width(), + height : oDomRef.height(), + outerheight : oDomRef.outerHeight(), + outerwidth : oDomRef.outerWidth() + }; + }; + + /** + * Returns the dimension (width and height) of a tile. + * + * @returns {object} Width and height of a tile. + * @private + */ + TileContainer.prototype._getTileDimension = function() { + + if (!this.getDomRef()) { + return; + } + + if (this._oTileDim) { + return this._oTileDim; + } + + //TODO: Why the dimensions of the first Tile? + var oTile = this.getTiles()[0]; + this._oTileDim = { + width : Math.round(oTile.$().outerWidth(true)), + height : Math.round(oTile.$().outerHeight(true)) + }; + + return this._oTileDim; + }; + + /** + * Calculates the tile page sizes. + * + * @private + */ + TileContainer.prototype._calculatePositions = function() { + + if (this.getTiles().length === 0) { // no tiles + return; + } + + this._oTileDimension = this._getTileDimension(); + + var oContentDimension = this._getContainerDimension(), + iTiles = this.getTiles().length, + iPagerHeight = this.$("pager")[0].offsetHeight; + + if (oContentDimension.height === 0) { // nothing to do because the height of the content is not (yet) available + return; + } + + if (sap.ui.Device.system.desktop) { + oContentDimension.width -= 45 * 2; + } + + var iMaxTilesX = Math.max( Math.floor( oContentDimension.width / this._oTileDimension.width ),1), //at least one tile needs to be visible + iMaxTilesY = Math.max( Math.floor((oContentDimension.height - iPagerHeight) / this._oTileDimension.height),1), //at least one tile needs to be visible + iNumTileX = (iTiles < iMaxTilesX) ? iTiles : iMaxTilesX, + iNumTileY = (iTiles / iNumTileX < iMaxTilesY) ? Math.ceil(iTiles / iNumTileX) : iMaxTilesY; + + // set the member vars for further usage + this._iMaxTiles = iMaxTilesX * iMaxTilesY; + this._iMaxTilesX = iMaxTilesX; + this._iMaxTilesY = iMaxTilesY; + this._iOffsetX = Math.floor(( oContentDimension.width - (this._oTileDimension.width * iNumTileX)) / 2); + + if (sap.ui.Device.system.desktop) { + this._iOffsetX += 45; + } + + this._iOffsetY = Math.floor(( oContentDimension.height - iPagerHeight - (this._oTileDimension.height * iNumTileY )) / 2); + + }; + + /** + * Returns an array for a given pixel position in the tile container. + * Normally there is only one tile for a position. + * + * @param {int} iX Position in pixels. + * @param {int} iY Position in pixels. + * @returns {array} Array of tiles for the given position + * @private + */ + TileContainer.prototype._getTilesFromPosition = function(iX, iY) { + + if (!this.getTiles().length) { + return []; + } + + iX = iX + this._iScrollLeft; + + var aTiles = this.getTiles(), + aResult = []; + + for (var i = 0;i < aTiles.length;i++) { + var oTile = aTiles[i], + oRect = { + top: oTile._posY, + left: oTile._posX, + width: oTile._width, + height: oTile._height + }; + + if (!aTiles[i].isDragged() && iY > oRect.top && iY < oRect.top + oRect.height && iX > oRect.left && iX < oRect.left + oRect.width) { + aResult.push(aTiles[i]); + } + } + + return aResult; + }; + + /** + * Applies the start index of the pages first tile according to the given index. + * + * @param {int} iIndex The index of the tile that should be visible. + * @private + */ + TileContainer.prototype._applyPageStartIndex = function(iIndex) { + this._calculatePositions(); + var iLength = this.getTiles().length; + + if (iIndex < 0) { + iIndex = 0; + } else if (iIndex > iLength - 1) { + iIndex = iLength - 1; + } + + // where does the page start + var iCurrentPage = Math.floor(iIndex / this._iMaxTiles || 0); + this._iCurrentTileStartIndex = iCurrentPage * (this._iMaxTiles || 0); + + jQuery.sap.log.info("current index " + this._iCurrentTileStartIndex); + }; + + /** + * Scrolls to the given position. + * + * @param {int} The new scroll position. + * @private + */ + TileContainer.prototype._scrollTo = function(iScrollLeft, bAnimated) { + if (bAnimated !== false) { + bAnimated = true; // animated needs to be set explicitly to false + } + + this._applyTranslate(this.$("cnt"), -iScrollLeft, 0, bAnimated); + + if (this._bRtl) { + this._iScrollLeft = iScrollLeft - this._getContentDimension().outerwidth; + } else { + this._iScrollLeft = iScrollLeft; + } + }; + + /** + * Applies the translate x and y to the given jQuery object. + * + * @param {object} o$ The jQuery object + * @param {int} iX The pixel x value for the translate + * @param {int} iY The pixel y value for the translate + * @param {boolean} bAnimated Whether the translate should be animated or not. + * @private + */ + TileContainer.prototype._applyTranslate = function(o$, iX, iY, bAnimated) { + var o = o$[0]; + + this.$("cnt").toggleClass("sapMTCAnim",bAnimated); + + if ("webkitTransform" in o.style) { + o$.css('-webkit-transform','translate3d(' + iX + 'px,' + iY + 'px,0)'); + } else if ("MozTransform" in o.style) { + o$.css('-moz-transform','translate(' + iX + 'px,' + iY + 'px)'); + } else if ("transform" in o.style) { + o$.css('transform','translate3d(' + iX + 'px,' + iY + 'px,0)'); + } else if ("msTransform" in o.style) { + o$.css('-ms-transform','translate(' + iX + 'px,' + iY + 'px)'); + } + }; + + /** + * Initializes the touch session for the tile container. + * + * @param {jQuery.Event} oEvent The event object that started the touch. + * @private + */ + TileContainer.prototype._initTouchSession = function(oEvent) { + if (oEvent.type == "touchstart") { + var targetTouches = oEvent.targetTouches[0]; + this._oTouchSession = { + dStartTime : new Date(), + fStartX : targetTouches.pageX, + fStartY : targetTouches.pageY, + fDiffX : 0, + fDiffY : 0, + oControl : oEvent.srcControl, + iOffsetX : targetTouches.pageX - oEvent.target.offsetLeft + }; + } else { // mousedown + this._oTouchSession = { + dStartTime : new Date(), + fStartX : oEvent.pageX, + fStartY : oEvent.pageY, + fDiffX : 0, + fDiffY : 0, + oControl : oEvent.srcControl, + iOffsetX : oEvent.pageX - oEvent.target.offsetLeft + }; + } + }; + + /** + * Initializes the drag session for the tile container. + * + * @param {jQuery.Event} oEvent The event object that started the drag. + * @private + */ + TileContainer.prototype._initDragSession = function(oEvent) { + while (oEvent.srcControl && oEvent.srcControl.getParent() != this) { + oEvent.srcControl = oEvent.srcControl.getParent(); + } + + var iIndex = this.indexOfAggregation("tiles",oEvent.srcControl); + + if (oEvent.type == "touchstart") { + + this._oDragSession = { + oTile : oEvent.srcControl, + oTileElement : oEvent.srcControl.$()[0], + iOffsetLeft : oEvent.targetTouches[0].pageX - oEvent.srcControl._posX + this._iScrollLeft, + iOffsetTop : oEvent.targetTouches[0].pageY - oEvent.srcControl._posY, + iIndex : iIndex, + iOldIndex : iIndex, + iDiffX : oEvent.targetTouches[0].pageX, + iDiffY : oEvent.targetTouches[0].pageY + }; + } else { // mousedown + this._oDragSession = { + oTile : oEvent.srcControl, + oTileElement : oEvent.srcControl.$()[0], + iOffsetLeft : oEvent.pageX - oEvent.srcControl._posX + this._iScrollLeft, + iOffsetTop : oEvent.pageY - oEvent.srcControl._posY, + iIndex : iIndex, + iOldIndex : iIndex, + iDiffX : oEvent.pageX, + iDiffY : oEvent.pageY + }; + } + }; + + /** + * Handle click events for scollers in desktop case. + * + * @param {jQuery.Event} oEvent The event object that started the drag. + * @private + */ + TileContainer.prototype.onclick = function(oEvent) { + var oPager = this.$("pager")[0]; + + if (oEvent.target.id == this.getId() + "-leftscroller" || oEvent.target.parentNode.id == this.getId() + "-leftscroller") { + this.scrollLeft(); + } else if (oEvent.target.id == this.getId() + "-rightscroller" || oEvent.target.parentNode.id == this.getId() + "-rightscroller") { + this.scrollRight(); + } else if (oEvent.target == oPager && sap.ui.Device.system.desktop) { + if (oEvent.offsetX < oPager.offsetWidth / 2) { + this.scrollLeft(); + } else { + this.scrollRight(); + } + } + }; + + /** + * Handle the touchstart event on the TileContainer. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + TileContainer.prototype.ontouchstart = function(oEvent) { + + // mark the event for components that needs to know if the event was handled by this control. + oEvent.setMarked(); + + if (oEvent.targetTouches.length > 1 || this._oTouchSession) { // allow only one touch session + return; + } + + while (oEvent.srcControl && oEvent.srcControl.getParent() != this) { + oEvent.srcControl = oEvent.srcControl.getParent(); + } + + if (oEvent.srcControl instanceof sap.m.Tile && this.getEditable()) { + + if (oEvent.target.className != "sapMTCRemove") { + this._initDragSession(oEvent); + this._initTouchSession(oEvent); + this._oDragSession.oTile.isDragged(true); + } else { + this._initTouchSession(oEvent); + } + + this._bAvoidChildTapEvent = true; + } else { + this._initTouchSession(oEvent); + } + + jQuery(document).on("touchmove mousemove", jQuery.proxy(this._onmove, this)); + jQuery(document).on("touchend touchcancel mouseup", jQuery.proxy(this._onend, this)); + }; + + /** + * Handle the touch move event on the TileContainer. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + TileContainer.prototype._onmove = function(oEvent) { + + if (document.selection && document.selection.clear) { + document.selection.clear(); + } + + if (oEvent.isMarked("delayedMouseEvent")) { + return; + } + + if (oEvent.targetTouches && oEvent.targetTouches.length > 1) { //allow only one touch session + return; + } + + if (!oEvent.targetTouches) { + oEvent.targetTouches = [{pageX:oEvent.pageX,pageY:oEvent.pageY}]; + } + + var oTouchSession = this._oTouchSession; + oTouchSession.fDiffX = oTouchSession.fStartX - oEvent.targetTouches[0].pageX; + oTouchSession.fDiffY = oTouchSession.fStartY - oEvent.targetTouches[0].pageY; + + if (this._oDragSession) { + + if (Math.abs(oTouchSession.fDiffX) > 5) { + if (!this._oDragSession.bStarted) { + this._oDragSession.bStarted = true; + this._onDragStart(oEvent); + } else { + this._onDrag(oEvent); + } + + this._bAvoidChildTapEvent = true; + } + } else if (oTouchSession) { + var contentWidth = this._getContentDimension().outerwidth; + var iNewLeft = -this._iScrollLeft - oTouchSession.fDiffX; + + if (iNewLeft > this._iScrollGap) { + return; + } else if (iNewLeft < -(((this._iPages - 1) * contentWidth) + this._iScrollGap)) { + return; + } + + if (this._bRtl) { + iNewLeft = iNewLeft - contentWidth; + } + + this._applyTranslate(this.$("cnt"),iNewLeft,0,false); + } + }; + + /** + * Handle the touchend and mouseup events on the TileContainer. + * + * @param {jQuery.Event} The event object. + * @private + */ + TileContainer.prototype._onend = function(oEvent) { + + if (oEvent.isMarked("delayedMouseEvent")) { + return; + } + + jQuery(document).off("touchend touchcancel mouseup", this._onend); + jQuery(document).off("touchmove mousemove", this._onmove); + + if (this._oDragSession) { + + this._onDrop(oEvent); + delete this._oTouchSession; + return; + } + + if (!this._oTouchSession) { + return; + } + + var oTouchSession = this._oTouchSession, + oDate = new Date(), + bFast = (oDate - oTouchSession.dStartTime < 600), + iRtl = this._bRtl ? -1 : 1; + + // handle fast swipe or tap + if (bFast) { + var oPager = this.$("pager")[0]; + + if (Math.abs(oTouchSession.fDiffX) > 30) { + + this._applyPageStartIndex(this._iCurrentTileStartIndex + ((oTouchSession.fDiffX * iRtl > 0 ? 1 : -1) * this._iMaxTiles)); + this._bAvoidChildTapEvent = true; + } else if (oEvent.target == oPager && !sap.ui.Device.system.desktop) { + + if ((oTouchSession.iOffsetX - oPager.offsetWidth / 2) * iRtl < 0) { + this.scrollLeft(); + } else { + this.scrollRight(); + } + + this._bAvoidChildTapEvent = true; + } else if (oEvent.target.className == "sapMTCRemove") { + if (oEvent.type === "touchend" || (oEvent.type === "mouseup" && oEvent.button === 0)) { + this.fireTileDelete({ tile: oTouchSession.oControl }); + } + } + } else { + var oContentDimension = this._getContentDimension(); + + if (Math.abs(oTouchSession.fDiffX) > oContentDimension.outerwidth / 2) { + this._applyPageStartIndex(this._iCurrentTileStartIndex + ((oTouchSession.fDiffX * iRtl > 0 ? 1 : -1) * this._iMaxTiles)); + this._bAvoidChildTapEvent = true; + } + } + + this._update(); + + // remove unused properties + delete this._oDragSession; + delete this._oTouchSession; + var that = this; + + setTimeout(function(){ + that._bAvoidChildTapEvent = false; + },100); + }; + + /** + * Handles the drag start of an item in edit mode. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + TileContainer.prototype._onDragStart = function(oEvent) { + this.$().append(this._oDragSession.oTileElement); + this._oDragSession.iDiffX = this._oTouchSession.fStartX - this._oTouchSession.fDiffX; + this._oDragSession.iDiffY = this._oTouchSession.fStartY - this._oTouchSession.fDiffY; + this._oDragSession.oTile.setPos(this._oDragSession.iDiffX - this._oDragSession.iOffsetLeft,this._oDragSession.iDiffY - this._oDragSession.iOffsetTop); + this.$("blind").css("display","block"); + }; + + /** + * Handles the dragging of an item. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + TileContainer.prototype._onDrag = function(oEvent) { + + // calculate the center and middle position of the dragged tile + if (!this._oTouchSession) { + + // if onDrag is fired after an scroll interval but the drag session was already ended. + clearTimeout(this.iScrollTimer); + this._oDragSession = null; + this.iScrollTimer = null; + this._bTriggerScroll = false; + return; + } + + this._oDragSession.iDiffX = this._oTouchSession.fStartX - this._oTouchSession.fDiffX; + this._oDragSession.iDiffY = this._oTouchSession.fStartY - this._oTouchSession.fDiffY; + + var oContentDimension = this._getContentDimension(), + iTop = this._oDragSession.iDiffY - this._oDragSession.iOffsetTop, + iLeft = this._oDragSession.iDiffX - this._oDragSession.iOffsetLeft, + iMiddle = iTop + (this._oDragSession.oTileElement.offsetHeight / 2), + iCenter = iLeft + (this._oDragSession.oTileElement.offsetWidth / 2), + bScrollRight = iLeft + this._oDragSession.oTileElement.offsetWidth - this._iTriggerScrollOffset > oContentDimension.width, + bScrollLeft = iLeft < -this._iTriggerScrollOffset, + iNearRight = oContentDimension.width - (iLeft + this._oDragSession.oTileElement.offsetWidth), + iNearLeft = iLeft; + + //jQuery.sap.log.info("ScrollLeft = " + this._iScrollLeft + " Left = " + iLeft + " Top = " + iTop); + this._oDragSession.oTile.setPos(iLeft,iTop); + + // reset the clipping of the tile + this._oDragSession.oTile.$().css("clip","auto"); + + // clip the right part of the tile if it is near the right edge + var oRight = this.$("rightedge")[0]; + if (iLeft + this._oDragSession.oTile._width > oRight.offsetLeft + oRight.offsetWidth && this._iCurrentPage < this._iPages - 1) { + var iClipRight = oRight.offsetLeft + oRight.offsetWidth - iLeft - ((this._oDragSession.oTile._width - this._oDragSession.oTile.$().outerWidth(false)) / 2) - 2; + this._oDragSession.oTile.$().css("clip","rect(-25px," + iClipRight + "px," + (this._oDragSession.oTile._height + 20) + "px,-25px)"); + } + + // clip the left part of the tile if it is near the left edge + var oLeft = this.$("leftedge")[0]; + if (iLeft < oLeft.offsetLeft + 2 + ((this._oDragSession.oTile._width - this._oDragSession.oTile.$().outerWidth(false)) / 2) && this._iCurrentPage > 0) { + var iClipLeft = oLeft.offsetLeft + 4 - iLeft - ((this._oDragSession.oTile._width - this._oDragSession.oTile.$().outerWidth(false)) / 2); + this._oDragSession.oTile.$().css("clip","rect(-25px," + this._oDragSession.oTile._width + "px," + (this._oDragSession.oTile._height + 20) + "px," + iClipLeft + "px)"); + } + + // increase the opacity of the right edge the closer the tile is moved + if (iNearRight < this._iEdgeShowStart && this._iCurrentPage < this._iPages - 1) { + var iOpacity = (this._iEdgeShowStart - iNearRight) / (this._iEdgeShowStart + this._iTriggerScrollOffset); + this.$("rightedge").css("opacity","" + iOpacity); + } else { + + // not near the edge + this.$("rightedge").css("opacity","0.01"); + } + + // increase the opacity of the left edge the closer the tile is moved + if (iNearLeft < this._iEdgeShowStart && this._iCurrentPage > 0) { + var iOpacity = (this._iEdgeShowStart - iNearLeft) / (this._iEdgeShowStart + this._iTriggerScrollOffset); + this.$("leftedge").css("opacity","" + iOpacity); + } else { + + // not near the edge + this.$("leftedge").css("opacity","0.01"); + } + + // check if scrolling needed + var bScrollNeeded; + + if (this._bRtl) { + bScrollNeeded = bScrollRight && this._iCurrentPage > 0 || bScrollLeft && this._iCurrentPage < this._iPages - 1; + } else { + bScrollNeeded = bScrollLeft && this._iCurrentPage > 0 || bScrollRight && this._iCurrentPage < this._iPages - 1; + } + + if (bScrollNeeded) { + if (this._bTriggerScroll) { + bScrollLeft ? this.scrollLeft() : this.scrollRight(); + } else { + + // start the interval timer + var that = this; + if (!this.iScrollTimer) { + this.iScrollTimer = setInterval(function () { + that._bTriggerScroll = true; + that._onDrag(oEvent); //retrigger the event + that._bTriggerScroll = false; + },1000); + } + } + + // do not process further to avoid hovered tiles from the next page to be processed + return; + } else { + + // reset the interval timer + if (this.iScrollTimer) { + clearTimeout(this.iScrollTimer); + this._bTriggerScroll = false; + this.iScrollTimer = null; + } + } + + // get the hovered tile + var aHoveredTiles = this._getTilesFromPosition(iCenter, iMiddle); + if (aHoveredTiles && aHoveredTiles.length > 0) { + + // insert the tile after if center is on the right half of the target tile + var oHoveredTile = aHoveredTiles[0], + oRect = { + top: oHoveredTile._posY, + left: oHoveredTile._posX, + width: oHoveredTile._width, + height: oHoveredTile._height + }; + + var iIndex = this.indexOfAggregation("tiles", oHoveredTile); + + // (iIndex % this._iMaxTilesX) != 0 = Not a start tile in a row to avoid inserting in previous row which would flicker if + // drag right before the first tile in a row. + if (iCenter + this._iScrollLeft < ((oRect.left + oRect.width) / 2) && (iIndex % this._iMaxTilesX) != 0) { + iIndex--; + } + + this._oDragSession.iIndex = iIndex; + this.moveTile(this._oDragSession.oTile,this._oDragSession.iIndex); + } else if (this._iCurrentPage == this._iPages - 1) { + + // check whether the dragged tile is at the end of the tile container + var aTiles = this.getTiles(), + oLastTile = aTiles[aTiles.length - 1]; + + if (oLastTile && iCenter > oLastTile._posX - this._iScrollLeft && iMiddle > oLastTile._posY) { + this._oDragSession.iIndex = aTiles.length - 1; + this.moveTile(this._oDragSession.oTile, this._oDragSession.iIndex); + } + } + }; + + /** + * Handles the drop of a tile. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + TileContainer.prototype._onDrop = function(oEvent) { + if (this._oDragSession) { + var oTile = this._oDragSession.oTile, + iIndex = this._oDragSession.iIndex; + + this._oDragSession.oTile.isDragged(false); + + if (this._oDragSession.iOldIndex != this._oDragSession.iIndex) { + this.fireTileMove({ + tile: oTile, + newIndex: iIndex + }); + } + + this.$("blind").css("display","block"); + + if (this._oDragSession.bStarted) { + this._oDragSession.oTile.setPos(this._oDragSession.oTile._posX + this._iScrollLeft, this._oDragSession.oTile._posY); + } + + // reset the clipping + this._oDragSession.oTile.$().css("clip","auto"); + + // reset the edges + this.$("rightedge").css("opacity","0.01"); + this.$("leftedge").css("opacity","0.01"); + this.$("cnt").append(this._oDragSession.oTileElement); + delete this._oDragSession; + this.moveTile(oTile, iIndex); + this.scrollIntoView(oTile, false); + + if (sap.ui.Device.system.desktop || sap.ui.Device.system.combi) { + this._findTile(oTile.$()).focus(); + } + this._handleAriaActiveDescendant(); + + this.$("blind").css("display","none"); + } + }; + + /** + * Handles the WAI ARIA property aria-activedescendant + * + * @private + */ + TileContainer.prototype._handleAriaActiveDescendant = function () { + var oActiveElement = jQuery(document.activeElement).control(0); + if (oActiveElement instanceof sap.m.Tile && oActiveElement.getParent() === this) { + this.getDomRef().setAttribute("aria-activedescendant", oActiveElement.getId()); + } + }; + + /** + * Handles the WAI ARIA property aria-setsize after new tiles added + * + * @private + */ + TileContainer.prototype._handleAriaSize = function () { + var iTilesCount = this.getTiles().length; + /* All the tiles in TileContainer have to be updated */ + for (var iIndex = 0; iIndex < iTilesCount; iIndex++) { + var oTile = this.getTiles()[iIndex].getDomRef(); + if (oTile) { + oTile.setAttribute("aria-setsize", iTilesCount); + } + } + }; + + /** + * Synchronize the 'aria-posinset' attribute of the tiles with the respective + * index of aggregation. + * + * @private + * @param iOldPosInset The old posinset index + * @param iNewPosInset The new posinset index + * @returns {sap.m.TileContainer} This tile container. + */ + TileContainer.prototype._updateTilesAriaPosition = function (iOldPosInset, iNewPosInset) { + if (!iOldPosInset) { + jQuery.sap.log.warning("Cannot update ARIA posinset attribute. Missing old aria position inset."); + return this; + } + + if (!iNewPosInset) { + jQuery.sap.log.warning("Cannot update ARIA posinset attribute. Missing new aria postion inset."); + return this; + } + + var iLowerPosinset = Math.min(iOldPosInset, iNewPosInset); + var iHigherPosinset = Math.max(iOldPosInset, iNewPosInset); + + if (iLowerPosinset !== iHigherPosinset) { + var tiles = this.getTiles(); + for (var i = iLowerPosinset; i <= iHigherPosinset; i++) { + var iAggregationIndex = i - 1; + tiles[iAggregationIndex]._updateAriaPosition(); + } + } + + return this; + }; + + return TileContainer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TileContainer.js b/DVHMA-OpenUI5/www/resources/sap/m/TileContainer.js new file mode 100644 index 0000000..25542a7 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TileContainer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./library','sap/ui/core/Control','sap/ui/core/IconPool'],function(q,l,C,I){"use strict";var T=C.extend("sap.m.TileContainer",{metadata:{library:"sap.m",properties:{width:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:'100%'},height:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:'100%'},editable:{type:"boolean",group:"Misc",defaultValue:null},allowAdd:{type:"boolean",group:"Misc",defaultValue:null}},defaultAggregation:"tiles",aggregations:{tiles:{type:"sap.ui.core.Control",multiple:true,singularName:"tile"}},events:{tileMove:{parameters:{tile:{type:"sap.m.Tile"},newIndex:{type:"int"}}},tileDelete:{parameters:{tile:{type:"sap.m.Tile"}}},tileAdd:{}}}});I.insertFontFaceStyle();T.prototype._bRtl=sap.ui.getCore().getConfiguration().getRTL();T.prototype.init=function(){this._iCurrentTileStartIndex=0;this._iCurrentPage=0;this._iPages=0;this._iScrollLeft=0;this._iScrollGap=0;if(!sap.ui.Device.system.desktop){this._iScrollGap=0;}this.bAllowTextSelection=false;this._iInitialResizeTimeout=400;this._oDragSession=null;this._oTouchSession=null;this._bAvoidChildTapEvent=false;this._iEdgeShowStart=sap.ui.Device.system.phone?10:20;if(sap.ui.Device.system.phone){this._iTriggerScrollOffset=10;}else if(sap.ui.Device.system.desktop){this._iTriggerScrollOffset=-40;}else{this._iTriggerScrollOffset=20;}this._iCurrentFocusIndex=-1;if(sap.ui.Device.system.desktop||sap.ui.Device.system.combi){var o=q.proxy(function(E){if(this._iCurrentFocusIndex>=0){var r=this._iCurrentFocusIndex-this._iCurrentFocusIndex%this._iMaxTilesX;var F=this._iCurrentTileStartIndex===this._iCurrentFocusIndex?0:this._iCurrentTileStartIndex;var t=E.ctrlKey?F:r;var h=this.getTiles()[t];if(!!h){this._findTile(h.$()).focus();E.stopPropagation();}this._handleAriaActiveDescendant();}},this),O=q.proxy(function(E){if(this._iCurrentFocusIndex>=0){var t=this.getTiles();var r=this._iCurrentFocusIndex-this._iCurrentFocusIndex%this._iMaxTilesX;var R=r+this._iMaxTilesX0){this._findTile(t[h].$()).focus();E.stopPropagation();}this._handleAriaActiveDescendant();}},this),f=q.proxy(function(E){if(this.getTiles().length>0){var n=this._iCurrentFocusIndex-this._iMaxTiles>=0?this._iCurrentFocusIndex-this._iMaxTiles:0;var N=this.getTiles()[n];if(!!N){this._findTile(N.$()).focus();E.stopPropagation();}this._handleAriaActiveDescendant();}},this),a=q.proxy(function(E){var t=this.getTiles().length;if(t>0){var n=this._iCurrentFocusIndex+this._iMaxTiles=0){var t=this.getTiles();var n=this._iCurrentFocusIndex+1=0){var t=this.getTiles();var n=this._iCurrentFocusIndex-1>=0?this._iCurrentFocusIndex-1:this._iCurrentFocusIndex;if(!E.ctrlKey){var N=t[n];if(!!N){if(n>=this._iCurrentTileStartIndex){this._findTile(N.$()).focus();}else{this.scrollIntoView(N,true);var h=this;setTimeout(function(){h._findTile(N.$()).focus();},400);}}}else if(this.getEditable()){var i=t[this._iCurrentFocusIndex];this.moveTile(i,n);i.$().focus();}this._handleAriaActiveDescendant();E.stopPropagation();}},this),d=q.proxy(function(E){if(this._iCurrentFocusIndex>=0){var m=this._iCurrentFocusIndex%this._iMaxTiles,n=this._iCurrentFocusIndex+this._iMaxTilesX,M=n%this._iMaxTiles;if(!E.ctrlKey){var N=this.getTiles()[n];if((M>m)&&!!N){this._findTile(N.$()).focus();}}else if(this.getEditable()){var t=this.getTiles()[this._iCurrentFocusIndex];this.moveTile(t,n);t.$().focus();}this._handleAriaActiveDescendant();E.stopPropagation();}},this),e=q.proxy(function(E){if(this._iCurrentFocusIndex>=0){var m=this._iCurrentFocusIndex%this._iMaxTiles,n=this._iCurrentFocusIndex-this._iMaxTilesX,M=n%this._iMaxTiles;if(!E.ctrlKey){var N=this.getTiles()[n];if((M=0&&this.getEditable()){var t=this.getTiles()[this._iCurrentFocusIndex];if(t.getRemovable()){this.deleteTile(t);if(this._iCurrentFocusIndex===this.getTiles().length){if(this.getTiles().length!==0){this.getTiles()[this._iCurrentFocusIndex-1].$().focus();}else{this._findNextTabbable().focus();}}else{this.getTiles()[this._iCurrentFocusIndex].$().focus();}this._handleAriaActiveDescendant();}E.stopPropagation();}},this);this.onsaphome=o;this.onsaphomemodifiers=o;this.onsapend=O;this.onsapendmodifiers=O;this.onsapright=this._bRtl?c:b;this.onsaprightmodifiers=this._bRtl?c:b;this.onsapleft=this._bRtl?b:c;this.onsapleftmodifiers=this._bRtl?b:c;this.onsapup=e;this.onsapupmodifiers=e;this.onsapdown=d;this.onsapdownmodifiers=d;this.onsappageup=f;this.onsappagedown=a;this.onsapdelete=g;this.data("sap-ui-fastnavgroup","true",true);}};T.prototype._findNextTabbable=function(){var r=this.$();var t=q.merge(q.merge(r.nextAll(),r.parents().nextAll()).find(':sapTabbable').addBack(':sapTabbable'),q.merge(r.parents().prevAll(),r.prevAll()).find(':sapTabbable').addBack(':sapTabbable'));return t.first();};T.prototype.onBeforeRendering=function(){if(this._sResizeListenerId){sap.ui.core.ResizeHandler.deregister(this._sResizeListenerId);this._sResizeListenerId=null;}};T.prototype.onAfterRendering=function(){this._sResizeListenerId=sap.ui.core.ResizeHandler.register(this.getDomRef().parentElement,q.proxy(this._resize,this));this._applyDimension();this.$().toggleClass("sapMTCEditable",this.getEditable()===true);var t=this;this._sInitialResizeTimeoutId=setTimeout(function(){t._update(true);},this._iInitialResizeTimeout);if(sap.ui.Device.system.desktop||sap.ui.Device.system.combi){if(this.getTiles().length>0&&this._mFocusables){this._mFocusables[this.getTiles()[0].getId()].eq(0).attr('tabindex','0');}}};T.prototype.setEditable=function(v){var t=this.getTiles();this.setProperty("editable",v,true);var e=this.getEditable();this.$().toggleClass("sapMTCEditable",e);for(var i=0;i=0?a._iCurrentFocusIndex:0;var b=a.getTiles()[P];if(b){a._mFocusables[b.getId()].attr("tabindex","-1");a._mFocusables[this.getId()].attr("tabindex","0");}if(p!=0){a.scrollIntoView(i);a._resize();}a._handleAriaActiveDescendant();a._iCurrentFocusIndex=i;};t.addEventDelegate({"onfocusin":o},t);}if(this.getDomRef()){this.insertAggregation("tiles",t,i,true);if(!this._oDragSession){var r=sap.ui.getCore().createRenderManager(),c=this.$("cnt")[0];r.renderControl(t);r.flush(c,false,i);r.destroy();}this._update(false);}else{this.insertAggregation("tiles",t,i);}this._handleAriaSize();return this;};T.prototype._isFocusable=function(i,e){var a=!isNaN(q(e).attr("tabindex"));var n=e.nodeName.toLowerCase();if(n==="area"){var m=e.parentNode,b=m.name,c;if(!e.href||!b||m.nodeName.toLowerCase()!=="map"){return false;}c=q("img[usemap=#"+b+"]")[0];return!!c;}return(/input|select|textarea|button|object/.test(n)?!e.disabled:n=="a"?e.href||a:a);};T.prototype.deleteTile=function(t){if(this.getDomRef()){var i=this.indexOfAggregation("tiles",t)-1;this.removeAggregation("tiles",t,true);if(!this._oDragSession){t.getDomRef().parentNode.removeChild(t.getDomRef());if(sap.ui.Device.system.desktop||sap.ui.Device.system.combi){if(this._mFocusables&&this._mFocusables[t.getId()]){delete this._mFocusables[t.getId()];}}}this._applyPageStartIndex(i<0?0:i);this._update(false);}else{this.removeAggregation("tiles",t,false);}this._handleAriaSize();return this;};T.prototype.removeTile=T.prototype.deleteTile;T.prototype.removeAllTiles=function(){var t=this.getTiles().length-1;for(var i=t;i>=0;i--){var o=this.getTiles()[i];this.deleteTile(o);}return this;};T.prototype.destroyTiles=function(){if(this.getDomRef()){var t=this.getTiles();this.removeAllAggregation("tiles",true);this._update();for(var i=0;i1){var h=[""];for(var i=0;i");p.style.display="block";p.childNodes[this._iCurrentPage].className="sapMTCActive";if(sap.ui.Device.system.desktop){var a={r:this._iCurrentPage==this._iPages-1,l:this._iCurrentPage==0};if(this._bRtl){var t=a.r;a.r=a.l;a.l=t;S.style.left="auto";s.style.right="auto";}S.style.right=a.r?"-100px":"1rem";s.style.left=a.l?"-100px":"1rem";s.style.display="block";S.style.display="block";if(a.r){S.style.display="none";}if(a.l){s.style.display="none";}}}else{p.innerHTML="";S.style.right="-100px";s.style.left="-100px";s.style.display="none";S.style.display="none";}};T.prototype._getContentDimension=function(){if(!this.getDomRef()){return;}var s=this.$("scrl");return{width:s.width(),height:s.height()-20,outerheight:s.outerHeight()-20,outerwidth:s.outerWidth()};};T.prototype._getContainerDimension=function(){var d=this.$();if(!d){return;}return{width:d.width(),height:d.height(),outerheight:d.outerHeight(),outerwidth:d.outerWidth()};};T.prototype._getTileDimension=function(){if(!this.getDomRef()){return;}if(this._oTileDim){return this._oTileDim;}var t=this.getTiles()[0];this._oTileDim={width:Math.round(t.$().outerWidth(true)),height:Math.round(t.$().outerHeight(true))};return this._oTileDim;};T.prototype._calculatePositions=function(){if(this.getTiles().length===0){return;}this._oTileDimension=this._getTileDimension();var c=this._getContainerDimension(),t=this.getTiles().length,p=this.$("pager")[0].offsetHeight;if(c.height===0){return;}if(sap.ui.Device.system.desktop){c.width-=45*2;}var m=Math.max(Math.floor(c.width/this._oTileDimension.width),1),M=Math.max(Math.floor((c.height-p)/this._oTileDimension.height),1),n=(tR.top&&yR.left&&xL-1){i=L-1;}var c=Math.floor(i/this._iMaxTiles||0);this._iCurrentTileStartIndex=c*(this._iMaxTiles||0);q.sap.log.info("current index "+this._iCurrentTileStartIndex);};T.prototype._scrollTo=function(s,a){if(a!==false){a=true;}this._applyTranslate(this.$("cnt"),-s,0,a);if(this._bRtl){this._iScrollLeft=s-this._getContentDimension().outerwidth;}else{this._iScrollLeft=s;}};T.prototype._applyTranslate=function(a,x,y,A){var o=a[0];this.$("cnt").toggleClass("sapMTCAnim",A);if("webkitTransform"in o.style){a.css('-webkit-transform','translate3d('+x+'px,'+y+'px,0)');}else if("MozTransform"in o.style){a.css('-moz-transform','translate('+x+'px,'+y+'px)');}else if("transform"in o.style){a.css('transform','translate3d('+x+'px,'+y+'px,0)');}else if("msTransform"in o.style){a.css('-ms-transform','translate('+x+'px,'+y+'px)');}};T.prototype._initTouchSession=function(e){if(e.type=="touchstart"){var t=e.targetTouches[0];this._oTouchSession={dStartTime:new Date(),fStartX:t.pageX,fStartY:t.pageY,fDiffX:0,fDiffY:0,oControl:e.srcControl,iOffsetX:t.pageX-e.target.offsetLeft};}else{this._oTouchSession={dStartTime:new Date(),fStartX:e.pageX,fStartY:e.pageY,fDiffX:0,fDiffY:0,oControl:e.srcControl,iOffsetX:e.pageX-e.target.offsetLeft};}};T.prototype._initDragSession=function(e){while(e.srcControl&&e.srcControl.getParent()!=this){e.srcControl=e.srcControl.getParent();}var i=this.indexOfAggregation("tiles",e.srcControl);if(e.type=="touchstart"){this._oDragSession={oTile:e.srcControl,oTileElement:e.srcControl.$()[0],iOffsetLeft:e.targetTouches[0].pageX-e.srcControl._posX+this._iScrollLeft,iOffsetTop:e.targetTouches[0].pageY-e.srcControl._posY,iIndex:i,iOldIndex:i,iDiffX:e.targetTouches[0].pageX,iDiffY:e.targetTouches[0].pageY};}else{this._oDragSession={oTile:e.srcControl,oTileElement:e.srcControl.$()[0],iOffsetLeft:e.pageX-e.srcControl._posX+this._iScrollLeft,iOffsetTop:e.pageY-e.srcControl._posY,iIndex:i,iOldIndex:i,iDiffX:e.pageX,iDiffY:e.pageY};}};T.prototype.onclick=function(e){var p=this.$("pager")[0];if(e.target.id==this.getId()+"-leftscroller"||e.target.parentNode.id==this.getId()+"-leftscroller"){this.scrollLeft();}else if(e.target.id==this.getId()+"-rightscroller"||e.target.parentNode.id==this.getId()+"-rightscroller"){this.scrollRight();}else if(e.target==p&&sap.ui.Device.system.desktop){if(e.offsetX1||this._oTouchSession){return;}while(e.srcControl&&e.srcControl.getParent()!=this){e.srcControl=e.srcControl.getParent();}if(e.srcControl instanceof sap.m.Tile&&this.getEditable()){if(e.target.className!="sapMTCRemove"){this._initDragSession(e);this._initTouchSession(e);this._oDragSession.oTile.isDragged(true);}else{this._initTouchSession(e);}this._bAvoidChildTapEvent=true;}else{this._initTouchSession(e);}q(document).on("touchmove mousemove",q.proxy(this._onmove,this));q(document).on("touchend touchcancel mouseup",q.proxy(this._onend,this));};T.prototype._onmove=function(e){if(document.selection&&document.selection.clear){document.selection.clear();}if(e.isMarked("delayedMouseEvent")){return;}if(e.targetTouches&&e.targetTouches.length>1){return;}if(!e.targetTouches){e.targetTouches=[{pageX:e.pageX,pageY:e.pageY}];}var t=this._oTouchSession;t.fDiffX=t.fStartX-e.targetTouches[0].pageX;t.fDiffY=t.fStartY-e.targetTouches[0].pageY;if(this._oDragSession){if(Math.abs(t.fDiffX)>5){if(!this._oDragSession.bStarted){this._oDragSession.bStarted=true;this._onDragStart(e);}else{this._onDrag(e);}this._bAvoidChildTapEvent=true;}}else if(t){var c=this._getContentDimension().outerwidth;var n=-this._iScrollLeft-t.fDiffX;if(n>this._iScrollGap){return;}else if(n<-(((this._iPages-1)*c)+this._iScrollGap)){return;}if(this._bRtl){n=n-c;}this._applyTranslate(this.$("cnt"),n,0,false);}};T.prototype._onend=function(e){if(e.isMarked("delayedMouseEvent")){return;}q(document).off("touchend touchcancel mouseup",this._onend);q(document).off("touchmove mousemove",this._onmove);if(this._oDragSession){this._onDrop(e);delete this._oTouchSession;return;}if(!this._oTouchSession){return;}var t=this._oTouchSession,d=new Date(),f=(d-t.dStartTime<600),r=this._bRtl?-1:1;if(f){var p=this.$("pager")[0];if(Math.abs(t.fDiffX)>30){this._applyPageStartIndex(this._iCurrentTileStartIndex+((t.fDiffX*r>0?1:-1)*this._iMaxTiles));this._bAvoidChildTapEvent=true;}else if(e.target==p&&!sap.ui.Device.system.desktop){if((t.iOffsetX-p.offsetWidth/2)*r<0){this.scrollLeft();}else{this.scrollRight();}this._bAvoidChildTapEvent=true;}else if(e.target.className=="sapMTCRemove"){if(e.type==="touchend"||(e.type==="mouseup"&&e.button===0)){this.fireTileDelete({tile:t.oControl});}}}else{var c=this._getContentDimension();if(Math.abs(t.fDiffX)>c.outerwidth/2){this._applyPageStartIndex(this._iCurrentTileStartIndex+((t.fDiffX*r>0?1:-1)*this._iMaxTiles));this._bAvoidChildTapEvent=true;}}this._update();delete this._oDragSession;delete this._oTouchSession;var a=this;setTimeout(function(){a._bAvoidChildTapEvent=false;},100);};T.prototype._onDragStart=function(e){this.$().append(this._oDragSession.oTileElement);this._oDragSession.iDiffX=this._oTouchSession.fStartX-this._oTouchSession.fDiffX;this._oDragSession.iDiffY=this._oTouchSession.fStartY-this._oTouchSession.fDiffY;this._oDragSession.oTile.setPos(this._oDragSession.iDiffX-this._oDragSession.iOffsetLeft,this._oDragSession.iDiffY-this._oDragSession.iOffsetTop);this.$("blind").css("display","block");};T.prototype._onDrag=function(e){if(!this._oTouchSession){clearTimeout(this.iScrollTimer);this._oDragSession=null;this.iScrollTimer=null;this._bTriggerScroll=false;return;}this._oDragSession.iDiffX=this._oTouchSession.fStartX-this._oTouchSession.fDiffX;this._oDragSession.iDiffY=this._oTouchSession.fStartY-this._oTouchSession.fDiffY;var c=this._getContentDimension(),t=this._oDragSession.iDiffY-this._oDragSession.iOffsetTop,L=this._oDragSession.iDiffX-this._oDragSession.iOffsetLeft,m=t+(this._oDragSession.oTileElement.offsetHeight/2),i=L+(this._oDragSession.oTileElement.offsetWidth/2),s=L+this._oDragSession.oTileElement.offsetWidth-this._iTriggerScrollOffset>c.width,S=L<-this._iTriggerScrollOffset,n=c.width-(L+this._oDragSession.oTileElement.offsetWidth),N=L;this._oDragSession.oTile.setPos(L,t);this._oDragSession.oTile.$().css("clip","auto");var r=this.$("rightedge")[0];if(L+this._oDragSession.oTile._width>r.offsetLeft+r.offsetWidth&&this._iCurrentPage0){var b=o.offsetLeft+4-L-((this._oDragSession.oTile._width-this._oDragSession.oTile.$().outerWidth(false))/2);this._oDragSession.oTile.$().css("clip","rect(-25px,"+this._oDragSession.oTile._width+"px,"+(this._oDragSession.oTile._height+20)+"px,"+b+"px)");}if(n0){var O=(this._iEdgeShowStart-N)/(this._iEdgeShowStart+this._iTriggerScrollOffset);this.$("leftedge").css("opacity",""+O);}else{this.$("leftedge").css("opacity","0.01");}var d;if(this._bRtl){d=s&&this._iCurrentPage>0||S&&this._iCurrentPage0||s&&this._iCurrentPage0){var H=h[0],R={top:H._posY,left:H._posX,width:H._width,height:H._height};var g=this.indexOfAggregation("tiles",H);if(i+this._iScrollLeft<((R.left+R.width)/2)&&(g%this._iMaxTilesX)!=0){g--;}this._oDragSession.iIndex=g;this.moveTile(this._oDragSession.oTile,this._oDragSession.iIndex);}else if(this._iCurrentPage==this._iPages-1){var j=this.getTiles(),k=j[j.length-1];if(k&&i>k._posX-this._iScrollLeft&&m>k._posY){this._oDragSession.iIndex=j.length-1;this.moveTile(this._oDragSession.oTile,this._oDragSession.iIndex);}}};T.prototype._onDrop=function(e){if(this._oDragSession){var t=this._oDragSession.oTile,i=this._oDragSession.iIndex;this._oDragSession.oTile.isDragged(false);if(this._oDragSession.iOldIndex!=this._oDragSession.iIndex){this.fireTileMove({tile:t,newIndex:i});}this.$("blind").css("display","block");if(this._oDragSession.bStarted){this._oDragSession.oTile.setPos(this._oDragSession.oTile._posX+this._iScrollLeft,this._oDragSession.oTile._posY);}this._oDragSession.oTile.$().css("clip","auto");this.$("rightedge").css("opacity","0.01");this.$("leftedge").css("opacity","0.01");this.$("cnt").append(this._oDragSession.oTileElement);delete this._oDragSession;this.moveTile(t,i);this.scrollIntoView(t,false);if(sap.ui.Device.system.desktop||sap.ui.Device.system.combi){this._findTile(t.$()).focus();}this._handleAriaActiveDescendant();this.$("blind").css("display","none");}};T.prototype._handleAriaActiveDescendant=function(){var a=q(document.activeElement).control(0);if(a instanceof sap.m.Tile&&a.getParent()===this){this.getDomRef().setAttribute("aria-activedescendant",a.getId());}};T.prototype._handleAriaSize=function(){var t=this.getTiles().length;for(var i=0;i 0 ? oControl.getTiles()[0].getId() : "" + }); + + rm.write(" >"); + rm.write("
    "); + rm.write("
    "); + rm.write("
    "); + var aTiles = oControl.getTiles(); + for (var i = 0;i < aTiles.length;i++) { + aTiles[i]._setVisible(false); + rm.renderControl(aTiles[i]); + } + rm.write("
    "); + rm.write("
    "); + rm.write("
    "); + rm.write("
    "); + rm.write("
    "); + rm.write("
    "); + rm.write("
    "); + rm.write("
    "); + rm.write(""); + }; + + return TileContainerRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TileContainerRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/TileContainerRenderer.js new file mode 100644 index 0000000..f63e259 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TileContainerRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var T={};T.render=function(r,c){var a=c.getId();r.write("
    0?c.getTiles()[0].getId():""});r.write(" >");r.write("
    ");r.write("
    ");r.write("
    ");var t=c.getTiles();for(var i=0;i");r.write("
    ");r.write("
    ");r.write("
    ");r.write("
    ");r.write("
    ");r.write("
    ");r.write("
    ");r.write("
    ");};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TileRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/TileRenderer-dbg.js new file mode 100644 index 0000000..673e54f --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TileRenderer-dbg.js @@ -0,0 +1,64 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides default renderer for control sap.m.Text +sap.ui.define(['jquery.sap.global', 'sap/ui/core/Renderer'], + function(jQuery, Renderer) { + "use strict"; + + + /** + * Text renderer + * @author SAP SE + * @namespace + */ + var TileRenderer = {}; + + /** + * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}. + * @param {sap.ui.core.RenderManager} oRenderManager The RenderManager that can be used for writing to the render output buffer. + * @param {sap.ui.core.Control} oControl An object representation of the control that should be rendered. + */ + TileRenderer.render = function(rm, oControl) { + rm.write("
    "); + if (oControl.getRemovable()) { + rm.write("
    "); + } else { + rm.write("
    "); + } + rm.write("
    "); + this._renderContent(rm,oControl); + rm.write("
    "); + }; + + TileRenderer._renderContent = function(rm, oControl) {}; + + return TileRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TileRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/TileRenderer.js new file mode 100644 index 0000000..d427e9f --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TileRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/core/Renderer'],function(q,R){"use strict";var T={};T.render=function(r,c){r.write("
    ");if(c.getRemovable()){r.write("
    ");}else{r.write("
    ");}r.write("
    ");this._renderContent(r,c);r.write("
    ");};T._renderContent=function(r,c){};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Title-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/Title-dbg.js new file mode 100644 index 0000000..1f93beb --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Title-dbg.js @@ -0,0 +1,131 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.Title. +sap.ui.define(['jquery.sap.global', 'sap/ui/core/Control', 'sap/ui/Device', './library'], + function(jQuery, Control, Device, library) { + "use strict"; + + /** + * Constructor for a new Title Text Control. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * Title control is used for header texts and title. + * @extends sap.ui.core.Control + * @implements sap.ui.core.IShrinkable + * + * @author SAP SE + * @version 1.28.5 + * @since 1.27.0 + * + * @constructor + * @public + * @alias sap.m.Title + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var Title = Control.extend("sap.m.Title", /** @lends sap.m.Title.prototype */ { metadata : { + + library : "sap.m", + interfaces : [ + "sap.ui.core.IShrinkable" + ], + properties : { + + /** + * Title Text to be displayed + */ + text : {type : "string", group : "Appearance", defaultValue : null}, + + /** + * Defines the semantic level of the title. Using 'Auto' no explicit level information is written. + */ + level : {type : "sap.ui.core.TitleLevel", group : "Appearance", defaultValue : sap.ui.core.TitleLevel.Auto}, + + /** + * Sets the style of the Title. Using 'Auto' the style is automatically set based on the current position of the title and the current theming. + */ + titleStyle : {type : "sap.ui.core.TitleLevel", group : "Appearance", defaultValue : sap.ui.core.TitleLevel.Auto}, + + /** + * Defines the width of the Title. + */ + width : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : null}, + + /** + * Available alignment settings are "Begin", "Center", "End", "Left", and "Right". + */ + textAlign : {type : "sap.ui.core.TextAlign", group : "Appearance", defaultValue : sap.ui.core.TextAlign.Initial} + + }, + associations : { + + /** + * Association to a generic title description. + * If such a title element is associated the properties text, level and tooltip (text only) of this element are consumed. + * The corresponding properties of the title control are ignored. + */ + title : {type : "sap.ui.core.Title", multiple : false} + } + + }}); + + // Returns the instance of the associated sap.ui.core.Title if exists + Title.prototype._getTitle = function(){ + var sTitle = this.getTitle(); + + if (sTitle) { + var oTitle = sap.ui.getCore().byId(sTitle); + if (oTitle && oTitle instanceof sap.ui.core.Title) { + return oTitle; + } + } + + return null; + }; + + Title.prototype._onTitleChanged = function(){ + this.invalidate(); + }; + + Title.prototype.setTitle = function(vTitle){ + var that = this; + + var oOldTitle = this._getTitle(); + if (oOldTitle) { + oOldTitle.invalidate = oOldTitle.__sapui5_title_originvalidate; + oOldTitle.exit = oOldTitle.__sapui5_title_origexit; + delete oOldTitle.__sapui5_title_origexit; + delete oOldTitle.__sapui5_title_originvalidate; + } + + this.setAssociation("title", vTitle); + + var oNewTitle = this._getTitle(); + if (oNewTitle) { + oNewTitle.__sapui5_title_originvalidate = oNewTitle.invalidate; + oNewTitle.__sapui5_title_origexit = oNewTitle.exit; + oNewTitle.exit = function() { + that._onTitleChanged(); + if (this.__sapui5_title_origexit) { + this.__sapui5_title_origexit.apply(this, arguments); + } + }; + oNewTitle.invalidate = function() { + that._onTitleChanged(); + this.__sapui5_title_originvalidate.apply(this, arguments); + }; + } + + return this; + }; + + + return Title; + +}, /* bExport= */ true); \ No newline at end of file diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Title.js b/DVHMA-OpenUI5/www/resources/sap/m/Title.js new file mode 100644 index 0000000..9ec8979 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Title.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/core/Control','sap/ui/Device','./library'],function(q,C,D,l){"use strict";var T=C.extend("sap.m.Title",{metadata:{library:"sap.m",interfaces:["sap.ui.core.IShrinkable"],properties:{text:{type:"string",group:"Appearance",defaultValue:null},level:{type:"sap.ui.core.TitleLevel",group:"Appearance",defaultValue:sap.ui.core.TitleLevel.Auto},titleStyle:{type:"sap.ui.core.TitleLevel",group:"Appearance",defaultValue:sap.ui.core.TitleLevel.Auto},width:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:null},textAlign:{type:"sap.ui.core.TextAlign",group:"Appearance",defaultValue:sap.ui.core.TextAlign.Initial}},associations:{title:{type:"sap.ui.core.Title",multiple:false}}}});T.prototype._getTitle=function(){var t=this.getTitle();if(t){var o=sap.ui.getCore().byId(t);if(o&&o instanceof sap.ui.core.Title){return o;}}return null;};T.prototype._onTitleChanged=function(){this.invalidate();};T.prototype.setTitle=function(t){var a=this;var o=this._getTitle();if(o){o.invalidate=o.__sapui5_title_originvalidate;o.exit=o.__sapui5_title_origexit;delete o.__sapui5_title_origexit;delete o.__sapui5_title_originvalidate;}this.setAssociation("title",t);var n=this._getTitle();if(n){n.__sapui5_title_originvalidate=n.invalidate;n.__sapui5_title_origexit=n.exit;n.exit=function(){a._onTitleChanged();if(this.__sapui5_title_origexit){this.__sapui5_title_origexit.apply(this,arguments);}};n.invalidate=function(){a._onTitleChanged();this.__sapui5_title_originvalidate.apply(this,arguments);};}return this;};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TitleRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/TitleRenderer-dbg.js new file mode 100644 index 0000000..37a6755 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TitleRenderer-dbg.js @@ -0,0 +1,72 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides default renderer for control sap.m.Title +sap.ui.define(['jquery.sap.global', 'sap/ui/Device'], + function(jQuery, Device) { + "use strict"; + + + /** + * @class Title renderer. + * @static + */ + var TitleRenderer = {}; + + /** + * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}. + * @param {sap.ui.core.RenderManager} oRm the RenderManager that can be used for writing to the Render-Output-Buffer + * @param {sap.ui.core.Control} oShell an object representation of the control that should be rendered + */ + TitleRenderer.render = function(oRm, oTitle){ + var oAssoTitle = oTitle._getTitle(), + sLevel = (oAssoTitle ? oAssoTitle.getLevel() : oTitle.getLevel()) || sap.ui.core.TitleLevel.Auto, + bAutoLevel = sLevel == sap.ui.core.TitleLevel.Auto, + sTag = bAutoLevel ? "div" : sLevel; + + oRm.write("<", sTag); + oRm.writeControlData(oTitle); + oRm.addClass("sapMTitle"); + oRm.addClass("sapMTitleStyle" + (oTitle.getTitleStyle() || sap.ui.core.TitleLevel.Auto)); + oRm.addClass("sapMTitleNoWrap"); + oRm.addClass("sapUiSelectable"); + + var sWidth = oTitle.getWidth(); + if (!sWidth) { + oRm.addClass("sapMTitleMaxWidth"); + } else { + oRm.addStyle("width", sWidth); + } + + var sTextAlign = oTitle.getTextAlign(); + if (sTextAlign && sTextAlign != sap.ui.core.TextAlign.Initial) { + oRm.addClass("sapMTitleAlign" + sTextAlign); + } + + if (oTitle.getParent() instanceof sap.m.Toolbar) { + oRm.addClass("sapMTitleTB"); + } + + var sTooltip = oAssoTitle ? oAssoTitle.getTooltip_AsString() : oTitle.getTooltip_AsString(); + if (sTooltip) { + oRm.writeAttributeEscaped("title", sTooltip); + } + + if (bAutoLevel) { + oRm.writeAttribute("role", "heading"); + } + + oRm.writeClasses(); + oRm.writeStyles(); + + oRm.write(">"); + oRm.writeEscaped(oAssoTitle ? oAssoTitle.getText() : oTitle.getText()); + oRm.write(""); + }; + + return TitleRenderer; + +}, /* bExport= */ true); \ No newline at end of file diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TitleRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/TitleRenderer.js new file mode 100644 index 0000000..130b933 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TitleRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/Device'],function(q,D){"use strict";var T={};T.render=function(r,t){var a=t._getTitle(),l=(a?a.getLevel():t.getLevel())||sap.ui.core.TitleLevel.Auto,A=l==sap.ui.core.TitleLevel.Auto,s=A?"div":l;r.write("<",s);r.writeControlData(t);r.addClass("sapMTitle");r.addClass("sapMTitleStyle"+(t.getTitleStyle()||sap.ui.core.TitleLevel.Auto));r.addClass("sapMTitleNoWrap");r.addClass("sapUiSelectable");var w=t.getWidth();if(!w){r.addClass("sapMTitleMaxWidth");}else{r.addStyle("width",w);}var b=t.getTextAlign();if(b&&b!=sap.ui.core.TextAlign.Initial){r.addClass("sapMTitleAlign"+b);}if(t.getParent()instanceof sap.m.Toolbar){r.addClass("sapMTitleTB");}var c=a?a.getTooltip_AsString():t.getTooltip_AsString();if(c){r.writeAttributeEscaped("title",c);}if(A){r.writeAttribute("role","heading");}r.writeClasses();r.writeStyles();r.write(">");r.writeEscaped(a?a.getText():t.getText());r.write("");};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ToggleButton-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/ToggleButton-dbg.js new file mode 100644 index 0000000..104e926 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ToggleButton-dbg.js @@ -0,0 +1,85 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.ToggleButton. +sap.ui.define(['jquery.sap.global', './Button', './library', 'sap/ui/core/EnabledPropagator'], + function(jQuery, Button, library, EnabledPropagator) { + "use strict"; + + + + /** + * Constructor for a new ToggleButton. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * The ToggleButton Control is a Button that can be toggled between pressed and normal state + * @extends sap.m.Button + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.m.ToggleButton + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var ToggleButton = Button.extend("sap.m.ToggleButton", /** @lends sap.m.ToggleButton.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * The property is “true” when the control is toggled. The default state of this property is "false". + */ + pressed : {type : "boolean", group : "Data", defaultValue : false} + } + }}); + + EnabledPropagator.call(ToggleButton.prototype); + + /** + * Function is called when ToggleButton is clicked. + * + * @param {jQuery.Event} oEvent + * @private + */ + ToggleButton.prototype.ontap = function(oEvent) { + // mark the event for components that needs to know if the event was handled by the ToggleButton + oEvent.setMarked(); + if (this.getEnabled()) { + this.setPressed(!this.getPressed()); + this.firePress({ pressed: this.getPressed() }); + } + }; + + ToggleButton.prototype.setPressed = function(bPressed) { + if (bPressed != this.getPressed()) { + this.setProperty("pressed", bPressed, true); + this.$().attr("aria-pressed", bPressed); + this.$("inner").toggleClass("sapMToggleBtnPressed",bPressed); + } + return this; + }; + + /** + * Handle the key down event for SPACE and ENTER. + * @param {jQuery.Event} oEvent - the keyboard event. + * @private + */ + ToggleButton.prototype.onkeydown = function(oEvent) { + + if (oEvent.which === jQuery.sap.KeyCodes.SPACE || oEvent.which === jQuery.sap.KeyCodes.ENTER) { + this.ontap(oEvent); + } + }; + + + return ToggleButton; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ToggleButton.js b/DVHMA-OpenUI5/www/resources/sap/m/ToggleButton.js new file mode 100644 index 0000000..f6e2c43 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ToggleButton.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Button','./library','sap/ui/core/EnabledPropagator'],function(q,B,l,E){"use strict";var T=B.extend("sap.m.ToggleButton",{metadata:{library:"sap.m",properties:{pressed:{type:"boolean",group:"Data",defaultValue:false}}}});E.call(T.prototype);T.prototype.ontap=function(e){e.setMarked();if(this.getEnabled()){this.setPressed(!this.getPressed());this.firePress({pressed:this.getPressed()});}};T.prototype.setPressed=function(p){if(p!=this.getPressed()){this.setProperty("pressed",p,true);this.$().attr("aria-pressed",p);this.$("inner").toggleClass("sapMToggleBtnPressed",p);}return this;};T.prototype.onkeydown=function(e){if(e.which===q.sap.KeyCodes.SPACE||e.which===q.sap.KeyCodes.ENTER){this.ontap(e);}};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ToggleButtonRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/ToggleButtonRenderer-dbg.js new file mode 100644 index 0000000..d413130 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ToggleButtonRenderer-dbg.js @@ -0,0 +1,53 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides default renderer for control sap.ui.commons.Togglebutton +sap.ui.define(['jquery.sap.global', './ButtonRenderer', 'sap/ui/core/Renderer'], + function(jQuery, ButtonRenderer, Renderer) { + "use strict"; + + + /** + * ToggleButton renderer. + * @namespace + */ + + var ToggleButtonRenderer = Renderer.extend(ButtonRenderer); + + /** + * Callback for specific rendering of accessibility attributes. + * + * @param {sap.ui.core.RenderManager} + * oRm the RenderManager currently rendering this control + * @param {sap.m.ToggleButton} + * oToggleButton the ToggleButton that should be rendered + * @param {object} mAccProps Accessibillity properties + * @private + */ + ToggleButtonRenderer.renderAccessibilityAttributes = function(oRm, oToggleButton, mAccProps) { + + mAccProps["pressed"] = oToggleButton.getPressed(); + + }; + + /** + * Callback for specific rendering of inner button attributes. + * + * @param {sap.ui.core.RenderManager} + * oRm the RenderManager currently rendering this control + * @param {sap.m.ToggleButton} + * oToggleButton the ToggleButton that should be rendered + * @private + */ + ToggleButtonRenderer.renderButtonAttributes = function(oRm, oToggleButton) { + if (oToggleButton.getPressed()) { + oRm.addClass("sapMToggleBtnPressed"); + } + }; + + return ToggleButtonRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ToggleButtonRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/ToggleButtonRenderer.js new file mode 100644 index 0000000..5bb8aae --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ToggleButtonRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./ButtonRenderer','sap/ui/core/Renderer'],function(q,B,R){"use strict";var T=R.extend(B);T.renderAccessibilityAttributes=function(r,t,a){a["pressed"]=t.getPressed();};T.renderButtonAttributes=function(r,t){if(t.getPressed()){r.addClass("sapMToggleBtnPressed");}};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Token-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/Token-dbg.js new file mode 100644 index 0000000..8f2d664 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Token-dbg.js @@ -0,0 +1,315 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.Token. +sap.ui.define(['jquery.sap.global', './library', 'sap/ui/core/Control'], + function(jQuery, library, Control) { + "use strict"; + + + + /** + * Constructor for a new Token. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * renders a token containing text and an optional delete icon + * @extends sap.ui.core.Control + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.m.Token + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var Token = Control.extend("sap.m.Token", /** @lends sap.m.Token.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * current selection status of token + */ + selected : {type : "boolean", group : "Misc", defaultValue : false}, + + /** + * token's identifier key + */ + key : {type : "string", group : "Misc", defaultValue : ""}, + + /** + * token's display text + */ + text : {type : "string", group : "Misc", defaultValue : ""}, + + /** + * if true, token displays delete icon and fires events accordingly + */ + editable : {type : "boolean", group : "Misc", defaultValue : true}, + + /** + * This property specifies the text directionality with enumerated options. By default, the control inherits text direction from the DOM. + * @since 1.28.0 + */ + textDirection : {type : "sap.ui.core.TextDirection", group : "Appearance", defaultValue : sap.ui.core.TextDirection.Inherit} + }, + aggregations : { + + /** + * The delete icon. + */ + deleteIcon : {type : "sap.ui.core.Icon", multiple : false, visibility : "hidden"} + }, + events : { + + /** + * Fired if the user click the token's delete button. + */ + "delete" : {}, + + /** + * Event is fired when the user clicks on the control. + */ + press : {}, + + /** + * Event is fired when the user selects a token (could be a keyboard navigation, could be a press) + */ + select : {} + } + }}); + + ///** + // * This file defines behavior for the control, + // */ + Token.prototype.init = function() { + this._deleteIcon = new sap.ui.core.Icon({ + src : "sap-icon://sys-cancel" + }); + + this._deleteIcon.addStyleClass("sapMTokenIcon"); + this.setAggregation("deleteIcon", this._deleteIcon); + }; + + Token.prototype.setEditable = function(bEditable){ + this.setProperty("editable", bEditable); + if (bEditable) { + this.removeStyleClass("sapMTokenReadOnly"); + } else { + this.addStyleClass("sapMTokenReadOnly"); + } + }; + + /** + * Event handler called when control is touched, registers left mouse down + * + * @param {jQuery.Event} + * oEvent + * @private + */ + Token.prototype.ontouchstart = function(oEvent) { + this.$().toggleClass("sapMTokenActive", true); + if (sap.ui.Device.system.desktop && oEvent.originalEvent.button !== 0) { + return; // only on left mouse button + } + + this._oSrcStartId = oEvent.target.id; + + if (this._oSrcStartId === this._deleteIcon.getId()) { + oEvent.preventDefault(); + } + }; + + Token.prototype.setSelected = function(bSelected, bMultiSelect) { + + if (bSelected && !bMultiSelect) { + this.focus(); + } + + var $this = this.$(); + + if ($this) { + if (bSelected) { + $this.addClass("sapMTokenSelected"); + } else { + $this.removeClass("sapMTokenSelected"); + } + } else { + if (bSelected) { + this.addStyleClass("sapMTokenSelected"); + } else { + this.removeStyleClass("sapMTokenSelected"); + } + + } + + this.setProperty("selected", bSelected, true); + + if (bSelected) { + this.fireSelect(); + } + + }; + + /** + * Function is called when token is pressed to select/deselect token. + * @private + * @param {jQuery.Event} + * oEvent + */ + Token.prototype._onTokenPress = function() { + var bSelected = this.getSelected(); + this.setSelected(!bSelected); + + if (!bSelected) { + this.fireSelect({}); + } + + }; + + + /** + * Event handler called when control is on tap + * + * @param {jQuery.Event} + * oEvent + * @private + */ + Token.prototype.ontap = function(oEvent) { + this._onTokenPress(); + }; + + /** + * Event handler called when control touch ends, triggers possible click events / selects token + * + * @param {jQuery.Event} + * oEvent + * @private + */ + Token.prototype.ontouchend = function(oEvent) { + this.$().toggleClass("sapMTokenActive", false); + var oSrc = oEvent.target; + if (this._oSrcStartId !== oSrc.id) { + delete this._oSrcStartId; + return; + } + + // we only allow deletion on touch devices when the Token is selected - this is to avoid accidental deletion when + // swiping + var bTouch = sap.m.MultiInput.prototype._bDoTouchScroll; + var bTouchDeleteAllow = false; + if (bTouch && this.getSelected()) { + bTouchDeleteAllow = true; + } + + if (oSrc.id === this._deleteIcon.getId()) { + if (bTouchDeleteAllow || !bTouch) { + this.fireDelete({ + token : this + }); + } else { + // in this case we at least make sure the element gets selected + this.firePress({ + token : this + }); + } + oEvent.preventDefault(); + + } else { + this.firePress({ + token : this + }); + oEvent.preventDefault(); + } + + delete this._oSrcStartId; + + }; + + /** + * Event handler called when control is loosing the focus, removes selection from token + * + * @param {jQuery.Event} + * oEvent + * @private + */ + Token.prototype.onsapfocusleave = function(oEvent) { + this.setSelected(false); + }; + + /** + * Function is called on keyboard backspace, deletes token + * + * @private + * @param {jQuery.event} + * oEvent + */ + Token.prototype.onsapbackspace = function(oEvent) { + oEvent.preventDefault(); + oEvent.stopPropagation(); + if (this.getSelected() && this.getEditable()) { + this.fireDelete({ + token : this + }); + + } + }; + + /** + * Function is called on keyboard delete, deletes token + * + * @private + * @param {jQuery.event} + * oEvent + */ + Token.prototype.onsapdelete = function(oEvent) { + if (this.getEditable()) { + this.fireDelete({ + token : this + }); + } + oEvent.preventDefault(); + }; + + /** + * Function is called on keyboard space, select/deselect token + * @private + * @param {jQuery.event} + * oEvent + */ + Token.prototype.onsapspace = function(oEvent) { + + this._onTokenPress(); + // stop browsers default behavior + if (oEvent) { + oEvent.preventDefault(); + oEvent.stopPropagation(); + } + }; + + /** + * Handle the key down event for Ctrl+ space + * + * @param {jQuery.Event} + * oEvent - the occuring event + * @private + */ + Token.prototype.onkeydown = function(oEvent) { + + if ((oEvent.ctrlKey || oEvent.metaKey) && oEvent.which === jQuery.sap.KeyCodes.SPACE) { + //metaKey for MAC command + this.onsapspace(oEvent); + oEvent.preventDefault(); + } + }; + + return Token; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Token.js b/DVHMA-OpenUI5/www/resources/sap/m/Token.js new file mode 100644 index 0000000..4904a6f --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Token.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./library','sap/ui/core/Control'],function(q,l,C){"use strict";var T=C.extend("sap.m.Token",{metadata:{library:"sap.m",properties:{selected:{type:"boolean",group:"Misc",defaultValue:false},key:{type:"string",group:"Misc",defaultValue:""},text:{type:"string",group:"Misc",defaultValue:""},editable:{type:"boolean",group:"Misc",defaultValue:true},textDirection:{type:"sap.ui.core.TextDirection",group:"Appearance",defaultValue:sap.ui.core.TextDirection.Inherit}},aggregations:{deleteIcon:{type:"sap.ui.core.Icon",multiple:false,visibility:"hidden"}},events:{"delete":{},press:{},select:{}}}});T.prototype.init=function(){this._deleteIcon=new sap.ui.core.Icon({src:"sap-icon://sys-cancel"});this._deleteIcon.addStyleClass("sapMTokenIcon");this.setAggregation("deleteIcon",this._deleteIcon);};T.prototype.setEditable=function(e){this.setProperty("editable",e);if(e){this.removeStyleClass("sapMTokenReadOnly");}else{this.addStyleClass("sapMTokenReadOnly");}};T.prototype.ontouchstart=function(e){this.$().toggleClass("sapMTokenActive",true);if(sap.ui.Device.system.desktop&&e.originalEvent.button!==0){return;}this._oSrcStartId=e.target.id;if(this._oSrcStartId===this._deleteIcon.getId()){e.preventDefault();}};T.prototype.setSelected=function(s,m){if(s&&!m){this.focus();}var $=this.$();if($){if(s){$.addClass("sapMTokenSelected");}else{$.removeClass("sapMTokenSelected");}}else{if(s){this.addStyleClass("sapMTokenSelected");}else{this.removeStyleClass("sapMTokenSelected");}}this.setProperty("selected",s,true);if(s){this.fireSelect();}};T.prototype._onTokenPress=function(){var s=this.getSelected();this.setSelected(!s);if(!s){this.fireSelect({});}};T.prototype.ontap=function(e){this._onTokenPress();};T.prototype.ontouchend=function(e){this.$().toggleClass("sapMTokenActive",false);var s=e.target;if(this._oSrcStartId!==s.id){delete this._oSrcStartId;return;}var t=sap.m.MultiInput.prototype._bDoTouchScroll;var b=false;if(t&&this.getSelected()){b=true;}if(s.id===this._deleteIcon.getId()){if(b||!t){this.fireDelete({token:this});}else{this.firePress({token:this});}e.preventDefault();}else{this.firePress({token:this});e.preventDefault();}delete this._oSrcStartId;};T.prototype.onsapfocusleave=function(e){this.setSelected(false);};T.prototype.onsapbackspace=function(e){e.preventDefault();e.stopPropagation();if(this.getSelected()&&this.getEditable()){this.fireDelete({token:this});}};T.prototype.onsapdelete=function(e){if(this.getEditable()){this.fireDelete({token:this});}e.preventDefault();};T.prototype.onsapspace=function(e){this._onTokenPress();if(e){e.preventDefault();e.stopPropagation();}};T.prototype.onkeydown=function(e){if((e.ctrlKey||e.metaKey)&&e.which===q.sap.KeyCodes.SPACE){this.onsapspace(e);e.preventDefault();}};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TokenRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/TokenRenderer-dbg.js new file mode 100644 index 0000000..8b0d37f --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TokenRenderer-dbg.js @@ -0,0 +1,77 @@ +/*! + +* SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + +*/ +sap.ui.define(['jquery.sap.global'], + function(jQuery) { + "use strict"; + + + /** + * Token renderer. + * @namespace + */ + var TokenRenderer = { + }; + + + /** + * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}. + * + * @param {sap.ui.core.RenderManager} oRm the RenderManager that can be used for writing to the render output buffer + * @param {sap.ui.core.Control} oControl an object representation of the control that should be rendered + */ + TokenRenderer.render = function(oRm, oControl){ + // write the HTML into the render manager + oRm.write("
    "); + + TokenRenderer._renderInnerControl(oRm, oControl); + + if (oControl.getEditable()) { + oRm.renderControl(oControl._deleteIcon); + } + + oRm.write("
    "); + }; + + /** + * Renders the inner HTML for the given control, using the provided {@link sap.ui.core.RenderManager}. + * + * @param {sap.ui.core.RenderManager} oRm the RenderManager that can be used for writing to the render output buffer + * @param {sap.ui.core.Control} oControl an object representation of the control that should be rendered + */ + TokenRenderer._renderInnerControl = function(oRm, oControl){ + var sTextDir = oControl.getTextDirection(); + + oRm.write(""); + + var title = oControl.getText(); + if (title) { + oRm.writeEscaped(title); + } + oRm.write(""); + }; + + + return TokenRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TokenRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/TokenRenderer.js new file mode 100644 index 0000000..691a451 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TokenRenderer.js @@ -0,0 +1,8 @@ +/*! + +* SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + +*/ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var T={};T.render=function(r,c){r.write("
    ");T._renderInnerControl(r,c);if(c.getEditable()){r.renderControl(c._deleteIcon);}r.write("
    ");};T._renderInnerControl=function(r,c){var t=c.getTextDirection();r.write("");var a=c.getText();if(a){r.writeEscaped(a);}r.write("");};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Tokenizer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/Tokenizer-dbg.js new file mode 100644 index 0000000..4fc05e7 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Tokenizer-dbg.js @@ -0,0 +1,973 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.Tokenizer. +sap.ui.define(['jquery.sap.global', './library', 'sap/ui/core/Control', 'sap/ui/core/delegate/ScrollEnablement'], + function(jQuery, library, Control, ScrollEnablement) { + "use strict"; + + + + /** + * Constructor for a new Tokenizer. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * Tokenizer displays multiple tokens + * @extends sap.ui.core.Control + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.m.Tokenizer + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var Tokenizer = Control.extend("sap.m.Tokenizer", /** @lends sap.m.Tokenizer.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * true if tokens shall be editable otherwise false + */ + editable : {type : "boolean", group : "Misc", defaultValue : true}, + + /** + * Defines the width of the Tokenizer. + */ + width : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : null} + }, + defaultAggregation : "tokens", + aggregations : { + + /** + * the currently displayed tokens + */ + tokens : {type : "sap.m.Token", multiple : true, singularName : "token"} + }, + events : { + + /** + * fired when the tokens aggregation changed (add / remove token) + */ + tokenChange : { + parameters : { + + /** + * type of tokenChange event. + * There are four TokenChange types: "added", "removed", "removedAll", "tokensChanged". + * Use Tokenizer.TokenChangeType.Added for "added", Tokenizer.TokenChangeType.Removed for "removed", Tokenizer.TokenChangeType.RemovedAll for "removedAll" and Tokenizer.TokenChangeType.TokensChanged for "tokensChanged". + */ + type: { type : "string"}, + + /** + * the added token or removed token. + * This parameter is used when tokenChange type is "added" or "removed". + */ + token: { type: "sap.m.Token"}, + + /** + * the array of removed tokens. + * This parameter is used when tokenChange type is "removedAll". + */ + tokens: { type: "sap.m.Token[]"}, + + /** + * the array of tokens that are added. + * This parameter is used when tokenChange type is "tokenChanged". + */ + addedTokens : { type: "sap.m.Token[]"}, + + /** + * the array of tokens that are removed. + * This parameter is used when tokenChange type is "tokenChanged". + */ + removedTokens : { type: "sap.m.Token[]"} + } + } + } + }}); + + ///** + // * This file defines behavior for the control, + // */ + + Tokenizer.prototype.init = function() { + //if bScrollToEndIsActive === true, than tokenizer will keep last token visible + this._bScrollToEndIsActive = false; + + this._aTokenValidators = []; + + this._oScroller = new ScrollEnablement(this, this.getId() + "-scrollContainer", { + horizontal : true, + vertical : false, + nonTouchScrolling : true + }); + }; + + /** + * Function returns the internally used scroll delegate + * + * @public + * @returns {sap.ui.core.delegate.ScrollEnablement} + */ + Tokenizer.prototype.getScrollDelegate = function() { + return this._oScroller; + }; + + /** + * Function scrolls the tokens to the end + * + * @public + * @param {boolean} + * bInitialize indicates if we should reset the 'scroll-to-end-pending' flag; if true we would reset this flag + */ + Tokenizer.prototype.scrollToEnd = function() { + + if (!this._bScrollToEndIsActive) { + this._bScrollToEndIsActive = true; + + var that = this; + var domRef = this.getDomRef(); + if (domRef) { + this._sResizeHandlerId = sap.ui.core.ResizeHandler.register(domRef, function() { + that._doScrollToEnd(); + }); + } + } + + this._doScrollToEnd(); + }; + + + Tokenizer.prototype.setWidth = function(sWidth) { + this.setProperty("width", sWidth, true); + this.$().css("width", this.getWidth()); + return this; + }; + + /** + * Function sets the tokenizer's width in pixels + * + * @public + * @param {number} + * nWidth - the new width in pixels + */ + Tokenizer.prototype.setPixelWidth = function(nWidth){ + + this._truncateLastToken(nWidth); + + var sWidth = (nWidth / parseFloat(sap.m.BaseFontSize)) + "rem"; + this.$().css("width", sWidth); + + if (this._oScroller) { + this._oScroller.refresh(); + } + + }; + + /** + * Function if the last token is wider than the given tokenizer width, the token gets truncated + * + * @private + * @param {number} + * nWidth - the new width in pixels + */ + Tokenizer.prototype._truncateLastToken = function(nWidth){ + var lastToken = this._removeLastTokensTruncation(); + if (lastToken === null) { + return; + } + + var that = this; + var $LastToken = lastToken.$(); + + // when token selected we no longer truncate; thereby the delete icon is visible + var fSelectHandler = null; + fSelectHandler = function() { + lastToken.removeStyleClass("sapMTokenTruncate"); + this.$().removeAttr("style"); + this.detachSelect(fSelectHandler); + that.scrollToEnd(); + }; + + + var widthOfLastToken = $LastToken.width(); + if (!lastToken.getSelected() && nWidth < widthOfLastToken) { + // truncate last token if not selected and not completely visible + $LastToken.outerWidth(nWidth, true); + lastToken.addStyleClass("sapMTokenTruncate"); + lastToken.attachSelect(fSelectHandler); + } else { + // last token is completely visible + lastToken.detachSelect(fSelectHandler); + } + + this.scrollToEnd(); + }; + + /** + * Function scrolls the tokens to the end by setting the scrollWidth to the scroll dom container + * + * @private + */ + Tokenizer.prototype._doScrollToEnd = function(){ + var thisDomRef = this.getDomRef(); + if (!thisDomRef) { + return; + } + + var $this = this.$(); + var scrollDiv = $this.find(".sapMTokenizerScrollContainer")[0]; + $this[0].scrollLeft = scrollDiv.scrollWidth; + }; + + /** + * Function scrolls the tokens to the start + * + * @public + * + */ + Tokenizer.prototype.scrollToStart = function() { + this._deactivateScrollToEnd(); + + var thisDomRef = this.getDomRef(); + + if (!thisDomRef) { + return; + } + + var jMultiInput = jQuery(thisDomRef); + jMultiInput[0].scrollLeft = 0; + }; + + Tokenizer.prototype._deactivateScrollToEnd = function(){ + this._deregisterResizeHandler(); + this._bScrollToEndIsActive = false; + }; + + /** + * Function removes the truncation from the last token, by clearing the style attribute + * + * @private + * + * @returns + * (sap.m.Token) - the last token + */ + Tokenizer.prototype._removeLastTokensTruncation = function(){ + var aTokens = this.getTokens(); + var oLastToken = null; + if (aTokens.length > 0) { + oLastToken = aTokens[aTokens.length - 1]; + var $LastToken = oLastToken.$(); + if ($LastToken.length > 0) { + $LastToken[0].style.cssText = ""; + } + } + + return oLastToken; + }; + + /** + * Function returns the tokens' width + * + * @public + * + * @returns + * the complete tokens' width + */ + Tokenizer.prototype.getScrollWidth = function(){ + //if the last token is truncated, the scrollWidth will be incorrect + this._removeLastTokensTruncation(); + + return this.$().children(".sapMTokenizerScrollContainer")[0].scrollWidth; + }; + + Tokenizer.prototype.onBeforeRendering = function() { + this._deregisterResizeHandler(); + }; + + /** + * Called after the control is rendered. + * + * @private + */ + Tokenizer.prototype.onAfterRendering = function() { + + if (Control.prototype.onAfterRendering) { + Control.prototype.onAfterRendering.apply(this, arguments); + } + + if (this._bScrollToEndIsActive) { + var that = this; + this._sResizeHandlerId = sap.ui.core.ResizeHandler.register(this.getDomRef(), function() { + that._doScrollToEnd(); + }); + } + }; + + /** + * Handle the focus leave event, deselects token + * + * @param {jQuery.Event} + * oEvent - the occuring event + * @private + */ + Tokenizer.prototype.onsapfocusleave = function(oEvent) { + var oRelatedControl = sap.ui.getCore().byId(oEvent.relatedControlId); + + //when focus goes to token, keep the select status, otherwise deselect all tokens + if (!oRelatedControl || oRelatedControl.getParent() !== this){ + this.selectAllTokens(false); + } + }; + + /** + * Handle the tab key event, deselects token + * + * @param {jQuery.Event} + * oEvent - the occuring event + * @private + */ + Tokenizer.prototype.saptabnext = function(oEvent) { + this.selectAllTokens(false); + }; + + /** + * check if all tokens in the tokenizer are selected. + * + * @private + */ + Tokenizer.prototype.isAllTokenSelected = function() { + if (this.getTokens().length === this.getSelectedTokens().length) { + + return true; + } + return false; + + }; + + /** + * Handle the key down event for Ctrl+ a + * + * @param {jQuery.Event} + * oEvent - the occuring event + * @private + */ + Tokenizer.prototype.onkeydown = function(oEvent) { + + if (oEvent.which === jQuery.sap.KeyCodes.TAB) { + this.selectAllTokens(false); + } + + if ((oEvent.ctrlKey || oEvent.metaKey) && oEvent.which === jQuery.sap.KeyCodes.A) { //metaKey for MAC command + + //to check how many tokens are selected before Ctrl + A in MultiInput + this._iSelectedToken = this.getSelectedTokens().length; + + if (!this.isAllTokenSelected()) { + this.focus(); + this.selectAllTokens(true); + oEvent.preventDefault(); + } + + } + + }; + + /** + * Function is called on keyboard backspace, deletes selected tokens + * + * @private + * @param {jQuery.event} + * oEvent + */ + + Tokenizer.prototype.onsapbackspace = function(oEvent) { + if (this.getSelectedTokens().length === 0) { + this.onsapprevious(oEvent); + } else if (this.getEditable()) { + this.removeSelectedTokens(); + } + + oEvent.preventDefault(); + oEvent.stopPropagation(); + }; + + /** + * Function is called on keyboard delete, deletes token + * + * @private + * @param {jQuery.event} + * oEvent + */ + + Tokenizer.prototype.onsapdelete = function(oEvent) { + if (this.getEditable()) { + this.removeSelectedTokens(); + } + }; + + /** + * Called when the user presses the right arrow key, selects next token + * @param {jQuery.Event} oEvent The event triggered by the user + * @private + */ + Tokenizer.prototype.onsapnext = function(oEvent) { + if (oEvent.which === jQuery.sap.KeyCodes.ARROW_DOWN) { + return; + } + + var iLength = this.getTokens().length; + + if (iLength === 0) { + return; + } + + this.selectAllTokens(false); + + var oFocusedElement = jQuery(document.activeElement).control()[0]; + if (oFocusedElement === this) { + // focus is on tokenizer itself - we do not handle this event and let it bubble + return; + } + + // oFocusedElement could be undefined since the focus element might not correspond to a SAPUI5 Control + var index = oFocusedElement ? this.getTokens().indexOf(oFocusedElement) : -1; + + if (index < iLength - 1) { + var oNextToken = this.getTokens()[index + 1]; + oNextToken.setSelected(true); + this._ensureTokenVisible(oNextToken); + + oEvent.preventDefault(); + } else if (index === iLength - 1) { + // focus is on last token - we do not handle this event and let it bubble + this.scrollToEnd(); + return; + } + + this._deactivateScrollToEnd(); + + oEvent.setMarked(); + + }; + + /** + * Adjusts the scrollLeft so that the given token is visible from its left side + * @param {sap.m.Token} oToken The token that will be fully visible + * @private + */ + Tokenizer.prototype._ensureTokenVisible = function(oToken) { + var iTokenizerLeftOffset = this.$().offset().left, + iTokenLeftOffset = oToken.$().offset().left; + + if (iTokenLeftOffset < iTokenizerLeftOffset) { + this.$().scrollLeft(this.$().scrollLeft() - iTokenizerLeftOffset + iTokenLeftOffset); + } + }; + + /** + * Called when the user presses the left arrow key, selects previous token + * @param {jQuery.Event} oEvent The event triggered by the user + * @private + */ + Tokenizer.prototype.onsapprevious = function(oEvent) { + if (oEvent.which === jQuery.sap.KeyCodes.ARROW_UP) { + return; + } + + if (this.getSelectedTokens().length === this.getTokens().length) { + // select all situation + return; + } + + if (this.getTokens().length === 0) { + return; + } + + var oFocusedElement = sap.ui.getCore().byId(jQuery(document.activeElement).attr("id")); + + // oFocusedElement could be undefined since the focus element might not correspond to a SAPUI5 Control + var index = oFocusedElement ? this.getTokens().indexOf(oFocusedElement) : -1; + + if (index > 0) { + var oPrevToken = this.getTokens()[index - 1]; + oPrevToken.setSelected(true); + this._ensureTokenVisible(oPrevToken); + } else if (index === -1) { + this.getTokens()[this.getTokens().length - 1].setSelected(true); + } + + this._deactivateScrollToEnd(); + + }; + + /** + * Function adds an validation callback called before any new token gets added to the tokens aggregation + * + * @public + * @param {function} + * fValidator + */ + Tokenizer.prototype.addValidator = function(fValidator) { + if (typeof (fValidator) === "function") { + this._aTokenValidators.push(fValidator); + } + }; + + /** + * Function removes an validation callback + * + * @public + * @param {function} + * fValidator + */ + Tokenizer.prototype.removeValidator = function(fValidator) { + var i = this._aTokenValidators.indexOf(fValidator); + if (i !== -1) { + this._aTokenValidators.splice(i, 1); + } + }; + + /** + * Function removes all validation callbacks + * + * @public + */ + Tokenizer.prototype.removeAllValidators = function() { + this._aTokenValidators = []; + }; + + /** + * Function validates a given token using the set validators + * + * @private + * @param {object} + * oParameters - parameter bag containing fields for text, token, suggestionObject and validation callback + * @param {function[]} + * [optional] aValidator - all validators to be used + * @returns {sap.m.Token} - a valid token or null + */ + Tokenizer.prototype._validateToken = function(oParameters, aValidators) { + var sText = oParameters.text; + var oToken = oParameters.token; + var fValidateCallback = oParameters.validationCallback; + var oSuggestionObject = oParameters.suggestionObject; + + var i, validator, length; + + if (!aValidators) { + aValidators = this._aTokenValidators; + } + + length = aValidators.length; + if (length === 0) { // no custom validators, just return given token + if (!oToken && fValidateCallback) { + fValidateCallback(false); + } + return oToken; + } + + for (i = 0; i < length; i++) { + validator = aValidators[i]; + + oToken = validator({ + text : sText, + suggestedToken : oToken, + suggestionObject : oSuggestionObject, + asyncCallback : this._getAsyncValidationCallback(aValidators, i, sText, oSuggestionObject, fValidateCallback) + }); + + if (!oToken) { + if (fValidateCallback) { + fValidateCallback(false); + } + return null; + } + + if (oToken === Tokenizer.WaitForAsyncValidation) { + return null; + } + } + + return oToken; + }; + + /** + * Function returns a callback function which is used for executing validators after an asynchronous validator was triggered + * @param {array} aValidators + * the validators + * @param {integer} iValidatorIndex + * current validator index + * @param {string} sInitialText + * initial text used for validation + * @param {object} oSuggestionObject + * a pre-validated token or suggestion item + * @param {function} fValidateCallback + * callback after validation has finished + * @private + */ + Tokenizer.prototype._getAsyncValidationCallback = function(aValidators, iValidatorIndex, sInitialText, + oSuggestionObject, fValidateCallback) { + var that = this; + return function(oToken) { + if (oToken) { // continue validating + aValidators = aValidators.slice(iValidatorIndex + 1); + oToken = that._validateToken({ + text : sInitialText, + token : oToken, + suggestionObject : oSuggestionObject, + validationCallback : fValidateCallback + }, aValidators); + that._addUniqueToken(oToken, fValidateCallback); + } else { + if (fValidateCallback) { + fValidateCallback(false); + } + } + }; + }; + + /** + * Function validates the given text and adds a new token if validation was successful + * + * @public + * @param {object} + * oParameters - parameter bag containing following fields: {sap.m.String} text - the source text {sap.m.Token} + * [optional] token - a suggested token {object} [optional] suggestionObject - any object used to find the + * suggested token {function} [optional] validationCallback - callback which gets called after validation has + * finished + */ + Tokenizer.prototype.addValidateToken = function(oParameters) { + var oToken = this._validateToken(oParameters); + this._addUniqueToken(oToken, oParameters.validationCallback); + }; + /** + * Function adds token if it does not already exist + * + * @private + * @param {sap.m.Token} + * token + * @param {function} + * [optional] fValidateCallback + */ + Tokenizer.prototype._addUniqueToken = function(oToken, fValidateCallback) { + if (!oToken) { + return; + } + + var tokenExists = this._tokenExists(oToken); + if (tokenExists) { + return; + } + + this.addToken(oToken); + + if (fValidateCallback) { + fValidateCallback(true); + } + + this.fireTokenChange({ + addedTokens : [oToken], + removedTokens : [], + type : Tokenizer.TokenChangeType.TokensChanged + }); + }; + + /** + * Function checks if a given token already exists in the tokens aggregation based on their keys + * + * @private + * @param {sap.m.Token} + * Token + * @return {boolean} true if it exists, otherwise false + */ + Tokenizer.prototype._tokenExists = function(oToken) { + var tokens = this.getTokens(); + + if (!(tokens && tokens.length)) { + return false; + } + + var key = oToken.getKey(); + if (!key) { + return false; + } + + var length = tokens.length; + for (var i = 0; i < length; i++) { + var currentToken = tokens[i]; + var currentKey = currentToken.getKey(); + + if (currentKey === key) { + return true; + } + } + + return false; + }; + + Tokenizer.prototype.addToken = function(oToken, bSuppressInvalidate) { + this.addAggregation("tokens", oToken, bSuppressInvalidate); + oToken.attachDelete(this._onDeleteToken, this); + oToken.attachPress(this._onTokenPress, this); + + oToken.setEditable = function (bEnabled) { + //ReadOnly css is handled by Token, using overwrite for further developing + //in case the token in tokenizer has different design for editable property + sap.m.Token.prototype.setEditable.apply(oToken, arguments); + }; + + this.scrollToEnd(); + + this.fireTokenChange({ + token : oToken, + type : Tokenizer.TokenChangeType.Added + }); + }; + + Tokenizer.prototype.removeToken = function(oToken) { + oToken = this.removeAggregation("tokens", oToken); + if (oToken) { + oToken.detachDelete(this._onDeleteToken, this); + oToken.detachPress(this._onTokenPress, this); + } + + this.scrollToEnd(); + + this.fireTokenChange({ + token : oToken, + type : Tokenizer.TokenChangeType.Removed + }); + + return oToken; + }; + + Tokenizer.prototype.setTokens = function(aTokens) { + var oldTokens = this.getTokens(); + this.removeAllTokens(false); + + var i; + for (i = 0; i < aTokens.length; i++) { + this.addToken(aTokens[i], true); + } + + this.invalidate(); + this.rerender(); + + this.scrollToEnd(); + + this.fireTokenChange({ + addedTokens : aTokens, + removedTokens : oldTokens, + type : Tokenizer.TokenChangeType.TokensChanged + }); + }; + + Tokenizer.prototype.removeAllTokens = function(bFireEvent) { + var i, length, token, tokens; + tokens = this.getTokens(); + length = tokens.length; + for (i = 0; i < length; i++) { + token = tokens[i]; + token.detachDelete(this._onDeleteToken, this); + token.detachPress(this._onTokenPress, this); + } + + this.removeAllAggregation("tokens"); + + if (typeof (bFireEvent) === "boolean" && !bFireEvent) { + return; + } + + this.fireTokenChange({ + addedTokens : [], + removedTokens : tokens, + type : Tokenizer.TokenChangeType.TokensChanged + }); + + this.fireTokenChange({ + tokens : tokens, + type : Tokenizer.TokenChangeType.RemovedAll + }); + }; + + /** + * Function removes all selected tokens + * + * @public + * @returns {sap.m.Tokenizer} - this for chaining + */ + Tokenizer.prototype.removeSelectedTokens = function() { + var tokensToBeDeleted = this.getSelectedTokens(); + var token, i, length; + length = tokensToBeDeleted.length; + if (length === 0) { + return this; + } + + for (i = 0; i < length; i++) { + token = tokensToBeDeleted[i]; + this.removeToken(token); + } + + this.scrollToEnd(); + + this.fireTokenChange({ + addedTokens : [], + removedTokens : tokensToBeDeleted, + type : Tokenizer.TokenChangeType.TokensChanged + }); + + return this; + }; + + /** + * Function selects all tokens + * + * @public + * @param {boolean} + * [optional] bSelect - true for selecting, false for deselecting + * @returns {sap.m.Tokenizer} - this for chaining + */ + Tokenizer.prototype.selectAllTokens = function(bSelect) { + if (bSelect === undefined) { + bSelect = true; + } + + var tokens = this.getTokens(); + var token, i, length; + length = tokens.length; + for (i = 0; i < length; i++) { + token = tokens[i]; + token.setSelected(bSelect, true); + } + + return this; + }; + + /** + * Function returns all currently selected tokens + * + * @public + * @returns {sap.m.Token[]} - array of selected tokens or empty array + */ + Tokenizer.prototype.getSelectedTokens = function() { + var aSelectedTokens = []; + var i, length, token, tokens; + tokens = this.getTokens(); + length = tokens.length; + for (i = 0; i < length; i++) { + token = tokens[i]; + if (token.getSelected()) { + aSelectedTokens.push(token); + } + } + return aSelectedTokens; + }; + + /** + * Function is called when token's delete icon was pressed function removes token from Tokenizer's aggregation + * + * @private + * @param oEvent + */ + Tokenizer.prototype._onDeleteToken = function(oEvent) { + var token = oEvent.getParameter("token"); + if (token) { + this.removeToken(token); + this.fireTokenChange({ + addedTokens : [], + removedTokens : [token], + type : Tokenizer.TokenChangeType.TokensChanged + }); + } + + }; + + /** + * Function is called when token is pressed, toggles the token's selection state depending on ctrl key state, deselectes + * other tokens. Currently handled by sap.m.Token#ontap + * + * @private + * @param {jQuery.Event} + * oEvent + */ + Tokenizer.prototype._onTokenPress = function(oEvent) {}; + + Tokenizer.prototype.setEditable = function(bEditable) { + this.setProperty("editable", bEditable); + + var tokens = this.getTokens(); + var length = tokens.length; + for (var i = 0; i < length; i++) { + var currentToken = tokens[i]; + currentToken.setEditable(bEditable); + } + + return this; + + }; + + /** + * Handle the home button, scrolls to the first token + * + * @param {jQuery.Event} + * oEvent - the occuring event + * @private + */ + Tokenizer.prototype.onsaphome = function(oEvent) { + this.scrollToStart(); + }; + + /** + * Handle the end button, scrolls to the last token + * + * @param {jQuery.Event} + * oEvent - the occuring event + * @private + */ + Tokenizer.prototype.onsapend = function(oEvent) { + this.scrollToEnd(); + }; + + /** + * Function cleans up registered eventhandlers + * + * @private + */ + Tokenizer.prototype.exit = function() { + this._deregisterResizeHandler(); + }; + + /** + * Function deregisters eventhandlers + * + * @private + */ + Tokenizer.prototype._deregisterResizeHandler = function(){ + if (this._sResizeHandlerId) { + sap.ui.core.ResizeHandler.deregister(this._sResizeHandlerId); + delete this._sResizeHandlerId; + } + }; + + Tokenizer.TokenChangeType = { + Added : "added", + Removed : "removed", + RemovedAll : "removedAll", + TokensChanged : "tokensChanged" + }; + + Tokenizer.WaitForAsyncValidation = "sap.m.Tokenizer.WaitForAsyncValidation"; + + + return Tokenizer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Tokenizer.js b/DVHMA-OpenUI5/www/resources/sap/m/Tokenizer.js new file mode 100644 index 0000000..2a53c88 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Tokenizer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./library','sap/ui/core/Control','sap/ui/core/delegate/ScrollEnablement'],function(q,l,C,S){"use strict";var T=C.extend("sap.m.Tokenizer",{metadata:{library:"sap.m",properties:{editable:{type:"boolean",group:"Misc",defaultValue:true},width:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:null}},defaultAggregation:"tokens",aggregations:{tokens:{type:"sap.m.Token",multiple:true,singularName:"token"}},events:{tokenChange:{parameters:{type:{type:"string"},token:{type:"sap.m.Token"},tokens:{type:"sap.m.Token[]"},addedTokens:{type:"sap.m.Token[]"},removedTokens:{type:"sap.m.Token[]"}}}}}});T.prototype.init=function(){this._bScrollToEndIsActive=false;this._aTokenValidators=[];this._oScroller=new S(this,this.getId()+"-scrollContainer",{horizontal:true,vertical:false,nonTouchScrolling:true});};T.prototype.getScrollDelegate=function(){return this._oScroller;};T.prototype.scrollToEnd=function(){if(!this._bScrollToEndIsActive){this._bScrollToEndIsActive=true;var t=this;var d=this.getDomRef();if(d){this._sResizeHandlerId=sap.ui.core.ResizeHandler.register(d,function(){t._doScrollToEnd();});}}this._doScrollToEnd();};T.prototype.setWidth=function(w){this.setProperty("width",w,true);this.$().css("width",this.getWidth());return this;};T.prototype.setPixelWidth=function(n){this._truncateLastToken(n);var w=(n/parseFloat(sap.m.BaseFontSize))+"rem";this.$().css("width",w);if(this._oScroller){this._oScroller.refresh();}};T.prototype._truncateLastToken=function(n){var a=this._removeLastTokensTruncation();if(a===null){return;}var t=this;var L=a.$();var s=null;s=function(){a.removeStyleClass("sapMTokenTruncate");this.$().removeAttr("style");this.detachSelect(s);t.scrollToEnd();};var w=L.width();if(!a.getSelected()&&n0){L=t[t.length-1];var $=L.$();if($.length>0){$[0].style.cssText="";}}return L;};T.prototype.getScrollWidth=function(){this._removeLastTokensTruncation();return this.$().children(".sapMTokenizerScrollContainer")[0].scrollWidth;};T.prototype.onBeforeRendering=function(){this._deregisterResizeHandler();};T.prototype.onAfterRendering=function(){if(C.prototype.onAfterRendering){C.prototype.onAfterRendering.apply(this,arguments);}if(this._bScrollToEndIsActive){var t=this;this._sResizeHandlerId=sap.ui.core.ResizeHandler.register(this.getDomRef(),function(){t._doScrollToEnd();});}};T.prototype.onsapfocusleave=function(e){var r=sap.ui.getCore().byId(e.relatedControlId);if(!r||r.getParent()!==this){this.selectAllTokens(false);}};T.prototype.saptabnext=function(e){this.selectAllTokens(false);};T.prototype.isAllTokenSelected=function(){if(this.getTokens().length===this.getSelectedTokens().length){return true;}return false;};T.prototype.onkeydown=function(e){if(e.which===q.sap.KeyCodes.TAB){this.selectAllTokens(false);}if((e.ctrlKey||e.metaKey)&&e.which===q.sap.KeyCodes.A){this._iSelectedToken=this.getSelectedTokens().length;if(!this.isAllTokenSelected()){this.focus();this.selectAllTokens(true);e.preventDefault();}}};T.prototype.onsapbackspace=function(e){if(this.getSelectedTokens().length===0){this.onsapprevious(e);}else if(this.getEditable()){this.removeSelectedTokens();}e.preventDefault();e.stopPropagation();};T.prototype.onsapdelete=function(e){if(this.getEditable()){this.removeSelectedTokens();}};T.prototype.onsapnext=function(e){if(e.which===q.sap.KeyCodes.ARROW_DOWN){return;}var L=this.getTokens().length;if(L===0){return;}this.selectAllTokens(false);var f=q(document.activeElement).control()[0];if(f===this){return;}var i=f?this.getTokens().indexOf(f):-1;if(i0){var p=this.getTokens()[i-1];p.setSelected(true);this._ensureTokenVisible(p);}else if(i===-1){this.getTokens()[this.getTokens().length-1].setSelected(true);}this._deactivateScrollToEnd();};T.prototype.addValidator=function(v){if(typeof(v)==="function"){this._aTokenValidators.push(v);}};T.prototype.removeValidator=function(v){var i=this._aTokenValidators.indexOf(v);if(i!==-1){this._aTokenValidators.splice(i,1);}};T.prototype.removeAllValidators=function(){this._aTokenValidators=[];};T.prototype._validateToken=function(p,v){var t=p.text;var o=p.token;var V=p.validationCallback;var s=p.suggestionObject;var i,a,b;if(!v){v=this._aTokenValidators;}b=v.length;if(b===0){if(!o&&V){V(false);}return o;}for(i=0;i"); // div element + + var sClass = "class=\"sapMTokenizerScrollContainer\">"; + var sSpace = " "; + + var sIdScrollContainer = "id=" + oControl.getId() + "-scrollContainer"; + oRm.write(""); + oRm.write("
    "); + }; + + /** + * renders the tokens + * + * @param {sap.ui.core.RenderManager} oRm the RenderManager that can be used for writing to the render output buffer + * @param {sap.ui.core.Control} oControl an object representation of the control that should be rendered + */ + TokenizerRenderer._renderTokens = function(oRm, oControl){ + var i, length, tokens; + tokens = oControl.getTokens(); + length = tokens.length; + for (i = 0; i < length; i++) { + oRm.renderControl(tokens[i]); + } + }; + + return TokenizerRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/TokenizerRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/TokenizerRenderer.js new file mode 100644 index 0000000..9330b40 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/TokenizerRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var T={};T.render=function(r,c){r.write("
    ");var C="class=\"sapMTokenizerScrollContainer\">";var s=" ";var i="id="+c.getId()+"-scrollContainer";r.write("");r.write("
    ");};T._renderTokens=function(r,c){var i,l,t;t=c.getTokens();l=t.length;for(i=0;i $Element[0].clientWidth; + + }; + + /* + * Returns the original width(currently only control's width) via Control ID + * TODO: This function is not smart enough to detect DOM width changes + * But tracking width changes is also expensive + * (last and original width values must be keep in DOM and need update) + * For now we assume app developers call setWidth from the control + * And controls return correct width values even default value applied with CSS + * + * @static + * @protected + * @param {String} sId Control ID + * @return {String} width + */ + Toolbar.getOrigWidth = function(sId) { + var oControl = sap.ui.getCore().byId(sId); + if (!oControl || !oControl.getWidth) { + return ""; + } + + return oControl.getWidth(); + }; + + /* + * Checks given control whether shrinkable or not and marks according to second param + * Percent widths and text nodes(without fixed width) are shrinkable + * Controls that implement IShrinkable interface should shrink + * ToolbarSpacer is already shrinkable if it does not have fixed width + * + * @static + * @protected + * @param {sap.ui.core.Control} oControl UI5 Control + * @param {String} [sShrinkClass] shrink item class name + * @returns {true|false|undefined|Object} + */ + Toolbar.checkShrinkable = function(oControl, sShrinkClass) { + if (oControl instanceof ToolbarSpacer) { + return this.isRelativeWidth(oControl.getWidth()); + } + + // remove old class + sShrinkClass = sShrinkClass || this.shrinkClass; + oControl.removeStyleClass(sShrinkClass); + + // ignore the controls has fixed width + var sWidth = this.getOrigWidth(oControl.getId()); + if (!this.isRelativeWidth(sWidth)) { + return; + } + + // check shrinkable via layout data + var oLayout = oControl.getLayoutData(); + if (oLayout instanceof ToolbarLayoutData) { + return oLayout.getShrinkable() && oControl.addStyleClass(sShrinkClass); + } + + // is percent item? + // does implement shrinkable interface? + if (sWidth.indexOf("%") > 0 || + oControl.getMetadata().isInstanceOf("sap.ui.core.IShrinkable")) { + return oControl.addStyleClass(sShrinkClass); + } + + // is text element? + var oDomRef = oControl.getDomRef(); + if (oDomRef && (oDomRef.firstChild || {}).nodeType == 3) { + return oControl.addStyleClass(sShrinkClass); + } + }; + + /* + * Grow-Shrink flexbox polyfill for Toolbar + * + * @static + * @protected + * @param {jQuery} $Element The container of flex items + * @param {String} [sFlexClass] flexable item class + * @param {String} [sShrinkClass] shrinkable item class + */ + Toolbar.flexie = function($Element, sFlexClass, sShrinkClass) { + + // check element exists and has width to calculate + if (!$Element || !$Element.length || !$Element.width()) { + return; + } + + // set default values + sShrinkClass = sShrinkClass || this.shrinkClass; + sFlexClass = sFlexClass || ToolbarSpacer.flexClass; + + // initial values + var iTotalPercent = 0, + aFlexibleItems = [], + aShrinkableItems = [], + iTotalUnShrinkableWidth = 0, + iInnerWidth = $Element.width(), + $Children = $Element.children(), + bOverflow = this.checkOverflow($Element), + isAutoWidth = function(sWidth) { + return !sWidth || sWidth == "auto" || sWidth == "inherit"; + }, + calcUnShrinkableItem = function($Item) { + // add to unshrinkable width calculation with margins + iTotalUnShrinkableWidth += $Item.outerWidth(true); + }, + pushShrinkableItem = function($Item) { + // if calculated width and the min-width is same then item cannot shrink + var fBoxWidth = parseFloat($Item.css("width")) || 0; + var fMinWidth = parseFloat($Item.css("min-width")) || 0; + if (fBoxWidth == fMinWidth) { + calcUnShrinkableItem($Item); + return; + } + + // calculate related percentage according to inner width + var iBoxSizing = 0; + var fWidth = $Item.width(); + var fPercent = (fWidth * 100) / iInnerWidth; + iTotalPercent += fPercent; + + // margins + paddings + borders are not shrinkable + iTotalUnShrinkableWidth += $Item.outerWidth(true) - fWidth; + if ($Item.css("box-sizing") == "border-box") { + iBoxSizing = $Item.outerWidth() - fWidth; + } + + // should also take account of max width + // browsers does not respect computed max width when it has % + // https://code.google.com/p/chromium/issues/detail?id=228938 + var sMaxWidth = $Item.css("max-width"); + var fMaxWidth = parseFloat(sMaxWidth); + if (sMaxWidth.indexOf("%") > 0) { + fMaxWidth = Math.ceil((fMaxWidth * $Element.outerWidth()) / 100); + } + + // push item + aShrinkableItems.push({ + boxSizing : iBoxSizing, + maxWidth : fMaxWidth, + minWidth : fMinWidth, + percent : fPercent, + el : $Item[0] + }); + }, + setWidths = function(iTotalWidth) { + var iSumOfWidth = 0; + + // check for max and min width and remove items if they cannot not shrink or grow anymore + aShrinkableItems.forEach(function(oItem, iIndex) { + var fRelativePercent = Math.min(100, (oItem.percent * 100) / iTotalPercent); + var iContentWidth = Math.floor((iTotalWidth * fRelativePercent) / 100); + var iCalcWidth = oItem.boxSizing + iContentWidth; + + // if we cannot set calculated shrink width because of the minimum width restriction + // then we should shrink the other items because current item cannot shrink more + if (iCalcWidth < oItem.minWidth) { + oItem.el.style.width = oItem.minWidth + "px"; + iTotalWidth -= (oItem.minWidth - oItem.boxSizing); + + // ignore this element cannot shrink more + iTotalPercent -= oItem.percent; + delete aShrinkableItems[iIndex]; + } + + // if there is a max width restriction and calculated grow width is more than max width + // then we should share this extra grow gap for the other items + if (oItem.maxWidth && oItem.maxWidth > oItem.minWidth && iCalcWidth > oItem.maxWidth) { + oItem.el.style.width = oItem.maxWidth + "px"; + iTotalWidth += (iCalcWidth - oItem.maxWidth); + + // ignore this element cannot grow more + iTotalPercent -= oItem.percent; + delete aShrinkableItems[iIndex]; + } + }); + + // share the width to the items (can grow or shrink) + aShrinkableItems.forEach(function(oItem) { + var fRelativePercent = Math.min(100, (oItem.percent * 100) / iTotalPercent); + var fContentWidth = (iTotalWidth * fRelativePercent) / 100; + var fCalcWidth = oItem.boxSizing + fContentWidth; + oItem.el.style.width = fCalcWidth + "px"; + iSumOfWidth += fCalcWidth; + }); + + // calculate remain width + iTotalWidth -= iSumOfWidth; + if (iTotalWidth > 1) { + // share the remaining width to the spacers + aFlexibleItems.forEach(function(oFlexibleItem) { + var fWidth = iTotalWidth / aFlexibleItems.length; + oFlexibleItem.style.width = fWidth + "px"; + }); + } + }; + + // start calculation + // here items are in their initial width + $Children.each(function() { + var $Child = jQuery(this); + var bAutoWidth = isAutoWidth(this.style.width); + if (bAutoWidth && $Child.hasClass(sFlexClass)) { + // flexible item + aFlexibleItems.push(this); + this.style.width = "0px"; + } else if ($Child.is(":hidden")) { + // invisible item + return; + } else if (bOverflow && $Child.hasClass(sShrinkClass)) { + // shrinkable marked item when toolbar overflows + pushShrinkableItem($Child); + } else { + // unshrinkable item + calcUnShrinkableItem($Child); + } + }); + + // check if there is still place for flex or do the shrink + var iRemainWidth = iInnerWidth - iTotalUnShrinkableWidth; + setWidths(Math.max(iRemainWidth, 0)); + }; + + // determines whether toolbar has flexbox support or not + Toolbar.hasFlexBoxSupport = jQuery.support.hasFlexBoxSupport; + + // determines whether toolbar has new flexbox (shrink) support + Toolbar.hasNewFlexBoxSupport = (function() { + var oStyle = document.documentElement.style; + return (oStyle.flex !== undefined || + oStyle.msFlex !== undefined || + oStyle.webkitFlexShrink !== undefined); + }()); + + Toolbar.prototype.init = function() { + // define group for F6 handling + this.data("sap-ui-fastnavgroup", "true", true); + + // content delegate reference + this._oContentDelegate = { + onAfterRendering: this._onAfterContentRendering + }; + }; + + Toolbar.prototype.onBeforeRendering = function() { + this._cleanup(); + }; + + Toolbar.prototype.onAfterRendering = function() { + // if there is no shrinkable item, layout is not needed + if (!this._checkContents()) { + return; + } + + // layout the toolbar + this._doLayout(); + }; + + Toolbar.prototype.exit = function() { + this._cleanup(); + }; + + Toolbar.prototype.onLayoutDataChange = function() { + this.rerender(); + }; + + Toolbar.prototype.addContent = function(oControl) { + this.addAggregation("content", oControl); + this._onContentInserted(oControl); + return this; + }; + + Toolbar.prototype.insertContent = function(oControl, iIndex) { + this.insertAggregation("content", oControl, iIndex); + this._onContentInserted(oControl); + return this; + }; + + Toolbar.prototype.removeContent = function(vContent) { + vContent = this.removeAggregation("content", vContent); + this._onContentRemoved(vContent); + return vContent; + }; + + Toolbar.prototype.removeAllContent = function() { + var aContents = this.removeAllAggregation("content") || []; + aContents.forEach(this._onContentRemoved, this); + return aContents; + }; + + // handle tap for active toolbar, do nothing if already handled + Toolbar.prototype.ontap = function(oEvent) { + if (this.getActive() && !oEvent.isMarked()) { + oEvent.setMarked(); + this.firePress({ + srcControl : oEvent.srcControl + }); + } + }; + + // fire press event when enter is hit on the active toolbar + Toolbar.prototype.onsapenter = function(oEvent) { + if (this.getActive() && oEvent.srcControl === this && !oEvent.isMarked()) { + oEvent.setMarked(); + this.firePress({ + srcControl : this + }); + } + }; + + // keyboard space handling mimic the enter event + Toolbar.prototype.onsapspace = Toolbar.prototype.onsapenter; + + // mark to inform active handling is done by toolbar + Toolbar.prototype.ontouchstart = function(oEvent) { + this.getActive() && oEvent.setMarked(); + }; + + // mark shrinkable contents and render layout data + // returns shrinkable and flexible content count + Toolbar.prototype._checkContents = function() { + var iShrinkableItemCount = 0; + this.getContent().forEach(function(oControl) { + if (Toolbar.checkShrinkable(oControl)) { + iShrinkableItemCount++; + } + }); + + return iShrinkableItemCount; + }; + + // apply the layout calculation according to flexbox support + Toolbar.prototype._doLayout = function() { + // let the flexbox do its job + if (Toolbar.hasNewFlexBoxSupport) { + return; + } + + // apply layout according to flex support + if (Toolbar.hasFlexBoxSupport) { + this._resetOverflow(); + } else { + this._reflexie(); + } + }; + + // reset overflow and mark with classname if overflows + Toolbar.prototype._resetOverflow = function() { + this._deregisterResize(); + var $This = this.$(); + var oDomRef = $This[0] || {}; + $This.removeClass("sapMTBOverflow"); + var bOverflow = oDomRef.scrollWidth > oDomRef.clientWidth; + bOverflow && $This.addClass("sapMTBOverflow"); + this._iEndPoint = this._getEndPoint(); + this._registerResize(); + }; + + // recalculate flexbox layout + Toolbar.prototype._reflexie = function() { + this._deregisterResize(); + Toolbar.flexie(this.$()); + this._iEndPoint = this._getEndPoint(); + this._registerResize(); + }; + + // gets called when new control is inserted into content aggregation + Toolbar.prototype._onContentInserted = function(oControl) { + if (oControl) { + oControl.attachEvent("_change", this._onContentPropertyChanged, this); + oControl.addEventDelegate(this._oContentDelegate, oControl); + } + }; + + // gets called when a control is removed from content aggregation + Toolbar.prototype._onContentRemoved = function(oControl) { + if (oControl) { + oControl.detachEvent("_change", this._onContentPropertyChanged, this); + oControl.removeEventDelegate(this._oContentDelegate, oControl); + } + }; + + // gets called after content is (re)rendered + // here "this" points to the control not to the toolbar + Toolbar.prototype._onAfterContentRendering = function() { + var oLayout = this.getLayoutData(); + if (oLayout instanceof ToolbarLayoutData) { + oLayout.applyProperties(); + } + }; + + // gets called when any content property is changed + Toolbar.prototype._onContentPropertyChanged = function(oEvent) { + if (oEvent.getParameter("name") != "width") { + return; + } + + // check and mark percent widths + var oControl = oEvent.getSource(); + var bPercent = oControl.getWidth().indexOf("%") > 0; + oControl.toggleStyleClass(Toolbar.shrinkClass, bPercent); + }; + + // register interval timer to detect inner content size is changed + Toolbar.prototype._registerContentResize = function() { + sap.ui.getCore().attachIntervalTimer(this._handleContentResize, this); + }; + + // deregister interval timer for inner content + Toolbar.prototype._deregisterContentResize = function() { + sap.ui.getCore().detachIntervalTimer(this._handleContentResize, this); + }; + + // register toolbar resize handler + Toolbar.prototype._registerToolbarResize = function() { + // register resize handler only if toolbar has relative width + if (Toolbar.isRelativeWidth(this.getWidth())) { + var fnResizeProxy = jQuery.proxy(this._handleToolbarResize, this); + this._sResizeListenerId = ResizeHandler.register(this, fnResizeProxy); + } + }; + + // deregister toolbar resize handlers + Toolbar.prototype._deregisterToolbarResize = function() { + sap.ui.getCore().detachIntervalTimer(this._handleContentResize, this); + if (this._sResizeListenerId) { + ResizeHandler.deregister(this._sResizeListenerId); + this._sResizeListenerId = ""; + } + }; + + // register resize handlers + Toolbar.prototype._registerResize = function() { + this._registerToolbarResize(); + this._registerContentResize(); + }; + + // deregister resize handlers + Toolbar.prototype._deregisterResize = function() { + this._deregisterToolbarResize(); + this._deregisterContentResize(); + }; + + // cleanup resize handlers + Toolbar.prototype._cleanup = function() { + this._deregisterResize(); + }; + + // get the end position of last content + Toolbar.prototype._getEndPoint = function() { + var oLastChild = (this.getDomRef() || {}).lastElementChild; + if (oLastChild) { + var iEndPoint = oLastChild.offsetLeft; + if (!sap.ui.getCore().getConfiguration().getRTL()) { + iEndPoint += oLastChild.offsetWidth; + } + } + + return iEndPoint || 0; + }; + + // handle toolbar resize + Toolbar.prototype._handleToolbarResize = function() { + this._handleResize(false); + }; + + // handle inner content resize + Toolbar.prototype._handleContentResize = function() { + this._handleResize(true); + }; + + // generic resize handler + Toolbar.prototype._handleResize = function(bCheckEndPoint) { + // check whether end point is changed or not + if (bCheckEndPoint && this._iEndPoint == this._getEndPoint()) { + return; + } + + // re-layout the toolbar + this._doLayout(); + }; + + /* + * Augment design property setter. + * 2nd parameter can be used to define auto design context. + * Note: When the second parameter is used, Toolbar does not rerender. This should be done by the setter. + * + * @param {sap.m.ToolbarDesign} sDesign The design for the Toolbar. + * @param {boolean} [bSetAutoDesign] Determines auto design context + * @returns {sap.m.Toolbar} + */ + Toolbar.prototype.setDesign = function(sDesign, bSetAutoDesign) { + if (!bSetAutoDesign) { + return this.setProperty("design", sDesign); + } + + this._sAutoDesign = this.validateProperty("design", sDesign); + return this; + }; + + /** + * Returns the currently applied design property of the Toolbar. + * + * @returns {sap.m.ToolbarDesign} + * @protected + */ + Toolbar.prototype.getActiveDesign = function() { + var sDesign = this.getDesign(); + if (sDesign != ToolbarDesign.Auto) { + return sDesign; + } + + return this._sAutoDesign || sDesign; + }; + + /** + * Returns the first sap.m.Title control id inside the toolbar for the accessibility + * + * @returns {String} + * @since 1.28 + * @protected + */ + Toolbar.prototype.getTitleId = function() { + if (!sap.m.Title) { + return ""; + } + + var aContent = this.getContent(); + for (var i = 0; i < aContent.length; i++) { + var oContent = aContent[i]; + if (oContent instanceof sap.m.Title) { + return oContent.getId(); + } + } + + return ""; + }; + + /////////////////////////// + // Bar in page delegation + /////////////////////////// + /** + * Returns if the bar is sensitive to the container context. Implementation of the IBar interface + * @returns {bool} isContextSensitive + * @protected + */ + Toolbar.prototype.isContextSensitive = BarInPageEnabler.prototype.isContextSensitive; + + /** + * Sets the HTML tag of the root domref + * @param {string} sTag + * @returns {IBar} this for chaining + * @protected + */ + Toolbar.prototype.setHTMLTag = BarInPageEnabler.prototype.setHTMLTag; + + /** + * Gets the HTML tag of the root domref + * @returns {IBarHTMLTag} the HTML-tag + * @protected + */ + Toolbar.prototype.getHTMLTag = BarInPageEnabler.prototype.getHTMLTag; + + /** + * Sets classes and tag according to the context in the page. Possible contexts are header, footer, subheader + * @returns {IBar} this for chaining + * @protected + */ + Toolbar.prototype.applyTagAndContextClassFor = BarInPageEnabler.prototype.applyTagAndContextClassFor; + + + return Toolbar; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/Toolbar.js b/DVHMA-OpenUI5/www/resources/sap/m/Toolbar.js new file mode 100644 index 0000000..25933e6 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/Toolbar.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./BarInPageEnabler','./ToolbarLayoutData','./ToolbarSpacer','./library','sap/ui/core/Control','sap/ui/core/EnabledPropagator','sap/ui/core/ResizeHandler'],function(q,B,T,a,l,C,E,R){"use strict";var b=sap.m.ToolbarDesign;var c=C.extend("sap.m.Toolbar",{metadata:{interfaces:["sap.ui.core.Toolbar","sap.m.IBar"],library:"sap.m",properties:{width:{type:"sap.ui.core.CSSSize",group:"Appearance",defaultValue:null},active:{type:"boolean",group:"Behavior",defaultValue:false},enabled:{type:"boolean",group:"Behavior",defaultValue:true},height:{type:"sap.ui.core.CSSSize",group:"Appearance",defaultValue:''},design:{type:"sap.m.ToolbarDesign",group:"Appearance",defaultValue:b.Auto}},defaultAggregation:"content",aggregations:{content:{type:"sap.ui.core.Control",multiple:true,singularName:"content"}},events:{press:{parameters:{srcControl:{type:"sap.ui.core.Control"}}}}}});E.call(c.prototype);c.shrinkClass="sapMTBShrinkItem";c.isRelativeWidth=function(w){return/^([-+]?\d+%|auto|inherit|)$/i.test(w);};c.checkOverflow=function(e){if(!e||!e.length){return false;}e.children().each(function(){this.style.width=c.getOrigWidth(this.id);});return e[0].scrollWidth>e[0].clientWidth;};c.getOrigWidth=function(i){var o=sap.ui.getCore().byId(i);if(!o||!o.getWidth){return"";}return o.getWidth();};c.checkShrinkable=function(o,s){if(o instanceof a){return this.isRelativeWidth(o.getWidth());}s=s||this.shrinkClass;o.removeStyleClass(s);var w=this.getOrigWidth(o.getId());if(!this.isRelativeWidth(w)){return;}var L=o.getLayoutData();if(L instanceof T){return L.getShrinkable()&&o.addStyleClass(s);}if(w.indexOf("%")>0||o.getMetadata().isInstanceOf("sap.ui.core.IShrinkable")){return o.addStyleClass(s);}var d=o.getDomRef();if(d&&(d.firstChild||{}).nodeType==3){return o.addStyleClass(s);}};c.flexie=function(e,f,s){if(!e||!e.length||!e.width()){return;}s=s||this.shrinkClass;f=f||a.flexClass;var t=0,F=[],S=[],i=0,I=e.width(),$=e.children(),o=this.checkOverflow(e),d=function(w){return!w||w=="auto"||w=="inherit";},g=function(j){i+=j.outerWidth(true);},p=function(j){var k=parseFloat(j.css("width"))||0;var m=parseFloat(j.css("min-width"))||0;if(k==m){g(j);return;}var n=0;var w=j.width();var P=(w*100)/I;t+=P;i+=j.outerWidth(true)-w;if(j.css("box-sizing")=="border-box"){n=j.outerWidth()-w;}var M=j.css("max-width");var u=parseFloat(M);if(M.indexOf("%")>0){u=Math.ceil((u*e.outerWidth())/100);}S.push({boxSizing:n,maxWidth:u,minWidth:m,percent:P,el:j[0]});},h=function(j){var k=0;S.forEach(function(m,n){var u=Math.min(100,(m.percent*100)/t);var v=Math.floor((j*u)/100);var w=m.boxSizing+v;if(wm.minWidth&&w>m.maxWidth){m.el.style.width=m.maxWidth+"px";j+=(w-m.maxWidth);t-=m.percent;delete S[n];}});S.forEach(function(m){var n=Math.min(100,(m.percent*100)/t);var u=(j*n)/100;var v=m.boxSizing+u;m.el.style.width=v+"px";k+=v;});j-=k;if(j>1){F.forEach(function(m){var w=j/F.length;m.style.width=w+"px";});}};$.each(function(){var j=q(this);var A=d(this.style.width);if(A&&j.hasClass(f)){F.push(this);this.style.width="0px";}else if(j.is(":hidden")){return;}else if(o&&j.hasClass(s)){p(j);}else{g(j);}});var r=I-i;h(Math.max(r,0));};c.hasFlexBoxSupport=q.support.hasFlexBoxSupport;c.hasNewFlexBoxSupport=(function(){var s=document.documentElement.style;return(s.flex!==undefined||s.msFlex!==undefined||s.webkitFlexShrink!==undefined);}());c.prototype.init=function(){this.data("sap-ui-fastnavgroup","true",true);this._oContentDelegate={onAfterRendering:this._onAfterContentRendering};};c.prototype.onBeforeRendering=function(){this._cleanup();};c.prototype.onAfterRendering=function(){if(!this._checkContents()){return;}this._doLayout();};c.prototype.exit=function(){this._cleanup();};c.prototype.onLayoutDataChange=function(){this.rerender();};c.prototype.addContent=function(o){this.addAggregation("content",o);this._onContentInserted(o);return this;};c.prototype.insertContent=function(o,i){this.insertAggregation("content",o,i);this._onContentInserted(o);return this;};c.prototype.removeContent=function(v){v=this.removeAggregation("content",v);this._onContentRemoved(v);return v;};c.prototype.removeAllContent=function(){var d=this.removeAllAggregation("content")||[];d.forEach(this._onContentRemoved,this);return d;};c.prototype.ontap=function(e){if(this.getActive()&&!e.isMarked()){e.setMarked();this.firePress({srcControl:e.srcControl});}};c.prototype.onsapenter=function(e){if(this.getActive()&&e.srcControl===this&&!e.isMarked()){e.setMarked();this.firePress({srcControl:this});}};c.prototype.onsapspace=c.prototype.onsapenter;c.prototype.ontouchstart=function(e){this.getActive()&&e.setMarked();};c.prototype._checkContents=function(){var s=0;this.getContent().forEach(function(o){if(c.checkShrinkable(o)){s++;}});return s;};c.prototype._doLayout=function(){if(c.hasNewFlexBoxSupport){return;}if(c.hasFlexBoxSupport){this._resetOverflow();}else{this._reflexie();}};c.prototype._resetOverflow=function(){this._deregisterResize();var t=this.$();var d=t[0]||{};t.removeClass("sapMTBOverflow");var o=d.scrollWidth>d.clientWidth;o&&t.addClass("sapMTBOverflow");this._iEndPoint=this._getEndPoint();this._registerResize();};c.prototype._reflexie=function(){this._deregisterResize();c.flexie(this.$());this._iEndPoint=this._getEndPoint();this._registerResize();};c.prototype._onContentInserted=function(o){if(o){o.attachEvent("_change",this._onContentPropertyChanged,this);o.addEventDelegate(this._oContentDelegate,o);}};c.prototype._onContentRemoved=function(o){if(o){o.detachEvent("_change",this._onContentPropertyChanged,this);o.removeEventDelegate(this._oContentDelegate,o);}};c.prototype._onAfterContentRendering=function(){var L=this.getLayoutData();if(L instanceof T){L.applyProperties();}};c.prototype._onContentPropertyChanged=function(e){if(e.getParameter("name")!="width"){return;}var o=e.getSource();var p=o.getWidth().indexOf("%")>0;o.toggleStyleClass(c.shrinkClass,p);};c.prototype._registerContentResize=function(){sap.ui.getCore().attachIntervalTimer(this._handleContentResize,this);};c.prototype._deregisterContentResize=function(){sap.ui.getCore().detachIntervalTimer(this._handleContentResize,this);};c.prototype._registerToolbarResize=function(){if(c.isRelativeWidth(this.getWidth())){var r=q.proxy(this._handleToolbarResize,this);this._sResizeListenerId=R.register(this,r);}};c.prototype._deregisterToolbarResize=function(){sap.ui.getCore().detachIntervalTimer(this._handleContentResize,this);if(this._sResizeListenerId){R.deregister(this._sResizeListenerId);this._sResizeListenerId="";}};c.prototype._registerResize=function(){this._registerToolbarResize();this._registerContentResize();};c.prototype._deregisterResize=function(){this._deregisterToolbarResize();this._deregisterContentResize();};c.prototype._cleanup=function(){this._deregisterResize();};c.prototype._getEndPoint=function(){var L=(this.getDomRef()||{}).lastElementChild;if(L){var e=L.offsetLeft;if(!sap.ui.getCore().getConfiguration().getRTL()){e+=L.offsetWidth;}}return e||0;};c.prototype._handleToolbarResize=function(){this._handleResize(false);};c.prototype._handleContentResize=function(){this._handleResize(true);};c.prototype._handleResize=function(d){if(d&&this._iEndPoint==this._getEndPoint()){return;}this._doLayout();};c.prototype.setDesign=function(d,s){if(!s){return this.setProperty("design",d);}this._sAutoDesign=this.validateProperty("design",d);return this;};c.prototype.getActiveDesign=function(){var d=this.getDesign();if(d!=b.Auto){return d;}return this._sAutoDesign||d;};c.prototype.getTitleId=function(){if(!sap.m.Title){return"";}var d=this.getContent();for(var i=0;i"); + }; + + return ToolbarSeparatorRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSeparatorRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSeparatorRenderer.js new file mode 100644 index 0000000..da26138 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSeparatorRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/core/Renderer'],function(q,R){"use strict";var T={};T.render=function(r,c){r.write("");};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSpacer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSpacer-dbg.js new file mode 100644 index 0000000..569c841 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSpacer-dbg.js @@ -0,0 +1,56 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.ToolbarSpacer. +sap.ui.define(['jquery.sap.global', './library', 'sap/ui/core/Control'], + function(jQuery, library, Control) { + "use strict"; + + + + /** + * Constructor for a new ToolbarSpacer. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * This control can be used to add horizontal space between toolbar items. + * Note: ToolbarLayoutData should not be used with this control. + * @extends sap.ui.core.Control + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.16 + * @alias sap.m.ToolbarSpacer + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var ToolbarSpacer = Control.extend("sap.m.ToolbarSpacer", /** @lends sap.m.ToolbarSpacer.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * Defines the width of the horizontal space. + * Note: Empty("") value makes the space flexible which means it covers the remaining space between toolbar items. + * This feature can be used to push next item to the edge of the toolbar. + */ + width : {type : "sap.ui.core.CSSSize", group : "Appearance", defaultValue : ''} + } + }}); + + /** + * Flexible Spacer Class Name + * @protected + */ + ToolbarSpacer.flexClass = "sapMTBSpacerFlex"; + + return ToolbarSpacer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSpacer.js b/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSpacer.js new file mode 100644 index 0000000..31eb4a0 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSpacer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./library','sap/ui/core/Control'],function(q,l,C){"use strict";var T=C.extend("sap.m.ToolbarSpacer",{metadata:{library:"sap.m",properties:{width:{type:"sap.ui.core.CSSSize",group:"Appearance",defaultValue:''}}}});T.flexClass="sapMTBSpacerFlex";return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSpacerRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSpacerRenderer-dbg.js new file mode 100644 index 0000000..9664d98 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSpacerRenderer-dbg.js @@ -0,0 +1,37 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define(['jquery.sap.global', 'sap/ui/core/Renderer'], + function(jQuery, Renderer) { + "use strict"; + + + /** + * ToolbarSpacer renderer. + * @namespace + */ + var ToolbarSpacerRenderer = {}; + + ToolbarSpacerRenderer.render = function(rm, oControl) { + rm.write(""); + }; + + return ToolbarSpacerRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSpacerRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSpacerRenderer.js new file mode 100644 index 0000000..0b59faf --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ToolbarSpacerRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/core/Renderer'],function(q,R){"use strict";var T={};T.render=function(r,c){r.write("");};return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/UploadCollection-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/UploadCollection-dbg.js new file mode 100644 index 0000000..f5ca4e9 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/UploadCollection-dbg.js @@ -0,0 +1,1944 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.UploadCollection. +sap.ui.define(['jquery.sap.global', './MessageBox', './MessageToast', './library', 'sap/ui/core/Control', 'sap/ui/unified/library'], + function(jQuery, MessageBox, MessageToast, library, Control, library1) { + "use strict"; + + /** + * Constructor for a new UploadCollection. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * This control allows users to upload single or multiple files from their device (desktop PC, tablet or phone) and attach them into the application. + * @extends sap.ui.core.Control + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.26 + * @alias sap.m.UploadCollection + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var UploadCollection = Control.extend("sap.m.UploadCollection", /** @lends sap.m.UploadCollection.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * Defines the allowed file types for the upload. + * The chosen files will be checked against an array of file types. + * If at least one file does not fit the file type requirements, the upload is prevented. Example: ["jpg", "png", "bmp"]. + */ + fileType : {type : "string[]", group : "Data", defaultValue : null}, + + /** + * Specifies the maximum length of a file name. + * If the maximum file name length is exceeded, the corresponding event 'filenameLengthExceed' is triggered. + */ + maximumFilenameLength : {type : "int", group : "Data", defaultValue : null}, + + /** + * Specifies a file size limit in megabytes that prevents the upload if at least one file exceeds the limit. + * This property is not supported by Internet Explorer 8 and 9. + */ + maximumFileSize : {type : "float", group : "Data", defaultValue : null}, + + /** + * Defines the allowed MIME types of files to be uploaded. + * The chosen files will be checked against an array of MIME types. + * If at least one file does not fit the MIME type requirements, the upload is prevented. + * This property is not supported by Internet Explorer 8 and 9. Example: mimeType ["image/png", "image/jpeg"]. + */ + mimeType : {type : "string[]", group : "Data", defaultValue : null}, + + /** + * Allows multiple files to be chosen and uploaded from the same folder. + * This property is not supported by Internet Explorer 8 and 9. + */ + multiple : {type : "boolean", group : "Behavior", defaultValue : false}, + + /** + * Allows you to set your own text for the 'No data' label. + */ + noDataText : {type : "string", group : "Behavior", defaultValue : null}, + + /** + * Allows the user to assign the same name when editing the file name. “Same” refers to the existence in the list of a file with the same name. + */ + sameFilenameAllowed : {type : "boolean", group : "Behavior", defaultValue : false}, + + /** + * Defines whether separators are shown between list items. + */ + showSeparators : {type : "sap.m.ListSeparators", group : "Appearance", defaultValue : sap.m.ListSeparators.None}, + + /** + * Enables the upload of a file. + */ + uploadEnabled : {type : "boolean", group : "Behavior", defaultValue : true}, + + /** + * Specifies the URL where the uploaded files have to be stored. + */ + uploadUrl : {type : "string", group : "Data", defaultValue : "../../../upload"} + }, + defaultAggregation : "items", + aggregations : { + + /** + * Uploaded items. + */ + items : {type : "sap.m.UploadCollectionItem", multiple : true, singularName : "item"}, + + /** + * Specifies the header parameters for the FileUploader that are submitted only with XHR requests. + * Header parameters are not supported by Internet Explorer 8 and 9. + */ + headerParameters : {type : "sap.m.UploadCollectionParameter", multiple : true, singularName : "headerParameter"}, + + /** + * Specifies the parameters for the FileUploader that are rendered as a hidden input field. + */ + parameters : {type : "sap.m.UploadCollectionParameter", multiple : true, singularName : "parameter"} + }, + + events : { + /** + * The event is triggered when files are selected. Applications can set parameters and headerParameters which will be dispatched to the embedded FileUploader control. + * Limitation: parameters and headerParameters are not supported by Internet Explorer 9. + */ + change : { + parameters : { + /** + * An unique Id of the attached document. + * This parameter is deprecated since version 1.28.0, use parameter files instead. + * @deprecated Since version 1.28.0. This parameter is deprecated, use parameter files instead. + */ + documentId : {type : "string"}, + /** + * A FileList of individually selected files from the underlying system. See www.w3.org for the FileList Interface definition. + * Limitation: Internet Explorer 9 supports only single file with property file.name. + * Since version 1.28.0. + */ + files : {type : "object[]"} + } + }, + + /** + * The event is triggered when the Delete pushbutton is pressed. + */ + fileDeleted : { + parameters : { + /** + * An unique Id of the attached document. + * This parameter is deprecated since version 1.28.0, use parameter item instead. + * @deprecated Since version 1.28.0. This parameter is deprecated, use parameter item instead. + */ + documentId : {type : "string"}, + /** + * An item to be deleted from the collection. + * Since version 1.28.0. + */ + item : {type : "sap.m.UploadCollectionItem"} + } + }, + + /** + * The event is triggered when the name of a chosen file is longer than the value specified with the maximumFilenameLength property (only if provided by the application). + */ + filenameLengthExceed : { + parameters : { + /** + * An unique Id of the attached document. + * This parameter is deprecated since version 1.28.0, use parameter files instead. + * @deprecated Since version 1.28.0. This parameter is deprecated, use parameter files instead. + */ + documentId : {type : "string"}, + /** + * A FileList of individually selected files from the underlying system. + * Limitation: Internet Explorer 9 supports only single file with property file.name. + * Since version 1.28.0. + */ + files : {type : "object[]"} + } + }, + + /** + * The event is triggered when the file name is changed. + */ + fileRenamed : { + parameters : { + /** + * An unique Id of the attached document. + * This parameter is deprecated since version 1.28.0, use parameter item instead. + * @deprecated Since version 1.28.0. This parameter is deprecated, use parameter item instead. + */ + documentId : {type : "string"}, + /** + * The new file name. + * This parameter is deprecated since version 1.28.0, use parameter item instead. + * @deprecated Since version 1.28.0. This parameter is deprecated, use parameter item instead. + */ + fileName : {type : "string"}, + /** + * The renamed UI element as a UploadCollectionItem. + * Since version 1.28.0. + */ + item : {type : "sap.m.UploadCollectionItem"} + } + }, + + /** + * The event is triggered when the file size of an uploaded file is exceeded (only if the maxFileSize property was provided by the application). + * This event is not supported by Internet Explorer 9. + */ + fileSizeExceed : { + parameters : { + /** + * An unique Id of the attached document. + * This parameter is deprecated since version 1.28.0, use parameter files instead. + * @deprecated Since version 1.28.0. This parameter is deprecated, use parameter files instead. + */ + documentId : {type : "string"}, + /** + * The size in MB of a file to be uploaded. + * This parameter is deprecated since version 1.28.0, use parameter files instead. + * @deprecated Since version 1.28.0. This parameter is deprecated, use parameter files instead. + */ + fileSize : {type : "string"}, + /** + * A FileList of individually selected files from the underlying system. + * Limitation: Internet Explorer 9 supports only single file with property file.name. + * Since version 1.28.0. + */ + files : {type : "object[]"} + } + }, + + /** + * The event is triggered when the file type or the MIME type don't match the permitted types (only if the fileType property or the mimeType property are provided by the application). + */ + typeMissmatch : { + parameters : { + /** + * An unique Id of the attached document. + * This parameter is deprecated since version 1.28.0, use parameter files instead. + * @deprecated Since version 1.28.0. Use parameter files instead. + */ + documentId : {type : "string"}, + /** + * File type. + * This parameter is deprecated since version 1.28.0, use parameter files instead. + * @deprecated Since version 1.28.0. Use parameter files instead. + */ + fileType : {type : "string"}, + /** + * MIME type. + *This parameter is deprecated since version 1.28.0, use parameter files instead. + * @deprecated Since version 1.28.0. Use parameter files instead. + */ + mimeType : {type : "string"}, + /** + * A FileList of individually selected files from the underlying system. + * Limitation: Internet Explorer 9 supports only single file. + * Since version 1.28.0. + */ + files : {type : "object[]"} + } + }, + + /** + * The event is triggered as soon as the upload request is completed. + */ + uploadComplete : { + parameters : { + /** + * Ready state XHR. This property is deprecated since version 1.28.0., use parameter files instead. + * @deprecated Since version 1.28.0. This property is deprecated, use parameter files instead. + */ + readyStateXHR : {type : "string"}, + /** + * Response of the completed upload request. This property is deprecated since version 1.28.0., use parameter files instead. + * @deprecated Since version 1.28.0. This property is deprecated, use parameter files instead. + */ + response : {type : "string"}, + /** + * Status Code of the completed upload event. This property is deprecated since version 1.28.0., use parameter files instead. + * @deprecated Since version 1.28.0. This property is deprecated, use parameter files instead. + */ + status : {type : "string"}, + /** + * A list of uploaded files. Each entry contains the following members. + * fileName : The name of a file to be uploaded. + * response : Response message which comes from the server. On the server side this response has to be put within the "body" tags of the response document of the iFrame. It can consist of a return code and an optional message. This does not work in cross-domain scenarios. + * responseRaw : HTTP-Response which comes from the server. This property is not supported by Internet Explorer Versions lower than 9. + * status : Status of the XHR request. This property is not supported by Internet Explorer 9 and lower. + * headers : HTTP-Response-Headers which come from the server. Provided as a JSON-map, i.e. each header-field is reflected by a property in the header-object, with the property value reflecting the header-field's content. This property is not supported by Internet Explorer 9 and lower. + * Since version 1.28.0. + */ + files : {type : "object[]"} + } + }, + + /** + * The event is triggered as soon as the upload request was terminated by the user. + * @since 1.26.2 + */ + uploadTerminated : {} + } + }}); + + UploadCollection._uploadingStatus = "uploading"; + UploadCollection._displayStatus = "display"; + UploadCollection._toBeDeletedStatus = "toBeDeleted"; + UploadCollection.prototype._requestIdName = "requestId"; + UploadCollection.prototype._requestIdValue = 0; + + /** + * @description This file defines behavior for the control + * @private + */ + UploadCollection.prototype.init = function() { + sap.ui.getCore().loadLibrary("sap.ui.layout"); + sap.m.UploadCollection.prototype._oRb = sap.ui.getCore().getLibraryResourceBundle("sap.m"); + this._oList = new sap.m.List(this.getId() + "-list", {}); + this._oList.addStyleClass("sapMUCList"); + this._cAddItems = 0; + this.aItems = []; + }; + + /* =========================================================== */ + /* redefinition of setters methods */ + /* =========================================================== */ + + UploadCollection.prototype.setFileType = function(aFileTypes) { + if (!aFileTypes) { + return this; + } + var cLength = aFileTypes.length; + for (var i = 0; i < cLength; i++) { + aFileTypes[i] = aFileTypes[i].toLowerCase(); + } + this.setProperty("fileType", aFileTypes); + if (this._getFileUploader().getFileType() !== aFileTypes) { + this._getFileUploader().setFileType(aFileTypes); + } + return this; + }; + + UploadCollection.prototype.setMaximumFilenameLength = function(iMaximumFilenameLength) { + this.setProperty("maximumFilenameLength", iMaximumFilenameLength); + if (this._getFileUploader().getMaximumFilenameLength() !== iMaximumFilenameLength) { + this._getFileUploader().setMaximumFilenameLength(iMaximumFilenameLength); + } + return this; + }; + + UploadCollection.prototype.setMaximumFileSize = function(iMaximumFileSize) { + this.setProperty("maximumFileSize", iMaximumFileSize); + if (this._getFileUploader().getMaximumFileSize() !== iMaximumFileSize) { + this._getFileUploader().setMaximumFileSize(iMaximumFileSize); + } + return this; + }; + + UploadCollection.prototype.setMimeType = function(aMimeTypes) { + this.setProperty("mimeType", aMimeTypes); + if (this._getFileUploader().getMimeType() !== aMimeTypes) { + this._getFileUploader().setMimeType(aMimeTypes); + } + return this; + }; + + UploadCollection.prototype.setMultiple = function(bMultiple) { + this.setProperty("multiple", bMultiple); + if (this._getFileUploader().getMultiple() !== bMultiple) { + this._getFileUploader().setMultiple(bMultiple); + } + return this; + }; + + UploadCollection.prototype.setNoDataText = function(sNoDataText) { + this.setProperty("noDataText", sNoDataText); + if (this._oList.getNoDataText() !== sNoDataText) { + this._oList.setNoDataText(sNoDataText); + } + return this; + }; + + UploadCollection.prototype.setShowSeparators = function(bShowSeparators) { + this.setProperty("showSeparators", bShowSeparators); + if (this._oList.getShowSeparators() !== bShowSeparators) { + this._oList.setShowSeparators(bShowSeparators); + } + return this; + }; + + UploadCollection.prototype.setUploadEnabled = function(bUploadEnabled) { + this.setProperty("uploadEnabled", bUploadEnabled); + if (this._getFileUploader().getEnabled() !== bUploadEnabled) { + this._getFileUploader().setEnabled(bUploadEnabled); + } + return this; + }; + + UploadCollection.prototype.setUploadUrl = function(sUploadUrl) { + this.setProperty("uploadUrl", sUploadUrl); + if (this._getFileUploader().getUploadUrl() !== sUploadUrl) { + this._getFileUploader().setUploadUrl(sUploadUrl); + } + return this; + }; + + /* =========================================================== */ + /* Lifecycle methods */ + /* =========================================================== */ + /** + * @description Required adaptations before rendering. + * @private + */ + UploadCollection.prototype.onBeforeRendering = function() { + var oNumberOfAttachmentsLabel = oNumberOfAttachmentsLabel || {}; + var sNoDataText = sNoDataText || this.getNoDataText(); + var bPrepareList = true; + var bAddLeave = true; + var i, j, bItemToBeDeleted, cAitems; + + if (this.aItems.length > 0) { + cAitems = this.aItems.length; + // collect items with the status "uploading" + var aUploadingItems = []; + for (i = 0; i < cAitems; i++) { + if (this.aItems[i]._status === UploadCollection._uploadingStatus) { + aUploadingItems.push(this.aItems[i]); + } + // check if there is an item which should have been deleted + if (this.aItems[i]._status === UploadCollection._toBeDeletedStatus) { + bItemToBeDeleted = true; + } + } + i = 0; + if (aUploadingItems.length > 0) { + var cItems = this.getItems().length; + for (i = 0; i < cItems; i++) { + if (aUploadingItems.length === 0 ) { + break; + } + j = 0; + for (j = 0; j < aUploadingItems.length; j++) { + if (this.getItems()[i].getProperty("fileName") === aUploadingItems[j].getProperty("fileName") && + this.getItems()[i]._requestIdName === aUploadingItems[j]._requestIdName ) { + aUploadingItems.splice(j,1); + break; + } + } + } + } + if (this.getItems()) { + this.aItems.length = 0; + this.aItems = this.getItems(); + for (i = 0; i < aUploadingItems.length; i++ ) { + this.aItems.unshift(aUploadingItems[i]); + } + for (i = 0; i < this.aItems.length; i++) { + if (this.aItems[i]._status === UploadCollection._toBeDeletedStatus) { + this.aItems.splice(i, 1); + i = 0; + } + } + } else { + // aItems is not empty but getItems() = [] + if (bItemToBeDeleted === true) { + for (i = cAitems; i--;) { + if (this.aItems[i]._status === UploadCollection._toBeDeletedStatus) { + this.aItems.splice(i, 1); + } + } + } + } + } else { + // this.aItems is empty + this.aItems = this.getItems(); + } + + oNumberOfAttachmentsLabel = this._getNumberOfAttachmentsLabel(this.aItems.length); + if (!this.oHeaderToolbar) { + this.oHeaderToolbar = new sap.m.Toolbar(this.getId() + "-toolbar", { + content : [oNumberOfAttachmentsLabel, new sap.m.ToolbarSpacer(), this._getFileUploader()] + }); + } else { + var oToolbarContent = this.oHeaderToolbar.getContent(); + oToolbarContent[0] = oNumberOfAttachmentsLabel; + this.oHeaderToolbar.content = oToolbarContent; + } + this.oHeaderToolbar.addStyleClass("sapMUCListHeader"); + + // FileUploader does not support parallel uploads in IE9 + if ((sap.ui.Device.browser.msie && sap.ui.Device.browser.version <= 9) && this.aItems.length > 0 && this.aItems[0]._status === UploadCollection._uploadingStatus) { + this._oFileUploader.setEnabled(false); + } else { + // enable/disable FileUploader according to error state + if (this.sErrorState !== "Error") { + if (this.getUploadEnabled() != this._oFileUploader.getEnabled()) { + this._oFileUploader.setEnabled(this.getUploadEnabled()); + } + } else { + this._oFileUploader.setEnabled(false); + } + } + + // check if preparation of the list is necessary during the 'add' process + if (this._cAddItems > 0) { + cAitems = this.aItems.length; + for (var k = 0; k < cAitems; k++) { + if (this.aItems[k]._status) { + switch (this.aItems[k]._status) { + case UploadCollection._displayStatus : + // list must not to be prepared! + bPrepareList = false; + bAddLeave = false; + break; + default : + // list has to be prepared! + bPrepareList = true; + bAddLeave = true; + break; + } + if (bAddLeave === true) { + //leave the loop because the list has to be shown with new prepared data! + break; + } + } else { + bPrepareList = true; + this._cAddItems = 0; + break; + } + } + } + if (bPrepareList === true) { + //prepare the list with list items + this._clearList(); + this._fillList(this.aItems); + this._oList.setHeaderToolbar(this.oHeaderToolbar); + } + }; + + /** + * @description Required adaptations after rendering. + * @private + */ + UploadCollection.prototype.onAfterRendering = function() { + var that = this; + for (var i = 0; i < this._oList.aDelegates.length; i++) { + if (this._oList.aDelegates[i]._sId && this._oList.aDelegates[i]._sId === "UploadCollection") { + this._oList.aDelegates.splice(i, 1); + } + } + + if (this.aItems || (this.aItems === this.getItems())) { + if (this.editModeItem) { + var $oEditBox = jQuery.sap.byId(this.editModeItem + "-ta_editFileName-inner"); + if ($oEditBox) { + var sId = this.editModeItem; + if (!sap.ui.Device.os.ios) { + $oEditBox.focus(function() { + $oEditBox.selectText(0, $oEditBox.val().length); + }); + } + $oEditBox.focus(); + this._oList.addDelegate({ + onclick: function(oEvent) { + sap.m.UploadCollection.prototype._handleClick(oEvent, that, sId); + } + }); + this._oList.aDelegates[this._oList.aDelegates.length - 1]._sId = "UploadCollection"; + } + } else { + if (this.sFocusId) { + //set focus on line item after status = Edit + sap.m.UploadCollection.prototype._setFocus2LineItem(this.sFocusId); + this.sFocusId = null; + } else if (this.sDeletedItemId) { + //set focus on line item after an item was deleted + sap.m.UploadCollection.prototype._setFocusAfterDeletion(this.sDeletedItemId, that); + this.sDeletedItemId = null; + } + } + } + }; + + /** + * @description Cleans up before destruction. + * @private + */ + UploadCollection.prototype.exit = function() { + if (this._oList) { + this._oList.destroy(); + this._oList = null; + } + }; + + /* =========================================================== */ + /* Private methods */ + /* =========================================================== */ + /** + * @description Map an item to the list item. + * @param {sap.ui.core.Item} oItem Base information to generate the list items + * @returns {sap.m.CustomListItem | null} oListItem List item which will be displayed + * @private + */ + UploadCollection.prototype._mapItemToListItem = function(oItem) { + if (!oItem) { + return null; + } + var sItemId = oItem.getId(), + sProcentUploaded = oItem._percentUploaded, + sStatus = oItem._status, + sFileNameLong = oItem.getFileName(), + that = this, + bEnabled = true; + var oBusyIndicator, + oOkButton, + oCancelButton, + oEditButton, + oDeleteButton, + oFileNameLabel, + oUploadedDateLabel, + oProgressLabel, + oTextDescriptionHL, + oFileNameEditBox, + oItemIcon, + sThumbnailUrl, + oButtonsHL, + oInputExtensionHL, + oTextVL, + oListItem, + sButton; + + if (sStatus === UploadCollection._uploadingStatus) { + oBusyIndicator = new sap.m.BusyIndicator(sItemId + "-ia_indicator", { + visible: true + }).setSize("2.5rem").addStyleClass("sapMUCloadingIcon"); + } + + /////////////////// ListItem Button Layout + if (sStatus === "Edit") { + oOkButton = new sap.m.Button({ + id : sItemId + "-okButton", + text : this._oRb.getText("UPLOADCOLLECTION_OKBUTTON_TEXT"), + type : sap.m.ButtonType.Transparent + }).addStyleClass("sapMUCOkBtn"); + + oCancelButton = new sap.m.Button({ + id : sItemId + "-cancelButton", + text : this._oRb.getText("UPLOADCOLLECTION_CANCELBUTTON_TEXT"), + type : sap.m.ButtonType.Transparent + }).addStyleClass("sapMUCCancelBtn"); + } + + if (sStatus === UploadCollection._displayStatus) { + bEnabled = oItem.getEnableEdit(); + if (this.sErrorState === "Error"){ + bEnabled = false; + } + oEditButton = new sap.m.Button({ + id : sItemId + "-editButton", + icon : "sap-icon://edit", + type : sap.m.ButtonType.Transparent, + enabled : bEnabled, + visible : oItem.getVisibleEdit(), + press : function(oEvent) { + sap.m.UploadCollection.prototype._handleEdit(oEvent, that); + } + }).addStyleClass("sapMUCEditBtn"); + } + + if (sStatus === UploadCollection._displayStatus) { + sButton = "deleteButton"; + oDeleteButton = this._createDeleteButton(sItemId, sButton, oItem, this.sErrorState); + oDeleteButton.attachPress(function(oEvent) { + sap.m.UploadCollection.prototype._handleDelete(oEvent, that); + }); + } + + if (sStatus === UploadCollection._uploadingStatus && !(sap.ui.Device.browser.msie && sap.ui.Device.browser.version <= 9)) { + sButton = "terminateButton"; + oDeleteButton = this._createDeleteButton(sItemId, sButton, oItem, this.sErrorState); + oDeleteButton.attachPress(function(oEvent) { + sap.m.UploadCollection.prototype._handleTerminate(oEvent, that); + }); + } + + oButtonsHL = new sap.ui.layout.HorizontalLayout(sItemId + "-ba_innerHL", { + content : [oOkButton, oCancelButton, oEditButton, oDeleteButton] + }).addStyleClass("sapMUCBtnHL"); + /* fallback for IE9 as it doesn't support flex; text truncation doesn't take place but at least the buttons are displayed correctly in full screen mode */ + if (sap.ui.Device.browser.msie && sap.ui.Device.browser.version <= 9) { + oButtonsHL.addStyleClass("sapMUCBtnNoFlex"); + } + + // /////////////////// ListItem Text Layout + if (sStatus === UploadCollection._displayStatus || sStatus === UploadCollection._uploadingStatus) { + bEnabled = true; + if (this.sErrorState === "Error") { + bEnabled = false; + } + oFileNameLabel = new sap.m.Link(sItemId + "-ta_filenameHL", { + text : sFileNameLong, + enabled : bEnabled, + target : "_blank", + press : function(oEvent) { + sap.m.UploadCollection.prototype._triggerLink(oEvent, that); + } + }).addStyleClass("sapMUCFileName"); + } + + if (sStatus === UploadCollection._displayStatus) { + oUploadedDateLabel = new sap.m.Label(sItemId + "-ta_date", { + text : oItem.getUploadedDate() + " " + oItem.getContributor() + }); + } + + if (sStatus === UploadCollection._uploadingStatus && !(sap.ui.Device.browser.msie && sap.ui.Device.browser.version <= 9)) { + oProgressLabel = new sap.m.Label(sItemId + "-ta_progress", { + text : this._oRb.getText("UPLOADCOLLECTION_UPLOADING", [sProcentUploaded]) + }).addStyleClass("sapMUCProgress"); + } + + if (sStatus === UploadCollection._displayStatus || sStatus === UploadCollection._uploadingStatus) { + oTextDescriptionHL = new sap.ui.layout.HorizontalLayout(sItemId + "-ta_descriptionHL", { + content : [oUploadedDateLabel, oProgressLabel] + }).addStyleClass("sapMUCDescriptionHL"); + } + + if (sStatus === "Edit") { + var oFile = UploadCollection.prototype._splitFilename(sFileNameLong); + var iMaxLength = that.getMaximumFilenameLength(); + var sValueState = "None"; + var bShowValueStateMessage = false; + var sFileName = oFile.name; + + if (oItem.errorState === "Error") { + bShowValueStateMessage = true; + sValueState = "Error"; + sFileName = oItem.changedFileName; + } + + // filename + oFileNameEditBox = new sap.m.Input(sItemId + "-ta_editFileName", { + type : sap.m.InputType.Text, + fieldWidth: "80%", + valueState : sValueState, + valueStateText : this._oRb.getText("UPLOADCOLLECTION_EXISTS"), + showValueStateMessage: bShowValueStateMessage, + value : sFileName, + description: oFile.extension + }).addStyleClass("sapMUCEditBox"); + + if ((iMaxLength - oFile.extension.length) > 0) { + oFileNameEditBox.setProperty("maxLength", iMaxLength - oFile.extension.length, true); + } + + oFileNameEditBox.setLayoutData(new sap.m.FlexItemData({ + growFactor : 1 + })); + + oInputExtensionHL = new sap.m.HBox(sItemId + "-ta_extensionHL", { + items : [oFileNameEditBox] + }).addStyleClass("sapMUCEditHL"); + + } + + oTextVL = new sap.ui.layout.VerticalLayout(sItemId + "-ta_textVL", { + content : [oFileNameLabel, oInputExtensionHL, oTextDescriptionHL] + }).addStyleClass("sapMUCText"); + + // /////////////////// ListItem Icon + if (sStatus === UploadCollection._displayStatus || sStatus === "Edit") { + var bDecorative = false; + if (this.sErrorState === "Error" || !jQuery.trim(oItem.getProperty("url"))) { + bDecorative = true; + } + sThumbnailUrl = oItem.getThumbnailUrl(); + if (sThumbnailUrl) { + oItemIcon = new sap.m.Image(sItemId + "-ia_imageHL", { + src : sap.m.UploadCollection.prototype._getThumbnail(sThumbnailUrl, sFileNameLong), + decorative : bDecorative + }).addStyleClass("sapMUCItemImage"); + } else { + oItemIcon = new sap.ui.core.Icon(sItemId + "-ia_iconHL", { + src : sap.m.UploadCollection.prototype._getThumbnail(undefined, sFileNameLong), + decorative : bDecorative + }).setSize('2.5rem').addStyleClass("sapMUCItemIcon"); + } + if (bDecorative === false) { + oItemIcon.attachPress(function(oEvent) { + sap.m.UploadCollection.prototype._triggerLink(oEvent, that); + }); + } + } + + if (sStatus === "Edit") { + oButtonsHL.addStyleClass("sapMUCEditMode"); + } else { + oButtonsHL.removeStyleClass("sapMUCEditMode"); + } + + oListItem = new sap.m.CustomListItem(sItemId + "-cli", { + content : [oBusyIndicator, oItemIcon, oTextVL, oButtonsHL] + }); + + ///////////////////// Add properties to the ListItem + for ( var sPropertyName in oItem.mProperties) { + if (oItem.mProperties.hasOwnProperty(sPropertyName)) { + oListItem.mProperties[sPropertyName] = oItem.mProperties[sPropertyName]; + } + } + oListItem._status = sStatus; + oListItem.addStyleClass("sapMUCItem"); + return oListItem; + }; + + /** + * @description creates a delete button + * @param {string} [sItemId] Id of the oItem + * @param {string} [sButton] + * if sButton == "deleteButton" it is a delete button for the already uploaded file + * if sButton == "terminateButton" it is a button to terminate the upload of the file being uploaded + * @param {Object} [oItem] + * @param {string} [sErrorState] + */ + UploadCollection.prototype._createDeleteButton = function(sItemId, sButton, oItem, sErrorState) { + var bEnabled = oItem.getEnableDelete(); + if (this.sErrorState === "Error"){ + bEnabled = false; + } + var oDeleteButton = new sap.m.Button({ + id : sItemId + "-" + sButton, + icon : "sap-icon://sys-cancel", + type : sap.m.ButtonType.Transparent, + enabled : bEnabled, + visible : oItem.getVisibleDelete() + }).addStyleClass("sapMUCDeleteBtn"); + return oDeleteButton; + }; + + /** + * @description Fill the list with items. + * @param {array} aItems An array with items type of sap.ui.core.Item. + * @private + */ + UploadCollection.prototype._fillList = function(aItems) { + var that = this; + var iMaxIndex = aItems.length - 1; + + jQuery.each(aItems, function (iIndex, oItem) { + if (!oItem._status) { + //set default status value -> UploadCollection._displayStatus + oItem._status = UploadCollection._displayStatus; + } + if (!oItem._percentUploaded && oItem._status === UploadCollection._uploadingStatus) { + //set default percent uploaded + oItem._percentUploaded = 0; + } + // add a private property to the added item containing a reference + // to the corresponding mapped item + var oListItem = that._mapItemToListItem(oItem); + + if (iIndex === 0 && iMaxIndex === 0){ + oListItem.addStyleClass("sapMUCListSingleItem"); + } else if (iIndex === 0) { + oListItem.addStyleClass("sapMUCListFirstItem"); + } else if (iIndex === iMaxIndex) { + oListItem.addStyleClass("sapMUCListLastItem"); + } else { + oListItem.addStyleClass("sapMUCListItem"); + } + + // add the mapped item to the List + that._oList.addAggregation("items", oListItem, true); // note: suppress re-rendering + }); + }; + + /** + * @description Destroy the items in the List. + * @private + */ + UploadCollection.prototype._clearList = function() { + if (this._oList) { + this._oList.destroyAggregation("items", true); // note: suppress re-rendering + } + }; + + /** + * @description Access and initialization for label number of attachments. + * @param {array} items Number of attachments + * @returns {object} label with the information about the number of attachments + * @private + */ + UploadCollection.prototype._getNumberOfAttachmentsLabel = function(items) { + var nItems = items || 0; + if (!this.oNumberOfAttachmentsLabel) { + this.oNumberOfAttachmentsLabel = new sap.m.Label(this.getId() + "-numberOfAttachmentsLabel", { + design : sap.m.LabelDesign.Standard, + text : this._oRb.getText("UPLOADCOLLECTION_ATTACHMENTS", [nItems]) + }); + } else { + this.oNumberOfAttachmentsLabel.setText(this._oRb.getText("UPLOADCOLLECTION_ATTACHMENTS", [nItems])); + } + return this.oNumberOfAttachmentsLabel; + }; + + /* =========================================================== */ + /* Handle UploadCollection events */ + /* =========================================================== */ + /** + * @description Handling of the deletion of an uploaded file + * @param {object} oEvent Event of the deletion + * @param {object} oContext Context of the deleted file + * @private + */ + UploadCollection.prototype._handleDelete = function(oEvent, oContext) { + var oParams = oEvent.getParameters(); + var aItems = oContext.getAggregation("items"); + var sItemId = oParams.id.split("-deleteButton")[0]; + var index = null; + var sCompact = ""; + var sFileName; + var sMessageText; + oContext.sDeletedItemId = sItemId; + for (var i = 0; i < aItems.length; i++) { + if (aItems[i].sId === sItemId) { + index = i; + break; + } + } + if (jQuery.sap.byId(oContext.sId).hasClass("sapUiSizeCompact")) { + sCompact = "sapUiSizeCompact"; + } + + if (oContext.editModeItem) { + //In case there is a list item in edit mode, the edit mode has to be finished first. + sap.m.UploadCollection.prototype._handleOk(oEvent, oContext, oContext.editModeItem, true); + if (oContext.sErrorState === "Error") { + //If there is an error, the deletion must not be triggered + return this; + } + } + + if (!!aItems[index]) { + // popup delete file + sFileName = aItems[index].getFileName(); + if (!sFileName) { + sMessageText = this._oRb.getText("UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT"); + } else { + sMessageText = this._oRb.getText("UPLOADCOLLECTION_DELETE_TEXT", sFileName); + } + oContext._oItemForDelete = aItems[index]; + sap.m.MessageBox.show(sMessageText, { + title : this._oRb.getText("UPLOADCOLLECTION_DELETE_TITLE"), + actions : [sap.m.MessageBox.Action.OK, sap.m.MessageBox.Action.CANCEL], + onClose : oContext._onCloseMessageBoxDeleteItem.bind(oContext), + dialogId : "messageBoxDeleteFile", + styleClass : sCompact + }); + } + }; + + /** + * @description Handling of the termination of an uploading file + * @param {sap.m.MessageBox.Action} oAction + * @private + */ + UploadCollection.prototype._onCloseMessageBoxDeleteItem = function (oAction) { + if (oAction === sap.m.MessageBox.Action.OK) { + // fire event + this.fireFileDeleted({ + // deprecated + documentId : this._oItemForDelete.getDocumentId(), + // new + item : this._oItemForDelete + }); + this._oItemForDelete._status = UploadCollection._toBeDeletedStatus; + } + delete this._oItemForDelete; + }; + + /** + * @description Handling of termination of an uploading process + * @param {object} oEvent Event of the upload termination + * @param {object} oContext Context of the upload termination + * @private + */ + UploadCollection.prototype._handleTerminate = function(oEvent, oContext) { + var sCompact = "", aUploadedFiles, oFileList, oListItem, oDialog, i, j, sFileNameLong; + if (jQuery.sap.byId(oContext.sId).hasClass("sapUiSizeCompact")) { + sCompact = "sapUiSizeCompact"; + } + // popup terminate upload file + aUploadedFiles = this._splitString2Array(oContext._getFileUploader().getProperty("value"), oContext); + for (i = 0; i < aUploadedFiles.length; i++) { + if (aUploadedFiles[i].length === 0) { + aUploadedFiles.splice(i, 1); + } + } + for (i = 0; i < oContext.aItems.length; i++) { + sFileNameLong = oContext.aItems[i].getFileName(); + if (oContext.aItems[i]._status === UploadCollection._uploadingStatus && aUploadedFiles.indexOf(sFileNameLong)) { + aUploadedFiles.push(sFileNameLong); + } + } + oFileList = new sap.m.List({}); + + aUploadedFiles.forEach(function(sItem) { + oListItem = new sap.m.StandardListItem({ + title : sItem, + icon : oContext._getIconFromFilename(sItem) + }); + oFileList.addAggregation("items", oListItem, true); + }); + + oDialog = new sap.m.Dialog({ + title: this._oRb.getText("UPLOADCOLLECTION_TERMINATE_TITLE"), + content: [ + new sap.m.Text({ + text: this._oRb.getText("UPLOADCOLLECTION_TERMINATE_TEXT") + }), + oFileList + ], + buttons:[ + new sap.m.Button({ + text: this._oRb.getText("UPLOADCOLLECTION_OKBUTTON_TEXT"), + press: function() { + // if the file is already loaded send a delete request to the application + aUploadedFiles = oContext._splitString2Array(oContext._getFileUploader().getProperty("value"), oContext); + for (i = 0; i < aUploadedFiles.length; i++) { + for (j = 0; j < oContext.aItems.length; j++) { + if ( aUploadedFiles[i] === oContext.aItems[j].getFileName() && oContext.aItems[j]._status === UploadCollection._displayStatus) { + oContext.fireFileDeleted({ + documentId : oContext.aItems[j].getDocumentId() + }); + oContext.aItems[j]._status = UploadCollection._toBeDeletedStatus; + break; + } else if (aUploadedFiles[i] === oContext.aItems[j].getFileName() && oContext.aItems[j]._status === UploadCollection._uploadingStatus) { + oContext.aItems[j]._status = UploadCollection._toBeDeletedStatus; + break; + } + } + } + //call FileUploader terminate + oContext._getFileUploader().abort(); + oContext.invalidate(); + oDialog.close(); + } + }), + new sap.m.Button({ + text: this._oRb.getText("UPLOADCOLLECTION_CANCELBUTTON_TEXT"), + press: function() { + oDialog.close(); + } + }) + ], + styleClass : sCompact + }); + oDialog.open(); + }; + + /** + * @description Handling of event of the edit button + * @param {object} oEvent Event of the edit button + * @param {object} oContext Context of the edit button + * @private + */ + UploadCollection.prototype._handleEdit = function(oEvent, oContext) { + if (oEvent.sId) { + var oParams = oEvent.getParameters(); + var sId = oParams.id; + var aId = sId.split("-"); + var iLength = aId.length; + // get line + var iSelectdRow = aId[iLength - 2]; + + if (oContext.sErrorState !== "Error") { + oContext.aItems[iSelectdRow]._status = "Edit"; + oContext.editModeItem = oEvent.oSource.sId.split("-editButton")[0]; + } + + // trigger re-rendering! + oContext.invalidate(); + } + }; + + /** + * @description Handling of 'click' of the list (items + header) + * @param {object} oEvent Event of the 'click' + * @param {object} oContext Context of the list item where 'click' was triggered + * @param {string} sSourceId List item id/identifier were the click was triggered + * @private + */ + UploadCollection.prototype._handleClick = function(oEvent, oContext, sSourceId) { + if (oEvent.target.id.lastIndexOf("editButton") > 0) { + sap.m.UploadCollection.prototype._handleOk(oEvent, oContext, sSourceId, false); + } else if (oEvent.target.id.lastIndexOf("cancelButton") > 0) { + sap.m.UploadCollection.prototype._handleCancel(oEvent, oContext, sSourceId); + } else if (oEvent.target.id.lastIndexOf("ia_imageHL") < 0 && + oEvent.target.id.lastIndexOf("ia_iconHL") < 0 && + oEvent.target.id.lastIndexOf("deleteButton") < 0 && + oEvent.target.id.lastIndexOf("ta_editFileName") < 0) { + if (oEvent.target.id.lastIndexOf("cli") > 0) { + oContext.sFocusId = oEvent.target.id; + } + sap.m.UploadCollection.prototype._handleOk(oEvent, oContext, sSourceId, true); + } + }; + + /** + * @description Handling of 'ok' of the list item (status = 'Edit') + * @param {object} oEvent Event of the 'ok' activity + * @param {object} oContext Context of the list item where 'ok' was triggered + * @param {string} sSourceId List item id + * @private + */ + UploadCollection.prototype._handleOk = function(oEvent, oContext, sSourceId, bTriggerRenderer) { + var bTriggerOk = true; + var oEditbox = document.getElementById(sSourceId + "-ta_editFileName-inner"); + var sNewFileName; + // get new/changed file name and remove possible leading spaces + if (oEditbox !== null) { + sNewFileName = oEditbox.value.replace(/^\s+/,""); + } + + //prepare the Id of the UI element which will get the focus + var aSrcIdElements = oEvent.srcControl ? oEvent.srcControl.getId().split("-") : oEvent.oSource.getId().split("-"); + aSrcIdElements = aSrcIdElements.slice(0, 3); + oContext.sFocusId = aSrcIdElements.join("-") + "-cli"; + + if (sNewFileName.length > 0) { + var iSourceLine = sSourceId.split("-").pop(); + oContext.aItems[iSourceLine]._status = UploadCollection._displayStatus; + // get original file name + var sOrigFullFileName = oContext.aItems[iSourceLine].getProperty("fileName"); + var oFile = UploadCollection.prototype._splitFilename(sOrigFullFileName); + // in case there is a difference additional activities are necessary + if (oFile.name != sNewFileName) { + // here we have to check possible double items if it's necessary + if (!oContext.getSameFilenameAllowed()) { + var oInput = sap.ui.getCore().byId(sSourceId + "-ta_editFileName"); + // Check double file name + if (sap.m.UploadCollection.prototype._checkDoubleFileName(sNewFileName + oFile.extension, oContext.aItems)) { + var sErrorStateBefore = oContext.aItems[iSourceLine].errorState; + var sChangedNameBefore = oContext.aItems[iSourceLine].changedFileName; + oInput.setProperty("valueState", "Error", true); + oContext.aItems[iSourceLine]._status = "Edit"; + oContext.aItems[iSourceLine].errorState = "Error"; + oContext.aItems[iSourceLine].changedFileName = sNewFileName; + oContext.sErrorState = "Error"; + bTriggerOk = false; + if (sErrorStateBefore != "Error" || sChangedNameBefore != sNewFileName){ + oContext.invalidate(); + } + } else { + oInput.setValueState = ""; + oContext.aItems[iSourceLine].errorState = null; + oContext.aItems[iSourceLine].changedFileName = null; + oContext.sErrorState = null; + oContext.editModeItem = null; + if (bTriggerRenderer) { + oContext.invalidate(); + } + } + } + if (bTriggerOk) { + oContext._oItemForRename = oContext.aItems[iSourceLine]; + oContext._onEditItemOk.bind(oContext)(sNewFileName + oFile.extension); + } + } else { + oContext.sErrorState = null; + oContext.aItems[iSourceLine].errorState = null; + // nothing changed -> nothing to do! + oContext.editModeItem = null; + if (bTriggerRenderer) { + oContext.invalidate(); + } + } + } + }; + + /** + * @description Handling of edit item + * @private + */ + UploadCollection.prototype._onEditItemOk = function (sNewFileName) { + if (this._oItemForRename) { + this._oItemForRename.setFileName(sNewFileName); + // fire event + this.fireFileRenamed({ + // deprecated + documentId : this._oItemForRename.getProperty("documentId"), + fileName : sNewFileName, + // new + item : this._oItemForRename + }); + } + delete this._oItemForRename; + }; + + /** + * @description Handling of 'cancel' of the list item (status = 'Edit') + * @param {object} oEvent Event of the 'cancel' activity + * @param {object} oContext Context of the list item where 'cancel' was triggered + * @param {string} sSourceId List item id + * @private + */ + UploadCollection.prototype._handleCancel = function(oEvent, oContext, sSourceId) { + var iSourceLine = sSourceId.split("-").pop(); + oContext.aItems[iSourceLine]._status = UploadCollection._displayStatus; + oContext.aItems[iSourceLine].errorState = null; + oContext.aItems[iSourceLine].changedFileName = sap.ui.getCore().byId(sSourceId + "-ta_editFileName").getProperty("value"); + oContext.sFocusId = oContext.editModeItem + "-cli"; + oContext.sErrorState = null; + oContext.editModeItem = null; + oContext.invalidate(); + }; + + /* =========================================================== */ + /* Handle FileUploader events */ + /* =========================================================== */ + /** + * @description Handling of the Event change of the fileUploader + * @param {object} oEvent Event of the fileUploader + * @private + */ + UploadCollection.prototype._onChange = function(oEvent) { + if (oEvent) { + var that = this; + var sRequestValue, iCountFiles, i, sFileName; + this._cAddItems = 0; + if (sap.ui.Device.browser.msie && sap.ui.Device.browser.version <= 9) { + // FileUploader does not support files parameter for IE9 for the time being + var sNewValue = oEvent.getParameter("newValue"); + if (!sNewValue) { + return; + } + sFileName = sNewValue.split(/\" "/)[0]; + //sometimes onChange is called if no data was selected + if ( sFileName.length === 0 ) { + return; + } + } else { + iCountFiles = oEvent.getParameter("files").length; + //sometimes onChange is called if no data was selected + if (iCountFiles === 0) { + return; + } + this._oFileUploader.removeAllHeaderParameters(); + this.removeAllHeaderParameters(); + } + this._oFileUploader.removeAllParameters(); + this.removeAllParameters(); + + // IE9 + if (sap.ui.Device.browser.msie && sap.ui.Device.browser.version <= 9) { + var oFile = { + name : oEvent.getParameter("newValue") + }; + var oParameters = { + files : [oFile] + }; + this.fireChange({ + // deprecated + getParameter : function(sParameter) { + if (sParameter === "files") { + return [oFile]; + } + }, + getParameters : function() { + return oParameters; + }, + mParameters : oParameters, + // new + files : [oFile] + }); + + } else { + this.fireChange({ + // deprecated + getParameter : function(sParameter) { + if (sParameter) { + return oEvent.getParameter(sParameter); + } + }, + getParameters : function() { + return oEvent.getParameters(); + }, + mParameters : oEvent.getParameters(), + // new + files : oEvent.getParameter("files") + }); + } + + var aParametersAfter = this.getAggregation("parameters"); + // parameters + if (aParametersAfter) { + jQuery.each(aParametersAfter, function (iIndex, parameter) { + var oParameter = new sap.ui.unified.FileUploaderParameter({ + name : parameter.getProperty("name"), + value: parameter.getProperty("value") + }); + that._oFileUploader.addParameter(oParameter); + }); + } + var oItem; + if (sap.ui.Device.browser.msie && sap.ui.Device.browser.version <= 9) { + oItem = new sap.m.UploadCollectionItem(); + oItem.setProperty("contributor", null); + oItem.setDocumentId(null); + oItem.setEnableDelete(true); + oItem.setFileName(sFileName); + oItem.setMimeType(null); + oItem._status = UploadCollection._uploadingStatus; + oItem._percentUploaded = 0; + oItem.setThumbnailUrl(null); + oItem.setUploadedDate(null); + oItem.setUrl(null); + this.aItems.unshift(oItem); + this.insertItem(oItem); + this._cAddItems++; + } else { + this._requestIdValue = this._requestIdValue + 1; + sRequestValue = this._requestIdValue.toString(); + var aHeaderParametersAfter = this.getAggregation("headerParameters"); + for (i = 0; i < iCountFiles; i++) { + oItem = new sap.m.UploadCollectionItem(); + oItem.setProperty("contributor", null); + oItem.setDocumentId(null); + oItem.setEnableDelete(true); + oItem.setFileName(oEvent.getParameter("files")[i].name); + oItem.setMimeType(null); + oItem._status = UploadCollection._uploadingStatus; + oItem._percentUploaded = 0; + oItem.setThumbnailUrl(null); + oItem.setUploadedDate(null); + oItem.setUrl(null); + oItem._requestIdName = sRequestValue; + oItem.fileSize = oEvent.getParameter("files")[i].size; + this.aItems.unshift(oItem); + this.insertItem(oItem); + this._cAddItems++; + } + //headerParameters + if (aHeaderParametersAfter) { + jQuery.each(aHeaderParametersAfter, function (iIndex, headerParameter) { + that._oFileUploader.addHeaderParameter(new sap.ui.unified.FileUploaderParameter({ + name : headerParameter.getProperty("name"), + value: headerParameter.getProperty("value") + })); + }); + } + that._oFileUploader.addHeaderParameter(new sap.ui.unified.FileUploaderParameter({ + name : this._requestIdName, + value: sRequestValue + })); + } + } + }; + + /** + * @description Handling of the Event filenameLengthExceed of the fileUploader + * @param {object} oEvent Event of the fileUploader + * @private + */ + UploadCollection.prototype._onFilenameLengthExceed = function(oEvent) { + var oFile = {name: oEvent.getParameter("fileName")}; + var aFiles = [oFile]; + this.fireFilenameLengthExceed({ + // deprecated + getParameter : function(sParameter) { + if (sParameter) { + return oEvent.getParameter(sParameter); + } + }, + getParameters : function() { + return oEvent.getParameters(); + }, + mParameters : oEvent.getParameters(), + // new + files : aFiles + }); + }; + + /** + * @description Handling of the Event fileSizeExceed of the fileUploader + * @param {object} oEvent Event of the fileUploader + * @private + */ + UploadCollection.prototype._onFileSizeExceed = function(oEvent){ + if (sap.ui.Device.browser.msie && sap.ui.Device.browser.version <= 9) { // IE9 + var sFileName = oEvent.getParameter("newValue"); + var oFile = { + name : sFileName + }; + var oParameters = { + newValue : sFileName, + files : [oFile] + }; + this.fireFileSizeExceed({ + // deprecated + getParameter : function(sParameter) { + if (sParameter === "files") { + return [oFile]; + } else if (sParameter === "newValue") { + return sFileName; + } + }, + getParameters : function() { + return oParameters; + }, + mParameters : oParameters, + // new + files : [oFile] + }); + } else { // other browsers + var oFile = { + name: oEvent.getParameter("fileName"), + fileSize: oEvent.getParameter("fileSize")}; + this.fireFileSizeExceed({ + // deprecated + getParameter : function(sParameter) { + if (sParameter) { + return oEvent.getParameter(sParameter); + } + }, + getParameters : function() { + return oEvent.getParameters(); + }, + mParameters : oEvent.getParameters(), + // new + files : [oFile] + }); + } + }; + + /** + * @description Handling of the Event typeMissmatch of the fileUploader + * @param {object} oEvent Event of the fileUploader + * @private + */ + UploadCollection.prototype._onTypeMissmatch = function(oEvent) { + var oFile = {name: oEvent.getParameter("fileName"), + fileType: oEvent.getParameter("fileType"), + mimeType: oEvent.getParameter("mimeType")}; + var aFiles = [oFile]; + this.fireTypeMissmatch({ + // deprecated + getParameter : function(sParameter) { + if (sParameter) { + return oEvent.getParameter(sParameter); + } + }, + getParameters : function() { + return oEvent.getParameters(); + }, + mParameters : oEvent.getParameters(), + // new + files : aFiles + }); + }; + + /** + * @description Handling of the Event uploadTerminated of the fileUploader + * @param {object} oEvent Event of the fileUploader + * @private + */ + UploadCollection.prototype._onUploadTerminated = function(oEvent) { + if ( oEvent) { + var i; + var sRequestId = this._getRequestId(oEvent); + var sFileName = oEvent.getParameter("fileName"); + var cItems = this.aItems.length; + for (i = 0; i < cItems ; i++) { + if (this.aItems[i] === sFileName && this.aItems[i]._requestIdName === sRequestId && this.aItems[i]._status === UploadCollection._uploadingStatus) { + this.aItems.splice(i, 1); + this.removeItem(i); + break; + } + } + this.fireUploadTerminated(); + } + }; + + /** + * @description Handling of the Event uploadComplete of the fileUploader to forward the Event to the application + * @param {object} oEvent Event of the fileUploader + * @private + */ + UploadCollection.prototype._onUploadComplete = function(oEvent) { + if (oEvent) { + var i, sRequestId, sUploadedFile, cItems; + sRequestId = this._getRequestId(oEvent); + sUploadedFile = oEvent.getParameter("fileName"); + // at the moment parameter fileName is not set in IE9 + if (!sUploadedFile) { + var aUploadedFile = (oEvent.getSource().getProperty("value")).split(/\" "/); + sUploadedFile = aUploadedFile[0]; + } + cItems = this.aItems.length; + for (i = 0; i < cItems; i++) { + // sRequestId should be null only in case of IE9 because FileUploader does not support header parameters for it + if (!sRequestId) { + if (this.aItems[i].getProperty("fileName") === sUploadedFile && + this.aItems[i]._status === UploadCollection._uploadingStatus) { + this.aItems[i]._status = UploadCollection._displayStatus; + break; + } + } else if (this.aItems[i].getProperty("fileName") === sUploadedFile && + this.aItems[i]._requestIdName === sRequestId && + this.aItems[i]._status === UploadCollection._uploadingStatus) { + this.aItems[i]._status = UploadCollection._displayStatus; + break; + } + } + this.fireUploadComplete({ + // deprecated + getParameter : oEvent.getParameter, + getParameters : oEvent.getParameters, + mParameters : oEvent.getParameters(), + // new Stuff + files : [{ + fileName : oEvent.getParameter("fileName"), + responseRaw : oEvent.getParameter("responseRaw"), + reponse : oEvent.getParameter("response"), + headers : oEvent.getParameter("headers") + }] + }); + } + }; + + /** + * @description Handling of the Event uploadProgress of the fileUploader to forward the Event to the application + * @param {object} oEvent Event of the fileUploader + * @private + */ + UploadCollection.prototype._onUploadProgress = function(oEvent) { + if (oEvent) { + var i, sUploadedFile, sPercentUploaded, iPercentUploaded, sRequestId, cItems; + sUploadedFile = oEvent.getParameter("fileName"); + sRequestId = this._getRequestId(oEvent); + iPercentUploaded = Math.round(oEvent.getParameter("loaded") / oEvent.getParameter("total") * 100); + if (iPercentUploaded === 100) { + iPercentUploaded = iPercentUploaded - 1; + } + sPercentUploaded = this._oRb.getText("UPLOADCOLLECTION_UPLOADING", [iPercentUploaded]); + cItems = this.aItems.length; + for (i = 0; i < cItems; i++) { + if (this.aItems[i].getProperty("fileName") === sUploadedFile && this.aItems[i]._requestIdName == sRequestId && this.aItems[i]._status === UploadCollection._uploadingStatus) { + sap.ui.getCore().byId(this.aItems[i].getId() + "-ta_progress").setText(sPercentUploaded); + this.aItems[i]._percentUploaded = iPercentUploaded; + break; + } + } + } + }; + + /** + * @description Get the Request ID from the header Parameters of a fileUploader event + * @param {object} oEvent Event of the fileUploader + * @private + */ + UploadCollection.prototype._getRequestId = function(oEvent) { + var oHeaderParams; + oHeaderParams = oEvent.getParameter("requestHeaders"); + if (!oHeaderParams) { + return null; + } + for (var j = 0; j < oHeaderParams.length; j++) { + if (oHeaderParams[j].name == this._requestIdName) { + return oHeaderParams[j].value; + } + } + }; + + /** + * @description Access and initialization for the FileUploader + * @returns {sap.ui.unified.FileUploader} Instance of the FileUploader + * @private + */ + UploadCollection.prototype._getFileUploader = function() { + var that = this; + if (!this._oFileUploader) { + var bSendXHR = (sap.ui.Device.browser.msie && sap.ui.Device.browser.version <= 9) ? false : true; + this._oFileUploader = new sap.ui.unified.FileUploader(this.getId() + "-uploader",{ + buttonOnly : true, + buttonText : " ", + enabled : this.getUploadEnabled(), + fileType : this.getFileType(), + icon : "sap-icon://add", + iconFirst : false, + maximumFilenameLength : this.getMaximumFilenameLength(), + maximumFileSize : this.getMaximumFileSize(), + mimeType : this.getMimeType(), + multiple : this.getMultiple(), + name : "uploadCollection", + uploadOnChange : true, + sameFilenameAllowed : true, + uploadUrl : this.getUploadUrl(), + useMultipart : false, + sendXHR : bSendXHR, // false for IE8, IE9 + change : function(oEvent) { + that._onChange(oEvent); + }, + filenameLengthExceed : function(oEvent) { + that._onFilenameLengthExceed(oEvent); + }, + fileSizeExceed : function(oEvent) { + that._onFileSizeExceed(oEvent); + }, + typeMissmatch : function(oEvent) { + that._onTypeMissmatch(oEvent); + }, + uploadAborted : function(oEvent) { // only supported with property sendXHR set to true + that._onUploadTerminated(oEvent); + }, + uploadComplete : function(oEvent) { + that._onUploadComplete(oEvent); + }, + uploadProgress : function(oEvent) { // only supported with property sendXHR set to true + that._onUploadProgress(oEvent); + } + }); + var sTooltip = this._oFileUploader.getTooltip(); + if (!sTooltip && !sap.ui.Device.browser.msie) { + // in case the tooltip is NOT overwritten, the default tooltip should NOT be chosen! + this._oFileUploader.setTooltip(" "); + } + } + return this._oFileUploader; + }; + + /** + * @description Determines the icon from the filename. + * @param {string} sFilename Name of the file inclusive extension(e.g. .txt, .pdf, ...). + * @returns {string} Icon related to the file extension. + * @private + */ + UploadCollection.prototype._getIconFromFilename = function(sFilename) { + var sFileExtension = this._splitFilename(sFilename).extension; + + switch (sFileExtension) { + case '.bmp' : + case '.jpg' : + case '.png' : + return 'sap-icon://attachment-photo'; + case '.csv' : + case '.xls' : + case '.xlsx' : + return 'sap-icon://excel-attachment'; + case '.doc' : + case '.docx' : + case '.odt' : + return 'sap-icon://doc-attachment'; + case '.pdf' : + return 'sap-icon://pdf-attachment'; + case '.ppt' : + case '.pptx' : + return 'sap-icon://ppt-attachment'; + case '.txt' : + return 'sap-icon://document-text'; + default : + return 'sap-icon://document'; + } + }; + + /** + * @description Determines the thumbnail of an item. + * @param {string} sThumbnailUrl Url of the thumbnail-image of the UC list item + * @param {string} sFilename Name of the file to determine if there could be a thumbnail + * @returns {string} ThumbnailUrl or icon + * @private + */ + UploadCollection.prototype._getThumbnail = function(sThumbnailUrl, sFilename) { + if (sThumbnailUrl) { + return sThumbnailUrl; + } else { + return this._getIconFromFilename(sFilename); + } + }; + + /** + * @description Tigger of the link which will be executed when the icon/image was clicked + * @param {Object} oEvent of the click/press of the icon/image + * @private + */ + UploadCollection.prototype._triggerLink = function(oEvent, oContext) { + var iLine = null; + + if (oContext.editModeItem) { + //In case there is a list item in edit mode, the edit mode has to be finished first. + sap.m.UploadCollection.prototype._handleOk(oEvent, oContext, oContext.editModeItem, true); + if (oContext.sErrorState === "Error") { + //If there is an error, the link of the list item must not be triggered. + return this; + } + oContext.sFocusId = oEvent.getParameter("id"); + } + iLine = oEvent.oSource.getId().split("-")[2]; + + sap.m.URLHelper.redirect(oContext.aItems[iLine].getProperty("url"), true); + + }; + + // ================================================================================ + // Keyboard activities + // ================================================================================ + /** + * @description Keyboard support: Handling of different key activity + * @param {Object} oEvent Event of the key activity + * @returns {void} + * @private + */ + UploadCollection.prototype.onkeydown = function(oEvent) { + + switch (oEvent.keyCode) { + case jQuery.sap.KeyCodes.F2 : + sap.m.UploadCollection.prototype._handleF2(oEvent, this); + break; + case jQuery.sap.KeyCodes.ESCAPE : + sap.m.UploadCollection.prototype._handleESC(oEvent, this); + break; + case jQuery.sap.KeyCodes.DELETE : + sap.m.UploadCollection.prototype._handleDEL(oEvent, this); + break; + case jQuery.sap.KeyCodes.ENTER : + sap.m.UploadCollection.prototype._handleENTER(oEvent, this); + break; + default : + return; + } + oEvent.setMarked(); + }; + + // ================================================================================ + // helpers + // ================================================================================ + /** + * @description Set the focus after the list item was deleted. + * @param {Object} DeletedItemId ListItem id which was deleted + * @param {Object} oContext Context of the ListItem which was deleted + * @returns {void} + * @private + */ + UploadCollection.prototype._setFocusAfterDeletion = function(DeletedItemId, oContext) { + if (!DeletedItemId) { + return; + } + var iLength = oContext.aItems.length; + var sLineId = null; + + if (iLength === 0){ + var oFileUploader = jQuery.sap.byId(oContext._oFileUploader.sId); + var oFocusObj = oFileUploader.find(":button"); + jQuery.sap.focus(oFocusObj); + } else { + var iLineNumber = DeletedItemId.split("-").pop(); + //Deleted item is not the last one of the list + if ((iLength - 1) >= iLineNumber) { + sLineId = DeletedItemId + "-cli"; + } else { + sLineId = oContext.aItems.pop().sId + "-cli"; + } + sap.m.UploadCollection.prototype._setFocus2LineItem(sLineId); + } + }; + + /** + * @description Set the focus to the list item. + * @param {string} sFocusId ListItem which should get the focus + * @returns {void} + * @private + */ + UploadCollection.prototype._setFocus2LineItem = function(sFocusId) { + + if (!sFocusId) { + return; + } + var $oObj = jQuery.sap.byId(sFocusId); + jQuery.sap.focus($oObj); + }; + + /** + * @description Handle of keyboard activity ENTER. + * @param {Object} oEvent ListItem of the keyboard activity ENTER + * @param {Object} oContext Context of the keyboard activity ENTER + * @returns {void} + * @private + */ + UploadCollection.prototype._handleENTER = function (oEvent, oContext) { + var sTarget; + var sLinkId; + if (oContext.editModeItem) { + sTarget = oEvent.target.id.split(oContext.editModeItem).pop(); + } else { + sTarget = oEvent.target.id.split("-").pop(); + } + + switch (sTarget) { + case "-ta_editFileName-inner" : + case "-okButton" : + sap.m.UploadCollection.prototype._handleOk(oEvent, oContext, oContext.editModeItem, true); + break; + case "-cancelButton" : + oEvent.preventDefault(); + sap.m.UploadCollection.prototype._handleCancel(oEvent, oContext, oContext.editModeItem); + break; + case "-ia_iconHL" : + case "-ia_imageHL" : + //Edit mode + var iLine = oContext.editModeItem.split("-").pop(); + sap.m.URLHelper.redirect(oContext.aItems[iLine].getProperty("url"), true); + break; + case "ia_iconHL" : + case "ia_imageHL" : + case "cli": + //Display mode + sLinkId = oEvent.target.id.split(sTarget)[0] + "ta_filenameHL"; + sap.m.URLHelper.redirect(sap.ui.getCore().byId(sLinkId).getHref(), true); + break; + default : + return; + } + }; + + /** + * @description Handle of keyboard activity DEL. + * @param {Object} oEvent ListItem of the keyboard activity DEL + * @param {Object} oContext Context of the keyboard activity DEL + * @private + */ + UploadCollection.prototype._handleDEL = function(oEvent, oContext) { + if (!oContext.editModeItem) { + var o$Obj = jQuery.sap.byId(oEvent.target.id); + var o$DeleteButton = o$Obj.find("[id$='-deleteButton']"); + var oDeleteButton = sap.ui.getCore().byId(o$DeleteButton[0].id); + oDeleteButton.firePress(); + } + }; + + /** + * @description Handle of keyboard activity ESC. + * @param {Object} oEvent ListItem of the keyboard activity ESC + * @param {Object} oContext Context of the keyboard activity ESC + * @private + */ + UploadCollection.prototype._handleESC = function(oEvent, oContext) { + if (oContext.editModeItem){ + oContext.sFocusId = oContext.editModeItem + "-cli"; + oContext.aItems[oContext.editModeItem.split("-").pop()]._status = UploadCollection._displayStatus; + sap.m.UploadCollection.prototype._handleCancel(oEvent, oContext, oContext.editModeItem); + } + }; + + /** + * @description Handle of keyboard activity F2. + * @param {Object} oEvent Event of the keyboard activity F2 + * @param {Object} oContext Context of the keyboard activity F2 + * @private + */ + UploadCollection.prototype._handleF2 = function(oEvent, oContext) { + + var oObj = sap.ui.getCore().byId(oEvent.target.id); + var o$Obj = jQuery.sap.byId(oEvent.target.id); + + if (oObj !== undefined) { + if (oObj._status == UploadCollection._displayStatus) { + //focus at list line (status = "display") and F2 pressed --> status = "Edit" + o$Obj = jQuery.sap.byId(oEvent.target.id); + var o$EditButton = o$Obj.find("[id$='-editButton']"); + var oEditButton = sap.ui.getCore().byId(o$EditButton[0].id); + if (oEditButton.getEnabled()) { + if (oContext.editModeItem){ + sap.m.UploadCollection.prototype._handleClick(oEvent, oContext, oContext.editModeItem); + } + if (oContext.sErrorState !== "Error") { + oEditButton.firePress(); + } + } + } else { + //focus at list line(status= "Edit") and F2 is pressed --> status = "display", changes will be saved and + //if the focus is at any other object of the list item + sap.m.UploadCollection.prototype._handleClick(oEvent, oContext, oContext.editModeItem); + } + } else { + if (oEvent.target.id.search(oContext.editModeItem) === 0) { + //focus at Inputpield (status = "Edit"), F2 pressed --> status = "display" changes will be saved + sap.m.UploadCollection.prototype._handleOk(oEvent, oContext, oContext.editModeItem, true); + } + } + }; + + /** + * @description Delivers an array of Filenames from a string of the FileUploader event. + * @param {string} sStringOfFilenames String of concatenated file names of the FileUploader + * @returns {array} aUploadedFiles A Collection of the uploaded files + * @private + */ + UploadCollection.prototype._splitString2Array = function(sStringOfFilenames, oContext) { + if (oContext.getMultiple() === true && !(sap.ui.Device.browser.msie && sap.ui.Device.browser.version <= 9)) { + sStringOfFilenames = sStringOfFilenames.substring(1, sStringOfFilenames.length - 2); + } + return sStringOfFilenames.split(/\" "/); + }; + + /** + * @description Determines if the filename is already in usage. + * @param {string} sFilename inclusive file extension + * @param {array} aItems Collection of uploaded files + * @returns {boolean} true for an already existing item with the same file name(independent of the path) + * @private + */ + UploadCollection.prototype._checkDoubleFileName = function(sFilename, aItems) { + if (aItems.length === 0 || !sFilename) { + return false; + } + + var iLength = aItems.length; + sFilename = sFilename.replace(/^\s+/,""); + + for (var i = 0; i < iLength; i++) { + if (sFilename == aItems[i].getProperty("fileName")){ + return true; + } + } + return false; + }; + + /** + * @description Split file name into name and extension. + * @param {string} sFilename Full file name inclusive the extension + * @returns {object} oResult Filename and Extension + * @private + */ + UploadCollection.prototype._splitFilename = function(sFilename) { + var oResult = {}; + var aNameSplit = sFilename.split("."); + if (aNameSplit.length == 1) { + oResult.extension = ""; + oResult.name = aNameSplit.pop(); + return oResult; + } + oResult.extension = "." + aNameSplit.pop(); + oResult.name = aNameSplit.join("."); + return oResult; + }; + + return UploadCollection; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/UploadCollection.js b/DVHMA-OpenUI5/www/resources/sap/m/UploadCollection.js new file mode 100644 index 0000000..ba615f0 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/UploadCollection.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./MessageBox','./MessageToast','./library','sap/ui/core/Control','sap/ui/unified/library'],function(q,M,a,l,C,b){"use strict";var U=C.extend("sap.m.UploadCollection",{metadata:{library:"sap.m",properties:{fileType:{type:"string[]",group:"Data",defaultValue:null},maximumFilenameLength:{type:"int",group:"Data",defaultValue:null},maximumFileSize:{type:"float",group:"Data",defaultValue:null},mimeType:{type:"string[]",group:"Data",defaultValue:null},multiple:{type:"boolean",group:"Behavior",defaultValue:false},noDataText:{type:"string",group:"Behavior",defaultValue:null},sameFilenameAllowed:{type:"boolean",group:"Behavior",defaultValue:false},showSeparators:{type:"sap.m.ListSeparators",group:"Appearance",defaultValue:sap.m.ListSeparators.None},uploadEnabled:{type:"boolean",group:"Behavior",defaultValue:true},uploadUrl:{type:"string",group:"Data",defaultValue:"../../../upload"}},defaultAggregation:"items",aggregations:{items:{type:"sap.m.UploadCollectionItem",multiple:true,singularName:"item"},headerParameters:{type:"sap.m.UploadCollectionParameter",multiple:true,singularName:"headerParameter"},parameters:{type:"sap.m.UploadCollectionParameter",multiple:true,singularName:"parameter"}},events:{change:{parameters:{documentId:{type:"string"},files:{type:"object[]"}}},fileDeleted:{parameters:{documentId:{type:"string"},item:{type:"sap.m.UploadCollectionItem"}}},filenameLengthExceed:{parameters:{documentId:{type:"string"},files:{type:"object[]"}}},fileRenamed:{parameters:{documentId:{type:"string"},fileName:{type:"string"},item:{type:"sap.m.UploadCollectionItem"}}},fileSizeExceed:{parameters:{documentId:{type:"string"},fileSize:{type:"string"},files:{type:"object[]"}}},typeMissmatch:{parameters:{documentId:{type:"string"},fileType:{type:"string"},mimeType:{type:"string"},files:{type:"object[]"}}},uploadComplete:{parameters:{readyStateXHR:{type:"string"},response:{type:"string"},status:{type:"string"},files:{type:"object[]"}}},uploadTerminated:{}}}});U._uploadingStatus="uploading";U._displayStatus="display";U._toBeDeletedStatus="toBeDeleted";U.prototype._requestIdName="requestId";U.prototype._requestIdValue=0;U.prototype.init=function(){sap.ui.getCore().loadLibrary("sap.ui.layout");sap.m.UploadCollection.prototype._oRb=sap.ui.getCore().getLibraryResourceBundle("sap.m");this._oList=new sap.m.List(this.getId()+"-list",{});this._oList.addStyleClass("sapMUCList");this._cAddItems=0;this.aItems=[];};U.prototype.setFileType=function(f){if(!f){return this;}var c=f.length;for(var i=0;i0){c=this.aItems.length;var u=[];for(i=0;i0){var d=this.getItems().length;for(i=0;i0&&this.aItems[0]._status===U._uploadingStatus){this._oFileUploader.setEnabled(false);}else{if(this.sErrorState!=="Error"){if(this.getUploadEnabled()!=this._oFileUploader.getEnabled()){this._oFileUploader.setEnabled(this.getUploadEnabled());}}else{this._oFileUploader.setEnabled(false);}}if(this._cAddItems>0){c=this.aItems.length;for(var k=0;k0){g.setProperty("maxLength",w-v.extension.length,true);}g.setLayoutData(new sap.m.FlexItemData({growFactor:1}));m=new sap.m.HBox(I+"-ta_extensionHL",{items:[g]}).addStyleClass("sapMUCEditHL");}n=new sap.ui.layout.VerticalLayout(I+"-ta_textVL",{content:[F,m,T]}).addStyleClass("sapMUCText");if(s===U._displayStatus||s==="Edit"){var D=false;if(this.sErrorState==="Error"||!q.trim(i.getProperty("url"))){D=true;}j=i.getThumbnailUrl();if(j){h=new sap.m.Image(I+"-ia_imageHL",{src:sap.m.UploadCollection.prototype._getThumbnail(j,f),decorative:D}).addStyleClass("sapMUCItemImage");}else{h=new sap.ui.core.Icon(I+"-ia_iconHL",{src:sap.m.UploadCollection.prototype._getThumbnail(undefined,f),decorative:D}).setSize('2.5rem').addStyleClass("sapMUCItemIcon");}if(D===false){h.attachPress(function(z){sap.m.UploadCollection.prototype._triggerLink(z,t);});}}if(s==="Edit"){k.addStyleClass("sapMUCEditMode");}else{k.removeStyleClass("sapMUCEditMode");}L=new sap.m.CustomListItem(I+"-cli",{content:[B,h,n,k]});for(var y in i.mProperties){if(i.mProperties.hasOwnProperty(y)){L.mProperties[y]=i.mProperties[y];}}L._status=s;L.addStyleClass("sapMUCItem");return L;};U.prototype._createDeleteButton=function(i,B,I,e){var E=I.getEnableDelete();if(this.sErrorState==="Error"){E=false;}var d=new sap.m.Button({id:i+"-"+B,icon:"sap-icon://sys-cancel",type:sap.m.ButtonType.Transparent,enabled:E,visible:I.getVisibleDelete()}).addStyleClass("sapMUCDeleteBtn");return d;};U.prototype._fillList=function(i){var t=this;var m=i.length-1;q.each(i,function(I,o){if(!o._status){o._status=U._displayStatus;}if(!o._percentUploaded&&o._status===U._uploadingStatus){o._percentUploaded=0;}var L=t._mapItemToListItem(o);if(I===0&&m===0){L.addStyleClass("sapMUCListSingleItem");}else if(I===0){L.addStyleClass("sapMUCListFirstItem");}else if(I===m){L.addStyleClass("sapMUCListLastItem");}else{L.addStyleClass("sapMUCListItem");}t._oList.addAggregation("items",L,true);});};U.prototype._clearList=function(){if(this._oList){this._oList.destroyAggregation("items",true);}};U.prototype._getNumberOfAttachmentsLabel=function(i){var n=i||0;if(!this.oNumberOfAttachmentsLabel){this.oNumberOfAttachmentsLabel=new sap.m.Label(this.getId()+"-numberOfAttachmentsLabel",{design:sap.m.LabelDesign.Standard,text:this._oRb.getText("UPLOADCOLLECTION_ATTACHMENTS",[n])});}else{this.oNumberOfAttachmentsLabel.setText(this._oRb.getText("UPLOADCOLLECTION_ATTACHMENTS",[n]));}return this.oNumberOfAttachmentsLabel;};U.prototype._handleDelete=function(e,c){var p=e.getParameters();var I=c.getAggregation("items");var s=p.id.split("-deleteButton")[0];var d=null;var f="";var F;var m;c.sDeletedItemId=s;for(var i=0;i0){sap.m.UploadCollection.prototype._handleOk(e,c,s,false);}else if(e.target.id.lastIndexOf("cancelButton")>0){sap.m.UploadCollection.prototype._handleCancel(e,c,s);}else if(e.target.id.lastIndexOf("ia_imageHL")<0&&e.target.id.lastIndexOf("ia_iconHL")<0&&e.target.id.lastIndexOf("deleteButton")<0&&e.target.id.lastIndexOf("ta_editFileName")<0){if(e.target.id.lastIndexOf("cli")>0){c.sFocusId=e.target.id;}sap.m.UploadCollection.prototype._handleOk(e,c,s,true);}};U.prototype._handleOk=function(e,c,s,t){var T=true;var E=document.getElementById(s+"-ta_editFileName-inner");var n;if(E!==null){n=E.value.replace(/^\s+/,"");}var S=e.srcControl?e.srcControl.getId().split("-"):e.oSource.getId().split("-");S=S.slice(0,3);c.sFocusId=S.join("-")+"-cli";if(n.length>0){var i=s.split("-").pop();c.aItems[i]._status=U._displayStatus;var o=c.aItems[i].getProperty("fileName");var f=U.prototype._splitFilename(o);if(f.name!=n){if(!c.getSameFilenameAllowed()){var I=sap.ui.getCore().byId(s+"-ta_editFileName");if(sap.m.UploadCollection.prototype._checkDoubleFileName(n+f.extension,c.aItems)){var d=c.aItems[i].errorState;var g=c.aItems[i].changedFileName;I.setProperty("valueState","Error",true);c.aItems[i]._status="Edit";c.aItems[i].errorState="Error";c.aItems[i].changedFileName=n;c.sErrorState="Error";T=false;if(d!="Error"||g!=n){c.invalidate();}}else{I.setValueState="";c.aItems[i].errorState=null;c.aItems[i].changedFileName=null;c.sErrorState=null;c.editModeItem=null;if(t){c.invalidate();}}}if(T){c._oItemForRename=c.aItems[i];c._onEditItemOk.bind(c)(n+f.extension);}}else{c.sErrorState=null;c.aItems[i].errorState=null;c.editModeItem=null;if(t){c.invalidate();}}}};U.prototype._onEditItemOk=function(n){if(this._oItemForRename){this._oItemForRename.setFileName(n);this.fireFileRenamed({documentId:this._oItemForRename.getProperty("documentId"),fileName:n,item:this._oItemForRename});}delete this._oItemForRename;};U.prototype._handleCancel=function(e,c,s){var S=s.split("-").pop();c.aItems[S]._status=U._displayStatus;c.aItems[S].errorState=null;c.aItems[S].changedFileName=sap.ui.getCore().byId(s+"-ta_editFileName").getProperty("value");c.sFocusId=c.editModeItem+"-cli";c.sErrorState=null;c.editModeItem=null;c.invalidate();};U.prototype._onChange=function(e){if(e){var t=this;var r,c,i,f;this._cAddItems=0;if(sap.ui.Device.browser.msie&&sap.ui.Device.browser.version<=9){var n=e.getParameter("newValue");if(!n){return;}f=n.split(/\" "/)[0];if(f.length===0){return;}}else{c=e.getParameter("files").length;if(c===0){return;}this._oFileUploader.removeAllHeaderParameters();this.removeAllHeaderParameters();}this._oFileUploader.removeAllParameters();this.removeAllParameters();if(sap.ui.Device.browser.msie&&sap.ui.Device.browser.version<=9){var F={name:e.getParameter("newValue")};var p={files:[F]};this.fireChange({getParameter:function(s){if(s==="files"){return[F];}},getParameters:function(){return p;},mParameters:p,files:[F]});}else{this.fireChange({getParameter:function(s){if(s){return e.getParameter(s);}},getParameters:function(){return e.getParameters();},mParameters:e.getParameters(),files:e.getParameter("files")});}var P=this.getAggregation("parameters");if(P){q.each(P,function(d,g){var o=new sap.ui.unified.FileUploaderParameter({name:g.getProperty("name"),value:g.getProperty("value")});t._oFileUploader.addParameter(o);});}var I;if(sap.ui.Device.browser.msie&&sap.ui.Device.browser.version<=9){I=new sap.m.UploadCollectionItem();I.setProperty("contributor",null);I.setDocumentId(null);I.setEnableDelete(true);I.setFileName(f);I.setMimeType(null);I._status=U._uploadingStatus;I._percentUploaded=0;I.setThumbnailUrl(null);I.setUploadedDate(null);I.setUrl(null);this.aItems.unshift(I);this.insertItem(I);this._cAddItems++;}else{this._requestIdValue=this._requestIdValue+1;r=this._requestIdValue.toString();var h=this.getAggregation("headerParameters");for(i=0;i=i){s=D+"-cli";}else{s=c.aItems.pop().sId+"-cli";}sap.m.UploadCollection.prototype._setFocus2LineItem(s);}};U.prototype._setFocus2LineItem=function(f){if(!f){return;}var $=q.sap.byId(f);q.sap.focus($);};U.prototype._handleENTER=function(e,c){var t;var L;if(c.editModeItem){t=e.target.id.split(c.editModeItem).pop();}else{t=e.target.id.split("-").pop();}switch(t){case"-ta_editFileName-inner":case"-okButton":sap.m.UploadCollection.prototype._handleOk(e,c,c.editModeItem,true);break;case"-cancelButton":e.preventDefault();sap.m.UploadCollection.prototype._handleCancel(e,c,c.editModeItem);break;case"-ia_iconHL":case"-ia_imageHL":var i=c.editModeItem.split("-").pop();sap.m.URLHelper.redirect(c.aItems[i].getProperty("url"),true);break;case"ia_iconHL":case"ia_imageHL":case"cli":L=e.target.id.split(t)[0]+"ta_filenameHL";sap.m.URLHelper.redirect(sap.ui.getCore().byId(L).getHref(),true);break;default:return;}};U.prototype._handleDEL=function(e,c){if(!c.editModeItem){var o=q.sap.byId(e.target.id);var d=o.find("[id$='-deleteButton']");var D=sap.ui.getCore().byId(d[0].id);D.firePress();}};U.prototype._handleESC=function(e,c){if(c.editModeItem){c.sFocusId=c.editModeItem+"-cli";c.aItems[c.editModeItem.split("-").pop()]._status=U._displayStatus;sap.m.UploadCollection.prototype._handleCancel(e,c,c.editModeItem);}};U.prototype._handleF2=function(e,c){var o=sap.ui.getCore().byId(e.target.id);var d=q.sap.byId(e.target.id);if(o!==undefined){if(o._status==U._displayStatus){d=q.sap.byId(e.target.id);var f=d.find("[id$='-editButton']");var E=sap.ui.getCore().byId(f[0].id);if(E.getEnabled()){if(c.editModeItem){sap.m.UploadCollection.prototype._handleClick(e,c,c.editModeItem);}if(c.sErrorState!=="Error"){E.firePress();}}}else{sap.m.UploadCollection.prototype._handleClick(e,c,c.editModeItem);}}else{if(e.target.id.search(c.editModeItem)===0){sap.m.UploadCollection.prototype._handleOk(e,c,c.editModeItem,true);}}};U.prototype._splitString2Array=function(s,c){if(c.getMultiple()===true&&!(sap.ui.Device.browser.msie&&sap.ui.Device.browser.version<=9)){s=s.substring(1,s.length-2);}return s.split(/\" "/);};U.prototype._checkDoubleFileName=function(f,I){if(I.length===0||!f){return false;}var L=I.length;f=f.replace(/^\s+/,"");for(var i=0;i"); + oRm.renderControl(oControl._oList); + oRm.write(""); + }; + + return UploadCollectionRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/UploadCollectionRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/UploadCollectionRenderer.js new file mode 100644 index 0000000..e7a97ba --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/UploadCollectionRenderer.js @@ -0,0 +1,6 @@ +/*! +* SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. +*/ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var U={};U.render=function(r,c){r.write("");r.renderControl(c._oList);r.write("");};return U;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/VBox-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/VBox-dbg.js new file mode 100644 index 0000000..cf9c4d0 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/VBox-dbg.js @@ -0,0 +1,44 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.VBox. +sap.ui.define(['jquery.sap.global', './FlexBox', './library'], + function(jQuery, FlexBox, library) { + "use strict"; + + + + /** + * Constructor for a new VBox. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * The VBox control builds the container for a vertical flexible box layout. VBox is a convenience control as it is just a specialized FlexBox control. + * + * Browser support: + * This control is not supported in Internet Explorer 9! + * @extends sap.m.FlexBox + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.m.VBox + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var VBox = FlexBox.extend("sap.m.VBox", /** @lends sap.m.VBox.prototype */ { metadata : { + + library : "sap.m" + }}); + + + + return VBox; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/VBox.js b/DVHMA-OpenUI5/www/resources/sap/m/VBox.js new file mode 100644 index 0000000..c56ae57 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/VBox.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./FlexBox','./library'],function(q,F,l){"use strict";var V=F.extend("sap.m.VBox",{metadata:{library:"sap.m"}});return V;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/VBoxRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/VBoxRenderer-dbg.js new file mode 100644 index 0000000..750877a --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/VBoxRenderer-dbg.js @@ -0,0 +1,33 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define(['jquery.sap.global', './FlexBoxRenderer'], + function(jQuery, FlexBoxRenderer) { + "use strict"; + + + /** + * VBox renderer. + * @namespace + */ + var VBoxRenderer = { + }; + + + /** + * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}. + * + * @param {sap.ui.core.RenderManager} oRm the RenderManager that can be used for writing to the render output buffer + * @param {sap.ui.core.Control} oControl an object representation of the control that should be rendered + */ + VBoxRenderer.render = function(oRm, oControl){ + FlexBoxRenderer.render.apply(this, [oRm, oControl]); + }; + + + return VBoxRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/VBoxRenderer.js b/DVHMA-OpenUI5/www/resources/sap/m/VBoxRenderer.js new file mode 100644 index 0000000..8e6a11a --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/VBoxRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./FlexBoxRenderer'],function(q,F){"use strict";var V={};V.render=function(r,c){F.render.apply(this,[r,c]);};return V;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ViewSettingsCustomItem-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/ViewSettingsCustomItem-dbg.js new file mode 100644 index 0000000..9cd09ea --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ViewSettingsCustomItem-dbg.js @@ -0,0 +1,115 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.ViewSettingsCustomItem. +sap.ui.define(['jquery.sap.global', './ViewSettingsItem', './library'], + function(jQuery, ViewSettingsItem, library) { + "use strict"; + + + + /** + * Constructor for a new ViewSettingsCustomItem. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * ViewSettingsCustomItem is used for modelling custom filters in the ViewSettingsDialog. + * @extends sap.m.ViewSettingsItem + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.16 + * @alias sap.m.ViewSettingsCustomItem + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var ViewSettingsCustomItem = ViewSettingsItem.extend("sap.m.ViewSettingsCustomItem", /** @lends sap.m.ViewSettingsCustomItem.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * The number of currently active filters for this custom filter item. It will be displayed in the filter list of the ViewSettingsDialog to represent the filter state of the custom control. + */ + filterCount : {type : "int", group : "Behavior", defaultValue : 0} + }, + aggregations : { + + /** + * A custom control for the filter field. It can be used for complex filtering mechanisms. + */ + customControl : {type : "sap.ui.core.Control", multiple : false} + } + }}); + + /** + * Destroys the control + * @private + */ + ViewSettingsCustomItem.prototype.exit = function () { + if (this._control && !this._control.getParent()) { + // control is not aggregated, so we have to destroy it + this._control.destroy(); + delete this._control; + } + }; + + /* + * Internally the control is handled as a managed object instead of an aggregation + * because this control is sometimes aggregated in other controls like a popover or a dialog + * @override + * @public + * @param {sap.ui.core.Control} oControl a control used for filtering purposes + * @return {sap.m.ViewSettingsCustomItem} this pointer for chaining + */ + ViewSettingsCustomItem.prototype.setCustomControl = function (oControl) { + this._control = oControl; + return this; + }; + + /* + * Internally the control is handled as a managed object instead of an aggregation + * because this control is sometimes aggregated in other controls like a popover or a dialog + * @override + * @public + * @return {sap.ui.core.Control} oControl a control used for filtering purposes + */ + ViewSettingsCustomItem.prototype.getCustomControl = function () { + return this._control; + }; + + /* + * Sets the filterCount property without invalidating the control as it is never rendered directly + * @override + * @param {integer} iValue the new value for property filterCount + * @public + * @return {sap.m.ViewSettingsItem} this pointer for chaining + */ + ViewSettingsCustomItem.prototype.setFilterCount = function (iValue) { + this.setProperty("filterCount", iValue, true); + return this; + }; + + /* + * Sets the selected property without invalidating the control as it is never rendered directly + * @override + * @param {boolean} bValue the new value for property selected + * @public + * @return {sap.m.ViewSettingsItem} this pointer for chaining + */ + ViewSettingsCustomItem.prototype.setSelected = function (bValue) { + this.setProperty("selected", bValue, true); + return this; + }; + + + return ViewSettingsCustomItem; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ViewSettingsCustomItem.js b/DVHMA-OpenUI5/www/resources/sap/m/ViewSettingsCustomItem.js new file mode 100644 index 0000000..b83ff2a --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ViewSettingsCustomItem.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./ViewSettingsItem','./library'],function(q,V,l){"use strict";var a=V.extend("sap.m.ViewSettingsCustomItem",{metadata:{library:"sap.m",properties:{filterCount:{type:"int",group:"Behavior",defaultValue:0}},aggregations:{customControl:{type:"sap.ui.core.Control",multiple:false}}}});a.prototype.exit=function(){if(this._control&&!this._control.getParent()){this._control.destroy();delete this._control;}};a.prototype.setCustomControl=function(c){this._control=c;return this;};a.prototype.getCustomControl=function(){return this._control;};a.prototype.setFilterCount=function(v){this.setProperty("filterCount",v,true);return this;};a.prototype.setSelected=function(v){this.setProperty("selected",v,true);return this;};return a;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ViewSettingsDialog-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/ViewSettingsDialog-dbg.js new file mode 100644 index 0000000..7efc3ed --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ViewSettingsDialog-dbg.js @@ -0,0 +1,1754 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.m.ViewSettingsDialog. +sap.ui.define(['jquery.sap.global', './library', 'sap/ui/core/Control', 'sap/ui/core/IconPool'], + function(jQuery, library, Control, IconPool) { + "use strict"; + + + + /** + * Constructor for a new ViewSettingsDialog. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * ViewSettingsDialog provides functionality to easily select the options for sorting, grouping, and filtering data. It is a composite control, consisting of a modal popover and several internal lists. There are three different tabs (Sort, Group, Filter) in the dialog that can be activated by filling the respecive associations. If only one assication is filled, the other tabs are automatically hidden. The selected options can be used to create sorters and filters for the table. + * @extends sap.ui.core.Control + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.16 + * @alias sap.m.ViewSettingsDialog + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var ViewSettingsDialog = Control.extend("sap.m.ViewSettingsDialog", /** @lends sap.m.ViewSettingsDialog.prototype */ { metadata : { + + library : "sap.m", + properties : { + + /** + * Title of the dialog. If not set, the dialog uses the default "View" or "Sort", "Group", "Filter" respectively if there is only one active tab. + */ + title : {type : "string", group : "Behavior", defaultValue : null}, + + /** + * If set to true, the sort order is descending, otherwise ascending (default). + */ + sortDescending : {type : "boolean", group : "Behavior", defaultValue : false}, + + /** + * If set to true, the group order is descending, otherwise ascending (default). + */ + groupDescending : {type : "boolean", group : "Behavior", defaultValue : false} + }, + aggregations : { + + /** + * List of items with key and value that can be sorted over (e.g. a list of columns for a table). + */ + sortItems : {type : "sap.m.ViewSettingsItem", multiple : true, singularName : "sortItem", bindable : "bindable"}, + + /** + * List of items with key and value that can be grouped on (e.g. a list of columns for a table). + */ + groupItems : {type : "sap.m.ViewSettingsItem", multiple : true, singularName : "groupItem", bindable : "bindable"}, + + /** + * List of items with key and value that can be filtered on (e.g. a list of columns for a table). A filterItem is associated with one or more detail filters. + */ + filterItems : {type : "sap.m.ViewSettingsItem", multiple : true, singularName : "filterItem", bindable : "bindable"}, + + /** + * List of preset filter items that allow the selection of more complex or custom filters. These entries are displayed at the top of the filter tab. + */ + presetFilterItems : {type : "sap.m.ViewSettingsItem", multiple : true, singularName : "presetFilterItem", bindable : "bindable"} + }, + associations : { + + /** + * Sort item that is selected. It can be set by either passing a key or the item itself to the function "setSelectedSortItem" + */ + selectedSortItem : {type : "sap.m.ViewSettingsItem", multiple : false}, + + /** + * Group item that is selected. It can be set by either passing a key or the item itself to the function "setSelectedGrouptItem" + */ + selectedGroupItem : {type : "sap.m.ViewSettingsItem", multiple : false}, + + /** + * Preset filter item that is selected. It can be set by either passing a key or the item itself to the function "setSelectedPresetFilterItem". Note that either a preset filter OR multiple detail filters can be active at the same time. + */ + selectedPresetFilterItem : {type : "sap.m.ViewSettingsItem", multiple : false} + }, + events : { + + /** + * The event indicates that the user has pressed the OK button and the selected sort, group, and filter settings should be applied to the data on this page. + */ + confirm : { + parameters : { + + /** + * Selected sort item. + */ + sortItem : {type : "sap.m.ViewSettingsItem"}, + + /** + * Selected sort order (true = descending, false = ascending). + */ + sortDescending : {type : "boolean"}, + + /** + * Selected group item + */ + groupItem : {type : "sap.m.ViewSettingsItem"}, + + /** + * Selected group order (true = descending, false = ascending). + */ + groupDescending : {type : "boolean"}, + + /** + * Selected preset filter item. + */ + presetFilterItem : {type : "sap.m.ViewSettingsItem"}, + + /** + * Selected filters in an array of ViewSettingsItem. + */ + filterItems : {type : "sap.m.ViewSettingsItem[]"}, + + /** + * Selected filter items in an object notation format: { key: boolean }. If a custom control filter was displayed (e.g. the user clicked on the filter item), the value for its key is set to true to indicate that there has been an interaction with the control. + */ + filterKeys : {type : "object"}, + + /** + * Selected filter items in string format to display in a control's header bar in format "Filtered by: key (subkey1, subkey2, subkey3)". + */ + filterString : {type : "string"} + } + }, + + /** + * Event is called when the cancel button is pressed. It can be used to set the state of custom filter controls. + */ + cancel : {}, + + /** + * Event is called when the reset filters button is pressed. It can be used to clear the state of custom filter controls. + */ + resetFilters : {} + } + }}); + + + /* =========================================================== */ + /* begin: API methods */ + /* =========================================================== */ + + ViewSettingsDialog.prototype.init = function() { + this._rb = sap.ui.getCore().getLibraryResourceBundle("sap.m"); + this._sDialogWidth = "350px"; + this._sDialogHeight = "434px"; + this._bAppendedToUIArea = false; // this control does not have a + // renderer, so we need to take care of + // adding it to the ui tree manually + this._showSubHeader = false; + this._filterDetailList = undefined; + this._iContentPage = -1; + this._oContentItem = null; + this._oPreviousState = {}; + }; + + ViewSettingsDialog.prototype.exit = function() { + // helper variables + this._rb = null; + this._sDialogWidth = null; + this._sDialogHeight = null; + this._bAppendedToUIArea = null; + this._showSubHeader = null; + this._iContentPage = null; + this._oContentItem = null; + this._oPreviousState = null; + this._sortContent = null; + this._groupContent = null; + this._filterContent = null; + + // sap.ui.core.Popup removes its content on close()/destroy() automatically from the static UIArea, + // but only if it added it there itself. As we did that, we have to remove it also on our own + if ( this._bAppendedToUIArea ) { + var oStatic = sap.ui.getCore().getStaticAreaRef(); + oStatic = sap.ui.getCore().getUIArea(oStatic); + oStatic.removeContent(this, true); + } + + // controls that are internally managed and may or may not be assigned to an + // aggregation (have to be destroyed manually to be sure) + + // dialog + if (this._dialog) { + this._dialog.destroy(); + this._dialog = null; + } + if (this._navContainer) { + this._navContainer.destroy(); + this._navContainer = null; + } + if (this._titleLabel) { + this._titleLabel.destroy(); + this._titleLabel = null; + } + + // page1 (sort/group/filter) + if (this._page1) { + this._page1.destroy(); + this._page1 = null; + } + if (this._header) { + this._header.destroy(); + this._header = null; + } + if (this._resetButton) { + this._resetButton.destroy(); + this._resetButton = null; + } + if (this._subHeader) { + this._subHeader.destroy(); + this._subHeader = null; + } + if (this._segmentedButton) { + this._segmentedButton.destroy(); + this._segmentedButton = null; + } + if (this._sortButton) { + this._sortButton.destroy(); + this._sortButton = null; + } + if (this._groupButton) { + this._groupButton.destroy(); + this._groupButton = null; + } + if (this._filterButton) { + this._filterButton.destroy(); + this._filterButton = null; + } + if (this._sortList) { + this._sortList.destroy(); + this._sortList = null; + } + if (this._sortOrderList) { + this._sortOrderList.destroy(); + this._sortOrderList = null; + } + + if (this._groupList) { + this._groupList.destroy(); + this._groupList = null; + } + if (this._groupOrderList) { + this._groupOrderList.destroy(); + this._groupOrderList = null; + } + + if (this._presetFilterList) { + this._presetFilterList.destroy(); + this._presetFilterList = null; + } + if (this._filterList) { + this._filterList.destroy(); + this._filterList = null; + } + + // page2 (filter details) + if (this._page2) { + this._page2.destroy(); + this._page2 = null; + } + if (this._detailTitleLabel) { + this._detailTitleLabel.destroy(); + this._detailTitleLabel = null; + } + if (this._filterDetailList) { + this._filterDetailList.destroy(); + this._filterDetailList = null; + } + }; + + /* + * Invalidates the control (suppressed because we don't have a renderer) + * @overwrite @public + */ + ViewSettingsDialog.prototype.invalidate = function() { + // CSN #80686/2014: only invalidate inner dialog if call does not come from inside + if (this._dialog && (!arguments[0] || arguments[0] && arguments[0].getId() !== this.getId() + "-dialog")) { + this._dialog.invalidate(arguments); + } else { + Control.prototype.invalidate.apply(this, arguments); + } + }; + + + /** + * Forward method to the inner dialog: addStyleClass + * @public + * @override + * @returns {sap.m.ViewSettingsDialog} this pointer for chaining + */ + ViewSettingsDialog.prototype.addStyleClass = function () { + var oDialog = this._getDialog(); + + oDialog.addStyleClass.apply(oDialog, arguments); + return this; + }; + + /** + * Forward method to the inner dialog: removeStyleClass + * @public + * @override + * @returns {sap.m.ViewSettingsDialog} this pointer for chaining + */ + ViewSettingsDialog.prototype.removeStyleClass = function () { + var oDialog = this._getDialog(); + + oDialog.removeStyleClass.apply(oDialog, arguments); + return this; + }; + + /** + * Forward method to the inner dialog: toggleStyleClass + * @public + * @override + * @returns {sap.m.ViewSettingsDialog} this pointer for chaining + */ + ViewSettingsDialog.prototype.toggleStyleClass = function () { + var oDialog = this._getDialog(); + + oDialog.toggleStyleClass.apply(oDialog, arguments); + return this; + }; + + /** + * Forward method to the inner dialog: hasStyleClass + * @public + * @override + * @returns {boolean} true if the class is set, false otherwise + */ + ViewSettingsDialog.prototype.hasStyleClass = function () { + var oDialog = this._getDialog(); + + return oDialog.hasStyleClass.apply(oDialog, arguments); + }; + + /** + * Forward method to the inner dialog: getDomRef + * @public + * @override + * @return {Element} The Element's DOM Element sub DOM Element or null + */ + ViewSettingsDialog.prototype.getDomRef = function () { + // this is also called on destroy to remove the DOM element, therefore we directly check the reference instead of the internal getter + if (this._dialog) { + return this._dialog.getDomRef.apply(this._dialog, arguments); + } else { + return null; + } + }; + + /** + * Set the title of the internal dialog + * + * @overwrite + * @public + * @param {string} + * sTitle the title text for the dialog + * @return {sap.m.ViewSettingsDialog} this pointer for chaining + */ + ViewSettingsDialog.prototype.setTitle = function(sTitle) { + this._getTitleLabel().setText(sTitle); + this.setProperty("title", sTitle, true); + return this; + }; + + /** + * Adds a sort item and sets the association to reflect the selected state + * + * @overwrite + * @public + * @param {sap.m.ViewSettingsItem} + * oItem the item to be added to the aggregation + * @return {sap.m.ViewSettingsDialog} this pointer for chaining + */ + ViewSettingsDialog.prototype.addSortItem = function(oItem) { + if (oItem.getSelected()) { + this.setSelectedSortItem(oItem); + } + this.addAggregation("sortItems", oItem); + return this; + }; + + /** + * Adds a group item and sets the association to reflect the selected state + * + * @overwrite + * @public + * @param {sap.m.ViewSettingsItem} + * oItem the item to be added to the aggregation + * @return {sap.m.ViewSettingsDialog} this pointer for chaining + */ + ViewSettingsDialog.prototype.addGroupItem = function(oItem) { + if (oItem.getSelected()) { + this.setSelectedGroupItem(oItem); + } + this.addAggregation("groupItems", oItem); + return this; + }; + + /** + * Adds a preset filter item and sets the association to reflect the selected + * state + * + * @overwrite + * @public + * @param {sap.m.ViewSettingsItem} + * oItem the selected item or a string with the key + * @return {sap.m.ViewSettingsDialog} this pointer for chaining + */ + ViewSettingsDialog.prototype.addPresetFilterItem = function(oItem) { + if (oItem.getSelected()) { + this.setSelectedPresetFilterItem(oItem); + } + this.addAggregation("presetFilterItems", oItem); + return this; + }; + + /** + * Set the selected sort item (either by key or by item) + * + * @overwrite + * @public + * @param {sap.m.ViewSettingsItem} + * oItem the selected item or a string with the key + * @return {sap.m.ViewSettingsDialog} this pointer for chaining + */ + ViewSettingsDialog.prototype.setSelectedSortItem = function(oItem) { + var aItems = this.getSortItems(), i = 0; + + // convenience, also allow strings + if (typeof oItem === "string") { + // find item with this id + for (; i < aItems.length; i++) { + if (aItems[i].getKey() === oItem) { + oItem = aItems[i]; + break; + } + } + } + + // set selected = true for this item & selected = false for all others items + for (i = 0; i < aItems.length; i++) { + aItems[i].setSelected(false); + } + if (oItem) { + oItem.setSelected(true); + } + + // update the list selection + if (this._getDialog().isOpen()) { + this._updateListSelection(this._sortList, oItem); + } + this.setAssociation("selectedSortItem", oItem, true); + return this; + }; + + /** + * Set the selected group item (either by key or by item) + * + * @overwrite + * @public + * @param {sap.m.ViewSettingsItem} + * oItem the selected item or a string with the key + * @return {sap.m.ViewSettingsDialog} this pointer for chaining + */ + ViewSettingsDialog.prototype.setSelectedGroupItem = function(oItem) { + var aItems = this.getGroupItems(), i = 0; + + // convenience, also allow strings + if (typeof oItem === "string") { + // find item with this id + for (; i < aItems.length; i++) { + if (aItems[i].getKey() === oItem) { + oItem = aItems[i]; + break; + } + } + } + + // set selected = true for this item & selected = false for all others items + for (i = 0; i < aItems.length; i++) { + aItems[i].setSelected(false); + } + if (oItem) { + oItem.setSelected(true); + } + + // update the list selection + if (this._getDialog().isOpen()) { + this._updateListSelection(this._groupList, oItem); + } + this.setAssociation("selectedGroupItem", oItem, true); + return this; + }; + + /** + * Set the selected preset filter item + * + * @overwrite + * @public + * @param {sap.m.ViewSettingsItem} + * oItem the selected item or a string with the key + * @return {sap.m.ViewSettingsDialog} this pointer for chaining + */ + ViewSettingsDialog.prototype.setSelectedPresetFilterItem = function(oItem) { + var aItems = this.getPresetFilterItems(), i = 0; + + // convenience, also allow strings + if (typeof oItem === "string") { + // find item with this id + for (; i < aItems.length; i++) { + if (aItems[i].getKey() === oItem) { + oItem = aItems[i]; + break; + } + } + } + // set selected = true for this item & selected = false for all others items + for (i = 0; i < aItems.length; i++) { + aItems[i].setSelected(false); + } + if (oItem) { + oItem.setSelected(true); + // clear filters (only one mode is allowed, preset filters or filters) + this._clearSelectedFilters(); + } + this.setAssociation("selectedPresetFilterItem", oItem, true); + return this; + }; + + /** + * Opens the view settings dialog relative to the parent control + * + * @param {string} the initial page to be opened in the dialog. + * available values: "sort", "group", "filter" + * @return {sap.m.ViewSettingsDialog} this pointer for chaining + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + ViewSettingsDialog.prototype.open = function(sCurrentPage) { + // add to static UI area manually because we don't have a renderer + if (!this.getParent() && !this._bAppendedToUIArea) { + var oStatic = sap.ui.getCore().getStaticAreaRef(); + oStatic = sap.ui.getCore().getUIArea(oStatic); + oStatic.addContent(this, true); + this._bAppendedToUIArea = true; + } + + // if there is a default tab and the user has been at filter details view on page2, go back to page1 + if (sCurrentPage && this._iContentPage === 3) { + jQuery.sap.delayedCall(0, this._getNavContainer(), "to", [ + this._getPage1().getId(), "show" ]); + } + + // init the dialog content based on the aggregations + this._initDialogContent(); + + // store the current dialog state to be able to reset it on cancel + this._oPreviousState = { + sortItem : sap.ui.getCore().byId(this.getSelectedSortItem()), + sortDescending : this.getSortDescending(), + groupItem : sap.ui.getCore().byId(this.getSelectedGroupItem()), + groupDescending : this.getGroupDescending(), + presetFilterItem : sap.ui.getCore().byId( + this.getSelectedPresetFilterItem()), + filterKeys : this.getSelectedFilterKeys(), + navPage : this._getNavContainer().getCurrentPage(), + contentPage : this._iContentPage, + contentItem : this._oContentItem + }; + + // set initial focus to the segmentedButton if available + this._getDialog().setInitialFocus((sap.ui.Device.system.desktop && this._showSubHeader) ? this._segmentedButton : null); + // open dialog + this._getDialog().open(); + + // switch to the user defined page if set and valid + if (sCurrentPage) { + var oSegmentedButtons = { + "sort": 0, + "group": 1, + "filter": 2 + }; + if (oSegmentedButtons.hasOwnProperty(sCurrentPage)) { + var sSelectedButton = this.getId() + "-" + sCurrentPage + "button"; + this._getSegmentedButton().setSelectedButton(sSelectedButton); + this._switchToPage(oSegmentedButtons[sCurrentPage]); + } + } + + return this; + }; + + /** + * Returns the selected filters as an array of ViewSettingsItems. + * + * It can be used to create matching sorters and filters to apply the selected settings to the data. + * @overwrite + * @public + * @return {sap.m.ViewSettingsItem[]} an array of selected filter items + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + ViewSettingsDialog.prototype.getSelectedFilterItems = function() { + var aSelectedFilterItems = [], aFilterItems = this.getFilterItems(), aSubFilterItems, bMultiSelect = true, i = 0, j; + + for (; i < aFilterItems.length; i++) { + if (aFilterItems[i] instanceof sap.m.ViewSettingsCustomItem) { + if (aFilterItems[i].getSelected()) { + aSelectedFilterItems.push(aFilterItems[i]); + } + } else if (aFilterItems[i] instanceof sap.m.ViewSettingsFilterItem) { + aSubFilterItems = aFilterItems[i].getItems(); + bMultiSelect = aFilterItems[i].getMultiSelect(); + for (j = 0; j < aSubFilterItems.length; j++) { + if (aSubFilterItems[j].getSelected()) { + aSelectedFilterItems.push(aSubFilterItems[j]); + if (!bMultiSelect) { + break; // only first item is added to the selection on + // single select items + } + } + } + } + } + + return aSelectedFilterItems; + }; + + /** + * Get the filter string in the format "filter name (subfilter1 name, subfilter2 + * name, ...), ..." For custom filters and preset filters it will only add the + * filter name to the resulting string + * + * @public + * @return {string} the selected filter string + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + ViewSettingsDialog.prototype.getSelectedFilterString = function() { + var sFilterString = "", sSubfilterString, oPresetFilterItem = this + .getSelectedPresetFilterItem(), aFilterItems = this + .getFilterItems(), aSubFilterItems, bMultiSelect = true, i = 0, j; + + if (oPresetFilterItem) { + // preset filter: add "filter name" + sFilterString = this._rb.getText("VIEWSETTINGS_FILTERTEXT").concat( + " " + sap.ui.getCore().byId(oPresetFilterItem).getText()); + } else { // standard & custom filters + for (; i < aFilterItems.length; i++) { + if (aFilterItems[i] instanceof sap.m.ViewSettingsCustomItem) { + // custom filter: add "filter name," + if (aFilterItems[i].getSelected()) { + sFilterString += aFilterItems[i].getText() + ", "; + } + } else if (aFilterItems[i] instanceof sap.m.ViewSettingsFilterItem) { + // standard filter: add "filter name (sub filter 1 name, sub + // filter 2 name, ...), " + aSubFilterItems = aFilterItems[i].getItems(); + bMultiSelect = aFilterItems[i].getMultiSelect(); + sSubfilterString = ""; + for (j = 0; j < aSubFilterItems.length; j++) { + if (aSubFilterItems[j].getSelected()) { + sSubfilterString += aSubFilterItems[j].getText() + ", "; + if (!bMultiSelect) { + break; // only first item is added to the selection + // on single select items + } + } + } + // remove last comma + sSubfilterString = sSubfilterString.substring(0, + sSubfilterString.length - 2); + + // add surrounding brackets and comma + if (sSubfilterString) { + sSubfilterString = " (" + sSubfilterString + ")"; + sFilterString += aFilterItems[i].getText() + + sSubfilterString + ", "; + } + } + } + + // remove last comma + sFilterString = sFilterString.substring(0, sFilterString.length - 2); + + // add "Filtered by: " text + if (sFilterString) { + sFilterString = this._rb.getText("VIEWSETTINGS_FILTERTEXT").concat( + " " + sFilterString); + } + } + return sFilterString; + }; + + /** + * Get the selected filter object in format {key: boolean}. + * + * It can be used to create matching sorters and filters to apply the selected settings to the data. + * + * @public + * @return {object} an object with item and subitem keys + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + ViewSettingsDialog.prototype.getSelectedFilterKeys = function() { + var oSelectedFilterKeys = {}, aSelectedFilterItems = this + .getSelectedFilterItems(), i = 0; + + for (; i < aSelectedFilterItems.length; i++) { + oSelectedFilterKeys[aSelectedFilterItems[i].getKey()] = aSelectedFilterItems[i] + .getSelected(); + } + + return oSelectedFilterKeys; + }; + + /** + * Set the selected filter object in format {key: boolean} + * + * @public + * @param {object} oSelectedFilterKeys + * A configuration object with filter item and sub item keys in the format: { key: boolean }. + * Setting boolean to true will set the filter to true, false or omitting an entry will set the filter to false. + * It can be used to set the dialog state based on presets. + * @return {sap.m.ViewSettingsDialog} this pointer for chaining + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + ViewSettingsDialog.prototype.setSelectedFilterKeys = function( + oSelectedFilterKeys) { + var sKey = "", aFilterItems = this.getFilterItems(), aSubFilterItems = {}, oFilterItem, bMultiSelect, i, j, k; + + // clear preset filters (only one mode is allowed, preset filters or + // filters) + if (Object.keys(oSelectedFilterKeys).length) { + this._clearPresetFilter(); + } + + // loop through the provided object array {key -> subKey -> boolean} + for (sKey in oSelectedFilterKeys) { // filter key + oFilterItem = null; + if (oSelectedFilterKeys.hasOwnProperty(sKey)) { + for (i = 0; i < aFilterItems.length; i++) { + if (aFilterItems[i] instanceof sap.m.ViewSettingsCustomItem) { + // just compare the key of this control + if (aFilterItems[i].getKey() === sKey) { + oFilterItem = aFilterItems[i]; + aFilterItems[i].setSelected(oSelectedFilterKeys[sKey]); + } + } else if (aFilterItems[i] instanceof sap.m.ViewSettingsFilterItem) { + // find the sub filter item with the specified key + aSubFilterItems = aFilterItems[i].getItems(); + bMultiSelect = aFilterItems[i].getMultiSelect(); + for (j = 0; j < aSubFilterItems.length; j++) { + if (aSubFilterItems[j].getKey() === sKey) { + oFilterItem = aSubFilterItems[j]; + // set all other entries to false for single select + // entries + if (!bMultiSelect) { + for (k = 0; k < aSubFilterItems.length; k++) { + aSubFilterItems[k].setSelected(false); + } + } + break; + } + } + } + if (oFilterItem) { + break; + } + } + + // skip if we don't have an item with this key + if (oFilterItem === null) { + jQuery.sap.log.warning('Cannot set state for key "' + sKey + + '" because there is no filter with these keys'); + continue; + } + + // set the the selected state on the item + oFilterItem.setSelected(oSelectedFilterKeys[sKey]); + } + } + + return this; + }; + + /* =========================================================== */ + /* end: API methods */ + /* =========================================================== */ + + /* =========================================================== */ + /* begin: internal methods and properties */ + /* =========================================================== */ + + /* + * Lazy initialization of the internal dialog @private + */ + ViewSettingsDialog.prototype._getDialog = function() { + var that = this; + + // create an internal instance of a dialog + if (this._dialog === undefined) { + this._dialog = new sap.m.Dialog(this.getId() + "-dialog", { + showHeader : false, + stretch : sap.ui.Device.system.phone, + verticalScrolling : true, + horizontalScrolling : false, + contentWidth : this._sDialogWidth, + contentHeight : this._sDialogHeight, + content : this._getNavContainer(), + beginButton : new sap.m.Button({ + text : this._rb.getText("VIEWSETTINGS_ACCEPT") + }).attachPress(this._onConfirm, this), + endButton : new sap.m.Button({ + text : this._rb.getText("VIEWSETTINGS_CANCEL") + }).attachPress(this._onCancel, this) + }).addStyleClass("sapMVSD"); + + // CSN# 3696452/2013: ESC key should also cancel dialog, not only close + // it + var fnDialogEscape = this._dialog.onsapescape; + this._dialog.onsapescape = function(oEvent) { + // call original escape function of the dialog + if (fnDialogEscape) { + fnDialogEscape.call(that._dialog, oEvent); + } + // execute cancel action + that._onCancel(); + }; + + // [SHIFT]+[ENTER] triggers the “Back” button of the dialog + this._dialog.onsapentermodifiers = function (oEvent) { + + if (oEvent.shiftKey && !oEvent.ctrlKey && !oEvent.altKey ) { + that._pressBackButton(); + } + }; + } + + return this._dialog; + }; + + /* + * Lazy initialization of the internal nav container @private + */ + ViewSettingsDialog.prototype._getNavContainer = function() { + // create an internal instance of a dialog + if (this._navContainer === undefined) { + this._navContainer = new sap.m.NavContainer(this.getId() + + '-navcontainer', { + pages : [] + }); + } + return this._navContainer; + }; + + /* + * Lazy initialization of the internal title label @private + */ + ViewSettingsDialog.prototype._getTitleLabel = function() { + if (this._titleLabel === undefined) { + this._titleLabel = new sap.m.Label(this.getId() + "-title", { + text : this._rb.getText("VIEWSETTINGS_TITLE") + }).addStyleClass("sapMVSDTitle"); + } + return this._titleLabel; + }; + + /* + * Lazy initialization of the internal reset button @private + */ + ViewSettingsDialog.prototype._getResetButton = function() { + var that = this; + + if (this._resetButton === undefined) { + this._resetButton = new sap.m.Button(this.getId() + "-resetbutton", { + icon : IconPool.getIconURI("refresh"), + press : function() { + that._onClearFilters(); + }, + tooltip : this._rb.getText("VIEWSETTINGS_CLEAR_FILTER_TOOLTIP") + }); + } + return this._resetButton; + }; + + /* + * Lazy initialization of the internal detail title lable @private + */ + ViewSettingsDialog.prototype._getDetailTitleLabel = function() { + if (this._detailTitleLabel === undefined) { + this._detailTitleLabel = new sap.m.Label(this.getId() + "-detailtitle", + { + text : this._rb.getText("VIEWSETTINGS_TITLE_FILTERBY") + }).addStyleClass("sapMVSDTitle"); + } + return this._detailTitleLabel; + }; + + /* + * Lazy initialization of the internal header @private + */ + ViewSettingsDialog.prototype._getHeader = function() { + if (this._header === undefined) { + this._header = new sap.m.Bar({ + contentMiddle : [ this._getTitleLabel() ] + }).addStyleClass("sapMVSDBar"); + } + return this._header; + }; + + /* + * Lazy initialization of the internal sub header @private + */ + ViewSettingsDialog.prototype._getSubHeader = function() { + if (this._subHeader === undefined) { + this._subHeader = new sap.m.Bar({ + contentLeft : [ this._getSegmentedButton() ] + }).addStyleClass("sapMVSDBar"); + } + return this._subHeader; + }; + + /* + * Lazy initialization of the internal segmented button @private + */ + ViewSettingsDialog.prototype._getSegmentedButton = function() { + var that = this; + + if (this._segmentedButton === undefined) { + this._segmentedButton = new sap.m.SegmentedButton({ + select : function(oEvent) { + var selectedId = oEvent.getParameter('id'); + if (selectedId === that.getId() + "-sortbutton") { + that._switchToPage(0); + } else if (selectedId === that.getId() + "-groupbutton") { + that._switchToPage(1); + } else if (selectedId === that.getId() + "-filterbutton") { + that._switchToPage(2); + } + jQuery.sap.log.info('press event segmented: ' + + oEvent.getParameter('id')); + } + }).addStyleClass("sapMVSDSeg"); + + // workaround to fix flickering caused by css measurement in + // SegmentedButton + this._segmentedButton._fCalcBtnWidth = function() { + // do nothing here + }; + } + return this._segmentedButton; + }; + + /* + * Lazy initialization of the internal sort button @private + */ + ViewSettingsDialog.prototype._getSortButton = function() { + if (this._sortButton === undefined) { + this._sortButton = new sap.m.Button(this.getId() + "-sortbutton", { + visible : false, // controlled by update state method + icon : IconPool.getIconURI("sort"), + tooltip : this._rb.getText("VIEWSETTINGS_TITLE_SORT") + }); + } + return this._sortButton; + }; + + /* + * Lazy initialization of the internal group button @private + */ + ViewSettingsDialog.prototype._getGroupButton = function() { + if (this._groupButton === undefined) { + this._groupButton = new sap.m.Button(this.getId() + "-groupbutton", { + visible : false, // controlled by update state method + icon : IconPool.getIconURI("group-2"), + tooltip : this._rb.getText("VIEWSETTINGS_TITLE_GROUP") + }); + } + return this._groupButton; + }; + + /* + * Lazy initialization of the internal filter button @private + */ + ViewSettingsDialog.prototype._getFilterButton = function() { + if (this._filterButton === undefined) { + this._filterButton = new sap.m.Button(this.getId() + "-filterbutton", { + visible : false, // controlled by update state method + icon : IconPool.getIconURI("filter"), + tooltip : this._rb.getText("VIEWSETTINGS_TITLE_FILTER") + }); + } + return this._filterButton; + }; + + /* + * Lazy initialization of the internal page1 (sort/group/filter) @private + */ + ViewSettingsDialog.prototype._getPage1 = function() { + if (this._page1 === undefined) { + this._page1 = new sap.m.Page(this.getId() + '-page1', { + title : this._rb.getText("VIEWSETTINGS_TITLE"), + customHeader : this._getHeader() + }); + this._getNavContainer().addPage(this._page1); // sort, group, filter + } + return this._page1; + }; + + /* + * Lazy initialization of the internal page2 (detail filters) @private + */ + ViewSettingsDialog.prototype._getPage2 = function() { + var that = this, oDetailHeader, oBackButton, oDetailResetButton; + + if (this._page2 === undefined) { + // init internal page content + oBackButton = new sap.m.Button(this.getId() + "-backbutton", { + icon : IconPool.getIconURI("nav-back"), + press : [this._pressBackButton, this] + }); + oDetailResetButton = new sap.m.Button(this.getId() + + "-detailresetbutton", { + icon : IconPool.getIconURI("refresh"), + press : function() { + that._onClearFilters(); + }, + tooltip : this._rb.getText("VIEWSETTINGS_CLEAR_FILTER_TOOLTIP") + }); + oDetailHeader = new sap.m.Bar({ + contentLeft : [ oBackButton ], + contentMiddle : [ this._getDetailTitleLabel() ], + contentRight : [ oDetailResetButton ] + }).addStyleClass("sapMVSDBar"); + + this._page2 = new sap.m.Page(this.getId() + '-page2', { + title : this._rb.getText("VIEWSETTINGS_TITLE_FILTERBY"), + customHeader : oDetailHeader + }); + this._getNavContainer().addPage(this._page2); // filter details + } + return this._page2; + }; + + /* + * Create and initialize the sort content controls @private + */ + ViewSettingsDialog.prototype._initSortContent = function() { + var that = this; + + if (this._sortContent) { + return; + } + this._iContentPage = -1; + + this._sortOrderList = new sap.m.List(this.getId() + "-sortorderlist", { + mode : sap.m.ListMode.SingleSelectLeft, + includeItemInSelection : true, + selectionChange : function(oEvent) { + that + .setSortDescending(oEvent.getParameter("listItem").data( + "item")); + } + }).addStyleClass("sapMVSDUpperList"); + this._sortOrderList.addItem(new sap.m.StandardListItem({ + title : this._rb.getText("VIEWSETTINGS_ASCENDING_ITEM") + }).data("item", false).setSelected(true)); + this._sortOrderList.addItem(new sap.m.StandardListItem({ + title : this._rb.getText("VIEWSETTINGS_DESCENDING_ITEM") + }).data("item", true)); + + this._sortList = new sap.m.List(this.getId() + "-sortlist", + { + mode : sap.m.ListMode.SingleSelectLeft, + includeItemInSelection : true, + selectionChange : function(oEvent) { + var item = oEvent.getParameter("listItem").data("item"); + if (item) { + item.setSelected(oEvent.getParameter("listItem") + .getSelected()); + } + that.setAssociation("selectedSortItem", item, true); + } + }); + + this._sortContent = [ this._sortOrderList, this._sortList ]; + }; + + /* + * Create and initialize the group content controls @private + */ + ViewSettingsDialog.prototype._initGroupContent = function() { + var that = this; + + if (this._groupContent) { + return; + } + this._iContentPage = -1; + + this._groupOrderList = new sap.m.List(this.getId() + "-grouporderlist", { + mode : sap.m.ListMode.SingleSelectLeft, + includeItemInSelection : true, + selectionChange : function(oEvent) { + that.setGroupDescending(oEvent.getParameter("listItem") + .data("item")); + } + }).addStyleClass("sapMVSDUpperList"); + this._groupOrderList.addItem(new sap.m.StandardListItem({ + title : this._rb.getText("VIEWSETTINGS_ASCENDING_ITEM") + }).data("item", false).setSelected(true)); + this._groupOrderList.addItem(new sap.m.StandardListItem({ + title : this._rb.getText("VIEWSETTINGS_DESCENDING_ITEM") + }).data("item", true)); + + this._groupList = new sap.m.List(this.getId() + "-grouplist", + { + mode : sap.m.ListMode.SingleSelectLeft, + includeItemInSelection : true, + selectionChange : function(oEvent) { + var item = oEvent.getParameter("listItem").data("item"); + if (item) { + item.setSelected(oEvent.getParameter("listItem") + .getSelected()); + } + that.setAssociation("selectedGroupItem", item, true); + } + }); + + this._groupContent = [ this._groupOrderList, this._groupList ]; + }; + + /* + * Create and initialize the filter content controls @private + */ + ViewSettingsDialog.prototype._initFilterContent = function() { + var that = this; + + if (this._filterContent) { + return; + } + this._iContentPage = -1; + + this._presetFilterList = new sap.m.List( + this.getId() + "-predefinedfilterlist", + { + mode : sap.m.ListMode.SingleSelectLeft, + includeItemInSelection : true, + selectionChange : function(oEvent) { + var item = oEvent.getParameter("listItem").data("item"); + if (item) { + item.setSelected(oEvent.getParameter("listItem") + .getSelected()); + } + that.setAssociation("selectedPresetFilterItem", item, true); + that._clearSelectedFilters(); + } + }).addStyleClass("sapMVSDUpperList"); + + this._filterList = new sap.m.List(this.getId() + "-filterlist", {}); + + this._filterContent = [ this._presetFilterList, this._filterList ]; + }; + + /* + * Fill the dialog with the aggregation data @private + */ + ViewSettingsDialog.prototype._initDialogContent = function() { + var bSort = !!this.getSortItems().length, bGroup = !!this.getGroupItems().length, bPredefinedFilter = !!this + .getPresetFilterItems().length, bFilter = !!this.getFilterItems().length, that = this, oListItem, aSortItems = [], aGroupItems = [], aPresetFilterItems = [], aFilterItems = []; + + + // sort + if (bSort) { + this._initSortContent(); + this._sortList.removeAllItems(); + aSortItems = this.getSortItems(); + if (aSortItems.length) { + aSortItems.forEach(function(oItem) { + oListItem = new sap.m.StandardListItem({ + title : oItem.getText(), + type : sap.m.ListType.Active, + selected : oItem.getSelected() + }).data("item", oItem); + this._sortList.addItem(oListItem); + }, this); + } + } + + // group + if (bGroup) { + this._initGroupContent(); + this._groupList.removeAllItems(); + aGroupItems = this.getGroupItems(); + if (aGroupItems.length) { + aGroupItems.forEach(function(oItem) { + oListItem = new sap.m.StandardListItem({ + title : oItem.getText(), + type : sap.m.ListType.Active, + selected : oItem.getSelected() + }).data("item", oItem); + this._groupList.addItem(oListItem); + }, this); + } + // add none item to group list + if (aGroupItems.length) { + oListItem = new sap.m.StandardListItem({ + title : this._rb.getText("VIEWSETTINGS_NONE_ITEM"), + type : sap.m.ListType.Active, + selected : !!this.getSelectedGroupItem() + }); + this._groupList.addItem(oListItem); + } + } + + // predefined filters + if (bPredefinedFilter || bFilter) { + this._initFilterContent(); + this._presetFilterList.removeAllItems(); + aPresetFilterItems = this.getPresetFilterItems(); + if (aPresetFilterItems.length) { + aPresetFilterItems.forEach(function(oItem) { + oListItem = new sap.m.StandardListItem({ + title : oItem.getText(), + type : sap.m.ListType.Active, + selected : oItem.getSelected() + }).data("item", oItem); + this._presetFilterList.addItem(oListItem); + }, this); + } + // add none item to preset filter list + if (aPresetFilterItems.length) { + oListItem = new sap.m.StandardListItem({ + title : this._rb.getText("VIEWSETTINGS_NONE_ITEM"), + selected : !!this.getSelectedPresetFilterItem() + }); + this._presetFilterList.addItem(oListItem); + } + + // filters + this._filterList.removeAllItems(); + aFilterItems = this.getFilterItems(); + if (aFilterItems.length) { + aFilterItems.forEach(function(oItem) { + oListItem = new sap.m.StandardListItem( + { + title : oItem.getText(), + type : sap.m.ListType.Active, + press : (function(oItem) { + return function(oEvent) { + // navigate to details page + if (that._navContainer.getCurrentPage() + .getId() !== that.getId() + + '-page2') { + that._switchToPage(3, oItem); + that._prevSelectedFilterItem = this; + jQuery.sap.delayedCall(0, + that._navContainer, "to", + [ that.getId() + '-page2', + "slide" ]); + } + if (sap.ui.Device.system.desktop && that._filterDetailList && that._filterDetailList.getItems()[0]) { + that._getNavContainer().attachEventOnce("afterNavigate", function(){ + that._filterDetailList.getItems()[0].focus(); + }); + } + }; + }(oItem)) + }).data("item", oItem); + this._filterList.addItem(oListItem); + }, this); + } + } + + // hide elements that are not visible and set the active content + this._updateDialogState(); + + // select the items that are reflected in the control's properties + this._updateListSelections(); + }; + + /* + * Sets the state of the dialog when it is opened If only Sort or Group or + * Filter items are defined, then only one tab is displayed If multiple items + * are defined, a segmented button is displayed and the first page is set + * @private + */ + ViewSettingsDialog.prototype._updateDialogState = function() { + var bSort = !!this.getSortItems().length, bGroup = !!this.getGroupItems().length, bPredefinedFilter = !!this + .getPresetFilterItems().length, bFilter = !!this.getFilterItems().length, bNothing = !bSort + && !bGroup && !bPredefinedFilter && !bFilter, bInvalidState = false, iActivePages = 0, oSegmentedButton = this + ._getSegmentedButton(); + + // reset state + oSegmentedButton.removeAllButtons(); + if (this._filterContent) { + this._presetFilterList.setVisible(true); + this._filterList.setVisible(true); + } + + // set invalid state if the previous tab is not valid anymore or has never + // been selected + if (this._iContentPage === -1 || this._iContentPage === 0 && !bSort + || this._iContentPage === 1 && !bGroup || this._iContentPage === 2 + && !(bPredefinedFilter || bFilter)) { + bInvalidState = true; + } + + // count active dialog pages and update segmentedButton + if (bSort) { + oSegmentedButton.addButton(this._getSortButton()); + if (this._iContentPage === 0) { + oSegmentedButton.setSelectedButton(this._getSortButton()); + } + iActivePages++; + } + if (bPredefinedFilter || bFilter) { + oSegmentedButton.addButton(this._getFilterButton()); + if (this._iContentPage === 2) { + oSegmentedButton.setSelectedButton(this._getFilterButton()); + } + if (!bPredefinedFilter) { + this._presetFilterList.setVisible(false); + this._presetFilterList.addStyleClass("sapMVSDUpperList"); + } + if (!bFilter) { + this._filterList.setVisible(false); + this._presetFilterList.removeStyleClass("sapMVSDUpperList"); + } + iActivePages++; + } + if (bGroup) { + oSegmentedButton.addButton(this._getGroupButton()); + if (this._iContentPage === 1) { + oSegmentedButton.setSelectedButton(this._getGroupButton()); + } + iActivePages++; + } + + // show header only when there are multiple tabs active + this._showSubHeader = (iActivePages > 1 ? true : false); + + if (bInvalidState) { + if (bSort || bNothing) { // default = sort + this._switchToPage(0); + } else if (bPredefinedFilter || bFilter) { // filter + this._switchToPage(2); + } else if (bGroup) { // group + this._switchToPage(1); + } + } + + // CSN# 3802530/2013: if filters were modified by API we need to refresh the + // filter detail page + if (this._iContentPage === 3) { + this._iContentPage = -1; + this._switchToPage(3, this._oContentItem); + } + }; + + sap.m.ViewSettingsDialog.prototype._pressBackButton = function() { + var that = this; + + if (this._iContentPage === 3) { + this._updateFilterCounters(); + jQuery.sap.delayedCall(0, this._navContainer, "back"); + this._switchToPage(2); + this._segmentedButton.setSelectedButton(this._filterButton); + this._navContainer.attachEventOnce("afterNavigate", function(){ + if (that._prevSelectedFilterItem) { + that._prevSelectedFilterItem.focus(); + } + }); + } + }; + + /* + * Switches to a dialog page (0 = sort, 1 = group, 2 = filter, 3 = subfilter) + * @param {int} iWhich the page to be navigated to @param {sap.m.FilterItem} + * oItem The filter item for the detail page (optional, only used for page 3) + * @private + */ + ViewSettingsDialog.prototype._switchToPage = function(iWhich, oItem) { + var i = 0, that = this, aSubFilters = [], oTitleLabel = this + ._getTitleLabel(), oResetButton = this._getResetButton(), oHeader = this + ._getHeader(), oSubHeader = this._getSubHeader(), oListItem; + + // nothing to do if we are already on the requested page (except for filter + // detail page) + if (this._iContentPage === iWhich && iWhich !== 3) { + return false; + } + + // reset controls + oHeader.removeAllContentRight(); + oSubHeader.removeAllContentRight(); + this._iContentPage = iWhich; + this._oContentItem = oItem; + + // purge the current content & reset pages + if (iWhich >= 0 && iWhich < 3) { + this._getPage1().removeAllAggregation("content", true); + // set subheader when there are multiple tabs active + if (this._showSubHeader) { + if (!this._getPage1().getSubHeader()) { + this._getPage1().setSubHeader(oSubHeader); + } + // show reset button in subheader + oSubHeader.addContentRight(oResetButton); + } else { + if (this._getPage1().getSubHeader()) { + this._getPage1().setSubHeader(); + } + // show reset button in header + oHeader.addContentRight(oResetButton); + } + } else if (iWhich === 3) { + this._getPage2().removeAllAggregation("content", true); + } + + if (this.getTitle()) { // custom title + oTitleLabel.setText(this.getTitle()); + } else { // default title + oTitleLabel.setText(this._rb.getText("VIEWSETTINGS_TITLE")); + } + + switch (iWhich) { + case 1: // grouping + oResetButton.setVisible(false); + if (!this._showSubHeader && !this.getTitle()) { + oTitleLabel.setText(this._rb.getText("VIEWSETTINGS_TITLE_GROUP")); + } + for (; i < this._groupContent.length; i++) { + this._getPage1().addContent(this._groupContent[i]); + } + break; + case 2: // filtering + // only show reset button when there are detail filters available + oResetButton.setVisible(!!this.getFilterItems().length); + if (!this._showSubHeader && !this.getTitle()) { + oTitleLabel.setText(this._rb.getText("VIEWSETTINGS_TITLE_FILTER")); + } + // update status (something could have been changed on a detail filter + // page or by API + this._updateListSelection(this._presetFilterList, sap.ui.getCore() + .byId(this.getSelectedPresetFilterItem())); + this._updateFilterCounters(); + for (; i < this._filterContent.length; i++) { + this._getPage1().addContent(this._filterContent[i]); + } + break; + case 3: // filtering details + // display filter title + this._getDetailTitleLabel().setText( + this._rb.getText("VIEWSETTINGS_TITLE_FILTERBY") + " " + + oItem.getText()); + // fill detail page + if (oItem instanceof sap.m.ViewSettingsCustomItem + && oItem.getCustomControl()) { + this._clearPresetFilter(); + this._getPage2().addContent(oItem.getCustomControl()); + } else if (oItem instanceof sap.m.ViewSettingsFilterItem + && oItem.getItems()) { + aSubFilters = oItem.getItems(); + if (this._filterDetailList) { // destroy previous list + this._filterDetailList.destroy(); + } + this._filterDetailList = new sap.m.List( + { + mode : (oItem.getMultiSelect() ? sap.m.ListMode.MultiSelect + : sap.m.ListMode.SingleSelectLeft), + includeItemInSelection : true, + selectionChange : function(oEvent) { + var oSubItem, + aEventListItems = oEvent.getParameter("listItems"), + aSubItems, + i = 0; + + that._clearPresetFilter(); + // check if multiple items are selected - [CTRL] + [A] combination from the list + if (aEventListItems.length > 1 && oItem.getMultiSelect()){ + aSubItems = oItem.getItems(); + for (; i < aSubItems.length; i++) { + for (var j = 0; j < aEventListItems.length; j++){ + if (aSubItems[i].getKey() === aEventListItems[j].getCustomData()[0].getValue().getKey()){ + aSubItems[i].setSelected(aEventListItems[j].getSelected()); + } + } + } + } else { + oSubItem = oEvent.getParameter("listItem").data("item"); + // clear selection of all subitems if this is a + // single select item + if (!oItem.getMultiSelect()) { + aSubItems = oItem.getItems(); + for (; i < aSubItems.length; i++) { + aSubItems[i].setSelected(false); + } + } + oSubItem.setSelected(oEvent.getParameter("listItem").getSelected()); + } + } + }); + for (i = 0; i < aSubFilters.length; i++) { + // use name if there is no key defined + oListItem = new sap.m.StandardListItem({ + title : aSubFilters[i].getText(), + type : sap.m.ListType.Active, + selected : aSubFilters[i].getSelected() + }).data("item", aSubFilters[i]); + this._filterDetailList.addItem(oListItem); + } + this._getPage2().addContent(this._filterDetailList); + } + break; + case 0: // sorting + default: + oResetButton.setVisible(false); + if (!this._getPage1().getSubHeader() && !this.getTitle()) { + oTitleLabel.setText(this._rb.getText("VIEWSETTINGS_TITLE_SORT")); + } + if (this._sortContent) { + for (; i < this._sortContent.length; i++) { + this._getPage1().addContent(this._sortContent[i]); + } + } + break; + } + }; + + /* + * Updates the internal lists based on the dialogs state @private + */ + ViewSettingsDialog.prototype._updateListSelections = function() { + this._updateListSelection(this._sortList, sap.ui.getCore().byId( + this.getSelectedSortItem())); + this._updateListSelection(this._sortOrderList, this.getSortDescending()); + this._updateListSelection(this._groupList, sap.ui.getCore().byId( + this.getSelectedGroupItem())); + this._updateListSelection(this._groupOrderList, this.getGroupDescending()); + this._updateListSelection(this._presetFilterList, sap.ui.getCore().byId( + this.getSelectedPresetFilterItem())); + this._updateFilterCounters(); + }; + + /* + * Sets selected item on single selection lists based on the "item" data + * @private + */ + ViewSettingsDialog.prototype._updateListSelection = function(oList, oItem) { + var items, i = 0; + + if (!oList) { + return false; + } + + items = oList.getItems(); + + oList.removeSelections(); + for (; i < items.length; i++) { + if (items[i].data("item") === oItem || items[i].data("item") === null) { // null + // is + // "None" + // item + oList.setSelectedItem(items[i], (oItem && oItem.getSelected ? oItem + .getSelected() : true)); // true or the selected state if + // it is a ViewSettingsItem + return true; + } + } + return false; + }; + + /* + * Updates the amount of selected filters in the filter list @private + */ + ViewSettingsDialog.prototype._updateFilterCounters = function() { + var aListItems = (this._filterList ? this._filterList.getItems() : []), oItem, aSubItems, iFilterCount = 0, i = 0, j; + + for (; i < aListItems.length; i++) { + oItem = aListItems[i].data("item"); + iFilterCount = 0; + if (oItem) { + if (oItem instanceof sap.m.ViewSettingsCustomItem) { + // for custom filter oItems the oItem is directly selected + iFilterCount = oItem.getFilterCount(); + } else if (oItem instanceof sap.m.ViewSettingsFilterItem) { + // for filter oItems the oItem counter has to be calculated from + // the sub oItems + iFilterCount = 0; + aSubItems = oItem.getItems(); + + for (j = 0; j < aSubItems.length; j++) { + if (aSubItems[j].getSelected()) { + iFilterCount++; + } + } + } + } + aListItems[i].setCounter(iFilterCount); + } + }; + + ViewSettingsDialog.prototype._clearSelectedFilters = function() { + var items = this.getFilterItems(), subItems, i = 0, j; + + // reset all items to selected = false + for (; i < items.length; i++) { + if (items[i] instanceof sap.m.ViewSettingsFilterItem) { + subItems = items[i].getItems(); + for (j = 0; j < subItems.length; j++) { + subItems[j].setSelected(false); + } + } + items[i].setSelected(false); + } + + // update counters if visible + if (this._iContentPage === 2 && this._getDialog().isOpen()) { + this._updateFilterCounters(); + } + }; + + /* + * Clears preset filter item @private + */ + ViewSettingsDialog.prototype._clearPresetFilter = function() { + if (this.getSelectedPresetFilterItem()) { + this.setSelectedPresetFilterItem(null); + } + }; + + /* =========================================================== */ + /* end: internal methods */ + /* =========================================================== */ + + /* =========================================================== */ + /* begin: event handlers */ + /* =========================================================== */ + + /* + * Internal event handler for the confirm button @private + */ + ViewSettingsDialog.prototype._onConfirm = function(oEvent) { + var that = this, oDialog = this._getDialog(), fnAfterClose = function() { + // detach this function + that._dialog.detachAfterClose(fnAfterClose); + + // fire confirm event + that.fireConfirm({ + sortItem : sap.ui.getCore().byId(that.getSelectedSortItem()), + sortDescending : that.getSortDescending(), + groupItem : sap.ui.getCore().byId(that.getSelectedGroupItem()), + groupDescending : that.getGroupDescending(), + presetFilterItem : sap.ui.getCore().byId( + that.getSelectedPresetFilterItem()), + filterItems : that.getSelectedFilterItems(), + filterKeys : that.getSelectedFilterKeys(), + filterString : that.getSelectedFilterString() + }); + }; + + // attach the reset function to afterClose to hide the dialog changes from + // the end user + oDialog.attachAfterClose(fnAfterClose); + oDialog.close(); + }; + + /* + * Internal event handler for the cancel button @private + */ + ViewSettingsDialog.prototype._onCancel = function(oEvent) { + var that = this, oDialog = this._getDialog(), fnAfterClose = function() { + // reset the dialog to the previous state + that.setSelectedSortItem(that._oPreviousState.sortItem); + that.setSortDescending(that._oPreviousState.sortDescending); + that.setSelectedGroupItem(that._oPreviousState.groupItem); + that.setGroupDescending(that._oPreviousState.groupDescending); + that.setSelectedPresetFilterItem(that._oPreviousState.presetFilterItem); + + // selected filters need to be cleared before + that._clearSelectedFilters(); + that.setSelectedFilterKeys(that._oPreviousState.filterKeys); + + // navigate to old page if necessary + if (that._navContainer.getCurrentPage() !== that._oPreviousState.navPage) { + jQuery.sap.delayedCall(0, that._navContainer, "to", [ + that._oPreviousState.navPage.getId(), "show" ]); + } + + // navigate to old tab if necessary + that._switchToPage(that._oPreviousState.contentPage, + that._oPreviousState.contentItem); + + // detach this function + that._dialog.detachAfterClose(fnAfterClose); + + // fire cancel event + that.fireCancel(); + }; + + // attach the reset function to afterClose to hide the dialog changes from + // the end user + oDialog.attachAfterClose(fnAfterClose); + oDialog.close(); + }; + + /* + * Internal event handler for the reset filter button @private + */ + ViewSettingsDialog.prototype._onClearFilters = function() { + // clear data and update selections + this._clearSelectedFilters(); + this._clearPresetFilter(); + + // fire event to allow custom controls to react and reset + this.fireResetFilters(); + + // update counters + this._updateFilterCounters(); + + // page updates + if (this._iContentPage === 3) { // go to filter overview page if necessary + jQuery.sap.delayedCall(0, this._getNavContainer(), "back"); + this._switchToPage(2); + this._getSegmentedButton().setSelectedButton(this._getFilterButton()); + } + // update preset list selection + this._updateListSelection(this._presetFilterList, sap.ui.getCore().byId( + this.getSelectedPresetFilterItem())); + }; + + /* =========================================================== */ + /* end: event handlers */ + /* =========================================================== */ + + + return ViewSettingsDialog; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ViewSettingsDialog.js b/DVHMA-OpenUI5/www/resources/sap/m/ViewSettingsDialog.js new file mode 100644 index 0000000..f53c8c8 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ViewSettingsDialog.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./library','sap/ui/core/Control','sap/ui/core/IconPool'],function(q,l,C,I){"use strict";var V=C.extend("sap.m.ViewSettingsDialog",{metadata:{library:"sap.m",properties:{title:{type:"string",group:"Behavior",defaultValue:null},sortDescending:{type:"boolean",group:"Behavior",defaultValue:false},groupDescending:{type:"boolean",group:"Behavior",defaultValue:false}},aggregations:{sortItems:{type:"sap.m.ViewSettingsItem",multiple:true,singularName:"sortItem",bindable:"bindable"},groupItems:{type:"sap.m.ViewSettingsItem",multiple:true,singularName:"groupItem",bindable:"bindable"},filterItems:{type:"sap.m.ViewSettingsItem",multiple:true,singularName:"filterItem",bindable:"bindable"},presetFilterItems:{type:"sap.m.ViewSettingsItem",multiple:true,singularName:"presetFilterItem",bindable:"bindable"}},associations:{selectedSortItem:{type:"sap.m.ViewSettingsItem",multiple:false},selectedGroupItem:{type:"sap.m.ViewSettingsItem",multiple:false},selectedPresetFilterItem:{type:"sap.m.ViewSettingsItem",multiple:false}},events:{confirm:{parameters:{sortItem:{type:"sap.m.ViewSettingsItem"},sortDescending:{type:"boolean"},groupItem:{type:"sap.m.ViewSettingsItem"},groupDescending:{type:"boolean"},presetFilterItem:{type:"sap.m.ViewSettingsItem"},filterItems:{type:"sap.m.ViewSettingsItem[]"},filterKeys:{type:"object"},filterString:{type:"string"}}},cancel:{},resetFilters:{}}}});V.prototype.init=function(){this._rb=sap.ui.getCore().getLibraryResourceBundle("sap.m");this._sDialogWidth="350px";this._sDialogHeight="434px";this._bAppendedToUIArea=false;this._showSubHeader=false;this._filterDetailList=undefined;this._iContentPage=-1;this._oContentItem=null;this._oPreviousState={};};V.prototype.exit=function(){this._rb=null;this._sDialogWidth=null;this._sDialogHeight=null;this._bAppendedToUIArea=null;this._showSubHeader=null;this._iContentPage=null;this._oContentItem=null;this._oPreviousState=null;this._sortContent=null;this._groupContent=null;this._filterContent=null;if(this._bAppendedToUIArea){var s=sap.ui.getCore().getStaticAreaRef();s=sap.ui.getCore().getUIArea(s);s.removeContent(this,true);}if(this._dialog){this._dialog.destroy();this._dialog=null;}if(this._navContainer){this._navContainer.destroy();this._navContainer=null;}if(this._titleLabel){this._titleLabel.destroy();this._titleLabel=null;}if(this._page1){this._page1.destroy();this._page1=null;}if(this._header){this._header.destroy();this._header=null;}if(this._resetButton){this._resetButton.destroy();this._resetButton=null;}if(this._subHeader){this._subHeader.destroy();this._subHeader=null;}if(this._segmentedButton){this._segmentedButton.destroy();this._segmentedButton=null;}if(this._sortButton){this._sortButton.destroy();this._sortButton=null;}if(this._groupButton){this._groupButton.destroy();this._groupButton=null;}if(this._filterButton){this._filterButton.destroy();this._filterButton=null;}if(this._sortList){this._sortList.destroy();this._sortList=null;}if(this._sortOrderList){this._sortOrderList.destroy();this._sortOrderList=null;}if(this._groupList){this._groupList.destroy();this._groupList=null;}if(this._groupOrderList){this._groupOrderList.destroy();this._groupOrderList=null;}if(this._presetFilterList){this._presetFilterList.destroy();this._presetFilterList=null;}if(this._filterList){this._filterList.destroy();this._filterList=null;}if(this._page2){this._page2.destroy();this._page2=null;}if(this._detailTitleLabel){this._detailTitleLabel.destroy();this._detailTitleLabel=null;}if(this._filterDetailList){this._filterDetailList.destroy();this._filterDetailList=null;}};V.prototype.invalidate=function(){if(this._dialog&&(!arguments[0]||arguments[0]&&arguments[0].getId()!==this.getId()+"-dialog")){this._dialog.invalidate(arguments);}else{C.prototype.invalidate.apply(this,arguments);}};V.prototype.addStyleClass=function(){var d=this._getDialog();d.addStyleClass.apply(d,arguments);return this;};V.prototype.removeStyleClass=function(){var d=this._getDialog();d.removeStyleClass.apply(d,arguments);return this;};V.prototype.toggleStyleClass=function(){var d=this._getDialog();d.toggleStyleClass.apply(d,arguments);return this;};V.prototype.hasStyleClass=function(){var d=this._getDialog();return d.hasStyleClass.apply(d,arguments);};V.prototype.getDomRef=function(){if(this._dialog){return this._dialog.getDomRef.apply(this._dialog,arguments);}else{return null;}};V.prototype.setTitle=function(t){this._getTitleLabel().setText(t);this.setProperty("title",t,true);return this;};V.prototype.addSortItem=function(i){if(i.getSelected()){this.setSelectedSortItem(i);}this.addAggregation("sortItems",i);return this;};V.prototype.addGroupItem=function(i){if(i.getSelected()){this.setSelectedGroupItem(i);}this.addAggregation("groupItems",i);return this;};V.prototype.addPresetFilterItem=function(i){if(i.getSelected()){this.setSelectedPresetFilterItem(i);}this.addAggregation("presetFilterItems",i);return this;};V.prototype.setSelectedSortItem=function(o){var a=this.getSortItems(),i=0;if(typeof o==="string"){for(;i1?true:false);if(i){if(s||n){this._switchToPage(0);}else if(p||f){this._switchToPage(2);}else if(g){this._switchToPage(1);}}if(this._iContentPage===3){this._iContentPage=-1;this._switchToPage(3,this._oContentItem);}};sap.m.ViewSettingsDialog.prototype._pressBackButton=function(){var t=this;if(this._iContentPage===3){this._updateFilterCounters();q.sap.delayedCall(0,this._navContainer,"back");this._switchToPage(2);this._segmentedButton.setSelectedButton(this._filterButton);this._navContainer.attachEventOnce("afterNavigate",function(){if(t._prevSelectedFilterItem){t._prevSelectedFilterItem.focus();}});}};V.prototype._switchToPage=function(w,o){var i=0,t=this,s=[],T=this._getTitleLabel(),r=this._getResetButton(),h=this._getHeader(),S=this._getSubHeader(),L;if(this._iContentPage===w&&w!==3){return false;}h.removeAllContentRight();S.removeAllContentRight();this._iContentPage=w;this._oContentItem=o;if(w>=0&&w<3){this._getPage1().removeAllAggregation("content",true);if(this._showSubHeader){if(!this._getPage1().getSubHeader()){this._getPage1().setSubHeader(S);}S.addContentRight(r);}else{if(this._getPage1().getSubHeader()){this._getPage1().setSubHeader();}h.addContentRight(r);}}else if(w===3){this._getPage2().removeAllAggregation("content",true);}if(this.getTitle()){T.setText(this.getTitle());}else{T.setText(this._rb.getText("VIEWSETTINGS_TITLE"));}switch(w){case 1:r.setVisible(false);if(!this._showSubHeader&&!this.getTitle()){T.setText(this._rb.getText("VIEWSETTINGS_TITLE_GROUP"));}for(;i1&&o.getMultiSelect()){b=o.getItems();for(;i= 7 && sap.ui.Device.os.version < 8 && sap.ui.Device.browser.name === "sf"; + + //call the base to properly init the event registry + sap.ui.base.EventProvider.apply(this); + + if (!bIsIOS7Safari) { + return; + } + + this._bIntervallAttached = false; + this._bInputIsOpen = false; + this._bNavigationBarEventFired = false; + + var bIsLandscape = window.orientation === 90 || window.orientation === -90; + if (bIsLandscape) { + this._attachNavigationBarPolling(); + } + + sap.ui.Device.orientation.attachHandler(this._onOrientationChange, this); + + this._onFocusin = jQuery.proxy(this._onFocusin, this); + document.addEventListener("focusin", this._onFocusin , true); + + this._onFocusout = jQuery.proxy(this._onFocusout, this); + //attach this event in the capturing phase, so noone can stop propagation + document.addEventListener("focusout", this._onFocusout, true); + } + }); + + /***************************** + internals + *****************************/ + /** + * gets the height of the navigation bar in px. Only returns a number < 0 in landscape mode - will return 0 for portrait mode or if no navigation bar is shown. + * @internal + * @returns {int} the height of the navigation bar + */ + sap.m._Ios7.prototype.getNavigationBarHeight = function () { + if (!this._bNavigationBarEventFired) { + return 0; + } + return this._iNavigationBarHeight; + }; + + /***************************** + privates + *****************************/ + + sap.m._Ios7.prototype._attachNavigationBarPolling = function () { + if (!sap.ui.Device.system.phone || this._bIntervallAttached) { + return; + } + + sap.ui.getCore().attachIntervalTimer(this._detectNavigationBar, this); + this._bIntervallAttached = true; + }; + + sap.m._Ios7.prototype._detachNavigationBarPolling = function () { + if (!sap.ui.Device.system.phone || !this._bIntervallAttached) { + return; + } + + sap.ui.getCore().detachIntervalTimer(this._detectNavigationBar, this); + this._bIntervallAttached = false; + }; + + //We cannot turn this off in landscape mode, since the inner and outer height might be different when the soft-keyboard pops up. + //So we need to do a lot of unnecessary scrolls, since keyboard and navigation bar cannot be distinguished. + sap.m._Ios7.prototype._detectNavigationBar = function () { + var iHeightDifference = window.outerHeight - window.innerHeight; + + if (iHeightDifference === 0 || this._bInputIsOpen || this._bNavigationBarEventFired) { + this._iPreviousHeight = null; + return; + } + + if (this._iPreviousHeight === window.innerHeight) { + window.scrollTo(0,0); + var iNewWindowHeightDifference = window.outerHeight - window.innerHeight; + if (iHeightDifference !== iNewWindowHeightDifference) { + return; + } + + this._iNavigationBarHeight = iHeightDifference; + this._bNavigationBarEventFired = true; + this.fireEvent("navigationBarShownInLandscape", { barHeight : iHeightDifference }); + this._detachNavigationBarPolling(); + this._iPreviousHeight = null; + } else { + this._iPreviousHeight = window.innerHeight; + } + }; + + sap.m._Ios7.prototype.destroy = function() { + sap.ui.base.EventProvider.prototype.destroy.apply(this, arguments); + + document.removeEventListener("focusin", this._onFocusin , true); + document.removeEventListener("focusout", this._onFocusout, true); + }; + /***************************** + window / document event handling + *****************************/ + + /** + * @param oEvent the native focusin event + * @private + */ + sap.m._Ios7.prototype._onFocusin = function (oEvent) { + var sTagName = oEvent.target.tagName; + + if (!sap.m._Ios7._rTagRegex.test(sTagName)) { + return; + } + + //we have to disable polling while the keyboard is open since scrollTop(0,0) will scroll the input out of the users view + this._inputTarget = oEvent.target; + this._detachNavigationBarPolling(); + this._bInputIsOpen = true; + this.fireEvent("inputOpened"); + }; + + sap.m._Ios7._rTagRegex = /INPUT|TEXTAREA|SELECT/; + + /** + * @param oEvent the native focusout event + * @private + */ + sap.m._Ios7.prototype._onFocusout = function (oEvent) { + var sTagName = oEvent.srcElement.tagName, + oRelated = oEvent.relatedTarget, + sRelatedTag = (oRelated && (oRelated.getAttribute("readonly") === null) && (oRelated.getAttribute("disabled") === null)) ? oRelated.tagName : ""; + + //only handle the focusout for elements that can bring up a soft-keyboard + //there are a lot of input types that might not bring up the soft-keyboard - checking for them might be a bit too much + if (sap.m._Ios7._rTagRegex.test(sTagName) && !sap.m._Ios7._rTagRegex.test(sRelatedTag)) { + window.scrollTo(0,0); + + //Attach the polling again, since it was disabled in the focus in. But only do it in landscape. + if (window.orientation === 90 || window.orientation === -90) { + this._attachNavigationBarPolling(); + } + + this._bInputIsOpen = false; + this.fireEvent("inputClosed"); + } + }; + + /** + * handles the orientation change + * @private + */ + sap.m._Ios7.prototype._onOrientationChange = function (oEvent) { + var bIsLandscape = oEvent.landscape; + + window.scrollTo(0,0); + + this._bNavigationBarEventFired = false; + + //The page gets messed up if the softkeyboard is opened + if (this._bInputIsOpen && this._inputTarget && this._inputTarget.blur) { + this._inputTarget.blur(); + } else if (bIsLandscape) { + this._attachNavigationBarPolling(); + //in landscape mode the navigation bar is visible anyways - disable the polling + } else if (!bIsLandscape) { + this._detachNavigationBarPolling(); + } + }; + + //expose the singleton + var ios7 = new sap.m._Ios7(); + + + return ios7; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/ios7.js b/DVHMA-OpenUI5/www/resources/sap/m/ios7.js new file mode 100644 index 0000000..c4b94fa --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/ios7.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";sap.ui.base.EventProvider.extend("sap.m._Ios7",{constructor:function(){var I=sap.ui.Device.os.ios&&sap.ui.Device.os.version>=7&&sap.ui.Device.os.version<8&&sap.ui.Device.browser.name==="sf";sap.ui.base.EventProvider.apply(this);if(!I){return;}this._bIntervallAttached=false;this._bInputIsOpen=false;this._bNavigationBarEventFired=false;var b=window.orientation===90||window.orientation===-90;if(b){this._attachNavigationBarPolling();}sap.ui.Device.orientation.attachHandler(this._onOrientationChange,this);this._onFocusin=q.proxy(this._onFocusin,this);document.addEventListener("focusin",this._onFocusin,true);this._onFocusout=q.proxy(this._onFocusout,this);document.addEventListener("focusout",this._onFocusout,true);}});sap.m._Ios7.prototype.getNavigationBarHeight=function(){if(!this._bNavigationBarEventFired){return 0;}return this._iNavigationBarHeight;};sap.m._Ios7.prototype._attachNavigationBarPolling=function(){if(!sap.ui.Device.system.phone||this._bIntervallAttached){return;}sap.ui.getCore().attachIntervalTimer(this._detectNavigationBar,this);this._bIntervallAttached=true;};sap.m._Ios7.prototype._detachNavigationBarPolling=function(){if(!sap.ui.Device.system.phone||!this._bIntervallAttached){return;}sap.ui.getCore().detachIntervalTimer(this._detectNavigationBar,this);this._bIntervallAttached=false;};sap.m._Ios7.prototype._detectNavigationBar=function(){var h=window.outerHeight-window.innerHeight;if(h===0||this._bInputIsOpen||this._bNavigationBarEventFired){this._iPreviousHeight=null;return;}if(this._iPreviousHeight===window.innerHeight){window.scrollTo(0,0);var n=window.outerHeight-window.innerHeight;if(h!==n){return;}this._iNavigationBarHeight=h;this._bNavigationBarEventFired=true;this.fireEvent("navigationBarShownInLandscape",{barHeight:h});this._detachNavigationBarPolling();this._iPreviousHeight=null;}else{this._iPreviousHeight=window.innerHeight;}};sap.m._Ios7.prototype.destroy=function(){sap.ui.base.EventProvider.prototype.destroy.apply(this,arguments);document.removeEventListener("focusin",this._onFocusin,true);document.removeEventListener("focusout",this._onFocusout,true);};sap.m._Ios7.prototype._onFocusin=function(e){var t=e.target.tagName;if(!sap.m._Ios7._rTagRegex.test(t)){return;}this._inputTarget=e.target;this._detachNavigationBarPolling();this._bInputIsOpen=true;this.fireEvent("inputOpened");};sap.m._Ios7._rTagRegex=/INPUT|TEXTAREA|SELECT/;sap.m._Ios7.prototype._onFocusout=function(e){var t=e.srcElement.tagName,r=e.relatedTarget,R=(r&&(r.getAttribute("readonly")===null)&&(r.getAttribute("disabled")===null))?r.tagName:"";if(sap.m._Ios7._rTagRegex.test(t)&&!sap.m._Ios7._rTagRegex.test(R)){window.scrollTo(0,0);if(window.orientation===90||window.orientation===-90){this._attachNavigationBarPolling();}this._bInputIsOpen=false;this.fireEvent("inputClosed");}};sap.m._Ios7.prototype._onOrientationChange=function(e){var I=e.landscape;window.scrollTo(0,0);this._bNavigationBarEventFired=false;if(this._bInputIsOpen&&this._inputTarget&&this._inputTarget.blur){this._inputTarget.blur();}else if(I){this._attachNavigationBarPolling();}else if(!I){this._detachNavigationBarPolling();}};var i=new sap.m._Ios7();return i;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/library-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/library-dbg.js new file mode 100644 index 0000000..e6b5b9e --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/library-dbg.js @@ -0,0 +1,2595 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +/** + * Initialization Code and shared classes of library sap.m. + */ +sap.ui.define(['jquery.sap.global', 'sap/ui/Device', + 'sap/ui/core/library', // library dependency + 'jquery.sap.mobile', // referenced here in case the Core decides to throw it out - shall always be available when using the mobile lib. + './Support'], // referenced here to enable the Support feature + function(jQuery, Device) { + + "use strict"; + + + /** + * SAPUI5 library with controls specialized for mobile devices. + * + * @namespace + * @name sap.m + * @author SAP SE + * @version 1.28.5 + * @public + */ + + // delegate further initialization of this library to the Core + sap.ui.getCore().initLibrary({ + name : "sap.m", + version: "1.28.5", + dependencies : ["sap.ui.core"], + types: [ + "sap.m.BackgroundDesign", + "sap.m.BarDesign", + "sap.m.ButtonType", + "sap.m.DateTimeInputType", + "sap.m.DialogType", + "sap.m.FacetFilterListDataType", + "sap.m.FacetFilterType", + "sap.m.FlexAlignItems", + "sap.m.FlexAlignSelf", + "sap.m.FlexDirection", + "sap.m.FlexJustifyContent", + "sap.m.FlexRendertype", + "sap.m.HeaderLevel", + "sap.m.IBarHTMLTag", + "sap.m.IconTabFilterDesign", + "sap.m.InputType", + "sap.m.LabelDesign", + "sap.m.ListHeaderDesign", + "sap.m.ListMode", + "sap.m.ListSeparators", + "sap.m.ListType", + "sap.m.P13nPanelType", + "sap.m.PageBackgroundDesign", + "sap.m.PlacementType", + "sap.m.PopinDisplay", + "sap.m.RatingIndicatorVisualMode", + "sap.m.ScreenSize", + "sap.m.SelectType", + "sap.m.SplitAppMode", + "sap.m.StandardTileType", + "sap.m.SwipeDirection", + "sap.m.SwitchType", + "sap.m.ToolbarDesign", + "sap.m.VerticalPlacementType" + ], + interfaces: [ + "sap.m.IBar", + "sap.m.IconTab", + "sap.m.ObjectHeaderContainer" + ], + controls: [ + "sap.m.ActionListItem", + "sap.m.ActionSelect", + "sap.m.ActionSheet", + "sap.m.App", + "sap.m.Bar", + "sap.m.BusyDialog", + "sap.m.BusyIndicator", + "sap.m.Button", + "sap.m.Carousel", + "sap.m.CheckBox", + "sap.m.ColumnListItem", + "sap.m.ComboBox", + "sap.m.ComboBoxBase", + "sap.m.CustomListItem", + "sap.m.CustomTile", + "sap.m.DatePicker", + "sap.m.DateRangeSelection", + "sap.m.DateTimeInput", + "sap.m.Dialog", + "sap.m.DisplayListItem", + "sap.m.FacetFilter", + "sap.m.FacetFilterItem", + "sap.m.FacetFilterList", + "sap.m.FeedInput", + "sap.m.FeedListItem", + "sap.m.FlexBox", + "sap.m.GroupHeaderListItem", + "sap.m.GrowingList", + "sap.m.HBox", + "sap.m.IconTabBar", + "sap.m.IconTabHeader", + "sap.m.Image", + "sap.m.Input", + "sap.m.InputBase", + "sap.m.InputListItem", + "sap.m.Label", + "sap.m.Link", + "sap.m.List", + "sap.m.ListBase", + "sap.m.ListItemBase", + "sap.m.MessagePage", + "sap.m.MessagePopover", + "sap.m.MultiComboBox", + "sap.m.MultiInput", + "sap.m.NavContainer", + "sap.m.ObjectAttribute", + "sap.m.ObjectHeader", + "sap.m.ObjectIdentifier", + "sap.m.ObjectListItem", + "sap.m.ObjectNumber", + "sap.m.ObjectStatus", + "sap.m.OverflowToolbar", + "sap.m.OverflowToolbarButton", + "sap.m.P13nColumnsItem", + "sap.m.P13nColumnsPanel", + "sap.m.P13nConditionPanel", + "sap.m.P13nDialog", + "sap.m.P13nFilterPanel", + "sap.m.P13nPanel", + "sap.m.P13nSortPanel", + "sap.m.Page", + "sap.m.Panel", + "sap.m.Popover", + "sap.m.ProgressIndicator", + "sap.m.PullToRefresh", + "sap.m.RadioButton", + "sap.m.RadioButtonGroup", + "sap.m.RatingIndicator", + "sap.m.ResponsivePopover", + "sap.m.ScrollContainer", + "sap.m.SearchField", + "sap.m.SegmentedButton", + "sap.m.Select", + "sap.m.SelectDialog", + "sap.m.SelectList", + "sap.m.Shell", + "sap.m.Slider", + "sap.m.SplitApp", + "sap.m.SplitContainer", + "sap.m.StandardListItem", + "sap.m.StandardTile", + "sap.m.Switch", + "sap.m.Table", + "sap.m.TableSelectDialog", + "sap.m.Text", + "sap.m.TextArea", + "sap.m.Tile", + "sap.m.TileContainer", + "sap.m.Title", + "sap.m.ToggleButton", + "sap.m.Token", + "sap.m.Tokenizer", + "sap.m.Toolbar", + "sap.m.ToolbarSpacer", + "sap.m.ToolbarSeparator", + "sap.m.UploadCollection", + "sap.m.VBox", + "sap.m.ViewSettingsDialog" + ], + elements: [ + "sap.m.Column", + "sap.m.FlexItemData", + "sap.m.IconTabFilter", + "sap.m.IconTabSeparator", + "sap.m.OverflowToolbarLayoutData", + "sap.m.MessagePopoverItem", + "sap.m.P13nFilterItem", + "sap.m.P13nItem", + "sap.m.P13nSortItem", + "sap.m.SegmentedButtonItem", + "sap.m.ToolbarLayoutData", + "sap.m.UploadCollectionItem", + "sap.m.UploadCollectionParameter", + "sap.m.ViewSettingsCustomItem", + "sap.m.ViewSettingsFilterItem", + "sap.m.ViewSettingsItem" + ] + }); + + + /** + * Available Background Design. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.BackgroundDesign = { + + /** + * A solid background color dependent on the theme. + * @public + */ + Solid : "Solid", + + /** + * Transparent background. + * @public + */ + Transparent : "Transparent", + + /** + * A translucent background depending on the opacity value of the theme. + * @public + */ + Translucent : "Translucent" + + }; + + + /** + * Types of the Bar design + * + * @enum {string} + * @public + * @since 1.20 + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.BarDesign = { + + /** + * The Bar can be inserted into other controls and if the design is "Auto" then it inherits the design from parent control. + * @public + */ + Auto : "Auto", + + /** + * The bar will be styled like a header of the page. + * @public + */ + Header : "Header", + + /** + * The bar will be styled like a subheader of the page. + * @public + */ + SubHeader : "SubHeader", + + /** + * The bar will be styled like a footer of the page. + * @public + */ + Footer : "Footer" + + }; + + + /** + * Different types for a button (predefined types) + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.ButtonType = { + + /** + * default type (no special styling) + * @public + */ + Default : "Default", + + /** + * back type (back navigation button for header) + * @public + */ + Back : "Back", + + /** + * accept type (blue button) + * @public + */ + Accept : "Accept", + + /** + * reject style (red button) + * @public + */ + Reject : "Reject", + + /** + * transparent type + * @public + */ + Transparent : "Transparent", + + /** + * up type (up navigation button for header) + * @public + */ + Up : "Up", + + /** + * Unstyled type (no styling) + * @public + */ + Unstyled : "Unstyled", + + /** + * emphasized type + * @public + */ + Emphasized : "Emphasized" + + }; + + + /** + * A subset of DateTimeInput types that fit to a simple API returning one string. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.DateTimeInputType = { + + /** + * An input control for specifying a date value. The user can select a month, day of the month, and year. + * @public + * @deprecated Since version 1.22. + * Instead, use dedicated sap.m.DatePicker control. + */ + Date : "Date", + + /** + * An input control for specifying a date and time value. The user can select a month, day of the month, year, and time of day. + * @public + */ + DateTime : "DateTime", + + /** + * An input control for specifying a time value. The user can select the hour, minute, and optionally AM or PM. + * @public + */ + Time : "Time" + + }; + + + /** + * Enum for the type of sap.m.Dialog control. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.DialogType = { + + /** + * This is the default value for Dialog type. Stardard dialog in iOS has a header on the top and the left, right buttons are put inside the header. In android, the left, right buttons are put to the bottom of the Dialog. + * @public + */ + Standard : "Standard", + + /** + * Dialog with type Message looks the same as the Stardard Dialog in Android. And it puts the left, right buttons to the bottom of the Dialog in iOS. + * @public + */ + Message : "Message" + + }; + + + /** + * FacetFilterList data types. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.FacetFilterListDataType = { + + /** + * An input control for specifying a date value. The user can select a month, day of the month, and year. + * @public + */ + Date : "Date", + + /** + * An input control for specifying a date and time value. The user can select a month, day of the month, year, and time of day. + * @public + */ + DateTime : "DateTime", + + /** + * An input control for specifying a time value. The user can select the hour, minute, and optionally AM or PM. + * @public + */ + Time : "Time", + + /** + * >An input control for specifying a Integer value + * @public + */ + Integer : "Integer", + + /** + * >An input control for specifying a Float value + * @public + */ + Float : "Float", + + /** + * >An input control for specifying a String value + * @public + */ + String : "String", + + /** + * >An input control for specifying a Boolean value + * @public + */ + Boolean : "Boolean" + + }; + + + /** + * Used by the FacetFilter control to adapt its design according to type. + * + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.FacetFilterType = { + + /** + * Forces FacetFilter to display facet lists as a row of buttons, one button per facet. The FacetFilter will automatically adapt to the Light type when it detects smart phone sized displays. + * @public + */ + Simple : "Simple", + + /** + * Forces FacetFilter to display in light mode. + * @public + */ + Light : "Light" + + }; + + + /** + * Available options for the layout of all elements along the cross axis of the flexbox layout. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.FlexAlignItems = { + + /** + * The cross-start margin edges of the box items are placed flush with the cross-start edge of the line. + * @public + */ + Start : "Start", + + /** + * The cross-start margin edges of the box items are placed flush with the cross-end edge of the line. + * @public + */ + End : "End", + + /** + * The box items' margin boxes are centered in the cross axis within the line. + * @public + */ + Center : "Center", + + /** + * If the box items' inline axes are the same as the cross axis, this value is identical to ?start?. Otherwise, it participates in baseline alignment: all participating box items on the line are aligned such that their baselines align, and the item with the largest distance between its baseline and its cross-start margin edge is placed flush against the cross-start edge of the line. + * @public + */ + Baseline : "Baseline", + + /** + * Make the cross size of the items' margin boxes as close to the same size as the line as possible. + * @public + */ + Stretch : "Stretch", + + /** + * Inherits the value from its parent. + * @public + */ + Inherit : "Inherit" + + }; + + + /** + * Available options for the layout of individual elements along the cross axis of the flexbox layout overriding the default alignment. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.FlexAlignSelf = { + + /** + * Takes up the value of alignItems from the parent FlexBox + * @public + */ + Auto : "Auto", + + /** + * The cross-start margin edges of the box item is placed flush with the cross-start edge of the line. + * @public + */ + Start : "Start", + + /** + * The cross-start margin edges of the box item is placed flush with the cross-end edge of the line. + * @public + */ + End : "End", + + /** + * The box item's margin box is centered in the cross axis within the line. + * @public + */ + Center : "Center", + + /** + * If the box item's inline axis is the same as the cross axis, this value is identical to ?start?. Otherwise, it participates in baseline alignment: all participating box items on the line are aligned such that their baselines align, and the item with the largest distance between its baseline and its cross-start margin edge is placed flush against the cross-start edge of the line. + * @public + */ + Baseline : "Baseline", + + /** + * Make the cross size of the item's margin box as close to the same size as the line as possible. + * @public + */ + Stretch : "Stretch", + + /** + * Inherits the value from its parent. + * @public + */ + Inherit : "Inherit" + + }; + + + /** + * Available directions for flex layouts. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.FlexDirection = { + + /** + * Elements are layed out along the direction of the inline axis (text direction). + * @public + */ + Row : "Row", + + /** + * Elements are layed out along the direction of the block axis (usually top to bottom). + * @public + */ + Column : "Column", + + /** + * Elements are layed out along the reverse direction of the inline axis (against the text direction). + * @public + */ + RowReverse : "RowReverse", + + /** + * Elements are layed out along the reverse direction of the block axis (usually bottom to top). + * @public + */ + ColumnReverse : "ColumnReverse", + + /** + * Inherits the value from its parent. + * @public + */ + Inherit : "Inherit" + + }; + + + /** + * Available options for the layout of elements along the main axis of the flexbox layout. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.FlexJustifyContent = { + + /** + * Box items are packed toward the start of the line. + * @public + */ + Start : "Start", + + /** + * Box items are packed toward the end of the line. + * @public + */ + End : "End", + + /** + * Box items are packed toward the center of the line. + * @public + */ + Center : "Center", + + /** + * Box items are evenly distributed in the line. + * @public + */ + SpaceBetween : "SpaceBetween", + + /** + * Box items are evenly distributed in the line, with half-size spaces on either end. + * @public + */ + SpaceAround : "SpaceAround", + + /** + * Inherits the value from its parent. + * @public + */ + Inherit : "Inherit" + + }; + + + /** + * Determines the type of HTML elements used for rendering controls. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.FlexRendertype = { + + /** + * DIV elements are used for rendering + * @public + */ + Div : "Div", + + /** + * Unordered lists are used for rendering. + * @public + */ + List : "List" + + }; + + + /** + * Different levels for headers + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.HeaderLevel = { + + /** + * Header level 1 + * @public + */ + H1 : "H1", + + /** + * Header level 2 + * @public + */ + H2 : "H2", + + /** + * Header level 3 + * @public + */ + H3 : "H3", + + /** + * Header level 4 + * @public + */ + H4 : "H4", + + /** + * Header level 5 + * @public + */ + H5 : "H5", + + /** + * Header level 6 + * @public + */ + H6 : "H6" + + }; + + + /** + * + * Interface for controls which are suitable as a Header, Subheader or Footer of a Page. + * If the control does not want to get a context base style class, it has to implement the isContextSensitive method and return false + * + * + * @since 1.22 + * @name sap.m.IBar + * @interface + * @public + * @ui5-metamodel This interface also will be described in the UI5 (legacy) designtime metamodel + */ + + + /** + * Allowed tags for the implementation of the IBar interface. + * + * @enum {string} + * @public + * @since 1.22 + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.IBarHTMLTag = { + + /** + * Renders as a div element. + * @public + */ + Div : "Div", + + /** + * Renders as a header element. + * @public + */ + Header : "Header", + + /** + * Renders as a footer element. + * @public + */ + Footer : "Footer" + + }; + + + /** + * + * Marker interface for controls which are suitable as items for the IconTabBar. + * These controls must implement a method isSelectable(). + * + * + * @name sap.m.IconTab + * @interface + * @public + * @ui5-metamodel This interface also will be described in the UI5 (legacy) designtime metamodel + */ + + + /** + * Available Filter Item Design. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.IconTabFilterDesign = { + + /** + * A horizontally layouted design providing more space for texts. + * @public + */ + Horizontal : "Horizontal", + + /** + * A vertically layouted design using minimum horizontal space. + * @public + */ + Vertical : "Vertical" + + }; + + + /** + * A subset of input types that fit to a simple API returning one string. + * Not available on purpose: button, checkbox, hidden, image, password, radio, range, reset, search, submit. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.InputType = { + + /** + * default (text) + * @public + */ + Text : "Text", + + /** + * An input control for specifying a date value. The user can select a month, day of the month, and year. + * @public + * @deprecated Since version 1.9.1. + * Please use sap.m.DateTimeInput control with type "Date" to create date input. + */ + Date : "Date", + + /** + * An input control for specifying a date and time value. The user can select a month, day of the month, year, and time of day. + * @public + * @deprecated Since version 1.9.1. + * Please use dedicated sap.m.DateTimeInput control with type "DateTime" to create date-time input. + */ + Datetime : "Datetime", + + /** + * An input control for specifying a date and time value where the format depends on the locale. + * @public + * @deprecated Since version 1.9.1. + * Please use dedicated sap.m.DateTimeInput control with type "DateTime" to create date-time input. + */ + DatetimeLocale : "DatetimeLocale", + + /** + * A text field for specifying an email address. Brings up a keyboard optimized for email address entry. + * @public + */ + Email : "Email", + + /** + * An input control for selecting a month. + * @public + * @deprecated Since version 1.9.1. + * There is no cross-platform support. Please do not use this Input type. + */ + Month : "Month", + + /** + * A text field for specifying a number. Brings up a number pad keyboard. Specifying an input type of \d* or [0-9]* is equivalent to using this type. + * @public + */ + Number : "Number", + + /** + * A text field for specifying a phone number. Brings up a phone pad keyboard. + * @public + */ + Tel : "Tel", + + /** + * An input control for specifying a time value. The user can select the hour, minute, and optionally AM or PM. + * @public + * @deprecated Since version 1.9.1. + * Please use dedicated sap.m.DateTimeInput control with type "Time" to create time input. + */ + Time : "Time", + + /** + * A text field for specifying a URL. Brings up a keyboard optimized for URL entry. + * @public + */ + Url : "Url", + + /** + * An input control for selecting a week. + * @public + * @deprecated Since version 1.9.1. + * There is no cross-platform support. Please do not use this Input type. + */ + Week : "Week", + + /** + * Password input where the user entry cannot be seen. + * @public + */ + Password : "Password" + + }; + + + /** + * Available label display modes. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.LabelDesign = { + + /** + * Displays the label in bold. + * @public + */ + Bold : "Bold", + + /** + * Displays the label in normal mode. + * @public + */ + Standard : "Standard" + + }; + + + /** + * Defines the different header styles. + * + * @enum {string} + * @public + * @deprecated Since version 1.16. + * Has no functionality since 1.16. + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.ListHeaderDesign = { + + /** + * Standard header style + * @public + */ + Standard : "Standard", + + /** + * Plain header style + * @public + */ + Plain : "Plain" + + }; + + + /** + * Different modes for the list selection (predefined modes) + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.ListMode = { + + /** + * default mode (no selection) + * @public + */ + None : "None", + + /** + * right positioned single selection mode (only one list item can be selected) + * @public + */ + SingleSelect : "SingleSelect", + + /** + * multi selection mode (whole list item including checkbox will be selected) + * @public + */ + MultiSelect : "MultiSelect", + + /** + * delete mode (only one list item can be deleted) + * @public + */ + Delete : "Delete", + + /** + * Single selection master mode (only one list item can be selected), selected item is highlighted but no radiobutton is visible. + * @public + */ + SingleSelectMaster : "SingleSelectMaster", + + /** + * left positioned single selection mode (only one list item can be selected) + * @public + */ + SingleSelectLeft : "SingleSelectLeft" + + }; + + + /** + * Defines which separator style will be applied for the items. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.ListSeparators = { + + /** + * Separators around the items. + * @public + */ + All : "All", + + /** + * Separators between the items when there is no footer. Note: This enumeration depends on the theme. Please check design documentation for more details. + * @public + */ + Inner : "Inner", + + /** + * No item separators. + * @public + */ + None : "None" + + }; + + + /** + * List types + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.ListType = { + + /** + * Inactive + * @public + */ + Inactive : "Inactive", + + /** + * Detail + * @public + */ + Detail : "Detail", + + /** + * Navigation + * @public + */ + Navigation : "Navigation", + + /** + * Active + * @public + */ + Active : "Active", + + /** + * DetailAndActive + * @public + */ + DetailAndActive : "DetailAndActive" + + }; + + + /** + * Marker interface for controls which are suitable as items for the ObjectHeader. + * + * @name sap.m.ObjectHeaderContainer + * @interface + * @public + * @ui5-metamodel This interface also will be described in the UI5 (legacy) designtime metamodel + */ + + + /** + * Type of Panels used on the Personalization Dialog + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.P13nPanelType = { + + /** + * Panel type for sorting + * @public + */ + sort : "sort", + + /** + * Panel type for filtering + * @public + */ + filter : "filter", + + /** + * Panel type for grouping + * @public + */ + group : "group", + + /** + * Panel type for columns setting + * @public + */ + columns : "columns" + + }; + + + /** + * Available Page Background Design. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.PageBackgroundDesign = { + + /** + * Standard Page background color. + * @public + */ + Standard : "Standard", + + /** + * Page background color when a List is set as the Page content. + * @public + */ + List : "List", + + /** + * A solid background color dependent on the theme. + * @public + */ + Solid : "Solid", + + /** + * Transparent background for the page. + * @public + */ + Transparent : "Transparent" + + }; + + /** + * Types for the placement of popover control. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.PlacementType = { + + /** + * Popover will be placed at the left side of the reference control. + * @public + */ + Left : "Left", + + /** + * Popover will be placed at the right side of the reference control. + * @public + */ + Right : "Right", + + /** + * Popover will be placed at the top of the reference control. + * @public + */ + Top : "Top", + + /** + * Popover will be placed at the bottom of the reference control. + * @public + */ + Bottom : "Bottom", + + /** + * Popover will be placed at the top or bottom of the reference control. + * @public + */ + Vertical : "Vertical", + + /** + * Popover will be placed at the right or left side of the reference control. + * @public + */ + Horizontal : "Horizontal", + + /** + * Popover will be placed automatically at the reference control. + * @public + */ + Auto : "Auto" + + }; + + /** + * Types for the placement of message popover control. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.VerticalPlacementType = { + + /** + * Popover will be placed at the top of the reference control. + * @public + */ + Top : "Top", + + /** + * Popover will be placed at the bottom of the reference control. + * @public + */ + Bottom : "Bottom", + + /** + * Popover will be placed at the top or bottom of the reference control. + * @public + */ + Vertical : "Vertical" + }; + + /** + * Defines the display of table pop-ins + * + * @enum {string} + * @public + * @since 1.13.2 + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.PopinDisplay = { + + /** + * Inside the table popin, header is displayed at the first line and cell content is displayed at the next line. + * @public + */ + Block : "Block", + + /** + * Inside the table popin, cell content is displayed next to the header in the same line. Note: If there is not enough space for the cell content then it jumps to the next line. + * @public + */ + Inline : "Inline", + + + /** + * Inside the table popin, only the cell content will be visible. + * @public + * @since 1.28 + */ + WithoutHeader : "WithoutHeader" + }; + + + /** + * Possible values for the visualization of float values in the RatingIndicator Control. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.RatingIndicatorVisualMode = { + + /** + * Values are rounded to the nearest integer value (e.g. 1.7 -> 2). + * @public + */ + Full : "Full", + + /** + * Values are rounded to the nearest half value (e.g. 1.7 -> 1.5). + * @public + */ + Half : "Half" + + }; + + + /** + * Breakpoint names for different screen sizes. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.ScreenSize = { + + /** + * 240px wide + * @public + */ + Phone : "Phone", + + /** + * 600px wide + * @public + */ + Tablet : "Tablet", + + /** + * 1024px wide + * @public + */ + Desktop : "Desktop", + + /** + * 240px wide + * @public + */ + XXSmall : "XXSmall", + + /** + * 320px wide + * @public + */ + XSmall : "XSmall", + + /** + * 480px wide + * @public + */ + Small : "Small", + + /** + * 560px wide + * @public + */ + Medium : "Medium", + + /** + * 768px wide + * @public + */ + Large : "Large", + + /** + * 960px wide + * @public + */ + XLarge : "XLarge", + + /** + * 1120px wide + * @public + */ + XXLarge : "XXLarge" + + }; + + + /** + * Enumeration for different Select types. + * + * @enum {string} + * @public + * @since 1.16 + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.SelectType = { + + /** + * Will show the text. + * @public + */ + Default : "Default", + + /** + * Will show only the specified icon. + * @public + */ + IconOnly : "IconOnly" + + }; + + + /** + * The mode of SplitContainer or SplitApp control to show/hide the master area. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.SplitAppMode = { + + /** + * Master will automatically be hidden in portrait mode. + * @public + */ + ShowHideMode : "ShowHideMode", + + /** + * Master will always be shown but in a compressed version when in portrait mode. + * @public + */ + StretchCompressMode : "StretchCompressMode", + + /** + * Master will be shown inside a Popover when in portrait mode + * @public + */ + PopoverMode : "PopoverMode", + + /** + * Master area is hidden initially both in portrait and landscape. Master area can be opened by clicking on the top left corner button or swiping right. Swipe is only enabled on mobile devices. Master will keep the open state when changing the orientation of the device. + * @public + */ + HideMode : "HideMode" + + }; + + + /** + * Types for StandardTile + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.StandardTileType = { + + /** + * Tile representing that something needs to be created + * @public + */ + Create : "Create", + + /** + * Monitor tile + * @public + */ + Monitor : "Monitor", + + /** + * Default type + * @public + */ + None : "None" + + }; + + + /** + * Directions for swipe event. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.SwipeDirection = { + + /** + * Swipe from left to right + * @public + */ + LeftToRight : "LeftToRight", + + /** + * Swipe from right to left. + * @public + */ + RightToLeft : "RightToLeft", + + /** + * Both directions (left to right or right to left) + * @public + */ + Both : "Both" + + }; + + + /** + * Enumaration for different switch types. + * + * @enum {string} + * @public + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.SwitchType = { + + /** + * Will show "ON" and "OFF" translated to the current language or the custom text if provided + * @public + */ + Default : "Default", + + /** + * Switch with accept and reject icons + * @public + */ + AcceptReject : "AcceptReject" + + }; + + + /** + * Types of the Toolbar Design. + * + * @enum {string} + * @public + * @since 1.16.8 + * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel + */ + sap.m.ToolbarDesign = { + + /** + * The toolbar can be inserted into other controls and if the design is "Auto" then it inherits the design from parent control. + * @public + */ + Auto : "Auto", + + /** + * The toolbar and its content will be displayed transparent. + * @public + */ + Transparent : "Transparent", + + /** + * The toolbar appears smaller than the regular size to show information(e.g: text, icon). + * @public + */ + Info : "Info", + + /** + * The toolbar has a solid background. Its content will be rendered in a standard way. + * @public + * @since 1.22 + */ + Solid : "Solid" + + }; + /*global Element: true */ + + + //lazy imports for MessageToast + sap.ui.lazyRequire("sap.m.MessageToast", "show"); + + // requires for routing + sap.ui.lazyRequire("sap.m.routing.RouteMatchedHandler"); + sap.ui.lazyRequire("sap.m.routing.Router"); + sap.ui.lazyRequire("sap.m.routing.Target"); + sap.ui.lazyRequire("sap.m.routing.TargetHandler"); + sap.ui.lazyRequire("sap.m.routing.Targets"); + + //enable ios7 support + if (Device.os.ios && Device.os.version >= 7 && Device.os.version < 8 && Device.browser.name === "sf") { + jQuery.sap.require("sap.m.ios7"); + } + + //Internal: test the whole page with compact design + if (/sap-ui-xx-formfactor=compact/.test(location.search)) { + jQuery("html").addClass("sapUiSizeCompact"); + sap.m._bSizeCompact = true; + } + + //Internal: test the whole page with compact design + if (/sap-ui-xx-formfactor=condensed/.test(location.search)) { + jQuery("html").addClass("sapUiSizeCondensed"); + sap.m._bSizeCondensed = true; + } + + // central mobile functionality that should not go into the UI5 Core can go from here + // ---------------------------------------------------------------------------------- + + !(function(oLib) { + + /** + * Returns invalid date value of UI5 + * + * @deprecated Since 1.12 UI5 returns null for invalid date + * @returns {null} + * @public + * @since 1.10 + * @name sap.m#getInvalidDate + * @function + */ + oLib.getInvalidDate = function() { + return null; + }; + + + /** + * Finds default locale settings once and returns always the same. + * We should not need to create new instance to get same locale settings + * This method keep the locale instance in the scope and returns the same after first run + * + * @return {Object} sap.ui.core.Locale instane + * @public + * @since 1.10 + * @name sap.m#getLocale + * @function + */ + oLib.getLocale = function() { + var oConfig = sap.ui.getCore().getConfiguration(), + sLocale = oConfig.getFormatSettings().getFormatLocale().toString(), + oLocale = new sap.ui.core.Locale(sLocale); + + oConfig = sLocale = null; //maybe helps GC + oLib.getLocale = function() { + return oLocale; + }; + + return oLocale; + }; + + /** + * Finds default locale data once and returns always the same + * + * @return {Object} sap.ui.core.LocaleData instance + * @public + * @since 1.10 + * @name sap.m#getLocaleData + * @function + */ + oLib.getLocaleData = function() { + jQuery.sap.require("sap.ui.model.type.Date"); + var oLocaleData = sap.ui.core.LocaleData.getInstance(oLib.getLocale()); + + oLib.getLocaleData = function() { + return oLocaleData; + }; + + return oLocaleData; + }; + + /** + * Checks if the given parameter is a valid JsDate Object + * + * @param {any} value Any variable to test. + * @return {boolean} + * @public + * @since 1.10 + * @name sap.m#isDate + * @function + */ + oLib.isDate = function(value) { + return value && Object.prototype.toString.call(value) == "[object Date]" && !isNaN(value); + }; + + + /** + * Search given control's parents and try to find iScroll + * + * @param {sap.ui.core.Control} oControl + * @return {iScroll|undefined} iScroll reference or undefined if cannot find + * @name sap.m#getIScroll + * @public + * @since 1.11 + */ + oLib.getIScroll = function(oControl) { + if (typeof window.iScroll != "function" || !(oControl instanceof sap.ui.core.Control)) { + return; + } + + var parent, scroller; + /*eslint-disable no-cond-assign */ + for (parent = oControl; parent = parent.oParent;) { + scroller = parent.getScrollDelegate ? parent.getScrollDelegate()._scroller : null; + if (scroller && scroller instanceof window.iScroll) { + return scroller; + } + } + /*eslint-enable no-cond-assign */ + }; + + + /** + * Search given control's parents and try to find ScrollDelegate + * + * @param {sap.ui.core.Control} oControl + * @return {Object|undefined} ScrollDelegate or undefined if cannot find + * @name sap.m#getScrollDelegate + * @public + * @since 1.11 + */ + oLib.getScrollDelegate = function(oControl) { + if (!(oControl instanceof sap.ui.core.Control)) { + return; + } + + /*eslint-disable no-cond-assign */ + for (var parent = oControl; parent = parent.oParent;) { + if (typeof parent.getScrollDelegate == "function") { + return parent.getScrollDelegate(); + } + } + /*eslint-enable no-cond-assign */ + }; + + /** + * screen size definitions in pixel + * if you change any value here, please also change + * 1. the documentation of sap.m.ScreenSize + * 2. media queries in list.css + * + * @private + * @since 1.12 + * @name sap.m#ScreenSizes + */ + oLib.ScreenSizes = { + phone : 240, + tablet : 600, + desktop : 1024, + xxsmall : 240, + xsmall : 320, + small : 480, + medium : 560, + large : 768, + xlarge : 960, + xxlarge : 1120 + }; + + /** + * Base font-size + * @private + * @since 1.12 + * @name sap.m#BaseFontSize + */ + oLib.BaseFontSize = jQuery(document.documentElement).css("font-size"); + + /** + * Hide the soft keyboard + * + * @name sap.m#closeKeyboard + * @public + * @since 1.20 + */ + oLib.closeKeyboard = function() { + var activeElement = document.activeElement; + if (!Device.system.desktop && activeElement && /(INPUT|TEXTAREA)/i.test(activeElement.tagName)) { + activeElement.blur(); + } + }; + + }(sap.m)); + + + /** + * Touch helper. + * + * @namespace + * @name sap.m.touch + * @public + **/ + + if (sap.m && !sap.m.touch) { + + sap.m.touch = {}; + } + + /** + * Given a list of touch objects, find the touch that matches the given one. + * + * @param {TouchList} oTouchList The list of touch objects to search. + * @param {Touch | number} oTouch A touch object to find or a Touch.identifier that uniquely identifies the current finger in the touch session. + * @return {object | undefined} The touch matching if any. + * @public + * @name sap.m.touch.find + * @function + */ + sap.m.touch.find = function(oTouchList, oTouch) { + var i, + iTouchListLength; + + if (!oTouchList) { + return; + } + + if (oTouch && typeof oTouch.identifier !== "undefined") { + oTouch = oTouch.identifier; + } else if (typeof oTouch !== "number") { + jQuery.sap.assert(false, 'sap.m.touch.find(): oTouch must be a touch object or a number'); + return; + } + + iTouchListLength = oTouchList.length; + + // A TouchList is an object not an array, so we shouldn't use + // Array.prototype.forEach, etc. + for (i = 0; i < iTouchListLength; i++) { + if (oTouchList[i].identifier === oTouch) { + return oTouchList[i]; + } + } + + // if the given touch object or touch identifier is not found in the touches list, then return undefined + }; + + /** + * Given a list of touches, count the number of touches related with the given element. + * + * @param {TouchList} oTouchList The list of touch objects to search. + * @param {jQuery | Element | string} vElement A jQuery element or an element reference or an element id. + * @return {number} The number of touches related with the given element. + * @public + * @name sap.m.touch.countContained + * @function + */ + sap.m.touch.countContained = function(oTouchList, vElement) { + var i, + iTouchCount = 0, + iTouchListLength, + iElementChildrenL, + $TouchTarget; + + if (!oTouchList) { + return 0; + } + + if (vElement instanceof Element) { + vElement = jQuery(vElement); + } else if (typeof vElement === "string") { + vElement = jQuery.sap.byId(vElement); + } else if (!(vElement instanceof jQuery)) { + jQuery.sap.assert(false, 'sap.m.touch.countContained(): vElement must be a jQuery object or Element reference or a string'); + return 0; + } + + iElementChildrenL = vElement.children().length; + iTouchListLength = oTouchList.length; + + // A TouchList is an object not an array, so we shouldn't use + // Array.prototype.forEach, etc. + for (i = 0; i < iTouchListLength; i++) { + $TouchTarget = jQuery(oTouchList[i].target); + + // If the current target have only one HTML element or + // have a HTML element antecessor that match with the given element id. + if ((iElementChildrenL === 0 && $TouchTarget.is(vElement)) || + (vElement[0].contains($TouchTarget[0]))) { + + iTouchCount++; + } + } + + return iTouchCount; + }; + + /** + *
    +	 * URL(Uniform Resource Locator) Helper
    +	 * This helper can be used to trigger a native application(e.g email, sms, tel) from Browser.
    +	 * That means we are restricted of browser or application implementation. e.g.
    +	 *  - Some browsers do not let you to pass more than 2022 characters in URL
    +	 *  - MAPI (Outlook) limit is 2083, max. path under Internet Explorer is 2048
    +	 *  - Different Internet Explorer versions have different limitation in IE9 approximately 1000 characters
    +	 *  - MS mail app under Windows 8 cuts mail links after approximately 100 characters
    +	 *  - Safari gets a confirmation from user before opening a native application and can block rest triggers if user cancels it.
    +	 *  - Some mail applications(Outlook) do not respect all encodings(e.g. Cyrillic texts are not encoded correctly)
    +	 *
    +	 * Note: all the given limitation lengths are for encoded text(e.g space character will be encoded to "%20")
    +	 * 
    + * + * @namespace + * @name sap.m.URLHelper + * @since 1.10 + * @public + */ + sap.m.URLHelper = (function($, window) { + + function isValidString(value) { + return value && Object.prototype.toString.call(value) == "[object String]"; + } + + function formatTel(sTel) { + if (!isValidString(sTel)) { + return ""; + } + return sTel.replace(/[^0-9\+\*#]/g, ""); + } + + function formatMessage(sText) { + if (!isValidString(sText)) { + return ""; + } + // line breaks in the body of a message MUST be encoded with "%0D%0A" + // space character in the body of a message MUST be encoded with "%20" + // see http://www.ietf.org/rfc/rfc2368.txt for details + sText = sText.split(/\r\n|\r|\n/g).join("\r\n"); + return window.encodeURIComponent(sText); + } + + return $.extend(new sap.ui.base.EventProvider(), { + /** + * Sanitize the given telephone number and returns telephone URI scheme + * + * @param {String} [sTel] telephone number. + * @return {String} telephone URI scheme. + * @public + * @name sap.m.URLHelper#normalizeTel + * @function + */ + normalizeTel : function(sTel) { + return "tel:" + formatTel(sTel); + }, + + /** + * Sanitize the given telephone number and returns SMS URI scheme + * + * @param {String} [sTel] telephone number. + * @return {String} SMS URI scheme. + * @public + * @name sap.m.URLHelper#normalizeSms + * @function + */ + normalizeSms : function(sTel) { + return "sms:" + formatTel(sTel); + }, + + /** + * Builds Email URI from given parameter. + * Trims spaces from email addresses + * + * @param {String} [sEmail] Destination email address. + * @param {String} [sSubject] Subject of the email address. + * @param {String} [sBody] Default message text. + * @param {String} [sCC] Carbon Copy email address. + * @param {String} [sBCC] Blind carbon copy email address. + * @return {String} Email URI scheme. + * @public + * @name sap.m.URLHelper#normalizeEmail + * @function + */ + normalizeEmail : function(sEmail, sSubject, sBody, sCC, sBCC) { + var aParams = [], + sURL = "mailto:", + encode = window.encodeURIComponent; + + // Within mailto URLs, the characters "?", "=", "&" are reserved + isValidString(sEmail) && (sURL += encode($.trim(sEmail))); + isValidString(sSubject) && aParams.push("subject=" + encode(sSubject)); + isValidString(sBody) && aParams.push("body=" + formatMessage(sBody)); + isValidString(sBCC) && aParams.push("bcc=" + encode($.trim(sBCC))); + isValidString(sCC) && aParams.push("cc=" + encode($.trim(sCC))); + + if (aParams.length) { + sURL += "?" + aParams.join("&"); + } + return sURL; + }, + + /** + * Redirects to given URL + * This method fires "redirect" event before open the URL + * + * @param {String} sURL Uniform resource locator. + * @param {boolean} [bNewWindow] Opens URL in a new browser window + * @public + * @name sap.m.URLHelper#redirect + * @function + */ + redirect : function (sURL, bNewWindow) { + $.sap.assert(isValidString(sURL), this + "#redirect: URL must be a string" ); + + this.fireEvent("redirect", sURL); + if (!bNewWindow) { + window.location.href = sURL; + } else { + window.open(sURL, "_blank"); + } + }, + + /** + * Adds an event registration for redirect + * + * @param {Function} fnFunction The function to call, when the event occurs. + * @param {Object} [oListener] The object, that wants to be notified, when the event occurs + * @return {Object} sap.m.URLHelper instance + * @public + * @name sap.m.URLHelper#attachRedirect + * @function + */ + attachRedirect : function (fnFunction, oListener) { + return this.attachEvent("redirect", fnFunction, oListener); + }, + + /** + * Detach already registered redirect event + * + * @param {Function} fnFunction The function to call, when the event occurs. + * @param {Object} [oListener] The object, that wants to be notified, when the event occurs + * @return {Object} sap.m.URLHelper instance + * @public + * @name sap.m.URLHelper#detachRedirect + * @function + */ + detachRedirect : function (fnFunction, oListener) { + return this.detachEvent("redirect", fnFunction, oListener); + }, + + /** + * Trigger telephone to call given telephone number + * + * @param {String} [sTel] telephone number. + * @public + * @name sap.m.URLHelper#triggerTel + * @function + */ + triggerTel : function(sTel) { + this.redirect(this.normalizeTel(sTel)); + }, + + /** + * Trigger SMS application to send SMS to given telephone number + * + * @param {String} [sTel] telephone number. + * @public + * @name sap.m.URLHelper#triggerSms + * @function + */ + triggerSms : function(sTel) { + this.redirect(this.normalizeSms(sTel)); + }, + + /** + * Trigger email application to send email + * Trims spaces from email addresses + * + * @param {String} [sEmail] Destination email address. + * @param {String} [sSubject] Subject of the email address. + * @param {String} [sBody] Default message text. + * @param {String} [sCC] Carbon Copy email address. + * @param {String} [sBCC] Blind carbon copy email address. + * @public + * @name sap.m.URLHelper#triggerEmail + * @function + */ + triggerEmail : function(sEmail, sSubject, sBody, sCC, sBCC) { + this.redirect(this.normalizeEmail.apply(0, arguments)); + }, + + toString : function() { + return "sap.m.URLHelper"; + } + }); + + }(jQuery, window)); + + + /** + * Helper for rendering themable background + * + * @namespace + * @name sap.m.BackgroundHelper + * @since 1.12 + * @protected + */ + sap.m.BackgroundHelper = (function($, window) { + + return { + /** + * Adds CSS classes and styles to the given RenderManager, depending on the given configuration for background color and background image. + * To be called by control renderers supporting the global themable background image within their root tag, before they call writeClasses() and writeStyles(). + * + * @param {sap.ui.core.RenderManager} rm the RenderManager + * @param {String} [sBgColor] a configured custom background color for the control, if any + * @param {sap.ui.core.URI} [sBgImgUrl] the configured custom background image for the control, if any + * + * @protected + * @name sap.m.BackgroundHelper#addBackgroundColorStyles + * @function + */ + addBackgroundColorStyles: function(rm, sBgColor, sBgImgUrl, sCustomBGClass) { + rm.addClass(sCustomBGClass || "sapMGlobalBackgroundColor"); + + if (sBgColor || sBgImgUrl) { // when an image or color is configured, the gradient needs to be removed, so the color can be seen behind the image + rm.addStyle("background-image", "none"); + rm.addStyle("filter", "none"); + } + if (sBgColor) { + rm.addStyle("background-color", jQuery.sap.escapeHTML(sBgColor)); + } + }, + + + /** + * @protected + * @returns + */ + /* currently not needed + isThemeBackgroundImageModified: function() { + jQuery.sap.require("sap.ui.core.theming.Parameters"); + var sBgImgUrl = sap.ui.core.theming.Parameters.get('sapUiGlobalBackgroundImage'); // the global background image from the theme + if (sBgImgUrl && sBgImgUrl !== "''") { + var sBgImgUrlDefault = sap.ui.core.theming.Parameters.get('sapUiGlobalBackgroundImageDefault'); + if (sBgImgUrl !== sBgImgUrlDefault) { + return true; + } + } + return false; + }, + */ + + /** + * Renders an HTML tag into the given RenderManager which carries the background image which is either configured and given or coming from the current theme. + * Should be called right after the opening root tag has been completed, so this is the first child element inside the control. + * + * @param rm the RenderManager + * @param {sap.ui.core.Control} oControl the control within which the tag will be rendered; its ID will be used to generate the element ID + * @param {String} sCssClass a css class to add to the element + * @param {sap.ui.core.URI} [sBgImgUrl] the image of a configured background image; if this is not given, the theme background will be used and also the other settings are ignored. + * @param {boolean} [bRepeat] whether the background image should be repeated/tiled (or stretched) + * @param {float} [fOpacity] the background image opacity, if any + * + * @protected + * @name sap.m.BackgroundHelper#renderBackgroundImageTag + * @function + */ + renderBackgroundImageTag: function(rm, oControl, sCssClass, sBgImgUrl, bRepeat, fOpacity) { + rm.write("
    1) { // greater than 1 enforces 1 + fOpacity = 1; + } + rm.addStyle("opacity", fOpacity); + } + + rm.writeClasses(); + rm.writeStyles(); + rm.write(">
    "); + } + }; + }(jQuery, window)); + + /** + * Helper for Images + * + * @namespace + * @name sap.m.ImageHelper + * @since 1.12 + * @protected + */ + sap.m.ImageHelper = (function($, window) { + + /** + * Checks if value is not undefined, in which case the + * setter function for a given property is called. + * Returns true if value is set, false otherwise. + * + * @private + */ + function checkAndSetProperty(oControl, property, value) { + if (value !== undefined) { + var fSetter = oControl['set' + jQuery.sap.charToUpperCase(property)]; + if (typeof (fSetter) === "function") { + fSetter.call(oControl, value); + return true; + } + } + return false; + } + + return { + /** + * Creates or updates an image control. + * + * @param {string} sImgId id of the image to be dealt with. + * @param {sap.m.Image} oImageControl the image to update. If undefined, a new image will be created. + * @param {sap.ui.core.Control} oParent oImageControl's parentControl. + * @param {Map} mProperties map object that contains key value pairs if image propeties. The 'src' property + * MUST be contained. Also the map's keys must be names of image properties + * @param {Array} aCssClassesToAdd array of css classes which will be added if the image needs to be created. + * @param {Array} aCssClassesToRemove all css clases that oImageControl has and which are contained in this array + * are removed bevore adding the css classes listed in aCssClassesToAdd. + * @returns the new or updated image control + * + * @protected + * @name sap.m.ImageHelper#getImageControl + * @function + */ + getImageControl: function(sImgId, oImageControl, oParent, mProperties, aCssClassesToAdd, aCssClassesToRemove) { + jQuery.sap.assert( !!mProperties['src'] , "sap.m.ImageHelper.getImageControl: mProperties do not contain 'src'"); + + // make sure, image is rerendered if icon source has changed + if (oImageControl && (oImageControl.getSrc() != mProperties['src'])) { + oImageControl.destroy(); + oImageControl = undefined; + } + // update or create image control + var oImage = oImageControl; + if (!!oImage && (oImage instanceof sap.m.Image || oImage instanceof sap.ui.core.Icon)) { + //Iterate through properties + for (var key in mProperties) { + checkAndSetProperty(oImage, key, mProperties[key]); + } + } else { + if (!sap.m.Image) { + jQuery.sap.require("sap.m.Image"); + } + var mSettings = mProperties; + //add 'id' to properties. This is required by utility + //method 'createControlByURI' + mSettings['id'] = sImgId; + oImage = sap.ui.core.IconPool.createControlByURI( + mSettings, sap.m.Image); + //Set the parent so the image gets re-rendered, when the parent is + oImage.setParent(oParent, null, true); + } + + //Remove existing style classes which are contained in aCssClassesToRemove + //(the list of css classes allowed for deletion) to have them updated later on + //Unfortunately, there is no other way to do this but remove + //each class individually + if (!!aCssClassesToRemove) { + for (var l = 0, removeLen = aCssClassesToRemove.length; l !== removeLen; l++) { + oImage.removeStyleClass(aCssClassesToRemove[l]); + } + } + //Add style classes if necessary + if (!!aCssClassesToAdd) { + for (var k = 0, len = aCssClassesToAdd.length; k !== len; k++) { + oImage.addStyleClass(aCssClassesToAdd[k]); + } + } + oImageControl = oImage; + return oImageControl; + } + }; + }(jQuery, window)); + + /** + * Helper for Popups + * + * @namespace + * @name sap.m.PopupHelper + * @since 1.16.7 + * @protected + */ + sap.m.PopupHelper = (function(){ + return { + /** + * This methods converts the percentage value to an absolute number based on the given base number. + * + * @param {string} sPercentage A percentage value in string format, for example "25%" + * @param {float} fBaseSize A float number which the calculation is based on. + * @returns The calculated size string with "px" as unit or null when the format of given parameter is wrong. + * + * @protected + * @name sap.m.PopupHelper.calcPercentageSize + * @function + */ + calcPercentageSize: function(sPercentage, fBaseSize){ + if (typeof sPercentage !== "string") { + jQuery.sap.log.warning("sap.m.PopupHelper: calcPercentageSize, the first parameter" + sPercentage + "isn't with type string"); + return null; + } + + if (sPercentage.indexOf("%") <= 0) { + jQuery.sap.log.warning("sap.m.PopupHelper: calcPercentageSize, the first parameter" + sPercentage + "is not a percentage string (for example '25%')"); + return null; + } + + var fPercent = parseFloat(sPercentage) / 100, + fParsedBaseSize = parseFloat(fBaseSize); + + return Math.floor(fPercent * fParsedBaseSize) + "px"; + } + }; + }()); + + /** + * Suggestion helper for sap.m.Input fields: Creates a multi column suggest list for a sap.m.Input field based on a ValueList + * annotation. The ValueList annotation will be resolved via the binding information of the Input field. + * + * If the annotation describes multiple input parameter the suggest provider will resolve all of these relative to the + * context of the Input filed and use them for the suggestion query. The suggest provider will write all values that are + * described as output parameters back to the model (relative to the context of the Input field). This can only be done if + * the model runs in "TwoWay" binding mode. Both features can be switched of via the bResolveInput/bResolveOutput parameter + * of the suggest function: + * + * @param {event} oEvent + * @param {boolean} bResolveInput SuggestProvider resolves all input parameters for the data query + * @param {boolean} bResolveOutput SuggestProvider writes back all output parameters. + * @param {int} iLength If iLength is provided only these number of entries will be requested. + * + * @name sap.m.InputODataSuggestProvider + * @since 1.21.2 + * + * @public + * + */ + sap.m.InputODataSuggestProvider = (function(){ + var _fnSuggestionItemSelected = function(oEvent) { + var oCtrl = oEvent.getSource(); + var mValueListAnnotation = oCtrl.data(oCtrl.getId() + "-#valueListAnnotation"); + var oModel = oCtrl.getModel(); + var oInputBinding = oCtrl.getBinding("value"); + var sInputPath = oModel.resolve(oInputBinding.getPath(), oInputBinding.getContext()); + + if (!mValueListAnnotation) { + return; + } + var oRow = oEvent.getParameter("selectedRow"); + jQuery.each(oRow.getCells(), function(iIndex, oCell) { + var oCellBinding = oCell.getBinding("text"); + jQuery.each(mValueListAnnotation.outParameters, function(sKey, oObj) { + if (!oObj.displayOnly && oObj.value == oCellBinding.getPath()) { + var oValue = oCellBinding.getValue(); + var sValuePath = oModel.resolve(sKey, oInputBinding.getContext()); + if (oValue && sValuePath !== sInputPath) { + oModel.setProperty(sValuePath, oValue); + } + } + }); + }); + return true; + }; + var _setValueListAnnotationData = function(oCtrl, bResolveOutput) { + var oModel = oCtrl.getModel(); + var oMetadata = oModel.oMetadata; + + var sPath = oModel.resolve(oCtrl.getBindingPath("value"), oCtrl.getBindingContext()); + + var mValueListAnnotation = {}; + mValueListAnnotation.searchSupported = false; + mValueListAnnotation.collectionPath = ""; + mValueListAnnotation.outParameters = {}; + mValueListAnnotation.inParameters = {}; + mValueListAnnotation.selection = []; + + var oAnnotation = oModel.getProperty(sPath + "/#com.sap.vocabularies.Common.v1.ValueList"); + if (!oAnnotation) { + return false; + } + var sProperty = sPath.substr(sPath.lastIndexOf('/') + 1); + mValueListAnnotation.inProperty = sProperty; + + jQuery.each(oAnnotation.record, function(i, aPropertyValues){ + jQuery.each(aPropertyValues, function(j, oPropertyValue){ + if (oPropertyValue.property === "SearchSupported" && oPropertyValue.bool) { + mValueListAnnotation.searchSupported = true; + } + if (oPropertyValue.property === "CollectionPath") { + mValueListAnnotation.collectionPath = oPropertyValue.string; + } + if (oPropertyValue.property === "Parameters") { + jQuery.each(oPropertyValue.collection.record, function(k, oRecord) { + if (oRecord.type === "com.sap.vocabularies.Common.v1.ValueListParameterIn") { + var sLocalProperty; + jQuery.each(oRecord.propertyValue, function(m, oPropVal) { + if (oPropVal.property === "LocalDataProperty") { + sLocalProperty = oPropVal.propertyPath; + } + }); + jQuery.each(oRecord.propertyValue, function(m, oPropVal) { + if (oPropVal.property === "ValueListProperty") { + mValueListAnnotation.inParameters[sLocalProperty] = {value:oPropVal.string}; + } + }); + } else if (oRecord.type === "com.sap.vocabularies.Common.v1.ValueListParameterInOut") { + var sLocalProperty; + jQuery.each(oRecord.propertyValue, function(m, oPropVal) { + if (oPropVal.property === "LocalDataProperty") { + sLocalProperty = oPropVal.propertyPath; + } + }); + jQuery.each(oRecord.propertyValue, function(m, oPropVal) { + if (oPropVal.property === "ValueListProperty") { + mValueListAnnotation.outParameters[sLocalProperty] = {value:oPropVal.string}; + mValueListAnnotation.inParameters[sLocalProperty] = {value:oPropVal.string}; + } + }); + } else if (oRecord.type === "com.sap.vocabularies.Common.v1.ValueListParameterOut") { + var sLocalProperty; + jQuery.each(oRecord.propertyValue, function(m, oPropVal) { + if (oPropVal.property === "LocalDataProperty") { + sLocalProperty = oPropVal.propertyPath; + } + }); + jQuery.each(oRecord.propertyValue, function(m, oPropVal) { + if (oPropVal.property === "ValueListProperty") { + mValueListAnnotation.outParameters[sLocalProperty] = {value:oPropVal.string}; + } + }); + } else if (oRecord.type === "com.sap.vocabularies.Common.v1.ValueListParameterDisplayOnly") { + var sLocalProperty; + jQuery.each(oRecord.propertyValue, function(m, oPropVal) { + if (oPropVal.property === "ValueListProperty") { + mValueListAnnotation.outParameters[oPropVal.string] = {value:oPropVal.string, displayOnly:true}; + } + }); + } + }); + } + }); + }); + mValueListAnnotation.resultEntity = oMetadata._getEntityTypeByPath("/" + mValueListAnnotation.collectionPath); + mValueListAnnotation.listItem = new sap.m.ColumnListItem(); + jQuery.each(mValueListAnnotation.outParameters, function(sKey, oObj) { + mValueListAnnotation.listItem.addCell(new sap.m.Text({text:"{" + oObj.value + "}", wrapping:false})); + oCtrl.addSuggestionColumn(new sap.m.Column({header: new sap.m.Text({text:"{/#" + mValueListAnnotation.resultEntity.name + "/" + oObj.value + "/@sap:label}", wrapping:false})})); + mValueListAnnotation.selection.push(oObj.value); + }); + oCtrl.data(oCtrl.getId() + "-#valueListAnnotation",mValueListAnnotation); + if (bResolveOutput) { + oCtrl.attachSuggestionItemSelected(_fnSuggestionItemSelected); + } + }; + return { + suggest: function(oEvent, bResolveInput, bResolveOutput, iLength){ + var mValueListAnnotation, + oCtrl = oEvent.getSource(); + + bResolveInput = bResolveInput === undefined ? true : bResolveInput; + bResolveOutput = bResolveOutput === undefined ? true : bResolveOutput; + + if (!oCtrl.data(oCtrl.getId() + "-#valueListAnnotation")) { + _setValueListAnnotationData(oCtrl, bResolveOutput); + } + mValueListAnnotation = oCtrl.data(oCtrl.getId() + "-#valueListAnnotation"); + + if (!mValueListAnnotation) { + return; + } + var _fnButtonHandler = function(oEvent) { + var iBindingLength = this.getLength(); + if (iBindingLength && iBindingLength <= iLength) { + oCtrl.setShowTableSuggestionValueHelp(false); + } else { + oCtrl.setShowTableSuggestionValueHelp(true); + } + }; + if (mValueListAnnotation.searchSupported) { + var aFilters = []; + var sSearchFocus, oCustomParams = {}; + if (bResolveInput) { + jQuery.each(mValueListAnnotation.inParameters, function(sKey, oObj) { + if (sKey == mValueListAnnotation.inProperty) { + sSearchFocus = oObj.value; + } else if (bResolveInput) { + var oValue = oCtrl.getModel().getProperty(sKey,oCtrl.getBinding("value").getContext()); + if (oValue) { + aFilters.push(new sap.ui.model.Filter(oObj.value, sap.ui.model.FilterOperator.StartsWith,oValue)); + } + } + }); + } + oCustomParams.search = oEvent.getParameter("suggestValue"); + + if (mValueListAnnotation.inParameters.length) { + if (sSearchFocus) { + oCustomParams["search-focus"] = sSearchFocus; + } else { + jQuery.sap.assert(false, 'no search-focus defined'); + } + } + + oCtrl.bindAggregation("suggestionRows",{ + path:"/" + mValueListAnnotation.collectionPath, + length: iLength, + filters: aFilters, + parameters: { + select: mValueListAnnotation.selection.join(','), + custom: oCustomParams + }, + events: { + dataReceived: _fnButtonHandler + }, + template: mValueListAnnotation.listItem + }); + } else { + //create filter array + var aFilters = []; + jQuery.each(mValueListAnnotation.inParameters, function(sKey, oObj) { + if (sKey == mValueListAnnotation.inProperty) { + aFilters.push(new sap.ui.model.Filter(oObj.value, sap.ui.model.FilterOperator.StartsWith,oEvent.getParameter("suggestValue"))); + } else if (bResolveInput) { + var oValue = oCtrl.getModel().getProperty(sKey,oCtrl.getBinding("value").getContext()); + if (oValue) { + aFilters.push(new sap.ui.model.Filter(oObj.value, sap.ui.model.FilterOperator.StartsWith,oValue)); + } + } + }); + oCtrl.bindAggregation("suggestionRows",{ + path:"/" + mValueListAnnotation.collectionPath, + filters: aFilters, + template: mValueListAnnotation.listItem, + length: iLength, + parameters: { + select: mValueListAnnotation.selection.join(',') + }, + events: { + dataReceived: _fnButtonHandler + } + }); + } + } + }; + }()); + + // implement Form helper factory with m controls + // possible is set before layout lib is loaded. + jQuery.sap.setObject("sap.ui.layout.form.FormHelper", { + createLabel: function(sText){ + return new sap.m.Label({text: sText}); + }, + createButton: function(sId, fPressFunction, oThis){ + var oButton = new sap.m.Button(sId); + oButton.attachEvent('press', fPressFunction, oThis); // attach event this way to have the right this-reference in handler + return oButton; + }, + setButtonContent: function(oButton, sText, sTooltip, sIcon, sIconHovered){ + oButton.setText(sText); + oButton.setTooltip(sTooltip); + oButton.setIcon(sIcon); + oButton.setActiveIcon(sIconHovered); + }, + addFormClass: function(){ return "sapUiFormM"; }, + bArrowKeySupport: false, /* disables the keyboard support for arrow keys */ + bFinal: true + }); + + //implement FileUploader helper factory with m controls + jQuery.sap.setObject("sap.ui.unified.FileUploaderHelper", { + createTextField: function(sId){ + var oTextField = new sap.m.Input(sId); + return oTextField; + }, + setTextFieldContent: function(oTextField, sWidth){ + oTextField.setWidth(sWidth); + }, + createButton: function(){ + var oButton = new sap.m.Button(); + return oButton; + }, + bFinal: true + }); + + //implement table helper factory with m controls + //possible is set before layout lib is loaded. + jQuery.sap.setObject("sap.ui.table.TableHelper", { + createLabel: function(mConfig){ + return new sap.m.Label(mConfig); + }, + createTextView: function(mConfig){ + return new sap.m.Label(mConfig); + }, + createTextField: function(mConfig){ + return new sap.m.Input(mConfig); + }, + createImage: function(mConfig){ + var oImage = new sap.m.Image(mConfig); + oImage.setDensityAware(false); // by default we do not have density aware images in the Table + return oImage; + }, + addTableClass: function() { return "sapUiTableM"; }, + bFinal: true + }); + + + /* Android and Blackberry browsers do not scroll a focused input into the view correctly after resize */ + if (sap.ui.Device.os.blackberry || sap.ui.Device.os.android && sap.ui.Device.os.version >= 4) { + jQuery(window).on("resize", function(){ + var oActive = document.activeElement; + var sTagName = oActive.tagName; + if (sTagName == "INPUT" || sTagName == "TEXTAREA") { + window.setTimeout(function(){ + oActive.scrollIntoViewIfNeeded(); + }, 0); + } + }); + } + + return sap.m; + +}, /* bExport= */ false); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/library.js b/DVHMA-OpenUI5/www/resources/sap/m/library.js new file mode 100644 index 0000000..29ac984 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/library.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/Device','sap/ui/core/library','jquery.sap.mobile','./Support'],function(q,D){"use strict";sap.ui.getCore().initLibrary({name:"sap.m",version:"1.28.5",dependencies:["sap.ui.core"],types:["sap.m.BackgroundDesign","sap.m.BarDesign","sap.m.ButtonType","sap.m.DateTimeInputType","sap.m.DialogType","sap.m.FacetFilterListDataType","sap.m.FacetFilterType","sap.m.FlexAlignItems","sap.m.FlexAlignSelf","sap.m.FlexDirection","sap.m.FlexJustifyContent","sap.m.FlexRendertype","sap.m.HeaderLevel","sap.m.IBarHTMLTag","sap.m.IconTabFilterDesign","sap.m.InputType","sap.m.LabelDesign","sap.m.ListHeaderDesign","sap.m.ListMode","sap.m.ListSeparators","sap.m.ListType","sap.m.P13nPanelType","sap.m.PageBackgroundDesign","sap.m.PlacementType","sap.m.PopinDisplay","sap.m.RatingIndicatorVisualMode","sap.m.ScreenSize","sap.m.SelectType","sap.m.SplitAppMode","sap.m.StandardTileType","sap.m.SwipeDirection","sap.m.SwitchType","sap.m.ToolbarDesign","sap.m.VerticalPlacementType"],interfaces:["sap.m.IBar","sap.m.IconTab","sap.m.ObjectHeaderContainer"],controls:["sap.m.ActionListItem","sap.m.ActionSelect","sap.m.ActionSheet","sap.m.App","sap.m.Bar","sap.m.BusyDialog","sap.m.BusyIndicator","sap.m.Button","sap.m.Carousel","sap.m.CheckBox","sap.m.ColumnListItem","sap.m.ComboBox","sap.m.ComboBoxBase","sap.m.CustomListItem","sap.m.CustomTile","sap.m.DatePicker","sap.m.DateRangeSelection","sap.m.DateTimeInput","sap.m.Dialog","sap.m.DisplayListItem","sap.m.FacetFilter","sap.m.FacetFilterItem","sap.m.FacetFilterList","sap.m.FeedInput","sap.m.FeedListItem","sap.m.FlexBox","sap.m.GroupHeaderListItem","sap.m.GrowingList","sap.m.HBox","sap.m.IconTabBar","sap.m.IconTabHeader","sap.m.Image","sap.m.Input","sap.m.InputBase","sap.m.InputListItem","sap.m.Label","sap.m.Link","sap.m.List","sap.m.ListBase","sap.m.ListItemBase","sap.m.MessagePage","sap.m.MessagePopover","sap.m.MultiComboBox","sap.m.MultiInput","sap.m.NavContainer","sap.m.ObjectAttribute","sap.m.ObjectHeader","sap.m.ObjectIdentifier","sap.m.ObjectListItem","sap.m.ObjectNumber","sap.m.ObjectStatus","sap.m.OverflowToolbar","sap.m.OverflowToolbarButton","sap.m.P13nColumnsItem","sap.m.P13nColumnsPanel","sap.m.P13nConditionPanel","sap.m.P13nDialog","sap.m.P13nFilterPanel","sap.m.P13nPanel","sap.m.P13nSortPanel","sap.m.Page","sap.m.Panel","sap.m.Popover","sap.m.ProgressIndicator","sap.m.PullToRefresh","sap.m.RadioButton","sap.m.RadioButtonGroup","sap.m.RatingIndicator","sap.m.ResponsivePopover","sap.m.ScrollContainer","sap.m.SearchField","sap.m.SegmentedButton","sap.m.Select","sap.m.SelectDialog","sap.m.SelectList","sap.m.Shell","sap.m.Slider","sap.m.SplitApp","sap.m.SplitContainer","sap.m.StandardListItem","sap.m.StandardTile","sap.m.Switch","sap.m.Table","sap.m.TableSelectDialog","sap.m.Text","sap.m.TextArea","sap.m.Tile","sap.m.TileContainer","sap.m.Title","sap.m.ToggleButton","sap.m.Token","sap.m.Tokenizer","sap.m.Toolbar","sap.m.ToolbarSpacer","sap.m.ToolbarSeparator","sap.m.UploadCollection","sap.m.VBox","sap.m.ViewSettingsDialog"],elements:["sap.m.Column","sap.m.FlexItemData","sap.m.IconTabFilter","sap.m.IconTabSeparator","sap.m.OverflowToolbarLayoutData","sap.m.MessagePopoverItem","sap.m.P13nFilterItem","sap.m.P13nItem","sap.m.P13nSortItem","sap.m.SegmentedButtonItem","sap.m.ToolbarLayoutData","sap.m.UploadCollectionItem","sap.m.UploadCollectionParameter","sap.m.ViewSettingsCustomItem","sap.m.ViewSettingsFilterItem","sap.m.ViewSettingsItem"]});sap.m.BackgroundDesign={Solid:"Solid",Transparent:"Transparent",Translucent:"Translucent"};sap.m.BarDesign={Auto:"Auto",Header:"Header",SubHeader:"SubHeader",Footer:"Footer"};sap.m.ButtonType={Default:"Default",Back:"Back",Accept:"Accept",Reject:"Reject",Transparent:"Transparent",Up:"Up",Unstyled:"Unstyled",Emphasized:"Emphasized"};sap.m.DateTimeInputType={Date:"Date",DateTime:"DateTime",Time:"Time"};sap.m.DialogType={Standard:"Standard",Message:"Message"};sap.m.FacetFilterListDataType={Date:"Date",DateTime:"DateTime",Time:"Time",Integer:"Integer",Float:"Float",String:"String",Boolean:"Boolean"};sap.m.FacetFilterType={Simple:"Simple",Light:"Light"};sap.m.FlexAlignItems={Start:"Start",End:"End",Center:"Center",Baseline:"Baseline",Stretch:"Stretch",Inherit:"Inherit"};sap.m.FlexAlignSelf={Auto:"Auto",Start:"Start",End:"End",Center:"Center",Baseline:"Baseline",Stretch:"Stretch",Inherit:"Inherit"};sap.m.FlexDirection={Row:"Row",Column:"Column",RowReverse:"RowReverse",ColumnReverse:"ColumnReverse",Inherit:"Inherit"};sap.m.FlexJustifyContent={Start:"Start",End:"End",Center:"Center",SpaceBetween:"SpaceBetween",SpaceAround:"SpaceAround",Inherit:"Inherit"};sap.m.FlexRendertype={Div:"Div",List:"List"};sap.m.HeaderLevel={H1:"H1",H2:"H2",H3:"H3",H4:"H4",H5:"H5",H6:"H6"};sap.m.IBarHTMLTag={Div:"Div",Header:"Header",Footer:"Footer"};sap.m.IconTabFilterDesign={Horizontal:"Horizontal",Vertical:"Vertical"};sap.m.InputType={Text:"Text",Date:"Date",Datetime:"Datetime",DatetimeLocale:"DatetimeLocale",Email:"Email",Month:"Month",Number:"Number",Tel:"Tel",Time:"Time",Url:"Url",Week:"Week",Password:"Password"};sap.m.LabelDesign={Bold:"Bold",Standard:"Standard"};sap.m.ListHeaderDesign={Standard:"Standard",Plain:"Plain"};sap.m.ListMode={None:"None",SingleSelect:"SingleSelect",MultiSelect:"MultiSelect",Delete:"Delete",SingleSelectMaster:"SingleSelectMaster",SingleSelectLeft:"SingleSelectLeft"};sap.m.ListSeparators={All:"All",Inner:"Inner",None:"None"};sap.m.ListType={Inactive:"Inactive",Detail:"Detail",Navigation:"Navigation",Active:"Active",DetailAndActive:"DetailAndActive"};sap.m.P13nPanelType={sort:"sort",filter:"filter",group:"group",columns:"columns"};sap.m.PageBackgroundDesign={Standard:"Standard",List:"List",Solid:"Solid",Transparent:"Transparent"};sap.m.PlacementType={Left:"Left",Right:"Right",Top:"Top",Bottom:"Bottom",Vertical:"Vertical",Horizontal:"Horizontal",Auto:"Auto"};sap.m.VerticalPlacementType={Top:"Top",Bottom:"Bottom",Vertical:"Vertical"};sap.m.PopinDisplay={Block:"Block",Inline:"Inline",WithoutHeader:"WithoutHeader"};sap.m.RatingIndicatorVisualMode={Full:"Full",Half:"Half"};sap.m.ScreenSize={Phone:"Phone",Tablet:"Tablet",Desktop:"Desktop",XXSmall:"XXSmall",XSmall:"XSmall",Small:"Small",Medium:"Medium",Large:"Large",XLarge:"XLarge",XXLarge:"XXLarge"};sap.m.SelectType={Default:"Default",IconOnly:"IconOnly"};sap.m.SplitAppMode={ShowHideMode:"ShowHideMode",StretchCompressMode:"StretchCompressMode",PopoverMode:"PopoverMode",HideMode:"HideMode"};sap.m.StandardTileType={Create:"Create",Monitor:"Monitor",None:"None"};sap.m.SwipeDirection={LeftToRight:"LeftToRight",RightToLeft:"RightToLeft",Both:"Both"};sap.m.SwitchType={Default:"Default",AcceptReject:"AcceptReject"};sap.m.ToolbarDesign={Auto:"Auto",Transparent:"Transparent",Info:"Info",Solid:"Solid"};sap.ui.lazyRequire("sap.m.MessageToast","show");sap.ui.lazyRequire("sap.m.routing.RouteMatchedHandler");sap.ui.lazyRequire("sap.m.routing.Router");sap.ui.lazyRequire("sap.m.routing.Target");sap.ui.lazyRequire("sap.m.routing.TargetHandler");sap.ui.lazyRequire("sap.m.routing.Targets");if(D.os.ios&&D.os.version>=7&&D.os.version<8&&D.browser.name==="sf"){q.sap.require("sap.m.ios7");}if(/sap-ui-xx-formfactor=compact/.test(location.search)){q("html").addClass("sapUiSizeCompact");sap.m._bSizeCompact=true;}if(/sap-ui-xx-formfactor=condensed/.test(location.search)){q("html").addClass("sapUiSizeCondensed");sap.m._bSizeCondensed=true;}!(function(l){l.getInvalidDate=function(){return null;};l.getLocale=function(){var c=sap.ui.getCore().getConfiguration(),L=c.getFormatSettings().getFormatLocale().toString(),o=new sap.ui.core.Locale(L);c=L=null;l.getLocale=function(){return o;};return o;};l.getLocaleData=function(){q.sap.require("sap.ui.model.type.Date");var L=sap.ui.core.LocaleData.getInstance(l.getLocale());l.getLocaleData=function(){return L;};return L;};l.isDate=function(v){return v&&Object.prototype.toString.call(v)=="[object Date]"&&!isNaN(v);};l.getIScroll=function(c){if(typeof window.iScroll!="function"||!(c instanceof sap.ui.core.Control)){return;}var p,s;for(p=c;p=p.oParent;){s=p.getScrollDelegate?p.getScrollDelegate()._scroller:null;if(s&&s instanceof window.iScroll){return s;}}};l.getScrollDelegate=function(c){if(!(c instanceof sap.ui.core.Control)){return;}for(var p=c;p=p.oParent;){if(typeof p.getScrollDelegate=="function"){return p.getScrollDelegate();}}};l.ScreenSizes={phone:240,tablet:600,desktop:1024,xxsmall:240,xsmall:320,small:480,medium:560,large:768,xlarge:960,xxlarge:1120};l.BaseFontSize=q(document.documentElement).css("font-size");l.closeKeyboard=function(){var a=document.activeElement;if(!D.system.desktop&&a&&/(INPUT|TEXTAREA)/i.test(a.tagName)){a.blur();}};}(sap.m));if(sap.m&&!sap.m.touch){sap.m.touch={};}sap.m.touch.find=function(t,T){var i,a;if(!t){return;}if(T&&typeof T.identifier!=="undefined"){T=T.identifier;}else if(typeof T!=="number"){return;}a=t.length;for(i=0;i1){o=1;}r.addStyle("opacity",o);}r.writeClasses();r.writeStyles();r.write(">");}};}(q,window));sap.m.ImageHelper=(function($,w){function c(C,p,v){if(v!==undefined){var s=C['set'+q.sap.charToUpperCase(p)];if(typeof(s)==="function"){s.call(C,v);return true;}}return false;}return{getImageControl:function(i,I,p,P,C,a){if(I&&(I.getSrc()!=P['src'])){I.destroy();I=undefined;}var o=I;if(!!o&&(o instanceof sap.m.Image||o instanceof sap.ui.core.Icon)){for(var b in P){c(o,b,P[b]);}}else{if(!sap.m.Image){q.sap.require("sap.m.Image");}var s=P;s['id']=i;o=sap.ui.core.IconPool.createControlByURI(s,sap.m.Image);o.setParent(p,null,true);}if(!!a){for(var l=0,r=a.length;l!==r;l++){o.removeStyleClass(a[l]);}}if(!!C){for(var k=0,d=C.length;k!==d;k++){o.addStyleClass(C[k]);}}I=o;return I;}};}(q,window));sap.m.PopupHelper=(function(){return{calcPercentageSize:function(p,b){if(typeof p!=="string"){q.sap.log.warning("sap.m.PopupHelper: calcPercentageSize, the first parameter"+p+"isn't with type string");return null;}if(p.indexOf("%")<=0){q.sap.log.warning("sap.m.PopupHelper: calcPercentageSize, the first parameter"+p+"is not a percentage string (for example '25%')");return null;}var P=parseFloat(p)/100,f=parseFloat(b);return Math.floor(P*f)+"px";}};}());sap.m.InputODataSuggestProvider=(function(){var _=function(e){var c=e.getSource();var v=c.data(c.getId()+"-#valueListAnnotation");var m=c.getModel();var i=c.getBinding("value");var I=m.resolve(i.getPath(),i.getContext());if(!v){return;}var r=e.getParameter("selectedRow");q.each(r.getCells(),function(b,C){var o=C.getBinding("text");q.each(v.outParameters,function(k,O){if(!O.displayOnly&&O.value==o.getPath()){var V=o.getValue();var s=m.resolve(k,i.getContext());if(V&&s!==I){m.setProperty(s,V);}}});});return true;};var a=function(c,r){var M=c.getModel();var o=M.oMetadata;var p=M.resolve(c.getBindingPath("value"),c.getBindingContext());var v={};v.searchSupported=false;v.collectionPath="";v.outParameters={};v.inParameters={};v.selection=[];var A=M.getProperty(p+"/#com.sap.vocabularies.Common.v1.ValueList");if(!A){return false;}var P=p.substr(p.lastIndexOf('/')+1);v.inProperty=P;q.each(A.record,function(i,b){q.each(b,function(j,d){if(d.property==="SearchSupported"&&d.bool){v.searchSupported=true;}if(d.property==="CollectionPath"){v.collectionPath=d.string;}if(d.property==="Parameters"){q.each(d.collection.record,function(k,R){if(R.type==="com.sap.vocabularies.Common.v1.ValueListParameterIn"){var l;q.each(R.propertyValue,function(m,e){if(e.property==="LocalDataProperty"){l=e.propertyPath;}});q.each(R.propertyValue,function(m,e){if(e.property==="ValueListProperty"){v.inParameters[l]={value:e.string};}});}else if(R.type==="com.sap.vocabularies.Common.v1.ValueListParameterInOut"){var l;q.each(R.propertyValue,function(m,e){if(e.property==="LocalDataProperty"){l=e.propertyPath;}});q.each(R.propertyValue,function(m,e){if(e.property==="ValueListProperty"){v.outParameters[l]={value:e.string};v.inParameters[l]={value:e.string};}});}else if(R.type==="com.sap.vocabularies.Common.v1.ValueListParameterOut"){var l;q.each(R.propertyValue,function(m,e){if(e.property==="LocalDataProperty"){l=e.propertyPath;}});q.each(R.propertyValue,function(m,e){if(e.property==="ValueListProperty"){v.outParameters[l]={value:e.string};}});}else if(R.type==="com.sap.vocabularies.Common.v1.ValueListParameterDisplayOnly"){var l;q.each(R.propertyValue,function(m,e){if(e.property==="ValueListProperty"){v.outParameters[e.string]={value:e.string,displayOnly:true};}});}});}});});v.resultEntity=o._getEntityTypeByPath("/"+v.collectionPath);v.listItem=new sap.m.ColumnListItem();q.each(v.outParameters,function(k,O){v.listItem.addCell(new sap.m.Text({text:"{"+O.value+"}",wrapping:false}));c.addSuggestionColumn(new sap.m.Column({header:new sap.m.Text({text:"{/#"+v.resultEntity.name+"/"+O.value+"/@sap:label}",wrapping:false})}));v.selection.push(O.value);});c.data(c.getId()+"-#valueListAnnotation",v);if(r){c.attachSuggestionItemSelected(_);}};return{suggest:function(e,r,R,l){var v,c=e.getSource();r=r===undefined?true:r;R=R===undefined?true:R;if(!c.data(c.getId()+"-#valueListAnnotation")){a(c,R);}v=c.data(c.getId()+"-#valueListAnnotation");if(!v){return;}var b=function(e){var B=this.getLength();if(B&&B<=l){c.setShowTableSuggestionValueHelp(false);}else{c.setShowTableSuggestionValueHelp(true);}};if(v.searchSupported){var f=[];var s,C={};if(r){q.each(v.inParameters,function(k,o){if(k==v.inProperty){s=o.value;}else if(r){var V=c.getModel().getProperty(k,c.getBinding("value").getContext());if(V){f.push(new sap.ui.model.Filter(o.value,sap.ui.model.FilterOperator.StartsWith,V));}}});}C.search=e.getParameter("suggestValue");if(v.inParameters.length){if(s){C["search-focus"]=s;}else{}}c.bindAggregation("suggestionRows",{path:"/"+v.collectionPath,length:l,filters:f,parameters:{select:v.selection.join(','),custom:C},events:{dataReceived:b},template:v.listItem});}else{var f=[];q.each(v.inParameters,function(k,o){if(k==v.inProperty){f.push(new sap.ui.model.Filter(o.value,sap.ui.model.FilterOperator.StartsWith,e.getParameter("suggestValue")));}else if(r){var V=c.getModel().getProperty(k,c.getBinding("value").getContext());if(V){f.push(new sap.ui.model.Filter(o.value,sap.ui.model.FilterOperator.StartsWith,V));}}});c.bindAggregation("suggestionRows",{path:"/"+v.collectionPath,filters:f,template:v.listItem,length:l,parameters:{select:v.selection.join(',')},events:{dataReceived:b}});}}};}());q.sap.setObject("sap.ui.layout.form.FormHelper",{createLabel:function(t){return new sap.m.Label({text:t});},createButton:function(i,p,t){var b=new sap.m.Button(i);b.attachEvent('press',p,t);return b;},setButtonContent:function(b,t,T,i,I){b.setText(t);b.setTooltip(T);b.setIcon(i);b.setActiveIcon(I);},addFormClass:function(){return"sapUiFormM";},bArrowKeySupport:false,bFinal:true});q.sap.setObject("sap.ui.unified.FileUploaderHelper",{createTextField:function(i){var t=new sap.m.Input(i);return t;},setTextFieldContent:function(t,w){t.setWidth(w);},createButton:function(){var b=new sap.m.Button();return b;},bFinal:true});q.sap.setObject("sap.ui.table.TableHelper",{createLabel:function(c){return new sap.m.Label(c);},createTextView:function(c){return new sap.m.Label(c);},createTextField:function(c){return new sap.m.Input(c);},createImage:function(c){var i=new sap.m.Image(c);i.setDensityAware(false);return i;},addTableClass:function(){return"sapUiTableM";},bFinal:true});if(sap.ui.Device.os.blackberry||sap.ui.Device.os.android&&sap.ui.Device.os.version>=4){q(window).on("resize",function(){var a=document.activeElement;var t=a.tagName;if(t=="INPUT"||t=="TEXTAREA"){window.setTimeout(function(){a.scrollIntoViewIfNeeded();},0);}});}return sap.m;},false); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/library.templates.xml b/DVHMA-OpenUI5/www/resources/sap/m/library.templates.xml new file mode 100644 index 0000000..654a8bf --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/library.templates.xml @@ -0,0 +1,5826 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle.properties new file mode 100644 index 0000000..c360bc9 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle.properties @@ -0,0 +1,523 @@ +#This is the resource bundle for the SAPUI5 sap.m library +#__ldi.translation.uuid=d5a6d4a0-e171-11e1-9b23-0800200c9a66 + +#XACT: ARIA keyboard announcement for the combo box arrow +COMBOBOX_BUTTON=Arrow Down + +#XBLI: List text for no data lists +LIST_NO_DATA=No data + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Unread + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Deletable + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Has Details + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Is Editable + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Is Active + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Group Header + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} of {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Back + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=On +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Off + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Accept + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Reject + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Cancel + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Cancel + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=More + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Cancel + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Month + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Day + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Year + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Hours + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minutes + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Seconds + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Now + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigation + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Cancel + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Yes + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=No + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Abort + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Retry + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignore + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Close + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Delete + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Alert + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Confirmation + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Show Details + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Pull Down to Refresh + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Release to Refresh + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Loading... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Please wait, data is loading + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Refresh + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Logout + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Cancel + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Undo Personalization + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Columns + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=All + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=No columns found + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=View + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Sort By + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Group By + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filter By + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filter By\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtered by\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Cancel + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=None + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Ascending + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Descending + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Clear All Filters + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=All + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (All) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Search + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filter + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtered by {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=No filters selected + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=and + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Several filters applied + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} more... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} more available + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Search Further on Server + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Remove Filter + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Items selected\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Post something here + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Submit + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Show All Items + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Remove Facet List + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Add Facet List + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Reset + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Previous + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Next + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=MORE + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=LESS + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Attachments ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Are you sure you want to delete ''{0}''? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Are you sure you want to delete the file? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Delete File + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=The upload for the following files will be terminated\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Terminate upload + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=File name already exists + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Uploading\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Upload failed + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=File type not allowed + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Cancel + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=View Settings +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Define Filters +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Define Sorting +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Define Groups +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Define Column Properties +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Cancel +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Restore +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Sorting +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filters +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Groups +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Calculation +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Columns +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Warning +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Some condition values are missing.\n Only complete entries will be added to the filter. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Selecting a large number of columns can slow down the performance + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Include + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Exclude + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=between +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=equal to +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=contains +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=greater than +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=greater than or equal to +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=less than +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=less than or equal to +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=initial +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=starts with +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=ends with +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Ascending +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Descending +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Ascending +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Descending +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Total +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Average +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maximum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=between +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=equal to +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=after +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=on or after +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=before +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=before or on +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=between +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=equal to +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=greater than +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=greater than or equal to +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=less than +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=less than or equal to + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=from +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=to +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Value +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Show Field as Column +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Add New Line +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Enter valid value + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Show All +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Show Selected +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Select All +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Select all ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Move to Top +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Move Up +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Move Down +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Move to Bottom + +#XFLD: Subtle link description label +LINK_SUBTLE=Subtle +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Emphasized + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Press F5 to refresh + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Press F4 to open a value help dialog + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Footer +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Header +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Subheader + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Value State Error +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Value State Warning +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Value State Success + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Next Step +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positive +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Critical +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negative + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} of {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Rating + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Favorite +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Flag + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Select Title Arrow +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Icon + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=No matching items found. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Check the filter settings + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} More + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Unread +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Locked + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Close +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=All +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Back +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Messages + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Positive Action +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negative Action +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Emphasized + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Item {0} of {1} displayed + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ar.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ar.properties new file mode 100644 index 0000000..c818fa0 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ar.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\u0644\u0627 \u062A\u0648\u062C\u062F \u0628\u064A\u0627\u0646\u0627\u062A + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=\u063A\u064A\u0631 \u0645\u0642\u0631\u0648\u0621\u0629 + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=\u063A\u064A\u0631 \u0642\u0627\u0628\u0644 \u0644\u0644\u062D\u0630\u0641 + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=\u0628\u0647 \u062A\u0641\u0627\u0635\u064A\u0644 + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\u0642\u0627\u0628\u0644 \u0644\u0644\u062A\u062D\u0631\u064A\u0631 + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\u0646\u0634\u0637 + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=\u0645\u0642\u062F\u0645\u0629 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} \u0644\u0640 {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=\u0627\u0644\u062E\u0644\u0641 + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=\u0641\u062A\u062D +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=\u063A\u0644\u0642 + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=\u0642\u0628\u0648\u0644 + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=\u0631\u0641\u0636 + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=\u0625\u0644\u063A\u0627\u0621 + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=\u0625\u0644\u063A\u0627\u0621 + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=\u0627\u0644\u0645\u0632\u064A\u062F + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=\u0645\u0648\u0627\u0641\u0642 + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=\u0625\u0644\u063A\u0627\u0621 + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=\u0634\u0647\u0631 + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=\u064A\u0648\u0645 + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u0627\u0644\u0633\u0646\u0629 + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=\u0633\u0627\u0639\u0627\u062A + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=\u062F\u0642\u0627\u0626\u0642 + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=\u062B\u0648\u0627\u0646\u064D + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=\u0627\u0644\u0622\u0646 + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=\u062A\u0646\u0642\u0644 + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=\u0645\u0648\u0627\u0641\u0642 + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=\u0625\u0644\u063A\u0627\u0621 + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=\u0646\u0639\u0645 + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=\u0644\u0627 + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\u0625\u064A\u0642\u0627\u0641 + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=\u062A\u062C\u0627\u0647\u0644 + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\u0625\u063A\u0644\u0627\u0642 + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=\u062D\u0630\u0641 + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=\u062A\u0646\u0628\u064A\u0647 + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=\u062A\u0623\u0643\u064A\u062F + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=\u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u062A\u0641\u0627\u0635\u064A\u0644 + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=\u0627\u0644\u0633\u062D\u0628 \u0644\u0623\u0633\u0641\u0644 \u0644\u062A\u062D\u062F\u064A\u062B + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=\u062A\u062D\u0631\u064A\u0631 \u0644\u062A\u062D\u062F\u064A\u062B + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=\u0631\u062C\u0627\u0621 \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631\u060C\u064A\u062A\u0645 \u062A\u062D\u0645\u064A\u0644 \u0628\u064A\u0627\u0646\u0627\u062A + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=\u062A\u062D\u062F\u064A\u062B + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062E\u0631\u0648\u062C + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=\u0645\u0648\u0627\u0641\u0642 + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=\u0625\u0644\u063A\u0627\u0621 + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=\u062A\u0631\u0627\u062C\u0639 \u0639\u0646 \u0627\u0644\u062A\u062E\u0635\u064A\u0635 + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=\u0623\u0639\u0645\u062F\u0629 + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=\u0627\u0644\u0643\u0644 + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0623\u064A \u0623\u0639\u0645\u062F\u0629 + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=\u0639\u0631\u0636 + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=\u062A\u0631\u062A\u064A\u0628 \u062D\u0633\u0628 + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=\u062A\u062C\u0645\u064A\u0639 \u062D\u0633\u0628 + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=\u062A\u0635\u0641\u064A\u0629 \u062D\u0633\u0628 + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=\u062A\u0635\u0641\u064A\u0629 \u062D\u0633\u0628\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\u062A\u0645\u062A \u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u062D\u0633\u0628\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=\u0645\u0648\u0627\u0641\u0642 + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=\u0625\u0644\u063A\u0627\u0621 + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=\u0644\u0627 \u0634\u064A\u0621 + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=\u062A\u0635\u0627\u0639\u062F\u064A + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=\u062A\u0646\u0627\u0632\u0644\u064A + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\u0645\u0633\u062D \u0643\u0644 \u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=\u0627\u0644\u0643\u0644 + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (\u0627\u0644\u0643\u0644) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=\u0628\u062D\u062B + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=\u0639\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=\u0645\u0648\u0627\u0641\u0642 + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=\u062A\u0645\u062A \u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u062D\u0633\u0628 {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=\u0644\u0645 \u064A\u062A\u0645 \u062A\u062D\u062F\u064A\u062F \u0623\u064A \u0639\u0648\u0627\u0645\u0644 \u062A\u0635\u0641\u064A\u0629 + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\u0648 + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=\u062A\u0645 \u062A\u0637\u0628\u064A\u0642 \u0639\u062F\u0629 \u0639\u0648\u0627\u0645\u0644 \u062A\u0635\u0641\u064A\u0629 + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} \u0627\u0644\u0645\u0632\u064A\u062F... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} \u0627\u0644\u0645\u0632\u064A\u062F \u0627\u0644\u0645\u062A\u0648\u0641\u0631 + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=\u0627\u0644\u0628\u062D\u062B \u0623\u0643\u062B\u0631 \u0641\u064A \u0627\u0644\u062E\u0627\u062F\u0645 + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=\u0625\u0632\u0627\u0644\u0629 \u0639\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=\u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u062A\u064A \u062A\u0645 \u062A\u062D\u062F\u064A\u062F\u0647\u0627\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\u0646\u0634\u0631 \u0634\u064A\u0621 \u0645\u0627 \u0647\u0646\u0627 + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=\u062A\u0642\u062F\u064A\u0645 + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=\u0625\u0638\u0647\u0627\u0631 \u0643\u0644 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=\u0625\u0632\u0627\u0644\u0629 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0648\u0627\u062C\u0647\u0629 + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=\u0625\u0636\u0627\u0641\u0629 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0648\u0627\u062C\u0647\u0629 + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=\u0625\u0639\u0627\u062F\u0629\u062A\u0639\u064A\u064A\u0646 + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=\u0627\u0644\u0633\u0627\u0628\u0642 + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=\u0627\u0644\u062A\u0627\u0644\u064A + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=\u0627\u0644\u0645\u0632\u064A\u062F + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=\u0623\u0642\u0644 + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=\u0627\u0644\u0645\u0631\u0641\u0642\u0627\u062A ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u0647\u0644 \u062A\u0631\u064A\u062F \u0628\u0627\u0644\u062A\u0623\u0643\u064A\u062F \u062D\u0630\u0641 \u0627\u0644\u0645\u0644\u0641 {0}\u061F + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\u0647\u0644 \u062A\u0631\u064A\u062F \u0628\u0627\u0644\u0641\u0639\u0644 \u062D\u0630\u0641 \u0627\u0644\u0645\u0644\u0641\u061F + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=\u062D\u0630\u0641 \u0627\u0644\u0645\u0644\u0641 + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\u0633\u064A\u062A\u0645 \u0625\u0646\u0647\u0627\u0621 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u062A\u0627\u0644\u064A\u0629\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=\u0642\u0645 \u0628\u0625\u0646\u0647\u0627\u0621 \u0627\u0644\u062A\u062D\u0645\u064A\u0644 + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=\u0627\u0633\u0645 \u0627\u0644\u0645\u0644\u0641 \u0645\u0648\u062C\u0648\u062F \u0628\u0627\u0644\u0641\u0639\u0644 + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u062A\u062D\u0645\u064A\u0644\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\u0641\u0634\u0644 \u0627\u0644\u062A\u062D\u0645\u064A\u0644 + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=\u0647\u0630\u0627 \u0627\u0644\u0646\u0648\u0639 \u0645\u0646 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u063A\u064A\u0631 \u0645\u0633\u0645\u0648\u062D + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=\u0625\u0644\u063A\u0627\u0621 + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=\u0645\u0648\u0627\u0641\u0642 + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=\u0639\u0631\u0636 \u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=\u062A\u062D\u062F\u064A\u062F \u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u062A\u0631\u062A\u064A\u0628 +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=\u062A\u062D\u062F\u064A\u062F \u062E\u0635\u0627\u0626\u0635 \u0627\u0644\u0623\u0639\u0645\u062F\u0629 +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=\u0645\u0648\u0627\u0641\u0642 +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=\u0625\u0644\u063A\u0627\u0621 +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=\u0627\u0633\u062A\u0639\u0627\u062F\u0629 +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=\u062A\u0631\u062A\u064A\u0628 +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=\u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=\u0645\u062C\u0645\u0648\u0639\u0627\u062A +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=\u0627\u062D\u062A\u0633\u0627\u0628 +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=\u0623\u0639\u0645\u062F\u0629 +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=\u062A\u062D\u0630\u064A\u0631 +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=\u0628\u0639\u0636 \u0642\u064A\u0645 \u0627\u0644\u0634\u0631\u0648\u0637 \u0645\u0641\u0642\u0648\u062F\u0629.\n \u0644\u0646 \u062A\u062A\u0645 \u0625\u0636\u0627\u0641\u0629 \u0633\u0648\u0649 \u0627\u0644\u0625\u062F\u062E\u0627\u0644\u0627\u062A \u0627\u0644\u0645\u0643\u062A\u0645\u0644\u0629 \u0625\u0644\u0649 \u0639\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=\u064A\u0645\u0643\u0646 \u0623\u0646 \u064A\u0624\u062F\u064A \u062A\u062D\u062F\u064A\u062F \u0639\u062F\u062F \u0643\u0628\u064A\u0631 \u0645\u0646 \u0627\u0644\u0623\u0639\u0645\u062F\u0629 \u0625\u0644\u0649 \u0628\u0637\u0621 \u0641\u064A \u0627\u0644\u0623\u062F\u0627\u0621 + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=\u062A\u0636\u0645\u064A\u0646 + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=\u0627\u0633\u062A\u062B\u0646\u0627\u0621 + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=\u0628\u064A\u0646 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=\u064A\u0633\u0627\u0648\u064A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=\u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=\u0623\u0643\u0628\u0631 \u0645\u0646 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=\u0623\u0643\u0628\u0631 \u0645\u0646 \u0623\u0648 \u064A\u0633\u0627\u0648\u064A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=\u0623\u0642\u0644 \u0645\u0646 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=\u0623\u0642\u0644 \u0645\u0646 \u0623\u0648 \u064A\u0633\u0627\u0648\u064A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=\u0627\u0644\u0623\u0648\u0644\u064A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\u064A\u0628\u062F\u0623 \u0628\u0640 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=\u064A\u0646\u062A\u0647\u064A \u0628\u0640 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=\u062A\u0635\u0627\u0639\u062F\u064A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=\u062A\u0646\u0627\u0632\u0644\u064A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=\u062A\u0635\u0627\u0639\u062F\u064A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=\u062A\u0646\u0627\u0632\u0644\u064A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=\u0627\u0644\u0625\u062C\u0645\u0627\u0644\u064A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\u0627\u0644\u0645\u062A\u0648\u0633\u0637 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=\u0628\u064A\u0646 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=\u064A\u0633\u0627\u0648\u064A +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=\u0628\u0639\u062F +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=\u0641\u064A \u0623\u0648 \u0628\u0639\u062F +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\u0642\u0628\u0644 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\u0642\u0628\u0644 \u0623\u0648 \u0641\u064A +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=\u0628\u064A\u0646 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=\u064A\u0633\u0627\u0648\u064A +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=\u0623\u0643\u0628\u0631 \u0645\u0646 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=\u0623\u0643\u0628\u0631 \u0645\u0646 \u0623\u0648 \u064A\u0633\u0627\u0648\u064A +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=\u0623\u0642\u0644 \u0645\u0646 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=\u0623\u0642\u0644 \u0645\u0646 \u0623\u0648 \u064A\u0633\u0627\u0648\u064A + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=\u0645\u0646 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=\u0625\u0644\u0649 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=\u0627\u0644\u0642\u064A\u0645\u0629 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=\u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u062D\u0642\u0644 \u0643\u0639\u0645\u0648\u062F +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\u0625\u0636\u0627\u0641\u0629 \u0633\u0637\u0631 \u062C\u062F\u064A\u062F +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=\u0623\u062F\u062E\u0644 \u0642\u064A\u0645\u0629 \u0635\u0627\u0644\u062D\u0629 + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=\u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u0643\u0644 +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=\u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u0645\u062D\u062F\u062F +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=\u062D\u062F\u062F \u0627\u0644\u0643\u0644 ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=\u0646\u0642\u0644 \u0644\u0644\u0628\u062F\u0627\u064A\u0629 +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=\u062A\u062D\u0631\u064A\u0643 \u0644\u0623\u0639\u0644\u0649 +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=\u062A\u062D\u0631\u064A\u0643 \u0644\u0623\u0633\u0641\u0644 +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=\u0646\u0642\u0644 \u0644\u0644\u0646\u0647\u0627\u064A\u0629 + +#XFLD: Subtle link description label +LINK_SUBTLE=\u063A\u0627\u0645\u0636 +#XFLD: Emphasized link description label +LINK_EMPHASIZED=\u0645\u0624\u0643\u062F + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=\u0627\u0636\u063A\u0637 F5 \u0644\u0644\u062A\u062D\u062F\u064A\u062B + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=\u0627\u0636\u063A\u0637 F4 \u0644\u0641\u062A\u062D \u0645\u0631\u0628\u0639 \u062D\u0648\u0627\u0631 \u0645\u0633\u0627\u0639\u062F\u0629 \u0642\u064A\u0645 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=\u0627\u0644\u062A\u0630\u064A\u064A\u0644 +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=\u0627\u0644\u0645\u0642\u062F\u0645\u0629 +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=\u0627\u0644\u0645\u0642\u062F\u0645\u0629 \u0627\u0644\u0641\u0631\u0639\u064A\u0629 + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\u062D\u0627\u0644\u0629 \u0627\u0644\u0642\u064A\u0645\u0629 \u062E\u0627\u0637\u0626\u0629 +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\u062D\u0627\u0644\u0629 \u0627\u0644\u0642\u064A\u0645\u0629 \u062A\u062D\u0630\u064A\u0631 +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\u062D\u0627\u0644\u0629 \u0627\u0644\u0642\u064A\u0645\u0629 \u0646\u0627\u062C\u062D + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=\u0627\u0644\u062E\u0637\u0648\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629 +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=\u0625\u064A\u062C\u0627\u0628\u064A\u0629 +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=\u062D\u0631\u062C +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=\u0633\u0644\u0628\u064A\u0629 + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} \u0644\u0640 {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u0627\u0644\u062A\u0635\u0646\u064A\u0641 + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=\u0627\u0644\u0645\u0641\u0636\u0644\u0629 +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=\u0625\u0634\u0627\u0631\u0629 + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=\u062A\u062D\u062F\u064A\u062F \u0633\u0647\u0645 \u0627\u0644\u0639\u0646\u0648\u0627\u0646 +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=\u0627\u0644\u0623\u064A\u0642\u0648\u0646\u0629 + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=\u0627\u0644\u0634\u0639\u0627\u0631 + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0623\u064A\u0629 \u0639\u0646\u0627\u0635\u0631 \u0645\u062A\u0637\u0627\u0628\u0642\u0629. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=\u0641\u062D\u0635 \u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0639\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} \u0627\u0644\u0645\u0632\u064A\u062F + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=\u063A\u064A\u0631 \u0645\u0642\u0631\u0648\u0621\u0629 +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=\u0645\u0624\u0645\u0651\u064E\u0646 + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\u0625\u063A\u0644\u0627\u0642 +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=\u0627\u0644\u0643\u0644 +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=\u0627\u0644\u062E\u0644\u0641 +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\u0627\u0644\u0631\u0633\u0627\u0626\u0644 + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=\u0627\u0644\u0625\u062C\u0631\u0627\u0621 \u0645\u0648\u062C\u0628 +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=\u0627\u0644\u0625\u062C\u0631\u0627\u0621 \u0633\u0627\u0644\u0628 +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=\u0645\u0624\u0643\u062F + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=\u062A\u0645 \u0639\u0631\u0636 {0} \u0645\u0646 {1} + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_bg.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_bg.properties new file mode 100644 index 0000000..6756673 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_bg.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\u041D\u044F\u043C\u0430 \u0434\u0430\u043D\u043D\u0438 + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=\u041D\u0435\u043F\u0440\u043E\u0447\u0435\u0442\u0435\u043D + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=\u0421 \u0432\u044A\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442 \u0437\u0430 \u0438\u0437\u0442\u0440\u0438\u0432\u0430\u043D\u0435 + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=\u0418\u043C\u0430 \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u0438 \u0434\u0430\u043D\u043D\u0438 + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\u0415 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0443\u0435\u043C + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\u0415 \u0430\u043A\u0442\u0438\u0432\u0435\u043D + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=\u0417\u0430\u0433\u043B\u0430\u0432\u0438\u0435 \u043D\u0430 \u0433\u0440\u0443\u043F\u0430 + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} \u043E\u0442 {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=\u041D\u0430\u0437\u0430\u0434 + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=\u0412\u043A\u043B +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=\u0418\u0437\u043A + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=\u041F\u0440\u0438\u0435\u043C\u0430\u043D\u0435 + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=\u041E\u0442\u0445\u0432\u044A\u0440\u043B\u044F\u043D\u0435 + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=\u041E\u0442\u043A\u0430\u0437 + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=\u041E\u0442\u043A\u0430\u0437 + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=\u0414\u0440\u0443\u0433\u0438 + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=\u041E\u0442\u043A\u0430\u0437 + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=\u041C\u0435\u0441\u0435\u0446 + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=\u0414\u0435\u043D + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u0413\u043E\u0434\u0438\u043D\u0430 + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=\u0427\u0430\u0441\u043E\u0432\u0435 + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=\u041C\u0438\u043D\u0443\u0442\u0438 + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=\u0421\u0435\u043A\u0443\u043D\u0434\u0438 + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=\u0421\u0435\u0433\u0430 + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=\u041D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=\u041E\u0442\u043A\u0430\u0437 + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=\u0414\u0430 + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=\u041D\u0435 + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\u041F\u0440\u0435\u043A\u0440\u0430\u0442\u044F\u0432\u0430\u043D\u0435 + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=\u041F\u043E\u0432\u0442\u043E\u0440\u0435\u043D \u043E\u043F\u0438\u0442 + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=\u0418\u0433\u043D\u043E\u0440\u0438\u0440\u0430\u043D\u0435 + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\u0417\u0430\u0442\u0432\u0430\u0440\u044F\u043D\u0435 + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043D\u0435 + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435 + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=\u041F\u043E\u0442\u0432\u044A\u0440\u0436\u0434\u0435\u043D\u0438\u0435 + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=\u041F\u043E\u043A\u0430\u0437\u0432\u0430\u043D\u0435 \u043D\u0430 \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u0438 \u0434\u0430\u043D\u043D\u0438 + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=\u0414\u044A\u0440\u043F.\u043D\u0430\u0434\u043E\u043B\u0443 \u0437\u0430 \u043E\u043F\u0440\u0435\u0441\u043D\u044F\u0432. + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=\u0414\u0435\u0431\u043B\u043E\u043A\u0438\u0440. \u0437\u0430 \u043E\u043F\u0440\u0435\u0441\u043D\u044F\u0432\u0430\u043D\u0435 + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u0417\u0430\u0440\u0435\u0436\u0434\u0430\u043D\u0435... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=\u041C\u043E\u043B\u044F \u0438\u0437\u0447\u0430\u043A.,\u0434\u0430\u043D\u043D\u0438\u0442\u0435 \u0441\u0435 \u0437\u0430\u0440\u0435\u0436\u0434. + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=\u041E\u043F\u0440\u0435\u0441\u043D\u044F\u0432\u0430\u043D\u0435 + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=\u0418\u0437\u0445\u043E\u0434 \u043E\u0442 \u0441\u0438\u0441\u0442\u0435\u043C\u0430 + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=\u041E\u0442\u043A\u0430\u0437 + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=\u041E\u0442\u043C\u044F\u043D\u0430 \u043D\u0430 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=\u041A\u043E\u043B\u043E\u043D\u0438 + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=\u0412\u0441\u0438\u0447\u043A\u0438 + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=\u041D\u044F\u043C\u0430 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u0438 \u043A\u043E\u043B\u043E\u043D\u0438 + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=\u0410\u0441\u043F\u0435\u043A\u0442 + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=\u0421\u043E\u0440\u0442\u0438\u0440\u0430\u043D\u0435 \u043F\u043E + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=\u0413\u0440\u0443\u043F\u0438\u0440\u0430\u043D\u0435 \u043F\u043E + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=\u0424\u0438\u043B\u0442\u0440\u0438\u0440\u0430\u043D\u0435 \u043F\u043E + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=\u0424\u0438\u043B\u0442\u0440\u0438\u0440\u0430\u043D\u0435 \u043F\u043E\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\u0424\u0438\u043B\u0442\u0440\u0438\u0440\u0430\u043D\u0438 \u043F\u043E\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=\u041E\u0442\u043A\u0430\u0437 + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=\u041D\u044F\u043C\u0430 + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=\u0412\u044A\u0437\u0445\u043E\u0434\u044F\u0449 + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=\u041D\u0438\u0437\u0445\u043E\u0434\u044F\u0449 + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\u0418\u0437\u0447\u0438\u0441\u0442\u0432\u0430\u043D\u0435 \u043D\u0430 \u0432\u0441\u0438\u0447\u043A\u0438 \u0444\u0438\u043B\u0442\u0440\u0438 + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=\u0412\u0441\u0438\u0447\u043A\u0438 + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (\u0412\u0441\u0438\u0447\u043A\u0438) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=\u0422\u044A\u0440\u0441\u0435\u043D\u0435 + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=\u0424\u0438\u043B\u0442\u044A\u0440 + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=\u0424\u0438\u043B\u0442\u0440\u0438\u0440\u0430\u043D \u043F\u043E {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=\u041D\u044F\u043C\u0430 \u0438\u0437\u0431\u0440\u0430\u043D\u0438 \u0444\u0438\u043B\u0442\u0440\u0438 + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\u0438 + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=\u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438 \u0441\u0430 \u043D\u044F\u043A\u043E\u043B\u043A\u043E \u0444\u0438\u043B\u0442\u0440\u0438 + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} \u043E\u0449\u0435... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} \u043E\u0449\u0435 \u043D\u0430\u043B\u0438\u0447\u043D\u0438 + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=\u041E\u0449\u0435 \u0442\u044A\u0440\u0441\u0435\u043D\u0435 \u0432 \u0441\u044A\u0440\u0432\u044A\u0440 + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=\u041F\u0440\u0435\u043C\u0430\u0445\u0432\u0430\u043D\u0435 \u043D\u0430 \u0444\u0438\u043B\u0442\u044A\u0440 + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=\u0418\u0437\u0431\u0440\u0430\u043D\u0438 \u043F\u043E\u0437\u0438\u0446\u0438\u0438\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\u041F\u0443\u0431\u043B\u0438\u043A\u0443\u0432\u0430\u043D\u0435 \u043D\u0430 \u043D\u0435\u0449\u043E \u0442\u0443\u043A + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=\u041F\u0440\u0435\u0434\u0430\u0432\u0430\u043D\u0435 + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=\u041F\u043E\u043A\u0430\u0437\u0432\u0430\u043D\u0435 \u043D\u0430 \u0432\u0441\u0438\u0447\u043A\u0438 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=\u041E\u0442\u0441\u0442\u0440\u0430\u043D\u044F\u0432\u0430\u043D\u0435 \u043D\u0430 \u0444\u0430\u0441\u0435\u0442\u0435\u043D \u0441\u043F\u0438\u0441\u044A\u043A + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=\u0414\u043E\u0431\u0430\u0432\u044F\u043D\u0435 \u043D\u0430 \u0444\u0430\u0441\u0435\u0442\u0435\u043D \u0441\u043F\u0438\u0441\u044A\u043A + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=\u0418\u0437\u0447\u0438\u0441\u0442\u0432\u0430\u043D\u0435 + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=\u041F\u0440\u0435\u0434\u0445\u043E\u0434\u0435\u043D + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=\u0421\u043B\u0435\u0434\u0432\u0430\u0449 + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=\u041F\u041E\u0412\u0415\u0427\u0415 + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=\u041F\u041E-\u041C\u0410\u041B\u041A\u041E + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=\u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u0421\u0438\u0433\u0443\u0440\u043D\u0438 \u043B\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0436\u0435\u043B\u0430\u0435\u0442\u0435 \u0434\u0430 \u0438\u0437\u0442\u0440\u0438\u0435\u0442\u0435 \u0444\u0430\u0439\u043B\u0430 {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\u041D\u0430\u0438\u0441\u0442\u0438\u043D\u0430 \u043B\u0438 \u0436\u0435\u043B\u0430\u0435\u0442\u0435 \u0434\u0430 \u0438\u0437\u0442\u0440\u0438\u0435\u0442\u0435 \u0444\u0430\u0439\u043B\u0430? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043D\u0435 \u043D\u0430 \u0444\u0430\u0439\u043B + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\u0414\u0438\u0441\u0442\u0430\u043D\u0446\u0438\u043E\u043D\u043D\u043E \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043D\u0435 \u043D\u0430 \u0441\u043B\u0435\u0434\u043D\u0438\u0442\u0435 \u0444\u0430\u0439\u043B\u043E\u0432\u0435 \u0449\u0435 \u0431\u044A\u0434\u0435 \u043F\u0440\u0435\u043A\u0440\u0430\u0442\u0435\u043D\u043E\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=\u041F\u0440\u0435\u043A\u0440\u0430\u0442\u044F\u0432\u0430\u043D\u0435 \u043A\u0430\u0447\u0432\u0430\u043D\u0435 + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=\u0418\u043C\u0435\u0442\u043E \u043D\u0430 \u0444\u0430\u0439\u043B\u0430 \u0432\u0435\u0447\u0435 \u0441\u044A\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430 + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u0414\u0438\u0441\u0442\u0430\u043D\u0446\u0438\u043E\u043D\u043D\u043E \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043D\u0435\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\u041D\u0435\u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0434\u0438\u0441\u0442\u0430\u043D\u0446\u0438\u043E\u043D\u043D\u043E \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043D\u0435 + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=\u0412\u0438\u0434\u044A\u0442 \u0444\u0430\u0439\u043B \u043D\u0435 \u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=\u041E\u0442\u043A\u0430\u0437 + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=\u041F\u0440\u0435\u0433\u043B\u0435\u0434 \u043D\u0430 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u043D\u0435 \u043D\u0430 \u0444\u0438\u043B\u0442\u0440\u0438 +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u043D\u0435 \u043D\u0430 \u0441\u043E\u0440\u0442\u0438\u0440\u0430\u043D\u0435 +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u043D\u0435 \u043D\u0430 \u0433\u0440\u0443\u043F\u0438 +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u043D\u0435 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u043D\u0430 \u043A\u043E\u043B\u043E\u043D\u0438 +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=\u041E\u0442\u043A\u0430\u0437 +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=\u0412\u044A\u0437\u0441\u0442\u0430\u043D\u043E\u0432\u044F\u0432\u0430\u043D\u0435 +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=\u0421\u043E\u0440\u0442\u0438\u0440\u0430\u043D\u0435 +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=\u0424\u0438\u043B\u0442\u0440\u0438 +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=\u0413\u0440\u0443\u043F\u0438 +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=\u0418\u0437\u0447\u0438\u0441\u043B\u044F\u0432\u0430\u043D\u0435 +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=\u041A\u043E\u043B\u043E\u043D\u0438 +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435 +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=\u041B\u0438\u043F\u0441\u0432\u0430\u0442 \u043D\u044F\u043A\u043E\u0438 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442\u0438 \u043D\u0430 \u0443\u0441\u043B\u043E\u0432\u0438\u044F.\n \u0421\u0430\u043C\u043E \u043F\u044A\u043B\u043D\u0438 \u0437\u0430\u043F\u0438\u0441\u0438 \u0449\u0435 \u0431\u044A\u0434\u0430\u0442 \u0434\u043E\u0431\u0430\u0432\u0435\u043D\u0438 \u043A\u044A\u043C \u0444\u0438\u043B\u0442\u044A\u0440\u0430. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=\u0418\u0437\u0431\u043E\u0440\u044A\u0442 \u043D\u0430 \u0433\u043E\u043B\u044F\u043C \u0431\u0440\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u0438 \u043C\u043E\u0436\u0435 \u0434\u0430 \u0437\u0430\u0431\u0430\u0432\u0438 \u0438\u0437\u043F\u044A\u043B\u043D\u0435\u043D\u0438\u0435\u0442\u043E + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=\u0412\u043A\u043B\u044E\u0447\u0432\u0430\u043D\u0435 + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=\u0418\u0437\u043A\u043B\u044E\u0447\u0432\u0430\u043D\u0435 + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=\u043C\u0435\u0436\u0434\u0443 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=\u0440\u0430\u0432\u043D\u043E \u043D\u0430 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=\u0441\u044A\u0434\u044A\u0440\u0436\u0430 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=\u043F\u043E-\u0433\u043E\u043B\u044F\u043C\u043E \u043E\u0442 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=\u043F\u043E-\u0433\u043E\u043B\u044F\u043C\u043E \u043E\u0442 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E \u043D\u0430 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=\u043F\u043E-\u043C\u0430\u043B\u043A\u043E \u043E\u0442 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=\u043F\u043E-\u043C\u0430\u043B\u043A\u043E \u043E\u0442 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E \u043D\u0430 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=\u043D\u0430\u0447\u0430\u043B\u0435\u043D +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\u0437\u0430\u043F\u043E\u0447\u0432\u0430 \u0441 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=\u0437\u0430\u0432\u044A\u0440\u0448\u0432\u0430 \u0441 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=\u0412\u044A\u0437\u0445\u043E\u0434\u044F\u0449 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=\u041D\u0438\u0437\u0445\u043E\u0434\u044F\u0449 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=\u0412\u044A\u0437\u0445\u043E\u0434\u044F\u0449 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=\u041D\u0438\u0437\u0445\u043E\u0434\u044F\u0449 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=\u041E\u0431\u0449\u043E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\u0421\u0440\u0435\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=\u041C\u0438\u043D\u0438\u043C\u0443\u043C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=\u041C\u0430\u043A\u0441\u0438\u043C\u0443\u043C +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=\u043C\u0435\u0436\u0434\u0443 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=\u0440\u0430\u0432\u043D\u043E \u043D\u0430 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=\u0441\u043B\u0435\u0434 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=\u043D\u0430 \u0438\u043B\u0438 \u0441\u043B\u0435\u0434 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\u043F\u0440\u0435\u0434\u0438 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\u043F\u0440\u0435\u0434\u0438 \u0438\u043B\u0438 \u043D\u0430 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=\u043C\u0435\u0436\u0434\u0443 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=\u0440\u0430\u0432\u043D\u043E \u043D\u0430 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=\u043F\u043E-\u0433\u043E\u043B\u044F\u043C\u043E \u043E\u0442 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=\u043F\u043E-\u0433\u043E\u043B\u044F\u043C\u043E \u043E\u0442 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E \u043D\u0430 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=\u043F\u043E-\u043C\u0430\u043B\u043A\u043E \u043E\u0442 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=\u043F\u043E-\u043C\u0430\u043B\u043A\u043E \u043E\u0442 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E \u043D\u0430 + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=\u043E\u0442 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=\u0434\u043E +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=\u0421\u0442\u043E\u0439\u043D\u043E\u0441\u0442 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=\u041F\u043E\u043A\u0430\u0437\u0432\u0430\u043D\u0435 \u043D\u0430 \u043F\u043E\u043B\u0435 \u043A\u0430\u0442\u043E \u043A\u043E\u043B\u043E\u043D\u0430 +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\u0414\u043E\u0431\u0430\u0432\u044F\u043D\u0435 \u043D\u0430 \u043D\u043E\u0432 \u0440\u0435\u0434 +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=\u0412\u044A\u0432\u0435\u0434\u0435\u0442\u0435 \u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=\u041F\u043E\u043A\u0430\u0437\u0432\u0430\u043D\u0435 \u043D\u0430 \u0432\u0441\u0438\u0447\u043A\u0438 +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=\u041F\u043E\u043A\u0430\u0437\u0432\u0430\u043D\u0435 \u043D\u0430 \u0438\u0437\u0431\u0440\u0430\u043D\u0438 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\u0418\u0437\u0431\u0438\u0440\u0430\u043D\u0435 \u043D\u0430 \u0432\u0441\u0438\u0447\u043A\u0438 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=\u0418\u0437\u0431\u043E\u0440 \u043D\u0430 \u0432\u0441\u0438\u0447\u043A\u0438 ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=\u041F\u0440\u0435\u043C\u0435\u0441\u0442\u0432\u0430\u043D\u0435 \u043E\u0442\u0433\u043E\u0440\u0435 +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=\u041F\u0440\u0438\u0434\u0432\u0438\u0436\u0432\u0430\u043D\u0435 \u043D\u0430\u0433\u043E\u0440\u0435 +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=\u041F\u0440\u0438\u0434\u0432\u0438\u0436\u0432\u0430\u043D\u0435 \u043D\u0430\u0434\u043E\u043B\u0443 +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=\u041F\u0440\u0435\u043C\u0435\u0441\u0442\u0432\u0430\u043D\u0435 \u043E\u0442\u0434\u043E\u043B\u0443 + +#XFLD: Subtle link description label +LINK_SUBTLE=\u041D\u0435\u044F\u0432\u0435\u043D +#XFLD: Emphasized link description label +LINK_EMPHASIZED=\u041F\u043E\u0434\u0447\u0435\u0440\u0442\u0430\u043D\u0438 + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=\u041D\u0430\u0442\u0438\u0441\u043D\u0435\u0442\u0435 F5 \u0437\u0430 \u043E\u043F\u0440\u0435\u0441\u043D\u044F\u0432\u0430\u043D\u0435 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=\u041D\u0430\u0442\u0438\u0441\u043A\u0430\u043D\u0435 F4 \u0437\u0430 \u043E\u0442\u0432\u0430\u0440\u044F\u043D\u0435 \u043D\u0430 \u0434\u0438\u0430\u043B\u043E\u0433 \u0437\u0430 \u043F\u043E\u043C\u043E\u0449 \u043F\u0440\u0438 \u0432\u044A\u0432\u0435\u0436\u0434\u0430\u043D\u0435 \u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442\u0438 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=\u0414\u043E\u043B\u0435\u043D \u043A\u043E\u043B\u043E\u043D\u0442\u0438\u0442\u0443\u043B +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=\u0417\u0430\u0433\u043B\u0430\u0432\u0438\u0435 +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=\u041F\u043E\u0434\u0437\u0430\u0433\u043B\u0430\u0432\u0438\u0435 + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\u0421\u0442\u0430\u0442\u0443\u0441 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 "\u0413\u0440\u0435\u0448\u043A\u0430" +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\u0421\u0442\u0430\u0442\u0443\u0441 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 "\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435" +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\u0421\u0442\u0430\u0442\u0443\u0441 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 "\u0423\u0441\u043F\u0435\u0445" + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=\u0421\u043B\u0435\u0434\u0432\u0430\u0449\u0430 \u0441\u0442\u044A\u043F\u043A\u0430 +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u0435\u043D +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=\u041A\u0440\u0438\u0442\u0438\u0447\u0435\u043D +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=\u041E\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043B\u0435\u043D + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} \u043E\u0442 {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u041E\u0446\u0435\u043D\u043A\u0430 + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=\u0424\u0430\u0432\u043E\u0440\u0438\u0442 +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=\u0424\u043B\u0430\u0433 + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=\u0418\u0437\u0431\u043E\u0440 \u0441\u0442\u0440\u0435\u043B\u043A\u0430 \u043D\u0430 \u0437\u0430\u0433\u043B\u0430\u0432\u0438\u0435 +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=\u0418\u043A\u043E\u043D\u0430 + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=\u041B\u043E\u0433\u043E + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\u041D\u0435 \u0441\u0430 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u0438 \u0441\u044A\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0430\u0449\u0438 \u043F\u043E\u0437\u0438\u0446\u0438\u0438. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438\u0442\u0435 \u043D\u0430 \u0444\u0438\u043B\u0442\u044A\u0440 + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} \u041E\u0449\u0435 + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=\u041D\u0435\u043F\u0440\u043E\u0447\u0435\u0442\u0435\u043D +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=\u0417\u0430\u043A\u043B\u044E\u0447\u0435\u043D + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\u0417\u0430\u0442\u0432\u0430\u0440\u044F\u043D\u0435 +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=\u0412\u0441\u0438\u0447\u043A\u0438 +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=\u041D\u0430\u0437\u0430\u0434 +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\u0421\u044A\u043E\u0431\u0449\u0435\u043D\u0438\u044F + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u043D\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=\u041E\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043B\u043D\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=\u041F\u043E\u0434\u0447\u0435\u0440\u0442\u0430\u043D + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=\u041F\u043E\u0437\u0438\u0446\u0438\u044F {0} \u043E\u0442 {1} \u043F\u043E\u043A\u0430\u0437\u0430\u043D\u0438 + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ca.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ca.properties new file mode 100644 index 0000000..65d1db0 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ca.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=No hi ha dades + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=No llegit + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Suprimible + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=T\u00E9 informaci\u00F3 + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Es pot processar + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Est\u00E0 actiu + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Cap\u00E7alera de grup + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} de {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Endarrere + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=Act +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Des + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Acceptar + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Rebutjar + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Cancel\u00B7lar + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Cancel\u00B7lar + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=M\u00E9s dades + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Canc. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Mes + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Dia + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Any + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Hores + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minuts + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Segons + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Ara + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navegaci\u00F3 + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=D'acord + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Cancel\u00B7lar + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=S\u00ED + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=No + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Cancel\u00B7lar + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Repetir + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignorar + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Tancar + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Suprimir + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Advert\u00E8ncia + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Confirmaci\u00F3 + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Mostrar informaci\u00F3 + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Arrossegar per actualitz. + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Alliberar per actualitzar + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Es carreguen les dades... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Es carreguen les dades... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Actualitzar + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Finalitzar la sessi\u00F3 + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=D'acord + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Cancel\u00B7lar + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Reinicialitzar la personalitzaci\u00F3 + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Columnes + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Tots + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=No existeixen columnes + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Vista + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Classificar per + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Agrupar per + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtrar per + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtrar per\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtrat per\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=D'acord + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Cancel\u00B7lar + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Cap + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Ascendent + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Descendent + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Reinicialitzar tots els filtres + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Tots + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (Tots) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Cercar + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filtre + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=D'acord + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtrat per {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=No s'ha seleccionat cap filtre + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=i + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Diversos filtres actius + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} m\u00E9s... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} altres existents + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Seguir buscant en el servidor + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Eliminar filtre + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Elements seleccionats\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Publicar alguna cosa aqu\u00ED + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Enviar + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Visualitzar tots els elements + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Eliminar llista de facetes + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Afegir llista de facetes + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Reinic. + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Endarrere + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Continuar + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=M\u00C9S + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MENYS + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Annexos ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Segur que voleu suprimir el fitxer {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Segur que voleu suprimir el fitxer? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Suprimir fitxer + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=La c\u00E0rrega dels seg\u00FCents fitxers finalitzar\u00E0\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Concloure c\u00E0rrega + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Ja existeix el nom del fitxer + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Carregar\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Error de c\u00E0rrega + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Tipus de fitxer no perm\u00E8s + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Cancel\u00B7lar + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=D'acord + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Visualitzar configuraci\u00F3 +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Definir filtres +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Definir classificaci\u00F3 +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Definir grups +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Definir propietats de columnes +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=D'acord +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Cancel\u00B7lar +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Reinicialitzar +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Classificaci\u00F3 +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filtre +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Grups +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=C\u00E0lcul +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Columnes +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Advert\u00E8ncia +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Falten alguns valors de condici\u00F3.\n Nom\u00E9s s'afegeixen al filtre les entrades completes. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=La selecci\u00F3 de moltes columnes pot afectar negativament al rendiment + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Incloure + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Excloure + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=entre +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=igual +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=cont\u00E9 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=m\u00E9s gran que +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=m\u00E9s gran o igual +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=m\u00E9s petit que +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=m\u00E9s petit o igual +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=inicial +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=comen\u00E7a per +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=acaba per +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Ascendent +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Descendent +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Ascendent +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Descendent +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Total +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Mitjana +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=M\u00EDnim +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=M\u00E0xim +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=entre +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=igual +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=despr\u00E9s de +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=el o despr\u00E9s de +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=abans de +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=abans de o el +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=entre +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=igual +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=m\u00E9s gran que +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=m\u00E9s gran o igual +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=m\u00E9s petit que +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=m\u00E9s petit o igual + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=De +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=Fins a +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Valor +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Visualitzar camp com a columna +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Afegir fila nova +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Heu d'introduir un valor v\u00E0lid + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Visualitzar-ho tot +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Visualitzar selecci\u00F3 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Seleccionar-ho tot +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Seleccionar-ho tot ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Tot cap amunt +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Cap amunt +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Cap avall +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Tot cap avall + +#XFLD: Subtle link description label +LINK_SUBTLE=Discret +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Destacat + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Actualitzar amb F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Polseu F4 per obrir l'ajuda per a entrades + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Fila de peu de p\u00E0gina +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=T\u00EDtol +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Subt\u00EDtol + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Estat de valor\: Error +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Estat de valor\: Advert\u00E8ncia +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Estat de valor\: \u00C8xit + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Pas seg\u00FCent +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positiu +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Cr\u00EDtic +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negatiu + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} de {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Valoraci\u00F3 + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Preferit +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Indicar + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Seleccionar fletxa de t\u00EDtol +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=S\u00EDmbol + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logotip + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=No hi ha elements adequats +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Comproveu les opciones de filtre + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} M\u00E9s + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=No llegit +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Bloquejat + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Tancar +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Tots +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Endarrere +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Missatges + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Acci\u00F3 positiva +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Acci\u00F3 negativa +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Destacat + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=L''element {0} el visualitza {1} + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_cs.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_cs.properties new file mode 100644 index 0000000..e5723ca --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_cs.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\u017D\u00E1dn\u00E1 data + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Nep\u0159e\u010Dteno + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Lze vymazat + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=M\u00E1 detaily + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Lze zpracovat + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Je aktivn\u00ED + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Skupinov\u00E1 hlavi\u010Dka + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} z {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Zp\u011Bt + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=Zap +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Vyp + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=P\u0159ijet\u00ED + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Zam\u00EDtnut\u00ED + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Zru\u0161en\u00ED + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Zru\u0161en\u00ED + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Dal\u0161\u00ED data + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Storno + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=M\u011Bs\u00EDc + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Den + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Rok + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Hodiny + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minuty + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekundy + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Nyn\u00ED + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigace + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Zru\u0161en\u00ED + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Ano + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Ne + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Zru\u0161en\u00ED + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Opakov\u00E1n\u00ED + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignorovat + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Ukon\u010Den\u00ED + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=V\u00FDmaz + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Upozorn\u011Bn\u00ED + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Potvrzen\u00ED + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Zobrazit detaily + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Pro aktualizaci rozvinout + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Pro aktualizaci uvolnit + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Zav\u00E1d\u00ED se data... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Zav\u00E1d\u00ED se data... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Aktualizovat + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Odhl\u00E1\u0161en\u00ED + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Zru\u0161en\u00ED + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Reset personalizace + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Sloupce + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=V\u0161e + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=\u017D\u00E1dn\u00E9 sloupce nenalezeny + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Pohled + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=T\u0159\u00EDdit podle + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Seskupit podle + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtrovat podle + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtrovat podle\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtrov\u00E1no podle\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Zru\u0161en\u00ED + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Bez + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Vzestupn\u011B + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Sestupn\u011B + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Reset v\u0161ech filtr\u016F + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=V\u0161e + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (V\u0161e) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Hled\u00E1n\u00ED + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filtr + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtrov\u00E1no dle {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Nevybr\u00E1n \u017E\u00E1dn\u00FD filtr + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=a + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=V\u00EDce flitr\u016F aktivn\u00EDch + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} dal\u0161\u00ED... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} dal\u0161\u00ED existuj\u00ED + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Dal\u0161\u00ED hled\u00E1n\u00ED na serveru + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Odstran\u011Bn\u00ED filtru + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Vybran\u00E9 prvky\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Zadejte zpr\u00E1vu + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Odeslat + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Zobrazit v\u0161echny prvky + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Odstranit seznam faset + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=P\u0159idat seznam faset + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Reset + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Zp\u011Bt + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=D\u00E1le + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=V\u00CDCE + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=M\u00C9N\u011A + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=P\u0159\u00EDlohy ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Chcete tento soubor {0} opravdu vymazat? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Chcete soubor opravdu vymazat? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=V\u00FDmaz souboru + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Upload n\u00E1sleduj\u00EDc\u00EDch soubor\u016F skon\u010D\u00ED\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Ukon\u010Dit upload + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=N\u00E1zev souboru ji\u017E existuje + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Upload\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Upload ne\u00FAsp\u011B\u0161n\u00FD + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Typ souboru nen\u00ED dovolen + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Zru\u0161en\u00ED + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Zobrazen\u00ED nastaven\u00ED +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Definovat filtr +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Definovat t\u0159\u00EDd\u011Bn\u00ED +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Definovat skupiny +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Definovat vlastnosti sloupc\u016F +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Zru\u0161en\u00ED +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Reset +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=T\u0159\u00EDd\u011Bn\u00ED +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filtr +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Skupiny +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=V\u00FDpo\u010Det +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Sloupce +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Upozorn\u011Bn\u00ED +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=N\u011Bkter\u00E9 hodnoty podm\u00EDnky chyb\u011Bj\u00ED.\n K filtru lze p\u0159idat jen kompletn\u00ED z\u00E1znamy. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=V\u00FDb\u011Br n\u011Bkolika sloupc\u016F m\u016F\u017Ee negativn\u011B ovlivnit v\u00FDkon + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Zahrnut\u00ED + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Vylou\u010Den\u00ED + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=mezi +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=rovno +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=obsahuje +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=v\u011Bt\u0161\u00ED ne\u017E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=v\u011Bt\u0161\u00ED ne\u017E nebo rovno +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=men\u0161\u00ED ne\u017E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=men\u0161\u00ED ne\u017E nebo rovno +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=inici\u00E1ln\u00ED +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=za\u010D\u00EDn\u00E1 na +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=kon\u010D\u00ED na +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Vzestupn\u011B +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Sestupn\u011B +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Vzestupn\u011B +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Sestupn\u011B +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Sou\u010Det +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Pr\u016Fm\u011Br +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maximum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=mezi +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=rovno +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=po +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=dne nebo po +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=p\u0159ed +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=p\u0159ed nebo dne +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=mezi +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=rovno +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=v\u011Bt\u0161\u00ED ne\u017E +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=v\u011Bt\u0161\u00ED ne\u017E nebo rovno +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=men\u0161\u00ED ne\u017E +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=men\u0161\u00ED ne\u017E nebo rovno + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=od +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=Do +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Hodnota +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Zobrazit pole jako sloupec +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=P\u0159idat dal\u0161\u00ED \u0159\u00E1dku +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Zadejte platnou hodnotu + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Zobrazit v\u0161e +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Zobrazen\u00ED v\u00FDb\u011Bru +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=V\u00FDb\u011Br v\u0161ech +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Vybrat v\u0161e ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=\u00DApln\u011B nahoru +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Nahoru +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Dol\u016F +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=\u00DApln\u011B dol\u016F + +#XFLD: Subtle link description label +LINK_SUBTLE=Jemn\u00E9 +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Zv\u00FDrazn\u011Bn\u00E9 + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Aktualizace pomoc\u00ED F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Pro otev\u0159en\u00ED n\u00E1pov\u011Bdy hodnot stiskn\u011Bte F4 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Pati\u010Dka +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Nadpis +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Mezititulek + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Status hodnoty - chyba +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Status hodnoty - upozorn\u011Bn\u00ED +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Sttaus hodnoty - \u00FAsp\u011B\u0161n\u00E9 + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Dal\u0161\u00ED krok +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Pozitiv +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kritick\u00E9 +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negativ + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} z {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Hodnocen\u00ED + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Obl\u00EDben\u00E9 +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Znak + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Vyberte nadpis \u0161ipkou +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Symbol + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\u017D\u00E1dn\u00E9 vhodn\u00E9 prvky nenalezeny. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Zkontrolujte nastaven\u00ED filtru + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} v\u00EDce + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Nep\u0159e\u010Dteno +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Blokov\u00E1no + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Ukon\u010Den\u00ED +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=V\u0161e +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Zp\u011Bt +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Zpr\u00E1vy + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Pozitivn\u00ED akce +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negativn\u00ED akce +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Zv\u00FDrazn\u011Bn\u00E9 + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Prvek {0} {1} se zobraz\u00ED. + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_da.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_da.properties new file mode 100644 index 0000000..0666b09 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_da.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Ingen data + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Ul\u00E6st + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Kan slettes + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Har detaljer + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Kan redigeres + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Er aktiv + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Gruppetop + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} af {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Tilbage + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=Til +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Fra + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Accept\u00E9r + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Afvis + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Afbryd + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Afbryd + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Yderligere data + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Afbryd + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=M\u00E5ned + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Dag + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u00C5r + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Timer + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minutter + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekunder + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Nu + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigation + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Afbryd + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Ja + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Nej + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Afbryd + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Gentag + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignorer + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Luk + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Slet + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Advarsel + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Bekr\u00E6ftelse + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Vis detaljer + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Tr\u00E6k for at opdatere + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Frigiv for opdatering + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Data indl\u00E6ses... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Data indl\u00E6ses... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Opdater + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Log af + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Afbryd + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Nulstil personalisering + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Kolonner + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Alle + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Ingen kolonner fundet + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=View + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Sorter efter + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Grupper efter + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtrer efter + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtrer efter\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtreret efter\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Afbryd + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Uden + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Stigende + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Faldende + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Nulstil alle filtre + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Alle + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (alle) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=S\u00F8g + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filter + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtreret efter {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Intet filter valgt + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=og + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Flere filtre aktive + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} yderligere... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} yderligere findes + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=S\u00F8g videre p\u00E5 server + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Fjern filter + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Valgte elementer\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Post noget her + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Send + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Vis alle elementer + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Fjern facetliste + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Tilf\u00F8j facetliste + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Nulstil + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Tilbage + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Forts\u00E6t + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=FLERE + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=F\u00C6RRE + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Bilag ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Bekr\u00E6ft sletning af filen {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Bekr\u00E6ft sletning af fil? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Slet fil + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Upload af f\u00F8lgende filer afsluttes\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Afslut upload + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Filnavn findes allerede + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Upload\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Upload mislykkedes + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Filtype ikke tilladt + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Afbryd + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Vis indstillinger +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Definer filtre +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Definer sortering +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Definer grupper +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Definer kolonneegenskaber +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Afbryd +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Nulstil +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Sortering +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filtrer +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Grupper +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Beregning +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Kolonner +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Advarsel +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Emkelte betingelsesv\u00E6rdier mangler.\n Kun fuldst\u00E6ndige entries f\u00F8jes til filteret. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Selektion af mange kolonner kan p\u00E5virke performance negativt + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Inkluder + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Ekskluder + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=mellem +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=lig med +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=indeholder +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=st\u00F8rre end +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=st\u00F8rre end eller lig med +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=mindre end +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=mindre end eller lig med +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=initial +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=starter med +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=slutter med +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Stigende +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Faldende +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Stigende +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Faldende +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Total +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Gennemsnit +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maksimum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=mellem +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=lig med +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=efter +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=p\u00E5 eller efter +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=f\u00F8r +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=f\u00F8r eller p\u00E5 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=mellem +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=lig med +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=st\u00F8rre end +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=st\u00F8rre end eller lig med +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=mindre end +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=mindre end eller lig med + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=fra +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=til +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=V\u00E6rdi +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Vis felt som kolonne +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Tilf\u00F8j ny linie +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Indtast gyldig v\u00E6rdi + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Vis alt +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Vis selektion +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=V\u00E6lg alle +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=V\u00E6lg alle ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Flyt helt op +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Op +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Ned +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Flyt helt ned + +#XFLD: Subtle link description label +LINK_SUBTLE=Diskret +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Fremh\u00E6vet + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Opdater med F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Tryk F4 for at \u00E5bne inputhj\u00E6lp + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Bundlinie +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Overskrift +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Mellemoverskrift + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=V\u00E6rdistatus fejl +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=V\u00E6rdistatus advarsel +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=V\u00E6rdistatus uden fejl + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Trin + +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positiv +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kritisk +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negativ + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} af {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Vurdering + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Foretrukken +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Marker + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=V\u00E6lg titelpil +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Symbol + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Ingen passende elementer fundet +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Kontroller filterindstillinger + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} Mere + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Ul\u00E6st +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Sp\u00E6rret + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Luk +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Alle +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Tilbage +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Meddelelser + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Positiv aktion +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negativ aktion +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Fremh\u00E6vet + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Element {0} af {1} vises + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_de.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_de.properties new file mode 100644 index 0000000..26da403 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_de.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Keine Daten + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Ungelesen + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=L\u00F6schbar + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Hat Details + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Ist bearbeitbar + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Ist aktiv + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Gruppenkopf + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} of {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Zur\u00FCck + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=Ein +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Aus + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Annehmen + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Ablehnen + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Abbrechen + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Abbrechen + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Weitere Daten + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Abbr. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Monat + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Tag + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Jahr + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Stunden + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minuten + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekunden + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Jetzt + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigation + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Abbrechen + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Ja + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Nein + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Abbrechen + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Wiederholen + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignorieren + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Schlie\u00DFen + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=L\u00F6schen + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Warnung + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Best\u00E4tigung + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Details einblenden + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Zum Aktualisieren ziehen + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=F\u00FCr Aktualisierung freig. + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Daten werden geladen... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Daten werden geladen... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Aktualisieren + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Abmelden + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Abbrechen + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Personalisierung zur\u00FCcksetzen + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Spalten + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Alle + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Keine Spalten gefunden + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Ansicht + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Sortieren nach + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Gruppieren nach + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtern nach + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtern nach\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Gefiltert nach\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Abbrechen + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Ohne + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Aufsteigend + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Absteigend + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Alle Filter zur\u00FCcksetzen + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Alle + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (Alle) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Suchen + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filter + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Gefiltert nach {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Kein Filter ausgew\u00E4hlt + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=und + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Mehrere Filter aktiv + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} weitere... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} weitere vorhanden + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Auf Server weitersuchen + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Filter entfernen + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Ausgew\u00E4hlte Elemente\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Hier etwas posten + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Abschicken + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Alle Elemente anzeigen + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Facettenliste entfernen + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Facettenliste hinzuf\u00FCgen + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Zur\u00FCcks. + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Zur\u00FCck + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Weiter + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=MEHR + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=WENIGER + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Anlagen ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Wollen Sie die Datei {0} wirklich l\u00F6schen? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=M\u00F6chten Sie die Datei wirklich l\u00F6schen? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Datei l\u00F6schen + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Das Hochladen der folgenden Dateien wird beendet\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Hochladen beenden + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Dateiname bereits vorhanden + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Hochladen\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Hochladen fehlgeschlagen + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Dateityp nicht erlaubt + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Abbrechen + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Einstellungen anzeigen +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Filter definieren +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Sortierung definieren +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Gruppen definieren +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Spalteneigenschaften definieren +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Abbrechen +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Zur\u00FCcksetzen +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Sortierung +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filter +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Gruppen +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Berechnung +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Spalten +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Warnung +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Einige Bedingungswerte fehlen.\n Nur vollst\u00E4ndige Eintr\u00E4ge werden dem Filter hinzugef\u00FCgt. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Die Auswahl vieler Spalten kann sich negativ auf die Performance auswirken + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Einschlie\u00DFen + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Ausschlie\u00DFen + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=zwischen +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=gleich +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=enth\u00E4lt +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=gr\u00F6\u00DFer als +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=gr\u00F6\u00DFer als oder gleich +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=kleiner als +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=kleiner als oder gleich +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=initial +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=beginnt mit +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=endet mit +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Aufsteigend +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Absteigend +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Aufsteigend +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Absteigend +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Summe +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Durchschnitt +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maximum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=zwischen +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=gleich +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=nach dem +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=am oder nach dem +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=vor dem +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=vor dem oder am +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=zwischen +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=gleich +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=gr\u00F6\u00DFer als +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=gr\u00F6\u00DFer als oder gleich +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=kleiner als +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=kleiner als oder gleich + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=von +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=bis +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Wert +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Feld als Spalte anzeigen +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Neue Zeile hinzuf\u00FCgen +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Geben Sie einen g\u00FCltigen Wert ein + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Alles anzeigen +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Auswahl anzeigen +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Alle ausw\u00E4hlen +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Alle ausw\u00E4hlen ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Nach ganz oben +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Nach oben +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Nach unten +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Nach ganz unten + +#XFLD: Subtle link description label +LINK_SUBTLE=Dezent +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Hervorgehoben + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Aktualisieren mit F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Dr\u00FCcken Sie F4, um die Wertehilfe zu \u00F6ffnen + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Fu\u00DFzeile +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=\u00DCberschrift +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Zwischen\u00FCberschrift + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Wertzustand Fehler +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Wertzustand Warnung +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Wertzustand Erfolg + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=N\u00E4chster Schritt +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positiv +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kritisch +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negativ + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} von {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Bewertung + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Favorit +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Kennzeichnen + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Titelpfeil ausw\u00E4hlen +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Symbol + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Keine passenden Elemente gefunden. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=\u00DCberpr\u00FCfen Sie die Filtereinstellungen + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} Mehr + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Ungelesen +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Gesperrt + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Schlie\u00DFen +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Alle +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Zur\u00FCck +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Nachrichten + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Positive Aktion +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negative Aktion +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Hervorgehoben + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Element {0} von {1} wird angezeigt + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_el.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_el.properties new file mode 100644 index 0000000..dcf66fe --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_el.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\u03A7\u03C9\u03C1.\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1 + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=\u039C\u03B7\u0394\u03B9\u03B1\u03B2 + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=\u0394\u03B9\u03B1\u03B3\u03C1\u03AC\u03C8\u03B9\u03BC\u03BF + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=\u0395\u03C7\u03B5\u03B9 \u039B\u03B5\u03C0\u03C4\u03BF\u03BC. + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03AC\u03C3\u03B9\u03BC\u03BF + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\u0395\u03AF\u03BD\u03B1\u03B9 \u0395\u03BD\u03B5\u03C1\u03B3\u03CC + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=\u039A\u03B5\u03C6\u03B1\u03BB.\u039F\u03BC\u03AC\u03B4\u03B1\u03C2 + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} \u03C4\u03BF\u03C5 {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=\u03A0\u03AF\u03C3\u03C9 + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=\u0395\u03BD +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=\u0391\u03BD + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=\u0395\u03B3\u03BA\u03C1\u03B9\u03C3\u03B7 + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=\u0391\u03C0\u03CC\u03C1\u03C1\u03B9\u03C8\u03B7 + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7 + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7 + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=\u0395\u03C0\u03B9\u03C0 + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=\u039F\u039A + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=\u0391\u03BA\u03CD\u03C1. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=\u039C\u03AE\u03BD\u03B1\u03C2 + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=\u0397\u03BC\u03AD\u03C1\u03B1 + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u0395\u03C4\u03BF\u03C2 + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=\u03A9\u03C1\u03B5\u03C2 + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=\u039B\u03B5\u03C0\u03C4\u03AC + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=\u0394\u03B5\u03C5\u03C4\u03B5\u03C1\u03CC\u03BB\u03B5\u03C0\u03C4\u03B1 + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=\u03A4\u03CE\u03C1\u03B1 + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=\u03A0\u03BB\u03BF\u03AE\u03B3\u03B7\u03C3\u03B7 + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=\u039F\u039A + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7 + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=\u039D\u03B1\u03B9 + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=\u039F\u03C7\u03B9 + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\u0395\u03BE\u03BF\u03B4\u03BF\u03C2 + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=\u039D\u03AD\u03B1 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2 + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=\u03A0\u03B1\u03C1\u03AC\u03BB\u03B5\u03B9\u03C8\u03B7 + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=\u0395\u03B9\u03B4\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=\u0395\u03C0\u03B9\u03B2\u03B5\u03B2\u03B1\u03AF\u03C9\u03C3\u03B7 + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=\u0395\u03BC\u03C6\u03AC\u03BD.\u039B\u03B5\u03C0\u03C4\u03BF\u03BC\u03B5\u03C1. + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=\u039A\u03CD\u03BB\u03B9\u03C3\u03B7 \u03B3\u03B9\u03B1 \u0391\u03BD\u03B1\u03BD\u03AD\u03C9\u03C3\u03B7 + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=\u0395\u03B3\u03BA\u03C1\u03B9\u03C3\u03B7 \u03B3\u03B9\u03B1 \u0391\u03BD\u03B1\u03BD\u03AD\u03C9\u03C3\u03B7 + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u03A6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=\u0391\u03BD\u03B1\u03BC\u03BF\u03BD\u03AE, \u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=\u0391\u03BD\u03B1\u03BD\u03AD\u03C9\u03C3\u03B7 + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=\u0391\u03C0\u03BF\u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=\u039F\u039A + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7 + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=\u0391\u03BD\u03AC\u03BA\u03BB\u03B7\u03C3\u03B7 \u0395\u03BE\u03B1\u03C4\u03BF\u03BC\u03AF\u03BA\u03B5\u03C5\u03C3\u03B7\u03C2 + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=\u03A3\u03C4\u03AE\u03BB\u03B5\u03C2 + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=\u039F\u03BB\u03B1 + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03C3\u03C4\u03AE\u03BB\u03B5\u03C2 + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=\u03A0\u03C1\u03BF\u03B2\u03BF\u03BB\u03AE + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=\u03A4\u03B1\u03BE\u03B9\u03BD\u03CC\u03BC\u03B7\u03C3\u03B7 \u039A\u03B1\u03C4\u03AC + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=\u039F\u03BC\u03B1\u03B4\u03BF\u03C0.\u039A\u03B1\u03C4\u03AC + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=\u03A6\u03AF\u03BB\u03C4\u03C1.\u039A\u03B1\u03C4\u03AC + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=\u03A6\u03B9\u03BB\u03C4\u03C1\u03AC\u03C1.\u039A\u03B1\u03C4\u03AC\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\u03A6\u03B9\u03BB\u03C4\u03C1\u03AC\u03C1.\u03BA\u03B1\u03C4\u03AC\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=\u039F\u039A + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7 + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=\u039A\u03B1\u03BD\u03AD\u03BD\u03B1 + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=\u0391\u03CD\u03BE\u03BF\u03C5\u03C3\u03B1 + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=\u03A6\u03B8\u03AF\u03BD\u03BF\u03C5\u03C3\u03B1 + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\u0395\u03BA\u03BA\u03B1\u03B8\u03AC\u03C1\u03B9\u03C3\u03B7 \u039F\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03A6\u03AF\u03BB\u03C4\u03C1\u03C9\u03BD + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=\u039F\u03BB\u03B1 + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (\u038C\u03BB\u03B1) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=\u0391\u03BD\u03B1\u03B6\u03AE\u03C4 + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=\u03A6\u03AF\u03BB\u03C4\u03C1\u03BF + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=\u039F\u039A + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=\u03A6\u03B9\u03BB\u03C4\u03C1\u03AC\u03C1\u03B9\u03C3\u03BC\u03B1 \u03BA\u03B1\u03C4\u03AC {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=\u03A6\u03AF\u03BB\u03C4\u03C1\u03B1 \u03B4\u03B5\u03BD \u03B5\u03C0\u03B9\u03BB\u03AD\u03C7\u03C4\u03B7\u03BA\u03B1\u03BD + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\u03BA\u03B1\u03B9 + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=\u0391\u03C1\u03BA\u03B5\u03C4\u03AC \u03C6\u03AF\u03BB\u03C4\u03C1\u03B1 \u03B5\u03C6\u03B1\u03C1\u03BC\u03CC\u03C3\u03C4\u03B7\u03BA\u03B1\u03BD + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} \u03C0\u03B5\u03C1\u03B9\u03C3\u03C3\u03CC\u03C4\u03B5\u03C1\u03B1... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} \u03C0\u03B5\u03C1\u03B9\u03C3\u03C3\u03CC\u03C4\u03B5\u03C1\u03B1 \u03B4\u03B9\u03B1\u03B8\u03AD\u03C3\u03B9\u03BC\u03B1 + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=\u03A0\u03B5\u03C1\u03B1\u03B9\u03C4\u03AD\u03C1\u03C9 \u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03C3\u03B5 \u0394\u03B9\u03B1\u03BA\u03BF\u03BC\u03B9\u03C3\u03C4\u03AE + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03A6\u03AF\u03BB\u03C4\u03C1\u03BF\u03C5 + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=\u0395\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B1 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\u039A\u03B1\u03C4\u03B1\u03C7\u03C9\u03C1\u03AF\u03C3\u03C4\u03B5 \u03BA\u03AC\u03C4\u03B9 \u03B5\u03B4\u03CE + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=\u03A5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u039F\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u0395\u03B9\u03B4\u03CE\u03BD + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u039B\u03AF\u03C3\u03C4\u03B1\u03C2 \u039F\u03C8\u03B5\u03C9\u03BD + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u039B\u03AF\u03C3\u03C4\u03B1\u03C2 \u039F\u03C8\u03B5\u03C9\u03BD + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=\u0395\u03C0\u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AC + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=\u03A0\u03C1\u03BF\u03B7\u03B3. + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=\u0395\u03C0\u03CC\u03BC\u03B5\u03BD\u03BF + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=\u03A0\u0395\u03A1\u0399\u03A3\u03A3\u039F\u03A4\u0395\u03A1\u0391 + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=\u039B\u0399\u0393\u039F\u03A4\u0395\u03A1\u0391 + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=\u03A3\u03C5\u03BD\u03B7\u03BC\u03BC\u03AD\u03BD\u03B1 ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u03A3\u03AF\u03B3\u03BF\u03C5\u03C1\u03B1 \u03B8\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03B4\u03B9\u03B1\u03B3\u03C1\u03AC\u03C8\u03B5\u03C4\u03B5 \u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF {0}; + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\u03A3\u03AF\u03B3\u03BF\u03C5\u03C1\u03B1 \u03B8\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03B4\u03B9\u03B1\u03B3\u03C1\u03AC\u03C8\u03B5\u03C4\u03B5 \u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF; + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u0391\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\u0397 \u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7 \u03B3\u03B9\u03B1 \u03C4\u03B1 \u03C0\u03B1\u03C1\u03B1\u03BA\u03AC\u03C4\u03C9 \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 \u03B8\u03B1 \u03C4\u03B5\u03C1\u03BC\u03B1\u03C4\u03B9\u03C3\u03C4\u03B5\u03AF\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=\u0394\u03B9\u03B1\u03BA\u03BF\u03C0\u03AE \u03B4\u03B9\u03B1\u03B2\u03AF\u03B2\u03B1\u03C3\u03B7\u03C2 + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=\u039F\u03BD\u03BF\u03BC\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03C5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9 \u03AE\u03B4\u03B7 + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u03A6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\u0394\u03B9\u03B1\u03B2\u03AF\u03B2\u03B1\u03C3\u03B7 \u03B1\u03C0\u03AD\u03C4\u03C5\u03C7\u03B5 + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=\u03A4\u03CD\u03C0\u03BF\u03C2 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03B4\u03B5\u03BD \u03B5\u03C0\u03B9\u03C4\u03C1\u03AD\u03C0\u03B5\u03C4\u03B1\u03B9 + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7 + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=\u039F\u039A + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u03A0\u03C1\u03BF\u03B2\u03BF\u03BB\u03AE\u03C2 +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=\u039F\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03A6\u03AF\u03BB\u03C4\u03C1\u03C9\u03BD +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=\u039F\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03A4\u03B1\u03BE\u03B9\u03BD\u03CC\u03BC\u03B7\u03C3\u03B7\u03C2 +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=\u039F\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u039F\u03BC\u03AC\u03B4\u03C9\u03BD +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=\u039F\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u0399\u03B4\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD \u03A3\u03C4\u03AE\u03BB\u03B7\u03C2 +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=\u039F\u039A +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7 +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=\u0395\u03C0\u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AC +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=\u03A4\u03B1\u03BE\u03B9\u03BD\u03CC\u03BC\u03B7\u03C3\u03B7 +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=\u03A6\u03AF\u03BB\u03C4\u03C1\u03B1 +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=\u039F\u03BC\u03AC\u03B4\u03B5\u03C2 +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=\u03A5\u03C0\u03BF\u03BB\u03BF\u03B3\u03B9\u03C3\u03BC\u03CC\u03C2 +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=\u03A3\u03C4\u03AE\u03BB\u03B5\u03C2 +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=\u03A0\u03C1\u03BF\u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=\u039F\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B5\u03C2 \u03C4\u03B9\u03BC\u03AD\u03C2 \u03C3\u03C5\u03BD\u03B8\u03AE\u03BA\u03B7\u03C2 \u03BB\u03B5\u03AF\u03C0\u03BF\u03C5\u03BD.\n \u039C\u03CC\u03BD\u03BF \u03BF\u03B9 \u03BF\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1.\u03BA\u03B1\u03C4\u03B1\u03C7\u03C9\u03C1.\u03B8\u03B1 \u03C0\u03C1\u03BF\u03C3\u03C4\u03B5\u03B8\u03BF\u03CD\u03BD \u03C3\u03C4\u03BF \u03C6\u03AF\u03BB\u03C4\u03C1\u03BF. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=\u0397 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF\u03C5 \u03B1\u03C1\u03B9\u03B8\u03BC\u03BF\u03CD \u03C3\u03C4\u03B7\u03BB\u03CE\u03BD \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03BA\u03B1\u03B8\u03C5\u03C3\u03C4\u03B5\u03C1\u03AE\u03C3\u03B5\u03B9 \u03C4\u03B7\u03BD \u03B1\u03C0\u03CC\u03B4\u03BF\u03C3\u03B7 + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=\u03A5\u03C0\u03BF\u03C0\u03C1\u03CC\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1 + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=\u0395\u03BE\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=\u03BC\u03B5\u03C4\u03B1\u03BE\u03CD +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=\u03AF\u03C3\u03BF \u03BC\u03B5 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=\u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=\u03BC\u03B5\u03B3\u03B1\u03BB\u03CD\u03C4\u03B5\u03C1\u03BF \u03B1\u03C0\u03CC +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=\u03BC\u03B5\u03B3\u03B1\u03BB\u03CD\u03C4\u03B5\u03C1\u03BF \u03B1\u03C0\u03CC \u03AE \u03AF\u03C3\u03BF \u03BC\u03B5 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=\u03BC\u03B9\u03BA\u03C1\u03CC\u03C4\u03B5\u03C1\u03BF \u03B1\u03C0\u03CC +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=\u03BC\u03B9\u03BA\u03C1\u03CC\u03C4\u03B5\u03C1\u03BF \u03B1\u03C0\u03CC \u03AE \u03AF\u03C3\u03BF \u03BC\u03B5 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=\u03B1\u03C1\u03C7\u03B9\u03BA\u03CC +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\u03B1\u03C1\u03C7\u03AF\u03B6\u03B5\u03B9 \u03BC\u03B5 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=\u03C4\u03B5\u03BB\u03B5\u03B9\u03CE\u03BD\u03B5\u03B9 \u03BC\u03B5 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=\u0391\u03CD\u03BE\u03BF\u03C5\u03C3\u03B1 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=\u03A6\u03B8\u03AF\u03BD\u03BF\u03C5\u03C3\u03B1 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=\u0391\u03CD\u03BE\u03BF\u03C5\u03C3\u03B1 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=\u03A6\u03B8\u03AF\u03BD\u03BF\u03C5\u03C3\u03B1 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=\u03A3\u03CD\u03BD\u03BF\u03BB\u03BF +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\u039C\u03AD\u03C3\u03BF +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=\u0395\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03BF +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=\u03BC\u03B5\u03C4\u03B1\u03BE\u03CD +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=\u03AF\u03C3\u03BF \u03BC\u03B5 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=\u03BC\u03B5\u03C4\u03AC +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=\u03C3\u03C4\u03B9\u03C2 \u03AE \u03BC\u03B5\u03C4\u03AC +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\u03C0\u03C1\u03B9\u03BD +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\u03C0\u03C1\u03B9\u03BD \u03AE \u03C3\u03C4\u03B9\u03C2 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=\u03BC\u03B5\u03C4\u03B1\u03BE\u03CD +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=\u03AF\u03C3\u03BF \u03BC\u03B5 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=\u03BC\u03B5\u03B3\u03B1\u03BB\u03CD\u03C4\u03B5\u03C1\u03BF \u03B1\u03C0\u03CC +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=\u03BC\u03B5\u03B3\u03B1\u03BB\u03CD\u03C4\u03B5\u03C1\u03BF \u03B1\u03C0\u03CC \u03AE \u03AF\u03C3\u03BF \u03BC\u03B5 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=\u03BC\u03B9\u03BA\u03C1\u03CC\u03C4\u03B5\u03C1\u03BF \u03B1\u03C0\u03CC +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=\u03BC\u03B9\u03BA\u03C1\u03CC\u03C4\u03B5\u03C1\u03BF \u03B1\u03C0\u03CC \u03AE \u03AF\u03C3\u03BF \u03BC\u03B5 + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=\u03B1\u03C0\u03CC +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=\u03C3\u03B5 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=\u0391\u03BE\u03AF\u03B1 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03A0\u03B5\u03B4\u03AF\u03BF\u03C5 \u03C9\u03C2 \u03A3\u03C4\u03AE\u03BB\u03B7 +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u039D\u03AD\u03B1\u03C2 \u0393\u03C1\u03B1\u03BC\u03BC\u03AE\u03C2 +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7\u03C2 \u03C4\u03B9\u03BC\u03AE\u03C2 + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u039F\u03BB\u03C9\u03BD +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=\u0395\u03BC\u03C6\u03AC\u03BD.\u0395\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF\u03C5 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u039F\u03BB\u03C9\u03BD +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=\u039C\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7 \u03A3\u03C4\u03B7\u03BD \u0391\u03C1\u03C7\u03AE +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=\u039C\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7 \u03A0\u03AC\u03BD\u03C9 +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=\u039C\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7 \u039A\u03AC\u03C4\u03C9 +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=\u039C\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7 \u03C3\u03C4\u03BF \u03A4\u03AD\u03BB\u03BF\u03C2 + +#XFLD: Subtle link description label +LINK_SUBTLE=\u0394\u03B9\u03B1\u03BA\u03C1\u03B9\u03C4\u03B9\u03BA\u03CC +#XFLD: Emphasized link description label +LINK_EMPHASIZED=\u03A4\u03BF\u03BD\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=\u03A0\u03B1\u03C4\u03AE\u03C3\u03C4\u03B5 F5 \u03B3\u03B9\u03B1 \u03B1\u03BD\u03B1\u03BD\u03AD\u03C9\u03C3\u03B7 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=\u03A0\u03B9\u03AD\u03C3\u03C4\u03B5 F4 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B1\u03BD\u03BF\u03AF\u03BE\u03B5\u03C4\u03B5 \u03B4\u03B9\u03AC\u03BB\u03BF\u03B3\u03BF \u03B2\u03BF\u03AE\u03B8\u03B5\u03B9\u03B1\u03C2 \u03C4\u03B9\u03BC\u03AE\u03C2 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=\u03A5\u03C0\u03BF\u03C3\u03AD\u03BB\u03B9\u03B4\u03BF +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=\u039A\u03B5\u03C6\u03B1\u03BB\u03AF\u03B4\u03B1 +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=\u0394\u03B5\u03C5\u03C4.\u03BA\u03B5\u03C6\u03B1\u03BB\u03AF\u03B4\u03B1 + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\u039B\u03AC\u03B8\u03BF\u03C2 \u039A\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7\u03C2 \u03A4\u03B9\u03BC\u03AE\u03C2 +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\u03A0\u03C1\u03BF\u03B5\u03B9\u03B4.\u039A\u03B1\u03C4\u03AC\u03C3\u03C4.\u03A4\u03B9\u03BC\u03AE\u03C2 +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\u0395\u03C0\u03B9\u03C4\u03C5\u03C7.\u039A\u03B1\u03C4\u03AC\u03C3\u03C4.\u03A4\u03B9\u03BC\u03AE\u03C2 + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=\u0395\u03C0\u03CC\u03BC.\u0392\u03AE\u03BC\u03B1 +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=\u0398\u03B5\u03C4\u03B9\u03BA\u03AD\u03C2 +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=\u039A\u03C1\u03AF\u03C3\u03B9\u03BC\u03BF\u03C2 +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=\u0391\u03C1\u03BD\u03B7\u03C4\u03B9\u03BA\u03AD\u03C2 + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} \u03C4\u03BF\u03C5 {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u0391\u03BE\u03B9\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7 + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=\u0391\u03B3\u03B1\u03C0\u03B7\u03BC\u03AD\u03BD\u03BF +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=\u0394\u03B5\u03AF\u03BA\u03C4\u03B7\u03C2 + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u0392\u03AD\u03BB\u03BF\u03C2 \u03A4\u03AF\u03C4\u03BB\u03BF\u03C5 +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=\u0395\u03B9\u03BA\u03BF\u03BD\u03AF\u03B4\u03B9\u03BF + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=\u039B\u03BF\u03B3\u03CC\u03C4\u03C5\u03C0\u03BF + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03B1\u03BD.\u03B3\u03C1\u03B1\u03BC\u03BC\u03AD\u03C2 \u03C0\u03BF\u03C5 \u03BD\u03B1 \u03C4\u03B1\u03B9\u03C1\u03B9\u03AC\u03B6\u03BF\u03C5\u03BD. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=\u0395\u03BB\u03B5\u03B3\u03C7\u03BF\u03C2 \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03C9\u03BD \u03C6\u03AF\u03BB\u03C4\u03C1\u03BF\u03C5 + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} \u03A0\u03B5\u03C1\u03B9\u03C3\u03C3\u03CC\u03C4\u03B5\u03C1\u03B1 + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=\u039C\u03B7\u0394\u03B9\u03B1\u03B2 +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=\u039A\u03BB\u03B5\u03B9\u03B4\u03C9\u03BC\u03AD\u03BD\u03BF + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=\u039F\u03BB\u03B1 +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=\u03A0\u03AF\u03C3\u03C9 +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\u039C\u03B7\u03BD\u03CD\u03BC\u03B1\u03C4\u03B1 + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=\u0398\u03B5\u03C4\u03B9\u03BA\u03AE \u0395\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1 +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=\u0391\u03C1\u03BD\u03B7\u03C4\u03B9\u03BA\u03AE \u0395\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1 +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=\u03A4\u03BF\u03BD\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=\u03A3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF {0} \u03C4\u03BF\u03C5 {1} \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_en.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_en.properties new file mode 100644 index 0000000..b686c0c --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_en.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=No data + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Unread + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Deletable + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Has Details + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Is Editable + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Is Active + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Group Header + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} of {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Back + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=On +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Off + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Accept + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Reject + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Cancel + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Cancel + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=More + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Cancel + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Month + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Day + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Year + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Hours + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minutes + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Seconds + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Now + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigation + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Cancel + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Yes + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=No + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Abort + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Retry + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignore + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Close + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Delete + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Alert + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Confirmation + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Show Details + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Pull Down to Refresh + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Release to Refresh + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Loading... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Please wait, data is loading + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Refresh + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Logout + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Cancel + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Undo Personalization + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Columns + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=All + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=No columns found + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=View + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Sort By + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Group By + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filter By + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filter By\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtered by\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Cancel + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=None + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Ascending + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Descending + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Clear All Filters + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=All + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (All) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Search + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filter + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtered by {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=No filters selected + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=and + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Several filters applied + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} more... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} more available + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Search Further on Server + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Remove Filter + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Items selected\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Post something here + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Submit + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Show All Items + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Remove Facet List + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Add Facet List + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Reset + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Previous + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Next + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=MORE + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=LESS + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Attachments ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Are you sure you want to delete the file {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Are you sure you want to delete the file? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Delete File + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=The upload for the following files will be terminated\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Terminate upload + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=File name already exists + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Uploading\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Upload failed + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=File type not allowed + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Cancel + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=View Settings +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Define Filters +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Define Sorting +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Define Groups +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Define Column Properties +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Cancel +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Restore +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Sorting +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filters +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Groups +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Calculation +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Columns +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Warning +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Some condition values are missing.\n Only complete entries will be added to the filter. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Selecting a large number of columns can slow down the performance + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Include + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Exclude + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=between +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=equal to +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=contains +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=greater than +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=greater than or equal to +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=less than +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=less than or equal to +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=initial +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=starts with +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=ends with +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Ascending +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Descending +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Ascending +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Descending +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Total +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Average +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maximum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=between +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=equal to +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=after +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=on or after +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=before +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=before or on +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=between +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=equal to +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=greater than +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=greater than or equal to +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=less than +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=less than or equal to + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=from +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=to +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Value +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Show Field as Column +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Add New Line +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Enter valid value + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Show All +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Show Selected +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Select All +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Select all ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Move to Top +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Move Up +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Move Down +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Move to Bottom + +#XFLD: Subtle link description label +LINK_SUBTLE=Subtle +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Emphasized + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Press F5 to refresh + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Press F4 to open a value help dialog + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Footer +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Header +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Subheader + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Value State Error +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Value State Warning +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Value State Success + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Next Step +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positive +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Critical +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negative + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} of {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Rating + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Favorite +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Flag + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Select Title Arrow +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Icon + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=No matching items found. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Check the filter settings + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} More + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Unread +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Locked + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Close +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=All +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Back +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Messages + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Positive Action +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negative Action +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Emphasized + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Item {0} of {1} displayed + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_en_US_sappsd.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_en_US_sappsd.properties new file mode 100644 index 0000000..f9ae58a --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_en_US_sappsd.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=[[[\u0143\u014F \u018C\u0105\u0163\u0105\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=[[[\u016E\u014B\u0157\u0113\u0105\u018C\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=[[[\u010E\u0113\u013A\u0113\u0163\u0105\u0183\u013A\u0113\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=[[[\u0124\u0105\u015F \u010E\u0113\u0163\u0105\u012F\u013A\u015F\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=[[[\u012C\u015F \u0114\u018C\u012F\u0163\u0105\u0183\u013A\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=[[[\u012C\u015F \u0100\u010B\u0163\u012F\u028B\u0113\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=[[[\u0122\u0157\u014F\u0171\u03C1 \u0124\u0113\u0105\u018C\u0113\u0157\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION=[[[{0} \u014F\u0192 {1}]]] + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=[[[\u0181\u0105\u010B\u0137]]] + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=[[[\!\!\!\u014E\u014B]]] +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=[[[\!\!\!\u014E\u0192\u0192]]] + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=[[[\u0100\u010B\u010B\u0113\u03C1\u0163\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=[[[\u0158\u0113\u0135\u0113\u010B\u0163\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=[[[\u0108\u0105\u014B\u010B\u0113\u013A\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=[[[\u0108\u0105\u014B\u010B\u0113\u013A\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=[[[\u039C\u014F\u0157\u0113]]] + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=[[[\u014E\u0136\u2219\u2219]]] + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=[[[\!\!\!\u0108\u0105\u014B\u010B\u0113\u013A]]] + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=[[[\u039C\u014F\u014B\u0163\u0125\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=[[[\u010E\u0105\u0177\u2219]]] + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=[[[\u0176\u0113\u0105\u0157]]] + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=[[[\u0124\u014F\u0171\u0157\u015F\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=[[[\u039C\u012F\u014B\u0171\u0163\u0113\u015F\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=[[[\u015C\u0113\u010B\u014F\u014B\u018C\u015F\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=[[[\!\!\!\u0143\u014F\u0175]]] + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=[[[\u0143\u0105\u028B\u012F\u011F\u0105\u0163\u012F\u014F\u014B\u2219\u2219\u2219\u2219]]] + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=[[[\u014E\u0136\u2219\u2219]]] + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=[[[\u0108\u0105\u014B\u010B\u0113\u013A\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=[[[\u0176\u0113\u015F\u2219]]] + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=[[[\u0143\u014F\u2219\u2219]]] + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=[[[\u0100\u0183\u014F\u0157\u0163\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=[[[\u0158\u0113\u0163\u0157\u0177\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=[[[\u012C\u011F\u014B\u014F\u0157\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=[[[\u0108\u013A\u014F\u015F\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=[[[\u010E\u0113\u013A\u0113\u0163\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=[[[\u0100\u013A\u0113\u0157\u0163\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=[[[\u0108\u014F\u014B\u0192\u012F\u0157\u0271\u0105\u0163\u012F\u014F\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=[[[\u015C\u0125\u014F\u0175 \u010E\u0113\u0163\u0105\u012F\u013A\u015F\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=[[[\u01A4\u0171\u013A\u013A \u010E\u014F\u0175\u014B \u0163\u014F \u0158\u0113\u0192\u0157\u0113\u015F\u0125\u2219\u2219\u2219\u2219]]] + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=[[[\u0158\u0113\u013A\u0113\u0105\u015F\u0113 \u0163\u014F \u0158\u0113\u0192\u0157\u0113\u015F\u0125\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=[[[\u013B\u014F\u0105\u018C\u012F\u014B\u011F...\u2219\u2219\u2219\u2219]]] + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=[[[\!\!\!\u01A4\u013A\u0113\u0105\u015F\u0113 \u0175\u0105\u012F\u0163, \u018C\u0105\u0163\u0105 \u012F\u015F \u013A\u014F\u0105\u018C\u012F\u014B\u011F]]] + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=[[[\u0158\u0113\u0192\u0157\u0113\u015F\u0125\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=[[[\u013B\u014F\u011F\u014F\u0171\u0163\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=[[[\u014E\u0136\u2219\u2219]]] + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=[[[\u0108\u0105\u014B\u010B\u0113\u013A\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=[[[\u016E\u014B\u018C\u014F \u01A4\u0113\u0157\u015F\u014F\u014B\u0105\u013A\u012F\u017E\u0105\u0163\u012F\u014F\u014B\u2219\u2219\u2219\u2219]]] + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=[[[\u0108\u014F\u013A\u0171\u0271\u014B\u015F\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=[[[\u0100\u013A\u013A\u2219]]] + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=[[[\u0143\u014F \u010B\u014F\u013A\u0171\u0271\u014B\u015F \u0192\u014F\u0171\u014B\u018C\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=[[[\u01B2\u012F\u0113\u0175]]] + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=[[[\u015C\u014F\u0157\u0163 \u0181\u0177\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=[[[\u0122\u0157\u014F\u0171\u03C1 \u0181\u0177\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=[[[\u0191\u012F\u013A\u0163\u0113\u0157 \u0181\u0177\u2219\u2219\u2219\u2219\u2219]]] + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=[[[\u0191\u012F\u013A\u0163\u0113\u0157 \u0181\u0177\:\u2219\u2219\u2219\u2219]]] + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=[[[\u0191\u012F\u013A\u0163\u0113\u0157\u0113\u018C \u0183\u0177\:\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=[[[\u014E\u0136\u2219\u2219]]] + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=[[[\u0108\u0105\u014B\u010B\u0113\u013A\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=[[[\u0143\u014F\u014B\u0113]]] + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=[[[\u0100\u015F\u010B\u0113\u014B\u018C\u012F\u014B\u011F\u2219\u2219\u2219\u2219\u2219]]] + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=[[[\u010E\u0113\u015F\u010B\u0113\u014B\u018C\u012F\u014B\u011F\u2219\u2219\u2219\u2219]]] + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=[[[\u0108\u013A\u0113\u0105\u0157 \u0100\u013A\u013A \u0191\u012F\u013A\u0163\u0113\u0157\u015F\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=[[[\u0100\u013A\u013A\u2219]]] + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED=[[[{0} (\u0100\u013A\u013A)]]] + +#XFLD: Search field prompt +FACETFILTER_SEARCH=[[[\u015C\u0113\u0105\u0157\u010B\u0125\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION=[[[{0} ({1})]]] + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=[[[\u0191\u012F\u013A\u0163\u0113\u0157\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=[[[\u014E\u0136\u2219\u2219]]] + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=[[[\u0191\u012F\u013A\u0163\u0113\u0157\u0113\u018C \u0183\u0177 {0} ({1})]]] + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=[[[\u0143\u014F \u0192\u012F\u013A\u0163\u0113\u0157\u015F \u015F\u0113\u013A\u0113\u010B\u0163\u0113\u018C\u2219\u2219\u2219\u2219\u2219]]] + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=[[[\u0105\u014B\u018C\u2219]]] + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND=[[[{0} ({1})]]] + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=[[[\u015C\u0113\u028B\u0113\u0157\u0105\u013A \u0192\u012F\u013A\u0163\u0113\u0157\u015F \u0105\u03C1\u03C1\u013A\u012F\u0113\u018C\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT=[[[{0} \u0271\u014F\u0157\u0113...]]] + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE=[[[{0} \u0271\u014F\u0157\u0113 \u0105\u028B\u0105\u012F\u013A\u0105\u0183\u013A\u0113]]] + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=[[[\u015C\u0113\u0105\u0157\u010B\u0125 \u0191\u0171\u0157\u0163\u0125\u0113\u0157 \u014F\u014B \u015C\u0113\u0157\u028B\u0113\u0157\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=[[[\u0158\u0113\u0271\u014F\u028B\u0113 \u0191\u012F\u013A\u0163\u0113\u0157\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=[[[\u012C\u0163\u0113\u0271\u015F \u015F\u0113\u013A\u0113\u010B\u0163\u0113\u018C\: {0}]]] + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=[[[\u01A4\u014F\u015F\u0163 \u015F\u014F\u0271\u0113\u0163\u0125\u012F\u014B\u011F \u0125\u0113\u0157\u0113\u2219\u2219\u2219\u2219\u2219]]] + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=[[[\u015C\u0171\u0183\u0271\u012F\u0163\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=[[[\u015C\u0125\u014F\u0175 \u0100\u013A\u013A \u012C\u0163\u0113\u0271\u015F\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=[[[\!\!\!\u0158\u0113\u0271\u014F\u028B\u0113 \u0191\u0105\u010B\u0113\u0163 \u013B\u012F\u015F\u0163]]] + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=[[[\!\!\!\u0100\u018C\u018C \u0191\u0105\u010B\u0113\u0163 \u013B\u012F\u015F\u0163]]] + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=[[[\u0158\u0113\u015F\u0113\u0163\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=[[[\!\!\!\u01A4\u0157\u0113\u028B\u012F\u014F\u0171\u015F]]] + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=[[[\u0143\u0113\u03C7\u0163]]] + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=[[[\u039C\u014E\u0158\u0114]]] + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=[[[\u013B\u0114\u015C\u015C]]] + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=[[[\u0100\u0163\u0163\u0105\u010B\u0125\u0271\u0113\u014B\u0163\u015F ({0})]]] + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=[[[\u0100\u0157\u0113 \u0177\u014F\u0171 \u015F\u0171\u0157\u0113 \u0177\u014F\u0171 \u0175\u0105\u014B\u0163 \u0163\u014F \u018C\u0113\u013A\u0113\u0163\u0113 \u0163\u0125\u0113 \u0192\u012F\u013A\u0113 {0}?]]] + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=[[[\u0100\u0157\u0113 \u0177\u014F\u0171 \u015F\u0171\u0157\u0113 \u0177\u014F\u0171 \u0175\u0105\u014B\u0163 \u0163\u014F \u018C\u0113\u013A\u0113\u0163\u0113 \u0163\u0125\u0113 \u0192\u012F\u013A\u0113?\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=[[[\u010E\u0113\u013A\u0113\u0163\u0113 \u0191\u012F\u013A\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=[[[\u0162\u0125\u0113 \u0171\u03C1\u013A\u014F\u0105\u018C \u0192\u014F\u0157 \u0163\u0125\u0113 \u0192\u014F\u013A\u013A\u014F\u0175\u012F\u014B\u011F \u0192\u012F\u013A\u0113\u015F \u0175\u012F\u013A\u013A \u0183\u0113 \u0163\u0113\u0157\u0271\u012F\u014B\u0105\u0163\u0113\u018C\:\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=[[[\u0162\u0113\u0157\u0271\u012F\u014B\u0105\u0163\u0113 \u0171\u03C1\u013A\u014F\u0105\u018C\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=[[[\u0191\u012F\u013A\u0113 \u014B\u0105\u0271\u0113 \u0105\u013A\u0157\u0113\u0105\u018C\u0177 \u0113\u03C7\u012F\u015F\u0163\u015F\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=[[[\u016E\u03C1\u013A\u014F\u0105\u018C\u012F\u014B\u011F\: {0} %]]] + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=[[[\u016E\u03C1\u013A\u014F\u0105\u018C \u0192\u0105\u012F\u013A\u0113\u018C\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=[[[\u0191\u012F\u013A\u0113 \u0163\u0177\u03C1\u0113 \u014B\u014F\u0163 \u0105\u013A\u013A\u014F\u0175\u0113\u018C\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=[[[\u0108\u0105\u014B\u010B\u0113\u013A\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=[[[\u014E\u0136\u2219\u2219]]] + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=[[[\u01B2\u012F\u0113\u0175 \u015C\u0113\u0163\u0163\u012F\u014B\u011F\u015F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=[[[\u010E\u0113\u0192\u012F\u014B\u0113 \u0191\u012F\u013A\u0163\u0113\u0157\u015F\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=[[[\u010E\u0113\u0192\u012F\u014B\u0113 \u015C\u014F\u0157\u0163\u012F\u014B\u011F\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=[[[\u010E\u0113\u0192\u012F\u014B\u0113 \u0122\u0157\u014F\u0171\u03C1\u015F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=[[[\u010E\u0113\u0192\u012F\u014B\u0113 \u0108\u014F\u013A\u0171\u0271\u014B \u01A4\u0157\u014F\u03C1\u0113\u0157\u0163\u012F\u0113\u015F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=[[[\u014E\u0136\u2219\u2219]]] +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=[[[\u0108\u0105\u014B\u010B\u0113\u013A\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=[[[\u0158\u0113\u015F\u0163\u014F\u0157\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=[[[\u015C\u014F\u0157\u0163\u012F\u014B\u011F\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=[[[\u0191\u012F\u013A\u0163\u0113\u0157\u015F\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=[[[\u0122\u0157\u014F\u0171\u03C1\u015F\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=[[[\u0108\u0105\u013A\u010B\u0171\u013A\u0105\u0163\u012F\u014F\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=[[[\u0108\u014F\u013A\u0171\u0271\u014B\u015F\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=[[[\u0174\u0105\u0157\u014B\u012F\u014B\u011F\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=[[[\u015C\u014F\u0271\u0113 \u010B\u014F\u014B\u018C\u012F\u0163\u012F\u014F\u014B \u028B\u0105\u013A\u0171\u0113\u015F \u0105\u0157\u0113 \u0271\u012F\u015F\u015F\u012F\u014B\u011F.\n \u014E\u014B\u013A\u0177 \u010B\u014F\u0271\u03C1\u013A\u0113\u0163\u0113 \u0113\u014B\u0163\u0157\u012F\u0113\u015F \u0175\u012F\u013A\u013A \u0183\u0113 \u0105\u018C\u018C\u0113\u018C \u0163\u014F \u0163\u0125\u0113 \u0192\u012F\u013A\u0163\u0113\u0157.\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=[[[\u015C\u0113\u013A\u0113\u010B\u0163\u012F\u014B\u011F \u0105 \u013A\u0105\u0157\u011F\u0113 \u014B\u0171\u0271\u0183\u0113\u0157 \u014F\u0192 \u010B\u014F\u013A\u0171\u0271\u014B\u015F \u010B\u0105\u014B \u015F\u013A\u014F\u0175 \u018C\u014F\u0175\u014B \u0163\u0125\u0113 \u03C1\u0113\u0157\u0192\u014F\u0157\u0271\u0105\u014B\u010B\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=[[[\u012C\u014B\u010B\u013A\u0171\u018C\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=[[[\u0114\u03C7\u010B\u013A\u0171\u018C\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=[[[\u0183\u0113\u0163\u0175\u0113\u0113\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=[[[\u0113\u01A3\u0171\u0105\u013A \u0163\u014F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=[[[\u010B\u014F\u014B\u0163\u0105\u012F\u014B\u015F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=[[[\u011F\u0157\u0113\u0105\u0163\u0113\u0157 \u0163\u0125\u0105\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=[[[\u011F\u0157\u0113\u0105\u0163\u0113\u0157 \u0163\u0125\u0105\u014B \u014F\u0157 \u0113\u01A3\u0171\u0105\u013A \u0163\u014F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=[[[\u013A\u0113\u015F\u015F \u0163\u0125\u0105\u014B\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=[[[\u013A\u0113\u015F\u015F \u0163\u0125\u0105\u014B \u014F\u0157 \u0113\u01A3\u0171\u0105\u013A \u0163\u014F\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=[[[\u012F\u014B\u012F\u0163\u012F\u0105\u013A\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=[[[\u015F\u0163\u0105\u0157\u0163\u015F \u0175\u012F\u0163\u0125\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=[[[\u0113\u014B\u018C\u015F \u0175\u012F\u0163\u0125\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=[[[\u0100\u015F\u010B\u0113\u014B\u018C\u012F\u014B\u011F\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=[[[\u010E\u0113\u015F\u010B\u0113\u014B\u018C\u012F\u014B\u011F\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=[[[\u0100\u015F\u010B\u0113\u014B\u018C\u012F\u014B\u011F\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=[[[\u010E\u0113\u015F\u010B\u0113\u014B\u018C\u012F\u014B\u011F\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=[[[\u0162\u014F\u0163\u0105\u013A\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=[[[\u0100\u028B\u0113\u0157\u0105\u011F\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=[[[\u039C\u012F\u014B\u012F\u0271\u0171\u0271\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=[[[\u039C\u0105\u03C7\u012F\u0271\u0171\u0271\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=[[[\u0183\u0113\u0163\u0175\u0113\u0113\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=[[[\u0113\u01A3\u0171\u0105\u013A \u0163\u014F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=[[[\u0105\u0192\u0163\u0113\u0157\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=[[[\u014F\u014B \u014F\u0157 \u0105\u0192\u0163\u0113\u0157\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=[[[\u0183\u0113\u0192\u014F\u0157\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=[[[\u0183\u0113\u0192\u014F\u0157\u0113 \u014F\u0157 \u014F\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=[[[\u0183\u0113\u0163\u0175\u0113\u0113\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=[[[\u0113\u01A3\u0171\u0105\u013A \u0163\u014F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=[[[\u011F\u0157\u0113\u0105\u0163\u0113\u0157 \u0163\u0125\u0105\u014B\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=[[[\u011F\u0157\u0113\u0105\u0163\u0113\u0157 \u0163\u0125\u0105\u014B \u014F\u0157 \u0113\u01A3\u0171\u0105\u013A \u0163\u014F\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=[[[\u013A\u0113\u015F\u015F \u0163\u0125\u0105\u014B\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=[[[\u013A\u0113\u015F\u015F \u0163\u0125\u0105\u014B \u014F\u0157 \u0113\u01A3\u0171\u0105\u013A \u0163\u014F\u2219\u2219\u2219\u2219\u2219]]] + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=[[[\u0192\u0157\u014F\u0271]]] +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=[[[\u0163\u014F\u2219\u2219]]] +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=[[[\u01B2\u0105\u013A\u0171\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=[[[\u015C\u0125\u014F\u0175 \u0191\u012F\u0113\u013A\u018C \u0105\u015F \u0108\u014F\u013A\u0171\u0271\u014B\u2219\u2219\u2219\u2219]]] +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=[[[\u0100\u018C\u018C \u0143\u0113\u0175 \u013B\u012F\u014B\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=[[[\u0114\u014B\u0163\u0113\u0157 \u028B\u0105\u013A\u012F\u018C \u028B\u0105\u013A\u0171\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=[[[\u015C\u0125\u014F\u0175 \u0100\u013A\u013A\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=[[[\u015C\u0125\u014F\u0175 \u015C\u0113\u013A\u0113\u010B\u0163\u0113\u018C\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=[[[\u015C\u0113\u013A\u0113\u010B\u0163 \u0100\u013A\u013A\u2219\u2219\u2219\u2219]]] +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=[[[\u015C\u0113\u013A\u0113\u010B\u0163 \u0105\u013A\u013A ({0}/{1})]]] +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=[[[\u039C\u014F\u028B\u0113 \u0163\u014F \u0162\u014F\u03C1\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=[[[\u039C\u014F\u028B\u0113 \u016E\u03C1\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=[[[\u039C\u014F\u028B\u0113 \u010E\u014F\u0175\u014B\u2219\u2219\u2219\u2219\u2219]]] +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=[[[\u039C\u014F\u028B\u0113 \u0163\u014F \u0181\u014F\u0163\u0163\u014F\u0271\u2219\u2219\u2219\u2219\u2219]]] + +#XFLD: Subtle link description label +LINK_SUBTLE=[[[\u015C\u0171\u0183\u0163\u013A\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XFLD: Emphasized link description label +LINK_EMPHASIZED=[[[\u0114\u0271\u03C1\u0125\u0105\u015F\u012F\u017E\u0113\u018C\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=[[[\u01A4\u0157\u0113\u015F\u015F \u01915 \u0163\u014F \u0157\u0113\u0192\u0157\u0113\u015F\u0125\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=[[[\u01A4\u0157\u0113\u015F\u015F \u01914 \u0163\u014F \u014F\u03C1\u0113\u014B \u0105 \u028B\u0105\u013A\u0171\u0113 \u0125\u0113\u013A\u03C1 \u018C\u012F\u0105\u013A\u014F\u011F\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=[[[\u0191\u014F\u014F\u0163\u0113\u0157\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=[[[\u0124\u0113\u0105\u018C\u0113\u0157\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=[[[\u015C\u0171\u0183\u0125\u0113\u0105\u018C\u0113\u0157\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=[[[\u01B2\u0105\u013A\u0171\u0113 \u015C\u0163\u0105\u0163\u0113 \u0114\u0157\u0157\u014F\u0157\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=[[[\u01B2\u0105\u013A\u0171\u0113 \u015C\u0163\u0105\u0163\u0113 \u0174\u0105\u0157\u014B\u012F\u014B\u011F\u2219\u2219\u2219\u2219\u2219]]] +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=[[[\u01B2\u0105\u013A\u0171\u0113 \u015C\u0163\u0105\u0163\u0113 \u015C\u0171\u010B\u010B\u0113\u015F\u015F\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=[[[\u0143\u0113\u03C7\u0163 \u015C\u0163\u0113\u03C1\u2219\u2219\u2219\u2219\u2219]]] +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=[[[\u01A4\u014F\u015F\u012F\u0163\u012F\u028B\u0113\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=[[[\u0108\u0157\u012F\u0163\u012F\u010B\u0105\u013A\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=[[[\u0143\u0113\u011F\u0105\u0163\u012F\u028B\u0113\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT=[[[{0} \u014F\u0192 {1}]]] +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=[[[\u0158\u0105\u0163\u012F\u014B\u011F\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=[[[\u0191\u0105\u028B\u014F\u0157\u012F\u0163\u0113\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=[[[\u0191\u013A\u0105\u011F]]] + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=[[[\u015C\u0113\u013A\u0113\u010B\u0163 \u0162\u012F\u0163\u013A\u0113 \u0100\u0157\u0157\u014F\u0175\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=[[[\u012C\u010B\u014F\u014B]]] + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=[[[\u013B\u014F\u011F\u014F]]] + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=[[[\u0143\u014F \u0271\u0105\u0163\u010B\u0125\u012F\u014B\u011F \u012F\u0163\u0113\u0271\u015F \u0192\u014F\u0171\u014B\u018C.\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=[[[\u0108\u0125\u0113\u010B\u0137 \u0163\u0125\u0113 \u0192\u012F\u013A\u0163\u0113\u0157 \u015F\u0113\u0163\u0163\u012F\u014B\u011F\u015F\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS=[[[{0} \u039C\u014F\u0157\u0113]]] + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=[[[\u016E\u014B\u0157\u0113\u0105\u018C\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=[[[\u013B\u014F\u010B\u0137\u0113\u018C\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=[[[\u0108\u013A\u014F\u015F\u0113\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]] +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=[[[\u0100\u013A\u013A\u2219]]] +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=[[[\u0181\u0105\u010B\u0137]]] +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=[[[\u039C\u0113\u015F\u015F\u0105\u011F\u0113\u015F\u2219\u2219\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=[[[\u01A4\u014F\u015F\u012F\u0163\u012F\u028B\u0113 \u0100\u010B\u0163\u012F\u014F\u014B\u2219\u2219\u2219\u2219]]] +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=[[[\u0143\u0113\u011F\u0105\u0163\u012F\u028B\u0113 \u0100\u010B\u0163\u012F\u014F\u014B\u2219\u2219\u2219\u2219]]] +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=[[[\u0114\u0271\u03C1\u0125\u0105\u015F\u012F\u017E\u0113\u018C\u2219\u2219\u2219\u2219]]] + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=[[[\u012C\u0163\u0113\u0271 {0} \u014F\u0192 {1} \u018C\u012F\u015F\u03C1\u013A\u0105\u0177\u0113\u018C]]] + +#XTXT: colon separator +COLON=[[[\:\u2219\u2219\u2219]]] diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_en_US_saptrc.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_en_US_saptrc.properties new file mode 100644 index 0000000..dad370e --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_en_US_saptrc.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=sL9vo0/JgyMWSc14mF914w_No data + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=ZjrStJ9IAoIMiIv20v9zXw_Unread + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=QqKLoIEHcbHGdBzb5y+8ow_Deletable + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=QAbXy+3lB9X4CAjQaUeqlQ_Has Details + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=fYtw+Ikc89SSQSa99JoCoA_Is Editable + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=7Efh+yA2DlwYrvsqwEXbuA_Is Active + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=lli/UiXUrX7PxqXbklrj5w_Group Header + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION=8dVM7MyZtVomV59yE6XGgg_{0} of {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Ii7L5rYuKojOphEnQ3fUlQ_Back + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=S5Sich/RfjGNCWphi6QUpA_On +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=0rdsQQpfpcAlJF8gDe+Jig_Off + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=RyRK9B+qPy5Jk0tSjnnCvg_Accept + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=ceHAiNl4LBu6DNI65/3dWg_Reject + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=0gvxj8OFeXRqga52tk//bg_Cancel + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=wm6NDl0qM1BIOMit8zhtbg_Cancel + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=UHrRhsoZjscVQcOPgjgH2A_More + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=l35Ms/845nbaN/16aH5/DA_OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=aXuz3WQlyNUuNB1WOe/f7Q_Cancel + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=QLzUXQH5WbngNS0KZrHzFg_Month + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=7aTVl6V0L41JUoga4S/ZwQ_Day + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=zI+8VP0Yx0Vs7QkVPyi1MA_Year + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=RyzsIN1zYgQDBWT/AhOV3A_Hours + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=VEhUphifLffaG954pusgZQ_Minutes + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=GZA1WtleP1Zt4Q08VUsCZA_Seconds + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=1Hon0puRo38Z5Uyk5WZAjQ_Now + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=g+WAzA8wi3WZiCh3Z1tTiA_Navigation + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=Fa1D5xFpipq5adGBiPdwSg_OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=SRXEs2OrjMREyTQOsSAlkg_Cancel + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=nYUCnPtTotbzvjAmZM1wlQ_Yes + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=P0zfxYkuXoZW5waqfjc1qw_No + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=bCpM+5QeR0ZCFl1f8+VR8w_Abort + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Vpm+r0PAILOmx8Ry1sEQHg_Retry + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=P2h6aUt5/1dTW1+6zY9tnQ_Ignore + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=gP0cuoYydwJqBpCkhjRIBg_Close + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=oYHoR1/UkYQSamhEjibQzg_Delete + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Q/vPiRAYxGsbHjjNDrlOvQ_Alert + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=AVmY97M8FHFWu17qoK0fPw_Confirmation + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=YXsR2eG/Mm10qQqNDXGueQ_Show Details + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=154jT3f0tzkYo6HTsbqncg_Pull Down to Refresh + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=MA0NSxA+lOZUteBtWeJYgA_Release to Refresh + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=/uwyzYeq3JN+9NdNrd+9Aw_Loading... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=AsY00RTysJaVzeXEg7YeqA_Please wait, data is loading + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=0FtiJWrNilHbFU6YV3S5XA_Refresh + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=HFKxbUIP/rZ64rz1jsIx+A_Logout + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=idc4msfwuxYmypci2CZFnA_OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=kvccL6FrtHJoFWZJ/ThQsA_Cancel + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=O9lVtreqzZNlAx88QjMK/Q_Undo Personalization + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=31nDyFulkSNComvxFS7xoQ_Columns + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=lWtmPDrWfu9qL8w5lAVr2w_All + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=BOie8Ri/U7K2Jg8Foc+KEw_No columns found + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=HnAd3HxEIWiPAprYF17JCg_View + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=lHELgvINdvAK9fWzoE3XQg_Sort By + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=H0Lwg5WAm0IkufxVyiQr4Q_Group By + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=WiAalyW6011WxZoC13iW8A_Filter By + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=VphQYxZg6dxqHZLktGPxrQ_Filter By\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=hWdk+4sS8o6gRFNntP4TuQ_Filtered by\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=p87m+B3k3pcCwmLTkiEdlg_OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=SlisGbafijERtoQuwjvtPQ_Cancel + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=JCfF1cE2rxpMAr8aozvSsA_None + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=wE9PcoUogrYuIteau/2hBw_Ascending + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=S8dDQzElpNriicj2VilfrQ_Descending + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Ldv7tSbiW3jakNZiT4CuzQ_Clear All Filters + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=GWdxmOM5n7J8haTl0j9Nlw_All + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED=QsxoGQzMxz3v5dbSL2UcQg_{0} (All) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=wQrp9+PI/21mmoi5RKASTw_Search + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION=dtDJtnjizCNdfmJdlDN9PQ_{0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=616Bc6fROtf6e8Q8WQPpZg_Filter + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=nAP6Lc+3npP/u0wwIQ9cEw_OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=bj1fQdTGOIoY1uvClyWbKA_Filtered by {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=ixajiuud0lnN9OZMOQUNJA_No filters selected + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=5jlfaTogRwqYT3f+28oaMQ_and + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND=jjQUdUBBOR9VcTK32hb0JQ_{0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=J4gQphyjVbf/6w7niFhnHA_Several filters applied + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT=RTjIoJbhiT9k/TyxGSLZEA_{0} more... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE=9hg/Xw1i2OsQBnhLwn+kGQ_{0} more available + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=L6hsBRzF9zEPw5HHzFUDNQ_Search Further on Server + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=HCLr3xdBb6dRzWBFxTmYpw_Remove Filter + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=HTtzRy7JTTa9ISv7U6xCtQ_Items selected\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=2MdR3p0cv3SIi3R2dZiJxQ_Post something here + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=ExZuESgaenjO6a3CUVPesw_Submit + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=w35h9JSzracuE0sFnh07hA_Show All Items + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=iYUvDzwmX3x3rmOEt/Nq7A_Remove Facet List + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=u9/FFvXY+urZG3SZVRKoKg_Add Facet List + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=bcIvKGqPCkhXL95IY70Jsw_Reset + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=r6apY9Kglbfamevot7SccA_Previous + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=B5eYLYjd9OWav3YvYm3Agg_Next + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=1t+U4h7cFW+ofv5VqR4wCA_MORE + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=akjWwFW8AchlBswd8XDrog_LESS + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=7xW0ath11g5DkMwXpyDiPw_Attachments ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=RfIekjIlOl1LCbzGXwLFGQ_Are you sure you want to delete the file {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=maPbB/gW6hY68058kIzjjw_Are you sure you want to delete the file? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Y7Gq92JOJgNmI9MgAwd53Q_Delete File + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=G9cRmx67+XASEZ6YVyc+5Q_The upload for the following files will be terminated\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=qK2J/1pMRmJbGtRTFSQ16w_Terminate upload + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=9dMupDDJ7mkQK93e1EFmUQ_File name already exists + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Vw1Hgua0IDfCBDWIIOnWvg_Uploading\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=LFGV52Xf4YYjbZsA6YOpTw_Upload failed + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=pLO6x4f4tRXu4Y6wLB2rMg_File type not allowed + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=4REFc75htPdMTYhZ/0afkg_Cancel + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=h+aXdVHVIpepfVLVZKEA4A_OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=koxoa1Yr9yQDwSMBFAkMbg_View Settings +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=hGTjfWDMZ8+mNDon8SlLIw_Define Filters +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=i13PPFJjBIgnoQOH55p2WA_Define Sorting +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=s4CTHCJwD0pHRDtxPjWnyw_Define Groups +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=xXy5BI01hbZMqsJq1nzSzw_Define Column Properties +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=/A37zkXFErOPkfpbb1oJkQ_OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=vovYO61+bgPdZdgbAySNGA_Cancel +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=+LkqjDLuwroTqEZSUF0iyg_Restore +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=rZdkjGcph3oR3q/of79I9A_Sorting +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=sQ+MHCoFkWJNAx5E0fn9WQ_Filters +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=2jayiNz11iSsUlCruXEluw_Groups +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=DtjIsG9/hRZjH23RGqScCA_Calculation +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=WjwXTk8pzaFbX08k/qtyOA_Columns +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=TV/DaqL1QL6J38hDH+iAJg_Warning +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=799a2Nv4oDxZ3mLXkdDrfg_Some condition values are missing.\n Only complete entries will be added to the filter. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=UySUtMrVMwnMlfnJwXfsqg_Selecting a large number of columns can slow down the performance + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=MNh++JtDy3TH4qKrXWyJrQ_Include + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=NHeBtmggCTeGzlET7AZtIw_Exclude + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=yZ9XJQ2evOJyH0Xn4u+eJg_between +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=Wt+SncNd6gT9lINhcb44vA_equal to +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=DFzJe7gys/XqktbJdZiPTQ_contains +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=WKQR7HKVV7EQRZrLP0I0LA_greater than +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=1PHNHh7FLnzZVWOIne8PWQ_greater than or equal to +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=PVWo87PBRrKGjVe7zVjTmg_less than +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=kBM6GH/YtNa/m+xATZLJgw_less than or equal to +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=/PPXjIPmcFHJ7HPYEB510w_initial +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=u/bJpccDPo70UdQvdgKefA_starts with +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=wCA22gwhxnxxHDjd08CnxA_ends with +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=wZJYhDVFTgzQfUqdVVV3gw_Ascending +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=E6jr05+NZebxqe/HaDoV+Q_Descending +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=IxlgO0cx3bOtJCzVP2qjtw_Ascending +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=nD3ynNfjmN9ukZ6iBxkPcw_Descending +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=NjmrpFkk/ek51KXlYllI0A_Total +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=2EQi6ZM3N4aC7L4wQIe7ag_Average +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Yv78HvlPPg6WPZ9RXFeoAw_Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=MOMP/lITHuyjWbqyhKTauw_Maximum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=Qwwc9m5y7xVk2+jwPUxcJA_between +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=b4w01cv/MvWt9StjeX91eg_equal to +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=yPXGLjWIYMMBTKdR7ded8g_after +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=78g36/rqf24UJt9NtfC7bg_on or after +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=QD5rb8DcERfzgdY9VUAVdw_before +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=vhbbRlgNRfNG5fP9ZRZsHg_before or on +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=+MqFwp/p6IO4Bu1FBdvLUg_between +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=UzMOZPRxluPrewPqYFXR3g_equal to +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=2wfqM29ymO9sbv3JN3UjeA_greater than +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=4w98L89wlb4qE7YM/xdpdA_greater than or equal to +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=a3jMXbX09xuLcxlTtSY5fA_less than +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=dJTVvyHuNexGmA49gtn5Qg_less than or equal to + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=SAC1O2WOvrrjcyE0eA+zGg_from +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=AovmIK+BDKp7jq/Df36oQQ_to +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Erpfe/PfZTu12E0y96ngKA_Value +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=fS4jwcMTO4iLbvubDAsH8Q_Show Field as Column +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=AeltAEwKFBBrCXzdxQPDog_Add New Line +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=aP+k/zMYdSLW6ew0HHdu4Q_Enter valid value + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=ZBukMx6Ge7Xxx1Y9Fkme7g_Show All +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=cERjZzry5GmfGkgESXnJyA_Show Selected +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=IB9k1n9b1KipxvAmNCXqlA_Select All +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=AEOaipMlAML0V2nGMl6udA_Select all ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=26n6jd4OOPtFJ1S7+5jfUQ_Move to Top +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=ER1DC6VXEeRkcXUhJrqhwg_Move Up +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=JBy5H/feQbbOe10+e0XK6Q_Move Down +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=JqKBx5z+jU2a1Z/ls+pB7Q_Move to Bottom + +#XFLD: Subtle link description label +LINK_SUBTLE=DndWQggFyj6GwB1sK6sBHg_Subtle +#XFLD: Emphasized link description label +LINK_EMPHASIZED=PxVhYvYyVPH5gKI0is/X+A_Emphasized + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=6t8pP2D1d/vqrgTbeTuJYg_Press F5 to refresh + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=vyEorFgI3Qsosx8INwocfg_Press F4 to open a value help dialog + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=P/34umG5VUekTq8oO/C4mw_Footer +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=vfcYS4CTFBUPosC17RKA0g_Header +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=jaux3tn7eIoo92mWOv5uEw_Subheader + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=vaWnfazaBSUpxe6Q4RhZNw_Value State Error +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=UZ45xQjQ0mmonp3jiyC37A_Value State Warning +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=iB+NGOPJmnkbCgc8HpKoNA_Value State Success + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=84jTLaa4AUfglw6NSsKPLQ_Next Step +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=j2bNkLfWfHr3aDZZP1QaPg_Positive +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=qeko3aT3xKtK9ZnMtlI/mA_Critical +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=KQSoaP8B8OFdg5GA7f/7kA_Negative + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT=MJEXWhcvPB0bR4gr01cZeQ_{0} of {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=T3W+Nx0ylW9va1tCjU/Yfg_Rating + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=mAYk+r/ONOuAmxOAgVFvSg_Favorite +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=DsOlVuWFGy2Vt9RLh2Pd8g_Flag + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=q/LSm+9xORtcaZ/+XpGHLQ_Select Title Arrow +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=TQ1I4HZaN0wNuGks4jrw3w_Icon + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=XyP1ix2gOC5ayBhourVgFw_Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=t4CPNq/XJDeDlvdbLZRTug_No matching items found. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=NCbD87+Kt77gsMTfUkhCKA_Check the filter settings + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS=jOrXmBXclUlezZJEDhd/4w_{0} More + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=prnAXSC1nm68IWM5NlK0/g_Unread +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=TGB6M8ACceo3qoD4tUp7Cg_Locked + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=S++Mp0dQXA0Qkyr6eoGbMA_Close +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=luOZkOXYYAVfv9d8MYtzaQ_All +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=LWQ/zb11ZS6Jis3WYKY8fA_Back +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=DybkW8xyhfZTdhYTa1Nddg_Messages + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=tseYj39PGZzsW26BpANv7g_Positive Action +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=SbxVHYGEtwDYttGX1iKrFQ_Negative Action +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=PXYkBxd5Xh0tnFLm0GvJ6g_Emphasized + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=fAby0z+wfHNbksgmIjyTxA_Item {0} of {1} displayed + +#XTXT: colon separator +COLON=8oad64v8zL5xEhQiAEY2ww_\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_es.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_es.properties new file mode 100644 index 0000000..af6419b --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_es.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Sin datos + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=No le\u00EDdo + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Borrable + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Tiene detalles + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Se puede tratar + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Est\u00E1 activo + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Cabecera de grupo + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} de {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Atr\u00E1s + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=On +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Off + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Aceptar + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Rechazar + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Cancelar + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Cancelar + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Otros datos + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Canc. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Mes + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=D\u00EDa + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=A\u00F1o + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Horas + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minutos + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Segundos + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Ahora + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navegaci\u00F3n + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Cancelar + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=S\u00ED + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=No + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Cancelar + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Repetir + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignorar + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Cerrar + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Borrar + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Mensaje de advertencia + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Confirmaci\u00F3n + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Visualizar detalles + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Arrastrar para actualizar + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Soltar para actualizar + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Cargando datos... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Cargando datos... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Actualizar + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Salir del sistema + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Cancelar + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Reinicializar personalizaci\u00F3n + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Columnas + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Todo + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=No existen columnas + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Vista + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Clasificar por + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Agrupar por + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtrar por + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtrar por\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtrado por\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Cancelar + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Nada + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Ascendente + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Descendente + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Restablecer todos los filtros + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Tod. + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (todo) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Buscar + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filtro + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtrado por {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Ning\u00FAn filtro seleccionado + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=y + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Varios filtros activos + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} m\u00E1s... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE=Hay {0} m\u00E1s + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Seguir buscando en servidor + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Eliminar filtro + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Elementos seleccionados\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Publicar algo aqu\u00ED + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Enviar + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Visualizar elementos (todos) + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Eliminar lista de restricciones + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=A\u00F1adir lista de restricciones + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Reinic. + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Atr\u00E1s + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Continuar + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=M\u00C1S + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MENOS + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Anexos ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u00BFEst\u00E1 seguro de que desea borrar el fichero {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\u00BFSeguro que desea borrar el fichero? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Borrar fichero + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Finalizar\u00E1 la carga de los siguientes ficheros\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Finalizar carga + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=El nombre de fichero ya existe + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Cargar\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Carga err\u00F3nea + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Tipo de fichero no permitido + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Cancelar + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Visualizar parametrizaciones +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Definir filtro +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Definir clasificaci\u00F3n +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Definir grupos +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Definir propiedades de columnas +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Cancelar +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Reinicializar +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Clasific. +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filtro +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Grupos +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=C\u00E1lculo +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Columnas +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Mensaje de advertencia +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Faltan algunos valores de condici\u00F3n.\n Solo se a\u00F1adir\u00E1n al filtro entradas completas. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=La selecci\u00F3n de muchas columnas puede tener efectos negativos en el rendimiento + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Incluir + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Excluir + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=entre +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=igual +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=contenido +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=mayor que +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=mayor o igual que +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=menor que +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=menor o igual que +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=inicial +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=comienza por +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=finaliza con +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Ascendente +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Descendente +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Ascendente +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Descendente +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Total +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Promedio +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=M\u00EDnimo +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=M\u00E1ximo +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=entre +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=igual +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=despu\u00E9s de +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=el o despu\u00E9s de +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=antes de +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=antes de o el +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=entre +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=igual +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=mayor que +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=mayor o igual que +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=menor que +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=menor o igual que + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=De +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=A +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Val. +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Visualizar campo como columna +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=A\u00F1adir fila nueva +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Indique un valor v\u00E1lido + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Visualizar todo +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Visualizar selecci\u00F3n +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Seleccionar todos +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Seleccionar todo ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Hacia arriba +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Hacia arriba +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Hacia abajo +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Hacia abajo + +#XFLD: Subtle link description label +LINK_SUBTLE=Discreto +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Resaltado + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Actualizar con F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Pulse F4 para abrir la Ayuda para entradas + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Pie de p\u00E1gina +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Cabecera +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Subcabecera + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Estado de valor\: Error +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Estado de valor\: Advertencia +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Estado de valor\: Correcto + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Seguiente paso +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positivo +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Cr\u00EDtico +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negativo + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} de {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Valoraci\u00F3n + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Favorito +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Indicador + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Seleccionar flecha de t\u00EDtulo +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=S\u00EDmbolo + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=No se han encontrado elementos adecuados +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Compruebe las parametrizaciones de filtro + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} M\u00E1s + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=No le\u00EDdo +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Bloqueado + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Cerrar +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Tod. +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Atr\u00E1s +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Mensajes + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Acci\u00F3n positiva +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Acci\u00F3n negativa +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Resaltado + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Se visualiza el elemento {0} de {1} + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_et.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_et.properties new file mode 100644 index 0000000..151e434 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_et.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Andmeid pole + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Lugemata + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Kustutatav + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Omab \u00FCksikasju + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=On redigeeritav + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=On aktiivne + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Grupip\u00E4is + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} / {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Tagasi + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=S +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Vl + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Aktsepteeri + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=L\u00FCkka tagasi + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=T\u00FChista + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=T\u00FChista + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Rohkem + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=T\u00FChista + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Kuu + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=P\u00E4ev + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Aasta + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Tunnid + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minutid + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekundid + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Praegu + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigeerimine + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=T\u00FChista + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Jah + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Ei + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Katkesta + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Proovi uuesti + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Eira + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Sule + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Kustuta + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Hoiatus + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Kinnitus + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Kuva \u00FCksikasjad + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=V\u00E4rskendamiseks alla + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=V\u00E4rskendamiseks vabasta + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Laadimine... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Oodake, andmeid laaditakse + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=V\u00E4rskenda + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Logi v\u00E4lja + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=T\u00FChista + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=V\u00F5ta isikup\u00E4rastamine tagasi + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Veerud + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=K\u00F5ik + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Veerge ei leitud + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Vaade + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Sortimisalus + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Grupeerimisalus + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtreerimisalus + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtreerimisalus\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtreerimisalus\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=T\u00FChista + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Pole + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Kasvav + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Kahanev + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Eemalda k\u00F5ik filtrid + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=K\u00F5ik + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (k\u00F5ik) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Otsi + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filtreeri + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtreerimisalus {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Filtreid pole valitud + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=ja + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Rakendati mitu filtrit + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} veel... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} on veel saadaval + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Otsi veel serverist + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Eemalda filter + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Valitud \u00FCksused\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Postitage siia midagi + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Edasta + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Kuva k\u00F5ik \u00FCksused + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Eemalda tahuloend + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Lisa tahuloend + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=L\u00E4htesta + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Eelmine + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Edasi + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=ROHKEM + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=V\u00C4HEM + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Manused ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Kas soovite kindlasti faili {0} kustutada? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Kas soovite kindlasti selle faili kustutada? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Kustuta fail + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=J\u00E4rgmiste failide \u00FCleslaadimine katkestatakse\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Katkesta \u00FCleslaadimine + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Faili nimi on juba olemas + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u00DCleslaadimine\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\u00DCleslaadimine nurjus + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Failit\u00FC\u00FCp pole lubatud + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=T\u00FChista + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Vaates\u00E4tted +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=M\u00E4\u00E4ratle filtrid +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=M\u00E4\u00E4ratle sortimine +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=M\u00E4\u00E4ratle grupid +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=M\u00E4\u00E4ratle veeruatribuudid +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=T\u00FChista +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Taasta +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Sortimine +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filtrid +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Grupid +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Arvutus +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Veerud +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Hoiatus +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=M\u00F5ni tingimusev\u00E4\u00E4rtus puudub.\n Filtrisse lisatakse ainult t\u00E4ielikud kirjed. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Suure arvu veergude valimine v\u00F5ib aeglustada j\u00F5udlust + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Kaasa + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=V\u00E4lista + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=vahemikus +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=on v\u00F5rdne +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=sisaldab +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=suurem kui +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=suurem kui v\u00F5i v\u00F5rdne +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=v\u00E4iksem kui +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=v\u00E4iksem kui v\u00F5i v\u00F5rdne +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=algne +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=algab v\u00E4\u00E4rtusega +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=l\u00F5peb v\u00E4\u00E4rtusega +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Kasvav +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Kahanev +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Kasvav +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Kahanev +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Summa +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Keskmine +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Miinimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maksimum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=vahemikus +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=on v\u00F5rdne +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=p\u00E4rast +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=kuup\u00E4eval v\u00F5i p\u00E4rast +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=enne +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=enne v\u00F5i kuup\u00E4eval +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=vahemikus +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=on v\u00F5rdne +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=suurem kui +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=suurem kui v\u00F5i v\u00F5rdne +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=v\u00E4iksem kui +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=v\u00E4iksem kui v\u00F5i v\u00F5rdne + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=alates +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=kuni +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=V\u00E4\u00E4rtus +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Kuva v\u00E4li veeruna +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Lisa uus rida +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Sisestage sobiv v\u00E4\u00E4rtus + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Kuva k\u00F5ik +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Kuva valitud +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Vali k\u00F5ik +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Valige k\u00F5ik ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Nihuta k\u00F5ige \u00FCles +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Nihuta \u00FCles +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Nihuta alla +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Nihuta k\u00F5ige alla + +#XFLD: Subtle link description label +LINK_SUBTLE=Peenike +#XFLD: Emphasized link description label +LINK_EMPHASIZED=R\u00F5hutatud + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=V\u00E4rskendamiseks vajutage klahvi F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Sisestusspikri dialoogi avamiseks vajutage klahvi F4 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Jalus +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=P\u00E4is +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Alapealkiri + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=V\u00E4\u00E4rtuse olek T\u00F5rge +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=V\u00E4\u00E4rtuse olek Hoiatus +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=V\u00E4\u00E4rtuse olek \u00D5nnestumine + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=J\u00E4rgmine etapp +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positiivne +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kriitiline +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negatiivne + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} / {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Hinnang + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Lemmik +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=T\u00E4his + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Valige tiitli nool +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Ikoon + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Sobivaid \u00FCksusi ei leitud. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Kontrollige filtris\u00E4tteid + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} veel + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Lugemata +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Blokeeritud + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Sule +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=K\u00F5ik +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Tagasi +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Teated + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Positiivne toiming +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negatiivne toiming +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=R\u00F5hutatud + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Kuvatud on \u00FCksus {0}/{1} + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_fi.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_fi.properties new file mode 100644 index 0000000..0f1499d --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_fi.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Ei tietoja + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Lukematon + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Poistettava + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Sis\u00E4lt\u00E4\u00E4 lis\u00E4tietoja + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=On k\u00E4sittelij\u00E4 + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=On aktiivinen + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Ryhm\u00E4otsikko + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} / {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Paluu + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=ON +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=EI + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Hyv\u00E4ksy + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Hylk\u00E4\u00E4 + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Keskeyt\u00E4 + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Keskeyt\u00E4 + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Muut tiedot + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Kesk. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Kuukausi + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=P\u00E4iv\u00E4 + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Vuosi + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Tunnit + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minuutit + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekunnit + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Nyt + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigointi + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Keskeyt\u00E4 + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Kyll\u00E4 + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Ei + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Keskeyt\u00E4 + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Tee uudelleen + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ohita + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Sulje + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Poista + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Varoitus + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Vahvistus + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=N\u00E4yt\u00E4 lis\u00E4tiedot + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Ved\u00E4 p\u00E4ivityst\u00E4 varten + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Vapauta p\u00E4ivityst\u00E4 varten + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Tiedot ladataan... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Tiedot ladataan... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=P\u00E4ivit\u00E4 + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Kirjaudu ulos + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Keskeyt\u00E4 + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Palauta yksil\u00F6llist\u00E4minen + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Sarakkeet + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Kaikki + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Sarakkeita ei l\u00F6ytynyt + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=N\u00E4kym\u00E4 + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Lajitteluperuste + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Ryhmittele k\u00E4ytt\u00E4en perustetta + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Suodata k\u00E4ytt\u00E4en perustetta + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Suodata k\u00E4ytt\u00E4en perustetta\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Suodatusperuste\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Keskeyt\u00E4 + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Ilman + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Nouseva + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Laskeva + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Palauta kaikki suodattimet + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Kaikki + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (Kaikki) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Hae + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Suodatin + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Suodatusperuste {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Suodatinta ei ole valittu + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=ja + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Useita aktiivisia suodattimia + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} muuta... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} muuta k\u00E4ytett\u00E4viss\u00E4 + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Jatka hakua palvelimessa + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Poista suodatin + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Valitut elementit\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Postita t\u00E4ss\u00E4 + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=L\u00E4het\u00E4 + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=N\u00E4yt\u00E4 kaikki elementit + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Poista fasettiluettelo + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Lis\u00E4\u00E4 fasettiluettelo + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Palauta + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Paluu + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Jatka + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=LIS\u00C4\u00C4 + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=V\u00C4HEMM\u00C4N + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Liitteet ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Haluatko varmasti poistaa tiedoston {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Haluatko todella poistaa tiedoston? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Poista tiedosto + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Seuraavien tiedostojen lataus lopetetaan\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Lopeta lataus + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Tiedostonimi on jo olemassa + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Puhuroi\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Lataaminen ep\u00E4onnistui + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Tiedostotyyppi ei ole sallittu + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Keskeyt\u00E4 + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=N\u00E4yt\u00E4 asetukset +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=M\u00E4\u00E4rit\u00E4 suodatin +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=M\u00E4\u00E4rit\u00E4 lajittelu +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=M\u00E4\u00E4rit\u00E4 ryhm\u00E4t +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=M\u00E4\u00E4rit\u00E4 sarakeominaisuudet +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Keskeyt\u00E4 +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Palauta +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Lajittelu +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Suodatin +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Ryhm\u00E4t +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Laskenta +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Sarakkeet +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Varoitus +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Joitakin ehtoarvoja puuttuu.\n Vain t\u00E4ydelliset merkinn\u00E4t lis\u00E4t\u00E4\u00E4n suodattimeen. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Usean sarakkeen valinta voi vaikuttaa suorituskykyyn negatiivisesti + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Sis\u00E4llyt\u00E4 + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=J\u00E4t\u00E4 pois + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=v\u00E4lill\u00E4 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=on yht\u00E4 suuri kuin +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=sis\u00E4lt\u00E4\u00E4 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=Suurempi kuin +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=suurempi tai yht\u00E4 suuri kuin +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=Pienempi kuin +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=pienempi tai yht\u00E4 suuri kuin +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=alku +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=alussa on +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=lopussa on +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Nouseva +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Laskeva +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Nouseva +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Laskeva +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Summa +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Keskiarvo +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimi +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maksimi +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=v\u00E4lill\u00E4 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=on yht\u00E4 suuri kuin +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=my\u00F6hemmin kuin +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=samana p\u00E4iv\u00E4n\u00E4 tai my\u00F6hemmin kuin +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=ennen +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=ennen tai samana p\u00E4iv\u00E4n\u00E4 kuin +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=v\u00E4lill\u00E4 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=on yht\u00E4 suuri kuin +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=Suurempi kuin +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=suurempi tai yht\u00E4 suuri kuin +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=pienempi kuin +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=pienempi tai yht\u00E4 suuri kuin + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=Alku +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=loppu +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Arvo +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=N\u00E4yt\u00E4 kentt\u00E4 sarakkeena +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Lis\u00E4\u00E4 rivi +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Sy\u00F6t\u00E4 kelpaava arvo + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=N\u00E4yt\u00E4 kaikki +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=N\u00E4yt\u00E4 valinta +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Valitse kaikki +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Valitse kaikki ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Aivan yl\u00F6s +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Yl\u00F6s +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Alas +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Aivan alas + +#XFLD: Subtle link description label +LINK_SUBTLE=Hillitty +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Korostettu + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=P\u00E4ivit\u00E4 F5\:ll\u00E4 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Avaa valintaluettelo painamalla F4 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Alatunniste +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Otsikko +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=V\u00E4liotsikko + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Arvon tila Virhe +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Arvon tila Varoitus +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Arvon tila Onnistuminen + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Seuraava askel +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positiivinen +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kriittinen +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negatiivinen + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} / {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Luokitus + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Suosikki +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Tunnus + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Valitse otsikon nuoli +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Symboli + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Sopivia elementtej\u00E4 ei l\u00F6ytynyt. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Tarkista suodatinasetukset + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} lis\u00E4\u00E4 + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Lukematon +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Lukittu + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Sulje +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Kaikki +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Paluu +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Ilmoitukset + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Positiivinen toimi +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negatiivinen toimi +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Korostettu + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Elementti {0} / {1} n\u00E4ytet\u00E4\u00E4n + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_fr.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_fr.properties new file mode 100644 index 0000000..455a05e --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_fr.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Aucune donn\u00E9e + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Non lu + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Supprimable + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=A des d\u00E9tails + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Est \u00E9ditable + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Est actif + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=En-t\u00EAte du groupe + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} sur {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Retour + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=Act +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=D\u00E9s + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Accepter + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Refuser + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Interrompre + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Interrompre + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Autres donn\u00E9es + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Interr. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Mois + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Jour + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Ann\u00E9e + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Heures + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minutes + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Secondes + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Maint. + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigation + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Interrompre + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Oui + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Non + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Interrompre + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=R\u00E9p\u00E9ter + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignorer + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Fermer + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Suppr. + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Avertissement + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Confirmation + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Afficher d\u00E9tails + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Descendre pour rafra\u00EEchir + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Lib\u00E9rer pour rafra\u00EEchir + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Chargement des donn\u00E9es... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Chargement des donn\u00E9es... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Rafra\u00EEchir + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Fin de session + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Interrompre + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=R\u00E9initialiser personnalisation + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Colonnes + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Tout + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Aucune colonne trouv\u00E9e + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Vue + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Trier par + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Regrouper par + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtrer par + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtrer par \: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtr\u00E9 par \: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Interrompre + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Sans + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Ordre croissant + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Ordre d\u00E9croissant + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=R\u00E9initialiser tous les filtres + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Tous + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (tous) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Recherche + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filtre + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtr\u00E9s par {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Aucun filtre s\u00E9lectionn\u00E9 + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=et + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Plusieurs filtres actifs + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} Autres... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} Autres disponibles + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Poursuivre la recherche sur le serveur + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Supprimer filtre + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=\u00C9l\u00E9ments s\u00E9lectionn\u00E9s \: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Publier quelque chose ici... + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Soumettre + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Afficher tous les \u00E9l\u00E9ments + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Supprimer liste des facettes + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Ajouter liste des facettes + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=R\u00E9initial. + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Retour + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Suite + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=PLUS + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MOINS + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Pi\u00E8ces jointes ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Voulez-vous vraiment supprimer le fichier {0} ? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Voulez-vous vraiment supprimer le fichier ? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Supprimer fichier + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Le t\u00E9l\u00E9chargement des fichiers suivants sera termin\u00E9 \: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Terminer t\u00E9l\u00E9chargement + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Nom de fichier d\u00E9j\u00E0 existant + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=T\u00E9l\u00E9charger \: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Echec du t\u00E9l\u00E9chargement + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Type de fichier non autoris\u00E9 + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Interrompre + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Afficher options +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=D\u00E9finir filtres +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=D\u00E9finir tri +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=D\u00E9finir groupes +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=D\u00E9finir propri\u00E9t\u00E9s des colonnes +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Interrompre +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=R\u00E9initialiser +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Tri +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filtre +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Groupes +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Calcul +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Colonne +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Avertissement +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Certaines conditions sont manquantes.\n Seules les entr\u00E9es compl\u00E8tes sont ajout\u00E9es au filtre. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=La s\u00E9lection de nombreuses colonnes peut avoir des r\u00E9percussions n\u00E9gatives sur la performance. + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Inclure + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Exclure + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=Entre +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=\u00C9gal +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=Comprend +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=Sup\u00E9rieur \u00E0 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=Sup\u00E9rieur ou \u00E9gal \u00E0 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=Inf\u00E9rieur \u00E0 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=Inf\u00E9rieur ou \u00E9gal \u00E0 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=Initial +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=Commence par +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=Se termine par +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Ordre croissant +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Ordre d\u00E9croissant +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Ordre croissant +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Ordre d\u00E9croissant +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Total +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Moyenne +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maximum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=Entre +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=\u00C9gal +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=apr\u00E8s le +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=le ou apr\u00E8s le +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=avant le +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=avant le ou le +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=Entre +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=\u00C9gal +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=Sup\u00E9rieur \u00E0 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=Sup\u00E9rieur ou \u00E9gal \u00E0 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=Inf\u00E9rieur \u00E0 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=Inf\u00E9rieur ou \u00E9gal \u00E0 + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=par +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=Jusqu'au +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Valeur +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Afficher zone comme colonne +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Ajouter nouvelle ligne +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Entrez une valeur correcte + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Afficher tout +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Afficher s\u00E9lection +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=S\u00E9lect. tout +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Tout s\u00E9lectionner ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Vers tout en haut +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Vers le haut +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Vers le bas +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Vers tout en bas + +#XFLD: Subtle link description label +LINK_SUBTLE=Subtil +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Mis en surbrillance + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Actualiser avec F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Appuyez sur F4 pour ouvrir l'aide de valeur. + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Pied de page +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Intitul\u00E9 +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Sous-intitul\u00E9 + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Erreur du statut de valeur +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Statut de valeur Avertissement +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Statut de valeur Succ\u00E8s + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Etape suivante +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positif +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Critique +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=N\u00E9gatif + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} de {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Evaluation + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Favori +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Code + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=S\u00E9lectionner fl\u00E8che du titre +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Ic\u00F4ne + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Aucun \u00E9l\u00E9ment concordant trouv\u00E9 +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=V\u00E9rifiez les options du filtre. + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} Plus + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Non lu +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Bloqu\u00E9 + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Fermer +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Tout +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Retour +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Messages + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Action positive +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Action n\u00E9gative +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Mis en surbrillance + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=\u00E9l\u00E9ment {0} sur {1} est affich\u00E9 + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_hi.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_hi.properties new file mode 100644 index 0000000..e88ead0 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_hi.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\u0915\u094B\u0908 \u0921\u0947\u091F\u093E \u0928\u0939\u0940\u0902 + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=\u092C\u093F\u0928\u093E \u092A\u0922\u093C\u0947 \u0917\u090F + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=\u0939\u091F\u093E\u0928\u0947 \u092F\u094B\u0917\u094D\u092F \u0939\u0948 + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=\u0935\u093F\u0935\u0930\u0923 \u0939\u0948 + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\u0938\u0902\u092A\u093E\u0926\u0928 \u092F\u094B\u0917\u094D\u092F \u0939\u0948 + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\u0938\u0915\u094D\u0930\u093F\u092F \u0939\u0948 + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=\u0938\u092E\u0942\u0939 \u0936\u0940\u0930\u094D\u0937\u0932\u0947\u0916 + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} \u0907\u0938\u0915\u093E {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=\u092A\u0940\u091B\u0947 + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=\u091A\u093E. +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=\u092C\u0902\u0926 + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=\u0938\u094D\u0935\u0940\u0915\u093E\u0930 \u0915\u0930\u0947\u0902 + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=\u0905\u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0947\u0902 + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902 + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902 + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=\u0905\u0927\u093F\u0915 + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=\u0920\u0940\u0915 + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=\u0930\u0926\u094D.\u0915. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=\u092E\u0939\u0940\u0928\u093E + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=\u0926\u093F\u0928 + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u0935\u0930\u094D\u0937 + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=\u0918\u0902\u091F\u0947 + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=\u092E\u093F\u0928\u091F + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=\u0938\u0947\u0915\u0902\u0921 + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=\u0905\u092C + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=\u0928\u0947\u0935\u093F\u0917\u0947\u0936\u0928 + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=\u0920\u0940\u0915 + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902 + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=\u0939\u093E\u0902 + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=\u0928\u0939\u0940\u0902 + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\u0928\u093F\u0930\u0938\u094D\u0924 \u0915\u0930\u0947\u0902 + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=\u092A\u0941\u0928\: \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902 + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=\u0905\u0928\u0926\u0947\u0916\u093E \u0915\u0930\u0947\u0902 + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\u092C\u0902\u0926 \u0915\u0930\u0947\u0902 + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=\u0939\u091F\u093E\u090F\u0902 + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=\u0905\u0932\u0930\u094D\u091F + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=\u092A\u0941\u0937\u094D\u091F\u093F \u0915\u0930\u0947\u0902 + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=\u0935\u093F\u0935\u0930\u0923\u094B\u0902 \u0915\u094B \u0926\u093F\u0916\u093E\u090F\u0902 + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=\u0930\u093F\u092B\u093C\u094D\u0930\u0947\u0936 \u0915\u0930. \u0915\u0947 \u0932\u093F.\u092A\u0941\u0932 \u0915. + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=\u0930\u093F\u092B\u093C\u094D\u0930\u0947\u0936 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0930\u093F\u0932. + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u0932\u094B\u0921\u093F\u0902\u0917... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=\u0915\u0943\u092A\u092F\u093E \u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E \u0915\u0930\u0947\u0902, \u0921\u0947. \u0932.\u0939. + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=\u0930\u0940\u092B\u093C\u094D\u0930\u0947\u0936 \u0915\u0930\u0947\u0902 + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=\u0932\u0949\u0917\u0906\u0909\u091F + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=\u0920\u0940\u0915 + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902 + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=\u0928\u093F\u091C\u0940\u0915\u0930\u0923 \u092A\u0942\u0930\u094D\u0935\u0935\u0924 \u0915\u0930\u0947\u0902 + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=\u0938\u094D\u0924\u0902\u092D + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=\u0938\u092D\u0940 + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=\u0915\u094B\u0908 \u0938\u094D\u0924\u0902\u092D \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=\u0926\u0947\u0916\u0947\u0902 + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=\u0926\u094D\u0935\u093E\u0930\u093E \u0915\u094D\u0930\u092E\u093F\u0924 \u0915\u0930\u0947\u0902 + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=\u0907\u0938\u0915\u0947 \u0926\u094D\u0935\u093E\u0930\u093E \u0938\u092E\u0942\u0939 + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=\u092B\u093C\u093F\u0932\u094D\u091F\u0930 \u0926\u094D\u0935\u093E\u0930\u093E + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=\u0926\u094D\u0935\u093E\u0930\u093E \u095E\u093F\u0932\u094D\u091F\u0930 \u0915\u0930\u0947\u0902\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\u0907\u0938\u0915\u0947 \u0926\u094D\u0935\u093E\u0930\u093E \u095E\u093F\u0932\u094D\u091F\u0930 \u0915\u093F\u092F\u093E \u0917\u092F\u093E\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=\u0920\u0940\u0915 + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902 + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=\u0915\u0941\u091B \u0928\u0939\u0940\u0902 + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=\u092C\u095D\u0924\u0947 \u0915\u094D\u0930\u092E \u092E\u0947\u0902 + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=\u0918\u091F\u0924\u0947 \u0915\u094D\u0930\u092E \u092E\u0947\u0902 + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\u0938\u092D\u0940 \u095E\u093F\u0932\u094D\u091F\u0930 \u0938\u093E\u095E \u0915\u0930\u0947\u0902 + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=\u0938\u092D\u0940 + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED=(\u0938\u092D\u0940) {0} + +#XFLD: Search field prompt +FACETFILTER_SEARCH=\u0916\u094B\u091C\u0947\u0902 + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=\u095E\u093F\u0932\u094D\u091F\u0930 + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=\u0920\u0940\u0915 + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY={0} ({1}) \u0926\u094D\u0935\u093E\u0930\u093E \u095E\u093F\u0932\u094D\u091F\u0930 \u0915\u093F\u092F\u093E \u0917\u092F\u093E + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=\u0915\u094B\u0908 \u092B\u093C\u0940\u0932\u094D\u091F\u0930 \u091A\u092F\u0928\u093F\u0924 \u0928\u0939\u0940\u0902 + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\u0914\u0930 + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=\u0915\u0908 \u092B\u093F\u0932\u094D\u091F\u0930 \u0932\u093E\u0917\u0942 \u0915\u093F\u090F \u0917\u090F + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} \u0914\u0930 \u0905\u0927\u093F\u0915... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} \u0905\u0927\u093F\u0915 \u0909\u092A\u0932\u092C\u094D\u0927 \u0939\u0948 + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=\u0914\u0930 \u0905\u0927\u093F\u0915 \u0938\u0930\u094D\u0935\u0930 \u092A\u0930 \u0916\u094B\u091C\u0947\u0902 + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=\u092B\u093C\u093F\u0932\u094D\u091F\u0930 \u0939\u091F\u093E\u090F\u0902 + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=\u0906\u0907\u091F\u092E \u0915\u093E \u091A\u092F\u0928 \u0915\u093F\u092F\u093E \u0917\u092F\u093E\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\u092F\u0939\u093E\u0902 \u0915\u0941\u091B \u092A\u094B\u0938\u094D\u091F \u0939\u0948... + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=\u0938\u092C\u092E\u093F\u091F \u0915\u0930\u0947\u0902 + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=\u0938\u092D\u0940 \u0906\u0907\u091F\u092E\u094B\u0902 \u0915\u094B \u0926\u093F\u0916\u093E\u090F\u0902 + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=\u092A\u0939\u0932\u0942 \u0938\u0942\u091A\u0940 \u0915\u094B \u0939\u091F\u093E\u090F\u0902 + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=\u092A\u0939\u0932\u0941 \u0938\u0942\u091A\u0940 \u091C\u094B\u0921\u093C\u0947\u0902 + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=\u0930\u0940\u0938\u0947\u091F \u0915\u0930\u0947\u0902 + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=\u092A\u093F\u091B\u0932\u093E + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=\u0905\u0917\u0932\u093E + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=\u0905\u0927\u093F\u0915 + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=LESS + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=\u0905\u0928\u0941\u0932\u0917\u094D\u0928\u0915 ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u0915\u094D\u092F\u093E \u0906\u092A \u0928\u093F\u0936\u094D\u091A\u093F\u0924 \u0930\u0942\u092A \u0938\u0947 \u0907\u0938 \u091B\u0935\u093F \u0915\u094B \u0939\u091F\u093E\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902 "{0}"? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\u0915\u094D\u092F\u093E \u0906\u092A \u0928\u093F\u0936\u094D\u091A\u093F\u0924 \u0930\u0942\u092A \u0938\u0947 \u092B\u093C\u093E\u0907\u0932 \u0939\u091F\u093E\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=\u092B\u093C\u093E\u0907\u0932 \u0939\u091F\u093E\u090F\u0902 + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\u0928\u093F\u092E\u094D\u0928\u0932\u093F\u0916\u093F\u0924 \u092B\u093C\u093E\u0907\u0932 \u0915\u0947 \u0932\u093F\u090F \u0905\u092A\u0932\u094B\u0921 \u0938\u092E\u093E\u092A\u094D\u0924 \u0915\u093F\u092F\u093E \u0917\u092F\u093E\u0903 + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=\u0905\u092A\u0932\u094B\u0921 \u0938\u092E\u093E\u092A\u094D\u0924 \u0915\u0930\u0947\u0902 + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=\u092B\u093C\u093E\u0907\u0932 \u0928\u093E\u092E \u092A\u0939\u0932\u0947 \u0938\u0947 \u092E\u094C\u091C\u0942\u0926 \u0939\u0948 + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u0905\u092A\u0932\u094B\u0921\u093F\u0902\u0917\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\u0905\u092A\u0932\u094B\u0921 \u0935\u093F\u092B\u0932 + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=\u092B\u093C\u093E\u0907\u0932 \u092A\u094D\u0930\u0915\u093E\u0930 \u0905\u0928\u0941\u092E\u0924 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u0917\u092F\u093E + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902 + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=\u0920\u0940\u0915 + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=\u0926\u0943\u0936\u094D\u092F \u0938\u0947\u091F\u093F\u0902\u0917 +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=\u092B\u093C\u093F\u0932\u094D\u091F\u0930 \u0928\u093F\u0930\u094D\u0927\u093E\u0930\u093F\u0924 \u0915\u0930\u0947\u0902 +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=\u0915\u094D\u0930\u092E\u0923 \u0928\u093F\u0930\u094D\u0927\u093E\u0930\u093F\u0924 \u0915\u0930\u0947\u0902 +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=\u0938\u093E\u092E\u0942\u0939\u094B\u0902 \u0915\u093E \u0928\u093F\u0930\u094D\u0927\u093E\u0930\u093F\u0924 \u0915\u0930\u0947\u0902 +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=\u0938\u094D\u0924\u0902\u092D \u0917\u0941\u0923\u094B\u0902 \u0915\u094B \u0928\u093F\u0930\u094D\u0927\u093E\u0930\u093F\u0924 \u0915\u0930\u0947\u0902 +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=\u0920\u0940\u0915 +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902 +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=\u092A\u0941\u0928\u0930\u094D\u0938\u094D\u0925\u093E\u092A\u093F\u0924 \u0915\u0930\u0947\u0902 +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=\u0915\u094D\u0930\u092E\u0923 +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=\u095E\u093F\u0932\u094D\u091F\u0930 +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=\u0938\u092E\u0942\u0939 +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=\u092A\u0930\u093F\u0915\u0932\u0928 \u0915\u0930\u0947\u0902 +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=\u0938\u094D\u0924\u0902\u092D +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=\u091A\u0947\u0924\u093E\u0935\u0928\u0940 +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=\u0915\u0941\u091B \u0936\u0930\u094D\u0924 \u092E\u093E\u0928 \u0917\u0941\u092E \u0939\u094B \u0930\u0939\u093E \u0939\u0948.\n \u092B\u093C\u093F\u0932\u094D\u091F\u0930 \u0915\u0947 \u0932\u093F\u090F \u0915\u0947\u0935\u0932 \u092A\u0942\u0930\u094D\u0923 \u092A\u094D\u0930\u0935\u093F\u0937\u094D\u091F\u092F\u093E\u0902 +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=\u0938\u094D\u0924\u0902\u092D\u094B\u0902 \u0915\u0940 \u092C\u0921\u093C\u0940 \u0938\u0902\u0916\u094D\u092F\u093E \u0915\u093E \u091A\u092F\u0928 \u0915\u0930 \u0928\u093F\u0937\u094D\u092A\u093E\u0926\u0928 \u0927\u0940\u092E\u0940 \u0915\u0930\u0947\u0902 + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=\u0936\u093E\u092E\u093F\u0932 \u0915\u0930\u0947\u0902 + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=\u0905\u092A\u0935\u0930\u094D\u091C\u093F\u0924 \u0915\u0930\u0947\u0902 + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=\u0915\u0947 \u092C\u0940\u091A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=\u0907\u0938\u0915\u0947 \u092C\u0930\u093E\u092C\u0930 \u0939\u0948 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=\u0938\u093E\u092E\u0917\u094D\u0930\u0940 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=\u0938\u0947 \u0905\u0927\u093F\u0915 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=\u0907\u0938\u0915\u0947 \u0905\u0927\u093F\u0915 \u092F\u093E \u0907\u0938\u0915\u0947 \u092C\u0930\u093E\u092C\u0930 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=\u0938\u0947 \u0915\u092E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=\u0907\u0938\u0938\u0947 \u0915\u092E \u092F\u093E \u0907\u0938\u0915\u0947 \u092C\u0930\u093E\u092C\u0930 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=\u0906\u0930\u0902\u092D\u093F\u0915 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\u0915\u0947 \u0938\u093E\u0925 \u0936\u0941\u0930\u0942 \u0915\u0930\u0924\u093E \u0939\u0948 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=\u0915\u0947 \u0938\u093E\u0925 \u0938\u092E\u093E\u092A\u094D\u0924 \u0915\u0930\u0924\u093E \u0939\u0948 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=\u092C\u095D\u0924\u0947 \u0915\u094D\u0930\u092E \u092E\u0947\u0902 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=\u0918\u091F\u0924\u0947 \u0915\u094D\u0930\u092E \u092E\u0947\u0902 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=\u092C\u095D\u0924\u0947 \u0915\u094D\u0930\u092E \u092E\u0947\u0902 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=\u0918\u091F\u0924\u0947 \u0915\u094D\u0930\u092E \u092E\u0947\u0902 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=\u0915\u0941\u0932\u092F\u094B\u0917 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\u0914\u0938\u0924 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=\u0928\u094D\u092F\u0941\u0928\u0924\u092E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=\u0905\u0927\u093F\u0915\u0924\u092E +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=\u0915\u0947 \u092C\u0940\u091A +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=\u0907\u0938\u0915\u0947 \u092C\u0930\u093E\u092C\u0930 \u0939\u0948 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=\u0907\u0938\u0915\u0947 \u092C\u093E\u0926 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=\u0907\u0938 \u0926\u093F\u0928 \u092F\u093E \u0907\u0938\u0915\u0947 \u092C\u093E\u0926 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\u0907\u0938\u0915\u0947 \u092A\u0939\u0932\u0947 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\u0907\u0938\u0915\u0947 \u092A\u0939\u0932\u0947 \u092F\u093E \u0907\u0938\u0915\u0947 \u092C\u093E\u0926 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=\u0915\u0947 \u092C\u0940\u091A +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=\u0907\u0938\u0915\u0947 \u092C\u0930\u093E\u092C\u0930 \u0939\u0948 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=\u0938\u0947 \u0905\u0927\u093F\u0915 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=\u0907\u0938\u0915\u0947 \u0905\u0927\u093F\u0915 \u092F\u093E \u0907\u0938\u0915\u0947 \u092C\u0930\u093E\u092C\u0930 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=\u0938\u0947 \u0915\u092E +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=\u0907\u0938\u0938\u0947 \u0915\u092E \u092F\u093E \u0907\u0938\u0915\u0947 \u092C\u0930\u093E\u092C\u0930 + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=\u0938\u0947 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=\u0915\u0947 \u0932\u093F\u090F +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=\u092E\u0942\u0932\u094D\u092F +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=\u0938\u094D\u0924\u0902\u092D \u0915\u0947 \u0930\u0942\u092A \u092E\u0947\u0902 \u092B\u093C\u0940\u0932\u094D\u0921 \u0926\u093F\u0916\u093E\u090F\u0902 +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\u0928\u090F \u092A\u0902\u0915\u094D\u0924\u093F \u091C\u094B\u0921\u093C\u0947\u0902 +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=\u092E\u093E\u0928\u094D\u092F \u092E\u093E\u0928 \u0915\u094B \u0926\u0930\u094D\u091C \u0915\u0930\u0947\u0902 + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=\u0938\u092D\u0940 \u0926\u093F\u0916\u093E\u090F\u0902 +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=\u091A\u092F\u0928\u093F\u0924 \u0926\u093F\u0916\u093E\u090F\u0902 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\u0938\u092D\u0940 \u0915\u093E \u091A\u092F\u0928 \u0915\u0930\u0947\u0902 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=\u0938\u092D\u0940 \u0915\u093E \u091A\u092F\u0928 \u0915\u0930\u0947\u0902 ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=\u0936\u0940\u0930\u094D\u0937 \u0932\u0947 \u091C\u093E\u090F\u0902 +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=\u090A\u092A\u0930 \u0932\u0947 \u091C\u093E\u090F\u0902 +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=\u0928\u0940\u091A\u0947 \u0932\u0947 \u091C\u093E\u090F\u0902 +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=\u0928\u0940\u091A\u0947 \u0932\u0947 \u091C\u093E\u090F\u0902 + +#XFLD: Subtle link description label +LINK_SUBTLE=\u0938\u0942\u0915\u094D\u0937\u094D\u092E +#XFLD: Emphasized link description label +LINK_EMPHASIZED=\u092C\u0932 \u0926\u093F\u092F\u093E \u0917\u092F\u093E + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=\u0930\u093F\u092B\u094D\u0930\u0947\u0936 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F F5 \u0926\u092C\u093E\u090F\u0902 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=\u092E\u093E\u0928 \u0938\u0939\u093E\u092F\u0924\u093E \u0921\u093E\u092F\u0932\u0949\u0917 \u0916\u094B\u0932\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F F4 \u0926\u092C\u093E\u090F\u0902 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=\u092A\u093E\u0926\u0932\u0947\u0916 +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=\u0936\u0940\u0930\u094D\u0937\u0932\u0947\u0916 +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=\u0909\u092A\u0936\u0940\u0930\u094D\u0937\u0932\u0947\u0916 + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\u092E\u093E\u0928 \u0915\u0925\u0928 \u0924\u094D\u0930\u0941\u091F\u093F +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\u092E\u093E\u0928 \u0915\u0925\u0928 \u091A\u0947\u0924\u093E\u0935\u0928\u0940 +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\u092E\u093E\u0928 \u0938\u094D\u0925\u093F\u0924\u093F \u0938\u092B\u0932 \u0930\u0939\u093E + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=\u0905\u0917\u0932\u093E \u091A\u0930\u0923 +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=\u0938\u0915\u093E\u0930\u093E\u0924\u094D\u092E\u0915 +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=\u092E\u0939\u0924\u094D\u0935\u092A\u0942\u0930\u094D\u0923 +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=\u0928\u0915\u093E\u0930\u093E\u0924\u094D\u092E\u0915 + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} \u0907\u0938\u0915\u093E {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u0930\u0947\u091F\u093F\u0902\u0917 + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=\u092A\u0938\u0902\u0926\u0940\u0926\u093E +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=\u0927\u094D\u0935\u091C\u093C + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=\u0936\u0940\u0930\u094D\u0937\u0915 \u0924\u0940\u0930 \u0915\u093E \u091A\u092F\u0928 \u0915\u0930\u0947\u0902 +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=\u0906\u0907\u0915\u0928 + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=\u0932\u094B\u0917\u094B + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\u0915\u094B\u0908 \u092E\u093F\u0932\u093E\u0928 \u0906\u0907\u091F\u092E \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=\u092B\u093C\u0940\u0932\u094D\u091F\u0930 \u0938\u0947\u091F\u093F\u0902\u0917 \u0915\u0940 \u091C\u093E\u0902\u091A \u0915\u0930\u0947\u0902 + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} \u0914\u0930 \u0905\u0927\u093F\u0915... + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=\u092C\u093F\u0928\u093E \u092A\u0922\u093C\u0947 \u0917\u090F +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=\u0932\u0949\u0915 \u0915\u093F\u092F\u093E \u0917\u092F\u093E + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\u092C\u0902\u0926 \u0915\u0930\u0947\u0902 +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=\u0938\u092D\u0940 +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=\u092A\u0940\u091B\u0947 +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\u0938\u0902\u0926\u0947\u0936 + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=\u0938\u0915\u093E\u0930\u093E\u0924\u094D\u092E\u0915 \u0915\u093E\u0930\u094D\u0930\u0935\u093E\u0908 +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=\u0928\u0915\u093E\u0930\u093E\u0924\u094D\u092E\u0915 \u0915\u093E\u0930\u094D\u0930\u0935\u093E\u0908 +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=\u092C\u0932 \u0926\u093F\u092F\u093E \u0917\u092F\u093E + +#XACT: ARIA text for position markers +CAROUSEL_POSITION={1} \u0915\u0947 \u0906\u0907\u091F\u092E {1} \u092A\u094D\u0930\u0926\u0930\u094D\u0936\u093F\u0924 \u0915\u093F\u092F\u093E \u0917\u092F\u093E + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_hr.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_hr.properties new file mode 100644 index 0000000..ffa4046 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_hr.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Nema podataka + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Nepro\u010Ditano + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Izbrisivo + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Ima detalje + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Mo\u017Ee se urediti + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Je aktivno + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Zaglavlje grupe + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} od {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Natrag + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=Uk +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Isk + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Prihvati + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Odbij + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Otka\u017Ei + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Otka\u017Ei + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Vi\u0161e + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=U redu + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Otka\u017Ei + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Mjesec + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Dan + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Godina + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Sati + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minute + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekunde + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Sada + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Usmjeravanje + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=U redu + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Otka\u017Ei + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Da + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Ne + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Prekini + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Ponovno poku\u0161aj + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Zanemari + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Zatvori + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Izbri\u0161i + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Upozorenje + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Potvrda + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Poka\u017Ei detalje + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Povuci za obnovu + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Otpusti za obnovu + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=U\u010Ditavanje... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Pri\u010Dekajte,podaci se u\u010Ditavaju + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Obnovi + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Odjava + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=U redu + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Otka\u017Ei + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Poni\u0161ti personalizaciju + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Stupci + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Sve + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Stupci nisu na\u0111eni + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Pogled + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Sortiraj po + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Grupiraj po + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtriraj po + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtriraj po\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtrirano po\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=U redu + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Otka\u017Ei + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Nijedan + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Uzlazno + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Silazno + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Poni\u0161ti sve filtere + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Sve + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (Svi) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Tra\u017Eenje + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filter + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=U redu + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtrirano prema {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Filteri nisu odabrani + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=i + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Primijenjeno je nekoliko filtera + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} vi\u0161e... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} vi\u0161e raspolo\u017Eivo + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Tra\u017Ei dalje na poslu\u017Eitelju + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Ukloni filter + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Stavke odabrane\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Objavi ne\u0161to ovdje + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Podnesi + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Poka\u017Ei sve stavke + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Ukloni listu faseta + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Dodaj listu faseta + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=PonPostavi + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Prethodni + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Sljede\u0107i + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=VI\u0160E + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MANJE + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Prilozi ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u017Delite li zaista izbrisati datoteku "{0}"? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\u017Delite li zaista izbrisati datoteku? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Izbri\u0161i datoteku + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Prijenos na poslu\u017Eitelj za sljede\u0107e datoteke prekinut \u0107e se\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Prekini prijenos na poslu\u017Eitelj + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Naziv datoteke ve\u0107 postoji + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Prijenos na poslu\u017Eitelj\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Prijenos na poslu\u017Eitelj nije uspio + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Tip datoteke nije dopu\u0161ten + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Otka\u017Ei + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=U redu + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Prika\u017Ei postave +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Definiraj filtere +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Definiraj sortiranje +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Definiraj grupe +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Definiraj svojstva stupca +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=U redu +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Otka\u017Ei +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Obnovi +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Sortiranje +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filteri +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Grupe +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Izra\u010Dun +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Stupci +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Upozorenje +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Neke vrijednosti uvjeta nedostaju.\n Samo potpuni unosi dodat \u0107e se filteru. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Odabir velikog broja stupaca mo\u017Ee usporiti izvedbu + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Uklju\u010Di + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Isklju\u010Di + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=izme\u0111u +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=jednako +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=sadr\u017Ei +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=ve\u0107e od +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=ve\u0107e od ili jednako +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=manje od +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=manje od ili jednako +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=po\u010Detno +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=po\u010Dinje s +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=zavr\u0161ava s +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Uzlazno +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Silazno +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Uzlazno +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Silazno +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Ukupni iznos +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Prosje\u010Dno +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimalno +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maksimalno +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=izme\u0111u +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=jednako +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=nakon +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=na ili nakon +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=prije +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=prije ili na +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=izme\u0111u +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=jednako +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=ve\u0107e od +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=ve\u0107e od ili jednako +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=manje od +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=manje od ili jednako + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=od +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=do +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Vrijednost +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Prika\u017Ei polje kao stupac +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Dodaj novi redak +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Unesite va\u017Ee\u0107u vrijednost + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Poka\u017Ei sve +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Poka\u017Ei odabrano +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Odaberi sve +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Odaberi sve ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Pomakni na vrh +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Pomakni gore +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Pomakni dolje +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Pomakni na dno + +#XFLD: Subtle link description label +LINK_SUBTLE=Rafinirano +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Istaknuto + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Pritisnite F5 za obnovu + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Pritisnite F4 za otvaranje dijaloga pomo\u0107i unosa + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Podno\u017Eje +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Zaglavlje +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Podnaslov + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Stanje vrijednosti gre\u0161ka +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Stanje vrijednosti upozorenje +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Stanje vrijednosti uspjeh + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Sljede\u0107i korak +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Pozitivno +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kriti\u010Dno +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negativno + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} od {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Ocjenjivanje + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Favorit +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Oznaka + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Odaberi strelicu naslova +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Ikona + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logotip + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Nisu na\u0111ene odgovaraju\u0107e stavke. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Provjerite postave filtera + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} vi\u0161e + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Nepro\u010Ditano +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Zaklju\u010Dano + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Zatvori +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Sve +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Natrag +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Poruke + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Pozitivna radnja +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negativna radnja +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Istaknuto + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Stavka {0} od {1} prikazana + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_hu.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_hu.properties new file mode 100644 index 0000000..aaba30b --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_hu.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Nincs adat + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Olvasatlan + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=T\u00F6r\u00F6lhet\u0151 + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Vannak r\u00E9szletei + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Feldolgozhat\u00F3 + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Akt\u00EDv + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Csoportfejl\u00E9c + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} / {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Vissza + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=Be +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Ki + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Elfogad\u00E1s + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Elutas\u00EDt\u00E1s + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Megszak\u00EDt\u00E1s + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Megszak\u00EDt\u00E1s + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Tov\u00E1bbi adatok + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Megsz. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=H\u00F3nap + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Nap + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u00C9v + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=\u00D3ra + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Perc + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=M\u00E1sodperc + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Most + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navig\u00E1l\u00E1s + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Megszak\u00EDt\u00E1s + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Igen + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Nem + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Megszak\u00EDt\u00E1s + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Ism\u00E9tl\u00E9s + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignor\u00E1l\u00E1s + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Bez\u00E1r\u00E1s + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=T\u00F6rl\u00E9s + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Figyelmeztet\u00E9s + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Meger\u0151s\u00EDt\u00E9s + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=R\u00E9szletek megjelen\u00EDt\u00E9se + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Az aktualiz\u00E1l\u00E1shoz h\u00FAzza + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Aktualiz\u00E1l\u00E1shoz enged\u00E9ly. + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Adatok bet\u00F6lt\u00E9se... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Adatok bet\u00F6lt\u00E9se... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Aktualiz\u00E1l\u00E1s + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Kijelentkez\u00E9s + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Megszak\u00EDt\u00E1s + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Testreszab\u00E1s visszavon\u00E1sa + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Oszlopok + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=\u00D6sszes + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Nem tal\u00E1lhat\u00F3k oszlopok + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=N\u00E9zet + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Rendez\u00E9s alapja\: + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Csoportos\u00EDt\u00E1s alapja\: + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Sz\u0171r\u00E9s alapja + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Sz\u0171r\u00E9s alapja\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Sz\u0171rve k\u00F6v. alapj\u00E1n\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Megszak\u00EDt\u00E1s + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=En\u00E9lk\u00FCl\: + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=N\u00F6vekv\u0151en + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Cs\u00F6kken\u0151en + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\u00D6sszes sz\u0171r\u0151 t\u00F6rl\u00E9se + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=\u00D6sszes + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (\u00F6sszes) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Keres\u00E9s + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Sz\u0171r\u0151 + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY={0} ({1}) szerint sz\u0171rve + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Nincs kiv\u00E1lasztva sz\u0171r\u0151 + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\u00C9s + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=T\u00F6bb sz\u0171r\u0151 akt\u00EDv + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} tov\u00E1bbi... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE=M\u00E9g {0} van + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Tov\u00E1bbkeres\u00E9s a szerveren + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Sz\u0171r\u0151 elt\u00E1volt\u00E1sa + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Kiv\u00E1lasztott elemek\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\u00CDrja ide a sz\u00F6veget + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Elk\u00FCld\u00E9s + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Az \u00F6sszes elem megjelen\u00EDt\u00E9se + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Korl\u00E1toz\u00E1slista elt\u00E1vol\u00EDt\u00E1sa + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Korl\u00E1toz\u00E1slista hozz\u00E1ad\u00E1sa + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Vissza\u00E1ll. + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Vissza + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Tov\u00E1bb + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=T\u00D6BB + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=KEVESEBB + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Mell\u00E9kletek ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Val\u00F3ban t\u00F6rli a(z) {0} f\u00E1jlt? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Val\u00F3ban t\u00F6rli a f\u00E1jlt? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=F\u00E1jl t\u00F6rl\u00E9se + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=A k\u00F6vetkez\u0151 f\u00E1jlok felt\u00F6lt\u00E9se befejez\u0151dik\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Felt\u00F6lt\u00E9s befejez\u00E9se + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=A f\u00E1jln\u00E9v m\u00E1r l\u00E9tezik + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Felt\u00F6lt\u00E9s\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=A felt\u00F6lt\u00E9s sikertelen + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=A f\u00E1jlt\u00EDpus nem enged\u00E9lyezett + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Megszak\u00EDt\u00E1s + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Be\u00E1ll\u00EDt\u00E1sok megjelen\u00EDt\u00E9se +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Sz\u0171r\u0151 defini\u00E1l\u00E1sa +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Rendez\u00E9s defini\u00E1l\u00E1sa +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Csoportos\u00EDt\u00E1s defini\u00E1l\u00E1sa +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Oszloptulajdons\u00E1gok defini\u00E1l\u00E1sa +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Megszak\u00EDt\u00E1s +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Vissza\u00E1ll\u00EDt\u00E1s +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Rendez\u00E9s +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Sz\u0171r\u0151 +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Csoportok +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Sz\u00E1m\u00EDt\u00E1s +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Oszlopok +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Figyelmeztet\u00E9s +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Egyes felt\u00E9tel\u00E9rt\u00E9kek hi\u00E1nyoznak.\n Csak a hi\u00E1nytalan bejegyz\u00E9sek lesznek hozz\u00E1adva a sz\u0171r\u0151h\u00F6z. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Sok oszlop kiv\u00E1laszt\u00E1sa negat\u00EDv hat\u00E1ssal lehet a teljes\u00EDtm\u00E9nyre + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Bevon\u00E1s + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Kiz\u00E1r\u00E1s + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=k\u00F6z\u00F6tte +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=egyenl\u0151 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=tartalmazza +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=nagyobb, mint +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=nagyobb vagy egyenl\u0151 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=kisebb, mint +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=kisebb vagy egyenl\u0151 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=inici\u00E1lis +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=ezzel kezd\u0151dik +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=ezzel v\u00E9gz\u0151dik +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=N\u00F6vekv\u0151en +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Cs\u00F6kken\u0151en +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=N\u00F6vekv\u0151en +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Cs\u00F6kken\u0151en +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=\u00D6sszeg +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\u00C1tlag +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maximum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=k\u00F6z\u00F6tte +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=egyenl\u0151 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=ez ut\u00E1n +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=ekkor vagy ez ut\u00E1n +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=ez el\u0151tt +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=ekkor vagy ez el\u0151tt +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=k\u00F6z\u00F6tte +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=egyenl\u0151 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=nagyobb, mint +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=nagyobb vagy egyenl\u0151 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=kisebb, mint +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=kisebb vagy egyenl\u0151 + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=\ / +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=Z\u00E1r\u00F3 d\u00E1tum +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=\u00C9rt\u00E9k +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Mez\u0151 megjelen\u00EDt\u00E9se oszlopk\u00E9nt +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\u00DAj sor hozz\u00E1ad\u00E1sa +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Adjon meg \u00E9rv\u00E9nyes \u00E9rt\u00E9ket + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=\u00D6sszes megjelen\u00EDt\u00E9se +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Kiv\u00E1laszt\u00E1s megjelen\u00EDt\u00E9se +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\u00D6sszes kiv\u00E1laszt\u00E1sa +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=\u00D6sszes kiv\u00E1laszt\u00E1sa ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Legfel\u00FClre +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Felfel\u00E9 +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Lefel\u00E9 +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Legalulra + +#XFLD: Subtle link description label +LINK_SUBTLE=Szolid +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Kiemelt + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Aktualiz\u00E1l\u00E1s\: F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Az \u00E9rt\u00E9kseg\u00EDts\u00E9g megnyit\u00E1s\u00E1hoz nyomja meg az F4 billenty\u0171t + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=L\u00E1bl\u00E9c +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Fejl\u00E9c +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Alfejl\u00E9c + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\u00C9rt\u00E9k\u00E1llapot-hiba +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\u00C9rt\u00E9k\u00E1llapot-figyelmeztet\u00E9s +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\u00C9rt\u00E9k\u00E1llapot - sikeres + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=K\u00F6vetkez\u0151 l\u00E9p\u00E9s +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Pozit\u00EDv +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kritikus +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negat\u00EDv + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} / {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u00C9rt\u00E9kel\u00E9s + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Kedvenc +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Megjel\u00F6l\u00E9s + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=C\u00EDmny\u00EDl kiv\u00E1laszt\u00E1sa +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Ikon + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Log\u00F3 + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Nem tal\u00E1lhat\u00F3 megfelel\u0151 elem. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Ellen\u0151rizze a sz\u0171r\u0151be\u00E1ll\u00EDt\u00E1sokat + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS=M\u00E9g {0} + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Olvasatlan +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Z\u00E1rolt + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Bez\u00E1r\u00E1s +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=\u00D6sszes +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Vissza +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\u00DCzenetek + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Pozit\u00EDv m\u0171velet +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negat\u00EDv m\u0171velet +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Kiemelt + +#XACT: ARIA text for position markers +CAROUSEL_POSITION={0} / {1} elem jelenik meg + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_it.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_it.properties new file mode 100644 index 0000000..5f9c9ed --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_it.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Nessun dato + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Non letto + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Cancellabile + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Ha dettagli + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\u00C8 elaborabile + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\u00C8 attivo + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Testata gruppo + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} di {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Indietro + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=ON +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=OFF + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Accetta + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Rifiuta + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Annulla + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Annulla + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Altri dati + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Interr. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Mese + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Giorno + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Anno + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Ore + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minuti + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Secondi + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Ora + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigazione + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Annulla + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=S\u00EC + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=No + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Interrompi + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Ripeti + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignora + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Chiudi + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Elimina + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Messaggio di avvertimento + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Conferma + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Visualizza dettagli + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Spost. in basso per agg. + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Rilascia per aggiornare + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Dati in caricamento... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Dati in caricamento... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Aggiorna + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Esegui logout + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Annulla + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Resetta personalizzazione + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Colonne + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Tutto + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Nessuna colonna trovata + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=View + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Classifica per + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Raggruppa per + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtra per + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtra per\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtrato per\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Annulla + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Senza + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=In ordine crescente + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=In ordine decrescente + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Resetta tutti i filtri + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Tutto + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (Tutto) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Cerca + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filtro + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtrato in base a {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Non sono stati selezionati filtri + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=e + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Pi\u00F9 filtri attivi + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT=Altri {0}... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE=Esistono altri {0} + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Continua ricerca sul server + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Elimina filtro + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Elementi selezionati\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Pubblica un contenuto qui + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Invia + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Visualizza tutti gli elementi + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Elimina lista di facet + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Aggiungi lista di facet + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Resetta + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Indietro + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Continua + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=MOSTRA DI PI\u00D9 + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MOSTRA DI MENO + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Allegati ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Confermare la cancellazione del file {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Confermi l'eliminazione del file? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Elimina file + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=L'upload dei seguenti file sar\u00E0 terminato\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Termina caricamento + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Nome file gi\u00E0 esistente + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Caricare\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Caricamento non riuscito + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Tipo di file non consentito + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Annulla + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Visualizza parametrizzazione +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Definisci filtri +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Definisci classificazione +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Definisci gruppi +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Definisci propriet\u00E0 colonna +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Annulla +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Resetta +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Classificazione +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filtri +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Gruppi +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Calcolo +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Colonne +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Avvertimento +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Mancano alcuni valori condizione.\n Al filtro vengono aggiunti solo inserimenti completi. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=La selezione di un elevato numero di colonne pu\u00F2 rallentare la performance + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Includi + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Escludi + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=compreso tra +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=uguale +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=contiene +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=Maggiore di +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=maggiore o uguale +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=Minore di +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=minore o uguale +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=iniziale +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=inizia con +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=termina con +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=In ordine crescente +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=In ordine decrescente +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=In ordine crescente +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=In ordine decrescente +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Totale +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Media +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimo +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Massimo +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=compreso tra +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=uguale +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=Dopo il +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=Il o dopo il +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=Prima del +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=Prima del o il +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=compreso tra +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=Uguale +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=maggiore di +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=maggiore o uguale +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=Minore di +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=minore o uguale + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=Da +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=A +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Valore +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Visualizzare campo come colonna +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Aggiungi nuova riga +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Inserisci un valore valido + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Visualizza tutto +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Visualizza selezionati +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Seleziona tutto +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Selezionare tutti ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Sposta all'inizio +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Sposta in alto +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Sposta in basso +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Sposta alla fine + +#XFLD: Subtle link description label +LINK_SUBTLE=Discreto +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Evidenziato/a + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Premi F5 per aggiornare + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Premi F4 per aprire una finestra help valori + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Pi\u00E8 di pagina +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Intestazione +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Sotto-intestazione + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Stato valore Errore +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Stato valore Avvertimento +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Stato valore Corretta esecuzione + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Passo successivo +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positivo +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Critico +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negativo + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} Da {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Valutazione + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Preferito +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Indicatore + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Seleziona freccia titolo +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Icona + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Non sono stati trovati elementi concordanti +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Controlla le impostazioni filtro + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} Pi\u00F9 + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Non letto +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Bloccato + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Chiudi +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Tutto +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Indietro +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Messaggi + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Azione positiva +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Azione negativa +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Evidenziato + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Viene visualizzato l''elemento {0} di {1} + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_iw.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_iw.properties new file mode 100644 index 0000000..67770f6 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_iw.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\u05D0\u05D9\u05DF \u05E0\u05EA\u05D5\u05E0\u05D9\u05DD + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=\u05DC\u05D0 \u05E0\u05E7\u05E8\u05D0 + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=\u05E0\u05D9\u05EA\u05DF \u05DC\u05DE\u05D7\u05D9\u05E7\u05D4 + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=\u05D9\u05E9 \u05E4\u05E8\u05D8\u05D9\u05DD + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\u05E0\u05D9\u05EA\u05DF \u05DC\u05E2\u05E8\u05D9\u05DB\u05D4 + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\u05E4\u05E2\u05D9\u05DC + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=\u05DB\u05D5\u05EA\u05E8\u05EA \u05E7\u05D1\u05D5\u05E6\u05D4 + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} \u05DE\u05EA\u05D5\u05DA {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=\u05D7\u05D6\u05D5\u05E8 + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=On +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Off + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=\u05E7\u05D1\u05DC + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=\u05D3\u05D7\u05D4 + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=\u05D1\u05D8\u05DC + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=\u05D1\u05D8\u05DC + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=\u05D9\u05D5\u05EA\u05E8 + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=\u05D1\u05D8\u05DC + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=\u05D7\u05D5\u05D3\u05E9 + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=\u05D9\u05D5\u05DD + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u05E9\u05E0\u05D4 + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=\u05E9\u05E2\u05D5\u05EA + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=\u05D3\u05E7\u05D5\u05EA + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=\u05E9\u05E0\u05D9\u05D5\u05EA + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=\u05E2\u05DB\u05E9\u05D9\u05D5 + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=\u05E0\u05D9\u05D5\u05D5\u05D8 + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=\u05D1\u05D8\u05DC + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=\u05DB\u05DF + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=\u05DC\u05D0 + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\u05D1\u05D8\u05DC + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=\u05E0\u05E1\u05D4 \u05E9\u05D5\u05D1 + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=\u05D4\u05EA\u05E2\u05DC\u05DD + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\u05E1\u05D2\u05D5\u05E8 + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=\u05DE\u05D7\u05E7 + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=\u05D4\u05EA\u05E8\u05D0\u05D4 + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=\u05D0\u05D9\u05E9\u05D5\u05E8 + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=\u05D4\u05E6\u05D2 \u05E4\u05E8\u05D8\u05D9\u05DD + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=\u05D2\u05DC\u05D5\u05DC \u05DC\u05DE\u05D8\u05D4 \u05DB\u05D3\u05D9 \u05DC\u05E8\u05E2\u05E0\u05DF + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=\u05E9\u05D7\u05E8\u05E8 \u05DB\u05D3\u05D9 \u05DC\u05E8\u05E2\u05E0\u05DF + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u05D8\u05D5\u05E2\u05DF... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=\u05D4\u05DE\u05EA\u05DF, \u05D4\u05E0\u05EA\u05D5\u05E0\u05D9\u05DD \u05E0\u05D8\u05E2\u05E0\u05D9\u05DD + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=\u05E8\u05E2\u05E0\u05DF + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=\u05D4\u05EA\u05E0\u05EA\u05E7 + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=\u05D1\u05D8\u05DC + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=\u05D1\u05D8\u05DC \u05E4\u05E2\u05D5\u05DC\u05EA \u05D4\u05EA\u05D0\u05DE\u05D4 \u05D0\u05D9\u05E9\u05D9\u05EA + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=\u05E2\u05DE\u05D5\u05D3\u05D5\u05EA + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=\u05D4\u05DB\u05D5\u05DC + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=\u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0\u05D5 \u05E2\u05DE\u05D5\u05D3\u05D5\u05EA + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=\u05D4\u05E6\u05D2 + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=\u05DE\u05D9\u05D9\u05DF \u05DC\u05E4\u05D9 + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=\u05E7\u05D1\u05E5 \u05DC\u05E4\u05D9 + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=\u05E1\u05E0\u05DF \u05DC\u05E4\u05D9 + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=\u05E1\u05E0\u05DF \u05DC\u05E4\u05D9\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\u05E1\u05D5\u05E0\u05DF \u05E2\u05DC \u05D9\u05D3\u05D9\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=\u05D1\u05D8\u05DC + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=\u05D0\u05D9\u05DF + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=\u05D1\u05E1\u05D3\u05E8 \u05E2\u05D5\u05DC\u05D4 + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=\u05D1\u05E1\u05D3\u05E8 \u05D9\u05D5\u05E8\u05D3 + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\u05E0\u05E7\u05D4 \u05D0\u05EA \u05DB\u05DC \u05D4\u05DE\u05E1\u05E0\u05E0\u05D9\u05DD + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=\u05D4\u05DB\u05D5\u05DC + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (\u05D4\u05DB\u05D5\u05DC) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=\u05D7\u05E4\u05E9 + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=\u05DE\u05E1\u05E0\u05DF + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=\u05E1\u05D5\u05E0\u05DF \u05E2\u05DC-\u05D9\u05D3\u05D9 {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=\u05DC\u05D0 \u05E0\u05D1\u05D7\u05E8\u05D5 \u05DE\u05E1\u05E0\u05E0\u05D9\u05DD + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\u05D5- + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=\u05DE\u05E1\u05E4\u05E8 \u05DE\u05E1\u05E0\u05E0\u05D9\u05DD \u05D4\u05D5\u05D7\u05DC\u05D5 + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} \u05E2\u05D5\u05D3... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} \u05E2\u05D5\u05D3 \u05D6\u05DE\u05D9\u05E0\u05D9\u05DD + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=\u05D4\u05DE\u05E9\u05DA \u05D7\u05D9\u05E4\u05D5\u05E9 \u05D1\u05E9\u05E8\u05EA + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=\u05D4\u05E1\u05E8\u05EA \u05DE\u05E1\u05E0\u05DF + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD \u05E9\u05E0\u05D1\u05D7\u05E8\u05D5\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\u05E8\u05E9\u05D5\u05DD \u05DE\u05E9\u05D4\u05D5 \u05DB\u05D0\u05DF + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=\u05D4\u05D2\u05E9 + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=\u05D4\u05E6\u05D2 \u05D0\u05EA \u05DB\u05DC \u05D4\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=\u05D4\u05E1\u05E8 \u05E8\u05E9\u05D9\u05DE\u05EA \u05D4\u05D9\u05D1\u05D8\u05D9\u05DD + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=\u05D4\u05D5\u05E1\u05E3 \u05E8\u05E9\u05D9\u05DE\u05EA \u05D4\u05D9\u05D1\u05D8\u05D9\u05DD + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=\u05D0\u05E4\u05E1 + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=\u05D4\u05E7\u05D5\u05D3\u05DD + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=\u05D4\u05D1\u05D0 + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=\u05D9\u05D5\u05EA\u05E8 + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=\u05E4\u05D7\u05D5\u05EA + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=\u05E7\u05D1\u05E6\u05D9\u05DD \u05DE\u05E6\u05D5\u05E8\u05E4\u05D9\u05DD ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u05D4\u05D0\u05DD \u05D0\u05EA\u05D4 \u05D1\u05D8\u05D5\u05D7 \u05E9\u05D1\u05E8\u05E6\u05D5\u05E0\u05DA \u05DC\u05DE\u05D7\u05D5\u05E7 \u05D0\u05EA \u05D4\u05E7\u05D5\u05D1\u05E5 {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\u05D4\u05D0\u05DD \u05D0\u05EA\u05D4 \u05D1\u05D8\u05D5\u05D7 \u05E9\u05D1\u05E8\u05E6\u05D5\u05E0\u05DA \u05DC\u05DE\u05D7\u05D5\u05E7 \u05D0\u05EA \u05D4\u05E7\u05D5\u05D1\u05E5? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=\u05DE\u05D7\u05E7 \u05E7\u05D5\u05D1\u05E5 + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\u05D4\u05D4\u05E2\u05DC\u05D0\u05D4 \u05EA\u05E1\u05EA\u05D9\u05D9\u05DD \u05E2\u05D1\u05D5\u05E8 \u05D4\u05E7\u05D1\u05E6\u05D9\u05DD \u05D4\u05E7\u05D1\u05E6\u05D9\u05DD \u05D4\u05D1\u05D0\u05D9\u05DD\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=\u05E1\u05D9\u05D9\u05DD \u05D4\u05E2\u05DC\u05D0\u05D4 + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=\u05E9\u05DD \u05E7\u05D5\u05D1\u05E5 \u05DB\u05D1\u05E8 \u05E7\u05D9\u05D9\u05DD + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u05DE\u05E2\u05DC\u05D4\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\u05D4\u05E2\u05DC\u05D0\u05D4 \u05E0\u05DB\u05E9\u05DC\u05D4 + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=\u05E1\u05D5\u05D2 \u05D4\u05E7\u05D5\u05D1\u05E5 \u05DC\u05D0 \u05DE\u05D5\u05E8\u05E9\u05D4 + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=\u05D1\u05D8\u05DC + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=\u05D4\u05E6\u05D2 \u05D4\u05D2\u05D3\u05E8\u05D5\u05EA +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=\u05D4\u05D2\u05D3\u05E8 \u05DE\u05E1\u05E0\u05E0\u05D9\u05DD +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=\u05D4\u05D2\u05D3\u05E8 \u05DE\u05D9\u05D5\u05DF +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=\u05D4\u05D2\u05D3\u05E8 \u05E7\u05D1\u05D5\u05E6\u05D5\u05EA +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=\u05D4\u05D2\u05D3\u05E8 \u05EA\u05DB\u05D5\u05E0\u05D5\u05EA \u05E2\u05DE\u05D5\u05D3\u05D4 +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=\u05D1\u05D8\u05DC +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=\u05E9\u05D7\u05D6\u05E8 +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=\u05DE\u05D9\u05D9\u05DF +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=\u05DE\u05E1\u05E0\u05E0\u05D9\u05DD +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=\u05E7\u05D1\u05D5\u05E6\u05D5\u05EA +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=\u05D7\u05D9\u05E9\u05D5\u05D1 +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=\u05E2\u05DE\u05D5\u05D3\u05D5\u05EA +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=\u05D0\u05D6\u05D4\u05E8\u05D4 +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=\u05D7\u05E1\u05E8\u05D9\u05DD \u05DB\u05DE\u05D4 \u05E2\u05E8\u05DB\u05D9 \u05EA\u05E0\u05D0\u05D9.\n \u05DC\u05DE\u05E1\u05E0\u05DF \u05D9\u05D5\u05E1\u05E4\u05D5 \u05D4\u05D6\u05E0\u05D5\u05EA \u05E9\u05DC\u05DE\u05D5\u05EA \u05D1\u05DC\u05D1\u05D3. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=\u05D1\u05D7\u05D9\u05E8\u05EA \u05DE\u05E1\u05E4\u05E8 \u05E2\u05DE\u05D5\u05D3\u05D5\u05EA \u05D2\u05D3\u05D5\u05DC \u05E2\u05DC\u05D5\u05DC \u05DC\u05D4\u05D0\u05D8 \u05D0\u05EA \u05D4\u05D1\u05D9\u05E6\u05D5\u05E2 + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=\u05DB\u05DC\u05D5\u05DC + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=\u05D0\u05DC \u05EA\u05DB\u05DC\u05D5\u05DC + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=\u05D1\u05D9\u05DF +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=\u05E9\u05D5\u05D5\u05D4 \u05DC- +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=\u05DE\u05DB\u05D9\u05DC +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=\u05D2\u05D3\u05D5\u05DC \u05DE- +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=\u05D2\u05D3\u05D5\u05DC \u05DE- \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC- +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=\u05E7\u05D8\u05DF \u05DE- +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=\u05E7\u05D8\u05DF \u05DE- \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC- +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=\u05D4\u05EA\u05D7\u05DC\u05EA\u05D9 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\u05DE\u05EA\u05D7\u05D9\u05DC \u05D1- +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=\u05DE\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1- +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=\u05D1\u05E1\u05D3\u05E8 \u05E2\u05D5\u05DC\u05D4 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=\u05D1\u05E1\u05D3\u05E8 \u05D9\u05D5\u05E8\u05D3 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=\u05D1\u05E1\u05D3\u05E8 \u05E2\u05D5\u05DC\u05D4 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=\u05D1\u05E1\u05D3\u05E8 \u05D9\u05D5\u05E8\u05D3 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=\u05E1\u05DA \u05D4\u05DB\u05D5\u05DC +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\u05DE\u05DE\u05D5\u05E6\u05E2 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=\u05DE\u05D9\u05E0\u05D9\u05DE\u05D5\u05DD +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=\u05DE\u05E7\u05E1\u05D9\u05DE\u05D5\u05DD +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=\u05D1\u05D9\u05DF +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=\u05E9\u05D5\u05D5\u05D4 \u05DC- +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=\u05DC\u05D0\u05D7\u05E8 \u05D4\u05EA\u05D0\u05E8\u05D9\u05DA +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=\u05D1\u05EA\u05D0\u05E8\u05D9\u05DA \u05D0\u05D5 \u05DC\u05D0\u05D7\u05E8 \u05D4\u05EA\u05D0\u05E8\u05D9\u05DA +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\u05DC\u05E4\u05E0\u05D9 \u05D4\u05EA\u05D0\u05E8\u05D9\u05DA +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\u05DC\u05E4\u05E0\u05D9 \u05D4\u05EA\u05D0\u05E8\u05D9\u05DA \u05D0\u05D5 \u05D1\u05EA\u05D0\u05E8\u05D9\u05DA +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=\u05D1\u05D9\u05DF +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=\u05E9\u05D5\u05D5\u05D4 \u05DC- +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=\u05D2\u05D3\u05D5\u05DC \u05DE- +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=\u05D2\u05D3\u05D5\u05DC \u05DE- \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC- +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=\u05E7\u05D8\u05DF \u05DE- +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=\u05E7\u05D8\u05DF \u05DE- \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC- + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=\u05DE- +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=\u05E2\u05D3 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=\u05E2\u05E8\u05DA +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=\u05D4\u05E6\u05D2 \u05E9\u05D3\u05D4 \u05DB\u05E2\u05DE\u05D5\u05D3\u05D4 +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\u05D4\u05D5\u05E1\u05E3 \u05E9\u05D5\u05E8\u05D4 \u05D7\u05D3\u05E9\u05D4 +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=\u05D4\u05D6\u05DF \u05E2\u05E8\u05DA \u05D7\u05D5\u05E7\u05D9 + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=\u05D4\u05E6\u05D2 \u05D4\u05DB\u05D5\u05DC +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=\u05D4\u05E6\u05D2 \u05E0\u05D1\u05D7\u05E8\u05D9\u05DD +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\u05D1\u05D7\u05E8 \u05D4\u05DB\u05D5\u05DC +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=\u05D1\u05D7\u05E8 \u05D4\u05DB\u05D5\u05DC ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=\u05D4\u05E2\u05D1\u05E8 \u05DC\u05E2\u05DC\u05D9\u05D5\u05DF +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=\u05D4\u05E2\u05D1\u05E8 \u05DC\u05DE\u05E2\u05DC\u05D4 +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=\u05D4\u05E2\u05D1\u05E8 \u05DC\u05DE\u05D8\u05D4 +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=\u05D4\u05E2\u05D1\u05E8 \u05DC\u05EA\u05D7\u05EA\u05D5\u05DF + +#XFLD: Subtle link description label +LINK_SUBTLE=\u05E2\u05D3\u05D9\u05DF +#XFLD: Emphasized link description label +LINK_EMPHASIZED=\u05DE\u05D5\u05D3\u05D2\u05E9 + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=\u05D4\u05E7\u05E9 \u05E2\u05DC F5 \u05DB\u05D3\u05D9 \u05DC\u05E8\u05E2\u05E0\u05DF + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=\u05DC\u05D7\u05E5 \u05E2\u05DC F4 \u05DB\u05D3\u05D9 \u05DC\u05E4\u05EA\u05D5\u05D7 \u05D3\u05D9\u05D0\u05DC\u05D5\u05D2 \u05E9\u05DC \u05E2\u05D6\u05E8\u05EA \u05E2\u05E8\u05DA + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=\u05DB\u05D5\u05EA\u05E8\u05EA \u05EA\u05D7\u05EA\u05D5\u05E0\u05D4 +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=\u05DB\u05D5\u05EA\u05E8\u05EA \u05E2\u05DC\u05D9\u05D5\u05E0\u05D4 +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=\u05DB\u05D5\u05EA\u05E8\u05EA \u05DE\u05E9\u05E0\u05D4 + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\u05DE\u05E6\u05D1 \u05D4\u05E2\u05E8\u05DA \u2013 \u05E9\u05D2\u05D9\u05D0\u05D4 +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\u05DE\u05E6\u05D1 \u05D4\u05E2\u05E8\u05DA \u2013 \u05D0\u05D6\u05D4\u05E8\u05D4 +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\u05DE\u05E6\u05D1 \u05D4\u05E2\u05E8\u05DA \u2013 \u05D4\u05E6\u05DC\u05D7\u05D4 + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=\u05D4\u05E9\u05DC\u05D1 \u05D4\u05D1\u05D0 +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=\u05D7\u05D9\u05D5\u05D1\u05D9 +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=\u05E7\u05E8\u05D9\u05D8\u05D9 +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=\u05E9\u05DC\u05D9\u05DC\u05D9 + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} \u05DE\u05EA\u05D5\u05DA {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u05D3\u05D9\u05E8\u05D5\u05D2 + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=\u05DE\u05D5\u05E2\u05D3\u05E3 +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=\u05E1\u05D9\u05DE\u05D5\u05DF + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=\u05D1\u05D7\u05E8 \u05D7\u05E5 \u05DB\u05D5\u05EA\u05E8\u05EA +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=\u05E1\u05DE\u05DC + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=\u05E1\u05DE\u05DC \u05DE\u05E1\u05D7\u05E8\u05D9 + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0\u05D5 \u05E4\u05E8\u05D9\u05D8\u05D9\u05DD \u05EA\u05D5\u05D0\u05DE\u05D9\u05DD. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=\u05D1\u05D3\u05D5\u05E7 \u05D0\u05EA \u05D4\u05D2\u05D3\u05E8\u05D5\u05EA \u05D4\u05DE\u05E1\u05E0\u05DF + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} \u05E0\u05D5\u05E1\u05E4\u05D9\u05DD + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=\u05DC\u05D0 \u05E0\u05E7\u05E8\u05D0 +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=\u05E0\u05E2\u05D5\u05DC + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\u05E1\u05D2\u05D5\u05E8 +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=\u05D4\u05DB\u05D5\u05DC +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=\u05D7\u05D6\u05D5\u05E8 +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\u05D4\u05D5\u05D3\u05E2\u05D5\u05EA + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=\u05E4\u05E2\u05D5\u05DC\u05D4 \u05D7\u05D9\u05D5\u05D1\u05D9\u05EA +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=\u05E4\u05E2\u05D5\u05DC\u05D4 \u05E9\u05DC\u05D9\u05DC\u05D9\u05EA +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=\u05DE\u05D5\u05D3\u05D2\u05E9 + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=\u05DE\u05D5\u05E6\u05D2 \u05E4\u05E8\u05D9\u05D8 {0} \u05DE\u05EA\u05D5\u05DA {1} + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ja.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ja.properties new file mode 100644 index 0000000..8edaa08 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ja.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\u30C7\u30FC\u30BF\u306A\u3057 + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=\u672A\u8AAD + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=\u524A\u9664\u53EF\u80FD + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=\u8A73\u7D30\u3042\u308A + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\u7DE8\u96C6\u53EF\u80FD + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\u6709\u52B9 + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=\u30B0\u30EB\u30FC\u30D7\u30D8\u30C3\u30C0 + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} / {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=\u524D\u753B\u9762 + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=On +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Off + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=\u53D7\u5165 + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=\u62D2\u5426 + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=\u4E2D\u6B62 + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=\u4E2D\u6B62 + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=\u3055\u3089\u306B\u8868\u793A + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=\u4E2D\u6B62 + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=\u6708 + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=\u65E5 + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u5E74 + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=\u6642\u9593 + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=\u5206 + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=\u79D2 + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=\u4ECA + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3 + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=\u4E2D\u6B62 + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=\u306F\u3044 + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=\u3044\u3044\u3048 + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\u7570\u5E38\u7D42\u4E86 + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=\u518D\u8A66\u884C + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=\u7121\u8996 + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\u9589\u3058\u308B + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=\u524A\u9664 + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=\u30A2\u30E9\u30FC\u30C8 + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=\u78BA\u8A8D + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=\u8A73\u7D30\u8868\u793A + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=\u30D7\u30EB\u30C0\u30A6\u30F3\u3067\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5 + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=\u30EA\u30EA\u30FC\u30B9\u3057\u3066\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5 + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u30ED\u30FC\u30C9\u4E2D... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=\u304A\u5F85\u3061\u304F\u3060\u3055\u3044\u3002\u30C7\u30FC\u30BF\u30ED\u30FC\u30C9\u4E2D + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5 + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=\u30ED\u30B0\u30A2\u30A6\u30C8 + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=\u4E2D\u6B62 + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=\u30D1\u30FC\u30BD\u30CA\u30E9\u30A4\u30BC\u30FC\u30B7\u30E7\u30F3\u3092\u5143\u306B\u623B\u3059 + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=\u5217 + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=\u3059\u3079\u3066 + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=\u5217\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=\u30D3\u30E5\u30FC + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=\u30BD\u30FC\u30C8\u57FA\u6E96 + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=\u30B0\u30EB\u30FC\u30D7\u5316\u57FA\u6E96 + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=\u30D5\u30A3\u30EB\u30BF\u57FA\u6E96 + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=\u30D5\u30A3\u30EB\u30BF\u57FA\u6E96\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\u30D5\u30A3\u30EB\u30BF\u57FA\u6E96\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=\u4E2D\u6B62 + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=\u306A\u3057 + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=\u6607\u9806 + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=\u964D\u9806 + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\u3059\u3079\u3066\u306E\u30D5\u30A3\u30EB\u30BF\u3092\u30AF\u30EA\u30A2 + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=\u3059\u3079\u3066 + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (\u3059\u3079\u3066) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=\u691C\u7D22 + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=\u30D5\u30A3\u30EB\u30BF + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=\u30D5\u30A3\u30EB\u30BF\u57FA\u6E96 {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=\u30D5\u30A3\u30EB\u30BF\u304C\u672A\u9078\u629E + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\u304A\u3088\u3073 + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=\u8907\u6570\u306E\u30D5\u30A3\u30EB\u30BF\u3092\u9069\u7528 + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} \u7D9A\u304D... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} \u4ED6\u306B\u5B58\u5728 + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=\u30B5\u30FC\u30D0\u4E0A\u3067\u691C\u7D22\u7D9A\u884C + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=\u30D5\u30A3\u30EB\u30BF\u524A\u9664 + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=\u9078\u629E\u3055\u308C\u305F\u30A2\u30A4\u30C6\u30E0\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\u3053\u3053\u306B\u6295\u7A3F\u3057\u3066\u304F\u3060\u3055\u3044 + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=\u9001\u4FE1 + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=\u5168\u30A2\u30A4\u30C6\u30E0\u8868\u793A + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=\u30D5\u30A1\u30BB\u30C3\u30C8\u4E00\u89A7\u304B\u3089\u524A\u9664 + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=\u30D5\u30A1\u30BB\u30C3\u30C8\u4E00\u89A7\u306B\u8FFD\u52A0 + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=\u30EA\u30BB\u30C3\u30C8 + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=\u524D + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=\u6B21 + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=\u5168\u4F53\u3092\u8868\u793A + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=\u4E00\u90E8\u306E\u307F\u8868\u793A + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=\u6DFB\u4ED8\u6587\u66F8 ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u30D5\u30A1\u30A4\u30EB {0} \u3092\u524A\u9664\u3057\u307E\u3059\u304B\u3002 + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u307E\u3059\u304B\u3002 + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=\u30D5\u30A1\u30A4\u30EB\u524A\u9664 + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\u6B21\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u304C\u5F37\u5236\u7D42\u4E86\u3055\u308C\u307E\u3059\u3002 + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u306E\u4E2D\u65AD + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=\u30D5\u30A1\u30A4\u30EB\u540D\u304C\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059 + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u304C\u5931\u6557\u3057\u307E\u3057\u305F + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=\u4F7F\u7528\u3067\u304D\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u30BF\u30A4\u30D7\u3067\u3059 + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=\u4E2D\u6B62 + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=\u30D3\u30E5\u30FC\u8A2D\u5B9A +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=\u30D5\u30A3\u30EB\u30BF\u5B9A\u7FA9 +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=\u30BD\u30FC\u30C8\u5B9A\u7FA9 +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=\u30B0\u30EB\u30FC\u30D7\u5B9A\u7FA9 +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=\u5217\u30D7\u30ED\u30D1\u30C6\u30A3\u5B9A\u7FA9 +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=\u4E2D\u6B62 +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=\u30EA\u30B9\u30C8\u30A2 +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=\u30BD\u30FC\u30C8 +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=\u30D5\u30A3\u30EB\u30BF +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=\u30B0\u30EB\u30FC\u30D7 +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=\u8A08\u7B97 +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=\u5217 +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=\u8B66\u544A +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=\u4E0D\u8DB3\u3057\u3066\u3044\u308B\u6761\u4EF6\u5024\u304C\u3042\u308A\u307E\u3059\u3002\n \u5B8C\u5168\u306A\u30A8\u30F3\u30C8\u30EA\u3060\u3051\u304C\u30D5\u30A3\u30EB\u30BF\u306B\u8FFD\u52A0\u3055\u308C\u307E\u3059\u3002 +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=\u591A\u6570\u306E\u5217\u3092\u9078\u629E\u3059\u308B\u3068\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u304C\u4F4E\u4E0B\u3059\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059 + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=\u5305\u542B + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=\u9664\u5916 + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=\u7BC4\u56F2 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=\u7B49\u3057\u3044 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=\u542B\u3080 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=\u3088\u308A\u5927\u304D\u3044 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=\u4EE5\u4E0A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=\u3088\u308A\u5C0F\u3055\u3044 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=\u4EE5\u4E0B +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=\u521D\u671F\u5024 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\u5148\u982D +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=\u672B\u5C3E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=\u6607\u9806 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=\u964D\u9806 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=\u6607\u9806 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=\u964D\u9806 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=\u5408\u8A08 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\u5E73\u5747 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=\u6700\u5C0F +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=\u6700\u5927 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=\u7BC4\u56F2 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=\u7B49\u3057\u3044 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=\u3088\u308A\u5F8C +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=\u4EE5\u5F8C +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\u3088\u308A\u524D +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\u4EE5\u524D +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=\u7BC4\u56F2 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=\u7B49\u3057\u3044 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=\u3088\u308A\u5927\u304D\u3044 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=\u4EE5\u4E0A +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=\u3088\u308A\u5C0F\u3055\u3044 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=\u4EE5\u4E0B + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=\u958B\u59CB +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=\u7D42\u4E86 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=\u5024 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=\u9805\u76EE\u3092\u5217\u3068\u3057\u3066\u8868\u793A +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\u65B0\u898F\u884C\u3092\u8FFD\u52A0 +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=\u6709\u52B9\u306A\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=\u3059\u3079\u3066\u8868\u793A +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=\u9078\u629E\u8868\u793A +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\u5168\u9078\u629E +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=\u5168\u9078\u629E ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=\u4E0A\u7AEF\u306B\u79FB\u52D5 +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=\u4E0A\u306B\u79FB\u52D5 +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=\u4E0B\u306B\u79FB\u52D5 +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=\u4E0B\u7AEF\u306B\u79FB\u52D5 + +#XFLD: Subtle link description label +LINK_SUBTLE=\u6DE1\u8272 +#XFLD: Emphasized link description label +LINK_EMPHASIZED=\u5F37\u8ABF + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u3059\u308B\u306B\u306F F5 \u3092\u62BC\u3057\u307E\u3059 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=\u5165\u529B\u30D8\u30EB\u30D7\u306E\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u958B\u304F\u306B\u306F F4 \u3092\u62BC\u3057\u307E\u3059 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=\u30D5\u30C3\u30BF +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=\u30D8\u30C3\u30C0 +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=\u30B5\u30D6\u30D8\u30C3\u30C0 + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\u5024\u30B9\u30C6\u30FC\u30BF\u30B9\: \u30A8\u30E9\u30FC +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\u5024\u30B9\u30C6\u30FC\u30BF\u30B9\: \u8B66\u544A +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\u5024\u30B9\u30C6\u30FC\u30BF\u30B9\: \u6210\u529F + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=\u6B21\u306E\u30B9\u30C6\u30C3\u30D7 +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=\u30DD\u30B8\u30C6\u30A3\u30D6 +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=\u30AF\u30EA\u30C6\u30A3\u30AB\u30EB +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=\u30CD\u30AC\u30C6\u30A3\u30D6 + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} / {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u8A55\u4FA1 + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=\u304A\u6C17\u306B\u5165\u308A +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=\u30D5\u30E9\u30B0 + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=\u30BF\u30A4\u30C8\u30EB\u77E2\u5370\u306E\u9078\u629E +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=\u30A2\u30A4\u30B3\u30F3 + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=\u30ED\u30B4 + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\u4E00\u81F4\u3059\u308B\u30A2\u30A4\u30C6\u30E0\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=\u30D5\u30A3\u30EB\u30BF\u8A2D\u5B9A\u306E\u30C1\u30A7\u30C3\u30AF + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} \u8FFD\u52A0 + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=\u672A\u8AAD +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=\u30ED\u30C3\u30AF\u6E08 + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\u9589\u3058\u308B +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=\u3059\u3079\u3066 +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=\u524D\u753B\u9762 +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\u30E1\u30C3\u30BB\u30FC\u30B8 + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=\u30DD\u30B8\u30C6\u30A3\u30D6\u30A2\u30AF\u30B7\u30E7\u30F3 +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=\u30CD\u30AC\u30C6\u30A3\u30D6\u30A2\u30AF\u30B7\u30E7\u30F3 +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=\u5F37\u8ABF + +#XACT: ARIA text for position markers +CAROUSEL_POSITION={1} \u306E\u30A2\u30A4\u30C6\u30E0 {0} \u304C\u8868\u793A\u3055\u308C\u307E\u3059 + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ko.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ko.properties new file mode 100644 index 0000000..7deb343 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ko.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\uB370\uC774\uD130 \uC5C6\uC74C + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=\uC77D\uC9C0 \uC54A\uC74C + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=\uC0AD\uC81C \uAC00\uB2A5 + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=\uC138\uBD80\uC0AC\uD56D \uC788\uC74C + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\uD3B8\uC9D1 \uAC00\uB2A5 + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\uD65C\uC131 + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=\uADF8\uB8F9 \uD5E4\uB354 + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} / {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=\uB4A4\uB85C + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=On +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Off + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=\uC218\uB77D + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=\uAC70\uBD80 + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=\uCDE8\uC18C + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=\uCDE8\uC18C + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=\uC790\uC138\uD788 + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=\uD655\uC778 + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=\uCDE8\uC18C + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=\uC6D4 + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=\uC77C + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\uC5F0\uB3C4 + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=\uC2DC\uAC04 + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=\uBD84 + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=\uCD08 + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=\uC9C0\uAE08 + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=\uD0D0\uC0C9 + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=\uD655\uC778 + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=\uCDE8\uC18C + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=\uC608 + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=\uC544\uB2C8\uC624 + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\uC911\uB2E8 + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=\uC7AC\uC2DC\uB3C4 + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=\uBB34\uC2DC + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\uB2EB\uAE30 + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=\uC0AD\uC81C + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=\uACBD\uACE0 + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=\uD655\uC778 + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=\uC138\uBD80\uC0AC\uD56D \uD45C\uC2DC + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=\uC544\uB798\uB85C \uB2F9\uACA8\uC11C \uC0C8\uB85C \uACE0\uCE68 + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=\uB193\uC73C\uBA74 \uC0C8\uB85C \uACE0\uCE68 + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\uB85C\uB4DC\uD558\uB294 \uC911... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=\uAE30\uB2E4\uB9AC\uC2ED\uC2DC\uC624. \uB370\uC774\uD130 \uB85C\uB4DC \uC911 + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=\uC0C8\uB85C \uACE0\uCE68 + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=\uB85C\uADF8\uC544\uC6C3 + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=\uD655\uC778 + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=\uCDE8\uC18C + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=\uAC1C\uC778 \uC124\uC815 \uCDE8\uC18C + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=\uC5F4 + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=\uBAA8\uB450 + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=\uC5F4\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=\uBCF4\uAE30 + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=\uC815\uB82C \uAE30\uC900 + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=\uADF8\uB8F9\uD654 \uAE30\uC900 + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=\uD544\uD130\uB9C1 \uAE30\uC900 + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=\uD544\uD130\uB9C1 \uAE30\uC900\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\uD544\uD130\uB9C1 \uAE30\uC900\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=\uD655\uC778 + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=\uCDE8\uC18C + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=\uC5C6\uC74C + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=\uC624\uB984\uCC28\uC21C + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=\uB0B4\uB9BC\uCC28\uC21C + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\uBAA8\uB4E0 \uD544\uD130 \uC9C0\uC6B0\uAE30 + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=\uBAA8\uB450 + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0}(\uBAA8\uB450) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=\uAC80\uC0C9 + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=\uD544\uD130 + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=\uD655\uC778 + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY={0}({1})(\uC73C)\uB85C \uD544\uD130\uB9C1 + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=\uD544\uD130 \uBBF8\uC120\uD0DD + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\uBC0F + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=\uC5EC\uB7EC \uD544\uD130 \uC801\uC6A9 + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} \uAE30\uD0C0... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} \uCD94\uAC00 \uC0AC\uC6A9 \uAC00\uB2A5 + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=\uC11C\uBC84\uC5D0\uC11C \uCD94\uAC00 \uAC80\uC0C9 + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=\uD544\uD130 \uC81C\uAC70 + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=\uC120\uD0DD\uB41C \uD56D\uBAA9\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\uC5EC\uAE30\uC5D0 \uAE30\uB85D\uD558\uC2ED\uC2DC\uC624. + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=\uC81C\uCD9C + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=\uBAA8\uB4E0 \uD56D\uBAA9 \uD45C\uC2DC + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=\uD328\uC2EF \uB9AC\uC2A4\uD2B8 \uC81C\uAC70 + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=\uD328\uC2EF \uB9AC\uC2A4\uD2B8 \uCD94\uAC00 + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=\uC7AC\uC124\uC815 + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=\uC774\uC804 + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=\uB2E4\uC74C + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=\uC790\uC138\uD788 + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=\uAC04\uB2E8\uD788 + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=\uCCA8\uBD80\uD30C\uC77C({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\uD30C\uC77C ''{0}''\uC744(\uB97C) \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\uD30C\uC77C\uC744 \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=\uD30C\uC77C \uC0AD\uC81C + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\uC5C5\uB85C\uB4DC \uD30C\uC77C\uC758 \uC5C5\uB85C\uB4DC \uC885\uB8CC \uC608\uC815\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=\uC5C5\uB85C\uB4DC \uC885\uB8CC + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=\uD30C\uC77C \uC774\uB984\uC774 \uC774\uBBF8 \uC788\uC2B5\uB2C8\uB2E4. + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\uC5C5\uB85C\uB4DC\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\uC5C5\uB85C\uB4DC \uC2E4\uD328 + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=\uD5C8\uC6A9\uB418\uC9C0 \uC54A\uB294 \uD30C\uC77C \uC720\uD615\uC785\uB2C8\uB2E4. + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=\uCDE8\uC18C + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=\uD655\uC778 + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=\uC124\uC815 \uBCF4\uAE30 +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=\uD544\uD130 \uC815\uC758 +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=\uC815\uB82C \uC815\uC758 +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=\uADF8\uB8F9 \uC815\uC758 +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=\uC5F4 \uC18D\uC131 \uC815\uC758 +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=\uD655\uC778 +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=\uCDE8\uC18C +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=\uBCF5\uC6D0 +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=\uC815\uB82C +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=\uD544\uD130 +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=\uADF8\uB8F9 +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=\uACC4\uC0B0 +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=\uC5F4 +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=\uACBD\uACE0 +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=\uC77C\uBD80 \uC870\uAC74 \uAC12\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.\n \uC644\uC804\uD55C \uC5D4\uD2B8\uB9AC\uB9CC \uD544\uD130\uC5D0 \uCD94\uAC00\uB429\uB2C8\uB2E4. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=\uB108\uBB34 \uB9CE\uC740 \uC218\uC758 \uC5F4\uC744 \uC120\uD0DD\uD558\uBA74 \uC131\uB2A5\uC774 \uC800\uD558\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4. + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=\uD3EC\uD568 + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=\uC81C\uC678 + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=\uC0AC\uC774 \uD3EC\uD568 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=\uAC19\uC74C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=\uD3EC\uD568 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=\uD07C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=\uD06C\uAC70\uB098 \uAC19\uC74C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=\uC791\uC74C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=\uC791\uAC70\uB098 \uAC19\uC74C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=\uCD08\uAE30 \uAC12 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\uB2E4\uC74C\uC73C\uB85C \uC2DC\uC791 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=\uB2E4\uC74C\uC73C\uB85C \uB05D\uB0A8 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=\uC624\uB984\uCC28\uC21C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=\uB0B4\uB9BC\uCC28\uC21C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=\uC624\uB984\uCC28\uC21C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=\uB0B4\uB9BC\uCC28\uC21C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=\uCD1D\uACC4 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\uD3C9\uADE0 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=\uCD5C\uC18C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=\uCD5C\uB300 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=\uC0AC\uC774 \uD3EC\uD568 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=\uAC19\uC74C +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=\uC774\uD6C4 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=\uB2F9\uC77C \uC774\uD6C4 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\uC774\uC804 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\uB2F9\uC77C \uC774\uC804 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=\uC0AC\uC774 \uD3EC\uD568 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=\uAC19\uC74C +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=\uD07C +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=\uD06C\uAC70\uB098 \uAC19\uC74C +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=\uC791\uC74C +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=\uC791\uAC70\uB098 \uAC19\uC74C + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=\uC2DC\uC791 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=\uC885\uB8CC +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=\uAC12 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=\uD544\uB4DC\uB97C \uC5F4\uB85C \uD45C\uC2DC +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\uC2E0\uADDC \uB77C\uC778 \uCD94\uAC00 +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=\uC720\uD6A8\uD55C \uAC12\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624. + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=\uBAA8\uB450 \uD45C\uC2DC +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=\uC120\uD0DD\uD55C \uD56D\uBAA9 \uD45C\uC2DC +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\uBAA8\uB450 \uC120\uD0DD +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=\uBAA8\uB450 \uC120\uD0DD({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=\uB9E8 \uC704\uB85C \uC774\uB3D9 +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=\uC704\uB85C \uC774\uB3D9 +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=\uC544\uB798\uB85C \uC774\uB3D9 +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=\uB9E8 \uC544\uB798\uB85C \uC774\uB3D9 + +#XFLD: Subtle link description label +LINK_SUBTLE=\uBBF8\uC57D +#XFLD: Emphasized link description label +LINK_EMPHASIZED=\uAC15\uC870 + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=\uC0C8\uB85C \uACE0\uCE58\uB824\uBA74 F5\uB97C \uB204\uB974\uC2ED\uC2DC\uC624. + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=\uAC12 \uB3C4\uC6C0\uB9D0 \uB2E4\uC774\uC5BC\uB85C\uADF8\uB97C \uC5F4\uB824\uBA74 F4\uB97C \uB204\uB974\uC2ED\uC2DC\uC624. + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=\uD478\uD130 +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=\uD5E4\uB354 +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=\uD558\uC704 \uD5E4\uB354 + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\uAC12 \uC0C1\uD0DC \uC624\uB958 +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\uAC12 \uC0C1\uD0DC \uACBD\uACE0 +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\uAC12 \uC0C1\uD0DC \uC131\uACF5 + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=\uB2E4\uC74C \uB2E8\uACC4 +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=\uAE0D\uC815\uC801 +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=\uC2EC\uAC01 +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=\uBD80\uC815\uC801 + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} / {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\uB4F1\uAE09 + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=\uC990\uACA8\uCC3E\uAE30 +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=\uD50C\uB798\uADF8 + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=\uC81C\uBAA9 \uD654\uC0B4\uD45C \uC120\uD0DD +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=\uC544\uC774\uCF58 + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=\uB85C\uACE0 + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\uC77C\uCE58\uD558\uB294 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=\uD544\uD130 \uC124\uC815 \uC810\uAC80 + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0}\uAC1C \uB354 + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=\uC77D\uC9C0 \uC54A\uC74C +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=\uC7A0\uAE40 + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\uB2EB\uAE30 +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=\uBAA8\uB450 +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=\uB4A4\uB85C +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\uBA54\uC2DC\uC9C0 + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=\uAE0D\uC815\uC801 \uC561\uC158 +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=\uBD80\uC815\uC801 \uC561\uC158 +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=\uAC15\uC870 + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=\uD56D\uBAA9 {0}/{1} \uD45C\uC2DC\uB428 + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_lt.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_lt.properties new file mode 100644 index 0000000..9d091ad --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_lt.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=N\u0117ra duomen\u0173 + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Neskaityta + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Naikintina + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Yra i\u0161samios informacijos + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Yra redaguotina + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Yra aktyvus + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Grup\u0117s antra\u0161t\u0117 + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} i\u0161 {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Atgal + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=\u012Ej +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=I\u0161j + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Priimti + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Atmesti + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=At\u0161aukti + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=At\u0161aukti + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Daugiau + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=Gerai + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=At\u0161k. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=M\u0117nuo + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Diena + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Metai + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Valandos + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minut\u0117s + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekund\u0117s + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Dabar + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Nar\u0161ymas + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=Gerai + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=At\u0161aukti + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Taip + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Ne + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Nutraukti + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Bandyti i\u0161 naujo + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Nepaisyti + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=U\u017Edaryti + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Naikinti + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=\u012Esp\u0117jimas + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Patvirtinimas + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Rodyti i\u0161sami\u0105 informacij\u0105 + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Nutempia \u017Eemyn atnauj. + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Paleisti norint atnauj. + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u012Ek\u0117limas... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Palaukite \u2013 duomenys \u012Fkeliami + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Atnaujinti + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=I\u0161eiti + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=Gerai + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=At\u0161aukti + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Anuliuoti personalizavim\u0105 + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Stulpeliai + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Viskas + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Nerasta stulpeli\u0173 + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Rakursas + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=R\u016B\u0161iuoti pagal + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Grupuoti pagal + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtruoti pagal + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtruoti pagal\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtruota pagal\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=Gerai + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=At\u0161aukti + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=N\u0117ra + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Did\u0117jimo tvarka + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Ma\u017E\u0117jimo tvarka + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Valyti visus filtrus + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Viskas + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (Viskas) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Ie\u0161koti + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filtruoti + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=Gerai + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtruota pagal {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Nepasirinkta filtr\u0173 + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=ir + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Taikyti keli filtrai + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} daugiau... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} daugiau + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Toliau ie\u0161koti serveryje + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Pa\u0161alinti filtr\u0105 + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Pasirinktos pozicijos\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Skelbti k\u0105 nors \u010Dia + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Pateikti + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Rodyti visas pozicijas + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Pa\u0161alinti aspekt\u0173 s\u0105ra\u0161\u0105 + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=\u012Etraukti aspekt\u0173 s\u0105ra\u0161\u0105 + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=NustI\u0161Nauj + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Ankstesnis + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Paskesnis + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=DAUGIAU + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MA\u017DIAU + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Priedai ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Ar tikrai norite panaikinti fail\u0105 \u201E{0}\u201C? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Ar tikrai norite panaikinti \u0161\u012F fail\u0105? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Naikinti fail\u0105 + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\u0160i\u0173 fail\u0173 \u012Fk\u0117limo procesas bus nutrauktas\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Nutraukti \u012Fk\u0117lim\u0105 + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Failo vardas jau yra + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Nusiun\u010Diama\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Nepavyko \u012Fkelti + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Neleistinas failo tipas + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=At\u0161aukti + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=Gerai + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Parametr\u0173 per\u017Ei\u016Bra +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Apibr\u0117\u017Eti filtrus +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Apibr\u0117\u017Eti r\u016B\u0161iavimo tvark\u0105 +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Apibr\u0117\u017Eti grupes +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Apibr\u0117\u017Eti stulpeli\u0173 ypatybes +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=Gerai +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=At\u0161aukti +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Atkurti +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=R\u016B\u0161iavimas +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filtrai +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Grup\u0117s +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Skai\u010Diavimas +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Stulpeliai +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=\u012Esp\u0117jimas +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Tr\u016Bksta kai kuri\u0173 s\u0105lyg\u0173 reik\u0161mi\u0173.\n \u012E filtr\u0105 bus \u012Ftraukti tik u\u017Ebaigti \u012Fra\u0161ai. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Pasirinkus didel\u012F stulpeli\u0173 skai\u010Di\u0173, veikimas gali sul\u0117t\u0117ti + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Apima + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Ne\u012Ftraukti + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=intervale +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=lygu +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=apima +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=daugiau u\u017E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=daugiau arba lygu +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=ma\u017Eiau u\u017E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=ma\u017Eiau arba lygu +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=pradinis +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=prasideda +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=baigiasi +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Did\u0117jimo tvarka +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Ma\u017E\u0117jimo tvarka +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Did\u0117jimo tvarka +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Ma\u017E\u0117jimo tvarka +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Bendroji suma +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Vidurkis +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimumas +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maksimumas +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=intervale +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=lygu +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=po +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=t\u0105 dien\u0105 arba po +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=prie\u0161 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=prie\u0161 arba t\u0105 dien\u0105 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=intervale +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=lygu +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=daugiau u\u017E +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=daugiau arba lygu +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=ma\u017Eiau u\u017E +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=ma\u017Eiau arba lygu + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=nuo +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=iki +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Reik\u0161m\u0117 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Rodyti lauk\u0105 kaip stulpel\u012F +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\u012Etraukti nauj\u0105 eilut\u0119 +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=\u012Eveskite leistin\u0105 reik\u0161m\u0119 + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Rodyti visk\u0105 +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Rodyti pasirinktus +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\u017Dym\u0117ti visk\u0105 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Pasirinkite visk\u0105 ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Perkelti \u012F vir\u0161\u0173 +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Perkelti auk\u0161tyn +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Perkelti \u017Eemyn +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Perkelti \u012F apa\u010Di\u0105 + +#XFLD: Subtle link description label +LINK_SUBTLE=Subtilus +#XFLD: Emphasized link description label +LINK_EMPHASIZED=I\u0161ry\u0161kintas + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Nor\u0117dami naujinti, spauskite F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Pspauskite F4, kad atidarytum\u0117te reik\u0161mi\u0173 \u017Einyno dialogo lang\u0105 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Pora\u0161t\u0117 +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Antra\u0161t\u0117 +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Subantra\u0161t\u0117 + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Reik\u0161m\u0117s b\u016Bsenos klaida +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Reik\u0161m\u0117s b\u016Bsenos \u012Fsp\u0117jimas +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=S\u0117kminga reik\u0161m\u0117s b\u016Bsena + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Kitas veiksmas +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Teigiamas +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Itin svarbus +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Neigiamas + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} i\u0161 {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u012Evertinimas + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Parankinis +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=V\u0117liav\u0117l\u0117 + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Pasirinkti pavadinimo rodykl\u0119 +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Piktograma + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logotipas + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Atitinkam\u0173 pozicij\u0173 nerasta. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Patikrinti filtro parametrus + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} daugiau + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Neskaityta +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=U\u017Erakintas + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=U\u017Edaryti +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Viskas +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Atgal +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Prane\u0161imai + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Teigiamas veiksmas +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Neigiamas veiksmas +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=I\u0161ry\u0161kintas + +#XACT: ARIA text for position markers +CAROUSEL_POSITION={0} elementas i\u0161 {1} rodomas + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_lv.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_lv.properties new file mode 100644 index 0000000..2197357 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_lv.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Nav datu + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Nelas\u012Bts + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Dz\u0113\u0161ams + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Ir detaliz\u0113ta inform\u0101cija + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Ir redi\u0123\u0113jams + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Ir akt\u012Bvs + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Grupas galvene + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} no {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Atpaka\u013C + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=Ie. +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Iz. + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Apstiprin\u0101t + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Noraid\u012Bt + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Atcelt + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Atcelt + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Vair\u0101k + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=Labi + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Atcelt + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=M\u0113nesis + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Diena + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Gads + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Stundas + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Min\u016Btes + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekundes + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Tagad + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navig\u0101cija + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=Labi + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Atcelt + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=J\u0101 + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=N\u0113 + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=P\u0101rtraukt + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=M\u0113\u0123in\u0101t v\u0113lreiz + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignor\u0113t + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Aizv\u0113rt + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Dz\u0113st + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Br\u012Bdin\u0101jums + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Apstiprin\u0101jums + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=R\u0101d\u012Bt detaliz\u0113tu inform\u0101ciju + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Vilkt uz leju, lai atsv. + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Izl., lai atsvaidzin\u0101tu + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Notiek iel\u0101de... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=L\u016Bdzu, gaidiet, dati tiek iel. + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Atsvaidzin\u0101t + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Atteikties + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=Labi + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Atcelt + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Atsaukt personaliz\u0113\u0161anu + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Kolonnas + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Viss + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Nav atrasta neviena kolonna + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Skats + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=K\u0101rtot p\u0113c + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Grup\u0113t p\u0113c + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtr\u0113\u0161ana p\u0113c + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtr\u0113t p\u0113c\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtr\u0113ts p\u0113c\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=Labi + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Atcelt + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Nav + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Augo\u0161\u0101 sec\u012Bb\u0101 + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Dilsto\u0161\u0101 sec\u012Bb\u0101 + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Not\u012Br\u012Bt visus filtrus + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Viss + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (viss) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Mekl\u0113t + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filtr\u0113t + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=Labi + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtr\u0113ts p\u0113c {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Nav atlas\u012Bts neviens filtrs + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=un + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Lietoti vair\u0101ki filtri + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} vair\u0101k... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} v\u0113l ir pieejami + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Mekl\u0113t t\u0101l\u0101k server\u012B + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=No\u0146emt filtru + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Atlas\u012Bt\u0101s poz\u012Bcijas\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Public\u0113t kaut ko \u0161eit + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Iesniegt + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=R\u0101d\u012Bt visas poz\u012Bcijas + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=No\u0146emt aspektu sarakstu + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Pievienot aspektu sarakstu + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Atiestat\u012Bt + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Iepriek\u0161. + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=N\u0101kamais + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=VAIR\u0100K + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MAZ\u0100K + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Pielikumi ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Vai esat p\u0101rliecin\u0101ts, ka v\u0113laties izdz\u0113st failu {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Vai tie\u0161\u0101m v\u0113laties dz\u0113st failu? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Dz\u0113st failu + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Tiks p\u0101rtraukta \u0161\u0101du failu auag\u0161upiel\u0101de\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=P\u0101rtraukt aug\u0161upiel\u0101di + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Faila nosaukums jau past\u0101v + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Aug\u0161upiel\u0101de\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Aug\u0161upiel\u0101de neizdev\u0101s + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Faila tips nav at\u013Cauts + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Atcelt + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=Labi + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Skat\u012Bt iestat\u012Bjumus +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Defin\u0113t filtrus +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Defin\u0113t k\u0101rto\u0161anu +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Defin\u0113t grupas +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Defin\u0113t kolonnu rekviz\u012Btus +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=Labi +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Atcelt +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Atjaunot +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=K\u0101rto\u0161ana +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filtri +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Grupas +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Apr\u0113\u0137ins +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Kolonnas +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Br\u012Bdin\u0101jums +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Tr\u016Bkst da\u017Eas nosac\u012Bjumu v\u0113rt\u012Bbas.\n Filtram tiks pievienotas tikai piln\u012Bgas v\u0113rt\u012Bbas. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Atlasot lielu skaitu kolonnu, var tikt pal\u0113nin\u0101ta veiktsp\u0113ja + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Iek\u013Caut + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Neiek\u013Caut + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=starp +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=ir vien\u0101ds ar +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=ietver +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=liel\u0101ks nek\u0101 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=liel\u0101ks nek\u0101 vai vien\u0101ds ar +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=maz\u0101ks nek\u0101 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=maz\u0101ks nek\u0101 vai vien\u0101ds ar +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=s\u0101kotn\u0113js +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=s\u0101kas ar +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=beidzas ar +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Augo\u0161\u0101 sec\u012Bb\u0101 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Dilsto\u0161\u0101 sec\u012Bb\u0101 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Augo\u0161\u0101 sec\u012Bb\u0101 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Dilsto\u0161\u0101 sec\u012Bb\u0101 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Kopsumma +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Vid\u0113jais +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimums +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maksimums +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=starp +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=ir vien\u0101ds ar +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=p\u0113c +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=datum\u0101 vai p\u0113c t\u0101 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=pirms +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=pirms vai datum\u0101 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=starp +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=ir vien\u0101ds ar +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=liel\u0101ks nek\u0101 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=liel\u0101ks nek\u0101 vai vien\u0101ds ar +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=maz\u0101ks nek\u0101 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=maz\u0101ks nek\u0101 vai vien\u0101ds ar + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=no +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=l\u012Bdz +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=V\u0113rt\u012Bba +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=R\u0101d\u012Bt lauku k\u0101 kolonnu +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Pievienot jaunu rindu +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Ievad\u012Bt der\u012Bgu v\u0113rt\u012Bbu + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=R\u0101d\u012Bt visu +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=R\u0101d\u012Bt atlas\u012Bto +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Atlas\u012Bt visu +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Atlas\u012Bt visu ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=P\u0101rvietot uz s\u0101kumu +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=P\u0101rvietot uz aug\u0161u +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=P\u0101rvietot uz leju +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=P\u0101rvietot uz beig\u0101m + +#XFLD: Subtle link description label +LINK_SUBTLE=Smalks +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Uzsv\u0113rts + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Nospiediet F5, lai atsvaidzin\u0101tu + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Nospiediet F4, lai atv\u0113rtu v\u0113rt\u012Bbu pal\u012Bdz\u012Bbas dialogu + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=K\u0101jene +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Galvene +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Apak\u0161virsraksts + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=V\u0113rt\u012Bbas statuss\: k\u013C\u016Bda +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=V\u0113rt\u012Bbas statuss\: br\u012Bdin\u0101jums +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=V\u0113rt\u012Bbas statuss\: veiksm\u012Bgs + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=N\u0101kamais solis +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Pozit\u012Bvs +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kritisks +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negat\u012Bvs + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} no {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=V\u0113rt\u0113\u0161ana + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Izlases elements +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Atz\u012Bme + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Atlas\u012Bt virsraksta bulti\u0146u +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Ikona + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logotips + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Nav atrasta neviena atbilsto\u0161a poz\u012Bcija. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=P\u0101rbaud\u012Bt filtra iestat\u012Bjumus + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS=V\u0113l {0} + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Nelas\u012Bts +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Blo\u0137\u0113ts + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Aizv\u0113rt +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Viss +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Atpaka\u013C +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Zi\u0146ojumi + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Pozit\u012Bva darb\u012Bba +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negat\u012Bva darb\u012Bba +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Uzsv\u0113rts + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Par\u0101d\u012Bta poz\u012Bcija {0} no {1} + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_nl.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_nl.properties new file mode 100644 index 0000000..2fede86 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_nl.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Geen gegevens + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Ongelezen + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Verwijderbaar + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Heeft details + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Bewerking mogelijk + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Is actief + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Groepskop + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} van {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Terug + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=Aan +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Uit + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Accepteren + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Afwijzen + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Afbreken + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Afbreken + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Andere gegevens + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Afbr. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Maand + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Dag + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Jaar + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Uren + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minuten + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Seconden + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Nu + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigatie + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Afbreken + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Ja + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Nee + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Afbreken + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Herhalen + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Negeren + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Sluiten + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Verwijderen + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Waarschuwing + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Bevestiging + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Details weergeven + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Naar actualiseren slepen + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Voor actualisering vrijg. + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Geg. worden geladen... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Geg. worden geladen... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Actualiseren + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Afmelden + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Afbreken + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Personalisering ongedaan maken + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Kolommen + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Alle + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Geen kolommen gevonden + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=View + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Sorteren op + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Groeperen op + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filteren op + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filteren op\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Gefilterd op\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Afbreken + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Geen + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Oplopend + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Aflopend + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Alle filters wissen + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Alle + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (Alle) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Zoeken + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filter + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Gefiltert volgens {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Geen filter geselecteerd + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=en + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Meerdere filters actief + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} andere... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} andere beschikbaar + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Verder zoeken op server + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Filter wissen + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Geselecteerde elementen\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Hier iets publiceren + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Verzenden + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Alle elementen weergeven + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Facetlijst verwijderen + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Facetlijst toevoegen + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Resetten + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Terug + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Verder + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=MEER + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MINDER + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Bijlagen ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Bestand {0} werkelijk verwijderen? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Bestand werkelijk verwijderen? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Bestand verwijderen + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Uploaden van volgende bestanden wordt be\u00EBindigd\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Uploaden be\u00EBindigen + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Bestandsnaam bestaat al + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Uploaden\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Uploaden mislukt + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Bestandstype niet toegestaan + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Afbreken + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Instellingen weergeven +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Filter defini\u00EBren +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Sortering defini\u00EBren +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Groepen defini\u00EBren +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Kolomeigenschappen defini\u00EBren +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Afbreken +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Terugzetten +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Sorteren +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filter +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Groepen +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Berekening +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Kolommen +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Waarschuwing +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Enkele conditiewaarden ontbreken.\n Alleen volledige gegevens worden aan filter toegevoegd. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Als u veel kolommen selecteert, kan dit de performance negatief be\u00EFnvloeden + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Opnemen + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Uitsluiten + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=tussen +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=gelijk aan +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=bevat +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=groter dan +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=groter dan of gelijk aan +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=kleiner dan +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=kleiner dan of gelijk aan +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=initieel +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=begint met +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=eindigt met +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Oplopend +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Aflopend +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Oplopend +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Aflopend +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Totaal +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Gemiddelde +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maximum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=tussen +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=gelijk aan +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=na +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=op of na +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=v\u00F3\u00F3r +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=v\u00F3\u00F3r of op +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=tussen +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=gelijk aan +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=groter dan +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=groter dan of gelijk aan +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=kleiner dan +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=kleiner dan of gelijk aan + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=van +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=tot +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Waarde +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Veld als kolom weergeven +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Nieuwe regel toevoegen +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Geef een geldige waarde op + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Alles weergeven +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Selectie weergeven +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Alle selecteren +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Alle selecteren ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Naar begin pagina +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Omhoog +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Omlaag +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Naar einde pagina + +#XFLD: Subtle link description label +LINK_SUBTLE=Subtiel +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Geaccentueerd + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Actualiseren met F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Druk op F4 om invoerhulp te openen + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Voetregel +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Opschrift +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Subkop + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Waardestatus Fout +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Waardestatus Waarschuwing +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Waardestatus Succes + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Volgende stap +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positief +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kritiek +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negatief + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} van {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Waardering + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Favoriet +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Markeren + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Titelpijl selecteren +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Symbool + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Geen passende elementen gevonden +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Controleer filterinstellingen + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} Meer + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Ongelezen +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Geblokkeerd + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Sluiten +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Alle +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Terug +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Berichten + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Positieve actie +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negatieve actie +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Geaccentueerd + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Element {0} van {1} wordt weergegeven + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_no.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_no.properties new file mode 100644 index 0000000..c1d9a5d --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_no.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Ingen data + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Ulest + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Kan slettes + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Har detaljer + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Kan redigeres + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Er aktiv + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Gruppetopp + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} av {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Tilbake + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=P\u00E5 +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Av + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Godkjenn + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Avvis + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Avbryt + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Avbryt + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Flere data + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Avbryt + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=M\u00E5ned + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Dag + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u00C5r + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Timer + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minutter + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekunder + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=N\u00E5 + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigering + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Avbryt + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Ja + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Nei + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Avbryt + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Gjenta + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignorer + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Lukk + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Slett + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Advarsel + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Bekreftelse + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Vis detaljer + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Trekk ned for \u00E5 oppdatere + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Frigi for oppdatering + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Laster data ... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Laster data ... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Oppdater + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Logg av + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Avbryt + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Tilbakestill persontilpasning + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Kolonner + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Alle + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Finner ingen kolonner + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Visning + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Sorter etter + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Grupper etter + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtrer etter + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtrer etter\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtrert etter\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Avbryt + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Uten + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Stigende + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Synkende + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Tilbakestill alle filtre + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Alle + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (alle) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=S\u00F8k + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filter + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtrert etter {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Ingen filter valgt + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=og + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Flere filtre aktive + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} flere... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} flere finnes + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=S\u00F8k videre p\u00E5 server + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Fjern filter + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Valgte elementer\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Legg inn noe her + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Send + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Tilf\u00F8y alle elementer + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Fjern fasettliste + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Tilf\u00F8y fasettliste + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Tilbakest. + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Tilbake + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Fortsett + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=FLERE + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=F\u00C6RRE + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Vedlegg ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Er du sikker p\u00E5 at du vil slette filen {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Er du sikker p\u00E5 at du vil slette filen? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Slett fil + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Opplasting av f\u00F8lgende filer avsluttes\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Avslutt opplasting + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Filnavn finnes allerede + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Opplasting\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Opplasting mislyktes + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Filtype er ikke gyldig + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Avbryt + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Vis innstillinger +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Definer filter +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Definer sortering +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Definer grupper +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Definer kolonneegenskaper +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Avbryt +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Tilbakestill +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Sortering +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filter +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Grupper +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Beregning +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Kolonner +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Advarsel +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Noen betingelsesverdier mangler.\n Bare fullstendige poster tilf\u00F8yes til filteret. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Utvalg av mange kolonner kan p\u00E5virke ytelsen negativt + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Inkluder + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Ekskluder + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=mellom +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=lik +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=inneholder +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=st\u00F8rre enn +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=st\u00F8rre enn eller lik +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=mindre enn +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=mindre enn eller lik +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=initial +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=starter med +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=slutter med +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Stigende +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Synkende +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Stigende +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Synkende +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Sum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Gjennomsnitt +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maksimum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=mellom +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=lik +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=etter den +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=den eller etter den +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=f\u00F8r den +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=f\u00F8r den eller den +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=mellom +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=lik +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=st\u00F8rre enn +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=st\u00F8rre enn eller lik +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=mindre enn +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=mindre enn eller lik + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=fra +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=til +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Verdi +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Vis felt som kolonne +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Tilf\u00F8y ny linje +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Oppgi gyldig verdi + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Vis alt +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Vis utvalg +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Merk alle +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Velg alle ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Helt opp +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Opp +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Nedover +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Helt ned + +#XFLD: Subtle link description label +LINK_SUBTLE=Diskret +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Uthevet + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Oppdater med F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Trykk p\u00E5 F4 for \u00E5 \u00E5pne mulige verdier + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Bunntekst +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Overskrift +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Mellomoverskrift + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Verdistatus "feil" +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Verdistatus "advarsel" +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Verdistatus "feilfritt" + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Neste trinn +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positiv +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kritisk +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negativ + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} av {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Vurdering + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Favoritt +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Indikator + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Velg tittelpil +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Symbol + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Finner ingen passende elementer +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Kontroller filterinnstillinger + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} Mer + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Ulest +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Sperret + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Lukk +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Alle +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Tilbake +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Meldinger + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Positiv aktivitet +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negativ aktivitet +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Uthevet + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Element {0} av {1} vises. + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_pl.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_pl.properties new file mode 100644 index 0000000..41635d4 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_pl.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Brak danych + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Nieprzeczytane + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Usuwalne + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Zawiera szczeg\u00F3\u0142y + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Jest edytowalne + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Jest aktywne + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Nag\u0142\u00F3wek grupy + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} z {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Powr\u00F3t + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=W\u0142. +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Wy\u0142 + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Akceptacja + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Odrzucanie + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Zaniechanie + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Zaniechanie + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Dalsze dane + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Zaniech. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Miesi\u0105c + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Dzie\u0144 + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Rok + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Godziny + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minuty + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekundy + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Teraz + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Nawigacja + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Zaniechanie + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Tak + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Nie + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Zaniechanie + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Powtarzanie + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Pomini\u0119cie + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Zamykanie + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Usuwanie + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Ostrze\u017Cenie + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Potwierdzenie + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Wy\u015Bwietlanie szczeg\u00F3\u0142\u00F3w + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Prosz\u0119 przec., aby od\u015Bw. + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Prosz\u0119 zatw., aby od\u015Bw. + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Wczytywanie danych... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Wczytywanie danych... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Od\u015Bwie\u017Canie + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Wylogowanie + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Anuluj + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Ponowne ustawianie personalizacji + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Kolumny + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Wszystkie + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Nie znaleziono kolumn + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Wgl\u0105d + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Sortowanie wed\u0142ug + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Grupowanie wed\u0142ug + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtrowanie wed\u0142ug + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtrowanie wed\u0142ug\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Przefiltrowano wed\u0142ug\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Anuluj + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Brak + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Rosn\u0105co + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Malej\u0105co + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Ponowne ustawianie wszystkich filtr\u00F3w + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Wszystkie + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (Wszystkie) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Wyszukiwanie + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filtr + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Przefiltrowano wed\u0142ug {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Nie wybrano filtra + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=i + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Kilka filtr\u00F3w aktywnych + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} wi\u0119cej... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE=Istnieje jeszcze {0} + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Kontynuacja wyszukiwania na serwerze + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Usuwanie filtra + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Wybrane elementy\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Prosz\u0119 opublikowa\u0107 co\u015B tutaj + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Wysy\u0142anie + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Wy\u015Bwietlanie wszystkich element\u00F3w + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Usuwanie listy aspekt\u00F3w + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Dodawanie listy aspekt\u00F3w + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Pon. ust. + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Powr\u00F3t + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Kontyn. + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=WI\u0118CEJ + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MNIEJ + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Za\u0142\u0105czniki ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Czy na pewno usun\u0105\u0107 plik {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Czy na pewno usun\u0105\u0107 plik? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Usuwanie pliku + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Wczytywanie nast\u0119puj\u0105cych plik\u00F3w zostanie zako\u0144czone\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Zako\u0144czenie wczytywania + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Nazwa pliku ju\u017C istnieje + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Odczyt\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Wczytywanie nie powiod\u0142o si\u0119 + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Typ danych nie jest dozwolony + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Zaniechanie + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Wy\u015Bwietlanie ustawie\u0144 +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Definiowanie filtr\u00F3w +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Definiowanie sortowania +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Definiowanie grup +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Definiowanie w\u0142a\u015Bciwo\u015Bci kolumn +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Zaniechanie +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Ponowne ustawianie +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Sortowanie +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filtry +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Grupy +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Obliczanie +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Kolumny +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Ostrze\u017Cenie +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Brak niekt\u00F3rych warto\u015Bci warunk\u00F3w.\n Do filtra dodawane s\u0105 tylko kompletne wpisy. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Wyb\u00F3r wielu kolumn mo\u017Ce mie\u0107 negatywny wp\u0142yw na wydajno\u015B\u0107 + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Uwzgl\u0119dnianie + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Wykluczanie + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=mi\u0119dzy +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=r\u00F3wne +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=zawiera +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=wi\u0119ksze ni\u017C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=wi\u0119ksze ni\u017C lub r\u00F3wne +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=mniejsze ni\u017C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=mniejsze ni\u017C lub r\u00F3wne +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=pocz\u0105tkowe +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=rozpoczyna si\u0119 od +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=ko\u0144czy si\u0119 na +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Rosn\u0105co +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Malej\u0105co +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Rosn\u0105co +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Malej\u0105co +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Suma +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\u015Arednia +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maksimum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=mi\u0119dzy +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=r\u00F3wne +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=po +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=w dniu lub po +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=przed +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=przed lub w dniu +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=mi\u0119dzy +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=r\u00F3wne +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=wi\u0119ksze ni\u017C +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=wi\u0119ksze ni\u017C lub r\u00F3wne +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=mniejsze ni\u017C +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=mniejsze ni\u017C lub r\u00F3wne + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=od +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=do +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Warto\u015B\u0107 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Wy\u015Bwietlanie pola jako kolumn\u0119 +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Dodawanie nowej linii +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Prosz\u0119 wprowadzi\u0107 prawid\u0142ow\u0105 warto\u015B\u0107 + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Wy\u015Bwietlanie wszystkich +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Wy\u015Bwietlanie wyboru +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Wyb\u00F3r wszystkich +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Wyb\u00F3r wszystkich ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Na pocz\u0105tek +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=W g\u00F3r\u0119 +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=W d\u00F3\u0142 +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Na koniec + +#XFLD: Subtle link description label +LINK_SUBTLE=Delikatne +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Pod\u015Bwietlone + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Od\u015Bwie\u017Canie za pomoc\u0105 klawisza F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Prosz\u0119 wcisn\u0105\u0107 F4, aby otworzy\u0107 mo\u017Cliwe wpisy + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Stopka +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Nag\u0142\u00F3wek +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Nag\u0142\u00F3wek podrz\u0119dny + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Status warto\u015Bci \u2014 b\u0142\u0105d +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Status warto\u015Bci \u2014 ostrze\u017Cenie +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Status warto\u015Bci \u2014 powodzenie + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Nast\u0119pny krok +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Pozytywne +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Krytyczne +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negatywne + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} z {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Ocena + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Ulubione +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Oznaczanie + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Wyb\u00F3r strza\u0142ki tytu\u0142u +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Ikona + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Nie znaleziono odpowiednich element\u00F3w. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Prosz\u0119 sprawdzi\u0107 ustawienia filtra + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} wi\u0119cej + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Nieprzeczytane +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Zablokowane + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Zamykanie +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Wszystkie +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Powr\u00F3t +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Komunikaty + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Czynno\u015B\u0107 pozytywna +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Czynno\u015B\u0107 negatywna +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Pod\u015Bwietlone + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Wy\u015Bwietlanie elementu {0} z {1} + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_pt.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_pt.properties new file mode 100644 index 0000000..9291d27 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_pt.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Sem dados + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=N\u00E3o lido + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Elimin\u00E1vel + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Tem detalhes + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\u00C9 process\u00E1vel + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Est\u00E1 ativo + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Cabe\u00E7alho de grupo + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} de {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Voltar + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=On +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Off + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Aceitar + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Rejeitar + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Cancelar + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Cancelar + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Outros dados + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Cancelar + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=M\u00EAs + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Dia + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Ano + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Horas + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minutos + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Segundos + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Agora + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navega\u00E7\u00E3o + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Cancelar + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Sim + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=N\u00E3o + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Cancelar + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Repetir + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignorar + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Fechar + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Eliminar + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Advert\u00EAncia + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Confirma\u00E7\u00E3o + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Visualizar detalhes + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Arrastar para atualizar + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Liberar para atualiza\u00E7\u00E3o + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Dados sendo carregados... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Dados sendo carregados... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Atualizar + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Efetuar logoff + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Cancelar + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Anular personaliza\u00E7\u00E3o + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Colunas + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Todos + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Nenhuma coluna encontrada + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Vis\u00E3o + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Ordenar por + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Agrupar por + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtrar por + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtrar por\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtrado por\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Cancelar + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Nenhum + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Ordem crescente + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Ordem decrescente + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Reinicializar todos os filtros + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Todos + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (Todos) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Procurar + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filtro + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtrado por {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Nenhum filtro selecionado + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=e + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=V\u00E1rios filtros ativos + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} outros... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} existem outros + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Continuar pesquisa no servidor + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Eliminar filtro + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Elementos selecionados\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Registrar algo aqui... + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Enviar + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Exibir todos os elementos + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Remover lista de facetas + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Inserir lista de facetas + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Reinicial. + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Voltar + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Continuar + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=MAIS + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MENOS + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Anexos ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Eliminar o file {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Eliminar o file? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Eliminar file + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=O upload dos files seguintes \u00E9 encerrado\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Finalizar o upload + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=O nome do file j\u00E1 existe + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Carregar\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=O upload falhou + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Tipo de file n\u00E3o permitido + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Cancelar + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Exibir configura\u00E7\u00F5es +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Definir filtro +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Definir ordena\u00E7\u00E3o +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Definir grupos +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Definir caracter\u00EDsticas de coluna +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Cancelar +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Reinicializar +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Ordena\u00E7\u00E3o +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filtro +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Grupos +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=C\u00E1lculo +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Colunas +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Advert\u00EAncia +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Faltam alguns valores de condi\u00E7\u00E3o\n No filtro s\u00F3 ser\u00E3o inseridas entradas completas. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=A sela\u00E7\u00E3o de muitas colunas pode afetar negativamente a performance + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Incluir + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Excluir + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=entre +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=igual +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=cont\u00E9m +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=superior a +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=maior que ou igual a +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=inferior a +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=menor que ou igual a +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=inicial +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=come\u00E7a com +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=termina com +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Ordem crescente +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Decrescente +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Ordem crescente +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Decrescente +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Total +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=M\u00E9dia +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=M\u00EDnimo +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=M\u00E1ximo +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=entre +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=igual +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=depois de +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=em ou depois de +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=antes de +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=antes de ou em +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=entre +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=igual +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=superior a +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=maior que ou igual a +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=inferior a +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=menor que ou igual a + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=de +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=at\u00E9 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Valor +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Exibir campo como coluna +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Inserir nova linha +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Entrar um valor v\u00E1lido + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Exibir tudo +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Exibir sele\u00E7\u00E3o +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Selecionar tudo +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Selecionar todos ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Tudo para cima +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Para cima +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Para baixo +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Tudo para baixo + +#XFLD: Subtle link description label +LINK_SUBTLE=Discreto +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Destacado + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Atualizar com F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Pressionar F4 para abrir as entradas possiveis + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Rodap\u00E9 +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=T\u00EDtulo +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Subt\u00EDtulo + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Status de valor erro +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Status de valor advert\u00EAncia +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Status de valor sucesso + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Etapa seguinte +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positivo +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Cr\u00EDtico +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negativo + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} de {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Avalia\u00E7\u00E3o + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Favorito +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=C\u00F3digo + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Selecionar seta de t\u00EDtulo +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=S\u00EDmbolo + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=N\u00E3o foram encontrados elementos adequados. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Verificar as configura\u00E7\u00F5es de filtro + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} Mais + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=N\u00E3o lido +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Bloqueado + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Fechar +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Todos +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Voltar +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Mensagens + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=A\u00E7\u00E3o positiva +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=A\u00E7\u00E3o negativa +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Destacado + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Elemento {0} de {1} \u00E9 exibido + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ro.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ro.properties new file mode 100644 index 0000000..b3e8285 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ro.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=F\u0103r\u0103 date + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Necitit + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Poate fi \u015Fters + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Are detalii + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Este editabil + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Este activ + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Antet de grup + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} din {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=\u00CEnapoi + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=Act +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Dez + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Acceptare + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Respingere + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Anulare + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Anulare + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Mai mult + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Anul. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Lun\u0103 + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Zi + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=An + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Ore + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minute + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Secunde + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Acum + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigare + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Anulare + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Da + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Nu + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\u00CEntrerupere + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Repetare + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignorare + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\u00CEnchidere + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=\u015Etergere + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Alarm\u0103 + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Confirmare + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Prezentare detalii + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Defil.\u00EEn jos pt.\u00EEmprosp. + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Eliberare pt.\u00EEmprosp\u0103tare + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u00CEnc\u0103rcare ... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=A\u015Ftepta\u0163i, datele sunt \u00EEnc\u0103rc. + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=\u00CEmprosp\u0103tare + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Deconectare + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Anulare + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Anulare personalizare + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Coloane + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Tot + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=F\u0103r\u0103 coloane g\u0103site + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Imagine + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Sortare dup\u0103 + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Grupare dup\u0103 + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtrare dup\u0103 + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtrare dup\u0103\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtrat dup\u0103\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Anulare + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=F\u0103r\u0103 + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Ascendent + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Descendent + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Resetare toate filtrele + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Tot + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (Tot) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=C\u0103utare + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filtru + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtrat dup\u0103 {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=F\u0103r\u0103 filtre selectate + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\u015Fi + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Mai multe filtre aplicate + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT=\u00CEnc\u0103 {0}... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE=\u00CEnc\u0103 {0} disponibile + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Continuare c\u0103utare pe server + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Eliminare filtru + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Pozi\u0163ii selectate\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Publica\u0163i ceva aici + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Transmitere + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Afi\u015Fare toate pozi\u0163iile + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Eliminare list\u0103 de fa\u0163ete + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Ad\u0103ugare list\u0103 de fa\u0163ete + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Resetare + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Anterior + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Urm\u0103tor + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=MAI MULT + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MAI PU\u0162IN + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Anexe ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Sigur dori\u0163i s\u0103 \u015Fterge\u0163i fi\u015Fierul {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Sigur dori\u0163i s\u0103 \u015Fterge\u0163i fi\u015Fierul? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=\u015Etergere fi\u015Fier + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\u00CEnc\u0103rcarea pt.urm\u0103toarele fi\u015Fiere va fi terminat\u0103\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Terminare \u00EEnc\u0103rcare + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Numele de fi\u015Fier exist\u0103 deja + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u00CEnc\u0103rcare\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\u00CEnc\u0103rcare nereu\u015Fit\u0103 + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Tip de fi\u015Fier nepermis + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Anulare + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Afi\u015Fare set\u0103ri +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Definire filtre +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Definire sortare +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Definire grupuri +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Definire propriet\u0103\u0163i coloane +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Anulare +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Restaurare +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Sortare +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filtre +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Grupuri +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Calcul +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Coloane +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Avertizare +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Unele valori de condi\u0163ie lipsesc.\n Doar intr\u0103rile complete vor fi ad\u0103ugate la filtru. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Selectarea unui num\u0103r mare de coloane poate \u00EEncetini performan\u0163a + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Includere + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Excludere + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=\u00EEntre +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=egal cu +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=con\u0163ine +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=mai mare dec\u00E2t +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=mai mare dec\u00E2t sau egal cu +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=mai mic dec\u00E2t +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=mai mic dec\u00E2t sau egal cu +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=ini\u0163ial +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\u00EEncepe cu +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=se termin\u0103 cu +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Ascendent +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Descendent +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Ascendent +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Descendent +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Total +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Mediu +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minim +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maxim +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=\u00EEntre +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=egal cu +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=dup\u0103 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=pe sau dup\u0103 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\u00EEnainte de +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\u00EEnainte de sau pe +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=\u00EEntre +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=egal cu +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=mai mare dec\u00E2t +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=mai mare dec\u00E2t sau egal cu +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=mai mic dec\u00E2t +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=mai mic dec\u00E2t sau egal cu + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=de la +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=p\u00E2n\u0103 la +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Valoare +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Afi\u015Fare c\u00E2mp drept coloan\u0103 +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Ad\u0103ugare linie nou\u0103 +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Introduce\u0163i valoare valabil\u0103 + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Afi\u015Fare tot +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Afi\u015Fare selectate +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Selectare tot +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Selectare tot ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Deplasare \u00EEn sus +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Deplasare \u00EEn sus +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Deplasare \u00EEn jos +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Deplasare \u00EEn jos + +#XFLD: Subtle link description label +LINK_SUBTLE=Discret +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Eviden\u0163iat + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Ap\u0103sa\u0163i pe F5 pt.\u00EEmprosp\u0103tare + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Ap\u0103sa\u0163i pe F4 pt.a deschide un dialog de ajutor valoare + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Not\u0103 de subsol +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Antet +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Subantet + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Stare valoare Eroare +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Stare valoare Avertizare +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Stare valoare Reu\u015Fit + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Etap\u0103 urm\u0103toare +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Pozitiv +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Critic +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negativ + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} din {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Evaluare + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Favorit\u0103 +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Marcator + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Selectare s\u0103geat\u0103 titlu +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Icon + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=F\u0103r\u0103 pozi\u0163ii concordante g\u0103site. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Verifica\u0163i set\u0103ri de filtru + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS=\u00CEnc\u0103 {0} + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Necitit +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Blocat + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\u00CEnchidere +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Tot +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=\u00CEnapoi +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Mesaje + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Ac\u0163iune pozitiv\u0103 +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Ac\u0163iune negativ\u0103 +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Eviden\u0163iat + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Pozi\u0163ia {0} din {1} afi\u015Fat\u0103 + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ru.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ru.properties new file mode 100644 index 0000000..a26a834 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_ru.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445 + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=\u041D\u0435 \u0441\u0447\u0438\u0442\u0430\u043D\u043E + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=\u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435 + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=\u0418\u043C\u0435\u0435\u0442 \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u0443\u044E \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\u0412\u043E\u0437\u043C\u043E\u0436\u043D\u0430 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\u0410\u043A\u0442\u0438\u0432\u043D\u043E + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0433\u0440\u0443\u043F\u043F\u044B + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} \u0438\u0437 {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=\u041D\u0430\u0437\u0430\u0434 + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=\u0412\u043A\u043B +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=\u0412\u044B\u043A + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=\u041F\u0440\u0438\u043D\u044F\u0442\u044C + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=\u041E\u0442\u043A\u043B\u043E\u043D\u0438\u0442\u044C + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=\u0414\u0440\u0443\u0433\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=\u041E\u041A + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=\u041C\u0435\u0441\u044F\u0446 + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=\u0414\u0435\u043D\u044C + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u0413\u043E\u0434 + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=\u0427\u0430\u0441\u044B + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=\u041C\u0438\u043D\u0443\u0442\u044B + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=\u0421\u0435\u043A\u0443\u043D\u0434\u044B + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=\u0421\u0435\u0439\u0447\u0430\u0441 + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=\u041D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=\u041E\u041A + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=\u0414\u0430 + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=\u041D\u0435\u0442 + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=\u0418\u0433\u043D\u043E\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\u0417\u0430\u043A\u0440\u044B\u0442\u044C + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=\u0423\u0434\u0430\u043B\u0438\u0442\u044C + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435 + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0441\u0442\u0438 + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=\u041F\u043E\u0442\u044F\u043D\u0438\u0442\u0435 \u0434\u043B\u044F \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=\u0414\u0435\u0431\u043B\u043E\u043A. \u0434\u043B\u044F \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u0414\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044E\u0442\u0441\u044F... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=\u0414\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044E\u0442\u0441\u044F... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=\u0412\u044B\u0445\u043E\u0434 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043C\u044B + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=\u041E\u041A + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044E + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=\u0421\u0442\u043E\u043B\u0431\u0446\u044B + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=\u0412\u0441\u0435 + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=\u0421\u0442\u043E\u043B\u0431\u0446\u044B \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=\u0420\u0430\u043A\u0443\u0440\u0441 + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430 \u043F\u043E + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=\u0413\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\u041E\u0442\u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u043D\u043E \u043F\u043E\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=\u041E\u041A + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=\u041D\u0435\u0442 + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=\u041F\u043E \u0432\u043E\u0441\u0445\u043E\u0434\u044F\u0449\u0435\u0439 + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=\u041F\u043E \u043D\u0438\u0441\u0445\u043E\u0434\u044F\u0449\u0435\u0439 + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=\u0412\u0441\u0435 + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (\u0412\u0441\u0435) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=\u041F\u043E\u0438\u0441\u043A + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=\u0424\u0438\u043B\u044C\u0442\u0440 + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=\u041E\u041A + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=\u041E\u0442\u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u043D\u043E \u043F\u043E {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=\u0424\u0438\u043B\u044C\u0442\u0440 \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\u0438 + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=\u0410\u043A\u0442\u0438\u0432\u043D\u043E \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432 + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} \u0435\u0449\u0435... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0442 \u0435\u0449\u0435 + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C \u043F\u043E\u0438\u0441\u043A \u043D\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440 + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\u041E\u043F\u0443\u0431\u043B\u0438\u043A\u0443\u0439\u0442\u0435 \u0437\u0434\u0435\u0441\u044C \u0447\u0442\u043E-\u043D\u0438\u0431\u0443\u0434\u044C + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u043F\u0438\u0441\u043E\u043A \u0444\u0430\u0441\u0435\u0442\u043E\u0432 + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u043F\u0438\u0441\u043E\u043A \u0444\u0430\u0441\u0435\u0442\u043E\u0432 + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=\u041D\u0430\u0437\u0430\u0434 + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=\u0414\u0430\u043B\u044C\u0448\u0435 + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=\u0411\u041E\u041B\u042C\u0428\u0415 + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=\u041C\u0415\u041D\u042C\u0428\u0415 + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=\u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0444\u0430\u0439\u043B {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0444\u0430\u0439\u043B? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0444\u0430\u0439\u043B + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0441\u043B\u0435\u0434\u044E\u0449\u0438\u0445 \u0444\u0430\u0439\u043B\u043E\u0432 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=\u041F\u0440\u0435\u0440\u0432\u0430\u0442\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0443 + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=\u0424\u0430\u0439\u043B \u0441 \u0442\u0430\u043A\u0438\u043C \u0438\u043C\u0435\u043D\u0435\u043C \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u043D\u0435 \u0443\u0434\u0430\u043B\u0430\u0441\u044C + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=\u0422\u0438\u043F \u0444\u0430\u0439\u043B\u0430 \u043D\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=\u041E\u041A + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440\u044B +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443 +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u044B +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432 +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=\u041E\u041A +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430 +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=\u0424\u0438\u043B\u044C\u0442\u0440\u044B +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=\u0413\u0440\u0443\u043F\u043F\u044B +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=\u0420\u0430\u0441\u0447\u0435\u0442 +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=\u0421\u0442\u043E\u043B\u0431\u0446\u044B +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435 +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=\u041D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0443\u0441\u043B\u043E\u0432\u0438\u0439 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442.\n \u0412 \u0444\u0438\u043B\u044C\u0442\u0440 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u044B \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u043B\u043D\u044B\u0435 \u0437\u0430\u043F\u0438\u0441\u0438. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=\u0412\u044B\u0431\u043E\u0440 \u0431\u043E\u043B\u044C\u0448\u043E\u0433\u043E \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432 \u043C\u043E\u0436\u0435\u0442 \u043E\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043B\u044C\u043D\u043E \u043F\u043E\u0432\u043B\u0438\u044F\u0442\u044C \u043D\u0430 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=\u0418\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u044C + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=\u043C\u0435\u0436\u0434\u0443 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=\u0440\u0430\u0432\u043D\u043E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=\u0431\u043E\u043B\u044C\u0448\u0435 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=\u0431\u043E\u043B\u044C\u0448\u0435 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=\u043C\u0435\u043D\u044C\u0448\u0435 \u0447\u0435\u043C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=\u043C\u0435\u043D\u044C\u0448\u0435 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=\u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0435 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\u043D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=\u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u0441\u044F \u043D\u0430 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=\u041F\u043E \u0432\u043E\u0441\u0445\u043E\u0434\u044F\u0449\u0435\u0439 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=\u041F\u043E \u043D\u0438\u0441\u0445\u043E\u0434\u044F\u0449\u0435\u0439 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=\u041F\u043E \u0432\u043E\u0441\u0445\u043E\u0434\u044F\u0449\u0435\u0439 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=\u041F\u043E \u043D\u0438\u0441\u0445\u043E\u0434\u044F\u0449\u0435\u0439 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=\u0421\u0443\u043C\u043C\u0430 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\u0421\u0440\u0435\u0434\u043D\u0435\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=\u041C\u0438\u043D\u0438\u043C\u0443\u043C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=\u041C\u0430\u043A\u0441\u0438\u043C\u0443\u043C +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=\u043C\u0435\u0436\u0434\u0443 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=\u0440\u0430\u0432\u043D\u043E +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=\u043F\u043E\u0441\u043B\u0435 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=\u0432 \u044D\u0442\u043E\u0442 \u0434\u0435\u043D\u044C \u0438\u043B\u0438 \u043F\u043E\u0441\u043B\u0435 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\u043F\u0435\u0440\u0435\u0434 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\u043F\u0435\u0440\u0435\u0434 \u0438\u043B\u0438 \u0432 \u044D\u0442\u043E\u0442 \u0434\u0435\u043D\u044C +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=\u043C\u0435\u0436\u0434\u0443 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=\u0440\u0430\u0432\u043D\u043E +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=\u0431\u043E\u043B\u044C\u0448\u0435 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=\u0431\u043E\u043B\u044C\u0448\u0435 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=\u043C\u0435\u043D\u044C\u0448\u0435 \u0447\u0435\u043C +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=\u043C\u0435\u043D\u044C\u0448\u0435 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=c +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=\u043F\u043E +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u043E\u043B\u0435 \u043A\u0430\u043A \u0441\u0442\u043E\u043B\u0431\u0435\u0446 +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443 +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0432\u044B\u0431\u043E\u0440\u0430 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435 ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=\u0412 \u0441\u0430\u043C\u044B\u0439 \u0432\u0435\u0440\u0445 +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=\u0412\u0432\u0435\u0440\u0445 +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=\u0412\u043D\u0438\u0437 +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=\u0412 \u0441\u0430\u043C\u044B\u0439 \u043D\u0438\u0437 + +#XFLD: Subtle link description label +LINK_SUBTLE=\u041D\u0435\u0437\u0430\u043C\u0435\u0442\u043D\u0430\u044F +#XFLD: Emphasized link description label +LINK_EMPHASIZED=\u0412\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u0430\u044F + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=\u0414\u043B\u044F \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0430 \u0441\u043F\u0440\u0430\u0432\u043A\u0438 \u043F\u043E \u0432\u0432\u043E\u0434\u0443 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 F4 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=\u041D\u0438\u0436\u043D\u0438\u0439 \u043A\u043E\u043B\u043E\u043D\u0442\u0438\u0442\u0443\u043B +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=\u041F\u043E\u0434\u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F "\u041E\u0448\u0438\u0431\u043A\u0430" +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F "\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435" +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F "\u0423\u0441\u043F\u0435\u0448\u043D\u043E" + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0448\u0430\u0433 +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0439 +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=\u041A\u0440\u0438\u0442\u0438\u0447\u043D\u044B\u0439 +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=\u041E\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} \u0438\u0437 {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u041E\u0446\u0435\u043D\u043A\u0430 + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=\u0418\u0437\u0431\u0440\u0430\u043D\u043D\u043E\u0435 +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=\u0418\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u0442\u0440\u0435\u043B\u043A\u0443 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=\u0417\u043D\u0430\u0447\u043E\u043A + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=\u041B\u043E\u0433\u043E\u0442\u0438\u043F + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\u041F\u043E\u0434\u0445\u043E\u0434\u044F\u0449\u0438\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=\u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0444\u0438\u043B\u043E\u044C\u0442\u0440\u0430 + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} \u0415\u0449\u0435 + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=\u041D\u0435 \u0441\u0447\u0438\u0442\u0430\u043D\u043E +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u043E + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\u0417\u0430\u043A\u0440\u044B\u0442\u044C +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=\u0412\u0441\u0435 +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=\u041D\u0430\u0437\u0430\u0434 +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u0430\u044F \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=\u041E\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043B\u044C\u043D\u0430\u044F \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=\u0412\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u0430\u044F + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442 {0} \u0438\u0437 {1} + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_sh.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_sh.properties new file mode 100644 index 0000000..a986eab --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_sh.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Nema podataka + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Nepro\u010Ditano + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Mo\u017Ee se izbrisati + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Ima detalje + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Mo\u017Ee se urediti + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Je aktivno + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Zaglavlje grupe + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} od {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Nazad + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=Uk. +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Isk + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Prihvati + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Odbij + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Odustani + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Odustani + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Vi\u0161e + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Odustani + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Mesec + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Dan + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Godina + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Sati + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minuti + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekunde + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Sada + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Usmeravanje + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Odustani + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Da + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Ne + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Prekini + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Poku\u0161aj ponovo + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Zanemari + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Zatvori + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Izbri\u0161i + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Upozorenje + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Potvrda + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Poka\u017Ei detalje + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Pomer.nadole za osve\u017Eav. + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Pustite za osve\u017Eavanje + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=U\u010Ditavanje... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Sa\u010Dekajte, podaci se u\u010Ditavaju + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Osve\u017Ei + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Odjavi se + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Odustani + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Poni\u0161ti personalizaciju + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Kolone + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Sve + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Kolone nisu na\u0111ene + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Pogled + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Pore\u0111aj po + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Grupi\u0161i po + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtriraj po + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtriraj po\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtrirano po\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Odustani + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Nijedan + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Rastu\u0107e + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Opadaju\u0107e + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Izbri\u0161i sve filtere + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Sve + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (Sve) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Tra\u017Ei + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filtriraj + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtrirano po {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Filteri nisu odabrani + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=i + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Primenjeno nekoliko filtera + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} vi\u0161e... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} vi\u0161e dostupno + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Tra\u017Ei dalje na serveru + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Ukloni filter + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Odabrane stavke\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Prilo\u017Ei ne\u0161to ovde + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Podnesi + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Poka\u017Ei sve stavke + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Ukloni listu faseta + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Dodaj listu faseta + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Pon.post. + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Prethodno + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Slede\u0107e + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=VI\u0160E + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MANJE + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Dodaci ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Da li sigurno \u017Eelite da izbri\u0161ete fajl {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Da li sigurno \u017Eelite da izbri\u0161ete fajl? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Izbri\u0161i fajl + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Prenos na server za slede\u0107e fajlove \u0107e biti prekinut\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Prekini prenos na server + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Naziv fajla ve\u0107 postoji + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Prenos na server\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Prenos na server nije uspeo + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Tip fajla nije dozvoljen + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Odustani + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Prika\u017Ei pode\u0161avanja +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Defini\u0161i filtere +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Defini\u0161i re\u0111anje +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Defini\u0161i grupe +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Defini\u0161i svojstva kolone +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Odustani +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Obnovi +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Re\u0111anje +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filteri +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Grupe +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Izra\u010Dunavanje +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Kolone +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Upozorenje +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Pojedine vrednosti uslova nedostaju.\n Samo potpuni unosi \u0107e se dodati u filter. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Odabir velikog broja kolona mo\u017Ee usporiti izvo\u0111enje + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Uklju\u010Di + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Isklju\u010Di + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=izme\u0111u +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=jednako sa +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=sadr\u017Ei +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=ve\u0107e od +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=ve\u0107e od ili jednako sa +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=manje od +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=manje od ili jednako sa +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=po\u010Detno +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=po\u010Dinje sa +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=zavr\u0161ava se sa +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Rastu\u0107e +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Opadaju\u0107e +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Rastu\u0107e +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Opadaju\u0107e +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Ukupno +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Prosek +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maksimum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=izme\u0111u +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=jednako sa +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=nakon +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=na dan ili nakon dana +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=pre +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=pre ili na dan +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=izme\u0111u +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=jednako sa +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=ve\u0107e od +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=ve\u0107e od ili jednako sa +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=manje od +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=manje od ili jednako sa + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=od +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=do +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Vrednost +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Poka\u017Ei polje kao kolonu +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Dodaj novi red +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Unesite va\u017Ee\u0107u vrednost + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Poka\u017Ei sve +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Poka\u017Ei odabrano +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Odaberi sve +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Odaberi sve ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Pomeri na vrh +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Pomeri gore +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Pomeri dole +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Pomeri na dno + +#XFLD: Subtle link description label +LINK_SUBTLE=Suptilno +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Nagla\u0161eno + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Pritisnite F5 za osve\u017Eavanje + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Pritisnite F4 za otvaranje dijaloga pomo\u0107i pri unosu + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Podno\u017Eje +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Zaglavlje +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Podre\u0111eno zaglavlje + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Status vrednosti - Gre\u0161ka +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Status vrednosti - Upozorenje +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Status vrednosti - Uspeh + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Slede\u0107i korak +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Pozitivno +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kriti\u010Dno +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negativno + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} od {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Vrednovanje + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Omiljeni +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Oznaka + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Odaberi strelicu naslova +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Ikona + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Nisu na\u0111ene odgovaraju\u0107e stavke. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Proveri pode\u0161avanja filtera + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} Vi\u0161e + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Nepro\u010Ditano +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Zaklju\u010Dano + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Zatvori +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Sve +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Nazad +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Poruke + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Pozitivna radnja +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negativna radnja +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Nagla\u0161eno + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Stavka {0} od {1} prikazana + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_sk.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_sk.properties new file mode 100644 index 0000000..7494b3a --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_sk.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\u017Diadne d\u00E1ta + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Ne\u010D\u00EDtan\u00E9 + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Vymazate\u013En\u00E9 + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=M\u00E1 detaily + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Je spracovate\u013En\u00E9 + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Je akt\u00EDvne + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Hlavi\u010Dka skupiny + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} z {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Sp\u00E4\u0165 + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=Zap +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Vyp + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Prija\u0165 + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Zamietnu\u0165 + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Zru\u0161i\u0165 + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Zru\u0161i\u0165 + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=\u010Eal\u0161ie d\u00E1ta + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Zru\u0161i\u0165 + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Mesiac + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=De\u0148 + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Rok + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Hodiny + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Min\u00FAty + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekundy + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Teraz + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navig\u00E1cia + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Zru\u0161i\u0165 + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=\u00C1no + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Nie + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Zru\u0161i\u0165 + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Opakova\u0165 + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignorova\u0165 + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Zavrie\u0165 + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Vymaza\u0165 + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Upozornenie + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Potvrdenie + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Zobrazi\u0165 detaily + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Obnovte posunit\u00EDm nadol + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Obnovte uvo\u013Enen\u00EDm + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Na\u010D\u00EDtavaj\u00FA sa \u00FAdaje... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Na\u010D\u00EDtavaj\u00FA sa \u00FAdaje... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Aktualizova\u0165 + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Odhl\u00E1si\u0165 + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Zru\u0161i\u0165 + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Resetova\u0165 personaliz\u00E1ciu + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=St\u013Apce + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=V\u0161etky + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Nena\u0161li sa \u017Eiadne st\u013Apce + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=N\u00E1h\u013Ead + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Triedi\u0165 pod\u013Ea + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Zoskupi\u0165 pod\u013Ea + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtrova\u0165 pod\u013Ea + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtrova\u0165 pod\u013Ea\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtrovan\u00E9 pod\u013Ea\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Zru\u0161i\u0165 + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Bez + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Vzostupne + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Zostupne + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Resetova\u0165 v\u0161etky filtre + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=V\u0161etky + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (V\u0161etky) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=H\u013Eada\u0165 + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filter + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtrovan\u00E9 pod\u013Ea {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Nevybran\u00FD \u017Eiadny filter + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=a + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Akt\u00EDvne viacer\u00E9 filtre + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} \u010Fal\u0161\u00EDch... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE=Existuje {0} \u010Fal\u0161\u00EDch + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=\u010Ealej h\u013Eada\u0165 na serveri + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Odstr\u00E1ni\u0165 filter + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Vybrat\u00E9 prvky\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Tu nie\u010Do zada\u0165 + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Odosla\u0165 + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Zobrazi\u0165 v\u0161etky prvky + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Odstr\u00E1ni\u0165 zoznam aspektov + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Prida\u0165 zoznam aspektov + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Reset + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Sp\u00E4\u0165 + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=\u010Ealej + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=VIAC + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MENEJ + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Pr\u00EDlohy ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Chcete s\u00FAbor {0} naozaj vymaza\u0165? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Chcete s\u00FAbor naozaj vymaza\u0165? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Vymaza\u0165 s\u00FAbor + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Upload nasleduj\u00FAcich s\u00FAborov skon\u010D\u00ED\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Ukon\u010Denie uploadu + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=N\u00E1zov s\u00FAboru u\u017E existuje + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Odovzda\u0165\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Odovzdanie sa nepodarilo + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Typ s\u00FAboru nie je povolen\u00FD + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Zru\u0161i\u0165 + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Zobrazi\u0165 nastavenia +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Definova\u0165 filter +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Definova\u0165 triedenie +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Definova\u0165 skupiny +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Definova\u0165 vlastnosti st\u013Apcov +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Zru\u0161i\u0165 +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Reset +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Triedenie +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filter +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Skupiny +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=V\u00FDpo\u010Det +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=St\u013Apce +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Upozornenie +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Niektor\u00E9 hodnoty podmienky ch\u00FDbaj\u00FA.\n Do filtra sa pridaj\u00FA len \u00FApln\u00E9 z\u00E1znamy. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=V\u00FDber ve\u013Ek\u00E9ho po\u010Dtu st\u013Apcov m\u00F4\u017Ee ma\u0165 negat\u00EDvny vplyv na v\u00FDkon + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Zahrnutie + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Vyl\u00FA\u010Denie + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=medzi +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=rovn\u00E1 sa +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=obsahuje +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=v\u00E4\u010D\u0161ie ako +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=v\u00E4\u010D\u0161ie ako alebo rovn\u00E9 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=men\u0161ie ako +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=men\u0161ie ako alebo rovn\u00E9 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=inici\u00E1lne +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=za\u010D\u00EDna na +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=kon\u010D\u00ED s +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Vzostupne +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Zostupne +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Vzostupne +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Zostupne +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=S\u00FA\u010Det +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Priemer +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maximum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=medzi +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=rovn\u00E1 sa +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=po +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=d\u0148a alebo po +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=pred +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=pred alebo d\u0148a +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=medzi +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=rovn\u00E1 sa +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=v\u00E4\u010D\u0161ie ako +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=v\u00E4\u010D\u0161ie ako alebo rovn\u00E9 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=men\u0161ie ako +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=men\u0161ie ako alebo rovn\u00E9 + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=od +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=do +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Hodnota +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Zobrazi\u0165 pole ako st\u013Apec +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Prida\u0165 nov\u00FD riadok +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Zadajte platn\u00FA hodnotu + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Zobrazi\u0165 v\u0161etko +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Zobrazenie v\u00FDberu +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=V\u00FDber v\u0161etk\u00FDch +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Vybra\u0165 v\u0161etky ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Celkom hore +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Nahor +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Nadol +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Celkom dole + +#XFLD: Subtle link description label +LINK_SUBTLE=Jednoduch\u00E9 +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Zv\u00FDraznen\u00E9 + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Aktualizova\u0165 pomocou F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Stla\u010Dte F4, aby sa otvorila n\u00E1pove\u010F pre zad\u00E1vanie + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=P\u00E4ti\u010Dka +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Nadpis +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Podnadpis + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Status hodnoty Chyba +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Status hodnoty Upozornenie +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Status hodnoty \u00DAspe\u0161n\u00E9 + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Nasleduj\u00FAci krok +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Pozit\u00EDvne +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kritick\u00E9 +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negat\u00EDvne + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} z {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Hodnotenie + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Ob\u013E\u00FAben\u00E9 +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Znak + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Vybra\u0165 \u0161\u00EDpku nadpisu +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Symbol + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\u017Diadne vhodn\u00E9 prvky sa nena\u0161li. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Skontrolujte nastavenia filtra + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} Viac + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Ne\u010D\u00EDtan\u00E9 +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Blokovan\u00E9 + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Zavrie\u0165 +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=V\u0161etky +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Sp\u00E4\u0165 +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Spr\u00E1vy + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Pozit\u00EDvna akcia +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negat\u00EDvna akcia +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Zv\u00FDraznen\u00E9 + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Zobraz\u00ED sa prvok {0} z {1} + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_sl.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_sl.properties new file mode 100644 index 0000000..9057ed5 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_sl.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Ni podatkov + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Neprebrano + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Mogo\u010De izbrisati + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Ima detajle + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Je mogo\u010De obdelati + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Je aktivno + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Glava skupine + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} od {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Nazaj + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=V. +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=I. + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Prevzem + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Zavrnitev + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Prekinitev + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Prekinitev + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Dodatni podatki + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Prek. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Mesec + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Dan + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Leto + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Ure + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minute + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekunde + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Zdaj + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigacija + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Prekinitev + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Da + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Ne + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Prekinitev + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Ponovitev + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignoriranje + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Zapiranje + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Brisanje + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Opozorilo + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Potrditev + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Prikaz detajlov + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Povleci za aktualizacijo + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Lansiranje za aktualizac. + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Nalaganje podatkov ... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Nalaganje podatkov ... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=A\u017Euriranje + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Odjava + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Prekinitev + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Ponastavitev personalizacije + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Stolpci + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Vse + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Stolpci niso najdeni + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Pogled + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Razvr\u0161\u010Danje po + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Grupiranje po + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtriranje po + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtriranje po\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtrirano po\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Prekinitev + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Brez + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Nara\u0161\u010Dajo\u010De + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Padajo\u010De + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Ponastavitev vseh filtrov + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Vse + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (Vse) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Iskanje + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filter + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtrirano po {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Filter ni izbran + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=In + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Aktivnih je ve\u010D filtrov + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} dodatnih... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE=Obstaja {0} dodatnih + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Nadaljevanje iskanja po stre\u017Eniku + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Odstranitev filtra + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Izbrani elementi\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Tu nekaj objavite + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Po\u0161iljanje + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Prikaz vseh elementov + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Odstranitev seznama faset + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=Dodajanje seznama faset + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Ponastav. + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Nazaj + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Naprej + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=VE\u010C + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MANJ + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Priloge ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u017Delite datoteko {0} res izbrisati? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Res \u017Eelite izbrisati datoteko? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Brisanje datoteke + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Prenos naslednjih datotek v stre\u017Enik bo zaklju\u010Den\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Prenos v stre\u017Enik kon\u010Dan + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Naziv datoteke \u017Ee obstaja + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Nalaganje na stre\u017Enik\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Prenos v stre\u017Enik ni uspel + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Tip datoteke ni dovoljen + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Prekinitev + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Prikaz nastavitev +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Definiranje filtra +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Definiranje razvr\u0161\u010Danja +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Definiranje skupin +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Definiranje lastnosti stolpcev +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Prekinitev +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Ponastavitev +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Razvr\u0161\u010Danje +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filter +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Skupine +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Izra\u010Dun +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Stolpci +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Opozorilo +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Nekatere vrednosti pogoja manjkajo.\n Filtru bodo dodani le popolni vnosi. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Izbira veliko stolpcev lahko negativno vpliva na delovanje + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Vklju\u010Ditev + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Izklju\u010Ditev + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=med +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=Je enako +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=vsebuje +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=Ve\u010Dje od +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=Ve\u010Dje ali enako +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=Manj\u0161e od +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=Manj\u0161e ali enako +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=Za\u010Detno +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=Se za\u010Dne z +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=Se kon\u010Da z +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Nara\u0161\u010Dajo\u010De +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Padajo\u010De +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Nara\u0161\u010Dajo\u010De +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Padajo\u010De +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Vsota +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Povpre\u010Dje +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maksimum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=med +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=Je enako +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=za +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=na ali po +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=pred +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=pred ali na +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=med +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=Je enako +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=Ve\u010Dje od +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=Ve\u010Dje ali enako +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=Manj\u0161e od +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=Manj\u0161e ali enako + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=Od +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=Do +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Vrednost +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Prikaz polja kot stolpec +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Dodajanje nove vrstice +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Vnesite veljavno vrednost + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Prikaz vsega +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Prikaz izbire +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Izberi vse +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Izberi vse ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Na vrh +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Navzgor +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Navzdol +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Na dno + +#XFLD: Subtle link description label +LINK_SUBTLE=Nevsiljivo +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Poudarjeno + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Aktualizacija z F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Pritisnite F4 za odpiranje pomo\u010Di pri vnosu + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Vrstica noge +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Naslov +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Podnaslov + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Stanja vrednosti napaka +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Stanja vrednosti opozorilo +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Stanja vrednosti uspeh + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Naslednji korak +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Pozitivno +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kriti\u010Dno +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negativno + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} od {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=Vrednotenje + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Priljubljeno +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Ozna\u010Ditev + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Izbira pu\u0161\u010Dice naslova +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Simbol + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logotip + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Ustrezni elementi niso najdeni. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Preverite nastavitve filtra + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} ve\u010D + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Neprebrano +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Blokirano + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Zapiranje +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Vse +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Nazaj +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Sporo\u010Dila + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Pozitivna akcija +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negativna akcija +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Poudarjeno + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Prikazan je element {0} od {1} + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_sv.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_sv.properties new file mode 100644 index 0000000..f513d6b --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_sv.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Inga data + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Ol\u00E4st + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Raderbar + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Har detaljer + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Kan bearbetas + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\u00C4r aktiv + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Grupphuvud + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} av {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Tillbaka + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=P\u00E5 +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Av + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Acceptera + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Avsl\u00E5 + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Avbryt + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Avbryt + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Ytterligare data + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Avbryt + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=M\u00E5nad + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Dag + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u00C5r + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Timmar + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Minuter + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Sekunder + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=Nu + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Navigering + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Avbryt + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Ja + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Nej + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Avbryt + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Upprepa + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Ignorera + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=St\u00E4ng + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Radera + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Varning + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Bekr\u00E4ftelse + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Visa detaljer + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Dra till uppdatering + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Frisl\u00E4pp f\u00F6r uppdatering + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Data l\u00E4ses in... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Data l\u00E4ses in... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=Uppdatera + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Logga ut + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Avbryt + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=\u00C5terst\u00E4ll personanpassning + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=Kolumner + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=Alla + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Inga kolumner hittades + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Vy + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=Sortera efter + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Gruppera efter + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtrera efter + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtrera efter\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=Filtrering efter\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Avbryt + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Utan + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Stigande + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Fallande + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\u00C5terst\u00E4ll alla filter + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=Alla + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (Alla) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=S\u00F6k + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filter + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtrering efter {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Inget filter har valts + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=Och + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Flera filter aktiva + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} fler... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} fler finns + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=S\u00F6k vidare p\u00E5 servern + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Ta bort filter + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Valda element\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Publicera n\u00E5got h\u00E4r + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=Skicka + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Visa alla element + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Ta bort etikettlista + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=L\u00E4gg till etikettlista + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=\u00C5terst\u00E4ll + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Tillbaka + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Forts\u00E4tt + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=MER + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=MINDRE + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Bilagor ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Vill Ni radera filen {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Vill Ni radera fil? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Radera fil + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Inl\u00E4sning av f\u00F6ljande filer avslutas\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Avsluta inl\u00E4sning + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Filnamn finns redan + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=L\u00E4s in\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Inl\u00E4sning misslyckades + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Filtyp till\u00E5ts ej + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Avbryt + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Visa inst\u00E4llningar +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Definiera filter +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=Definiera sortering +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Definiera grupper +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=Definiera kolumnegenskaper +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Avbryt +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=\u00C5terst\u00E4ll +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=Sortering +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filter +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Grupper +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Ber\u00E4kning +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=Kolumner +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Varning +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=N\u00E5gra villkorsv\u00E4rden saknas.\n Bara fullst\u00E4ndiga uppgifter l\u00E4ggs till i filtret. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Urval av m\u00E5nga kolumner kan ha en negativ effekt p\u00E5 prestandan + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Inkludera + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Exkludera + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=mellan +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=lika med +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=inneh\u00E5ller +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=st\u00F6rre \u00E4n +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=st\u00F6rre \u00E4n eller lika med +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=mindre \u00E4n +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=mindre \u00E4n eller lika med +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=initialt +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=b\u00F6rjar med +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=slutar med +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Stigande +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Fallande +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Stigande +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Fallande +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Summa +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Genomsnitt +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Minimum +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Maximum +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=mellan +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=lika med +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=efter den +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=p\u00E5 eller efter den +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=f\u00F6re den +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=f\u00F6re eller p\u00E5 den +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=mellan +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=lika med +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=st\u00F6rre \u00E4n +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=st\u00F6rre \u00E4n eller lika med +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=mindre \u00E4n +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=mindre \u00E4n eller lika med + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=fr\u00E5n +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=till +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=V\u00E4rde +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Visa f\u00E4lt som kolumn +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=L\u00E4gg till ny rad +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Ange ett giltigt v\u00E4rde + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Visa alla +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Visa urval +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=V\u00E4lj alla +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=V\u00E4lj alla ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=L\u00E4ngst upp +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Upp\u00E5t +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Ned\u00E5t +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=L\u00E4ngst ned + +#XFLD: Subtle link description label +LINK_SUBTLE=Diskret +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Markerad + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Uppdatera med F5 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Tryck p\u00E5 F4 f\u00F6r att \u00F6ppna hj\u00E4lpdialog + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Sidfot +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Rubrik +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Underrubrik + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=V\u00E4rdestatus fel +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=V\u00E4rdestatus varning +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=V\u00E4rdestatus utan fel + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=N\u00E4sta steg +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Positiv +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kritisk +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negativ + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} av {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=V\u00E4rdering + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Favorit +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=Indikator + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=V\u00E4lj titelpil +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Symbol + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logotyp + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Inga passande element hittades +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Kontrollera filterinst\u00E4llningar + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} Mer + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Ol\u00E4st +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Sp\u00E4rrad + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=St\u00E4ng +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=Alla +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Tillbaka +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Meddelanden + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Positiv \u00E5tg\u00E4rd +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negativ \u00E5tg\u00E4rd +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Markerad + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Element {0} f\u00F6r {1} visas + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_th.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_th.properties new file mode 100644 index 0000000..578ecdc --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_th.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\u0E44\u0E21\u0E48\u0E21\u0E35\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25 + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=\u0E22\u0E31\u0E07\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49\u0E2D\u0E48\u0E32\u0E19 + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E25\u0E1A\u0E44\u0E14\u0E49 + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=\u0E21\u0E35\u0E23\u0E32\u0E22\u0E25\u0E30\u0E40\u0E2D\u0E35\u0E22\u0E14 + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E41\u0E01\u0E49\u0E44\u0E02\u0E44\u0E14\u0E49 + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\u0E43\u0E0A\u0E49\u0E07\u0E32\u0E19\u0E44\u0E14\u0E49 + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E2A\u0E48\u0E27\u0E19\u0E2B\u0E31\u0E27\u0E02\u0E2D\u0E07\u0E01\u0E25\u0E38\u0E48\u0E21 + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} \u0E08\u0E32\u0E01 {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=\u0E01\u0E25\u0E31\u0E1A + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=On +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Off + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=\u0E22\u0E2D\u0E21\u0E23\u0E31\u0E1A + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=\u0E1B\u0E0F\u0E34\u0E40\u0E2A\u0E18 + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01 + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01 + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=\u0E21\u0E35\u0E15\u0E48\u0E2D + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=\u0E15\u0E01\u0E25\u0E07 + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01 + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=\u0E40\u0E14\u0E37\u0E2D\u0E19 + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=\u0E27\u0E31\u0E19 + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u0E1B\u0E35 + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=\u0E08\u0E33\u0E19\u0E27\u0E19\u0E0A\u0E31\u0E48\u0E27\u0E42\u0E21\u0E07 + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=\u0E19\u0E32\u0E17\u0E35 + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=\u0E27\u0E34\u0E19\u0E32\u0E17\u0E35 + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=\u0E02\u0E13\u0E30\u0E19\u0E35\u0E49 + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=\u0E01\u0E32\u0E23\u0E40\u0E19\u0E27\u0E34\u0E40\u0E01\u0E15 + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=\u0E15\u0E01\u0E25\u0E07 + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01 + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=\u0E43\u0E0A\u0E48 + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=\u0E44\u0E21\u0E48\u0E43\u0E0A\u0E48 + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01 + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=\u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48 + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=\u0E44\u0E21\u0E48\u0E1E\u0E34\u0E08\u0E32\u0E23\u0E13\u0E32 + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\u0E1B\u0E34\u0E14 + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=\u0E25\u0E1A + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=\u0E01\u0E32\u0E23\u0E41\u0E08\u0E49\u0E07\u0E40\u0E15\u0E37\u0E2D\u0E19 + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=\u0E01\u0E32\u0E23\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19 + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=\u0E41\u0E2A\u0E14\u0E07\u0E23\u0E32\u0E22\u0E25\u0E30\u0E40\u0E2D\u0E35\u0E22\u0E14 + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=\u0E14\u0E36\u0E07\u0E25\u0E07\u0E21\u0E32\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E23\u0E35\u0E40\u0E1F\u0E23\u0E0A + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E23\u0E35\u0E40\u0E1F\u0E23\u0E0A + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25 \u0E01\u0E23\u0E38\u0E13\u0E32\u0E23\u0E2D + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=\u0E23\u0E35\u0E40\u0E1F\u0E23\u0E0A + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=\u0E2D\u0E2D\u0E01\u0E08\u0E32\u0E01\u0E23\u0E30\u0E1A\u0E1A + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=\u0E15\u0E01\u0E25\u0E07 + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01 + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=\u0E40\u0E25\u0E34\u0E01\u0E17\u0E33\u0E01\u0E32\u0E23\u0E1B\u0E23\u0E31\u0E1A\u0E43\u0E0A\u0E49\u0E40\u0E09\u0E1E\u0E32\u0E30\u0E1A\u0E38\u0E04\u0E04\u0E25 + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14 + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=\u0E21\u0E38\u0E21\u0E21\u0E2D\u0E07 + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=\u0E08\u0E31\u0E14\u0E40\u0E23\u0E35\u0E22\u0E07\u0E15\u0E32\u0E21 + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=\u0E08\u0E31\u0E14\u0E01\u0E25\u0E38\u0E48\u0E21\u0E15\u0E32\u0E21 + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C\u0E15\u0E32\u0E21 + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C\u0E15\u0E32\u0E21\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C\u0E15\u0E32\u0E21\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=\u0E15\u0E01\u0E25\u0E07 + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01 + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=\u0E44\u0E21\u0E48\u0E21\u0E35 + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=\u0E08\u0E31\u0E14\u0E25\u0E33\u0E14\u0E31\u0E1A\u0E08\u0E32\u0E01\u0E19\u0E49\u0E2D\u0E22\u0E44\u0E1B\u0E21\u0E32\u0E01 + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=\u0E08\u0E31\u0E14\u0E25\u0E33\u0E14\u0E31\u0E1A\u0E08\u0E32\u0E01\u0E21\u0E32\u0E01\u0E44\u0E1B\u0E19\u0E49\u0E2D\u0E22 + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\u0E25\u0E49\u0E32\u0E07\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14 + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14 + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=\u0E01\u0E32\u0E23\u0E04\u0E49\u0E19\u0E2B\u0E32 + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=\u0E15\u0E01\u0E25\u0E07 + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C\u0E15\u0E32\u0E21 {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\u0E41\u0E25\u0E30 + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=\u0E43\u0E0A\u0E49\u0E2B\u0E25\u0E32\u0E22\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} \u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E15\u0E34\u0E21... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} \u0E17\u0E35\u0E48\u0E1E\u0E23\u0E49\u0E2D\u0E21\u0E43\u0E0A\u0E49\u0E07\u0E32\u0E19\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E15\u0E34\u0E21 + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E15\u0E34\u0E21\u0E1A\u0E19\u0E40\u0E0B\u0E34\u0E23\u0E4C\u0E1F\u0E40\u0E27\u0E2D\u0E23\u0E4C + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=\u0E22\u0E49\u0E32\u0E22\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C\u0E2D\u0E2D\u0E01 + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E40\u0E25\u0E37\u0E2D\u0E01\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\u0E42\u0E1E\u0E2A\u0E15\u0E4C\u0E2A\u0E34\u0E48\u0E07\u0E17\u0E35\u0E48\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E19\u0E35\u0E48 + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=\u0E2A\u0E48\u0E07 + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=\u0E41\u0E2A\u0E14\u0E07\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14 + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=\u0E22\u0E49\u0E32\u0E22\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23 Facet \u0E2D\u0E2D\u0E01 + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23 Facet + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15 + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32 + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=\u0E16\u0E31\u0E14\u0E44\u0E1B + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E15\u0E34\u0E21 + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=\u0E25\u0E14\u0E25\u0E07 + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=\u0E2A\u0E34\u0E48\u0E07\u0E17\u0E35\u0E48\u0E41\u0E19\u0E1A ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u0E04\u0E38\u0E13\u0E41\u0E19\u0E48\u0E43\u0E08\u0E2B\u0E23\u0E37\u0E2D\u0E44\u0E21\u0E48\u0E27\u0E48\u0E32\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E25\u0E1A\u0E44\u0E1F\u0E25\u0E4C {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\u0E04\u0E38\u0E13\u0E41\u0E19\u0E48\u0E43\u0E08\u0E2B\u0E23\u0E37\u0E2D\u0E44\u0E21\u0E48\u0E27\u0E48\u0E32\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E25\u0E1A\u0E44\u0E1F\u0E25\u0E4C\u0E19\u0E35\u0E49? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=\u0E25\u0E1A\u0E44\u0E1F\u0E25\u0E4C + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\u0E01\u0E32\u0E23\u0E2D\u0E31\u0E1E\u0E42\u0E2B\u0E25\u0E14\u0E44\u0E1F\u0E25\u0E4C\u0E15\u0E48\u0E2D\u0E44\u0E1B\u0E19\u0E35\u0E49\u0E08\u0E30\u0E16\u0E39\u0E01\u0E2A\u0E34\u0E49\u0E19\u0E2A\u0E38\u0E14\u0E25\u0E07\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=\u0E2A\u0E34\u0E49\u0E19\u0E2A\u0E38\u0E14\u0E01\u0E32\u0E23\u0E2D\u0E31\u0E1E\u0E42\u0E2B\u0E25\u0E14 + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=\u0E21\u0E35\u0E0A\u0E37\u0E48\u0E2D\u0E44\u0E1F\u0E25\u0E4C\u0E2D\u0E22\u0E39\u0E48\u0E41\u0E25\u0E49\u0E27 + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u0E01\u0E33\u0E25\u0E31\u0E07\u0E2D\u0E31\u0E1E\u0E42\u0E2B\u0E25\u0E14\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\u0E01\u0E32\u0E23\u0E2D\u0E31\u0E1E\u0E42\u0E2B\u0E25\u0E14\u0E25\u0E49\u0E21\u0E40\u0E2B\u0E25\u0E27 + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=\u0E44\u0E21\u0E48\u0E2D\u0E19\u0E38\u0E0D\u0E32\u0E15\u0E43\u0E2B\u0E49\u0E43\u0E0A\u0E49\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E44\u0E1F\u0E25\u0E4C\u0E19\u0E35\u0E49 + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01 + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=\u0E15\u0E01\u0E25\u0E07 + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=\u0E14\u0E39\u0E01\u0E32\u0E23\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E04\u0E48\u0E32 +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E01\u0E32\u0E23\u0E08\u0E31\u0E14\u0E40\u0E23\u0E35\u0E22\u0E07 +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E01\u0E25\u0E38\u0E48\u0E21 +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E04\u0E38\u0E13\u0E2A\u0E21\u0E1A\u0E31\u0E15\u0E34\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=\u0E15\u0E01\u0E25\u0E07 +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01 +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=\u0E23\u0E35\u0E2A\u0E42\u0E15\u0E23\u0E4C +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=\u0E01\u0E32\u0E23\u0E08\u0E31\u0E14\u0E40\u0E23\u0E35\u0E22\u0E07 +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=\u0E01\u0E25\u0E38\u0E48\u0E21 +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=\u0E01\u0E32\u0E23\u0E04\u0E33\u0E19\u0E27\u0E13 +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=\u0E04\u0E33\u0E40\u0E15\u0E37\u0E2D\u0E19 +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=\u0E04\u0E48\u0E32\u0E40\u0E07\u0E37\u0E48\u0E2D\u0E19\u0E44\u0E02\u0E1A\u0E32\u0E07\u0E04\u0E48\u0E32\u0E02\u0E32\u0E14\u0E2B\u0E32\u0E22\u0E44\u0E1B\n \u0E23\u0E30\u0E1A\u0E1A\u0E08\u0E30\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E09\u0E1E\u0E32\u0E30\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E2A\u0E21\u0E1A\u0E39\u0E23\u0E13\u0E4C\u0E25\u0E07\u0E43\u0E19\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=\u0E01\u0E32\u0E23\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E08\u0E33\u0E19\u0E27\u0E19\u0E21\u0E32\u0E01\u0E2D\u0E32\u0E08\u0E17\u0E33\u0E43\u0E2B\u0E49\u0E23\u0E30\u0E1A\u0E1A\u0E17\u0E33\u0E07\u0E32\u0E19\u0E0A\u0E49\u0E32\u0E25\u0E07 + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=\u0E23\u0E27\u0E21 + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=\u0E44\u0E21\u0E48\u0E23\u0E27\u0E21 + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=\u0E21\u0E35 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32\u0E2B\u0E23\u0E37\u0E2D\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E2B\u0E23\u0E37\u0E2D\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=\u0E04\u0E48\u0E32\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=\u0E2A\u0E34\u0E49\u0E19\u0E2A\u0E38\u0E14\u0E14\u0E49\u0E27\u0E22 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=\u0E08\u0E32\u0E01\u0E19\u0E49\u0E2D\u0E22\u0E44\u0E1B\u0E2B\u0E32\u0E21\u0E32\u0E01 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=\u0E08\u0E32\u0E01\u0E21\u0E32\u0E01\u0E44\u0E1B\u0E2B\u0E32\u0E19\u0E49\u0E2D\u0E22 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=\u0E08\u0E32\u0E01\u0E19\u0E49\u0E2D\u0E22\u0E44\u0E1B\u0E2B\u0E32\u0E21\u0E32\u0E01 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=\u0E08\u0E32\u0E01\u0E21\u0E32\u0E01\u0E44\u0E1B\u0E2B\u0E32\u0E19\u0E49\u0E2D\u0E22 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=\u0E22\u0E2D\u0E14\u0E23\u0E27\u0E21 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\u0E04\u0E48\u0E32\u0E40\u0E09\u0E25\u0E35\u0E48\u0E22 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=\u0E15\u0E48\u0E33\u0E2A\u0E38\u0E14 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=\u0E2A\u0E39\u0E07\u0E2A\u0E38\u0E14 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=\u0E2B\u0E25\u0E31\u0E07\u0E08\u0E32\u0E01 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=\u0E43\u0E19\u0E2B\u0E23\u0E37\u0E2D\u0E2B\u0E25\u0E31\u0E07\u0E08\u0E32\u0E01 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\u0E01\u0E48\u0E2D\u0E19 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E23\u0E37\u0E2D\u0E43\u0E19 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32\u0E2B\u0E23\u0E37\u0E2D\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E2B\u0E23\u0E37\u0E2D\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=\u0E08\u0E32\u0E01 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=\u0E16\u0E36\u0E07 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=\u0E04\u0E48\u0E32 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=\u0E41\u0E2A\u0E14\u0E07\u0E1F\u0E34\u0E25\u0E14\u0E4C\u0E43\u0E19\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E1A\u0E23\u0E23\u0E17\u0E31\u0E14\u0E43\u0E2B\u0E21\u0E48 +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=\u0E1B\u0E49\u0E2D\u0E19\u0E04\u0E48\u0E32\u0E17\u0E35\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07 + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=\u0E41\u0E2A\u0E14\u0E07\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14 +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=\u0E41\u0E2A\u0E14\u0E07\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E40\u0E25\u0E37\u0E2D\u0E01 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14 ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=\u0E22\u0E49\u0E32\u0E22\u0E02\u0E36\u0E49\u0E19\u0E14\u0E49\u0E32\u0E19\u0E1A\u0E19 +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=\u0E22\u0E49\u0E32\u0E22\u0E02\u0E36\u0E49\u0E19 +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=\u0E22\u0E49\u0E32\u0E22\u0E25\u0E07 +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=\u0E22\u0E49\u0E32\u0E22\u0E25\u0E07\u0E14\u0E49\u0E32\u0E19\u0E25\u0E48\u0E32\u0E07 + +#XFLD: Subtle link description label +LINK_SUBTLE=\u0E25\u0E30\u0E40\u0E2D\u0E35\u0E22\u0E14 +#XFLD: Emphasized link description label +LINK_EMPHASIZED=\u0E40\u0E19\u0E49\u0E19 + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=\u0E01\u0E14 F5 \u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E23\u0E35\u0E40\u0E1F\u0E23\u0E0A + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=\u0E01\u0E14 F4 \u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E1B\u0E34\u0E14\u0E44\u0E14\u0E2D\u0E30\u0E25\u0E2D\u0E01\u0E15\u0E31\u0E27\u0E0A\u0E48\u0E27\u0E22\u0E01\u0E32\u0E23\u0E1B\u0E49\u0E2D\u0E19\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=\u0E2A\u0E48\u0E27\u0E19\u0E17\u0E49\u0E32\u0E22 +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=\u0E2A\u0E48\u0E27\u0E19\u0E2B\u0E31\u0E27 +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E2A\u0E48\u0E27\u0E19\u0E2B\u0E31\u0E27\u0E22\u0E48\u0E2D\u0E22 + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14\u0E40\u0E01\u0E35\u0E48\u0E22\u0E27\u0E01\u0E31\u0E1A\u0E2A\u0E16\u0E32\u0E19\u0E30\u0E02\u0E2D\u0E07\u0E04\u0E48\u0E32 +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\u0E04\u0E33\u0E40\u0E15\u0E37\u0E2D\u0E19\u0E40\u0E01\u0E35\u0E48\u0E22\u0E27\u0E01\u0E31\u0E1A\u0E2A\u0E16\u0E32\u0E19\u0E30\u0E02\u0E2D\u0E07\u0E04\u0E48\u0E32 +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08\u0E40\u0E01\u0E35\u0E48\u0E22\u0E27\u0E01\u0E31\u0E1A\u0E2A\u0E16\u0E32\u0E19\u0E30\u0E02\u0E2D\u0E07\u0E04\u0E48\u0E32 + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=\u0E02\u0E31\u0E49\u0E19\u0E15\u0E2D\u0E19\u0E16\u0E31\u0E14\u0E44\u0E1B +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=\u0E40\u0E0A\u0E34\u0E07\u0E1A\u0E27\u0E01 +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=\u0E27\u0E34\u0E01\u0E24\u0E15 +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=\u0E40\u0E0A\u0E34\u0E07\u0E25\u0E1A + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} \u0E08\u0E32\u0E01 {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u0E01\u0E32\u0E23\u0E08\u0E31\u0E14\u0E2D\u0E31\u0E19\u0E14\u0E31\u0E1A + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E42\u0E1B\u0E23\u0E14 +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=\u0E41\u0E1F\u0E25\u0E01 + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E25\u0E39\u0E01\u0E28\u0E23\u0E02\u0E2D\u0E07\u0E0A\u0E37\u0E48\u0E2D +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=\u0E44\u0E2D\u0E04\u0E2D\u0E19 + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=\u0E42\u0E25\u0E42\u0E01\u0E49 + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E19 +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\u0E01\u0E32\u0E23\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E04\u0E48\u0E32\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS=\u0E2D\u0E35\u0E01 {0} \u0E23\u0E32\u0E22\u0E01\u0E32\u0E23 + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=\u0E22\u0E31\u0E07\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49\u0E2D\u0E48\u0E32\u0E19 +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=\u0E16\u0E39\u0E01\u0E25\u0E47\u0E2D\u0E04 + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\u0E1B\u0E34\u0E14 +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14 +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=\u0E22\u0E49\u0E2D\u0E19\u0E01\u0E25\u0E31\u0E1A +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21 + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=\u0E01\u0E32\u0E23\u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23\u0E40\u0E0A\u0E34\u0E07\u0E1A\u0E27\u0E01 +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=\u0E01\u0E32\u0E23\u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23\u0E40\u0E0A\u0E34\u0E07\u0E25\u0E1A +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=\u0E40\u0E19\u0E49\u0E19 + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=\u0E41\u0E2A\u0E14\u0E07 {0} \u0E08\u0E32\u0E01 {1} \u0E23\u0E32\u0E22\u0E01\u0E32\u0E23 + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_tr.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_tr.properties new file mode 100644 index 0000000..0e01ca9 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_tr.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Veri yok + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Okunmad\u0131 + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Silinebilir + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Ayr\u0131nt\u0131 i\u00E7eriyor + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=D\u00FCzenlenebilir + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Etkin + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Grup ba\u015Fl\u0131\u011F\u0131 + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} / {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Geriye + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=A\u00E7 +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=Kpt + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Kabul et + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=Reddet + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=\u0130ptal + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=\u0130ptal + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Di\u011Fer veriler + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=TAMAM + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=\u0130ptal + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Ay + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=G\u00FCn + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=Y\u0131l + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Saat + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Dakika + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Saniye + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=\u015Eimdi + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=Dola\u015Fma + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=TAMAM + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=\u0130ptal + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Evet + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Hay\u0131r + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\u0130ptal et + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Yinele + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Yoksay + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=Kapat + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Sil + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Uyar\u0131 + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Teyit + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Ayr\u0131nt\u0131lar\u0131 g\u00F6ster + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=G\u00FCncellemek i\u00E7in \u00E7ek + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=G\u00FCncelleme i\u00E7in onayla + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=Veriler y\u00FCkleniyor... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Veriler y\u00FCkleniyor... + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=G\u00FCncelle + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=Oturumu kapat + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=TAMAM + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=\u0130ptal + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Ki\u015Fiselle\u015Ftirmeyi geri al + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=S\u00FCtunlar + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=T\u00FCm\u00FC + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=S\u00FCtun bulunamad\u0131 + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=G\u00F6r\u00FCn\u00FCm + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=S\u0131ralama \u00F6l\u00E7\u00FCt\u00FC + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Gruplama \u00F6l\u00E7\u00FCt\u00FC + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Filtreleme \u00F6l\u00E7\u00FCt\u00FC + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Filtreleme \u00F6l\u00E7\u00FCt\u00FC\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\u015Euna g\u00F6re filtrelendi\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=TAMAM + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=\u0130ptal + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Hi\u00E7biri + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=Artan d\u00FCzende + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Azalan d\u00FCzende + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=T\u00FCm filtreleri geri al + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=T\u00FCm\u00FC + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (T\u00FCm\u00FC) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Ara + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Filtre + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=TAMAM + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=Filtreleme \u00F6l\u00E7\u00FCt\u00FC\: {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Filtre se\u00E7ilmedi + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=ve + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=Birden fazla filtre etkin + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} ba\u015Fka... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} ba\u015Fka mevcut + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Sunucuda aramaya devam et + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Filtreyi kald\u0131r + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Se\u00E7ilen \u00F6\u011Feler\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=Burada g\u00F6nder + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=G\u00F6nder + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=T\u00FCm \u00F6\u011Feleri g\u00F6r\u00FCnt\u00FCle + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=G\u00F6r\u00FCn\u00FC\u015F listesini kald\u0131r + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=G\u00F6r\u00FCn\u00FC\u015F listesini ekle + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Geri al + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Geriye + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=Devam + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=DAHA FAZLA + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=DAHA AZ + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Ekler ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT={0} dosyas\u0131n\u0131 ger\u00E7ekten silmek istiyor musunuz? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Dosyay\u0131 ger\u00E7ekten silmek istiyor musunuz? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Dosyay\u0131 sil + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=A\u015Fa\u011F\u0131daki dosyalar\u0131n yukar\u0131 y\u00FCklenmesi sonland\u0131r\u0131l\u0131yor\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=Yukar\u0131 y\u00FCklemeyi sonland\u0131r + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=Dosya ad\u0131 \u00F6nceden mevcut + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=Yukar\u0131 y\u00FCkle\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Yukar\u0131 y\u00FCkleme ba\u015Far\u0131s\u0131z oldu + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Dosya t\u00FCr\u00FC olanakl\u0131 de\u011Fil + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=\u0130ptal + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=TAMAM + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Ayarlar\u0131 g\u00F6r\u00FCnt\u00FCle +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=Filtreleri tan\u0131mla +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=S\u0131ralamay\u0131 tan\u0131mla +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=Gruplar\u0131 tan\u0131mla +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=S\u00FCtun \u00F6zelliklerini tan\u0131mla +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=TAMAM +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=\u0130ptal +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Geri al +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=S\u0131ralama +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=Filtre +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Gruplar +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Hesaplama +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=S\u00FCtunlar +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Uyar\u0131 +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=Baz\u0131 ko\u015Ful de\u011Ferleri eksik.\n Yaln\u0131z eksiksiz giri\u015Fler filtreye eklenecek. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=Birden fazla s\u00FCtun se\u00E7imi performas\u0131 negatif etkileyemez + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Dahil et + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Hari\u00E7 tut + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=Aras\u0131nda +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=e\u015Fit +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=\u015Eunu i\u00E7eriyor +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=Daha b\u00FCy\u00FCk +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=daha b\u00FCy\u00FCk veya e\u015Fit +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=Daha k\u00FC\u00E7\u00FCk +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=daha k\u00FC\u00E7\u00FC veya e\u015Fit +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=Ba\u015Flang\u0131\u00E7 durumunda +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\u015Fununla ba\u015Fl\u0131yor +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=\u015Eununla bitiyor +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=Artan d\u00FCzende +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Azalan d\u00FCzende +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=Artan d\u00FCzende +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Azalan d\u00FCzende +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=Toplam +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Ortalama +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=Asgari +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=Azami +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=Aras\u0131nda +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=e\u015Fit +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=\u015Fundan sonra +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=\u015Fu tarihte veya \u015Fundan sonra +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\u015Fundan \u00F6nce +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\u015Fundan \u00F6nce veya \u015Fu tarihte +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=Aras\u0131nda +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=e\u015Fit +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=Daha b\u00FCy\u00FCk +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=daha b\u00FCy\u00FCk veya e\u015Fit +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=Daha k\u00FC\u00E7\u00FCk +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=daha k\u00FC\u00E7\u00FC veya e\u015Fit + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=Ba\u015Flang\u0131\u00E7 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=Biti\u015F +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=De\u011Fer +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Alan\u0131 s\u00FCtun olarak g\u00F6r\u00FCnt\u00FCle +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Yeni sat\u0131r ekle +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Ge\u00E7erli de\u011Fer girin + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=T\u00FCm\u00FCn\u00FC g\u00F6r\u00FCnt\u00FCle +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Se\u00E7imi g\u00F6r\u00FCnt\u00FCle +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=T\u00FCm\u00FCn\u00FC se\u00E7 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=T\u00FCm\u00FCn\u00FC se\u00E7 ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Tamamen yukar\u0131ya +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Yukar\u0131 +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=A\u015Fa\u011F\u0131 +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Tamamen a\u015Fa\u011F\u0131ya + +#XFLD: Subtle link description label +LINK_SUBTLE=\u0130nce +#XFLD: Emphasized link description label +LINK_EMPHASIZED=Vurgulu + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=F5 ile g\u00FCncelle + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Giri\u015F yard\u0131m\u0131n\u0131 a\u00E7mak i\u00E7in F4'e bas\u0131n + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Sayfa altl\u0131\u011F\u0131 +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Ba\u015Fl\u0131k +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Ara ba\u015Fl\u0131k + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=Hata de\u011Fer durumu +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=Uyar\u0131 de\u011Fer durumu +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=Ba\u015Far\u0131 de\u011Fer durumu + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=Sonraki ad\u0131m +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=Pozitif +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=Kritik +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=Negatif + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} / {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=De\u011Ferleme + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Favori +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=G\u00F6sterge + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=Ba\u015Fl\u0131k oku se\u00E7 +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Sembol + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Uygun \u00F6\u011Fe bulunamad\u0131. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Filtre ayarlar\u0131n\u0131 kontrol edin + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} fazla + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Okunmad\u0131 +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Bloke + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=Kapat +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=T\u00FCm\u00FC +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Geriye +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\u0130letiler + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Pozitif i\u015Flem +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Negatif i\u015Flem +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=Vurguland\u0131 + +#XACT: ARIA text for position markers +CAROUSEL_POSITION={1} \u00F6\u011Feden {0} \u00F6\u011Fe g\u00F6r\u00FCnt\u00FCleniyor + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_uk.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_uk.properties new file mode 100644 index 0000000..683ed2c --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_uk.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\u041D\u0435\u043C\u0430\u0454 \u0434\u0430\u043D\u0438\u0445 + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=\u041D\u0435\u043F\u0440\u043E\u0447\u0438\u0442\u0430\u043D\u0435 + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=\u041C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u043E + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=\u041C\u0430\u0454 \u043F\u043E\u0434\u0440\u043E\u0431\u0438\u0446\u0456 + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\u0420\u0435\u0434\u0430\u0433\u043E\u0432\u043D\u0435 + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\u0410\u043A\u0442\u0438\u0432\u043D\u0435 + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0433\u0440\u0443\u043F\u0438 + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} \u0437 {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=\u041D\u0430\u0437\u0430\u0434 + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=\u0423\u0432. +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=\u0412\u0438\u043C + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=\u041F\u0440\u0438\u0439\u043D\u044F\u0442\u0438 + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=\u0412\u0456\u0434\u0445\u0438\u043B\u0438\u0442\u0438 + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=\u0411\u0456\u043B\u044C\u0448\u0435 + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=\u0421\u043A\u0430\u0441. + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=\u041C\u0456\u0441\u044F\u0446\u044C + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=\u0414\u0435\u043D\u044C + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u0420\u0456\u043A + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=\u0413\u043E\u0434\u0438\u043D\u0438 + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=\u0425\u0432\u0438\u043B\u0438\u043D\u0438 + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=\u0421\u0435\u043A\u0443\u043D\u0434\u0438 + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=\u0417\u0430\u0440\u0430\u0437 + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=\u041D\u0430\u0432\u0456\u0433\u0430\u0446\u0456\u044F + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=\u0422\u0430\u043A + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=\u041D\u0456 + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\u041F\u0435\u0440\u0435\u0440\u0432\u0430\u0442\u0438 + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=\u0406\u0433\u043D\u043E\u0440\u0443\u0432\u0430\u0442\u0438 + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\u0417\u0430\u043A\u0440\u0438\u0442\u0438 + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=\u041F\u043E\u043F\u0435\u0440\u0435\u0434\u0436\u0435\u043D\u043D\u044F + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043D\u043D\u044F + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043F\u043E\u0434\u0440\u043E\u0431\u0438\u0446\u0456 + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0434\u043B\u044F \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044F + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=\u0420\u043E\u0437\u0431\u043B\u043E\u043A.\u0434\u043B\u044F \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044F + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=\u0417\u0430\u0447\u0435\u043A\u0430\u0439\u0442\u0435, \u0434\u0430\u043D\u0456 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0443\u044E\u0442\u044C\u0441\u044F + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=\u041E\u043D\u043E\u0432\u0438\u0442\u0438 + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=\u0412\u0438\u0445\u0456\u0434 + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u0456\u0437\u0430\u0446\u0456\u044E + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=\u0421\u0442\u043E\u0432\u043F\u0447\u0438\u043A\u0438 + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=\u0412\u0441\u0435 + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=\u041D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u0436\u043E\u0434\u043D\u0438\u0445 \u0441\u0442\u043E\u0432\u043F\u0447\u0438\u043A\u0456\u0432 + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=\u041F\u043E\u0434\u0430\u043D\u043D\u044F + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=\u0421\u043E\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=\u0413\u0440\u0443\u043F\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\u0412\u0456\u0434\u0444\u0456\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u043D\u043E \u0437\u0430\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=\u041D\u0456\u0447\u043E\u0433\u043E + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=\u0417\u0430 \u0437\u0440\u043E\u0441\u0442\u0430\u043D\u043D\u044F\u043C + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=\u0417\u0430 \u0441\u043F\u0430\u0434\u0430\u043D\u043D\u044F\u043C + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0432\u0441\u0456 \u0444\u0456\u043B\u044C\u0442\u0440\u0438 + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=\u0423\u0441\u0435 + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (\u0423\u0441\u0435) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=\u0428\u0443\u043A\u0430\u0442\u0438 + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=\u0412\u0456\u0434\u0444\u0456\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u043D\u043E \u0437\u0430 {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=\u0424\u0456\u043B\u044C\u0442\u0440\u0438 \u043D\u0435 \u0432\u0438\u0431\u0440\u0430\u043D\u043E + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\u0442\u0430 + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=\u0417\u0430\u0441\u0442\u043E\u0441\u043E\u0432\u0430\u043D\u043E \u0434\u0435\u043A\u0456\u043B\u044C\u043A\u0430 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432 + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} \u0431\u0456\u043B\u044C\u0448\u0435... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u0431\u0456\u043B\u044C\u0448\u0435 + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=\u0428\u0443\u043A\u0430\u0442\u0438 \u0434\u0430\u043B\u0456 \u043D\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0456 + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440 + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=\u041F\u043E\u0437\u0438\u0446\u0456\u0439 \u0432\u0438\u0431\u0440\u0430\u043D\u043E\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\u041E\u043F\u0443\u0431\u043B\u0456\u043A\u043E\u0432\u0430\u0442\u0438 \u0442\u0443\u0442 + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=\u041F\u043E\u0434\u0430\u0442\u0438 + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0443\u0441\u0456 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438 + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0441\u043F\u0438\u0441\u043E\u043A \u0430\u0441\u043F\u0435\u043A\u0442\u0456\u0432 + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=\u0414\u043E\u0434\u0430\u0442\u0438 \u0441\u043F\u0438\u0441\u043E\u043A \u0430\u0441\u043F\u0435\u043A\u0442\u0456\u0432 + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=\u0421\u043A\u0438\u043D\u0443\u0442\u0438 + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=\u041D\u0430\u0437\u0430\u0434 + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=\u0414\u0430\u043B\u0456 + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=\u0411\u0406\u041B\u042C\u0428\u0415 + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=\u041C\u0415\u041D\u0428\u0415 + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=\u0412\u043A\u043B\u0430\u0434\u0435\u043D\u043D\u044F ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u0412\u0438 \u0434\u0456\u0439\u0441\u043D\u043E \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0432\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0444\u0430\u0439\u043B {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\u0412\u0438 \u0434\u0456\u0439\u0441\u043D\u043E \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0432\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0444\u0430\u0439\u043B? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0444\u0430\u0439\u043B + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\u0412\u0438\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0445 \u0444\u0430\u0439\u043B\u0456\u0432 \u0431\u0443\u0434\u0435 \u043F\u0435\u0440\u0435\u0440\u0432\u0430\u043D\u043E\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=\u041F\u0440\u0438\u043F\u0438\u043D\u0438\u0442\u0438 \u0432\u0438\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=\u0406\u043C'\u044F \u0444\u0430\u0439\u043B\u0443 \u0432\u0436\u0435 \u0456\u0441\u043D\u0443\u0454 + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u0412\u0438\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044C \u0432\u0438\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=\u0422\u0438\u043F \u0444\u0430\u0439\u043B\u0443 \u043D\u0435 \u0434\u043E\u0437\u0432\u043E\u043B\u0435\u043D\u0438\u0439 + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=\u041F\u0435\u0440\u0435\u0433\u043B\u044F\u043D\u0443\u0442\u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=\u0412\u0438\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440\u0438 +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=\u0412\u0438\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=\u0412\u0438\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u0433\u0440\u0443\u043F\u0438 +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=\u0412\u0438\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 \u0441\u0442\u043E\u0432\u043F\u0447\u0438\u043A\u0456\u0432 +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=\u0412\u0456\u0434\u043D\u043E\u0432\u0438\u0442\u0438 +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=\u0421\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=\u0424\u0456\u043B\u044C\u0442\u0440\u0438 +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=\u0413\u0440\u0443\u043F\u0438 +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=\u041E\u0431\u0447\u0438\u0441\u043B\u0435\u043D\u043D\u044F +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=\u0421\u0442\u043E\u0432\u043F\u0447\u0438\u043A\u0438 +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=\u0417\u0430\u0441\u0442\u0435\u0440\u0435\u0436\u0435\u043D\u043D\u044F +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=\u0414\u0435\u044F\u043A\u0456 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443\u043C\u043E\u0432 \u0432\u0456\u0434\u0441\u0443\u0442\u043D\u0456.\n \u0414\u043E \u0444\u0456\u043B\u044C\u0442\u0440\u0443 \u0434\u043E\u0434\u0430\u044E\u0442\u044C\u0441\u044F \u043B\u0438\u0448\u0435 \u043F\u043E\u0432\u043D\u0456 \u0437\u0430\u043F\u0438\u0441\u0438. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=\u0412\u0438\u0431\u0456\u0440 \u0432\u0435\u043B\u0438\u043A\u043E\u0457 \u043A\u0456\u043B\u044C\u043A\u043E\u0441\u0442\u0456 \u0441\u0442\u043E\u0432\u043F\u0447\u0438\u043A\u0456\u0432 \u043C\u043E\u0436\u0435 \u0437\u043C\u0435\u043D\u0448\u0438\u0442\u0438 \u043F\u0440\u043E\u0434\u0443\u043A\u0442\u0438\u0432\u043D\u0456\u0441\u0442\u044C + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0438 + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=\u0412\u0438\u043A\u043B\u044E\u0447\u0438\u0442\u0438 + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=\u043C\u0456\u0436 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=\u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=\u043C\u0456\u0441\u0442\u0438\u0442\u044C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=\u0431\u0456\u043B\u044C\u0448\u0435 \u043D\u0456\u0436 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=\u0431\u0456\u043B\u044C\u0448\u0435 \u043D\u0456\u0436 \u0430\u0431\u043E \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=\u043C\u0435\u043D\u0448\u0435 \u043D\u0456\u0436 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=\u043C\u0435\u043D\u0448\u0435 \u043D\u0456\u0436 \u0430\u0431\u043E \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=\u043F\u043E\u0447\u0430\u0442\u043A\u043E\u0432\u0435 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\u043F\u043E\u0447\u0438\u043D\u0430\u0454\u0442\u044C\u0441\u044F \u043D\u0430 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=\u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0454\u0442\u044C\u0441\u044F \u043D\u0430 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=\u0417\u0430 \u0437\u0440\u043E\u0441\u0442\u0430\u043D\u043D\u044F\u043C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=\u0417\u0430 \u0441\u043F\u0430\u0434\u0430\u043D\u043D\u044F\u043C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=\u0417\u0430 \u0437\u0440\u043E\u0441\u0442\u0430\u043D\u043D\u044F\u043C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=\u0417\u0430 \u0441\u043F\u0430\u0434\u0430\u043D\u043D\u044F\u043C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=\u0417\u0430\u0433\u0430\u043B\u044C\u043D\u0435 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\u0421\u0435\u0440\u0435\u0434\u043D\u0454 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=\u041C\u0456\u043D\u0456\u043C\u0443\u043C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=\u041C\u0430\u043A\u0441\u0438\u043C\u0443\u043C +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=\u043C\u0456\u0436 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=\u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=\u043F\u0456\u0441\u043B\u044F +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=\u043D\u0430 \u0430\u0431\u043E \u043F\u0456\u0441\u043B\u044F +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\u043F\u0435\u0440\u0435\u0434 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\u043F\u0435\u0440\u0435\u0434 \u0430\u0431\u043E \u043D\u0430 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=\u043C\u0456\u0436 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=\u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=\u0431\u0456\u043B\u044C\u0448\u0435 \u043D\u0456\u0436 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=\u0431\u0456\u043B\u044C\u0448\u0435 \u043D\u0456\u0436 \u0430\u0431\u043E \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=\u043C\u0435\u043D\u0448\u0435 \u043D\u0456\u0436 +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=\u043C\u0435\u043D\u0448\u0435 \u043D\u0456\u0436 \u0430\u0431\u043E \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454 + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=\u0437 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=\u0434\u043E +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=\u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043F\u043E\u043B\u044F \u044F\u043A \u0441\u0442\u043E\u0432\u043F\u0447\u0438\u043A +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0440\u044F\u0434\u043E\u043A +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=\u0412\u0435\u0434\u0456\u0442\u044C \u0434\u0456\u0439\u0441\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432\u0441\u0435 +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0435 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\u0412\u0438\u0434\u0456\u043B\u0438\u0442\u0438 \u0432\u0441\u0435 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=\u0412\u0438\u0434\u0456\u043B\u0438\u0442\u0438 \u0432\u0441\u0435 ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u043D\u0430\u0432\u0435\u0440\u0445 +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u0432\u0435\u0440\u0445 +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u043D\u0438\u0437 +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u043D\u0438\u0437 + +#XFLD: Subtle link description label +LINK_SUBTLE=\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u043D\u0438\u0439 +#XFLD: Emphasized link description label +LINK_EMPHASIZED=\u041F\u0456\u0434\u043A\u0440\u0435\u0441\u043B\u0435\u043D\u0438\u0439 + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C F5 \u0434\u043B\u044F \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044F + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C F4, \u0449\u043E\u0431 \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0434\u0456\u0430\u043B\u043E\u0433 \u0434\u043E\u0432\u0456\u0434\u043A\u0438 \u0432\u0432\u0435\u0434\u0435\u043D\u043D\u044F + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=\u041D\u0438\u0436\u043D\u0456\u0439 \u043A\u043E\u043B\u043E\u043D\u0442\u0438\u0442\u0443\u043B +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=\u041F\u0456\u0434\u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\u041E\u0446\u0456\u043D\u0438\u0442\u0438 \u0441\u0442\u0430\u043D \u043F\u043E\u043C\u0438\u043B\u043A\u0438 +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\u041E\u0446\u0456\u043D\u0438\u0442\u0438 \u0441\u0442\u0430\u043D \u043F\u043E\u043F\u0435\u0440\u0435\u0434\u0436\u0435\u043D\u043D\u044F +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\u041E\u0446\u0456\u043D\u0438\u0442\u0438 \u0441\u0442\u0430\u043D '\u0423\u0441\u043F\u0456\u0448\u043D\u043E' + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=\u041D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439 \u043A\u0440\u043E\u043A +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=\u041F\u043E\u0437\u0438\u0442\u0438\u0432\u043D\u043E +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=\u041A\u0440\u0438\u0442\u0438\u0447\u043D\u043E +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=\u041D\u0435\u0433\u0430\u0442\u0438\u0432\u043D\u043E + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} \u0437 {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u0420\u0435\u0439\u0442\u0438\u043D\u0433 + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=\u041E\u0431\u0440\u0430\u043D\u0435 +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=\u041F\u0440\u0430\u043F\u043E\u0440\u0435\u0446\u044C + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=\u0421\u0442\u0440\u0456\u043B\u043A\u0430 \u0432\u0438\u0431\u043E\u0440\u0443 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=\u041F\u0456\u043A\u0442\u043E\u0433\u0440\u0430\u043C\u0430 + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=\u041B\u043E\u0433\u043E\u0442\u0438\u043F + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\u041F\u043E\u0437\u0438\u0446\u0456\u0457, \u0449\u043E \u0437\u0431\u0456\u0433\u0430\u044E\u0442\u044C\u0441\u044F, \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u0456. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=\u041F\u0435\u0440\u0435\u0432\u0456\u0440\u0438\u0442\u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0444\u0456\u043B\u044C\u0442\u0440\u0430 + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} \u0411\u0456\u043B\u044C\u0448\u0435 + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=\u041D\u0435\u043F\u0440\u043E\u0447\u0438\u0442\u0430\u043D\u0435 +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=\u0417\u0430\u0431\u043B\u043E\u043A\u043E\u0432\u0430\u043D\u043E + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\u0417\u0430\u043A\u0440\u0438\u0442\u0438 +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=\u0412\u0441\u0435 +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=\u041D\u0430\u0437\u0430\u0434 +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\u041F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u043D\u044F + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=\u041F\u043E\u0437\u0438\u0442\u0438\u0432\u043D\u0430 \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u044F +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=\u041D\u0435\u0433\u0430\u0442\u0438\u0432\u043D\u0430 \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u044F +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=\u041F\u0456\u0434\u043A\u0440\u0435\u0441\u043B\u0435\u043D\u0438\u0439 + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=\u041F\u043E\u0437\u0438\u0446\u0456\u044F {0} \u0437 {1} \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0430 + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_vi.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_vi.properties new file mode 100644 index 0000000..223d745 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_vi.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=Kh\u00F4ng co\u0301 d\u01B0\u0303 li\u00EA\u0323u + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=Kh\u00F4ng \u0111\u01B0\u01A1\u0323c \u0111o\u0323c + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=Co\u0301 th\u00EA\u0309 xo\u0301a + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=Co\u0301 chi ti\u00EA\u0301t + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=Co\u0301 th\u00EA\u0309 hi\u00EA\u0323u chi\u0309nh + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=Hoa\u0323t \u0111\u00F4\u0323ng + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=Ti\u00EAu \u0111\u00EA\u0300 nho\u0301m + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} cu\u0309a {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=Tr\u01A1\u0309 la\u0323i + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=B. +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=T. + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=Ch\u00E2\u0301p nh\u00E2\u0323n + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=T\u01B0\u0300 ch\u00F4\u0301i + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=Hu\u0309y + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=Hu\u0309y + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=Th\u00EAm + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=OK + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=Hu\u0309y + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=Tha\u0301ng + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=Nga\u0300y + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=N\u0103m + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=Gi\u01A1\u0300 + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=Phu\u0301t + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=Gi\u00E2y + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=B.gi\u01A1\u0300 + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=\u0110i\u00EA\u0300u h\u01B0\u01A1\u0301ng + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=OK + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=Hu\u0309y + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=Co\u0301 + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=Kh\u00F4ng + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=Hu\u0309y bo\u0309 + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=Th\u01B0\u0309 la\u0323i + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=Bo\u0309 qua + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\u0110o\u0301ng + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=Xo\u0301a + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=Ca\u0309nh ba\u0301o + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=Xa\u0301c nh\u00E2\u0323n + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=Hi\u1EC3n th\u1ECB chi ti\u1EBFt + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=Ke\u0301o xu\u00F4\u0301ng \u0111\u00EA\u0309 la\u0300m t\u01B0\u01A1i + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=Xu\u00E2\u0301t \u0111\u00EA\u0309 la\u0300m t\u01B0\u01A1i + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u0110ang ta\u0309i... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=Vlo\u0300ng \u0111\u01A1\u0323i, d.li\u00EA\u0323u \u0111ang ta\u0309i + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=La\u0300m t\u01B0\u01A1i + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=\u0110\u0103ng xu\u00E2\u0301t + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=OK + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=Hu\u0309y + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=Hu\u0309y bo\u0309 thao ta\u0301c ca\u0301 nh\u00E2n ho\u0301a + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=C\u00F4\u0323t + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=T\u00E2\u0301t ca\u0309 + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=Kh\u00F4ng t\u00ECm th\u1EA5y c\u1ED9t + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=Ma\u0300n hi\u0300nh + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=S\u0103\u0301p x\u00EA\u0301p theo + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=Gom nho\u0301m b\u01A1\u0309i + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=Lo\u0323c b\u01A1\u0309i + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=Lo\u0323c theo\: + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\u0110\u01B0\u01A1\u0323c lo\u0323c theo\: + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=OK + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=Hu\u0309y + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=Kh\u00F4ng co\u0301 + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=T\u0103ng d\u00E2\u0300n + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=Gia\u0309m d\u00E2\u0300n + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=Xo\u0301a t\u00E2\u0301t ca\u0309 b\u00F4\u0323 lo\u0323c + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=T\u00E2\u0301t ca\u0309 + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (T\u00E2\u0301t ca\u0309) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=Ti\u0300m ki\u00EA\u0301m + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=Lo\u0323c + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=OK + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=\u0110\u01B0\u01A1\u0323c lo\u0323c theo {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=Kh\u00F4ng co\u0301 b\u00F4\u0323 lo\u0323c na\u0300o \u0111\u01B0\u01A1\u0323c l\u01B0\u0323a cho\u0323n + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=va\u0300 + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=M\u00F4\u0323t s\u00F4\u0301 b\u00F4\u0323 lo\u0323c \u0111\u01B0\u01A1\u0323c a\u0301p du\u0323ng + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} th\u00EAm n\u01B0\u0303a... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} co\u0301 s\u0103\u0303n th\u00EAm + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=Ti\u0300m ki\u00EA\u0301m th\u00EAm tr\u00EAn ma\u0301y chu\u0309 + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=Loa\u0323i bo\u0309 b\u00F4\u0323 lo\u0323c + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=Mu\u0323c nh\u00E2\u0323p \u0111a\u0303 l\u01B0\u0323a cho\u0323n\: {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\u0110\u0103ng ca\u0301i gi\u0300 \u0111o\u0301 \u01A1\u0309 \u0111\u00E2y + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=G\u01B0\u0309i + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=Hi\u1EC3n th\u1ECB t\u1EA5t c\u1EA3 m\u1EE5c + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=Lo\u1EA1i b\u1ECF danh s\u00E1ch kh\u00EDa c\u1EA1nh + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=B\u1ED5 sung danh s\u00E1ch kh\u00EDa c\u1EA1nh + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=Th.l l\u1EA1i + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=Tr\u01B0\u01A1\u0301c + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=K\u00EA\u0301 ti\u1EBFp + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=NHI\u00CA\u0300U H\u01A0N + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=\u00CDT H\u01A0N + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=Ph\u00E2\u0300n \u0111i\u0301nh ke\u0300m ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=Ba\u0323n co\u0301 ch\u0103\u0301c mu\u00F4\u0301n xo\u0301a t\u00E2\u0323p tin kh\u00F4ng {0}? + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=Ba\u0323n co\u0301 ch\u0103\u0301c la\u0300 ba\u0323n mu\u00F4\u0301n xo\u0301a t\u00E2\u0323p tin na\u0300y kh\u00F4ng? + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=Xo\u0301a t\u00E2\u0323p tin + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=Ta\u0309i l\u00EAn ca\u0301c t\u00E2\u0323p tin sau \u0111\u00E2y se\u0303 \u0111\u01B0\u01A1\u0323c k\u00EA\u0301t thu\u0301c\: + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=K\u1EBFt th\u00FAc t\u1EA3i l\u00EAn + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=T\u00EAn t\u00E2\u0323p tin \u0111a\u0303 t\u00F4\u0300n ta\u0323i r\u00F4\u0300i + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u0110ang ta\u0309i l\u00EAn\: {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=Kh\u00F4ng th\u1EC3 t\u1EA3i l\u00EAn + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=Kh\u00F4ng ch\u1EA5p nh\u1EADn ki\u1EC3u t\u1EADp tin + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=Hu\u0309y + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=OK + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=Thi\u1EBFt l\u1EADp m\u00E0n h\u00ECnh +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=X\u00E1c \u0111\u1ECBnh b\u00F4\u0323 lo\u0323c +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=X\u00E1c \u0111\u1ECBnh s\u1EAFp x\u1EBFp +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=X\u00E1c \u0111\u1ECBnh nh\u00F3m +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=X\u00E1c \u0111\u1ECBnh thu\u00F4\u0323c ti\u0301nh c\u1ED9t +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=OK +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=Hu\u0309y +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=Phu\u0323c h\u00F4\u0300i +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=S\u0103\u0301p x\u00EA\u0301p +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=B\u00F4\u0323 lo\u0323c +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=Nho\u0301m +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=Ti\u0301nh toa\u0301n +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=C\u00F4\u0323t +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=Ca\u0309nh ba\u0301o +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=M\u00F4\u0323t s\u00F4\u0301 gia\u0301 tri\u0323 \u0111i\u00EA\u0300u ki\u00EA\u0323n bi\u0323 thi\u00EA\u0301u.\n Chi\u0309 ca\u0301c mu\u0323c nh\u00E2\u0323p hoa\u0300n t\u00E2\u0301t se\u0303 \u0111\u01B0\u01A1\u0323c th\u00EAm va\u0300o b\u00F4\u0323 lo\u0323c. +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=L\u01B0\u0323a cho\u0323n s\u00F4\u0301 c\u00F4\u0323t l\u01A1\u0301n co\u0301 th\u00EA\u0309 la\u0300m ch\u00E2\u0323m hi\u00EA\u0323u su\u00E2\u0301t + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=Bao g\u1ED3m + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=Lo\u1EA1i tr\u1EEB + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=gi\u1EEFa +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=b\u1EB1ng v\u1EDBi +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=ch\u1EE9a +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=l\u1EDBn h\u01A1n +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=l\u1EDBn h\u01A1n ho\u1EB7c b\u1EB1ng +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=nh\u1ECF h\u01A1n +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=nh\u1ECF h\u01A1n ho\u1EB7c b\u1EB1ng +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=ban \u0111\u1EA7u +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=b\u1EAFt \u0111\u1EA7u v\u1EDBi +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=k\u1EBFt th\u00FAc v\u1EDBi +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=T\u0103ng d\u00E2\u0300n +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=Gia\u0309m d\u00E2\u0300n +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=T\u0103ng d\u00E2\u0300n +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=Gia\u0309m d\u00E2\u0300n +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=T\u00F4\u0309ng c\u00F4\u0323ng +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=Trung b\u00ECnh +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=T\u1ED1i thi\u1EC3u +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=T\u1ED1i \u0111a +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=gi\u1EEFa +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=b\u1EB1ng v\u1EDBi +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=sau khi +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=v\u00E0o l\u00FAc ho\u1EB7c sau khi +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=tr\u01B0\u1EDBc khi +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=tr\u01B0\u1EDBc khi ho\u1EB7c v\u00E0o l\u00FAc +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=gi\u1EEFa +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=b\u1EB1ng v\u1EDBi +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=l\u1EDBn h\u01A1n +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=l\u1EDBn h\u01A1n ho\u1EB7c b\u1EB1ng +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=nh\u1ECF h\u01A1n +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=nh\u1ECF h\u01A1n ho\u1EB7c b\u1EB1ng + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=t\u01B0\u0300 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=\u0111\u1EBFn +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=Gia\u0301 tri\u0323 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=Hi\u1EC3n th\u1ECB tr\u01B0\u1EDDng d\u01B0\u1EDBi d\u1EA1ng c\u1ED9t +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=Th\u00EAm do\u0300ng m\u01A1\u0301i +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=Nh\u00E2\u0323p gia\u0301 tri\u0323 h\u01A1\u0323p l\u00EA\u0323 + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=Hi\u1EC3n th\u1ECB t\u1EA5t c\u1EA3 +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=Hi\u1EC3n th\u1ECB \u0111\u01B0\u1EE3c ch\u1ECDn +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=Cho\u0323n t\u00E2\u0301t ca\u0309 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=Cho\u0323n t\u00E2\u0301t ca\u0309 ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=Di chuy\u00EA\u0309n l\u00EAn tr\u00EAn cu\u0300ng +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=Di chuy\u00EA\u0309n l\u00EAn +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=Di chuy\u00EA\u0309n xu\u00F4\u0301ng +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=Di chuy\u00EA\u0309n xu\u00F4\u0301ng d\u01B0\u01A1\u0301i cu\u0300ng + +#XFLD: Subtle link description label +LINK_SUBTLE=Tinh t\u00EA\u0301 +#XFLD: Emphasized link description label +LINK_EMPHASIZED=\u0110\u01B0\u01A1\u0323c nh\u00E2\u0301n ma\u0323nh + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=Nh\u00E2\u0301n F5 \u0111\u00EA\u0309 la\u0300m m\u01A1\u0301i + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=Nh\u00E2\u0301n F4 \u0111\u00EA\u0309 m\u01A1\u0309 h\u00F4\u0323p thoa\u0323i tr\u01A1\u0323 giu\u0301p gia\u0301 tri\u0323 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=Ch\u00E2n trang +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=Ti\u00EAu \u0111\u00EA\u0300 +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=Ti\u00EAu \u0111\u00EA\u0300 phu\u0323 + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\u0110a\u0301nh gia\u0301 ti\u0300nh tra\u0323ng l\u00F4\u0303i +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\u0110a\u0301nh gia\u0301 ti\u0300nh tra\u0323ng ca\u0309nh ba\u0301o +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\u0110a\u0301nh gia\u0301 ti\u0300nh tra\u0323ng tha\u0300nh c\u00F4ng + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=B\u01B0\u01A1\u0301c k\u00EA\u0301 ti\u00EA\u0301p +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=D\u01B0\u01A1ng +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=T\u01A1\u0301i ha\u0323n +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=\u00C2m + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} cu\u0309a {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u0110a\u0301nh gia\u0301 + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=Mu\u0323c \u01B0a thi\u0301ch +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=C\u01A1\u0300 + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=L\u01B0\u0323a cho\u0323n mu\u0303i t\u00EAn ti\u00EAu \u0111\u00EA\u0300 +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=Bi\u00EA\u0309u t\u01B0\u01A1\u0323ng + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=Logo + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=Kh\u00F4ng ti\u0300m th\u00E2\u0301y mu\u0323c phu\u0300 h\u01A1\u0323p. +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=Ki\u00EA\u0309m tra thi\u00EA\u0301t l\u00E2\u0323p lo\u0323c + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} Nhi\u00EA\u0300u h\u01A1n + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=Kh\u00F4ng \u0111\u01B0\u01A1\u0323c \u0111o\u0323c +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=Bi\u0323 kho\u0301a + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\u0110o\u0301ng +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=T\u00E2\u0301t ca\u0309 +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=Tr\u01A1\u0309 la\u0323i +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=Th\u00F4ng ba\u0301o + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=Ha\u0300nh \u0111\u00F4\u0323ng ti\u0301ch c\u01B0\u0323c +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=Ha\u0300nh \u0111\u00F4\u0323ng ti\u00EAu c\u01B0\u0323c +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=\u0110\u01B0\u01A1\u0323c nh\u00E2\u0301n ma\u0323nh + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=Mu\u0323c {0} cu\u0309a {1} \u0111\u01B0\u01A1\u0323c hi\u00EA\u0309n thi\u0323 + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_zh_CN.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_zh_CN.properties new file mode 100644 index 0000000..9d44eca --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_zh_CN.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\u65E0\u6570\u636E + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=\u672A\u8BFB + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=\u53EF\u5220\u9664 + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=\u6709\u8BE6\u7EC6\u4FE1\u606F + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\u53EF\u7F16\u8F91 + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\u5904\u4E8E\u6D3B\u52A8\u72B6\u6001 + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=\u7EC4\u62AC\u5934 + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} / {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=\u540E\u9000 + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=\u5F00 +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=\u5173 + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=\u63A5\u53D7 + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=\u62D2\u7EDD + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=\u53D6\u6D88 + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=\u53D6\u6D88 + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=\u66F4\u591A + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=\u786E\u5B9A + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=\u53D6\u6D88 + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=\u6708 + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=\u65E5 + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u5E74 + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=\u5C0F\u65F6 + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=\u5206 + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=\u79D2 + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=\u73B0\u5728 + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=\u5BFC\u822A + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=\u786E\u5B9A + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=\u53D6\u6D88 + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=\u662F + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=\u5426 + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\u4E2D\u6B62 + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=\u91CD\u8BD5 + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=\u5FFD\u7565 + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\u5173\u95ED + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=\u5220\u9664 + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=\u8B66\u62A5 + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=\u786E\u8BA4 + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=\u663E\u793A\u8BE6\u7EC6\u4FE1\u606F + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=\u4E0B\u62C9\u4EE5\u5237\u65B0 + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=\u91CA\u653E\u4EE5\u5237\u65B0 + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u6B63\u5728\u52A0\u8F7D... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=\u8BF7\u7A0D\u5019\uFF0C\u6B63\u5728\u52A0\u8F7D\u6570\u636E + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=\u5237\u65B0 + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=\u6CE8\u9500 + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=\u786E\u5B9A + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=\u53D6\u6D88 + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=\u64A4\u6D88\u4E2A\u6027\u5316\u8BBE\u7F6E + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=\u5217 + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=\u5168\u90E8 + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=\u672A\u627E\u5230\u5217 + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=\u89C6\u56FE + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=\u6392\u5E8F\u65B9\u5F0F + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=\u5206\u7EC4\u4F9D\u636E + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=\u8FC7\u6EE4\u6761\u4EF6 + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=\u8FC7\u6EE4\u6761\u4EF6\uFF1A + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\u5DF2\u6309\u6B64\u8FC7\u6EE4\uFF1A + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=\u786E\u5B9A + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=\u53D6\u6D88 + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=\u65E0 + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=\u5347\u5E8F + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=\u964D\u5E8F + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\u6E05\u9664\u6240\u6709\u8FC7\u6EE4\u5668 + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=\u5168\u90E8 + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0}\uFF08\u5168\u90E8\uFF09 + +#XFLD: Search field prompt +FACETFILTER_SEARCH=\u641C\u7D22 + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=\u8FC7\u6EE4\u5668 + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=\u786E\u5B9A + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=\u5DF2\u6309 {0} ({1}) \u8FC7\u6EE4 + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=\u672A\u9009\u62E9\u8FC7\u6EE4\u5668 + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\u4E0E + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=\u5DF2\u5E94\u7528\u6570\u4E2A\u8FC7\u6EE4\u5668 + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} \u4EE5\u4E0A... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} \u4EE5\u4E0A\u53EF\u7528 + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=\u5728\u670D\u52A1\u5668\u4E0A\u8FDB\u4E00\u6B65\u641C\u7D22 + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=\u79FB\u9664\u8FC7\u6EE4\u5668 + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=\u9009\u5B9A\u7684\u9879\u76EE\uFF1A {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\u5728\u6B64\u53D1\u5E03\u67D0\u4E8B + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=\u63D0\u4EA4 + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=\u663E\u793A\u6240\u6709\u9879\u76EE + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=\u79FB\u9664\u6784\u9762\u5217\u8868 + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=\u6DFB\u52A0\u6784\u9762\u5217\u8868 + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=\u91CD\u7F6E + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=\u4E0A\u4E00\u4E2A + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=\u4E0B\u4E00\u4E2A + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=\u66F4\u591A + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=\u66F4\u5C11 + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=\u9644\u4EF6 ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u662F\u5426\u786E\u5B9A\u8981\u5220\u9664\u6587\u4EF6 {0}\uFF1F + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\u662F\u5426\u786E\u5B9A\u8981\u5220\u9664\u8BE5\u6587\u4EF6\uFF1F + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=\u5220\u9664\u6587\u4EF6 + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\u5C06\u4F1A\u7EC8\u6B62\u4EE5\u4E0B\u6587\u4EF6\u7684\u4E0A\u8F7D\uFF1A + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=\u7EC8\u6B62\u4E0A\u8F7D + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=\u6587\u4EF6\u540D\u5DF2\u5B58\u5728 + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u6B63\u5728\u4E0A\u8F7D\uFF1A {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\u4E0A\u8F7D\u5931\u8D25 + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=\u6587\u4EF6\u7C7B\u578B\u4E0D\u5141\u8BB8\u4F7F\u7528 + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=\u53D6\u6D88 + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=\u786E\u5B9A + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=\u89C6\u56FE\u8BBE\u7F6E +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=\u5B9A\u4E49\u8FC7\u6EE4\u5668 +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=\u5B9A\u4E49\u6392\u5E8F +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=\u5B9A\u4E49\u7EC4 +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=\u5B9A\u4E49\u5217\u5C5E\u6027 +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=\u786E\u5B9A +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=\u53D6\u6D88 +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=\u6062\u590D +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=\u6392\u5E8F +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=\u8FC7\u6EE4\u5668 +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=\u7EC4 +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=\u8BA1\u7B97 +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=\u5217 +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=\u8B66\u544A +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=\u7F3A\u5C11\u4E00\u4E9B\u6761\u4EF6\u503C\u3002\n \u4EC5\u4F1A\u5C06\u5B8C\u6574\u6761\u76EE\u6DFB\u52A0\u5230\u8FC7\u6EE4\u5668\u3002 +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=\u9009\u62E9\u592A\u591A\u7684\u5217\u53EF\u80FD\u4F1A\u964D\u4F4E\u6027\u80FD + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=\u5305\u62EC + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=\u6392\u9664 + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=\u4ECB\u4E8E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=\u7B49\u4E8E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=\u5305\u542B +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=\u5927\u4E8E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=\u5927\u4E8E\u6216\u7B49\u4E8E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=\u5C0F\u4E8E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=\u5C0F\u4E8E\u6216\u7B49\u4E8E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=\u521D\u59CB +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\u5F00\u59CB\u4E8E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=\u7ED3\u675F\u4E8E +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=\u5347\u5E8F +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=\u964D\u5E8F +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=\u5347\u5E8F +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=\u964D\u5E8F +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=\u603B\u8BA1 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\u5E73\u5747\u503C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=\u6700\u5C0F\u503C +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=\u6700\u5927\u503C +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=\u4ECB\u4E8E +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=\u7B49\u4E8E +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=\u4E4B\u540E +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=\u5904\u4E8E\u6216\u4E4B\u540E +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\u4E4B\u524D +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\u4E4B\u524D\u6216\u5904\u4E8E +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=\u4ECB\u4E8E +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=\u7B49\u4E8E +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=\u5927\u4E8E +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=\u5927\u4E8E\u6216\u7B49\u4E8E +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=\u5C0F\u4E8E +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=\u5C0F\u4E8E\u6216\u7B49\u4E8E + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=\u81EA +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=\u81F3 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=\u503C +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=\u5B57\u6BB5\u663E\u793A\u4E3A\u5217 +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\u6DFB\u52A0\u65B0\u884C +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=\u8F93\u5165\u6709\u6548\u503C + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=\u5168\u90E8\u663E\u793A +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=\u663E\u793A\u5DF2\u9009\u9879 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\u5168\u9009 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=\u5168\u9009 ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=\u79FB\u52A8\u5230\u9876\u90E8 +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=\u4E0A\u79FB +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=\u4E0B\u79FB +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=\u79FB\u52A8\u5230\u5E95\u90E8 + +#XFLD: Subtle link description label +LINK_SUBTLE=\u9690\u853D +#XFLD: Emphasized link description label +LINK_EMPHASIZED=\u52A0\u91CD + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=\u6309 F5 \u5237\u65B0 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=\u6309 F4 \u6253\u5F00\u503C\u5E2E\u52A9\u5BF9\u8BDD\u6846 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=\u9875\u811A +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=\u9875\u7709 +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=\u5B50\u9875\u7709 + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\u503C\u72B6\u6001\u9519\u8BEF +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\u503C\u72B6\u6001\u8B66\u544A +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\u503C\u72B6\u6001\u6210\u529F + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=\u4E0B\u4E00\u6B65 +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=\u80AF\u5B9A +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=\u7D27\u6025 +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=\u5426\u5B9A + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} / {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u8BC4\u7EA7 + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=\u6536\u85CF\u5939 +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=\u6807\u5FD7 + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=\u9009\u62E9\u6807\u9898\u7BAD\u5934 +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=\u56FE\u6807 + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=\u5FBD\u6807 + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\u672A\u627E\u5230\u5339\u914D\u9879\u76EE +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=\u68C0\u67E5\u8FC7\u6EE4\u5668\u8BBE\u7F6E + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS={0} \u4EE5\u4E0A + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=\u672A\u8BFB +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=\u5DF2\u9501\u5B9A + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\u5173\u95ED +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=\u5168\u90E8 +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=\u540E\u9000 +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\u6D88\u606F + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=\u80AF\u5B9A\u64CD\u4F5C +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=\u5426\u5B9A\u64CD\u4F5C +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=\u52A0\u91CD + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=\u663E\u793A\u9879\u76EE {0}\uFF0C\u5171 {1} \u4E2A + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_zh_TW.properties b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_zh_TW.properties new file mode 100644 index 0000000..186ef71 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/messagebundle_zh_TW.properties @@ -0,0 +1,518 @@ + +#XBLI: List text for no data lists +LIST_NO_DATA=\u7121\u8CC7\u6599 + +#XACT: ARIA keyboard announcement for the unread state of the list items +LIST_ITEM_UNREAD=\u672A\u8B80\u53D6 + +#XACT: ARIA keyboard announcement for the deletable list items +LIST_ITEM_DELETABLE=\u53EF\u522A\u9664 + +#XACT: ARIA keyboard announcement for the navigable list items +LIST_ITEM_NAVIGATION=\u6709\u660E\u7D30 + +#XACT: ARIA keyboard announcement for the list item details with edit option +LIST_ITEM_DETAIL=\u53EF\u7DE8\u8F2F + +#XACT: ARIA keyboard announcement for the active clickable list items +LIST_ITEM_ACTIVE=\u555F\u7528\u4E2D + +#XACT: ARIA keyboard announcement for the group header list items +LIST_ITEM_GROUP_HEADER=\u7FA4\u7D44\u8868\u982D + +#XACT: ARIA keyboard announcement for the position of the list items in an entire list +LIST_ITEM_POSITION={0} / {1} + +#XBUT: Button text for back button on page +PAGE_NAVBUTTON_TEXT=\u9000\u56DE + +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_ON=\u958B +#XBUT,3: A switch is a user interface control on mobile devices that is used for change between binary states +SWITCH_OFF=\u95DC + +#XACT: ARIA keyboard announcement for the accept state in the Switch control +SWITCH_ARIA_ACCEPT=\u63A5\u53D7 + +#XACT: ARIA keyboard announcement for the reject state in the Switch control +SWITCH_ARIA_REJECT=\u62D2\u7D55 + +#XBUT: Button text for cancel button in the action sheet +ACTIONSHEET_CANCELBUTTON_TEXT=\u53D6\u6D88 + +#XBUT: Button text for cancel button in the busy dialog +BUSYDIALOG_CANCELBUTTON_TEXT=\u53D6\u6D88 + +#XBUT: Text for growing list - pull button to load more data +LOAD_MORE_DATA=\u66F4\u591A + +#XBUT,8: Date Selection text for Date&Time Picker of MobiScroll +MOBISCROLL_SET=\u78BA\u5B9A + +#XBUT,8: Cancel/Close button of MobiScroll Date&Time Picker +MOBISCROLL_CANCEL=\u53D6\u6D88 + +#XBUT: MobiScroll Date&Time Picker Month Header +MOBISCROLL_MONTH=\u6708 + +#XBUT: MobiScroll Date&Time Picker Day Header +MOBISCROLL_DAY=\u65E5 + +#XBUT: MobiScroll Date&Time Picker Year Header +MOBISCROLL_YEAR=\u5E74\u5EA6 + +#XBUT: MobiScroll Date&Time Picker Hours Header +MOBISCROLL_HOURS=\u5C0F\u6642 + +#XBUT: MobiScroll Date&Time Picker Minutes Header +MOBISCROLL_MINUTES=\u5206\u9418 + +#XBUT: MobiScroll Date&Time Picker Seconds Header +MOBISCROLL_SECONDS=\u79D2 + +#XBUT,6: Show Now button of MobiScroll Date&Time Picker +MOBISCROLL_NOW=\u73FE\u5728 + +#XBUT: The navigation button text in master area in SplitContainer +SPLITCONTAINER_NAVBUTTON_TEXT=\u700F\u89BD + +#XBUT: MessageBox predefined text for OK action +MSGBOX_OK=\u78BA\u5B9A + +#XBUT: MessageBox predefined text for CANCEL action +MSGBOX_CANCEL=\u53D6\u6D88 + +#XBUT: MessageBox predefined text for YES action +MSGBOX_YES=\u662F + +#XBUT: MessageBox predefined text for No action +MSGBOX_NO=\u5426 + +#XBUT: MessageBox predefined text for ABORT action +MSGBOX_ABORT=\u53D6\u6D88 + +#XBUT: MessageBox predefined text for RETRY action +MSGBOX_RETRY=\u91CD\u8A66 + +#XBUT: MessageBox predefined text for IGNORE action +MSGBOX_IGNORE=\u5FFD\u7565 + +#XBUT: MessageBox predefined text for CLOSE action +MSGBOX_CLOSE=\u95DC\u9589 + +#XBUT: MessageBox predefined text for DELETE action +MSGBOX_DELETE=\u522A\u9664 + +#XTIT: MessageBox predefined text for title of alert dialog +MSGBOX_TITLE_ALERT=\u8B66\u793A + +#XTIT: MessageBox predefined text for title of confirm dialog +MSGBOX_TITLE_CONFIRM=\u78BA\u8A8D + +#XLNK: MessageBox textLink +MSGBOX_LINK_TITLE=\u986F\u793A\u660E\u7D30 + +#YINS,30: Pull down to refresh text in the hidden area of a scrolled area +PULL2REFRESH_PULLDOWN=\u4E0B\u62C9\u4EE5\u91CD\u65B0\u6574\u7406 + +#YINS,30: Release dragged list to start update request +PULL2REFRESH_RELEASE=\u653E\u958B\u4EE5\u91CD\u65B0\u6574\u7406 + +#YMSG,25: Refresh request is in process, short text, displayed on all platforms +PULL2REFRESH_LOADING=\u8F09\u5165\u4E2D... + +#YMSG,32: Refresh request is in process, longer text, displayed smaller and only on certain platforms +PULL2REFRESH_LOADING_LONG=\u8ACB\u7A0D\u5019\uFF0C\u6B63\u5728\u8F09\u5165\u8CC7\u6599 + +#XBUT: Button to trigger refresh of the displayed data +PULL2REFRESH_REFRESH=\u91CD\u65B0\u6574\u7406 + +#XBUT: Text displayed on the logout button in the top right corner of the Shell +SHELL_LOGOUT=\u767B\u51FA + +#XBUT: Text for OK button in the personalization dialog +PERSODIALOG_OK=\u78BA\u5B9A + +#XBUT: Text for Cancel button in the personalization dialog +PERSODIALOG_CANCEL=\u53D6\u6D88 + +#XTOL: Tooltip for Undo Personalization toolbar button +PERSODIALOG_UNDO=\u5FA9\u539F\u500B\u4EBA\u5316 + + +#XTIT: Title text of personalization dialog for columns +PERSODIALOG_COLUMNS_TITLE=\u6B04 + +#XBUT: Text of personalization dialog for 'Select All' checkbox +PERSODIALOG_SELECT_ALL=\u5168\u90E8 + +#XTIT: Text of personalization dialog for its list to indicate no search hits +PERSODIALOG_NO_DATA=\u627E\u4E0D\u5230\u6B04 + +#XTIT: Predefined text for the view settings dialog title +VIEWSETTINGS_TITLE=\u6AA2\u8996 + +#XTIT: Predefined text for the view settings dialog title when in sort mode +VIEWSETTINGS_TITLE_SORT=\u6392\u5E8F\u4F9D\u64DA + +#XTIT: Predefined text for the view settings dialog title when in group mode +VIEWSETTINGS_TITLE_GROUP=\u7FA4\u7D44\u4F9D\u64DA + +#XTIT: Predefined text for the view settings dialog title when in filter mode +VIEWSETTINGS_TITLE_FILTER=\u7BE9\u9078\u4F9D\u64DA + +#XTIT: Predefined text for the view settings dialog title when in filter detail mode (an item name is appended to this string) +VIEWSETTINGS_TITLE_FILTERBY=\u7BE9\u9078\u4F9D\u64DA\uFF1A + +#YMSG: Start text for the text representation of the filter state +VIEWSETTINGS_FILTERTEXT=\u7BE9\u9078\u4F9D\u64DA\uFF1A + +#XBUT: Button to confirm the view settings dialog +VIEWSETTINGS_ACCEPT=\u78BA\u5B9A + +#XBUT: Button to cancel the view settings dialog +VIEWSETTINGS_CANCEL=\u53D6\u6D88 + +#XBLI: List item text in the view settings dialog that represents a "none of the above" or "none" selection in a single selection list +VIEWSETTINGS_NONE_ITEM=\u7121 + +#XBLI: List item text in the view settings for sorting items in ascending order +VIEWSETTINGS_ASCENDING_ITEM=\u5347\u51AA + +#XBLI: List item text in the view settings for sorting items in descending order +VIEWSETTINGS_DESCENDING_ITEM=\u964D\u51AA + +#XTOL: Tooltip for the clear filter button +VIEWSETTINGS_CLEAR_FILTER_TOOLTIP=\u6E05\u9664\u6240\u6709\u7BE9\u9078 + +#XLST: Label for the select all checkbox used to select all facet filter items +FACETFILTER_CHECKBOX_ALL=\u5168\u90E8 + +#XLST: All Items in the list with the name of the list as a parameter: ex. Suppliers (All) +FACETFILTER_ALL_SELECTED={0} (\u6240\u6709) + +#XFLD: Search field prompt +FACETFILTER_SEARCH=\u641C\u5C0B + +#XBUT: Either a single filter value or the number of selected values, displayed on facet filter button: ex. Suppliers (Dell) or Suppliers (6) +FACETFILTER_ITEM_SELECTION={0} ({1}) + +#XTIT: Light flow facet filter dialog and facet add dialog title +FACETFILTER_TITLE=\u7BE9\u9078 + +#XBUT: Button to confirm facet filter dialogs +FACETFILTER_ACCEPT=\u78BA\u5B9A + +#XSEL: Infobar filter summary: ex. Filtered by Suppliers (Supplier1, Supplier2) +FACETFILTER_INFOBAR_FILTERED_BY=\u7BE9\u9078\u4F9D\u64DA {0} ({1}) + +#XSEL: Infobar filter summary when no filters selected +FACETFILTER_INFOBAR_NO_FILTERS=\u672A\u9078\u64C7\u7BE9\u9078 + +#XSEL: Infobar filter add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AND=\u548C + +#XSEL: Infobar filter after add: ex. Filtered by Suppliers (Supplier1, Supplier2) and Items (Item1) +FACETFILTER_INFOBAR_AFTER_AND={0} ({1}) + +#XSEL: Alternate infobar filter summary +FACETFILTER_INFOBAR_FILTERS_APPLIED=\u5DF2\u5957\u7528\u6578\u500B\u7BE9\u9078 + +#YMSG: Filter bar msg shown when there are more filters available that cannot be displayed because there is not enough room: ex. 2 More... +FACETFILTER_MORE_COUNT={0} \u66F4\u591A... + +#YMSG: Message displayed in filter dialog when there are many more filters available but not shown: ex. 76 more available +FACETFILTER_FILTERS_HUGE={0} \u66F4\u70BA\u53EF\u7528\u7684 + +#XLNK: Link to allow searching additional filter values from the server +FACETFILTER_SERVER_SEARCH=\u4F3A\u670D\u5668\u4E0A\u7684\u9032\u968E\u641C\u5C0B + +#XBUT: Button to remove a filter from the filter bar +FACETFILTER_REMOVE_FILTER=\u79FB\u9664\u7BE9\u9078 + +#YMSG: Message displayed near the list of selection items in the SelectDialg and TableSelectDialog controls. It will be filled with the number of selected items +TABLESELECTDIALOG_SELECTEDITEMS=\u5DF2\u9078\u64C7\u9805\u76EE\uFF1A {0} + +#YMSG: Default placeholder for the input field of a feed +FEEDINPUT_PLACEHOLDER=\u5728\u6B64\u5F35\u8CBC\u5167\u5BB9 + +#XTOL: Tooltip for submit button of a feed input +FEEDINPUT_SUBMIT=\u63D0\u4EA4 + +#XBUT: A link that can be clicked to display more/all items +INPUT_SUGGESTIONS_SHOW_ALL=\u986F\u793A\u6240\u6709\u9805\u76EE + +#XBUT,10: Tooltip for button to remove facet list +FACETFILTER_REMOVE=\u79FB\u9664\u5C64\u9762\u6E05\u55AE + +#XBUT,10: Tooltip for button to add facet list +FACETFILTER_ADDFACET=\u65B0\u589E\u5C64\u9762\u6E05\u55AE + +#XBUT,40: Tooltip for button to reset filter +FACETFILTER_RESET=\u91CD\u8A2D + +#XBUT,10: Tooltip for left scrolling arrow +FACETFILTER_PREVIOUS=\u4E0A\u4E00\u500B + +#XBUT,10: Tooltip for right scrolling arrow +FACETFILTER_NEXT=\u4E0B\u4E00\u500B + +#XLNK: Link to allow the user to see complete feed post +TEXT_SHOW_MORE=\u66F4\u591A + +#XLNK: This link allows the user to hide the complete feed post and display only the first lines +TEXT_SHOW_LESS=\u66F4\u5C11 + +#XFLD: Label text for number of attachments in the UploadCollection control +UPLOADCOLLECTION_ATTACHMENTS=\u9644\u4EF6 ({0}) + +#XMSG: Message text for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TEXT=\u60A8\u78BA\u5B9A\u8981\u522A\u9664\u6A94\u6848 {0} \u55CE\uFF1F + +#XMSG: Message text for deleting a file in the UploadCollection control without filename +UPLOADCOLLECTION_DELETE_WITHOUT_FILENAME_TEXT=\u60A8\u78BA\u5B9A\u8981\u522A\u9664\u6A94\u6848\u55CE\uFF1F + +#XMSG: Message title for deleting a file in the UploadCollection control +UPLOADCOLLECTION_DELETE_TITLE=\u522A\u9664\u6A94\u6848 + +#XMSG: Message text for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TEXT=\u5C07\u7D42\u6B62\u4E0B\u5217\u6A94\u6848\u7684\u4E0A\u50B3\uFF1A + +#XMSG: Message title for a popup to terminate a file uploading in the UploadCollection control +UPLOADCOLLECTION_TERMINATE_TITLE=\u7D42\u6B62\u4E0A\u50B3 + +#XMSG: Message text file name already exists in the UploadCollection control +UPLOADCOLLECTION_EXISTS=\u6A94\u6848\u540D\u7A31\u5DF2\u5B58\u5728 + +#XMSG: Message text for uploading status to the UploadCollection control +UPLOADCOLLECTION_UPLOADING=\u6B63\u5728\u4E0A\u50B3\uFF1A {0} % + +#XMSG: Message title for the Upload Failed message box +UPLOADCOLLECTION_FAILED=\u4E0A\u50B3\u5931\u6557 + +#XMSG: Message text informing that it is not allowed to upload the selected file(s) (MIME type or file extension not allowed) +UPLOADCOLLECTION_MISMATCH=\u4E0D\u5141\u8A31\u6A94\u6848\u985E\u578B + +#XBUT: Button text for cancel button in the upload collection +UPLOADCOLLECTION_CANCELBUTTON_TEXT=\u53D6\u6D88 + +#XBUT: Text for OK button in the upload collection +UPLOADCOLLECTION_OKBUTTON_TEXT=\u78BA\u5B9A + +#XTIT: Predefined text for title in the personalization dialog +P13NDIALOG_VIEW_SETTINGS=\u6AA2\u8996\u8A2D\u5B9A +#XTIT: dialog title for filter panel +P13NDIALOG_TITLE_FILTER=\u5B9A\u7FA9\u7BE9\u9078 +#XTIT: dialog title for sort panel +P13NDIALOG_TITLE_SORT=\u5B9A\u7FA9\u6392\u5E8F +#XTIT: dialog title for group panel +P13NDIALOG_TITLE_GROUP=\u5B9A\u7FA9\u7FA4\u7D44 +#XTIT: dialog title for columns panel +P13NDIALOG_TITLE_COLUMNS=\u5B9A\u7FA9\u6B04\u5C6C\u6027 +#XBUT: Text for OK button in the personalization dialog +P13NDIALOG_OK=\u78BA\u5B9A +#XBUT: Text for Cancel button in the personalization dialog +P13NDIALOG_CANCEL=\u53D6\u6D88 +#XBUT: Text for Reset button in the personalization dialog +P13NDIALOG_RESET=\u56DE\u5B58 +#XTIT: Text for tab 'Sorting' in the personalization dialog +P13NDIALOG_TAB_SORT=\u6392\u5E8F +#XTIT: Text for tab 'Filter' in the personalization dialog +P13NDIALOG_TAB_FILTER=\u7BE9\u9078 +#XTIT: Text for tab 'Group' in the personalization dialog +P13NDIALOG_TAB_GROUP=\u7FA4\u7D44 +#XTIT: Text for tab 'Calculation' in the personalization dialog +P13NDIALOG_TAB_CALCULATION=\u8A08\u7B97 +#XTIT: Text for tab 'Columns' in the personalization dialog +P13NDIALOG_TAB_COLUMNS=\u6B04 +#XTIT: personalization dialog ValidationDialog predefined title +P13NDIALOG_VALIDATION_TITLE=\u8B66\u544A +#XTIT: personalization dialog ValidationDialog predefined message +P13NDIALOG_VALIDATION_MESSAGE=\u7F3A\u5C11\u90E8\u4EFD\u689D\u4EF6\u503C\u3002\n \u50C5\u5B8C\u6574\u7684\u8F38\u5165\u9805\u6703\u65B0\u589E\u81F3\u7BE9\u9078\u3002 +#XTIT: personalization dialog ValidationDialog predefined message for columns panel +P13NDIALOG_VISIBLE_ITEMS_THRESHOLD_MESSAGE=\u9078\u53D6\u5927\u91CF\u6B04\u4F4D\u53EF\u80FD\u6703\u6E1B\u6162\u6548\u80FD + +#XTIT: Filterpanel predefined title for Include filter +FILTERPANEL_INCLUDES=\u5305\u542B + +#XTIT: Filterpanel predefined title for Exclude filter +FILTERPANEL_EXCLUDES=\u6392\u9664 + +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONBT=\u4ECB\u65BC +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEQ=\u7B49\u65BC +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONContains=\u5305\u542B +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGT=\u5927\u65BC +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGE=\u5927\u65BC\u6216\u7B49\u65BC +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLT=\u5C0F\u65BC +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONLE=\u5C0F\u65BC\u6216\u7B49\u65BC +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONInitial=\u521D\u59CB +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONStartsWith=\u958B\u982D\u70BA +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONEndsWith=\u7D50\u5C3E\u70BA +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAscending=\u5347\u51AA +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONDescending=\u964D\u51AA +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupAscending=\u5347\u51AA +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONGroupDescending=\u964D\u51AA +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONTotal=\u7E3D\u8A08 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONAverage=\u5E73\u5747 +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMinimum=\u6700\u5C0F +#XTIT: ConditionPanel Option +CONDITIONPANEL_OPTIONMaximum=\u6700\u5927 +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_BT=\u4ECB\u65BC +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_EQ=\u7B49\u65BC +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GT=\u665A\u65BC +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_GE=\u7576\u5929\u6216\u665A\u65BC +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LT=\u65E9\u65BC +#XTIT: ConditionPanel Option for date +CONDITIONPANEL_OPTION_DATE_LE=\u7576\u5929\u6216\u65E9\u65BC +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_BT=\u4ECB\u65BC +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_EQ=\u7B49\u65BC +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GT=\u5927\u65BC +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_GE=\u5927\u65BC\u6216\u7B49\u65BC +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LT=\u5C0F\u65BC +#XTIT: ConditionPanel Option for numeric +CONDITIONPANEL_OPTION_NUMERIC_LE=\u5C0F\u65BC\u6216\u7B49\u65BC + + +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELFROM=\u81EA +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELTO=\u81F3 +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELVALUE=\u503C +#XTIT: ConditionPanel Option Label +CONDITIONPANEL_LABELGROUPING=\u5C07\u6B04\u4F4D\u986F\u793A\u70BA\u6B04 +#XTOL: ConditionPanel predefined text for tooltip on plus buttons +CONDITIONPANEL_ADD_TOOLTIP=\u65B0\u589E\u65B0\u7684\u884C +#XTIT: ConditionPanel predefined field warning hint +CONDITIONPANEL_FIELDMESSAGE=\u8F38\u5165\u6709\u6548\u503C + +#XBUT: ColumnsPanel Show All button +COLUMNSPANEL_SHOW_ALL=\u5168\u90E8\u986F\u793A +#XBUT: ColumnsPanel Show Selected button +COLUMNSPANEL_SHOW_SELECTED=\u986F\u793A\u6240\u9078 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL=\u5168\u9078 +#XLST: ColumnsPanel Select All label +COLUMNSPANEL_SELECT_ALL_WITH_COUNTER=\u5168\u9078 ({0}/{1}) +#XTOL: Tooltip for MOVE: ToStart button +COLUMNSPANEL_MOVE_TO_TOP=\u79FB\u81F3\u9802\u7AEF +#XTOL: Tooltip for MOVE: Up button +COLUMNSPANEL_MOVE_UP=\u4E0A\u79FB +#XTOL: Tooltip for MOVE: Down button +COLUMNSPANEL_MOVE_DOWN=\u4E0B\u79FB +#XTOL: Tooltip for MOVE: ToEnd button +COLUMNSPANEL_MOVE_TO_BOTTOM=\u79FB\u81F3\u5E95\u7AEF + +#XFLD: Subtle link description label +LINK_SUBTLE=\u8F15\u5FAE +#XFLD: Emphasized link description label +LINK_EMPHASIZED=\u5F37\u8ABF + +#XACT: ARIA announcement for the search field F5 keyboard shortcut +SEARCHFIELD_ARIA_F5=\u6309 F5 \u4EE5\u91CD\u65B0\u6574\u7406 + +#XACT: ARIA announcement for the F4 value help keyboard shortcut +VALUEHELP_ARIA_F4=\u6309 F4 \u4EE5\u958B\u555F\u8F38\u5165\u8F14\u52A9\u8AAA\u660E\u5C0D\u8A71 + +#XTXT: Bar's ARIA description when it is a footer +BAR_ARIA_DESCRIPTION_FOOTER=\u8868\u5C3E +#XTXT: Bar's ARIA description when it is a header +BAR_ARIA_DESCRIPTION_HEADER=\u8868\u982D +#XTXT: Bar's ARIA description when it is a subheader +BAR_ARIA_DESCRIPTION_SUBHEADER=\u6B21\u8868\u982D + +#XACT: ARIA announcement for the ObjectNumber's value state "Error" +OBJECTNUMBER_ARIA_VALUE_STATE_ERROR=\u503C\u72C0\u614B\u3008\u932F\u8AA4\u3009 +#XACT: ARIA announcement for the ObjectNumber's value state "Warning" +OBJECTNUMBER_ARIA_VALUE_STATE_WARNING=\u503C\u72C0\u614B\u3008\u8B66\u544A\u3009 +#XACT: ARIA announcement for the ObjectNumber's value state "Success" +OBJECTNUMBER_ARIA_VALUE_STATE_SUCCESS=\u503C\u72C0\u614B\u3008\u6210\u529F\u3009 + +#XACT: ARIA text for tab separator icons +ICONTABBAR_NEXTSTEP=\u4E0B\u4E00\u6B65 +#XACT: ARIA text for positive icon color +ICONTABBAR_ICONCOLOR_POSITIVE=\u6B63\u5411 +#XACT: ARIA text for critical icon color +ICONTABBAR_ICONCOLOR_CRITICAL=\u95DC\u9375 +#XACT: ARIA text for negative icon color +ICONTABBAR_ICONCOLOR_NEGATIVE=\u8CA0\u5411 + +#XACT: ARIA text of current selected value vs. max. possible value of the RatingIndicator control +RATING_VALUEARIATEXT={0} \: {1} +#XACT: ARIA description of the RatingIndicator control +RATING_ARIA_NAME=\u8A55\u6BD4 + +#XACT: ARIA description for ObjectHeader and ObjectListItem`s favorite property +ARIA_FAVORITE_MARK_VALUE=\u6700\u611B +#XACT: ARIA description for ObjectHeader and ObjectListItem`s flag property +ARIA_FLAG_MARK_VALUE=\u65D7\u6A19 + +#XACT: ARIA description for ObjectHeader select title arrow +OH_ARIA_SELECT_ARROW_VALUE=\u9078\u64C7\u6A19\u984C\u7BAD\u982D +#XACT: ARIA description for ObjectHeader icon infront of the title when it's active +OH_ARIA_ICON=\u5716\u793A + +#XACT: ARIA description for Shell logo +SHELL_ARIA_LOGO=\u6A19\u8A8C + +#XTXT: MessagePage text +MESSAGE_PAGE_TEXT=\u627E\u4E0D\u5230\u7B26\u5408\u9805\u76EE +#XTXT: MessagePage description +MESSAGE_PAGE_DESCRIPTION=\u6AA2\u67E5\u7BE9\u9078\u8A2D\u5B9A + +#XFLD: Token number indicator which is used to show more tokens in MultiInput when the MultiInput it is in multi-line display mode +MULTIINPUT_SHOW_MORE_TOKENS=\u66F4\u591A ({0}) + +#XACT: ARIA announcement for the ObjectListItem unread mark +OBJECTLISTITEM_ARIA_UNREAD_VALUE=\u672A\u8B80\u53D6 +#XACT: ARIA announcement for the ObjectListItem locked mark +OBJECTLISTITEM_ARIA_LOCKED_MARK_VALUE=\u9396\u4F4F\u7684 + +#XBUT: MessagePopover predefined text for CLOSE action +MESSAGEPOPOVER_CLOSE=\u95DC\u9589 +#XBUT: MessagePopover predefined text for All Button +MESSAGEPOPOVER_ALL=\u5168\u90E8 +#XACT: ARIA announcement for the MessagePopover back buttons +MESSAGEPOPOVER_ARIA_BACK_BUTTON=\u8FD4\u56DE +#XACT: ARIA announcement for the MessagePopover heading +MESSAGEPOPOVER_ARIA_HEADING=\u8A0A\u606F + +#XACT: ARIA announcement for the accept button +BUTTON_ARIA_TYPE_ACCEPT=\u6B63\u5411\u4F5C\u696D +#XACT: ARIA announcement for the reject button +BUTTON_ARIA_TYPE_REJECT=\u8CA0\u5411\u4F5C\u696D +#XACT: ARIA announcement for the emphasized button +BUTTON_ARIA_TYPE_EMPHASIZED=\u5F37\u8ABF + +#XACT: ARIA text for position markers +CAROUSEL_POSITION=\u5DF2\u986F\u793A\u9805\u76EE {0}/{1} + +#XTXT: colon separator +COLON=\: diff --git a/DVHMA-OpenUI5/www/resources/sap/m/routing/RouteMatchedHandler-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/routing/RouteMatchedHandler-dbg.js new file mode 100644 index 0000000..137c254 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/routing/RouteMatchedHandler-dbg.js @@ -0,0 +1,207 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global', 'sap/m/InstanceManager', 'sap/m/NavContainer', 'sap/m/SplitContainer', 'sap/ui/base/Object', 'sap/ui/core/routing/History', 'sap/ui/core/routing/Router', './TargetHandler'], + function(jQuery, InstanceManager, NavContainer, SplitContainer, BaseObject, History, Router, TargetHandler) { + "use strict"; + + + /** + * Instantiates a RouteMatchedHandler. + * + * @class + * This class will attach to the Events of a provided router and add the views created by it to a {@link sap.m.SplitContainer} or a {@link sap.m.NavContainer} Control, if this is the target control of the route.
    + * If the targetControl is no {@link sap.m.SplitContainer} or a {@link sap.m.NavContainer}, It will only close the dialogs, according to the property value.
    + *
    + * When a navigation is triggered, this class will try to determine the transition of the pages based on the history.
    + * Eg: if a user presses browser back, it will show a backwards animation.
    + *
    + * The navigation on the container takes place in the RoutePatternMatched event of the Router. If you register on the RouteMatched event of the Router, the visual navigation did not take place yet.
    + *
    + * Since it is hard to detect if a user has pressed browser back, this transitions will not be reliable, for example if someone bookmarked a detail page, and wants to navigate to a masterPage.
    + * If you want this case to always show a backwards transition, you should specify a "viewLevel" property on your Route.
    + * The viewLevel has to be an integer. The Master should have a lower number than the detail.
    + * These levels should represent the user process of your application and they do not have to match the container structure of your Routes.
    + * If the user navigates between views with the same viewLevel, the history is asked for the direction.
    + *
    + * You can specify a property "transition" in a route to define which transition will be applied when navigating. If it is not defined, the nav container will take its default transition. + *
    + * You can also specify "transitionParameters" on a Route, to give the transition parameters.
    + *
    + * preservePageInSplitContainer is deprecated since 1.28 since Targets make this parameter obsolete. + * If you want to preserve the current view when navigating, but you want to navigate to it when nothing is displayed in the navContainer, you can set preservePageInSplitContainer = true
    + * When the route that has this flag directly matches the pattern, the view will still be switched by the splitContainer. + *
    + * @see sap.m.NavContainer + * + * + * @deprecated @since 1.28 use {@link sap.m.routing.Router} or {@link sap.m.routing.Targets} instead. The functionality of the routematched handler is built in into these two classes, there is no need to create this anymore. + * @param {sap.ui.core.routing.Router} router - A router that creates views
    + * @param {boolean} closeDialogs - the default is true - will close all open dialogs before navigating, if set to true. If set to false it will just navigate without closing dialogs. + * @public + * @alias sap.m.routing.RouteMatchedHandler + */ + var RouteMatchedHandler = BaseObject.extend("sap.m.routing.RouteMatchedHandler", { + constructor : function (oRouter, bCloseDialogs) { + this._oTargetHandler = new TargetHandler(bCloseDialogs); + + // Route matched is thrown for each container in the route hierarchy + oRouter.attachRouteMatched(this._onHandleRouteMatched, this); + // Route Pattern Matched is thrown only once for the end point of the current navigation + oRouter.attachRoutePatternMatched(this._handleRoutePatternMatched, this); + + this._oTargets = oRouter.getTargets(); + + if (this._oTargets) { + this._oTargets.attachDisplay(this._onHandleDisplay, this); + } + + this._oRouter = oRouter; + } + }); + + /* ================================= + * public + * =================================*/ + + /** + * Removes the routeMatchedHandler from the Router + * + * @public + * @returns {sap.m.routing.RouteMatchedHandler} for chaining + */ + RouteMatchedHandler.prototype.destroy = function () { + this._oRouter.detachRouteMatched(this._onHandleRouteMatched, this); + this._oRouter.detachRoutePatternMatched(this._handleRoutePatternMatched, this); + + this._oRouter = null; + + if (this._oTargets) { + this._oTargets.detachDisplay(this._onHandleRouteMatched, this); + this._oTargets = null; + } + + return this; + }; + + /** + * Sets if a navigation should close dialogs + * + * @param {boolean} bCloseDialogs close dialogs if true + * @public + * @returns {sap.m.routing.RouteMatchedHandler} for chaining + */ + RouteMatchedHandler.prototype.setCloseDialogs = function (bCloseDialogs) { + this._oTargetHandler.setCloseDialogs(bCloseDialogs); + return this; + }; + + + /** + * Gets if a navigation should close dialogs + * + * @public + * @returns {boolean} a flag indication if dialogs will be closed + */ + RouteMatchedHandler.prototype.getCloseDialogs = function () { + return this._oTargetHandler.getCloseDialogs(); + }; + + + /* ================================= + * private + * ================================= + */ + + /** + * Handling of navigation event: + * Order of navigation events is first all RouteMatched events then the single RoutePatternMatched event. + * We collect all RouteMatched events in a queue (one for each container) as soon as the RoutePatternMatched + * is reached the direction of the navigation is derived by _handleRoutePatternMatched. This direction is + * forwarded to the route's view container (done in _handleRouteMatched) + * @param {object} oEvent The routePatternMatched event + * @private + */ + RouteMatchedHandler.prototype._handleRoutePatternMatched = function(oEvent) { + var iTargetViewLevel = +oEvent.getParameter("config").viewLevel; + + this._oTargetHandler.navigate({ + viewLevel: iTargetViewLevel, + navigationIdentifier : oEvent.getParameter("name"), + askHistory: true + }); + }; + + /** + * queues up calls + * @param {object} oEvent The routeMatched event + * @private + */ + RouteMatchedHandler.prototype._onHandleRouteMatched = function(oEvent) { + var oParameters = oEvent.getParameters(), + oConfig = oParameters.config; + + // Route is using targets so the display event will handle this navigation + if (!this._oRouter.getRoute(oParameters.name)._oTarget) { + return; + } + + this._oTargetHandler.addNavigation({ + targetControl : oParameters.targetControl, + eventData : oParameters.arguments, + view : oParameters.view, + navigationIdentifier : oParameters.name, + transition: oConfig.transition, + transitionParameters: oConfig.transitionParameters, + preservePageInSplitContainer: oConfig.preservePageInSplitContainer + }); + }; + + /** + * queues up calls + * @param {object} oEvent The routeMatched event + * @private + */ + RouteMatchedHandler.prototype._onHandleDisplay = function(oEvent) { + var oParameters = oEvent.getParameters(), + oConfig = oParameters.config; + + this._oTargetHandler.addNavigation({ + targetControl : oParameters.control, + eventData : oParameters.data, + view : oParameters.view, + navigationIdentifier : oParameters.name, + transition: oConfig.transition, + transitionParameters: oConfig.transitionParameters, + preservePageInSplitContainer: oConfig.preservePageInSplitContainer + }); + }; + + /** + * Closes all dialogs if the closeDialogs property is set to true. + * + * @private + */ + RouteMatchedHandler.prototype._closeDialogs = function() { + if (!this._bCloseDialogs) { + return; + } + + // close open popovers + if (InstanceManager.hasOpenPopover()) { + InstanceManager.closeAllPopovers(); + } + + // close open dialogs + if (InstanceManager.hasOpenDialog()) { + InstanceManager.closeAllDialogs(); + } + }; + + + + return RouteMatchedHandler; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/routing/RouteMatchedHandler.js b/DVHMA-OpenUI5/www/resources/sap/m/routing/RouteMatchedHandler.js new file mode 100644 index 0000000..154da87 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/routing/RouteMatchedHandler.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/m/InstanceManager','sap/m/NavContainer','sap/m/SplitContainer','sap/ui/base/Object','sap/ui/core/routing/History','sap/ui/core/routing/Router','./TargetHandler'],function(q,I,N,S,B,H,R,T){"use strict";var a=B.extend("sap.m.routing.RouteMatchedHandler",{constructor:function(r,c){this._oTargetHandler=new T(c);r.attachRouteMatched(this._onHandleRouteMatched,this);r.attachRoutePatternMatched(this._handleRoutePatternMatched,this);this._oTargets=r.getTargets();if(this._oTargets){this._oTargets.attachDisplay(this._onHandleDisplay,this);}this._oRouter=r;}});a.prototype.destroy=function(){this._oRouter.detachRouteMatched(this._onHandleRouteMatched,this);this._oRouter.detachRoutePatternMatched(this._handleRoutePatternMatched,this);this._oRouter=null;if(this._oTargets){this._oTargets.detachDisplay(this._onHandleRouteMatched,this);this._oTargets=null;}return this;};a.prototype.setCloseDialogs=function(c){this._oTargetHandler.setCloseDialogs(c);return this;};a.prototype.getCloseDialogs=function(){return this._oTargetHandler.getCloseDialogs();};a.prototype._handleRoutePatternMatched=function(e){var t=+e.getParameter("config").viewLevel;this._oTargetHandler.navigate({viewLevel:t,navigationIdentifier:e.getParameter("name"),askHistory:true});};a.prototype._onHandleRouteMatched=function(e){var p=e.getParameters(),c=p.config;if(!this._oRouter.getRoute(p.name)._oTarget){return;}this._oTargetHandler.addNavigation({targetControl:p.targetControl,eventData:p.arguments,view:p.view,navigationIdentifier:p.name,transition:c.transition,transitionParameters:c.transitionParameters,preservePageInSplitContainer:c.preservePageInSplitContainer});};a.prototype._onHandleDisplay=function(e){var p=e.getParameters(),c=p.config;this._oTargetHandler.addNavigation({targetControl:p.control,eventData:p.data,view:p.view,navigationIdentifier:p.name,transition:c.transition,transitionParameters:c.transitionParameters,preservePageInSplitContainer:c.preservePageInSplitContainer});};a.prototype._closeDialogs=function(){if(!this._bCloseDialogs){return;}if(I.hasOpenPopover()){I.closeAllPopovers();}if(I.hasOpenDialog()){I.closeAllDialogs();}};return a;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/routing/Router-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/routing/Router-dbg.js new file mode 100644 index 0000000..2c0e8b8 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/routing/Router-dbg.js @@ -0,0 +1,238 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['sap/ui/core/routing/Router', './TargetHandler', './Targets'], + function(Router, TargetHandler, Targets) { + "use strict"; + + /** + * Instantiates a SAPUI5 mobile Router see {@link sap.ui.core.routing.Router} for the constructor arguments + * The difference to the {@link sap.ui.core.routing.Router} are the properties viewLevel, transition and transitionParameters you can specify in every Route or Target created by this router. + * + * @class + * @extends sap.ui.core.routing.Router + * @param {object|object[]} [oRoutes] may contain many Route configurations as {@link sap.ui.core.routing.Route#constructor}.
    + * Each of the routes contained in the array/object will be added to the router.
    + * + * One way of defining routes is an array: + *
    +		 * [
    +		 *     //Will create a route called 'firstRouter' you can later use this name in navTo to navigate to this route
    +		 *     {
    +		 *         name: "firstRoute"
    +		 *         pattern : "usefulPattern"
    +		 *     },
    +		 *     //Will create a route called 'anotherRoute'
    +		 *     {
    +		 *         name: "anotherRoute"
    +		 *         pattern : "anotherPattern"
    +		 *     }
    +		 * ]
    +		 * 
    + * + * The alternative way of defining routes is an Object. + * If you choose this way, the name attribute is the name of the property. + *
    +		 * {
    +		 *     //Will create a route called 'firstRouter' you can later use this name in navTo to navigate to this route
    +		 *     firstRoute : {
    +		 *         pattern : "usefulPattern"
    +		 *     },
    +		 *     //Will create a route called 'anotherRoute'
    +		 *     anotherRoute : {
    +		 *         pattern : "anotherPattern"
    +		 *     }
    +		 * }
    +		 * 
    + * The values that may be provided are the same as in {@link sap.ui.core.routing.Route#constructor} + * + * @param {object} [oConfig] Default values for route configuration - also takes the same parameters as {@link sap.ui.core.routing.Target#constructor}.
    + * This config will be used for routes and for targets, used in the router
    + * Eg: if the config object specifies : + *
    +		 * 
    +		 * { viewType : "XML" }
    +		 * 
    +		 * 
    + * The targets look like this: + *
    +		 * {
    +		 *     xmlTarget : {
    +		 *         ...
    +		 *     },
    +		 *     jsTarget : {
    +		 *         viewType : "JS"
    +		 *         ...
    +		 *     }
    +		 * }
    +		 * 
    + * Then the effective config will look like this: + *
    +		 * {
    +		 *     xmlTarget : {
    +		 *         viewType : "XML"
    +		 *         ...
    +		 *     },
    +		 *     jsTarget : {
    +		 *         viewType : "JS"
    +		 *         ...
    +		 *     }
    +		 * }
    +		 * 
    + * + * Since the xmlTarget does not specify its viewType, XML is taken from the config object. The jsTarget is specifying it, so the viewType will be JS. + * @param {string|string[]} [oConfig.bypassed.target] One or multiple names of targets that will be displayed, if no route of the router is matched. + * A typical use case is a not found page. + * The current hash will be passed to the display event of the target. + * Example: + *
    +		 * 
    +		 *     new Router(
    +		 *     // Routes
    +		 *     [
    +		 *         // Any route here
    +		 *     ],
    +		 *     {
    +		 *         bypassed: {
    +		 *             // you will find this name in the target config
    +		 *             target: "notFound"
    +		 *         }
    +		 *     },
    +		 *     // You should only use this constructor when you are not using a router with a component. Please use the metadata of a component to define your routes and targets. The documentation can be found here: {@link sap.ui.core.UIComponent#.extend}.
    +		 *     null,
    +		 *     // Target config
    +		 *     {
    +		 *          //same name as in the config.bypassed.target
    +		 *          notFound: {
    +		 *              viewName: "notFound",
    +		 *              ...
    +		 *              // more properties to place the view in the correct container
    +		 *          }
    +		 *     });
    +		 * 
    +		 * 
    + * @param {sap.ui.core.UIComponent} [oOwner] the Component of all the views that will be created by this Router, + * will get forwarded to the {@link sap.ui.core.routing.Views#contructor}. + * If you are using the componentMetadata to define your routes you should skip this parameter. + * @param {object} [oTargetsConfig] + * the target configuration, see {@link sap.m.routing.Targets#constructor} documentation (the options object).
    + * You should use Targets to create and display views. The route should only contain routing relevant properties.
    + * Example: + *
    +		 * 
    +		 *     new Router(
    +		 *     // Routes
    +		 *     [
    +		 *         {
    +		 *             // no view creation related properties are in the route
    +		 *             name: "startRoute",
    +		 *             //no hash
    +		 *             pattern: "",
    +		 *             // you can find this target in the targetConfig
    +		 *             target: "welcome"
    +		 *         }
    +		 *     ],
    +		 *     // Default values shared by routes and Targets
    +		 *     {
    +		 *         viewNamespace: "my.application.namespace",
    +		 *         viewType: "XML"
    +		 *     },
    +		 *     // You should only use this constructor when you are not using a router with a component. Please use the metadata of a component to define your routes and targets. The documentation can be found here: {@link sap.ui.core.UIComponent#.extend}.
    +		 *     null,
    +		 *     // Target config
    +		 *     {
    +		 *          //same name as in the route called 'startRoute'
    +		 *          welcome: {
    +		 *              // All properties for creating and placing a view go here or in the config
    +		 *              viewName: "Welcome",
    +		 *              controlId: "app",
    +		 *              controlAggregation: "pages"
    +		 *          }
    +		 *     })
    +		 * 
    +		 * 
    + * @public + * @since 1.28.1 + * @alias sap.m.routing.Router + */ + return Router.extend("sap.m.routing.Router", /** @lends sap.m.routing.Router.prototype */ { + + constructor : function() { + this._oTargetHandler = new TargetHandler(); + Router.prototype.constructor.apply(this, arguments); + }, + + destroy: function () { + Router.prototype.destroy.apply(this, arguments); + + this._oTargetHandler.destroy(); + + this._oTargetHandler = null; + }, + + /** + * Returns the TargetHandler instance. + * + * @return {sap.m.routing.TargetHandler} the TargetHandler instance + * @public + */ + getTargetHandler : function () { + return this._oTargetHandler; + }, + + _createTargets : function (oConfig, oTargetsConfig) { + return new Targets({ + views: this._oViews, + config: oConfig, + targets: oTargetsConfig, + targetHandler: this._oTargetHandler + }); + }, + + fireRouteMatched : function (mArguments) { + var oRoute = this.getRoute(mArguments.name), + oTargetConfig; + + // only if a route has a private target and does not use the targets instance of the router we need to inform the targethandler + if (oRoute._oTarget) { + + oTargetConfig = oRoute._oTarget._oOptions; + + this._oTargetHandler.addNavigation({ + navigationIdentifier : mArguments.name, + transition: oTargetConfig.transition, + transitionParameters: oTargetConfig.transitionParameters, + eventData: mArguments.arguments, + targetControl: mArguments.targetControl, + view: mArguments.view, + preservePageInSplitContainer: oTargetConfig.preservePageInSplitContainer + }); + + } + + return Router.prototype.fireRouteMatched.apply(this, arguments); + }, + + fireRoutePatternMatched : function (mArguments) { + var sRouteName = mArguments.name, + iViewLevel; + + if (this._oTargets && this._oTargets._oLastDisplayedTarget) { + iViewLevel = this._oTargets._oLastDisplayedTarget._oOptions.viewLevel; + } + + this._oTargetHandler.navigate({ + navigationIdentifier: sRouteName, + viewLevel: iViewLevel, + askHistory: true + }); + + + return Router.prototype.fireRoutePatternMatched.apply(this, arguments); + } + + }); + + }, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/routing/Router.js b/DVHMA-OpenUI5/www/resources/sap/m/routing/Router.js new file mode 100644 index 0000000..ea78b25 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/routing/Router.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['sap/ui/core/routing/Router','./TargetHandler','./Targets'],function(R,T,a){"use strict";return R.extend("sap.m.routing.Router",{constructor:function(){this._oTargetHandler=new T();R.prototype.constructor.apply(this,arguments);},destroy:function(){R.prototype.destroy.apply(this,arguments);this._oTargetHandler.destroy();this._oTargetHandler=null;},getTargetHandler:function(){return this._oTargetHandler;},_createTargets:function(c,t){return new a({views:this._oViews,config:c,targets:t,targetHandler:this._oTargetHandler});},fireRouteMatched:function(A){var r=this.getRoute(A.name),t;if(r._oTarget){t=r._oTarget._oOptions;this._oTargetHandler.addNavigation({navigationIdentifier:A.name,transition:t.transition,transitionParameters:t.transitionParameters,eventData:A.arguments,targetControl:A.targetControl,view:A.view,preservePageInSplitContainer:t.preservePageInSplitContainer});}return R.prototype.fireRouteMatched.apply(this,arguments);},fireRoutePatternMatched:function(A){var r=A.name,v;if(this._oTargets&&this._oTargets._oLastDisplayedTarget){v=this._oTargets._oLastDisplayedTarget._oOptions.viewLevel;}this._oTargetHandler.navigate({navigationIdentifier:r,viewLevel:v,askHistory:true});return R.prototype.fireRoutePatternMatched.apply(this,arguments);}});},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/routing/Target-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/routing/Target-dbg.js new file mode 100644 index 0000000..06cc33f --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/routing/Target-dbg.js @@ -0,0 +1,49 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['sap/ui/core/routing/Target'], + function(Target) { + "use strict"; + + /** + * The mobile extension for targets that target the controls {@link sap.m.SplitContainer} or a {@link sap.m.NavContainer} and all controls extending these. + * Other controls are also allowed, but the extra parameters listed below will just be ignored. + * + * Don't call this constructor directly, use {@link sap.m.Targets} instead, it will create instances of a Target + * The parameters you may pass into {@link sap.m.Targets#constructor} are described here. + * Please have a look at {@link sap.ui.core.Target#constructor} all values allowed in this constructor will be allowed here, plus the additional parameters listed below: + * + * @class + * @extends sap.ui.core.routing.Target + * @private + * @alias sap.m.routing.Target + */ + return Target.extend("sap.m.routing.Target", /** @lends sap.m.routing.Target.prototype */ { + constructor : function (oOptions, oViews, oParent, oTargetHandler) { + this._oTargetHandler = oTargetHandler; + + Target.prototype.constructor.apply(this, arguments); + }, + + _place : function (oParentInfo, vData) { + var oReturnValue = Target.prototype._place.apply(this, arguments); + + this._oTargetHandler.addNavigation({ + + navigationIdentifier : this._oOptions.name, + transition: this._oOptions.transition, + transitionParameters: this._oOptions.transitionParameters, + eventData: vData, + targetControl: oReturnValue.oTargetControl, + view: oReturnValue.oTargetParent, + preservePageInSplitContainer: this._oOptions.preservePageInSplitContainer + }); + + return oReturnValue; + + } + }); + + }, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/routing/Target.js b/DVHMA-OpenUI5/www/resources/sap/m/routing/Target.js new file mode 100644 index 0000000..bb2eafe --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/routing/Target.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['sap/ui/core/routing/Target'],function(T){"use strict";return T.extend("sap.m.routing.Target",{constructor:function(o,v,p,t){this._oTargetHandler=t;T.prototype.constructor.apply(this,arguments);},_place:function(p,d){var r=T.prototype._place.apply(this,arguments);this._oTargetHandler.addNavigation({navigationIdentifier:this._oOptions.name,transition:this._oOptions.transition,transitionParameters:this._oOptions.transitionParameters,eventData:d,targetControl:r.oTargetControl,view:r.oTargetParent,preservePageInSplitContainer:this._oOptions.preservePageInSplitContainer});return r;}});},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/routing/TargetHandler-dbg.js b/DVHMA-OpenUI5/www/resources/sap/m/routing/TargetHandler-dbg.js new file mode 100644 index 0000000..12f7a23 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/routing/TargetHandler-dbg.js @@ -0,0 +1,269 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global', 'sap/m/InstanceManager', 'sap/m/NavContainer', 'sap/m/SplitContainer', 'sap/ui/base/Object', 'sap/ui/core/routing/History', 'sap/ui/core/routing/Router'], + function($, InstanceManager, NavContainer, SplitContainer, BaseObject, History, Router) { + "use strict"; + + + /** + * Instantiates a TargetHandler, a class used for closing dialogs and showing transitions in NavContainers when targets are displayed.
    + * You should not create an own instance of this class. It will be created when using {@link sap.m.routing.Router} or {@link sap.m.routing.Targets}. + * You may use the {@link #setCloseDialogs} function to specify if dialogs should be closed on displaying other views. + * + * @class + * @param {boolean} closeDialogs - the default is true - will close all open dialogs before navigating, if set to true. If set to false it will just navigate without closing dialogs. + * @public + * @since 1.28.1 + * @alias sap.m.routing.TargetHandler + */ + var TargetHandler = BaseObject.extend("sap.m.routing.TargetHandler", { + constructor : function (bCloseDialogs) { + //until we reverse the order of events fired by router we need to queue handleRouteMatched + this._aQueue = []; + + if (bCloseDialogs === undefined) { + this._bCloseDialogs = true; + } else { + this._bCloseDialogs = !!bCloseDialogs; + } + } + }); + + /* ================================= + * public + * =================================*/ + + /** + * Sets if a navigation should close dialogs + * + * @param {boolean} bCloseDialogs close dialogs if true + * @public + * @returns {sap.m.routing.TargetHandler} for chaining + */ + TargetHandler.prototype.setCloseDialogs = function (bCloseDialogs) { + this._bCloseDialogs = !!bCloseDialogs; + return this; + }; + + + /** + * Gets if a navigation should close dialogs + * + * @public + * @returns {boolean} a flag indication if dialogs will be closed + */ + TargetHandler.prototype.getCloseDialogs = function () { + return this._bCloseDialogs; + }; + + TargetHandler.prototype.addNavigation = function(oParameters) { + this._aQueue.push(oParameters); + }; + + TargetHandler.prototype.navigate = function(oDirectionInfo) { + var aResultingNavigations = this._createResultingNavigations(oDirectionInfo.navigationIdentifier); + + this._closeDialogs(); + while (aResultingNavigations.length) { + this._applyNavigationResult(aResultingNavigations.shift().oParams, this._getDirection(oDirectionInfo)); + } + }; + + + /* ================================= + * private + * ================================= + */ + + /** + * @private + */ + TargetHandler.prototype._getDirection = function(oDirectionInfo) { + var iTargetViewLevel = oDirectionInfo.viewLevel, + oHistory = History.getInstance(), + bBack = false; + + if (oDirectionInfo.direction === "Backwards") { + bBack = true; + } else { + if (isNaN(iTargetViewLevel) || isNaN(this._iCurrentViewLevel) || iTargetViewLevel === this._iCurrentViewLevel) { + if (oDirectionInfo.askHistory) { + bBack = oHistory.getDirection() === "Backwards"; + } + } else { + bBack = iTargetViewLevel < this._iCurrentViewLevel; + } + } + + this._iCurrentViewLevel = iTargetViewLevel; + + return bBack; + }; + + /** + * Goes through the queue and adds the last Transition for each container in the queue + * In case of a navContainer or phone mode, only one transition for the container is allowed. + * In case of a splitContainer in desktop mode, two transitions are allowed, one for the master and one for the detail. + * Both transitions will be the same. + * @returns {array} a queue of navigations + * @private + */ + TargetHandler.prototype._createResultingNavigations = function(sNavigationIdentifier) { + var i, + bFoundTheCurrentNavigation, + oCurrentParams, + oCurrentContainer, + oCurrentNavigation, + aResults = [], + oView, + bIsSplitContainer, + bIsNavContainer, + bPreservePageInSplitContainer, + oResult; + + while (this._aQueue.length) { + bFoundTheCurrentNavigation = false; + oCurrentParams = this._aQueue.shift(); + oCurrentContainer = oCurrentParams.targetControl; + bIsSplitContainer = oCurrentContainer instanceof SplitContainer; + bIsNavContainer = oCurrentContainer instanceof NavContainer; + oView = oCurrentParams.view; + oCurrentNavigation = { + oContainer : oCurrentContainer, + oParams : oCurrentParams, + bIsMasterPage : (bIsSplitContainer && !!oCurrentContainer.getMasterPage(oView.getId())) + }; + bPreservePageInSplitContainer = bIsSplitContainer && + oCurrentParams.preservePageInSplitContainer && + //only switch the page if the container has a page in this aggregation + oCurrentContainer.getCurrentPage(oCurrentNavigation.bIsMasterPage) + && sNavigationIdentifier !== oCurrentParams.navigationIdentifier; + + //Skip no nav container controls + if (!(bIsNavContainer || bIsSplitContainer) || !oView) { + continue; + } + + for (i = 0; i < aResults.length; i++) { + oResult = aResults[i]; + + //The result targets a different container + if (oResult.oContainer !== oCurrentContainer) { + continue; + } + + //Always override the navigation when its a navContainer, and if its a splitContainer - in the mobile case it behaves like a nav container + if (bIsNavContainer || sap.ui.Device.system.phone) { + aResults.splice(i, 1); + aResults.push(oCurrentNavigation); + bFoundTheCurrentNavigation = true; + break; + } + + //We have a desktop SplitContainer and need to add to transitions if necessary + //The page is in the same aggregation - overwrite the previous transition + if (oResult.bIsMasterPage === oCurrentNavigation.bIsMasterPage) { + if (bPreservePageInSplitContainer) { + //the view should be preserved, check the next navigation + break; + } + + aResults.splice(i, 1); + aResults.push(oCurrentNavigation); + bFoundTheCurrentNavigation = true; + break; + } + } + + if (oCurrentContainer instanceof SplitContainer && !sap.ui.Device.system.phone) { + //We have a desktop SplitContainer and need to add to transitions if necessary + oCurrentNavigation.bIsMasterPage = !!oCurrentContainer.getMasterPage(oView.getId()); + } + + //A new Nav container was found + if (!bFoundTheCurrentNavigation) { + if (!!oCurrentContainer.getCurrentPage(oCurrentNavigation.bIsMasterPage) && bPreservePageInSplitContainer) { + //the view should be preserved, check the next navigation + continue; + } + aResults.push(oCurrentNavigation); + } + } + + return aResults; + }; + + + /** + * Triggers all navigation on the correct containers with the transition direction. + * + * @param {object} oParams the navigation parameters + * @param {boolean} bBack forces the nav container to show a backwards transition + * @private + */ + TargetHandler.prototype._applyNavigationResult = function(oParams, bBack) { + var oTargetControl = oParams.targetControl, + oPreviousPage, + //Parameters for the nav Container + oArguments = oParams.eventData, + //Nav container does not work well if you pass undefined as transition + sTransition = oParams.transition || "", + oTransitionParameters = oParams.transitionParameters, + sViewId = oParams.view.getId(), + //this is only necessary if the target control is a Split container since the nav container only has a pages aggregation + bNextPageIsMaster = oTargetControl instanceof SplitContainer && !!oTargetControl.getMasterPage(sViewId); + + //It is already the current page, no need to navigate + if (oTargetControl.getCurrentPage(bNextPageIsMaster).getId() === sViewId) { + $.sap.log.info("navigation to view with id: " + sViewId + " is skipped since it already is displayed by its targetControl", "sap.m.routing.TargetHandler"); + return; + } + + $.sap.log.info("navigation to view with id: " + sViewId + " the targetControl is " + oTargetControl.getId() + " backwards is " + bBack); + + if (bBack) { + // insert previous page if not in nav container yet + oPreviousPage = oTargetControl.getPreviousPage(bNextPageIsMaster); + + if (!oPreviousPage || oPreviousPage.getId() !== sViewId) { + oTargetControl.insertPreviousPage(sViewId, sTransition , oArguments); + } + + oTargetControl.backToPage(sViewId, oArguments, oTransitionParameters); + + } else { + oTargetControl.to(sViewId, sTransition, oArguments, oTransitionParameters); + } + + }; + + + /** + * Closes all dialogs if the closeDialogs property is set to true. + * + * @private + */ + TargetHandler.prototype._closeDialogs = function() { + if (!this._bCloseDialogs) { + return; + } + + // close open popovers + if (InstanceManager.hasOpenPopover()) { + InstanceManager.closeAllPopovers(); + } + + // close open dialogs + if (InstanceManager.hasOpenDialog()) { + InstanceManager.closeAllDialogs(); + } + }; + + + + return TargetHandler; + + }, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/routing/TargetHandler.js b/DVHMA-OpenUI5/www/resources/sap/m/routing/TargetHandler.js new file mode 100644 index 0000000..7b589d4 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/routing/TargetHandler.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/m/InstanceManager','sap/m/NavContainer','sap/m/SplitContainer','sap/ui/base/Object','sap/ui/core/routing/History','sap/ui/core/routing/Router'],function($,I,N,S,B,H,R){"use strict";var T=B.extend("sap.m.routing.TargetHandler",{constructor:function(c){this._aQueue=[];if(c===undefined){this._bCloseDialogs=true;}else{this._bCloseDialogs=!!c;}}});T.prototype.setCloseDialogs=function(c){this._bCloseDialogs=!!c;return this;};T.prototype.getCloseDialogs=function(){return this._bCloseDialogs;};T.prototype.addNavigation=function(p){this._aQueue.push(p);};T.prototype.navigate=function(d){var r=this._createResultingNavigations(d.navigationIdentifier);this._closeDialogs();while(r.length){this._applyNavigationResult(r.shift().oParams,this._getDirection(d));}};T.prototype._getDirection=function(d){var t=d.viewLevel,h=H.getInstance(),b=false;if(d.direction==="Backwards"){b=true;}else{if(isNaN(t)||isNaN(this._iCurrentViewLevel)||t===this._iCurrentViewLevel){if(d.askHistory){b=h.getDirection()==="Backwards";}}else{b=t + * For example if you are only using xmlViews in your app you can specify viewType="XML" so you don't have to repeat this in every target.
    + * If a target specifies viewType="JS", the JS will be stronger than the XML here is an example. + * + *
    +		 * 
    +		 * {
    +		 *     config: {
    +		 *         viewType : "XML"
    +		 *     }
    +		 *     targets : {
    +		 *         xmlTarget : {
    +		 *             ...
    +		 *         },
    +		 *         jsTarget : {
    +		 *             viewType : "JS"
    +		 *             ...
    +		 *         }
    +		 *     }
    +		 * }
    +		 * 
    +		 * 
    + * Then the effective config that will be used looks like this: + *
    +		 * 
    +		 * {
    +		 *     xmlTarget : {
    +		 *         // coming from the defaults
    +		 *         viewType : "XML"
    +		 *         ...
    +		 *     },
    +		 *     jsTarget : {
    +		 *        // XML is overwritten by the "JS" of the targets property
    +		 *        viewType : "JS"
    +		 *       ...
    +		 *     }
    +		 * }
    +		 * 
    +		 * 
    + * + * @param {string} [oOptions.config.rootView] + * The id of the rootView - This should be the id of the view that contains the control with the controlId + * since the control will be retrieved by calling the {@link sap.ui.core.mvc.View#byId} function of the rootView. + * If you are using a component and add the routing.targets do not set this parameter, + * since the component will set the rootView to the view created by the {@link sap.ui.core.UIComponent.html#createContent} function. + * If you specify the "parent" property of a target, the control will not be searched in the root view but in the view Created by the parent (see parent documentation). + * + * @param {object} oOptions.targets One or multiple targets in a map. + * @param {object} oOptions.targets.anyName a new target, the key severs as a name. An example: + *
    +		 * 
    +		 * {
    +		 *     targets: {
    +		 *         welcome: {
    +		 *             viewName: "Welcome",
    +		 *             viewType: "XML",
    +		 *             ....
    +		 *             // Other target parameters
    +		 *         },
    +		 *         goodbye: {
    +		 *             viewName: "Bye",
    +		 *             viewType: "JS",
    +		 *             ....
    +		 *             // Other target parameters
    +		 *         }
    +		 *     }
    +		 * }
    +		 * 
    +		 * 
    + * + * This will create two targets named 'welcome' and 'goodbye' you can display both of them or one of them using the {@link #display} function. + * + * @param {string} oOptions.targets.anyName.viewName The name of a view that will be created. + * To place the view into a Control use the controlAggregation and controlId. Views will only be created once per viewName. + *
    +		 * 
    +		 * {
    +		 *     targets: {
    +		 *         // If display("masterWelcome") is called, the master view will be placed in the 'MasterPages' of a control with the id splitContainter
    +		 *         masterWelcome: {
    +		 *             viewName: "Welcome",
    +		 *             controlId: "splitContainer",
    +		 *             controlAggregation: "masterPages"
    +		 *         },
    +		 *         // If display("detailWelcome") is called after the masterWelcome, the view will be removed from the master pages and added to the detail pages, since the same instance is used. Also the controls inside of the view will have the same state.
    +		 *         detailWelcome: {
    +		 *             // same view here, that's why the same instance is used
    +		 *             viewName: "Welcome",
    +		 *             controlId: "splitContainer",
    +		 *             controlAggregation: "detailPages"
    +		 *         }
    +		 *     }
    +		 * }
    +		 * 
    +		 * 
    + * + * If you want to have a second instance of the welcome view you can use the following: + * + * + * + *
    +		 * 
    +		 * // Some code you execute before you display the taget named 'detailWelcome':
    +		 * var oView = sap.ui.view(({ viewName : "Welcome", type : sap.ui.core.mvc.ViewType.XML});
    +		 * oTargets.getViews().setView("WelcomeWithAlias", oView)
    +		 *
    +		 * {
    +		 *     targets: {
    +		 *         // If display("masterWelcome") is called, the master viewName will be placed in the 'MasterPages' of a control with the id splitContainter
    +		 *         masterWelcome: {
    +		 *             viewName: "Welcome",
    +		 *             controlId: "splitContainer",
    +		 *             controlAggregation: "masterPages"
    +		 *         },
    +		 *         // If display("detailWelcome") is called after the masterWelcome, a second instance with an own controller instance will be added in the detail pages.
    +		 *         detailWelcome: {
    +		 *             // same viewName here, that's why the same instance is used
    +		 *             viewName: "WelcomeWithAlias",
    +		 *             controlId: "splitContainer",
    +		 *             controlAggregation: "detailPages"
    +		 *         }
    +		 *     }
    +		 * }
    +		 * 
    +		 * 
    + * + * + * @param {string} [oOptions.targets.anyName.viewType] + * The type of the view that is going to be created. These are the supported types: {@link sap.ui.core.mvc.ViewType}. + * You always have to provide a viewType except if you are using {@link sap.ui.core.routing.Views#setView}. + * @param {string} [oOptions.targets.anyName.viewPath] + * A prefix that will be prepended in front of the viewName.
    + * Example: viewName is set to "myView" and viewPath is set to "myApp" - the created viewName will be "myApp.myView". + * @param {string} [oOptions.targets.anyName.viewId] The id of the created view. + * This is will be prefixed with the id of the component set to the views instance provided in oOptions.views. For details see {@link sap.ui.core.routing.Views#getView}. + * @param {string} [oOptions.targets.anyName.targetParent] + * The id of the parent of the controlId - This should be the id of the view that contains your controlId, + * since the target control will be retrieved by calling the {@link sap.ui.core.mvc.View#byId} function of the targetParent. By default, + * this will be the view created by a component, so you do not have to provide this parameter. + * If you are using children, the view created by the parent of the child is taken. + * You only need to specify this, if you are not using a Targets instance created by a component + * and you should give the id of root view of your application to this property. + * @param {string} [oOptions.targets.anyName.controlId] The id of the control where you want to place the view created by this target. + * The view of the target will be put into this container Control, using the controlAggregation property. You have to specify both properties or the target will not be able to place itself. + * An example for containers are {@link sap.ui.ux3.Shell} with the aggregation 'content' or a {@link sap.m.NavContainer} with the aggregation 'pages'. + * + * @param {string} [oOptions.targets.anyName.controlAggregation] The name of an aggregation of the controlId, that contains views. + * Eg: a {@link sap.m.NavContainer} has an aggregation 'pages', another Example is the {@link sap.ui.ux3.Shell} it has 'content'. + * @param {boolean} [oOptions.targets.anyName.clearAggregation] Defines a boolean that can be passed to specify if the aggregation should be cleared + * - all items will be removed - before adding the View to it. + * When using a {@link sap.ui.ux3.Shell} this should be true. For a {@link sap.m.NavContainer} it should be false. When you use the {@link sap.m.routing.Router} the default will be false. + * @param {string} [oOptions.targets.parent] A reference to another target, using the name of the target. + * If you display a target that has a parent, the parent will also be displayed. + * Also the control you specify with the controlId parameter, will be searched inside of the view of the parent not in the rootView, provided in the config. + * The control will be searched using the byId function of a view. When it is not found, the global id is checked. + *
    + * The main usecase for the parent property is placing a view inside a smaller container of a view, which is also created by targets. + * This is useful for lazy loading views, only if the user really navigates to this part of your application. + *
    + * Example: + * Our aim is to lazy load a tab of an IconTabBar (a control that displays a view initially and when a user clicks on it the view changes). + * It's a perfect candidate to lazy load something inside of it. + *
    + * Example app structure:
    + * We have a rootView that is returned by the createContent function of our UIComponent. This view contains a sap.m.App control with the id 'myApp' + *
    +		 * 
    +		 * <View xmlns="sap.m">
    +		 *     <App id="myApp"/>
    +		 * </View>
    +		 * 
    +		 * 
    + * an xml view called 'Detail' + *
    +		 * 
    +		 * <View xmlns="sap.m">
    +		 *     <IconTabBar>
    +		 *         <items>
    +		 *             <IconTabFilter>
    +		 *                 <!-- content of our first tab -->
    +		 *             <IconTabFilter>
    +		 *             <IconTabFilter id="mySecondTab">
    +		 *                 <!-- nothing here, since we will lazy load this one with a target -->
    +		 *             <IconTabFilter>
    +		 *         </items>
    +		 *     </IconTabBar>
    +		 * </View>
    +		 * 
    +		 * 
    + * and a view called 'SecondTabContent', this one contains our content we want to have lazy loaded. + * Now we need to create our Targets instance with a config matching our app: + *
    +		 * 
    +		 *     new Targets({
    +		 *         //Creates our views except for root, we created this one before - when using a component you
    +		 *         views: new Views(),
    +		 *         config: {
    +		 *             // all of our views have that type
    +		 *             viewType: 'XML',
    +		 *             // a reference to the app control in the rootView created by our UIComponent
    +		 *             controlId: 'myApp',
    +		 *             // An app has a pages aggregation where the views need to be put into
    +		 *             controlAggregation: 'pages'
    +		 *         },
    +		 *         targets: {
    +		 *             detail: {
    +		 *                 viewName: 'Detail'
    +		 *             },
    +		 *             secondTabContent: {
    +		 *                 // A reference to the detail target defined above
    +		 *                 parent: 'detail',
    +		 *                 // A reference to the second Tab container in the Detail view. Here the target does not look in the rootView, it looks in the Parent view (Detail).
    +		 *                 controlId: 'mySecondTab',
    +		 *                 // An IconTabFilter has an aggregation called content so we need to overwrite the pages set in the config as default.
    +		 *                 controlAggregation: 'content',
    +		 *                 // A view containing the content
    +		 *                 viewName: 'SecondTabContent'
    +		 *             }
    +		 *         }
    +		 *     });
    +		 * 
    +		 * 
    + * + * Now if we call oTargets.display("secondTabContent") , 2 views will be created: Detail and SecondTabContent. + * The 'Detail' view will be put into the pages aggregation of the App. And afterwards the 'SecondTabContent' view will be put into the content Aggregation of the second IconTabFilter. + * So a parent will always be created before the target referencing it. + * + * + * @param {integer} [oOptions.targets.anyName.viewLevel] + * If you are having an application that has a logical order of views (eg: a create account process, first provide user data, then review and confirm them). + * You always want to always show a backwards transition if a navigation from the confirm to the userData page takes place. + * Therefore you may use the viewLevel. The viewLevel has to be an integer. The user data page should have a lower number than the confirm page. + * These levels should represent the user process of your application and they do not have to match the container structure of your Targets. + * If the user navigates between views with the same viewLevel, a forward transition is taken. If you pass a direction into the display function, the viewLevel will be ignored.
    + * Example:
    + *
    +		 * 
    +		 *     {
    +		 *         targets: {
    +		 *             startPage: {
    +		 *                 viewLevel: 0
    +		 *                 // more properties
    +		 *             },
    +		 *             userData: {
    +		 *                 viewLevel: 1
    +		 *                 // more properties
    +		 *             },
    +		 *             confirmRegistration: {
    +		 *                 viewLevel: 2
    +		 *                 // more properties
    +		 *             },
    +		 *             settings: {
    +		 *                 //no view level here
    +		 *             }
    +		 *         }
    +		 *     }
    +		 * 
    +		 * 
    + * + * Currently the 'userData' target is displayed. + *
      + *
    • + * If we navigate to 'startPage' the navContainer will show a backwards navigation, since the viewLevel is lower. + *
    • + *
    • + * If we navigate to 'userData' the navContainer will show a forwards navigation, since the viewLevel is higher. + *
    • + *
    • + * If we navigate to 'settings' the navContainer will show a forwards navigation, since the viewLevel is not defined and cannot be compared. + *
    • + *
    + * + * @param {string} [oOptions.targets.anyName.transition] define which transition of the {@link sap.m.NavContainer} will be applied when navigating. If it is not defined, the nav container will take its default transition. + * @param {string} [oOptions.targets.anyName.transitionParameters] define the transitionParameters of the {@link sap.m.NavContainer} + * + * @since 1.28.1 + * @public + * @alias sap.m.routing.Targets + */ + return Targets.extend("sap.m.routing.Targets", /** @lends sap.m.routing.Targets.prototype */ { + constructor: function(oOptions) { + if (oOptions.targetHandler) { + this._oTargetHandler = oOptions.targetHandler; + } else { + this._oTargetHandler = new TargetHandler(); + this._bHasOwnTargetHandler = true; + } + + Targets.prototype.constructor.apply(this, arguments); + }, + + destroy: function () { + Targets.prototype.destroy.apply(this, arguments); + + if (this._bHasOwnTargetHandler) { + this._oTargetHandler.destroy(); + } + + this._oTargetHandler = null; + }, + + /** + * Returns the TargetHandler instance. + * + * @return {sap.m.routing.TargetHandler} the TargetHandler instance + * @public + */ + getTargetHandler : function () { + return this._oTargetHandler; + }, + + display: function () { + var iViewLevel, + sName; + + // don't remember previous displays + this._oLastDisplayedTarget = null; + + var oReturnValue = Targets.prototype.display.apply(this, arguments); + + // maybe a wrong name was provided then there is no last displayed target + if (this._oLastDisplayedTarget) { + iViewLevel = this._oLastDisplayedTarget._oOptions.viewLevel; + sName = this._oLastDisplayedTarget._oOptions.name; + } + + this._oTargetHandler.navigate({ + viewLevel: iViewLevel, + navigationIdentifier: sName + }); + + return oReturnValue; + }, + + _constructTarget : function (oOptions, oParent) { + return new Target(oOptions, this._oViews, oParent, this._oTargetHandler); + }, + + _displaySingleTarget : function (sName) { + var oTarget = this.getTarget(sName); + if (oTarget) { + this._oLastDisplayedTarget = oTarget; + } + + return Targets.prototype._displaySingleTarget.apply(this, arguments); + } + }); + + }, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/routing/Targets.js b/DVHMA-OpenUI5/www/resources/sap/m/routing/Targets.js new file mode 100644 index 0000000..b82051f --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/routing/Targets.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['sap/ui/core/routing/Targets','./TargetHandler','./Target'],function(T,a,b){"use strict";return T.extend("sap.m.routing.Targets",{constructor:function(o){if(o.targetHandler){this._oTargetHandler=o.targetHandler;}else{this._oTargetHandler=new a();this._bHasOwnTargetHandler=true;}T.prototype.constructor.apply(this,arguments);},destroy:function(){T.prototype.destroy.apply(this,arguments);if(this._bHasOwnTargetHandler){this._oTargetHandler.destroy();}this._oTargetHandler=null;},getTargetHandler:function(){return this._oTargetHandler;},display:function(){var v,n;this._oLastDisplayedTarget=null;var r=T.prototype.display.apply(this,arguments);if(this._oLastDisplayedTarget){v=this._oLastDisplayedTarget._oOptions.viewLevel;n=this._oLastDisplayedTarget._oOptions.name;}this._oTargetHandler.navigate({viewLevel:v,navigationIdentifier:n});return r;},_constructTarget:function(o,p){return new b(o,this._oViews,p,this._oTargetHandler);},_displaySingleTarget:function(n){var t=this.getTarget(n);if(t){this._oLastDisplayedTarget=t;}return T.prototype._displaySingleTarget.apply(this,arguments);}});},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/m/themes/base/.theming b/DVHMA-OpenUI5/www/resources/sap/m/themes/base/.theming new file mode 100644 index 0000000..aa67cd3 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/themes/base/.theming @@ -0,0 +1,5 @@ +{ + "sEntity" : "Theme", + "sId" : "base", + "sVendor" : "SAP" +} \ No newline at end of file diff --git a/DVHMA-OpenUI5/www/resources/sap/m/themes/base/library-parameters.json b/DVHMA-OpenUI5/www/resources/sap/m/themes/base/library-parameters.json new file mode 100644 index 0000000..2aee106 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/themes/base/library-parameters.json @@ -0,0 +1,293 @@ +{ + "sapBrandColor": "#000000", + "sapHighlightColor": "#ffffff", + "sapBaseColor": "#dddddd", + "sapShellColor": "#000000", + "sapBackgroundColor": "#ffffff", + "sapTextColor": "#000000", + "sapLinkColor": "#000000", + "sapCompanyLogo": "none", + "sapBackgroundImage": "none", + "sapBackgroundImageOpacity": "1", + "sapBackgroundImageRepeat": "false", + "sapSelectedColor": "#ffffff", + "sapActiveColor": "#ffffff", + "sapHighlightTextColor": "#000000", + "sapTitleColor": "#333333", + "sapNegativeColor": "#d0001d", + "sapCriticalColor": "#fffcb5", + "sapPositiveColor": "#008a3b", + "sapNeutralColor": "#306898", + "sapContent_LabelColor": "#000000", + "sapContent_DisabledTextColor": "#999999", + "sapContent_ForegroundColor": "#bbb8b8", + "sapContent_ForegroundBorderColor": "#9b9b9b", + "sapContent_ForegroundTextColor": "#000000", + "sapShell_Background": "#746b6b", + "sapShell_BorderColor": "#5c4b4b", + "sapShell_TextColor": "#ffffff", + "sapButton_Background": "#ffffff", + "sapButton_BorderColor": "#000000", + "sapButton_TextColor": "#000000", + "sapButton_Disabled_Background": "#ffffff", + "sapButton_Disabled_BorderColor": "#949494", + "sapButton_Disabled_TextColor": "#828282", + "sapButton_Hover_Background": "#d1d1d1", + "sapButton_Hover_BorderColor": "#000000", + "sapButton_Hover_TextColor": "#000000", + "sapButton_Emphasized_Background": "#ffffff", + "sapButton_Emphasized_BorderColor": "#000000", + "sapButton_Emphasized_TextColor": "#000000", + "sapButton_Reject_Background": "#d0001d", + "sapButton_Accept_Background": "#008a3b", + "sapField_Background": "#ffffff", + "sapField_BorderColor": "#969696", + "sapField_HelpBackground": "#dddddd", + "sapField_Hover_Background": "#ffffff", + "sapField_Hover_BorderColor": "#969696", + "sapField_Hover_HelpBackground": "#969696", + "sapField_Focus_Background": "#fef09e", + "sapField_Focus_BorderColor": "#969696", + "sapField_Focus_HelpBackground": "#fef09e", + "sapField_ReadOnly_Background": "#ffffff", + "sapField_ReadOnly_BorderColor": "#969696", + "sapField_ReadOnly_HelpBackground": "#ffffff", + "sapField_Disabled_Background": "#ffffff", + "sapField_Disabled_BorderColor": "#c0b2b2", + "sapField_Disabled_HelpBackground": "#ffffff", + "sapField_RequiredColor": "#d0001d", + "sapField_InvalidColor": "#d0001d", + "sapField_InvalidBackground": "#fbe9eb", + "sapField_WarningColor": "#fffcb5", + "sapField_WarningBackground": "#ffffff", + "sapField_SuccessColor": "#008000", + "sapField_SuccessBackground": "#a5eea5", + "sapGroup_TitleBackground": "#dddddd", + "sapGroup_TitleBorderColor": "#bebebe", + "sapGroup_TitleTextColor": "#000000", + "sapGroup_ContentBackground": "#ffffff", + "sapGroup_ContentBorderColor": "#a7a7a7", + "sapGroup_FooterBackground": "#dddddd", + "sapToolbar_Background": "#dddddd", + "sapToolbar_SeparatorColor": "#ffffff", + "sapList_HeaderBackground": "#e0e0e0", + "sapList_HeaderBorderColor": "#d5d5d5", + "sapList_HeaderTextColor": "#323232", + "sapList_BorderColor": "#d5d5d5", + "sapList_HighlightColor": "#ffffff", + "sapList_SelectionBackgroundColor": "#ffffff", + "sapList_Hover_Background": "#ffffff", + "sapScrollBar_FaceColor": "#e7e7e7", + "sapScrollBar_TrackColor": "#ffffff", + "sapScrollBar_BorderColor": "#e7e7e7", + "sapScrollBar_SymbolColor": "#515151", + "sapUiBaseColor": "#dddddd", + "sapUiContentDisabledTextColor": "#999999", + "sapUiContentForegroundBorderColor": "#a6a6a6", + "sapUiButtonBackground": "#ffffff", + "sapUiButtonBorderColor": "#000000", + "sapUiButtonTextColor": "#000000", + "sapUiButtonDisabledBackground": "#ffffff", + "sapUiButtonDisabledBorderColor": "#949494", + "sapUiButtonDisabledTextColor": "#828282", + "sapUiButtonHoverBackground": "#808080", + "sapUiButtonHoverBorderColor": "#000000", + "sapUiButtonHoverTextColor": "#000000", + "sapUiButtonRejectBackground": "#ff0000", + "sapUiButtonAcceptBackground": "#008000", + "sapUiFieldBackground": "#ffffff", + "sapUiFieldBorderColor": "#bfbfbf", + "sapUiFieldHelpBackground": "#ffffff", + "sapUiFieldHoverBackground": "#ffffff", + "sapUiFieldHoverBorderColor": "#969696", + "sapUiFieldHoverHelpBackground": "#969696", + "sapUiFieldFocusBackground": "#ffffff", + "sapUiFieldFocusBorderColor": "#969696", + "sapUiFieldFocusHelpBackground": "#ffffff", + "sapUiFieldReadOnlyBackground": "#808080", + "sapUiFieldReadOnlyBorderColor": "#969696", + "sapUiFieldReadOnlyHelpBackground": "#808080", + "sapUiFieldDisabledBackground": "#ffffff", + "sapUiFieldDisabledBorderColor": "#969696", + "sapUiFieldDisabledHelpBackground": "#ffffff", + "sapUiFieldRequiredColor": "#969696", + "sapUiFieldInvalidColor": "#ff0000", + "sapUiFieldInvalidBackground": "#ff9a90", + "sapUiFieldWarningColor": "#ffff00", + "sapUiFieldWarningBackground": "#faf2b0", + "sapUiFieldSuccessColor": "#008000", + "sapUiFieldSuccessBackground": "#a5eea5", + "sapUiListHeaderBorderColor": "#000000", + "sapUiListHighlightColor": "#ffffff", + "sapUiListHoverBackground": "#ffffff", + "sapUiListSelectionBackgroundColor": "#111177", + "sapUiBrand": "#f0ab00", + "sapUiHighlight": "#111177", + "sapUiSelected": "#111177", + "sapUiActive": "#111177", + "sapUiPurple": "#800080", + "sapUiOrange": "#ffa500", + "sapUiGreen": "#008000", + "sapUiBlue": "#0000ff", + "sapUiRed": "#ff0000", + "sapUiYellow": "#ffff00", + "sapUiBase": "#000000", + "sapUiBaseBG": "#ffffff", + "sapUiBaseBorder": "#000000", + "sapUiBaseText": "#000000", + "sapUiBaseLine": "#000000", + "sapUiWhite": "#ffffff", + "sapUiWhiteBG": "#ffffff", + "sapUiExtraLightBG": "#ffffff", + "sapUiLightBG": "#d3d3d3", + "sapUiMediumBG": "#808080", + "sapUiDarkBG": "#a9a9a9", + "sapUiDeepBG": "#000000", + "sapUiBlackBG": "#000000", + "sapUiHoverBG": "#808080", + "sapUiMediumAltBG": "#808080", + "sapUiDarkAltBG": "#a9a9a9", + "sapUiButtonStandardBG": "#ffffff", + "sapUiButtonEmphasizedBG": "#ffff00", + "sapUiButtonNegativeBG": "#ff0000", + "sapUiButtonPositiveBG": "#008000", + "sapUiErrorBG": "#ff9a90", + "sapUiWarningBG": "#faf2b0", + "sapUiReadOnlyBG": "#808080", + "sapUiExtraLightText": "#d3d3d3", + "sapUiLightText": "#d3d3d3", + "sapUiMediumText": "#808080", + "sapUiDarkText": "#a9a9a9", + "sapUiDeepText": "#000000", + "sapUiText": "#000000", + "sapUiTextInverted": "#ffffff", + "sapUiLink": "#0000ff", + "sapUiLinkInverted": "#0000ff", + "sapUiLinkVisited": "#800080", + "sapUiLinkActive": "#ff0000", + "sapUiLinkHover": "#ff0000", + "sapUiNegativeText": "#ff0000", + "sapUiPositiveText": "#b5e7a8", + "sapUiWhiteBorder": "#ffffff", + "sapUiExtraLightBorder": "#d3d3d3", + "sapUiLightBorder": "#808080", + "sapUiMediumBorder": "#000000", + "sapUiDarkBorder": "#000000", + "sapUiBlackBorder": "#000000", + "sapUiErrorBorder": "#ff0000", + "sapUiWarningBorder": "#ffff00", + "sapUiLightLine": "#d3d3d3", + "sapUiMediumLine": "#808080", + "sapUiEmphasizedLine": "#111177", + "sapUiDarkLine": "#a9a9a9", + "sapUiTableRowBG": "#ffffff", + "sapUiTableRowAlternatingBG": "#ffffff", + "sapUiTableRowSelectionBG": "#111177", + "sapUiTableRowSelectionReadOnlyBG": "#111177", + "sapUiTableRowHoverBG": "#808080", + "sapUiListBG": "#f7f7f7", + "sapUiTextColor": "#008000", + "sapUiTextTitleColor": "#008000", + "sapUiTextSelectionColor": "#008000", + "sapUiTextDisabled": "#999999", + "sapUiTextTitle": "#000000", + "sapUiTextSelection": "#ffffff", + "sapUiTextfieldBackground": "#ffffff", + "sapUiLineHeight": "21px", + "sapUiFontFamily": "Arial, Helvetica, sans-serif", + "sapUiFontMonospaceFamily": "Lucida Console", + "sapUiFontSize": "medium", + "sapUiFontLargeSize": "large", + "sapUiFontSmallSize": "small", + "sapUiFontHeader1Size": "xx-large", + "sapUiFontHeader2Size": "x-large", + "sapUiFontHeader3Size": "large", + "sapUiFontHeader4Size": "medium", + "sapUiFontHeader5Size": "medium", + "sapUiFontHeader6Size": "medium", + "sapUiUx3ShellBackgroundColor": "#ffffff", + "sapUiUx3ShellHoverColor": "#000000", + "sapUiUx3ShellSideBarBaseWidth": "40px", + "sapUiUx3ShellPaneOverflowButtonHeight": "120px", + "sapUiUx3ShellToolPaletteIconFontColor": "#8899aa", + "sapUiUx3ExactLstExpandOffset": "0 0", + "sapUiUx3ExactLstRootExpandOffset": "0 3", + "sapUiUx3ExactLstCollapseWidth": "24px", + "sapUiUx3ExactLstHeaderHeight": "25px", + "sapUiUx3ExactLstContentTop": "25px", + "sapUiNotificationBarBG": "rgba(128, 128, 128, 0.92)", + "sapUiNotificationBarBG_IE": "#808080", + "sapUiNotifierHoverColor": "#111177", + "sapUiNotifierSeparator": "#808080", + "sapUiNotificationText": "#000000", + "sapUiNotificationTimestamp": "#545454", + "sapUiNotificationBarCalloutBorder": "rgba(128, 128, 128, 0)", + "sapUiNotificationBarCalloutBorder_IE": "#808080", + "sapUiNotificationBarCalloutArr": "rgba(128, 128, 128, 0.92)", + "sapUiNotificationBarHeight": "40px", + "sapUiNotificationBarHeightMinimized": "0px", + "sapUiNotificationBarHeightMaximized": "40%", + "sapUiNotifierWidth": "40px", + "sapUiNotifierSeparatorWidth": "2px", + "sapUiUx3ToolPopupInverted": "true", + "sapUiUx3ToolPopupArrowWidth": "13px", + "sapUiUx3ToolPopupArrowHeight": "20px", + "sapUiUx3ToolPopupArrowRightMarginCorrection": "-2px", + "sapUiUx3ToolPopupArrowRightMarginCorrectionInverted": "-7px", + "sapUiUx3TPPaddingBottom": "50px", + "sapUiButtonActiveBorderColor": "#000000", + "sapUiButtonActiveBackground": "#a9a9a9", + "sapUiButtonEmphasizedBorderColor": "#000000", + "sapUiButtonEmphasizedBackground": "#ffff00", + "sapUiButtonEmphasizedDisabledBorderColor": "#000000", + "sapUiButtonEmphasizedDisabledBackground": "#ffff00", + "sapUiButtonEmphasizedHoverBorderColor": "#000000", + "sapUiButtonEmphasizedHoverBackground": "#808080", + "sapUiButtonEmphasizedActiveBorderColor": "#000000", + "sapUiButtonEmphasizedActiveBackground": "#a9a9a9", + "sapUiButtonAcceptBorderColor": "#000000", + "sapUiButtonAcceptDisabledBorderColor": "#000000", + "sapUiButtonAcceptDisabledBackground": "#008000", + "sapUiButtonAcceptHoverBorderColor": "#000000", + "sapUiButtonAcceptHoverBackground": "#808080", + "sapUiButtonAcceptActiveBorderColor": "#000000", + "sapUiButtonAcceptActiveBackground": "#a9a9a9", + "sapUiButtonRejectBorderColor": "#000000", + "sapUiButtonRejectDisabledBorderColor": "#000000", + "sapUiButtonRejectDisabledBackground": "#ff0000", + "sapUiButtonRejectHoverBorderColor": "#000000", + "sapUiButtonRejectHoverBackground": "#808080", + "sapUiButtonRejectActiveBorderColor": "#000000", + "sapUiButtonRejectActiveBackground": "#a9a9a9", + "sapUiButtonLiteBackground": "transparent", + "sapUiToggleButtonPressedDisabledBackground": "#d8d8e8", + "sapUiToggleButtonPressedBackground": "#111177", + "sapUiPositiveBG": "#b5e7a8", + "sapUiShadowTint": "#000000", + "sapUiShadow": "5px 5px 10px rgba(0, 0, 0, 0.5)", + "sapUiThemeDesignerCustomCss": "false", + "sapUiMarginTiny": "0.5rem", + "sapUiMarginSmall": "1rem", + "sapUiMarginMedium": "2rem", + "sapUiMarginLarge": "3rem", + "sapUiEscapedEmptyString": "", + "sapMInputBaseMsgBG": "#ffffff", + "sapMShellAppWidthLimit": "1280px", + "sapMShellAppWidthLimitBy2": "640px", + "sapMShellAppHeight": "3333px", + "sapMShellHeaderHeight": "68px", + "sapMShellMinHeightForHeader": "3401px", + "sapMShellMinWidthForLogoAside": "1480px", + "sapMShellMinWidthForBigLogoAside": "1680px", + "sapMShellContentBG": "rgba(255, 255, 255, 0.3)", + "sapMShellAppWidthLimitPlusPadding": "1296px", + "sapMTitleSize1": "xx-large", + "sapMTitleSize2": "x-large", + "sapMTitleSize3": "large", + "sapMTitleSize4": "medium", + "sapMTitleSize5": "medium", + "sapMTitleSize6": "medium", + "sapMTitleColor": "#000000", + "sapMTitleFontFamily": "Arial, Helvetica, sans-serif", + "sapMTitleFontWeight": "normal" +} \ No newline at end of file diff --git a/DVHMA-OpenUI5/www/resources/sap/m/themes/base/library.css b/DVHMA-OpenUI5/www/resources/sap/m/themes/base/library.css new file mode 100644 index 0000000..d9b8483 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/themes/base/library.css @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + .sapMALI{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex}.sapMALIText{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:3rem;display:block;text-align:center}.sapMALI>.sapMLIBContent{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-moz-box-pack:center;-ms-justify-content:center;justify-content:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sapMALI .sapMLIBUnread,.sapMALI .sapMLIBSelectS,.sapMALI .sapMLIBSelectM,.sapMALI .sapMLIBSelectD{display:none}.sapMActionSheet{width:100%}.sapMActionSheet:focus{outline:none}.sapMActionSheetDialog .sapMDialogScroll{display:block}.sapMApp{width:100%;height:100%}.sapMBar{display:block;width:100%;position:relative}.sapMBarContainer{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarContainer{display:flex;align-items:center}.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarPH{justify-content:center}.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarRight{justify-content:flex-end}.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarContainer>.sapMBarChild{flex:none}.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarContainer>.sapMButton,.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarContainer>.sapMText,.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarContainer>.sapMLabel{flex:initial}.sapMBarLeft,.sapMBarRight{position:absolute;height:100%}.sapMBarLeft{left:0}.sapMBarRight{text-align:right;right:0}.sapMBarRight.sapMRTL{text-align:left}.sapMBarPH{display:inline-block;height:3rem}.sapMBarMiddle{text-align:center;width:100%;height:0;top:0;left:0}.sapMBar .sapMLabel{display:inline}.sapMBusyDialog{width:18.75em;text-align:center}.sapMLabel.sapMBusyDialogLabel{display:block;white-space:normal;font-family:Arial,Helvetica,sans-serif;font-size:medium;line-height:1.5em;margin-right:1em;margin-left:1em;text-align:center!important}.sapMBusyIndicator,.sapMBusyIndicatorLight,.sapMBusyIndicatorDark{display:inline-block;vertical-align:middle}.sapMBsyIndLabel{vertical-align:middle;padding-left:.5em}html[dir='rtl'] .sapMBsyIndIcon{-moz-animation:sapMBsyIndRotateRTL 2s linear 0s infinite normal none;-webkit-animation:sapMBsyIndRotateRTL 2s linear 0 infinite normal none;animation:sapMBsyIndRotateRTL 2s linear 0 infinite normal none}.sapMBsyIndIcon{vertical-align:middle;-webkit-transform:rotate(0deg) translateZ(0);-webkit-transition-duration:0ms;-ms-transform:rotate(0deg) translateZ(0);-ms-transition-duration:0ms;transform:rotate(0deg) translateZ(0);transition-duration:0ms;-moz-animation:sapMBsyIndRotate 2s linear 0s infinite normal none;-webkit-animation:sapMBsyIndRotate 2s linear 0 infinite normal none;animation:sapMBsyIndRotate 2s linear 0 infinite normal none}@-moz-keyframes sapMBsyIndRotate{from{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(360deg)}}@-webkit-keyframes sapMBsyIndRotate{from{-webkit-transform:rotate(0deg) translateZ(0)}to{-webkit-transform:rotate(360deg) translateZ(0)}}@keyframes sapMBsyIndRotate{from{transform:rotate(0deg) translateZ(0)}to{transform:rotate(360deg) translateZ(0)}}@-moz-keyframes sapMBsyIndRotateRTL{from{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(-360deg)}}@-webkit-keyframes sapMBsyIndRotateRTL{from{-webkit-transform:rotate(0deg) translateZ(0)}to{-webkit-transform:rotate(-360deg) translateZ(0)}}@keyframes sapMBsyIndRotateRTL{from{transform:rotate(0deg) translateZ(0)}to{transform:rotate(-360deg) translateZ(0)}}.sapMBtn{height:2.750rem;margin:0;padding:0;vertical-align:top;border:none;cursor:pointer}.sapMBtn::-moz-focus-inner{padding:0;border:0}.sapMBtnInner{-webkit-appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-background-clip:padding-box;background-clip:padding-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;height:2.500rem;min-width:2.500em;margin:0;padding:0;text-align:center;position:relative}.sapMBtnIconLeft{position:absolute;top:0;left:0}.sapMBtnBackIconLeft{position:absolute;top:0;left:2.375rem}.sapMBtnIconRight{position:absolute;top:0;right:0}.sapMBtnContent{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:top;line-height:2.5rem}.sapMBtnContentLeft{padding-right:2.375rem}.sapMBtnContentRight{padding-left:2.375rem}.sapMBtnBackContentRight{padding-left:4.750rem}html[data-sap-ui-browser*='ie'] .sapMBtnContentWithIcon{display:inline}.sapMBtnDisabled{pointer-events:none;cursor:default}.sapMCrsl{position:relative;overflow:hidden;touch-action:pan-y;-ms-touch-action:pan-y}.sapMCrsl.sapMCrslLeft{text-align:left}.sapMCrsl.sapMCrslCenter{text-align:center}.sapMCrsl.sapMCrslFluid>.sapMCrslInner>*{width:100%}.sapMCrsl.sapMCrslFluid.sapMCrslCenter>.sapMCrslInner>*:first-child{margin-left:0}.sapMCrslInner{height:100%;position:relative;white-space:nowrap;text-align:begin;font-size:0;-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-ms-transition-property:-ms-transform;transition-property:transform;-webkit-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);-moz-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);-ms-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);-webkit-transition-duration:0.5s;-moz-transition-duration:0.5s;-ms-transition-duration:0.5s;transition-duration:0.5s}html[data-sap-ui-browser^="ie"] .sapMCrslInner{text-align:left}html[dir=rtl][data-sap-ui-browser^="ie"] .sapMCrslInner{text-align:right}.sapMCrslItemTable{display:table}.sapMCrslItemTableCell{height:100%;display:table-cell}.sapMCrslImg{text-align:center;vertical-align:middle}.sapMCrslInner.sapMCrslNoTransition{-webkit-transition-duration:0.01s;-moz-transition-duration:0.01s;-ms-transition-duration:0.01s;transition-duration:0.01s}.sapMCrslInner.sapMCrslHideNonActive>:not(.sapMCrslActive) .sapMCrslItemTableCell{visibility:hidden}.sapMCrslInner>*{display:inline-block;vertical-align:top;white-space:normal;font-size:1rem}.sapMCrslFluid>.sapMCrslInner>*{box-sizing:border-box;-ms-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.sapMCrslItemTable,.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{height:100%;width:100%}.sapMCrsl.sapUiContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll,.sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll,.sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll,.sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:0}.sapMSplitContainerDetail .sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:1rem}.sapMCrsl.sapUiNoContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:0}.sapMCb{display:inline-block;position:relative}.sapMCbBg{height:2rem;width:2rem;position:relative;display:inline-block;top:0.7rem}.sapMCbBg>.sapMCbMark,.sapMCbBg.sapMCbMark>input{font-size:inherit}.sapMListTblRow.sapMListTblRowTop>td{vertical-align:top}.sapMListTblRow.sapMListTblRowMiddle>td{vertical-align:middle}.sapMListTblRow.sapMListTblRowBottom>td{vertical-align:bottom}.sapMComboBoxBaseArrow{display:inline-block;cursor:pointer;outline:none;padding:0;border:none;-webkit-appearance:none;-moz-appearance:none;background:transparent;font-size:inherit}.sapMComboBoxBaseReadonly .sapMComboBoxBaseArrow{display:none}.sapMCLI{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex}.sapMCLI>.sapMLIBContent{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1}.sapMCustomTile{display:inline-block;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition-property:transform3d;-webkit-transition-duration:0.2s;transition-property:transform3d;transition-duration:0.2s;width:13em;height:15em;margin:0}.sapMCustomTileContent{overflow:hidden;width:100%;height:100%}.sap-phone .sapMCustomTile{width:9.5em;height:11em;margin:0}.sapMDP>.sapMInputBaseInner{padding-right:2.5rem}.sapUiSizeCompact .sapMDP>.sapMInputBaseInner{padding-right:1.625rem}.sapMDateRangeSelection{color:#008000;border:1px solid blue}.sapMDTICustom .dwwr{min-width:13rem}.sapMDTICustom .dwbg .dwb{padding-right:.25rem;padding-left:.25rem}html[dir=rtl] .sapMDTICustomTime .dwc,html[dir=rtl] .sapMDTICustomDateTime .dwc:last-child{direction:ltr}.sapMDialog,.sapMMessageDialog .sapMDialogScrollCont,.sapMDialogSection{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMDialog{position:absolute;background-clip:padding-box;-webkit-animation-duration:0.1s;-webkit-animation-timing-function:ease-in;-webkit-animation-fill-mode:forwards;-moz-animation-duration:0.1s;-moz-animation-timing-function:ease-in;animation-duration:0.1s;animation-timing-function:ease-in;animation-fill-mode:forwards;max-width:100%;max-height:100%;overflow:hidden;outline:none}.sap-tablet .sapMDialog,.sap-desktop .sapMDialog{min-width:25rem}.sapMDialog>.sapMBar{position:relative;width:auto}.sapMDialogSection{position:relative;overflow:hidden}.sapMDialogScroll{display:inline-block;min-height:100%;width:100%;vertical-align:middle}.sapMDialogVerScrollDisabled .sapMDialogScroll{height:100%}.sapMDialogHorScrollDisabled .sapMDialogScroll{display:block;width:100%}.sapMDialogHidden{visibility:hidden}.sapMDialogSliding{-webkit-transition-duration:0.3s;-moz-transition-duration:0.3s;transition-duration:0.3s}.sapMDialogBlockLayer{opacity:0.6}.sapMDialogTransparent{opacity:0}.sapMDialogActions{display:flex;display:-webkit-box;display:-ms-flexbox;display:-moz-box;width:100%}.sapMDialogActions>.sapMDialogAction{flex:1 1 0;-webkit-box-flex:1;width:0;-ms-flex:1 1 0;-moz-box-flex:1}html[data-sap-ui-browser^="ie9"] .sapMDialog-CTX .sapMDialogActions>.sapMDialogAction{display:inline-block;vertical-align:bottom}.sapUiPopupWithPadding .sapMDialogScrollCont{padding:1rem}.sapMMessageDialog .sapMDialogScrollCont{padding:1.5rem;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMDialogWithScrollCont .sapMDialogScroll{position:relative}.sapMDialogWithScrollCont .sapMDialogScrollCont{padding:0;width:100%;height:100%;position:absolute}.sapMActionSheetDialog .sapMDialogScrollCont{padding:0}@-webkit-keyframes sapMDialogZoomIn{0%{-webkit-transform:scale3d(0.9,0.9,1);transform:scale3d(0.9,0.9,1);opacity:0}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}}@-webkit-keyframes sapMDialogZoomOut{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}100%{-webkit-transform:scale3d(0.9,0.9,1);transform:scale3d(0.9,0.9,1);opacity:0}}@-moz-keyframes sapMDialogZoomIn{0%{-moz-transform:scale3d(0.9,0.9,1);transform:scale3d(0.9,0.9,1);opacity:0}100%{-moz-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}}@-moz-keyframes sapMDialogZoomOut{0%{-moz-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}100%{-moz-transform:scale3d(0.9,0.9,1);transform:scale3d(0.9,0.9,1);opacity:0}}@keyframes sapMDialogZoomIn{from{transform:scale3d(0.9,0.9,1);opacity:0}to{transform:scale3d(1,1,1);opacity:1}}@keyframes sapMDialogZoomOut{from{transform:scale3d(1,1,1);opacity:1}to{transform:scale3d(0.9,0.9,1);opacity:0}}.sapMDialogOpening{-webkit-animation-name:sapMDialogZoomIn;-moz-animation-name:sapMDialogZoomIn;animation-name:sapMDialogZoomIn}.sapMDialogClosing{-webkit-animation-name:sapMDialogZoomOut;-moz-animation-name:sapMDialogZoomOut;animation-name:sapMDialogZoomOut}.sapMDialogBlockLayerAnimation{position:absolute;-webkit-transition:opacity 0.2s linear;-moz-transition:opacity 0.2s linear;transition:opacity 0.2s linear}.sapMDialog.sapUiContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont,.sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont,.sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont,.sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:0}.sapMSplitContainerDetail .sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:1rem}.sapMDialog.sapUiNoContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:0}.sapMDLI{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;height:2.75em}.sapMDLILabel{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:3rem;display:block}.sap-desktop .sapMLIBCursor .sapMDLILabel{cursor:pointer}.sapMDLIValue{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:3rem}.sapMDLI>.sapMLIBContent{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sapMMessagePage{width:100%;height:100%}.sapMMessagePage>.sapMPage>section>.sapMText,.sapMMessagePage>.sapMPage>section>.sapMLnk{font-family:Arial,Helvetica,sans-serif;margin-top:1rem}.sapMMessagePage .sapMMessagePageMainText{font-size:1.5rem;line-height:2rem;display:block}.sapMMessagePage .sapMMessagePageDescription{font-size:1rem;display:inline-block}.sapMMessagePage>.sapMPage section{max-width:30rem;box-sizing:border-box;text-align:center;margin:-5% auto 0;top:30%}.sapMMessagePage>.sapMPage>.sapMPageHeader + section{top:30%}.sapMMessagePage>.sapMPage>section>.sapUiIcon::before{font-size:6rem}.sapMFFLI{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;min-height:3rem}.sapMFFLI>.sapMLIBContent{overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}.sapMFFLITitleWrap{word-wrap:break-word;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}.sapMFeedIn{display:block;position:relative}.sapMFeedInImage{width:4rem;line-height:4rem;font-size:3rem;display:block;margin-left:auto;margin-right:auto}.sapMFeedListItem{display:block}.sapMFeedListShowSeparatorsAll .sapMFeedListItem{padding-top:1rem;padding-bottom:1rem}.sapMFeedListShowSeparatorsNone .sapMFeedListItem{padding-top:0.5rem;padding-bottom:0.5rem}.sapMFeedListItem:after{content:" ";display:block;height:0rem;clear:both;overflow:hidden;visibility:hidden}.sapMFeedListItem .sapMFeedListItemTextText a,.sapMFeedListItem .sapMFeedListItemTextText span,.sapMFeedListItem .sapMFeedListItemTextName a{font-family:Arial,Helvetica,sans-serif;font-weight:bold;line-height:1.4}.sapMFeedListItemFigure a img{border:0rem}.sapMFeedListItemText{vertical-align:top;margin:0rem}.sapMFeedListItemText .sapMLnk{vertical-align:top}.sap-tablet .sapMFeedListItemHasFigure,.sap-desktop .sapMFeedListItemHasFigure{margin-left:3.75rem}.sapMFeedListItemTextText{margin:0rem;line-height:1.4;font-family:Arial,Helvetica,sans-serif;text-overflow:ellipsis}.sapMFeedListItemFigure{float:left;height:3rem;width:3rem;overflow:visible;margin:0rem}.sapMFeedListItemImage{width:3rem;height:3rem;line-height:3rem;font-size:3rem;margin-left:0rem;margin-right:0rem;overflow:hidden}.sapMFeedListItemTimestamp{line-height:auto}.sapMFeedListItemInfo{line-height:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sapMFeedListItemTextName{line-height:1.4;font-family:Arial,Helvetica,sans-serif;font-weight:bold}html[dir=rtl] .sapMFeedListItemTextName{float:left;margin-right:0.3rem}html[dir=rtl].sap-phone .sapMFeedListItemTextName{float:none;margin-right:0}.sapMFeedListItemFooter{margin-top:0.375rem;margin-bottom:0rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-family:Arial,Helvetica,sans-serif}.sapMFeedListItemTitleDiv.sapMLIB{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:center;flex-direction:row;align-items:center}.sapMFeedListShowSeparatorsNone.sapMLIB{border-bottom:0}html[data-sap-ui-browser="ie9"] .sapMFeedListItemTitleDiv{display:block}.sapMFeedListItemTitleDiv .sapMLIBContent{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;overflow:hidden;-ms-flex-negative:1}.sap-phone .sapMFeedListItemHeader{white-space:nowrap;overflow:hidden}.sap-phone .sapMFeedListItemHeader.sapMFeedListItemFullHeight,.sap-phone .sapMFeedListItemHeader.sapMFeedListItemHasFigure{height:3rem}.sap-phone .sapMFeedListItemImage{width:3rem;heigth:3rem;line-height:3rem;font-size:2.5rem}.sap-phone .sapMFeedListItemTextName{margin-top:0.25rem;margin-bottom:0.25rem}.sap-phone .sapMFeedListItemTextName a{font-family:Arial,Helvetica,sans-serif;font-weight:normal;width:100%}.sap-phone .sapMFeedListItemFigure{height:3rem;width:3rem;margin-right:0.75rem}.sap-phone .sapMFeedListItemFooter{margin-top:0.375rem;margin-bottom:0rem;overflow:hidden;text-overflow:ellipsis}.sap-phone .sapMFeedListItemTimestamp{margin-top:0;margin-bottom:0.25rem;overflow:hidden;text-overflow:ellipsis}.sap-phone .sapMFeedListItemText{clear:left;line-height:1.4;margin-top:0.75rem;margin-bottom:0;overflow:hidden;text-overflow:ellipsis}.sapMUploadCollection{}.sapMFlexItem{position:relative;-ms-flex-preferred-size:auto;-ms-flex-negative:1}.sapMGHLI .sapMLIBSelectM,.sapMGHLI .sapMLIBSelectS,.sapMGHLI .sapMLIBSelectD,.sapMGHLI .sapMListTblSelCol{display:none}.sapMGHLI .sapMLIBUnread,.sapMGHLI .sapMListTblUnreadCol{display:none}.sapMGHLIUpperCase{text-transform:uppercase}.sapMGHLI .sapMLIBContent{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:100%}.sapMITB{display:block;width:100%;position:relative}.sapMITBContentClosed{position:relative;padding:0.125rem 0 0 0;margin-top:0.750rem;background-color:transparent;border-bottom:none}.sapMITBTab{display:block}.sapMITBFilterIcon,.sapMITBTextOnly .sapMITBFilter,.sapMITBTextOnly .sapMITBText,.sapMITBAll{cursor:pointer}.sapMITBTextUpperCase .sapMITBText{text-transform:uppercase}.sapMITBStretch{position:absolute;bottom:0;top:0;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.sapMITBStretch>.sapMITBContainerContent{-webkit-flex-grow:1;-ms-flex:1 1;flex-grow:1}.sapMITBStretch>.sapMITBContainerContent>.sapMITBContent{position:absolute;bottom:0;top:0;right:0;left:0}.sapMITB.sapMITBNoContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:0}.sapMITBBackgroundDesignTransparent>.sapMITBContainerContent>.sapMITBContent{background-color:transparent}.sap-bb .sapMITBContainerContent{overflow:hidden}.sapMITB.sapMITBNoContentPadding>.sapMITBContainerContent,.sapMITB.sapUiNoContentPadding>.sapMITBContainerContent{border-top:0;border-bottom:0}.sapMITB.sapUiContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent,.sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent,.sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent,.sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:0}.sapMSplitContainerDetail .sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:1rem}.sapMITB.sapUiNoContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:0}.sapMImg{border:none;-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-user-select:none;-moz-user-select:none;-webkit-touch-callout:none}.sapMImg.sapMNoImg{visibility:hidden}.sapMImg:focus{outline:none}.sapMInputSuggestionPopup>.sapMPopoverArr{display:none}.sapMDialog.sapMInputSuggestionPopup .sapMDialogScrollCont{padding:0}.sapMInputDescription{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sapMInputDescription>span{padding-left:0.5rem;font-family:Arial,Helvetica,sans-serif;font-style:normal;font-weight:normal}.sapMInputSuggestionTableHidden{visibility:hidden}.sapMInputVHO,.sapMInput.sapMInputVHO>input{cursor:pointer}.sapMInputDescription.sapMInputVH>span{position:relative;display:inline-Block;height:100%}.sapMInputBase,.sapMInputBaseInner,.sapMInputBasePlaceholder{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMInputBasePlaceholder{cursor:text}.sapMInputBaseDisabled>.sapMInputBaseReadonly,.sapMInputBaseDisabled>.sapMInputBasePlaceholder{cursor:default}.sapMInputBase,.sapMInputBaseInner{font:inherit}.sapMInputBaseInner,.sapMInputBasePlaceholder{width:100%}.sapMInputBaseInner::-webkit-outer-spin-button,.sapMInputBaseInner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.sapMInputBaseInner::-ms-clear{height:0}.sapMInputBaseInner{-webkit-appearance:none;border-radius:0}.sapMPointer>.sapMInputBaseInner{cursor:pointer}.sapMInputBaseDisabled{opacity:0.5;pointer-events:none}.sapMInputBaseInner::-webkit-input-placeholder{text-overflow:ellipsis}.sapMInputBaseMessage{padding:0.3125rem;background:#ffffff;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMInputBaseMessageText{width:100%}.sapMILI{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;height:2.75em}.sapMILILabel{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.sap-desktop .sapMLIBCursor .sapMILILabel{cursor:pointer}.sapMILI>.sapMLIBContent{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1}.sapMILIDiv{-webkit-box-flex:9;-moz-box-flex:9;-ms-flex:auto;flex:auto;-ms-flex-negative:1;text-align:right}html[dir=rtl] .sapMILIDiv{text-align:left}.sapMLabel{color:#000000;font-size:medium;display:inline-block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:text}.sapMLabelBold{font-weight:bold}.sapMLabelMaxWidth{max-width:100%}.sapMLIBCursor .sapMLabel,.sapMLIBCursor + .sapMListTblSubRow .sapMLabel{cursor:pointer}.sapUiGridLabel>.sapMLabel{float:right}.sapUiRespGridMedia-Std-Phone.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanS12)>.sapMLabel,.sapUiRespGridMedia-Std-Tablet.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanM12)>.sapMLabel,.sapUiRespGridMedia-Std-Desktop.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanL12)>.sapMLabel{float:right}.sapMLnk{color:#0000ff;text-decoration:none;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;word-wrap:normal}.sapMLnk:active{background-color:transparent}.sapMLnk:active:not(.sapMLnkDsbl),.sapMLnk:focus:not(.sapMLnkDsbl){color:#ff0000}.sapMLnk:visited{color:#800080}.sapMLnk:hover:not(.sapMLnkDsbl){color:#ff0000}.sapUiInverted-CTX .sapUiLnk{color:#0000ff}.sapMLnk.sapMLnkWrapping{white-space:normal;word-wrap:break-word}.sapMLnkMaxWidth{max-width:100%}.sapMList{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMListUl{list-style-type:none}.sapMListSwipable{touch-action:pan-y;-ms-touch-action:pan-y}.sapMList:focus,.sapMListUl:focus{outline:none}.sapMListInset{overflow:hidden}.sapMListSwp{overflow:hidden;position:absolute;right:0.5em;z-index:1;opacity:0;pointer-events:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@-webkit-keyframes sapMListSwpInAnim{0%{opacity:0}100%{opacity:1}}@keyframes sapMListSwpInAnim{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes sapMListSwpOutAnim{0%{opacity:1}100%{opacity:0}}@keyframes sapMListSwpOutAnim{0%{opacity:1}100%{opacity:0}}.sapMListSwpInAnim{-webkit-animation:sapMListSwpInAnim 0.2s ease-in forwards;animation:sapMListSwpInAnim 0.2s ease-in forwards}.sapMListSwpOutAnim{-webkit-animation:sapMListSwpOutAnim 0.2s ease-in forwards;animation:sapMListSwpOutAnim 0.2s ease-in forwards}.sapMListNoData{list-style-type:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:2.75em}.sapMListNoDataText{-ms-flex-negative:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sapMListShowSeparatorsAll{}.sapMListShowSeparatorsInner{}.sapMListShowSeparatorsNone{}.sapMGrowingListTrigger,.sapMGrowingListLoading{display:block;text-align:center;overflow:hidden}.sapMGrowingListBusyIndicator{float:left;overflow:hidden;visibility:hidden;width:2.0em;height:2.0em}.sapMGrowingListBusyIndicatorVisible{visibility:visible}.sapMGrowingListLoading>.sapMGrowingListBusyIndicator{float:none;visibility:visible}.sapMList.sapUiContentPadding{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMList.sapUiResponsiveContentPadding,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMList.sapUiResponsiveContentPadding,.sapMList.sapUiResponsiveContentPadding{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMList.sapUiResponsiveContentPadding,.sapMList.sapUiResponsiveContentPadding{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMList.sapUiResponsiveContentPadding,.sapMList.sapUiResponsiveContentPadding{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMList.sapUiResponsiveContentPadding{padding:0}.sapMSplitContainerDetail .sapMList.sapUiResponsiveContentPadding{padding:1rem}.sapMList.sapUiNoContentPadding{padding:0}.sapMLIB,.sapMLIBImgNav,.sapMLIBIconDet,.sapMLIBIconDel{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMLIB{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}.sapMLIBTypeNavigation{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sapMLIB:focus,.sapMListTblSubRow:focus{outline:none}.sapMLIBSelectS,.sapMLIBSelectSL,.sapMLIBSelectM,.sapMLIBSelectD{width:2.75em}.sap-desktop .sapMLIBCursor,.sap-desktop .sapMLIBCursor + .sapMListTblSubRow{cursor:pointer}.sapMLIBImgNav,.sapMLIBImgDet,.sapMLIBImgDel,.sapMLIBIconDet,.sapMLIBSelectS,.sapMLIBSelectSL,.sapMLIBSelectM,.sapMLIBSelectD,.sapMLIBCounter,.sapMLIBContent ~ .sapMLIBCursor{-webkit-box-flex:0;-moz-box-flex:0;-ms-flex:none;flex:none}.sapMMessageBoxLinkText{float:right}.sapMMessageBoxDetails{width:100%}.sapMMessageDialog .sapMIBar .sapMDialogTitle{margin-left:0}.sapMMsgPopover{}.sapMMsgPopover .sapMSegBBtnMixed{padding-left:0;padding-right:0}.sapMMsgPopover .sapMDialogScrollCont{padding:0}.sapMMsgPopover.sapMMsgPopover-ModeToolbar .sapMPopoverArr{display:none}.sapMMsgPopover .sapMIBar .sapMBarChild{margin-left:.25rem;margin-right:.25rem}.sapMMsgPopover .sapMMsgPopoverTitleText,.sapMMsgPopover .sapMMsgPopoverDescriptionText{float:left;padding:0 1rem 0 3rem;margin-top:1rem}.sapMMsgPopover .sapMMsgPopoverDescriptionText{padding-bottom:1rem}.sapMMsgPopover .sapMMsgPopoverTitleText{vertical-align:middle;font-weight:600}.sapMMsgPopover.sapMMsgPopover-init .sapMNavItem.sapMPage{position:relative}.sapMMsgPopover.sapMMsgPopover-init .sapMIBar{border-bottom:0}.sapMMsgPopoverDescIcon{position:absolute;left:0;width:3rem;top:.7rem;font-size:1.35rem}.sapMMsgPopoverCloseBtn .sapMBtnIcon{width:2.5rem;height:2.5rem;font-size:1rem}.sapUiSizeCompact.sapMMsgPopover.sapMPopoverArrUp:after,.sapUiSizeCompact.sapMMsgPopover.sapMPopoverWithoutBar.sapMPopoverNav.sapMPopoverWithHeaderCont>.sapMPopoverArrUp:after,.sapUiSizeCompact.sapMMsgPopover.sapMPopoverWithoutBar.sapMPopoverPage.sapMPopoverWithHeaderCont>.sapMPopoverArrUp:after{bottom:-9px;left:-8px}.sapUiSizeCompact.sapMMsgPopover .sapMMsgPopoverCloseBtn .sapMBtnIcon{width:1.626rem;height:1.626rem;font-size:0.75rem}.sapUiSizeCompact.sapMMsgPopover .sapMList .sapMLIBContent .sapUiIcon{font-size:1rem}.sapUiSizeCompact.sapMMsgPopover .sapMBtnInner{padding:0}.sapUiSizeCompact.sapMMsgPopover .sapMBtnCustomIcon{margin-left:0}.sapUiSizeCompact.sapMMsgPopover .sapMMsgPopoverDescIcon{width:3rem;height:1.626rem;line-height:1.626rem;font-size:1rem}.sapMMessageToast{box-sizing:border-box;position:absolute;max-width:100%;font-family:inherit;font-weight:normal;word-wrap:break-word;text-align:center;text-decoration:none;text-overflow:ellipsis;overflow:hidden}.sapMMultiInputBorder{box-sizing:border-box;position:relative;white-space:nowrap}.sapMMultiInputInputContainer{box-sizing:border-box}.sap-desktop .sapMMultiInputBorder{overflow:hidden}.sapMMultiInput .sapMInputValHelp{display:inline-block;position:static}.sapUiSizeCompact .sapMMultiInput .sapMInputValHelp{display:inline-block;position:static}.sapMMultiInputTextInput :not(.sapMMultiInputNotEditable){border-radius:0}.sapMMultiInputInputContainer{position:absolute;top:0rem;right:0rem}.sapMMultiInputNotEditable .sapMMultiInputInputContainer{visibility:collapse}.sapMMultiInputShadowDiv{display:inline;visibility:collapse;position:absolute;top:0rem;left:0rem}.sapMMultiInputMultiModeInputContainer{position:static}.sapMNav{overflow:hidden;position:relative;height:100%}.sapMNavFlip{-webkit-perspective:1000;perspective:1000px}.sapMNavItem,.sapMNavItem.sapMPage{position:absolute;top:0;left:0;display:block;height:100%;-webkit-transition-property:-webkit-transform;transition-property:transform}.sapMNavItem.sapMNavItemRendering{visibility:hidden;left:-4000px}.sapMNavItem.sapMNavItemHidden{display:none}.sapMNavItem.sapMNavItemCenter{-webkit-transform:translate3d(0px,0px,0px);transform:translate3d(0px,0px,0px)}.sapMNavItem.sapMNavItemRight{-webkit-transition-property:-webkit-transform;-webkit-transform:translate3d(100%,0px,0px);transform:translate3d(100%,0px,0px);transition-property:transform}.sapMNavItem.sapMNavItemLeft{-webkit-transition-property:-webkit-transform;-webkit-transform:translate3d(-100%,0px,0px);transition-property:transform;transform:translate3d(-100%,0px,0px)}.sapMNavItem.sapMNavItemSliding{-webkit-transition-duration:0.3s;transition-duration:0.3s}.sapMNavItem.sapMNavItemTransparent{-webkit-transition-property:opacity;transition-property:opacity;opacity:0}.sapMNavItem.sapMNavItemOpaque{-webkit-transition-property:opacity;transition-property:opacity;opacity:1}.sapMNavItem.sapMNavItemFading{-webkit-transition-duration:0.5s;transition-duration:0.5s}.sapMNavItem.sapMNavItemFlipNext{-webkit-transform:rotate3d(0,1,0,180deg);transform:rotate3d(0,1,0,180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden}.sap-winphone .sapMNavItem.sapMNavItemFlipNext{transform:rotateY(180deg)}.sapMNavItem.sapMNavItemFlipPrevious{-webkit-transform:rotate3d(0,1,0,-180deg);transform:rotate3d(0,1,0,-180deg)}.sap-winphone .sapMNavItem.sapMNavItemFlipPrevious{transform:rotateY(-180deg)}.sapMNavItem.sapMNavItemFlipping{-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-backface-visibility:hidden;backface-visibility:hidden}@-webkit-keyframes sapMNavItemDoorInPrevious{from{-webkit-transform:rotate3d(0,1,0,0deg);visibility:visible;opacity:1}40%{-webkit-transform:rotate3d(0,1,0,-70deg);visibility:visible;opacity:0}41%{-webkit-transform:rotate3d(0,1,0,-70deg);visibility:hidden}to{-webkit-transform:rotate3d(0,1,0,-70deg)}}@keyframes sapMNavItemDoorInPrevious{from{transform:rotate3d(0,1,0,0deg);visibility:visible;opacity:1}40%{transform:rotate3d(0,1,0,-70deg);visibility:visible;opacity:0}41%{transform:rotate3d(0,1,0,-70deg);visibility:hidden}to{transform:rotate3d(0,1,0,-70deg)}}@-webkit-keyframes sapMNavItemDoorInNext{from{-webkit-transform:rotate3d(0,1,0,80deg);opacity:0}46%{-webkit-transform:rotate3d(0,1,0,80deg);opacity:0}to{-webkit-transform:rotate3d(0,1,0,0deg);opacity:1}}@keyframes sapMNavItemDoorInNext{from{transform:rotate3d(0,1,0,80deg);visibility:hidden;opacity:0}45%{transform:rotate3d(0,1,0,80deg);visibility:hidden;opacity:0}46%{transform:rotate3d(0,1,0,80deg);visibility:visible;opacity:0}to{transform:rotate3d(0,1,0,0deg);opacity:1}}@-webkit-keyframes sapMNavItemDoorOutPrevious{from{-webkit-transform:rotate3d(0,1,0,0deg);visibility:visible;opacity:1}40%{-webkit-transform:rotate3d(0,1,0,80deg);visibility:visible;opacity:0}41%{-webkit-transform:rotate3d(0,1,0,80deg);visibility:hidden}to{-webkit-transform:rotate3d(0,1,0,80deg)}}@keyframes sapMNavItemDoorOutPrevious{from{transform:rotate3d(0,1,0,0deg);visibility:visible;opacity:1}40%{transform:rotate3d(0,1,0,80deg);visibility:visible;opacity:0}41%{transform:rotate3d(0,1,0,80deg);visibility:hidden}to{transform:rotate3d(0,1,0,80deg)}}@-webkit-keyframes sapMNavItemDoorOutNext{from{-webkit-transform:rotate3d(0,1,0,-70deg);opacity:0}46%{-webkit-transform:rotate3d(0,1,0,-70deg);opacity:0}to{-webkit-transform:rotate3d(0,1,0,0deg);opacity:1}}@keyframes sapMNavItemDoorOutNext{from{transform:rotate3d(0,1,0,-70deg);visibility:hidden;opacity:0}45%{transform:rotate3d(0,1,0,-70deg);visibility:hidden;opacity:0}46%{transform:rotate3d(0,1,0,-70deg);visibility:visible;opacity:0}to{transform:rotate3d(0,1,0,0deg);opacity:1}}.sapMNavDoor{-webkit-perspective:1000;perspective:1000px;-webkit-perspective-origin:0 50%;perspective-origin:0 50%}.sapMNavItem.sapMNavItemDoorInPrevious{-webkit-animation:sapMNavItemDoorInPrevious .8s;animation:sapMNavItemDoorInPrevious .8s;visibility:hidden;opacity:0}.sapMNavItem.sapMNavItemDoorInNext{-webkit-animation:sapMNavItemDoorInNext .8s;animation:sapMNavItemDoorInNext .8s;visibility:visible}.sapMNavItem.sapMNavItemDoorOutPrevious{-webkit-animation:sapMNavItemDoorOutPrevious .8s;animation:sapMNavItemDoorOutPrevious .8s;visibility:hidden;opacity:0}.sapMNavItem.sapMNavItemDoorOutNext{-webkit-animation:sapMNavItemDoorOutNext .8s;animation:sapMNavItemDoorOutNext .8s;visibility:visible}.sapMNavItem.sapMNavItemDooring{-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-transform-origin:0 50%;transform-origin:0 50%}.sapMObjectAttributeDiv .sapMText,.sapMObjectAttributeDiv .sapMObjectAttributeTitle,.sapMObjectAttributeDiv .sapMObjectAttributeText{font-size:.875rem}.sapMObjectAttributeActive .sapMText{color:#0000ff;cursor:pointer}.sapMObjectAttributeActive .sapMText:active,.sapMObjectAttributeActive .sapMText:focus,.sapMObjectAttributeActive .sapMText:hover{text-decoration:underline}.sapMOH h1,.sapMOHR h1{margin:0;font-weight:normal}.sapMOH{margin:1rem;padding:0.625rem}.sap-phone .sapMOH{padding:1rem 0}.sapMDialog .sapMOH{margin:1rem}.sapMPopover .sapMOH{margin:1rem;padding:1rem 0}.sapMOH.sapMOHC{margin:0;padding:1.125rem 2rem 1rem 2rem}.sap-phone .sapMOH.sapMOHC{margin:0;padding:1.125rem 1rem 1rem 1rem}.sapMDialog .sapMOH.sapMOHC{margin:0}.sapMPopover .sapMOH.sapMOHC{margin:0;padding:1.125rem 0 1rem 0}.sapUiIcon:focus{outline:none}.sapMOHIntro{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:0.875rem;margin-top:0.375rem;margin-bottom:0.625rem}.sapMOHIntroActive>a:active,.sap-desktop .sapMOHIntroActive>a:hover,.sapMOHTitleActive h1 .sapMText:active,.sap-desktop .sapMOHTitleActive h1 .sapMText:hover{text-decoration:underline}.sapMOHTitleDiv{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:6.3rem;width:65%;overflow:hidden;float:left}.sapMOHC>.sapMOHTitleDiv{padding-right:0.5rem}.sapMOHC>.sapMOHTitleDivFull,.sapMOHTitleDivFull{width:100%}.sapMOHTitleDiv.sapMOHNumberWrap{max-height:4.2rem}.sap-phone .sapMOHTitleDiv{max-height:5rem}.sap-phone .sapMOHTitleDiv.sapMOHNumberWrap{max-height:3.4rem}.sapMOHIcon{position:absolute;margin-top:0.375rem;width:3rem}.sapMOHTitle{margin-top:0.375rem;display:inline-block;position:relative}.sapMText.sapMOHTitle{position:relative}.sapMOHTitle h1 .sapMText{font-size:1.375rem}.sapMListTbl .sapMOHTitle h1 .sapMText{font-size:0.875rem}.sapMOHTitleFollowArrow{margin-right:3rem}.sapMOHC .sapMOHTitleFollowArrow{margin-right:2.5rem}.sapMOHTitleAndArrow{display:inline-block;position:relative;min-height:3rem}.sapMOHTitleIcon{min-height:3rem}.sap-phone .sapMOHTitleIcon{min-height:2.5rem}.sap-phone .sapMText.sapMOHTitle{font-size:1.188rem}.sapMOHIcon + .sapMOHTitle{margin-left:4rem}.sapMOHIcon + .sapMOHTitleAndArrow{margin-left:3.5rem}.sapMOHTitleArrow{display:inline-block;vertical-align:top;position:absolute;right:0}.sapMOHC .sapMOHTitleArrow{margin-top:0.3rem}.sapMOHTitleArrow .sapUiIcon{margin-top:1px;vertical-align:top;display:inline-block;padding:0.4rem 0.5rem 0.4rem 0.5rem}.sap-desktop.sapUiMedia-Std-Phone .sapMOHTitleArrow .sapUiIcon,.sap-phone .sapMOHTitleArrow .sapUiIcon{padding:0.3rem 0.4rem 0.3rem 0.4rem}.sapMOHTitle + .sapMOHTitleArrow{margin-left:0.5rem}.sapMOHNumberDiv{margin-top:0.375rem;display:inline-block;float:right;text-align:end;overflow:hidden;white-space:nowrap}.sapMOHC>.sapMOHNumberDiv{padding-left:0.5rem}.sapMOHC .sapMOHTitle h1>.sapMText,.sap-phone .sapMOHC .sapMOHTitle h1>.sapMText{line-height:1.8rem;font-size:1.125rem}html[data-sap-ui-browser^=ie] .sapMOHNumberDiv{text-align:right}html[dir=rtl][data-sap-ui-browser^=ie] .sapMOHNumberDiv{text-align:left}.sapMOHNumberWrap{width:100%}.sap-phone .sapMOHNumberWrap{margin-top:0.25rem}.sapMOHNumber{display:block;font-size:1.75rem;margin-top:-0.25rem}.sapMOHNumberUnit{display:block;font-size:0.75rem;margin-top:-0.25rem}.sapMOHBottomRow{margin-top:1rem;font-size:0.875rem}.sapMOHAttrRow{margin-top:0.625rem;overflow:hidden}.sapMOHAttrRow:first-child{margin-top:0}.sapMOHC>.sapMOHAttr{margin-top:0.125rem}.sapMOHAttr{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;width:65%;text-align:start;vertical-align:top;overflow:hidden;float:left}html[data-sap-ui-browser^=ie] .sapMOHAttr{text-align:left}html[dir=rtl][data-sap-ui-browser^=ie] .sapMOHAttr{text-align:right}.sapMOH .sapMObjectAttributeDiv{display:inline-block;text-overflow:inherit;white-space:inherit}.sapMOHStatus,.sapMOHStatusFixedWidth{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;text-align:end;vertical-align:top;overflow:hidden;float:right;white-space:nowrap}.sapMOHStatusFixedWidth{width:35%}.sapMOHStatusFixedWidth>.sapMPI{float:right}.sapMOHDivider,.sapMOHLastDivider{clear:both}div[class*='sapUiRespGrid']>.sapMOH>.sapMOHLastDivider{clear:none}html[data-sap-ui-browser^=ie] .sapMOHStatus,html[data-sap-ui-browser^=ie] .sapMOHStatusFixedWidth{text-align:right}html[dir=rtl][data-sap-ui-browser^=ie] .sapMOHStatus,html[dir=rtl][data-sap-ui-browser^=ie] .sapMOHStatusFixedWidth{text-align:left}div[class*='sapMOHRBg']{padding-bottom:1.5rem}.sap-desktop.sapUiMedia-Std-Phone div[class*='sapMOHRBg'],.sap-phone div[class*='sapMOHRBg']{padding-bottom:1rem}.sapMOHR{width:100%;height:100%;padding:1.1rem 2rem 0 2rem;box-sizing:border-box}.sap-desktop.sapUiMedia-Std-Phone .sapMOHR,.sap-phone .sapMOHR{padding:0.625rem 1rem 0 1rem}.sapMOHRTitleNumberDiv{display:inline-block;max-width:95rem;width:100%}.sapMOHRStatesOneOrThree{max-width:95rem}.sap-desktop .sapMOHRStatesOneOrThree .sapMOHRTitleNumberDiv{width:70%;max-width:none}.sapMOHRIcon{position:absolute;top:0.4375rem;width:3rem;height:3rem;margin-right:1rem;background-size:cover;display:block}.sapMOHRHideIcon{display:none;visibility:hidden;margin-left:0}.sapMOHRTitleIcon>.sapMOHRTitle{margin-left:4rem;min-height:3.375rem}html[data-sap-ui-browser^="ie"] .sapMOHRTitleIcon>.sapMOHRTitle{min-height:3.5rem}.sapMOHRTitleDiv{display:inline-block;box-sizing:border-box;overflow:hidden;vertical-align:top;position:relative;width:100%}.sapMOHRTitleTextWrappable{white-space:normal}.sapMOHRTitleText{margin-top:0.4rem;text-decoration:none}.sapMOHRTitleTextContainer{margin:0.4rem 0.5rem 0 0;display:inline-block;position:relative}.sapMOHR .sapMObjStatusMarker{font-family:SAP-icons;font-size:1rem;white-space:nowrap}.sapMOHR .sapMObjStatusMarker .sapUiIcon{display:inline;margin-left:0.5rem}.sapMOHR .sapMObjStatusMarker.sapMObjStatusMarkerOpposite .sapUiIcon{margin-right:0.5rem;margin-left:0}html[dir=rtl] .sapMObjStatusMarker>.sapUiIcon.sapUiIconMirrorInRTL{-ms-transform:none;-webkit-transform:none;transform:none}.sapMOHRIntro{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:0.5rem;line-height:normal}.sapMOHRIntroMargin{margin-top:0}.sap-desktop.sapUiMedia-Std-Phone .sapMOHRIntroMargin,.sap-phone .sapMOHRIntroMargin{margin-top:-0.3rem}.sapMOHRIntroActive>a:active,.sap-desktop .sapMOHRIntroActive>a:hover,.sapMOHRTitleActive .sapMOHRTitleText:active,.sap-desktop .sapMOHRTitleActive .sapMOHRTitleText:hover{text-decoration:underline}.sapMOHRTitleArrow{display:inline-block;vertical-align:top;min-height:2.56rem}.sapMOHRTitleArrow .sapUiIcon{margin-top:1px;vertical-align:top;position:absolute;display:inline-block;padding:0.4rem 0.5rem 0.4rem 0.5rem}.sap-desktop.sapUiMedia-Std-Phone .sapMOHRTitleArrow .sapUiIcon,.sap-phone .sapMOHRTitleArrow .sapUiIcon{padding:0.3rem 0.4rem 0.3rem 0.4rem}.sapMOHRTitleFollowArrow{margin-right:2.5rem;padding-right:0}.sapMOHRStates{display:inline-block;box-sizing:border-box;vertical-align:top;padding-top:1rem;width:100%;max-width:95rem}.sap-desktop .sapMOHRStatesOneOrThree>.sapMOHRStates{width:30%;box-sizing:border-box;padding:0.85rem 0 0 1rem;text-align:end}html[data-sap-ui-browser^=ie].sap-desktop .sapMOHRStatesOneOrThree>.sapMOHRStates{text-align:right}html[dir=rtl][data-sap-ui-browser^=ie].sap-desktop .sapMOHRStatesOneOrThree>.sapMOHRStates{text-align:left}.sap-desktop .sapMOHRStatesOneOrThree>.sapMOHRStates .sapMObjectAttributeDiv>span[class*='sapMObjectAttribute']{float:none}.sapMOHR .sapMObjectNumber{display:inline-block;white-space:normal;padding:0.4rem 0 0 1rem}.sapMOHR .sapMObjectNumberText{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;max-width:100%}.sapMOHR .sapMObjectNumberUnit{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.6;box-sizing:border-box;max-width:100%}.sap-desktop .sapMOHR .sapMObjectNumber{width:30%;box-sizing:border-box}.sap-desktop.sapUiMedia-Std-Tablet .sapMOHR .sapMObjectNumber,.sap-tablet .sapMOHR .sapMObjectNumber{width:35%;box-sizing:border-box}.sap-desktop.sapUiMedia-Std-Phone .sapMOHR .sapMObjectNumber,.sap-phone .sapMOHR .sapMObjectNumber{box-sizing:border-box;float:right}.sap-desktop.sapUiMedia-Std-Phone .sapMOHR .sapMObjectNumber.sapMObjectNumberBelowTitle,.sap-phone .sapMOHR .sapMObjectNumber.sapMObjectNumberBelowTitle{width:100%;padding:0.5rem 0 0 0}.sap-desktop.sapUiMedia-Std-Phone .sapMOHR .sapMObjectNumberText,.sap-phone .sapMOHR .sapMObjectNumberText{display:inline-block}.sap-desktop.sapUiMedia-Std-Phone .sapMOHR .sapMObjectNumberUnit,.sap-phone .sapMOHR .sapMObjectNumberUnit{display:inline-block}.sap-desktop.sapUiMedia-Std-Phone .sapMOHRNumberWrap,.sap-phone .sapMOHRNumberWrap{width:100%;text-align:left;margin-left:0}.sap-desktop .sapMOHRTitleDiv,.sap-desktop .sapMOHRStatesOneOrThree>.sapMOHRTitleNumberDiv>.sapMOHRTitleDiv{width:70%}.sap-desktop.sapUiMedia-Std-Tablet .sapMOHRTitleDiv,.sap-desktop.sapUiMedia-Std-Tablet .sapMOHRStatesOneOrThree>.sapMOHRTitleNumberDiv>.sapMOHRTitleDiv,.sap-tablet .sapMOHRTitleDiv,.sap-tablet .sapMOHRStatesOneOrThree>.sapMOHRTitleNumberDiv>.sapMOHRTitleDiv{width:65%}.sap-desktop.sapUiMedia-Std-Phone .sapMOHRTitleDiv,.sap-phone .sapMOHRTitleDiv{width:60%}.sap-desktop.sapUiMedia-Std-Phone .sapMOHRTitleDivFull.sapMOHRTitleDiv,.sap-phone .sapMOHRTitleDivFull.sapMOHRTitleDiv,.sapMOHRTitleDivFull.sapMOHRTitleDiv{width:100%}.sapMOHRStatesCont1,.sapMOHRStatesCont2,.sapMOHRStatesCont3,.sapMOHRStatesCont4{float:left}.sapMOHROneCols{width:100%}.sapMOHRTwoCols{width:50%;box-sizing:border-box}.sapMOHRTwoCols.sapMOHRStatesCont1{padding-right:0.5rem}.sapMOHRTwoCols.sapMOHRStatesCont2{text-align:end;padding-left:0.5rem}html[data-sap-ui-browser^=ie] .sapMOHRTwoCols.sapMOHRStatesCont2{text-align:right}html[dir=rtl][data-sap-ui-browser^=ie] .sapMOHRTwoCols.sapMOHRStatesCont2{text-align:left}.sapMOHRTwoCols.sapMOHRStatesCont2 .sapMOHRAttr .sapMObjectAttributeDiv>span[class*='sapMObjectAttribute']{float:none}.sapMOHRThreeCols{width:33%;box-sizing:border-box}.sapMOHRThreeCols.sapMOHRStatesCont1{padding-right:0.66rem}.sapMOHRThreeCols.sapMOHRStatesCont3{padding-left:0.66rem}.sapMOHRThreeCols.sapMOHRStatesCont2{padding-left:0.33rem;padding-right:0.33rem}.sapMOHRFourCols{width:25%;box-sizing:border-box}.sapMOHRFourCols.sapMOHRStatesCont1{padding-right:0.75rem}.sapMOHRFourCols.sapMOHRStatesCont4{padding-left:0.75rem}.sapMOHRFourCols.sapMOHRStatesCont2{padding-right:0.5rem;padding-left:0.25rem}.sapMOHRFourCols.sapMOHRStatesCont3{padding-left:0.5rem;padding-right:0.25rem}div[class*='sapMOHRStatesCont']>div:last-child{padding-bottom:0}.sapMOHR .sapMITH{position:relative;margin-left:-1.8rem;margin-right:-1.8rem}.sap-phone .sapMOHRTabs .sapMITH,.sap-desktop.sapUiMedia-Std-Phone .sapMOHRTabs .sapMITH{position:relative;margin-left:-1rem;margin-right:-1rem}.sapMOHRTabs{margin:0 0 0 0;padding-top:0}.sap-phone .sapMOHRTabs,.sap-desktop.sapUiMedia-Std-Phone .sapMOHRTabs{margin:0 0 0 0;padding-left:0;padding-right:0}.sap-phone .sapMOHRTabs .sapMITBTextOnly>.sapMITBFilter>.sapMITBText + .sapMITBContentArrow{height:0.75rem}.sapMOHR .sapMITB{display:block;position:relative;width:100%}.sapMOHR .sapMITBHead{display:block;font-size:0.75rem;margin:0 1.25rem 0;overflow:hidden;position:relative;white-space:nowrap}.sapMOHR .sapMPI{margin:0}.sapMObjectIdentifierIcons{overflow:hidden;text-align:right;vertical-align:top-text;float:right;font-size:1rem;color:#d3d3d3}.sapMObjectIdentifierIconSpan{padding:0 0.5rem}.sapMObjectIdentifierTitle .sapMLnk,.sapMObjectIdentifierTitle .sapMText{overflow:visible;font-weight:bold;font-size:1rem;display:inline;word-wrap:break-word;white-space:normal}.sapMObjectIdentifierTitle .sapMText{color:#a9a9a9}.sapMObjectIdentifierText{color:#d3d3d3;font-size:0.875rem;padding-top:0}.sapMObjectIdentifierTextBellow{margin-top:0.5rem}.sapMListTbl .sapMObjectIdentifierTitle .sapMLnk,.sapMListTbl .sapMObjectIdentifierTitle .sapMText{overflow:visible;font-weight:bold;font-size:0.875rem;display:inline;word-wrap:break-word;white-space:normal;padding-top:0}.sapMListTbl .sapMObjectIdentifierTitle .sapMText{color:#a9a9a9}.sapMListTbl .sapMObjectIdentifierText .sapMText{line-height:1.4;padding-top:0}.sapMObjLItem{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.sapMObjLItem>.sapMLIBContent{overflow:hidden}.sapMLIB.sapMObjLItem{padding:1rem}.sapMObjLItem .sapMLIBImgNav:active,.sapMObjLItem .sapMLIBIconDet:active,.sapMObjLItem .sapMLIBIconDel:active{border-bottom:none}.sapMObjLTopRow{float:left;width:100%}.sapMObjLIntro{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}html[data-sap-ui-browser="ie9"] .sapMText.sapMObjLTitle{word-break:break-all}.sapMText.sapMObjLTitle{vertical-align:top;word-break:break-word}.sapMOHTitle:not(.sapMOHRTitleNoWordBreak)>.sapMText{word-break:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.sapMObjLNumberDiv{float:right;padding-left:1rem}.sapMObjLNumber{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:top;text-align:right}html[dir=rtl] .sapMObjLNumber{text-align:left}.sapMObjLNumberUnit{font-weight:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}html[dir=rtl] .sapMObjLNumberUnit{text-align:left}.sapMObjLBottomRow{margin-top:.25rem}.sapMObjLAttrRow{font-size:.875rem;padding-top:.313rem}.sapMObjLAttrDiv{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;width:65%;text-align:left;vertical-align:top}html[dir=rtl] .sapMObjLAttrDiv{text-align:right}.sapMObjLAttrDiv .sapMObjectAttributeDiv{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:100%}.sapMObjLAttrRow:nth-child(1)>.sapMObjLAttrDiv .sapMObjectAttributeDiv,.sapMObjLAttrRow:nth-child(2)>.sapMObjLAttrDiv .sapMObjectAttributeDiv{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}.sapMObjLAttrDiv .sapMObjectAttributeDiv{display:inline-block}.sapMObjLStatusDiv{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;width:35%;text-align:right;vertical-align:top}html[dir=rtl] .sapMObjLStatusDiv{text-align:left}.sapMObjLAttrRow .sapMObjStatus{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.sapMObjLBottomRow .sapMObjStatusIcon{font-size:1rem}.sapMObjLItem .sapMLIBContent{-webkit-box-flex:1;-ms-flex:1;flex:1 1 auto}.sapMObjLListModeDiv{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-align:center;-ms-flex-direction:row;-ms-flex-align:center;flex-direction:row;align-items:center}html[data-sap-ui-browser="ie10"] .sapMObjLItem .sapMLIBContent,html[data-sap-ui-browser="ie11"] .sapMObjLItem .sapMLIBContent{width:100%}html[dir=rtl] .sapMObjStatusMarker>.sapUiIcon.sapUiIconMirrorInRTL{-ms-transform:none;-webkit-transform:none;transform:none}.sapMObjectNumber{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;word-wrap:normal;color:#a9a9a9}.sapMObjectNumberEmph>.sapMObjectNumberText{font-weight:bold}.sapMObjectNumberUnit{padding-left:.25rem;font-size:.75rem}.sapMObjectNumberUnit.sapMRTLOpposite{padding-left:0;padding-right:.25rem}.sapMObjStatusIcon>.sapUiIcon{font-size:1rem}.sapMObjStatusIcon{padding-right:.25rem}.sapMObjStatus>.sapMObjStatusTitle{padding-right:.25rem}.sapMConditionPanel .displayNone{display:none}.sapMConditionPanel .conditionRootGrid>div + div .sapUiRespGridMedia-Std-Tablet{margin-top:1rem}.sapMConditionPanel .conditionRootGrid>div + div .sapUiRespGridMedia-Std-Phone{margin-top:1rem}.sapMConditionPanel .conditionAddBtnFloatRight{float:right}.sapUiSizeCompact .sapMConditionPanel .conditionLabel{margin-top:0.5rem}.sapMConditionPanel .conditionLabel{margin-top:1rem}.sapMConditionPanel .sapMCb{display:block}.sapMP13nDialog{color:#008000;border:1px solid blue}.sapMP13nDialog .sapMITBHead{margin:0rem}.sapMFilterPanel .compPadding{padding-left:1rem;padding-right:1rem;padding-bottom:1rem}.sapMFilterPanel .sapMPanelContent{padding:0;border-bottom-width:0}.sapMFilterPanel .sapUiRespGrid.sapUiRespGridVSpace1>div{margin-bottom:0;margin-left:0}.sapMFilterPanel .sapMPanelWrappingDiv{border-bottom:0}.sapMFilterPanel .panelTopMargin{margin-top:1rem}.sapMP13nPanel{color:#008000;border:1px solid blue}.sapMSortPanel{width:100%}.sapMSortPanelContent{padding-top:1rem;padding-bottom:1rem}.sapMGroupPanelContent{padding-top:1rem;padding-bottom:1rem}.sapMPage,.sapMPage>section,.sapMPageScroll{width:100%}.sapMPage{height:100%;position:relative}.sapMPage>section{position:absolute;top:0;left:0;right:0;bottom:0}.sapMPageScroll:not(.sapMPageScrollEnabled){height:100%}.sapMPageScroll{min-height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media (orientation:landscape){html[data-sap-ui-os^="iOS7"][data-sap-ui-browser^="msf"]{padding:0;margin:0;bottom:0}html[data-sap-ui-os^="iOS7"][data-sap-ui-browser^="msf"] body{position:fixed;top:0;bottom:0}}html[data-sap-ui-os^="iOS7"][data-sap-ui-browser^="msf"]:not(.sap-tablet) .sapMPageWithFooter>section>.sapMPageScroll{bottom:3rem}html[data-sap-ui-os^="iOS7"][data-sap-ui-browser^="msf"]:not(.sap-tablet) .sapUiSizeCompact.sapMPageWithFooter .sapMPageScroll,html[data-sap-ui-os^="iOS7"][data-sap-ui-browser^="msf"]:not(.sap-tablet) .sapUiSizeCompact .sapMPageWithFooter .sapMPageScroll{bottom:2.5rem}.sapMPageFooter{position:absolute;bottom:0;left:0;z-index:2}.sapMPageFooter.sapMTB{right:0;border-bottom-width:0}.sapMPageSubHeader,.sapMPageHeader{z-index:1}.sapMPage.sapUiContentPadding>section{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPage.sapUiResponsiveContentPadding>section,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMPage.sapUiResponsiveContentPadding>section,.sapMPage.sapUiResponsiveContentPadding>section{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPage.sapUiResponsiveContentPadding>section,.sapMPage.sapUiResponsiveContentPadding>section{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPage.sapUiResponsiveContentPadding>section,.sapMPage.sapUiResponsiveContentPadding>section{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMPage.sapUiResponsiveContentPadding>section{padding:0}.sapMSplitContainerDetail .sapMPage.sapUiResponsiveContentPadding>section{padding:1rem}.sapMPage.sapUiNoContentPadding>section{padding:0}.sapMPanel{overflow:hidden}.sapMPanelHdr{box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:none;height:3rem;line-height:3rem;padding:0 1rem;-webkit-text-size-adjust:none}.sapMPanelContent{padding:1rem;box-sizing:border-box;overflow:auto}.sapMPanelExpandablePart{clear:both}.sapMPanelExpandableIcon{position:absolute;width:3rem;line-height:3rem;font-size:1rem;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform 0.4s ease-out;transition:transform 0.4s ease-out}.sapMPanelExpandableIconExpanded{display:inline-block;-webkit-transform:translateY(-50%) rotate(90deg);-ms-transform:translateY(-50%) rotate(90deg);transform:translateY(-50%) rotate(90deg);-webkit-transition:all 0.4s ease-out;transition:all 0.4s ease-out}html[dir=rtl] .sapUiIconMirrorInRTL:not(.sapUiIconSuppressMirrorInRTL).sapMPanelExpandableIcon{-webkit-transform:translateY(-50%) scale(-1,1);-ms-transform:translateY(-50%) scale(-1,1);transform:translateY(-50%) scale(-1,1)}html[dir=rtl] .sapUiIconMirrorInRTL:not(.sapUiIconSuppressMirrorInRTL).sapMPanelExpandableIconExpanded{-webkit-transform:translateY(-50%) rotate(90deg) scale(-1,1);-ms-transform:translateY(-50%) rotate(90deg) scale(-1,1);transform:translateY(-50%) rotate(90deg) scale(-1,1)}.sapMPanelWrappingDiv,.sapMPanelWrappingDivTb{position:relative}.sapMPanelWrappingDivTb>.sapMPanelHdrExpandable.sapMTB{border-width:0}.sapMPanelWrappingDiv.sapMPanelWrappingDivExpanded{border-bottom-width:0}.sap-tablet .sapUiFioriObjectPage>section>.sapMPanel,.sap-desktop .sapUiFioriObjectPage>section>.sapMPanel{margin:1rem 0;padding:0 1rem;box-sizing:border-box}.sapMPanelHdrExpandable.sapMPanelHdr,.sapMPanelHdrExpandable.sapMTB-Transparent-CTX.sapMTB{padding-left:0}.sapMIBar.sapMPanelHdrExpandable .sapMBarChild:first-child{margin-left:0}.sapMPanelHdrExpandable.sapMPanelHdr,.sapMPanelWrappingDivTb>.sapMTB{margin-left:3rem}.sapMPanel.sapUiContentPadding>.sapMPanelContent{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent,.sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent,.sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent,.sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent{padding:0}.sapMSplitContainerDetail .sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent{padding:1rem}.sapMPanel.sapUiNoContentPadding>.sapMPanelContent{padding:0}.sapMPopover{position:absolute;color:#000000;min-width:100px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;outline:none;max-width:100%;max-height:100%;overflow:hidden;-webkit-transition:opacity 0.2s linear;-moz-transition:opacity 0.2s linear;transition:opacity 0.2s linear}.sapMPopoverHeader .sapMTitle{font-size:.865rem}.sapMPopover .sapMPopoverCont{overflow:hidden;position:relative;margin:0.4375em;background-color:#d3d3d3}.sapMPopover .sapMPopoverScroll{display:inline-block;overflow:hidden;vertical-align:middle;min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMPopover.sapUiPopupWithPadding .sapMPopoverScroll{padding:1rem}.sapMPopoverVerScrollDisabled .sapMPopoverScroll{height:100%}.sapMPopoverHorScrollDisabled .sapMPopoverScroll{display:block;width:100%}.sapMPopoverCont:focus{outline:none}.sapMPopover.sapMPopoverTransparent{opacity:0}.sapMPopover.sapMPopoverOpaque{opacity:1}.sapMPopoverWithBar.sapMPopoverWithFooter>.sapMPopoverCont{margin-bottom:0;margin-top:0}.sapMPopoverWithoutBar.sapMPopoverWithFooter>.sapMPopoverCont{margin-bottom:0}.sapMPopoverWithBar.sapMPopoverWithoutFooter>.sapMPopoverCont{margin-top:0}.sapMPopoverWithoutBar.sapMPopoverNav>.sapMPopoverCont,.sapMPopoverWithoutBar.sapMPopoverPage>.sapMPopoverCont,.sapMActionSheetPopover>.sapMPopoverCont{margin:0;background-color:transparent}.sapMPopover>.sapMBar{position:relative;width:auto}.sapMPopoverWithoutBar.sapMPopoverNav .sapMPopoverCont .sapMPage{background-color:transparent}.sapMPopover>.sapMPopoverCont .sapMPage>section{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:auto}.sapMPopoverWithoutBar .sapMPage footer.sapMIBar{position:absolute}.sapMPopover.sapUiContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll,.sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll,.sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll,.sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:0}.sapMSplitContainerDetail .sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:1rem}.sapMPopover.sapUiNoContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:0}.sapMPI{-webkit-box-sizing:border-box;box-sizing:border-box;-moz-box-sizing:border-box;border:1px solid #000000;padding:1px;margin:0.25rem 0}.sapMPIBar{height:100%;float:left}.sapMPIBarDisabled{opacity:0.5}.sapMPIText{font-size:0.75rem;color:#d3d3d3}.sapMPITextLeft{color:#ffffff;display:none;float:right;padding-right:0.5rem}.sapMPITextRight{display:block;float:left;padding-left:0.5rem}.sapMPIValueGreaterHalf .sapMPITextRight{display:none}.sapMPIValueGreaterHalf .sapMPITextLeft{display:block}.sapMPIAnimate .sapMPIText{display:none}.sapMRb{float:left;clear:left;outline:none;text-overflow:ellipsis;position:relative}.sapMILI-CTX .sapMRb{float:right}.sapMRbB{height:3em;width:3em;display:inline-block;display:-webkit-inline-box}.sapMRbB .sapMRbBOut{height:1.03em;width:1.03em;border-radius:1em}.sapMRbBLabel{vertical-align:top;height:3em;line-height:3em}.sapMRbB input{-webkit-appearance:none;visibility:hidden}.sapMRbB:focus{outline:none}.sapMRbG:not(.sapMRbGTab){display:inline-block}.sapMRbGTab{display:box;display:-moz-box;display:-webkit-box}html[data-sap-ui-browser^="ie"] .sapMRbGTab{display:table;table-layout:fixed}.sapMRbGCol{vertical-align:top;min-width:10px;margin-right:0;padding:1px;overflow:hidden}.sapMRbGTabFlex>.sapMRbGCol{-moz-box-flex:1;-webkit-box-flex:1;box-flex:1}html[data-sap-ui-browser^="ie"] .sapMRbGCol{display:table-cell;padding-right:15px}.sapMRbGDummy{-moz-box-flex:1000;-webkit-box-flex:1000;box-flex:1000;min-width:1px}html[data-sap-ui-browser^="ie"] .sapMRbGDummy{display:table-cell;width:1px}.sapMRbG>.sapMRb,.sapMRbGCol>.sapMRb{float:left;clear:left;text-overflow:ellipsis}.sapMRbG.sapMRbG1Row>.sapMRb{float:none;clear:none;margin-right:15px}.sapMRbGCol>.sapMRb{width:100%;outline-offset:-1px}.sapMRbG .sapMRbB{position:absolute;left:0}.sapMRbG .sapMRbBLabel{padding-left:2.875rem;display:inline-block}.sapMRbG[dir=rtl] .sapMRbB{right:0}.sapMRbG[dir=rtl] .sapMRbBLabel{padding-right:2.875rem}.sapMRI{position:relative;display:inline-block;overflow:hidden;vertical-align:middle;padding:0.25rem;touch-action:pan-y;-ms-touch-action:pan-y}.sapMRISelector{position:absolute;background:transparent;width:100%;height:100%}html[data-sap-ui-browser*='ie'] .sapMRISelector{background-color:rgba(255,255,255,0.01)}.sapMRISel{float:left;display:block;overflow:hidden;padding:0;margin:0;color:#111177;word-wrap:normal;white-space:nowrap}.sapMRIUnsel{position:relative;float:right;color:#d3d3d3;word-wrap:normal;white-space:nowrap}.sapMRIUnselWrapper{float:right;overflow:hidden}.sapMRIHov{float:left;display:none;overflow:hidden;color:#ff0000;word-wrap:normal;white-space:nowrap}.sapMScrollCont{overflow:hidden;position:relative}.sapMScrollContScroll{display:inline-block}.sapMScrollContV .sapMScrollContScroll{display:block}.sapMScrollCont.sapUiContentPadding>.sapMScrollContScroll{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll,.sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll,.sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll,.sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll{padding:0}.sapMSplitContainerDetail .sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll{padding:1rem}.sapMScrollCont.sapUiNoContentPadding>.sapMScrollContScroll{padding:0}.sapMSF{position:relative;-moz-user-modify:read-only;-webkit-user-modify:read-only;-webkit-user-select:none;user-select:none}.sapMSFI[type="search"]{font-size:0.88em;-webkit-appearance:none;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}.sapMSFI[type="search"]::-webkit-search-decoration,.sapMSFI[type="search"]::-webkit-search-results-decoration,.sapMSFI[type="search"]::-webkit-search-results-button{-webkit-appearance:none}.sapMSFI[type="search"]:focus{-webkit-appearance:none}input.sapMSFI[type="search"]:focus{outline:none;outline-width:0}.sapMSFR{position:absolute;right:0;top:0;width:1.8em;height:100%;background:transparent}.sapMSFPlaceholder{font-size:0.88em;display:none}.sapMSegB{margin:0;padding:0;-webkit-tap-highlight-color:rgba(255,255,255,0);border:none;display:inline-block;white-space:nowrap}.sapMSegBBtn{list-style:none;text-overflow:ellipsis;overflow:hidden;-webkit-tap-highlight-color:rgba(255,255,255,0);display:inline-block;text-align:center;cursor:pointer}.sapMSegBBtn:focus{outline:none}.sapMSegBBtn .sapUiIcon:focus{outline:none}.sapMSegBBtn .sapMBtnIconLeft{position:relative}.sapMSegBBtn.sapMSegBBtnMixed{padding-right:0.5rem}.sapMSegB .sapMSegBBtn.sapMSegBBtnMixed{padding-right:0.5rem}.sapMSegB img{margin:0;vertical-align:top;pointer-events:none}.sapMSegB.sapMSegBHide{visibility:hidden}.sapMSegBBtn.sapMSegBBtnDis{text-shadow:none;cursor:default;opacity:0.5}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMBar .sapMSegB{line-height:2.5rem}html[data-sap-ui-os^="bb"] header .sapMSegB,html[data-sap-ui-os^="Android4.1"][data-sap-ui-browser^="an"] header .sapMSegB,html[data-sap-ui-os^="Android4.2"][data-sap-ui-browser^="an"] header .sapMSegB,html[data-sap-ui-os^="Android4.3"][data-sap-ui-browser^="an"] header .sapMSegB,html[data-sap-ui-os^="bb"] footer .sapMSegB,html[data-sap-ui-os^="Android4.1"][data-sap-ui-browser^="an"] footer .sapMSegB,html[data-sap-ui-os^="Android4.2"][data-sap-ui-browser^="an"] footer .sapMSegB,html[data-sap-ui-os^="Android4.3"][data-sap-ui-browser^="an"] footer .sapMSegB,html[data-sap-ui-os^="bb"] .sapMBar .sapMSegB,html[data-sap-ui-os^="Android4.1"][data-sap-ui-browser^="an"] .sapMBar .sapMSegB,html[data-sap-ui-os^="Android4.2"][data-sap-ui-browser^="an"] .sapMBar .sapMSegB,html[data-sap-ui-os^="Android4.3"][data-sap-ui-browser^="an"] .sapMBar .sapMSegB{height:1.5rem;line-height:1.5rem;display:inline-block}html[data-sap-ui-os^="iOS"] header .sapMSegB,html[data-sap-ui-os^="iOS"] footer .sapMSegB,html[data-sap-ui-os^="iOS"] .sapMBar .sapMSegB{line-height:1.5rem;display:inline-block}html[data-sap-ui-os^="Android"] .sapUiSizeCompact .sapMSegBBtn .sapUiIcon{line-height:1.6rem}.sapMSlt,.sapMSltNative,.sapMSlt>.sapMSltLabel{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMSltNative,.sapMSltNative>option{font:inherit}.sapMSlt,.sapMSltLabel,.sapMSltArrow{display:inline-block}.sapMSlt,.sapMSltLabel{overflow:hidden}.sapMSlt:not(.sapMSltDisabled),.sapMSlt:not(.sapMSltDisabled)>.sapMSltLabel{cursor:pointer}.sapMSltDisabled{pointer-events:none}.sapMSlt{position:relative;vertical-align:top;outline:none}.sapMSlt>.sapMSltLabel{position:absolute;left:0;right:0;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;text-indent:0;text-align:start;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.sapMSltAutoAdjustedWidth>.sapMSltLabel{position:relative;vertical-align:top}.sapMILI-CTX .sapMSltLabel{text-align:end}.sapMSltIcon{position:absolute;display:block}.sapMSltAutoAdjustedWidth .sapMSltIcon{position:relative}.sapMSltNative{-webkit-appearance:none;position:relative;cursor:inherit;border:none;margin:0;padding:0;width:auto;opacity:0}.sapMSelectDialog.sapMDialog .sapMDialogScrollCont{padding:0}.sapMBusyIndicator.sapMSelectDialogBusyIndicator{position:absolute;top:50%;left:50%;margin-top:-1rem;margin-left:-1rem;display:none}.sapMSelectDialogListHide{display:none}.sapMSelectDialog.sapMDialog .sapMDialogScroll{width:100%!important}.sapMSelectListDisabled,.sapMSelectListItemDisabled{pointer-events:none}.sapMSelectList{margin:0;padding:0;outline:none;list-style-type:none;-webkit-box-sizing:border-box;box-sizing:border-box}.sapMSelectListItem{outline:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sapMShell{width:100%;height:100%;position:relative;-moz-box-sizing:border-box;box-sizing:border-box}.sapMShellBrandingBar{position:absolute;left:0;top:0;width:100%;height:4px;z-index:1;background-color:#f0ab00}.sapMBrandingBar-CTX .sapMShellBrandingBar,.sapUiUfdShell .sapMShellBrandingBar{display:none}.sapMShellBG{position:absolute;left:0;top:0;width:100%;height:100%}.sapMShellCentralBox{position:relative;height:100%}.sapMShellHeader{position:relative;width:100%;text-align:center;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 16px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.sapMShellHeaderText{display:none;cursor:default;position:relative}.sapMShellLogo{display:none;position:relative;z-index:1}.sapMShellLogoImgAligner{display:none}.sapMShellHeaderRight{display:none;position:relative}.sapMShellContent{-moz-box-sizing:border-box;box-sizing:border-box;height:100%!important;width:100%;position:relative;margin:0 auto}@media (min-height:3401px){.sap-desktop .sapMShellLogo{position:absolute;float:left;display:-webkit-flex;display:flex;height:40px;margin:0.75em;margin-left:0}html[data-sap-ui-browser^="ie"].sap-desktop .sapMShellLogo{display:block}html[data-sap-ui-browser^="ie"].sap-desktop .sapMShellLogoImgAligner{display:inline-block;height:100%;vertical-align:middle;margin-right:-0.25em}html[data-sap-ui-browser^="ie"].sap-desktop .sapMShellLogoImg{vertical-align:middle;display:inline-block}.sap-desktop .sapMShellLogoImg{margin:auto;max-width:6rem;max-height:40px}.sap-desktop .sapMShellHeader{display:block;position:relative;height:4.25rem;color:#a9a9a9;border-bottom:0.0625rem solid #808080}.sap-desktop .sapMShellHeaderText{display:inline-block;margin-top:1.25rem;font-size:1.75em;font-weight:lighter}.sap-desktop .sapMShellHeaderRight{display:inline-block;float:right;font-size:0.875em;margin-top:30px}.sap-desktop .sapMShellHeaderRightText{padding:0.75em 0.57em}.sap-desktop .sapMShellHeaderLogout{cursor:pointer;padding:0.75em 0.57em}.sap-desktop .sapMShellHeaderLogout:hover{}.sap-desktop .sapMShellHeaderLogout:focus{outline:none}.sap-desktop .sapMShellHeaderLogout:active{background-color:#111177;outline:none}.sap-desktop .sapMShellContent{position:absolute;top:68px;bottom:0;height:auto!important}}@media (min-height:769px) and (max-width:640px){.sap-desktop .sapMShellLogo{display:none}}@media (min-width:1280px){.sap-desktop .sapMShellLogo{margin-left:1rem}.sap-desktop .sapMShellAppWidthLimited .sapMShellCentralBox{width:1280px;margin-left:-640px;left:50%;background-color:rgba(255,255,255,0.3)}}@media (min-width:1280px){.sap-desktop .sapMShellAppWidthLimited .sapMShellHeader{padding:0}}@media (min-width:1480px){.sap-desktop .sapMShellAppWidthLimited .sapMShellLogo{position:absolute;opacity:1;height:auto;width:80px;text-align:center;display:block;right:1280px;top:0;margin:0.75em;margin-left:0}.sap-desktop .sapMShellAppWidthLimited .sapMShellLogoImg{max-width:80px;max-height:80px}html[data-sap-ui-browser^="ie"].sap-desktop .sapMShellAppWidthLimited .sapMShellLogoImgAligner{display:none}}@media (min-width:1680px){.sap-desktop .sapMShellAppWidthLimited .sapMShellLogo{width:160px;margin:2rem}.sap-desktop .sapMShellAppWidthLimited .sapMShellLogoImg{max-width:160px;max-height:160px}}.sapMSlider{display:inline-block;vertical-align:top;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;touch-action:pan-y;-ms-touch-action:pan-y}.sapMSlider:not(.sapMSliderDisabled){cursor:pointer}.sapMSliderDisabled{pointer-events:none}.sapMSliderInner{width:100%;position:relative;background-repeat:no-repeat}.sapMSliderProgress,.sapMSliderHandle{position:absolute}.sapMSliderHandle{display:block;outline:none}.sapMSliderInput{display:none}.sapMSplitContainer{width:100%;height:100%;display:block;position:relative;overflow:hidden}.sapMSplitContainerMaster{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:320px;float:left;left:0}.sapMSplitContainerMaster>.sapMSplitContainerMasterBlindLayer{border:none;position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1;display:none}.sapMSplitContainerPortrait.sapMSplitContainerShowHide>.sapMSplitContainerMaster>.sapMSplitContainerMasterBlindLayer,.sapMSplitContainerHideMode>.sapMSplitContainerMaster>.sapMSplitContainerMasterBlindLayer{display:block}.sapMSplitContainerDetail{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;height:100%;touch-action:pan-y;-ms-touch-action:pan-y}.sapMSplitContainerStretchCompress>.sapMSplitContainerMaster,.sapMSplitContainerShowHide:not(.sapMSplitContainerPortrait)>.sapMSplitContainerMaster,.sapMSplitContainerPopover:not(.sapMSplitContainerPortrait)>.sapMSplitContainerMaster{border-radius:0.3125em}.sapMSplitContainerPortrait.sapMSplitContainerShowHide>.sapMSplitContainerMaster,.sapMSplitContainerHideMode>.sapMSplitContainerMaster{display:inline-block;position:absolute;transform:translate3d(-330px,0,0);transition:all 0ms;-webkit-transform:translate3d(-330px,0,0);-webkit-transition:all 0ms;-moz-transform:translate3d(-330px,0,0);-moz-transition:all 0ms;z-index:5;top:0;height:100%;border-right:none}html[data-sap-ui-browser^="ie9"] .sapMSplitContainerPortrait.sapMSplitContainerShowHide>.sapMSplitContainerMaster,html[data-sap-ui-browser^="ie9"] .sapMSplitContainerHideMode>.sapMSplitContainerMaster{left:-320px}.sapMSplitContainerPopover>.sapMPopoverCont>.sapMPopoverScroll>.sapMSplitContainerMaster{border-right:none}.sapMSplitContainerPortrait.sapMSplitContainerShowHide>.sapMSplitContainerDetail,.sapMSplitContainerHideMode>.sapMSplitContainerDetail,.sapMSplitContainerPopover .sapMSplitContainerDetail{margin-left:0}.sapMSplitContainerPortrait.sapMSplitContainerShowHide>.sapMSplitContainerMasterVisible,.sapMSplitContainerHideMode>.sapMSplitContainerMasterVisible{transform:translate3d(0,0,0);transition:all 300ms;-webkit-transform:translate3d(0,0,0);-webkit-transition:all 300ms;-moz-transform:translate3d(0,0,0);-moz-transition:all 300ms}.sapMSplitContainerPortrait.sapMSplitContainerShowHide>.sapMSplitContainerMasterHidden,.sapMSplitContainerHideMode>.sapMSplitContainerMasterHidden{transform:translate3d(-330px,0,0);transition:all 300ms;-webkit-transform:translate3d(-330px,0,0);-webkit-transition:all 300ms;-moz-transform:translate3d(-330px,0,0);-moz-transition:all 300ms}.sapMSplitContainerPortrait.sapMSplitContainerStretchCompress>.sapMSplitContainerMaster{width:320px!important;left:0}@-webkit-keyframes sapMSplitContainerSlidein{from{width:0}to{width:320px}}@-webkit-keyframes sapMSplitContainerSlideout{from{width:320px}to{width:0}}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0.7}}@-moz-keyframes sapMSplitContainerSlidein{from{width:0}to{width:320px}}@-moz-keyframes sapMSplitContainerSlideout{from{width:320px}to{width:0}}@-moz-keyframes fadeIn{from{opacity:0}to{opacity:1}}@-moz-keyframes fadeOut{from{opacity:1}to{opacity:0.7}}@keyframes sapMSplitContainerSlideout{from{width:320px}to{width:0}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{from{opacity:1}to{opacity:0.7}}.sapMSplitContainerPortrait .sapMSplitContainerMasterBtnShow{display:block;animation:fadeIn 300ms;-webkit-animation:fadeIn 300ms;-moz-animation:fadeIn 300ms}.sapMSplitContainerPortrait .sapMSplitContainerMasterBtnHide{animation:fadeOut 150ms;-webkit-animation:fadeOut 150ms;-moz-animation:fadeOut 150ms}.sapMSplitContainerMasterBtnShow{display:block;animation:fadeIn 1ms;-webkit-animation:fadeIn 1ms;-moz-animation:fadeIn 1ms}.sapMSplitContainerMasterBtnHide{animation:fadeOut 5ms;-webkit-animation:fadeOut 5ms;-moz-animation:fadeOut 5ms}.sapMSplitContainerMasterBtnHidden{display:none}.sapMSplitContainerMobile{width:100%;height:100%}.sapMSplitContainer>.sapMSplitContainerDetail .sapMSplitContainerHiddenChild{display:none}.sapMSLI{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;height:2.75em}.sapMSLIDiv{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-moz-box-pack:center;-ms-justify-content:center;justify-content:center}.sapMSLITitle,.sapMSLITitleOnly,.sapMSLIDescription{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:9;-moz-box-flex:9;-ms-flex:auto;flex:auto;-ms-flex-negative:1}.sapMSLITitleDiv,.sapMSLIDescriptionDiv{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex}.sapMSLIDiv.sapMSLITitleDiv{-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}.sapMSLIInfo{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:0;-moz-box-flex:0;-ms-flex:none;flex:none;text-align:right}html[dir=rtl] .sapMSLIInfo{text-align:left}.sapMSLI>.sapMLIBContent{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}.sapMStdTileTopRow{height:4rem;padding:1rem 1rem 0 1rem;margin-bottom:1rem}.sapMStdTileIconDiv{display:inline-block;float:left}.sapMStdTileNumDiv{display:inline-block;float:right;width:7.5rem;height:4rem}.sapMStdTileNum,.sapMStdTileNumM,.sapMStdTileNumS{white-space:nowrap;overflow:hidden;text-align:right;line-height:1em}.sapMStdTileNum{font-size:3rem;margin-top:-0.437rem}.sapMStdTileNumM{font-size:2.25rem;margin-top:-0.25rem}.sapMStdTileNumS{font-size:1.5rem;margin-top:-0.125rem}.sapMStdTileNumUnit{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right;text-transform:uppercase;font-size:0.875rem}.sapMStdTileTitle{line-height:1.4rem;vertical-align:top;text-align:left;font-size:1rem;height:4rem;width:100%;overflow:hidden;word-break:break-word}html[dir=rtl] .sapMStdTileTitle{text-align:right}.sapMStdTileInfo{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right;font-size:0.875rem;margin-top:2rem}html[dir=rtl] .sapMStdTileNum,html[dir=rtl] .sapMStdTileNumM,html[dir=rtl] .sapMStdTileNumS,html[dir=rtl] .sapMStdTileNumUnit,html[dir=rtl] .sapMStdTileInfo{text-align:left}.sapMStdTileBottomRow{height:7rem;padding:0 1rem 1rem 1rem}.sapMStdTileMonitorType{margin-top:-2rem;padding-top:2rem}.sapMStdTileBottomRow .sapMStdTileMonitorType{height:10rem}.sap-phone .sapMStdTileTopRow{height:3rem;margin-bottom:0}.sap-phone .sapMStdTileNumDiv{width:5rem;height:3rem}.sap-phone .sapMStdTileNumUnit{font-size:0.75rem}.sap-phone .sapMStdTileBottomRow{height:5rem}.sap-phone .sapMStdTileMonitorType{margin-top:-1rem;padding-top:1rem}.sap-phone .sapMStdTileTitle{line-height:1.2rem;font-size:.875rem;height:4rem;margin-bottom:0}.sap-phone .sapMStdTileInfo{height:1rem;font-size:0.75rem;width:100%;margin-top:0}.sap-phone .sapMStdTileNum{font-size:2.375rem}.sap-phone .sapMStdTileNumM{font-size:1.5rem}.sap-phone .sapMStdTileNumS{font-size:1rem}.sap-phone .sapMSupport .sapMDialogScrollCont{padding:0}.sapMSupport .sapUiSupportLabel{font-weight:bold}.sapMSupport .sapUiSupportTechInfoBorder{border:1px solid #E2E2E2}.sapMSupport .sapUiSupportTxtFld,.sapMSupport .sapUiSupportBtn{border:1px solid #BFBFBF;font-size:14px;height:22px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin-left:10px}.sapMSupport .sapUiSupportTxtArea{width:100%;height:50px;margin-top:5px;resize:none;box-sizing:border-box}.sapMSupport .sapUiSupportPnlLbl{display:block}.sapMSupport .sapUiSupportDiv{margin-top:5px}.sapMSupport .sapUiSupportTxtFld{background-color:#FFFFFF;padding:1px}.sapMSupport .sapUiSupportTxtFld:focus{border-color:#007DC0}.sapMSupport .sapUiSupportBtn{background-color:#E2E2E2;border-color:#A3A3A3;padding-bottom:3px;cursor:pointer}.sapMSupport .sapUiSupportBtn:focus,.sapMSupport .sapUiSupportBtn.sapUiSupportRunningTrace{color:#FFFFFF;border-color:#00689E;background-color:#007DC0}.sapMSupport .sapUiSupportBtn.sapUiSupportRunningTrace{cursor:default}.sapMSwtText,.sapMSwtHandle,.sapMSwtInner{position:absolute}.sapMSwtCont{display:inline-block;vertical-align:top;outline:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sapMSwtCont:not(.sapMSwtContDisabled){cursor:pointer}.sapMSwtCont>input{display:none}.sapMSwtContDisabled{pointer-events:none}.sapMSwt{position:relative;outline:none;touch-action:pan-y;-ms-touch-action:pan-y}.sapMSwtDisabled:focus{outline:none}.sapMSwtInner{width:100%;height:100%}.sapMSwtText{text-align:center}.sapMSwtLabel{white-space:nowrap;text-decoration:none;text-overflow:ellipsis;overflow:hidden}.sapMSwtHandle{display:block;top:0;bottom:0;margin:auto}.sapMSwtAcceptReject .sapMSwtLabelOn::before,.sapMSwtAcceptReject .sapMSwtLabelOff::before{font-family:'SAP-icons';speak:none}.sapMListTbl{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;overflow:hidden}.sapMListTbl th,.sapMListTbl td{overflow:hidden}.sapMListTbl .sapMLIB{display:table-row}.sapMListTbl:focus,.sapMListTbl th:focus,.sapMListTbl td:focus,.sapMListTbl>tr:focus{outline:none}.sapMListTblCellNoData{text-align:center}.sapMListTblHeaderNone{height:0}.sapMListTblCellDup>.sapMListTblCellDupCnt{position:absolute;clip:rect(0,0,0,0)}tr.sapMListTblHeaderNone>th{border:0;margin-top:0;padding-top:0;margin-bottom:0;padding-bottom:0}.sapMListTblHeaderNone>.sapMListTblSelCol>.sapMCb,.sapMListTblHeaderNone>.sapMListTblCell>*{display:none}.sapMListTbl .sapMLabel{word-wrap:normal}.sapMListTblNone{display:none}.sapMListTblSelCol{width:3rem}.sapMListTblNavCol{width:0}.sapMListTblUnreadCol{width:1.74rem}.sapMListTblSubCnt{display:block}.sapMListTblSubCntRow{display:block;overflow:hidden}.sapMListTblSubCntSpr,.sapMListTblSubCntHdr,.sapMListTblSubCntVal{display:inline-block;vertical-align:middle}.sapMListTblSubCntValBlock{display:block}@media screen and (max-width:1120px){.sapMListTblCell.sapMSize-xxlarge{display:none}}@media screen and (max-width:1024px){.sapMListTblCell.sapMSize-desktop{display:none}}@media screen and (max-width:960px){.sapMListTblCell.sapMSize-xlarge{display:none}}@media screen and (max-width:768px){.sapMListTblCell.sapMSize-large{display:none}}@media screen and (max-width:600px){.sapMListTblCell.sapMSize-tablet{display:none}}@media screen and (max-width:560px){.sapMListTblCell.sapMSize-medium{display:none}}@media screen and (max-width:480px){.sapMListTblCell.sapMSize-small{display:none}}@media screen and (max-width:320px){.sapMListTblCell.sapMSize-xsmall{display:none}}@media screen and (max-width:240px){.sapMListTblCell.sapMSize-xxsmall,.sapMListTblCell.sapMSize-phone{display:none}}.sapMListTbl.sapUiContentPadding{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMListTbl.sapUiResponsiveContentPadding,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMListTbl.sapUiResponsiveContentPadding,.sapMListTbl.sapUiResponsiveContentPadding{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMListTbl.sapUiResponsiveContentPadding,.sapMListTbl.sapUiResponsiveContentPadding{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMListTbl.sapUiResponsiveContentPadding,.sapMListTbl.sapUiResponsiveContentPadding{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMListTbl.sapUiResponsiveContentPadding{padding:0}.sapMSplitContainerDetail .sapMListTbl.sapUiResponsiveContentPadding{padding:1rem}.sapMListTbl.sapUiNoContentPadding{padding:0}html[data-sap-ui-browser="ie9"] .sapMPersoDialog .sapMPersoDialogFixedBar .sapMPersoDialogSelectAllCb{margin-left:1rem}.sapMPersoDialogFixedBar{position:relative}.sapMPersoDialogFixedBar .sapMPersoDialogSelectAllCb>.sapMCbLabel{font-size:1.125rem}.sapMPersoDialogFixedBar .sapMPersoDialogResetBtn{position:absolute;top:0;right:0}.sapMTableSelectDialog.sapMDialog .sapMDialogScrollCont{padding:0}.sapMBusyIndicator.sapMTableSelectDialogBusyIndicator{position:absolute;top:50%;left:50%;margin-top:-1rem;margin-left:-1rem;display:none}.sapMTableSelectDialogTableHide{display:none}.sapMText{display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;white-space:pre-line;word-wrap:break-word;cursor:text}.sapMTextNoWrap,.sapMTextMaxLine{overflow:hidden}.sapMTextNoWrap{text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.sapMTextLineClamp{display:-webkit-box;-webkit-box-orient:vertical}.sapMTextBreakWord{word-break:break-all;word-break:break-word}.sapMTextMaxWidth{max-width:100%}.sapMLIBCursor .sapMText,.sapMLIBCursor + .sapMListTblSubRow .sapMText{cursor:pointer}.sapMTextAreaInner{line-height:1.6em;overflow:auto;-webkit-transform:none;resize:none}.sapMTextArea>.sapMTextAreaInner{height:100%;width:100%}.sapMTile{border:1px solid #808080;display:inline-block;-webkit-transition-property:transform3d;-webkit-transition-duration:0.2s;-moz-transition-property:transform3d;-moz-transition-duration:0.2s;transition-property:transform3d;transition-duration:0.2s;width:12rem;height:14rem;margin:0.5rem;-webkit-touch-callout:none;background-color:#ffffff}.sapMTile *{-webkit-user-select:none;-webkit-user-drag:none;-moz-user-select:-moz-none;-ms-user-select:none}.sapMTCEditable .sapMTile{background-color:rgba(255,255,255,0.5)}html[data-sap-ui-browser*='ie'] .sapMTile{transition-property:transform}.sapMTile.sapMTileActive{background:#111177}.sap-phone .sapMTile{width:8.5rem;height:10rem;margin:0.5rem}.sap-phone .sapMTileContent{width:8.5rem;height:10rem}.sapMTileContent{overflow:hidden;width:12rem;height:14rem}.sapMTileDrag{opacity:0.8;z-index:10;-webkit-transition-property:none;-moz-transition-property:none;transition-property:none}.sapMNavItemFlipping .sapMTile{opacity:0.01}.sapMTC{top:0;bottom:0;left:0;right:0;position:relative;overflow:hidden;touch-action:pan-y;-ms-touch-action:pan-y}.sapMTC .sapMTCScrl{padding:0;position:absolute;left:0;top:0;overflow:visible}.sapMTC:focus{outline:none}.sapMTC .sapMTCCnt{height:100%;width:100%;overflow:visible;position:absolute;left:0;top:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none}.sap-tablet .sapMTC .sapMTCScrl,.sap-phone .sapMTC .sapMTCScrl{padding:0}.sapMTC.sapMTCEditable .sapMTCCnt{opacity:1}.sapMTC .sapMTCCnt.sapMTCAnim{-webkit-transition-property:-webkit-transform3d;-webkit-transition-duration:0.4s;-moz-transition-property:-moz-transform;-moz-transition-duration:0.4s;transition-property:transform3d;transition-duration:0.4s}.sapMTC .sapMTCPager{position:absolute;bottom:0;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:30px;padding:5px;text-align:center}.sapMTC .sapMTCPager SPAN{display:inline-block;background-color:#dcdcdc;border-radius:4px;height:8px;width:8px;margin-right:8px;margin-bottom:1px;cursor:default;box-shadow:0 0 1px 1px #ffffff}.sapMTC .sapMTCBlind{background-color:#ffffff;opacity:0.4;position:absolute;top:0;left:0;bottom:0;right:0;display:none;box-shadow:0 0 5px 5px #ffffff}.sapMTC .sapMTCPager SPAN.sapMTCActive{background-color:#111177;box-shadow:0 0 2px 2px #ffffff}.sapMTC .sapMTCScroller{position:absolute;display:none;top:41%;border-radius:50%;background-color:#ffffff;height:48px;width:48px;opacity:0;cursor:default;-webkit-transition-property:opacity,left,right;-webkit-transition-duration:0.4s;-moz-transition-property:opacity,left,right;-moz-transition-duration:0.4s;transition-property:opacity,left,right;transition-duration:0.4s;box-shadow:0 1px 4px #b6b6b6;padding:4px;-moz-box-sizing:border-box;box-sizing:border-box}.sapMTC .sapMTCScroller .sapMTCInner{background-color:#111177;height:100%;width:100%;border-radius:50%;font-family:"SAP-icons";font-size:21px;vertical-align:middle;color:#ffffff;padding-top:8px;-moz-box-sizing:border-box;box-sizing:border-box}.sapMTC:hover .sapMTCScroller{opacity:0.1}.sapMTC:hover .sapMTCScroller:hover{opacity:1}.sapMTC .sapMTCScroller.sapMTCLeft{left:-100px}.sapMTC .sapMTCScroller.sapMTCLeft .sapMTCInner::before{content:"\e067";padding-left:13px}.sapMTC:hover .sapMTCScroller.sapMTCLeft{left:1rem}.sapMTC .sapMTCScroller.sapMTCRight{right:-100px}.sapMTC:hover .sapMTCScroller.sapMTCRight{right:1rem}.sapMTC .sapMTCScroller.sapMTCRight .sapMTCInner::before{content:"\e066";padding-left:16px}.sapMTC .sapMTile,.sapMTC .sapMCustomTile{position:absolute;top:0;left:0}html[dir=rtl] .sapMTC .sapMTile,html[dir=rtl] .sapMTC .sapMCustomTile{left:auto;right:0}.sap-tablet .sapMTC .sapMTCScroller,.sap-phone .sapMTC .sapMTCScroller{display:none}.sapMTC .sapMTCRemove{display:none}.sapMTC.sapMTCEditable .sapMTileContent{margin-top:-1em}.sapMTC.sapMTCEditable .sapMTile{cursor:move;box-shadow:0 1px 5px rgba(0,0,0,0.6)}.sapMTC.sapMTCEditable .sapMTile .sapMTCRemove{background-color:#909090;display:block;height:24px;width:25px;border-radius:50%;font-family:"SAP-icons";font-size:20px;color:#ffffff;padding-top:0;padding-left:2px;box-sizing:border-box;margin-top:-0.5em;margin-left:-0.5em;box-shadow:0 1px 3px #909090;z-index:1;cursor:default}html[data-sap-ui-browser^="ff"] .sapMTC.sapMTCEditable .sapMTile .sapMTCRemove{width:22px}.sapMTC.sapMTCEditable .sapMTile .sapMTCNoRemove{height:24px;width:25px;margin-top:-0.5em;margin-left:-0.5em;z-index:1;visibility:hidden}.sapMTC.sapMTCEditable .sapMTCRemove:hover{background-color:#1717a4}.sapMTC.sapMTCEditable .sapMTCRemove:active{background-color:#1e1ed0}.sapMTC.sapMTCEditable .sapMTCRemove::before{content:"\e1c7"}.sapMTC .sapMTCEdgeRight,html[dir=rtl] .sapMTC .sapMTCEdgeLeft{position:absolute;top:0;right:0;width:40px;height:100%;border-right:2px solid rgba(30,30,208,0.6);opacity:0.01;background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,#ffffff 76%,#ffffff 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0%,rgba(255,255,255,0)),color-stop(76%,#ffffff),color-stop(100%,#ffffff));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,#ffffff 76%,#ffffff 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,#ffffff 76%,#ffffff 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,#ffffff 76%,#ffffff 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,#ffffff 76%,#ffffff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffffff',endColorstr='#ffffff',GradientType=1)}.sapMTC .sapMTCEdgeLeft,html[dir=rtl] .sapMTC .sapMTCEdgeRight{position:absolute;top:0;left:0;width:40px;height:100%;border-left:2px solid rgba(30,30,208,0.6);opacity:0.01;background:-moz-linear-gradient(left,#ffffff 0,#ffffff 24%,rgba(255,255,255,0) 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0%,#ffffff),color-stop(24%,#ffffff),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,#ffffff 0,#ffffff 24%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,#ffffff 0,#ffffff 24%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,#ffffff 0,#ffffff 24%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,#ffffff 0,#ffffff 24%,rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#00ffffff',GradientType=1)}.sap-phone .sapMTC .sapMTCEdgeLeft,.sap-phone .sapMTC .sapMTCEdgeRight{width:20px}.sapMTitle{position:relative;display:inline-block;margin:0;-webkit-margin-before:0;-webkit-margin-after:0;-webkit-margin-start:0;-webkit-margin-end:0;font-weight:normal;color:#000000;font-family:Arial,Helvetica,sans-serif;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;cursor:text}.sapMTitleMaxWidth{max-width:100%}.sapMTitleAlignBegin{text-align:left;text-align:start}.sapMTitleAlignLeft{text-align:left}.sapMTitleAlignEnd{text-align:right;text-align:end}.sapMTitleAlignRight{text-align:right}.sapMTitleAlignCenter{text-align:center}.sapMTitleStyleAuto{font-size:xx-large}.sapMTitleStyleH1{font-size:xx-large}.sapMTitleStyleH2{font-size:x-large}.sapMTitleStyleH3{font-size:large}.sapMTitleStyleH4{font-size:medium}.sapMTitleStyleH5{font-size:medium}.sapMTitleStyleH6{font-size:medium}.sapMToken{display:inline;overflow:hidden;box-sizing:border-box}.sapMTokenText{display:inline;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sapMTokenIcon{display:inline}.sapMToken .sapUiIcon{display:inline-block;min-width:1.4375rem}.sapMTokenizer{display:inline-block;white-space:nowrap;overflow:hidden}.sapMTokenizer .sapMToken{margin-top:0.375rem;margin-bottom:0.375rem;margin-right:0.375rem;line-height:initial;padding-top:0;padding-bottom:0;height:1.625rem;display:inline-block}.sapMTokenTruncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}.sapMTokenTruncate>.sapMTokenIcon{position:absolute;right:0rem}.sapMTokenTruncate>.sapMTokenText{line-height:1.625rem;display:inline-block;width:calc(100% - 2rem)}.sap-phone .sapMTokenizerMultiLine{padding-left:1rem;padding-right:1rem}.sap-phone .sapMTokenizerMultiLine>.sapMTokenizerScrollContainer>.sapMToken{display:table}.sapMMultiInputMultiModeBorder .sapMTokenizer{white-space:normal}.sapMMultiInputMultiModeBorder .sapMTokenizer .sapMToken{margin-bottom:0}.sapUiSizeCompact .sapMTokenizer .sapMToken{height:1.25rem;margin-top:0.125rem;margin-bottom:0.125rem;margin-right:0.125rem}.sapUiSizeCompact .sapMMultiInputMultiModeBorder .sapMTokenizer .sapMToken{margin-bottom:-0.125rem}.sapUiSizeCompact .sapMTokenTruncate>.sapMTokenText{line-height:1.25rem;width:calc(100% - 1.25rem)}.sapMTokenizer:focus{outline:none}.sapMTokenizerScrollContainer{display:inline-block;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sapMTB{white-space:nowrap;overflow:hidden;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none}.sapMTB:focus{outline:0}.sapMTBActive,.sapMTBActive>*{cursor:pointer}.sapMTBShrinkItem{min-width:1rem}.sapMTBNewFlex{display:-webkit-flex;display:-ms-flexbox;display:flex}.sapMTBNewFlex>*{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.sapMTBNewFlex>.sapMTBShrinkItem{-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1}.sapMTBOldFlex{display:-webkit-box}.sapMTBOldFlex>.sapMTBShrinkItem:not(.sapMFlexBox){display:block}.sapMTBOldFlex.sapMTBOverflow>.sapMTBShrinkItem{-webkit-box-flex:1}.sapMTB.sapMTBOldFlex>*{vertical-align:middle;margin-bottom:0;margin-top:0}.sapMTBNoFlex::after{content:"";height:100%;display:inline-block;vertical-align:middle}.sapMTB.sapMTBNoFlex>*{vertical-align:middle;display:inline-block;margin-bottom:0;margin-top:0;float:none}.sapMTBSpacer{margin:0!important;padding:0!important;border:0!important;height:1px}.sapMTBSpacerFlex{-webkit-flex-grow:1;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:auto}.sapMUC .sapMIBar>.sapMBarChild:last-child{margin-right:0rem}.sapMTB.sapMUCListHeader{width:100%;height:3rem;padding-left:1rem;padding-right:1rem;border-bottom-width:0.0625rem;border-bottom-style:solid;font-family:Arial,Helvetica,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.sapMUC .sapMLIB.sapMUCListSingleItem,.sapMUC .sapMLIB.sapMUCListFirstItem,.sapMUC .sapMLIB.sapMUCListLastItem,.sapMUC .sapMLIB.sapMUCListItem{height:5rem;padding-top:1rem;padding-bottom:0.9375rem;border-bottom-width:0.0625rem;border-bottom-style:solid}.sapMLIB.sapMUCItem.sapMUCListSingleItem,.sapMLIB.sapMUCItem.sapMUCListFirstItem,.sapMLIB.sapMUCItem.sapMUCListLastItem,.sapMLIB.sapMUCItem.sapMUCListItem{padding-left:0.9rem}.sapMUCItemIcon{font-family:SAP-icons;font-size:2.5rem}.sapMImg.sapMUCItemImage{height:3rem}.sapMUC .sapMUCFileName.sapMLnk{margin-top:0.125rem;margin-left:0.1rem;font-family:Arial,Helvetica,sans-serif;font-weight:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:top}.sapMUC .sapMUCItem .sapMUCFileName.sapMLnk:focus{outline-offset:0.0625rem}.sapMUCDescriptionHL .sapMLabel{height:1rem;margin-top:0.625rem;margin-bottom:0.125rem;margin-left:0.1rem;font-family:Arial,Helvetica,sans-serif;font-weight:normal;vertical-align:bottom}.sapMUC .sapUiVlt{margin:1rem 0rem 1rem 0rem;overflow:hidden}.sapMUCBtnHL{right:0rem;margin:1rem 1rem 1rem 0rem;-webkit-box-flex:none;-webkit-flex:none;-moz-flex:none;-ms-flex:none;flex:none}.sapMBtn.sapMUCEditBtn,.sapMBtn.sapMUCDeleteBtn,.sapMBtn.sapMUCCancelBtn,.sapMBtn.sapMUCOkBtn{margin-left:0.125rem}.sapMUCText{-webkit-box-flex:10;-webkit-flex:10;-moz-flex:10;-ms-flex:10;flex:10 10 auto}.sapMUCItemIcon,.sapMUCItemImage{height:3rem;width:3rem;padding-left:0rem;margin-right:0.65rem;margin-left:0.1rem;margin-top:1rem;margin-bottom:1rem;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-moz-flex:none;-ms-flex:none;flex:none}.sapMUCEditHL{position:absolute;width:20%}.sapMBusyIndicator.sapMUCloadingIcon{padding-top:1.25rem;padding-bottom:1.25rem;padding-right:1rem;padding-left:0rem}.sapMBusyIndicator.sapMUCloadingIcon .sapMBusySvg{height:2.5rem;width:2.5rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUCItemIcon,html[data-sap-ui-os^="iOS"] .sapMUCItemIcon,html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUCItemImage,html[data-sap-ui-os^="iOS"] .sapMUCItemImage{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUCBtnHL,html[data-sap-ui-os^="iOS"] .sapMUCBtnHL{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMBusyIndicator.sapMUCloadingIcon,html[data-sap-ui-os^="iOS"] .sapMBusyIndicator.sapMUCloadingIcon{padding-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapUiVlt,html[data-sap-ui-os^="iOS"] .sapMUC .sapUiVlt{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone{}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem>.sapMLIBContent.sapMLIBContentMargin,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem>.sapMLIBContent.sapMLIBContentMargin{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCItemIcon,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCItemIcon,html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCItemImage,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCItemImage{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCText,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCText{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCBtnHL{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCItemIcon,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCItemIcon,html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCItemImage,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCItemImage{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCText,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCText{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCBtnHL{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCItemIcon,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCItemIcon,html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCItemImage,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCItemImage{margin-top:0.5rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCText,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCText{margin-top:0.5rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCBtnHL{margin-top:0.5rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem>.sapMLIBContent.sapMLIBContentMargin,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem>.sapMLIBContent.sapMLIBContentMargin{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCItemIcon,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCItemIcon,html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCItemImage,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCItemImage{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCText,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCText{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCBtnHL{margin-top:0rem}.sapMUC .sapMListShowSeparatorsNone{}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem{border-bottom-color:transparent;padding-top:0.5rem;padding-bottom:0.4375rem}.sapMUC .sapMListShowSeparatorsNone .sapMUCFileName.sapMLnk{margin-top:0.125rem}.sapMUC .sapMListShowSeparatorsNone .sapMBusyIndicator.sapMUCloadingIcon{padding-top:0.75rem;padding-bottom:0.75rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem{height:4rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCItemIcon,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCItemImage{margin-top:0.5rem;margin-bottom:0.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCText{margin:0.5rem 0rem 0.5rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCBtnHL{margin:0.5rem 1rem 0.5rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCEditMode .sapMUCBtnHL{margin:0.5rem 1rem 0.5rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem{height:5rem;padding-top:1rem;padding-bottom:0.9375rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCItemIcon,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCItemImage{padding-top:0rem;padding-bottom:0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCBtnHL{margin:1rem 1rem 1rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCEditMode .sapMUCBtnHL{margin:1rem 1rem 1rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMBusyIndicator.sapMUCloadingIcon{margin-top:0.5rem;margin-bottom:0.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem{height:4.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem>.sapMLIBContent.sapMLIBContentMargin{margin-top:-0.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCBtnHL{margin:1rem 1rem 0.5rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCItemIcon,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCItemImage{margin-top:1rem;margin-bottom:0.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCText{margin:1rem 0rem 0.5rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMBusyIndicator.sapMUCloadingIcon{margin-top:0.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem{height:4.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem>.sapMLIBContent.sapMLIBContentMargin{margin-top:0.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCItemIcon,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCItemImage{margin-top:0.5rem;margin-bottom:1rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCText{margin:0.5rem 0rem 1rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCBtnHL{margin:0.5rem 1rem 1rem 0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"].sapUiSizeCompact .sapMUC .sapMUCBtnHL,html[data-sap-ui-os^="iOS"].sapUiSizeCompact .sapMUC .sapMUCBtnHL{margin-top:1rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone,html[data-sap-ui-os^="iOS"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone{}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCBtnHL{margin-top:1rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCBtnHL{margin-top:1rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem sapMUCBtnHL,html[data-sap-ui-os^="iOS"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem sapMUCBtnHL{margin-top:1.5rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCBtnHL{margin-top:1rem}.sapUiSizeCompact .sapMUC{}.sapUiSizeCompact .sapMUC .sapMUC .sapMUCFileName.sapMLnk{margin-top:0.125rem}.sapUiSizeCompact .sapMUC .sapMUCDescriptionHL .sapMLabel{margin-top:0.5rem;margin-bottom:0.25rem}.sapUiSizeCompact .sapMUC .sapMUCBtnHL{margin:2rem 1rem 1rem 0rem}.sapUiSizeCompact .sapMUC .sapMUCEditHL{height:3rem}.sapUiSizeCompact .sapMUC .sapMUCEditBox{height:3rem;padding-top:0.6875rem;padding-bottom:0.6875rem}.sapUiSizeCompact .sapMUC .sapMUCEditMode .sapMUCBtnHL{margin:1.5rem 1rem 1.5rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone{}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMUCFileName.sapMLnk{margin-top:0.25rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMBusyIndicator.sapMUCloadingIcon{padding-top:0.75rem;padding-bottom:0.75rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMUCBtnHL{margin:1.5rem 1rem 0.5rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem{padding-top:0.5rem;padding-bottom:0.4375rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCBtnHL{margin:1.5rem 1rem 0.5rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCEditMode .sapMUCBtnHL{margin:1rem 1rem 1rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem{padding-top:1rem;padding-bottom:0.9375rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCBtnHL{margin:2rem 1rem 1rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCEditMode .sapMUCBtnHL{margin:1.5rem 1rem 1.5rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem{padding-bottom:0.4375rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCBtnHL{margin:2rem 1rem 0.5rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCEditMode .sapMUCBtnHL{margin:1.5rem 1rem 1rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem{padding-top:0.5rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCBtnHL{margin:1.5rem 1rem 1rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCEditMode .sapMUCBtnHL{margin:1rem 1rem 1.5rem 0rem}.sapMTB.sapMUCListHeader .sapMBtnPaddingLeft{padding-left:0rem}.sapMUC .sapUiIcon:focus{outline-style:dotted;outline-width:1px}.sapMUCItem{white-space:nowrap;overflow:hidden}.sapMUCListFirstItem>.sapMLIBContent,.sapMUCListLastItem>.sapMLIBContent,.sapMUCListSingleItem>.sapMLIBContent,.sapMUCListItem>.sapMLIBContent{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:flex;overflow:hidden}.sapMUCDescriptionHL.sapUiHLayout{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:flex}.sapMUCDescriptionHL>.sapUiHLayoutChildWrapper{width:100%;overflow:hidden}.sapMUCBtnNoFlex{position:absolute}.sapMVSDUpperList{border-bottom:2px solid #000000}.sapMVSD.sapMDialog .sapMDialogScrollCont{padding:0} \ No newline at end of file diff --git a/DVHMA-OpenUI5/www/resources/sap/m/themes/base/library.source.less b/DVHMA-OpenUI5/www/resources/sap/m/themes/base/library.source.less new file mode 100644 index 0000000..c7417a1 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/themes/base/library.source.less @@ -0,0 +1,105 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +@import "../../../../sap/ui/core/themes/base/base.less"; +@import "../../../../sap/ui/core/themes/base/global.less"; + +@import "ActionListItem.less"; +@import "ActionSheet.less"; +@import "App.less"; +@import "Bar.less"; +@import "BarBase.less"; +@import "BusyDialog.less"; +@import "BusyIndicator.less"; +@import "Button.less"; +@import "Carousel.less"; +@import "CheckBox.less"; +@import "ColumnListItem.less"; +@import "ComboBox.less"; +@import "ComboBoxBase.less"; +@import "CustomListItem.less"; +@import "CustomTile.less"; +@import "DatePicker.less"; +@import "DateRangeSelection.less"; +@import "DateTimeInput.less"; +@import "Dialog.less"; +@import "DisplayListItem.less"; +@import "MessagePage.less"; +@import "FacetFilter.less"; +@import "FacetFilterItem.less"; +@import "FacetFilterList.less"; +@import "FeedInput.less"; +@import "FeedListItem.less"; +@import "FileUpload.less"; +@import "FlexBox.less"; +@import "GroupHeaderListItem.less"; +@import "GrowingList.less"; +@import "IconTabBar.less"; +@import "Image.less"; +@import "Input.less"; +@import "InputBase.less"; +@import "InputListItem.less"; +@import "Label.less"; +@import "Link.less"; +@import "List.less"; +@import "ListBase.less"; +@import "ListItemBase.less"; +@import "MessageBox.less"; +@import "MessagePopover.less"; +@import "MessageToast.less"; +@import "MultiComboBox.less"; +@import "MultiInput.less"; +@import "NavContainer.less"; +@import "ObjectAttribute.less"; +@import "ObjectHeader.less"; +@import "ObjectIdentifier.less"; +@import "ObjectListItem.less"; +@import "ObjectNumber.less"; +@import "ObjectStatus.less"; +@import "P13nColumnsPanel.less"; +@import "P13nConditionPanel.less"; +@import "P13nDialog.less"; +@import "P13nFilterPanel.less"; +@import "P13nPanel.less"; +@import "P13nSortPanel.less"; +@import "Page.less"; +@import "Panel.less"; +@import "Popover.less"; +@import "ProgressIndicator.less"; +@import "PullToRefresh.less"; +@import "RadioButton.less"; +@import "RadioButtonGroup.less"; +@import "RatingIndicator.less"; +@import "ScrollContainer.less"; +@import "SearchField.less"; +@import "SegmentedButton.less"; +@import "Select.less"; +@import "SelectDialog.less"; +@import "SelectList.less"; +@import "Shell.less"; +@import "Slider.less"; +@import "SplitApp.less"; +@import "SplitContainer.less"; +@import "StandardListItem.less"; +@import "StandardTile.less"; +@import "Support.less"; +@import "Switch.less"; +@import "Table.less"; +@import "TablePersoDialog.less"; +@import "TableSelectDialog.less"; +@import "Text.less"; +@import "TextArea.less"; +@import "Tile.less"; +@import "TileContainer.less"; +@import "Title.less"; +@import "ToggleButton.less"; +@import "Token.less"; +@import "Tokenizer.less"; +@import "Toolbar.less"; +@import "ToolbarSeparator.less"; +@import "ToolbarSpacer.less"; +@import "UploadCollection.less"; +@import "ViewSettingsDialog.less"; diff --git a/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/.theming b/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/.theming new file mode 100644 index 0000000..475c9c2 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/.theming @@ -0,0 +1,6 @@ +{ + "sEntity" : "Theme", + "sId" : "sap_bluecrystal", + "oExtends" : "UI5.sap/m.base", + "sVendor" : "SAP" +} \ No newline at end of file diff --git a/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/img/sap_inset.png b/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/img/sap_inset.png new file mode 100644 index 0000000..437d3cd Binary files /dev/null and b/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/img/sap_inset.png differ diff --git a/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/library-parameters.json b/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/library-parameters.json new file mode 100644 index 0000000..3d431ed --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/library-parameters.json @@ -0,0 +1,900 @@ +{ + "sapBrandColor": "#009de0", + "sapHighlightColor": "#007cc0", + "sapBaseColor": "#808080", + "sapShellColor": "transparent", + "sapBackgroundColor": "#f2f2f2", + "sapTextColor": "#000000", + "sapLinkColor": "#00679e", + "sapCompanyLogo": "none", + "sapBackgroundImage": "none", + "sapBackgroundImageOpacity": "1", + "sapBackgroundImageRepeat": "true", + "sapSelectedColor": "#007cc0", + "sapActiveColor": "#009de0", + "sapHighlightTextColor": "#ffffff", + "sapTitleColor": "#333333", + "sapNegativeColor": "#cc1919", + "sapCriticalColor": "#d14900", + "sapPositiveColor": "#007833", + "sapNeutralColor": "#007cc0", + "sapContent_LabelColor": "#444444", + "sapContent_DisabledTextColor": "#cccccc", + "sapContent_ForegroundColor": "#e5e5e5", + "sapContent_ForegroundBorderColor": "#c7c7c7", + "sapContent_ForegroundTextColor": "#000000", + "sapShell_Background": "#ffffff", + "sapShell_BorderColor": "#9a9a9a", + "sapShell_TextColor": "#000000", + "sapButton_Background": "#f7f7f7", + "sapButton_BorderColor": "#bfbfbf", + "sapButton_TextColor": "#333333", + "sapButton_Disabled_Background": "#f5f5f5", + "sapButton_Disabled_BorderColor": "#d8d8d8", + "sapButton_Disabled_TextColor": "#cccccc", + "sapButton_Hover_Background": "#eaeaea", + "sapButton_Hover_BorderColor": "#bfbfbf", + "sapButton_Hover_TextColor": "#333333", + "sapButton_Emphasized_Background": "#009de0", + "sapButton_Emphasized_BorderColor": "#008bc7", + "sapButton_Emphasized_TextColor": "#ffffff", + "sapButton_Reject_Background": "#cc1919", + "sapButton_Accept_Background": "#007833", + "sapField_Background": "#ffffff", + "sapField_BorderColor": "#c0c0c0", + "sapField_HelpBackground": "#ffffff", + "sapField_Hover_Background": "#ffffff", + "sapField_Hover_BorderColor": "#007cc0", + "sapField_Hover_HelpBackground": "#007cc0", + "sapField_Focus_Background": "#ffffff", + "sapField_Focus_BorderColor": "#007cc0", + "sapField_Focus_HelpBackground": "#ffffff", + "sapField_ReadOnly_Background": "transparent", + "sapField_ReadOnly_BorderColor": "transparent", + "sapField_ReadOnly_HelpBackground": "transparent", + "sapField_Disabled_Background": "#f9f9f9", + "sapField_Disabled_BorderColor": "#d9d9d9", + "sapField_Disabled_HelpBackground": "#f9f9f9", + "sapField_RequiredColor": "#007cc0", + "sapField_InvalidColor": "#e52929", + "sapField_InvalidBackground": "#fbdfdf", + "sapField_WarningColor": "#f0ab00", + "sapField_WarningBackground": "#fffcb5", + "sapField_SuccessColor": "#008a3b", + "sapField_SuccessBackground": "#e0f1e7", + "sapGroup_TitleBackground": "transparent", + "sapGroup_TitleBorderColor": "transparent", + "sapGroup_TitleTextColor": "#333333", + "sapGroup_ContentBackground": "#ffffff", + "sapGroup_ContentBorderColor": "transparent", + "sapGroup_FooterBackground": "transparent", + "sapToolbar_Background": "#ffffff", + "sapToolbar_SeparatorColor": "#c2c2c2", + "sapList_HeaderBackground": "#f7f7f7", + "sapList_HeaderBorderColor": "#dddddd", + "sapList_HeaderTextColor": "#000000", + "sapList_BorderColor": "#dddddd", + "sapList_HighlightColor": "#007cc0", + "sapList_SelectionBackgroundColor": "#e6f2f9", + "sapList_Hover_Background": "#e3e3e3", + "sapScrollBar_FaceColor": "#e6e6e6", + "sapScrollBar_TrackColor": "#f7f7f7", + "sapScrollBar_BorderColor": "#e6e6e6", + "sapScrollBar_SymbolColor": "#f7f7f7", + "sapUiBaseColor": "#808080", + "sapUiContentDisabledTextColor": "#cccccc", + "sapUiContentForegroundBorderColor": "#c7c7c7", + "sapUiButtonBackground": "#f7f7f7", + "sapUiButtonBorderColor": "#bfbfbf", + "sapUiButtonTextColor": "#333333", + "sapUiButtonDisabledBackground": "#f5f5f5", + "sapUiButtonDisabledBorderColor": "#d8d8d8", + "sapUiButtonDisabledTextColor": "#cccccc", + "sapUiButtonHoverBackground": "#eaeaea", + "sapUiButtonHoverBorderColor": "#bfbfbf", + "sapUiButtonHoverTextColor": "#333333", + "sapUiButtonRejectBackground": "#cc1919", + "sapUiButtonAcceptBackground": "#007833", + "sapUiFieldBackground": "#ffffff", + "sapUiFieldBorderColor": "#c0c0c0", + "sapUiFieldHelpBackground": "#ffffff", + "sapUiFieldHoverBackground": "#ffffff", + "sapUiFieldHoverBorderColor": "#007cc0", + "sapUiFieldHoverHelpBackground": "#007cc0", + "sapUiFieldFocusBackground": "#ffffff", + "sapUiFieldFocusBorderColor": "#007cc0", + "sapUiFieldFocusHelpBackground": "#ffffff", + "sapUiFieldReadOnlyBackground": "transparent", + "sapUiFieldReadOnlyBorderColor": "transparent", + "sapUiFieldReadOnlyHelpBackground": "transparent", + "sapUiFieldDisabledBackground": "#f9f9f9", + "sapUiFieldDisabledBorderColor": "#d9d9d9", + "sapUiFieldDisabledHelpBackground": "#f9f9f9", + "sapUiFieldRequiredColor": "#007cc0", + "sapUiFieldInvalidColor": "#e52929", + "sapUiFieldInvalidBackground": "#fbdfdf", + "sapUiFieldWarningColor": "#f0ab00", + "sapUiFieldWarningBackground": "#fffcb5", + "sapUiFieldSuccessColor": "#008a3b", + "sapUiFieldSuccessBackground": "#e0f1e7", + "sapUiListHeaderBorderColor": "#dddddd", + "sapUiListHighlightColor": "#007cc0", + "sapUiListHoverBackground": "#e3e3e3", + "sapUiListSelectionBackgroundColor": "#e6f2f9", + "sapUiBrand": "#009de0", + "sapUiHighlight": "#007cc0", + "sapUiSelected": "#007cc0", + "sapUiActive": "#009de0", + "sapUiPurple": "#ab218e", + "sapUiOrange": "#f27020", + "sapUiGreen": "#008a3b", + "sapUiBlue": "#007cc0", + "sapUiRed": "#e52929", + "sapUiYellow": "#f0ab00", + "sapUiBase": "#808080", + "sapUiBaseBG": "#f2f2f2", + "sapUiBaseBorder": "#808080", + "sapUiBaseText": "#000000", + "sapUiBaseLine": "#808080", + "sapUiWhite": "#ffffff", + "sapUiWhiteBG": "#ffffff", + "sapUiExtraLightBG": "#f2f2f2", + "sapUiLightBG": "#e5e5e5", + "sapUiMediumBG": "#dddddd", + "sapUiDarkBG": "#777777", + "sapUiDeepBG": "#000000", + "sapUiBlackBG": "#000000", + "sapUiHoverBG": "#e6f2f9", + "sapUiMediumAltBG": "#b8c2cc", + "sapUiDarkAltBG": "#707376", + "sapUiButtonStandardBG": "#f7f7f7", + "sapUiButtonEmphasizedBG": "#009de0", + "sapUiButtonNegativeBG": "#ff0000", + "sapUiButtonPositiveBG": "#008000", + "sapUiErrorBG": "#fbdfdf", + "sapUiWarningBG": "#fffcb5", + "sapUiReadOnlyBG": "#808080", + "sapUiExtraLightText": "#707070", + "sapUiLightText": "#666666", + "sapUiMediumText": "#444444", + "sapUiDarkText": "#333333", + "sapUiDeepText": "#000000", + "sapUiText": "#000000", + "sapUiTextInverted": "#ffffff", + "sapUiLink": "#00679e", + "sapUiLinkInverted": "#1bb1ff", + "sapUiLinkVisited": "#00679e", + "sapUiLinkActive": "#00679e", + "sapUiLinkHover": "#00679e", + "sapUiNegativeText": "#cc1919", + "sapUiPositiveText": "#007833", + "sapUiWhiteBorder": "#ffffff", + "sapUiExtraLightBorder": "#e5e5e5", + "sapUiLightBorder": "#dddddd", + "sapUiMediumBorder": "#cdcdcd", + "sapUiDarkBorder": "#c0c0c0", + "sapUiBlackBorder": "#000000", + "sapUiErrorBorder": "#e52929", + "sapUiWarningBorder": "#f0ab00", + "sapUiLightLine": "#cccccc", + "sapUiMediumLine": "#999999", + "sapUiEmphasizedLine": "#007cc0", + "sapUiDarkLine": "#333333", + "sapUiTableRowBG": "#ffffff", + "sapUiTableRowAlternatingBG": "#eff7fb", + "sapUiTableRowSelectionBG": "#d1e9f4", + "sapUiTableRowSelectionReadOnlyBG": "#c9e1ed", + "sapUiTableRowHoverBG": "#e6f2f9", + "sapUiListBG": "#ffffff", + "sapUiTextColor": "#008000", + "sapUiTextTitleColor": "#008000", + "sapUiTextSelectionColor": "#008000", + "sapUiTextDisabled": "#999999", + "sapUiTextTitle": "#333333", + "sapUiTextSelection": "#ffffff", + "sapUiTextfieldBackground": "#ffffff", + "sapUiLineHeight": "18px", + "sapUiFontFamily": "Arial, Helvetica, sans-serif", + "sapUiFontMonospaceFamily": "Lucida Console", + "sapUiFontSize": "16px", + "sapUiFontLargeSize": "13px", + "sapUiFontSmallSize": "11px", + "sapUiFontHeader1Size": "26px", + "sapUiFontHeader2Size": "20px", + "sapUiFontHeader3Size": "18px", + "sapUiFontHeader4Size": "16px", + "sapUiFontHeader5Size": "14px", + "sapUiFontHeader6Size": "13px", + "sapUiUx3ShellBackgroundColor": "#f2f2f2", + "sapUiUx3ShellHoverColor": "#777777", + "sapUiUx3ShellSideBarBaseWidth": "40px", + "sapUiUx3ShellPaneOverflowButtonHeight": "120px", + "sapUiUx3ShellToolPaletteIconFontColor": "#8899aa", + "sapUiUx3ExactLstExpandOffset": "-1 -2", + "sapUiUx3ExactLstRootExpandOffset": "0 3", + "sapUiUx3ExactLstCollapseWidth": "24px", + "sapUiUx3ExactLstHeaderHeight": "25px", + "sapUiUx3ExactLstContentTop": "25px", + "sapUiNotificationBarBG": "rgba(51, 51, 51, 0.98)", + "sapUiNotificationBarBG_IE": "#444444", + "sapUiNotifierHoverColor": "#007cc0", + "sapUiNotifierSeparator": "#000000", + "sapUiNotificationText": "#ffffff", + "sapUiNotificationTimestamp": "#ababab", + "sapUiNotificationBarCalloutBorder": "rgba(68, 68, 68, 0)", + "sapUiNotificationBarCalloutBorder_IE": "#444444", + "sapUiNotificationBarCalloutArr": "rgba(51, 51, 51, 0.98)", + "sapUiNotificationBarHeight": "40px", + "sapUiNotificationBarHeightMinimized": "0px", + "sapUiNotificationBarHeightMaximized": "40%", + "sapUiNotifierWidth": "40px", + "sapUiNotifierSeparatorWidth": "1px", + "sapUiUx3ToolPopupInverted": "false", + "sapUiUx3ToolPopupArrowWidth": "13px", + "sapUiUx3ToolPopupArrowHeight": "20px", + "sapUiUx3ToolPopupArrowRightMarginCorrection": "-1px", + "sapUiUx3ToolPopupArrowRightMarginCorrectionInverted": "-7px", + "sapUiUx3TPPaddingBottom": "50px", + "sapUiButtonActiveBorderColor": "#bfbfbf", + "sapUiButtonActiveBackground": "#007cc0", + "sapUiButtonEmphasizedBorderColor": "#008bc7", + "sapUiButtonEmphasizedBackground": "#009de0", + "sapUiButtonEmphasizedDisabledBorderColor": "#008bc7", + "sapUiButtonEmphasizedDisabledBackground": "#009de0", + "sapUiButtonEmphasizedHoverBorderColor": "#008bc7", + "sapUiButtonEmphasizedHoverBackground": "#008bc7", + "sapUiButtonEmphasizedActiveBorderColor": "#0079ad", + "sapUiButtonEmphasizedActiveBackground": "#0079ad", + "sapUiButtonAcceptBorderColor": "#005f28", + "sapUiButtonAcceptDisabledBorderColor": "#005f28", + "sapUiButtonAcceptDisabledBackground": "#007833", + "sapUiButtonAcceptHoverBorderColor": "#005f28", + "sapUiButtonAcceptHoverBackground": "#005f28", + "sapUiButtonAcceptActiveBorderColor": "#00451d", + "sapUiButtonAcceptActiveBackground": "#00451d", + "sapUiButtonRejectBorderColor": "#b51616", + "sapUiButtonRejectDisabledBorderColor": "#b51616", + "sapUiButtonRejectDisabledBackground": "#cc1919", + "sapUiButtonRejectHoverBorderColor": "#b51616", + "sapUiButtonRejectHoverBackground": "#b51616", + "sapUiButtonRejectActiveBorderColor": "#9f1313", + "sapUiButtonRejectActiveBackground": "#9f1313", + "sapUiButtonLiteBackground": "transparent", + "sapUiToggleButtonPressedDisabledBackground": "#007cc0", + "sapUiToggleButtonPressedBackground": "#007cc0", + "sapUiPositiveBG": "#007833", + "sapUiShadowTint": "#000000", + "sapUiShadow": "0px 4px 17px rgba(0, 0, 0, 0.4)", + "sapUiThemeDesignerCustomCss": "false", + "sapUiMarginTiny": "0.5rem", + "sapUiMarginSmall": "1rem", + "sapUiMarginMedium": "2rem", + "sapUiMarginLarge": "3rem", + "sapUiEscapedEmptyString": "", + "sapMInputBaseMsgBG": "#ffffff", + "sapMShellAppWidthLimit": "1280px", + "sapMShellAppWidthLimitBy2": "640px", + "sapMShellAppHeight": "3333px", + "sapMShellHeaderHeight": "68px", + "sapMShellMinHeightForHeader": "3401px", + "sapMShellMinWidthForLogoAside": "1480px", + "sapMShellMinWidthForBigLogoAside": "1680px", + "sapMShellContentBG": "rgba(255, 255, 255, 0.3)", + "sapMShellAppWidthLimitPlusPadding": "1296px", + "sapMTitleSize1": "1.75rem", + "sapMTitleSize2": "1.5rem", + "sapMTitleSize3": "1.25rem", + "sapMTitleSize4": "1.125rem", + "sapMTitleSize5": "1rem", + "sapMTitleSize6": "0.875rem", + "sapMTitleColor": "#333333", + "sapMTitleFontFamily": "Arial, Helvetica, sans-serif", + "sapMTitleFontWeight": "normal", + "sapBackgroundColorDefault": "#f2f2f2", + "sapBackgroundGradientBaseColor": "#178299", + "sapFontFamily": "Arial, Helvetica, sans-serif", + "sapFontSize": "0.75em", + "sapAccentColor1": "#f0ab00", + "sapAccentColor2": "#f27020", + "sapAccentColor3": "#e52929", + "sapAccentColor4": "#ab218e", + "sapAccentColor5": "#007cc0", + "sapAccentColor6": "#008a3b", + "sapAccentColor7": "#004990", + "sapAccentColor8": "#009de0", + "sapDarkShadowColor": "#000000", + "sapLightShadowColor": "#ffffff", + "sapDarkFocusColor": "#005483", + "sapLightFocusColor": "#ffffff", + "sapSearchHighlightColor": "#fffcb5", + "sapHelpHighlightColor": "#3f8600", + "sapBaseBackground": "#808080", + "sapLightestBackground": "#ffffff", + "sapExtraLightBackground": "#f2f2f2", + "sapLightBackground": "#e5e5e5", + "sapMediumBackground": "#dddddd", + "sapDarkBackground": "#777777", + "sapExtraDarkBackground": "#333333", + "sapDarkestBackground": "#000000", + "sapBaseBorderColor": "#808080", + "sapLightestBorderColor": "#ffffff", + "sapExtraLightBorderColor": "#e5e5e5", + "sapLightBorderColor": "#dddddd", + "sapMediumBorderColor": "#cdcdcd", + "sapDarkBorderColor": "#c0c0c0", + "sapExtraDarkBorderColor": "#9a9a9a", + "sapDarkestBorderColor": "#000000", + "sapExtraLightTextColor": "#707070", + "sapLightTextColor": "#666666", + "sapMediumTextColor": "#444444", + "sapDarkTextColor": "#333333", + "sapExtraDarkTextColor": "#222222", + "sapErrorBackground": "#fbdfdf", + "sapWarningBackground": "#fffcb5", + "sapSuccessBackground": "#e0f1e7", + "sapNeutralBackground": "#e6f2f9", + "sapErrorBorderColor": "#e52929", + "sapWarningBorderColor": "#f0ab00", + "sapSuccessBorderColor": "#008a3b", + "sapNegativeElementColor": "#cc1919", + "sapCriticalElementColor": "#d14900", + "sapPositiveElementColor": "#007833", + "sapNeutralElementColor": "#007cc0", + "sapNegativeTextColor": "#cc1919", + "sapCriticalTextColor": "#d14900", + "sapPositiveTextColor": "#007833", + "sapErrorColor": "#e52929", + "sapWarningColor": "#f0ab00", + "sapSuccessColor": "#008a3b", + "sapContent_BackgroundGradientStartColor": "#2da9b1", + "sapContent_BackgroundGradientMiddleColor": "#178299", + "sapContent_BackgroundGradientEndColor": "#1a4c7d", + "sapContent_BackgroundGradientMixedStartColor": "#dff2f3", + "sapContent_BackgroundGradientMixedMiddleColor": "#dcecf0", + "sapContent_BackgroundGradientMixedEndColor": "#dde4eb", + "sapContent_LineHeight": "1.3", + "sapContent_ElementHeight": "1.37em", + "sapContent_ElementHeight_PX": "22px", + "sapContent_IconHeight": "16px", + "sapContent_MonospaceFontFamily": "lucida console, monospace", + "sapContent_DisabledOpacity": "0.5", + "sapContent_ContrastTextTreshold": "0.65", + "sapContent_ContrastTextColor": "#ffffff", + "sapButton_BorderWitdh": "1px", + "sapButton_BorderCornerRadius": "0", + "sapField_BorderWitdh": "1px", + "sapField_BorderCornerRadius": "0", + "sapGroup_Title_FontSize": "1em", + "sapGroup_BorderWidth": "1px", + "sapGroup_BorderCornerRadius": "0", + "sapList_BorderWidth": "1px", + "sapScrollBar_Dimension": "16px", + "sapScrollBar_Hover_FaceColor": "#dedede", + "sapChart_OrderedColor_1": "#5cbae6", + "sapChart_OrderedColor_2": "#b6d957", + "sapChart_OrderedColor_3": "#fac364", + "sapChart_OrderedColor_4": "#8cd3ff", + "sapChart_OrderedColor_5": "#d998cb", + "sapChart_OrderedColor_6": "#f2d249", + "sapChart_OrderedColor_7": "#93b9c6", + "sapChart_OrderedColor_8": "#ccc5a8", + "sapChart_OrderedColor_9": "#52bacc", + "sapChart_OrderedColor_10": "#dbdb46", + "sapChart_OrderedColor_11": "#98aafb", + "sapChart_Bad": "#d32030", + "sapChart_Critical": "#e17b24", + "sapChart_Good": "#61a656", + "sapChart_Neutral": "#848f94", + "sapChart_Sequence_1": "#27a3dd", + "sapChart_Sequence_2": "#9dc62d", + "sapChart_Sequence_3": "#f8ac29", + "sapChart_Sequence_Neutral": "#848f94", + "sapUiContentLabelColor": "#444444", + "sapUiContentForegroundColor": "#e5e5e5", + "sapUiContentForegroundTextColor": "#000000", + "sapUiShellBackground": "#ffffff", + "sapUiShellBorderColor": "#9a9a9a", + "sapUiShellTextColor": "#000000", + "sapUiButtonEmphasizedTextColor": "#ffffff", + "sapUiGroupTitleBackground": "transparent", + "sapUiGroupTitleBorderColor": "transparent", + "sapUiGroupTitleTextColor": "#333333", + "sapUiGroupContentBackground": "#ffffff", + "sapUiGroupContentBorderColor": "transparent", + "sapUiGroupFooterBackground": "transparent", + "sapUiToolbarBackground": "#ffffff", + "sapUiToolbarSeparatorColor": "#c2c2c2", + "sapUiListHeaderBackground": "#f7f7f7", + "sapUiListHeaderTextColor": "#000000", + "sapUiListBorderColor": "#dddddd", + "sapUiScrollBarFaceColor": "#e6e6e6", + "sapUiScrollBarTrackColor": "#f7f7f7", + "sapUiScrollBarBorderColor": "#e6e6e6", + "sapUiScrollBarSymbolColor": "#f7f7f7", + "sapUiScrollBarHoverFaceColor": "#dedede", + "sapUiChart1": "#5cbae6", + "sapUiChart2": "#b6d957", + "sapUiChart3": "#fac364", + "sapUiChart4": "#8cd3ff", + "sapUiChart5": "#d998cb", + "sapUiChart6": "#f2d249", + "sapUiChart7": "#93b9c6", + "sapUiChart8": "#ccc5a8", + "sapUiChart9": "#52bacc", + "sapUiChart10": "#dbdb46", + "sapUiChart11": "#98aafb", + "sapUiChartBad": "#d32030", + "sapUiChartCritical": "#e17b24", + "sapUiChartGood": "#61a656", + "sapUiChartNeutral": "#848f94", + "sapUiChartSequence1": "#27a3dd", + "sapUiChartSequence2": "#9dc62d", + "sapUiChartSequence3": "#f8ac29", + "sapUiChartSequenceNeutral": "#848f94", + "sapUiAccent1": "#f0ab00", + "sapUiAccent2": "#f27020", + "sapUiAccent3": "#e52929", + "sapUiAccent4": "#ab218e", + "sapUiAccent5": "#007cc0", + "sapUiAccent6": "#008a3b", + "sapUiAccent7": "#004990", + "sapUiAccent8": "#009de0", + "sapUiDarkShadowTint": "#000000", + "sapUiLightShadowTint": "#ffffff", + "sapUiDarkFocusColor": "#005483", + "sapUiLightFocusColor": "#ffffff", + "sapUiSearchHighlight": "#fffcb5", + "sapUiHelpHighlight": "#3f8600", + "sapUiBaseBackground": "#808080", + "sapUiLightestBG": "#ffffff", + "sapUiExtraDarkBG": "#333333", + "sapUiDarkestBG": "#000000", + "sapUiLightestBorder": "#ffffff", + "sapUiExtraDarkBorder": "#9a9a9a", + "sapUiDarkestBorder": "#000000", + "sapUiExtraDarkText": "#222222", + "sapUiBlack": "#000000", + "sapUiNegative": "#cc1919", + "sapUiCritical": "#d14900", + "sapUiPositive": "#007833", + "sapUiNeutral": "#007cc0", + "sapUiActiveBG": "#e6f2f9", + "sapUiFocus": "#005483", + "sapUiInvertedFocus": "#ffffff", + "sapUiUx3ShellHeaderColor": "transparent", + "sapUiHighlightTextColor": "#ffffff", + "sapUiFooterBG": "rgba(54, 62, 67, 0.96)", + "sapUiFooterOnDesktopBG": "rgba(54, 62, 67, 0.96)", + "sapUiStandardText": "#000000", + "sapUiHighlightText": "#ffffff", + "sapUiHeaderText": "#333333", + "sapUiCriticalText": "#d14900", + "sapUiSuccessBorder": "#008a3b", + "sapUiSuccessBG": "#e0f1e7", + "sapUiNeutralBG": "#e6f2f9", + "sapUiInvertedElement": "#ffffff", + "sapUiElement": "#666666", + "sapUiNegativeElement": "#cc1919", + "sapUiCriticalElement": "#d14900", + "sapUiPositiveElement": "#007833", + "sapUiNeutralElement": "#007cc0", + "sapUiLightestBGHover": "#f0f0f0", + "sapUiActiveBGHover": "#d9ecf6", + "sapUiFontCondensedFamily": "'Arial Narrow', HelveticaNeue-CondensedBold, Arial, sans-serif", + "sapUiFontHeaderFamily": "Arial, Helvetica, sans-serif", + "sapUiFontHeaderWeight": "normal", + "sapMFontHeader1Size": "1.75rem", + "sapMFontHeader2Size": "1.5rem", + "sapMFontHeader3Size": "1.25rem", + "sapMFontHeader4Size": "1.125rem", + "sapMFontHeader5Size": "1rem", + "sapMFontHeader6Size": "0.875rem", + "sapMFontSmallSize": "0.75rem", + "sapMFontMediumSize": "0.875rem", + "sapMFontLargeSize": "1rem", + "sapUiTranslucentBGOpacity": "80%", + "sapMPlatformDependent": "false", + "sapUiGlobalBackgroundVariant": "2", + "sapUiGlobalLogo": "none", + "sapUiGlobalLogoDefault": "none", + "sapUiGlobalBackgroundRepeat": "true", + "sapUiGlobalBackgroundImageOpacity": "1", + "sapUiGlobalBackgroundImageOpacityDefault": "1", + "sapUiGlobalBackgroundImageDefault": "none", + "sapUiGlobalBackgroundImage": "none", + "sapUiGlobalBackgroundColor": "#f2f2f2", + "sapUiGlobalBackgroundColorDefault": "#f2f2f2", + "sapUiGlobalBackgroundGradientStartColor": "#2da9b1", + "sapUiGlobalBackgroundGradientMiddleColor": "#178299", + "sapUiGlobalBackgroundGradientEndColor": "#1a4c7d", + "sapUiGlobalStrongBackgroundTextContrastColor": "none", + "sapUiBackgroundImage": "none", + "sapUiDesktopFontFamily": "Arial, Helvetica, sans-serif", + "sapUiDesktopFontSize": "12px", + "sapUiKeyboardFocus": "#005483", + "sapUiChartLabelHoverColor": "#f0f0f0", + "sapUiChartLabelPressedColor": "#cccccc", + "sapUiChartCategoryAxisLabelFontColor": "#333333", + "sapUiChartValueAxisLabelFontColor": "#333333", + "sapUiChartCategoryAxisLabelFontSize": "0.75rem", + "sapUiChartValueAxisLabelFontSize": "0.75rem", + "sapUiChartCategoryAxisLineColor": "#333333", + "sapUiChartValueAxisLineColor": "#333333", + "sapUiChartCategoryAxisTickColor": "#333333", + "sapUiChartValueAxisTickColor": "#333333", + "sapUiChartBackgroundColor": "#ffffff", + "sapUiChartLabelFontWeight": "normal", + "sapUiChartLegendLabelFontColor": "#000000", + "sapUiChartLegendTitleFontColor": "#000000", + "sapUiChartLegendTitleFontSize": "0.875rem", + "sapUiChartLegendLabelFontSize": "0.75rem", + "sapUiChartPaletteUndefinedColor": "#000000", + "sapUiChartGridlineColor": "#e5e5e5", + "sapUiChartReferenceLineColor": "#333333", + "sapUiChartDataLabelFontColor": "#000000", + "sapUiChartReferenceLineLabelColor": "#000000", + "sapUiChartDataLabelFontSize": "0.75rem", + "sapUiChartPopoverDataItemFontColor": "#000000", + "sapUiChartPopoverGroupFontColor": "#000000", + "sapUiChartPopoverDataItemFontSize": "0.875rem", + "sapUiChartPopoverGroupFontSize": "0.875rem", + "sapUiChartPopoverGroupFontWeight": "bold", + "sapUiChartScrollBarThumbColor": "#e6e6e6", + "sapUiChartScrollBarTrackColor": "#f7f7f7", + "sapUiChartScrollBarThumbHoverColor": "#dedede", + "sapUiChartMainTitleFontColor": "#333333", + "sapUiChartAxisTitleFontColor": "#000000", + "sapUiChartMainTitleFontSize": "1rem", + "sapUiChartAxisTitleFontSize": "0.875rem", + "sapUiChartTitleFontWeight": "bold", + "sapUiChartDataPointBorderColor": "#ffffff", + "sapUiChartDataPointBorderHoverSelectedColor": "#676767", + "sapUiChartDataPointNotSelectedBackgroundOpacity": "0.6", + "sapUiChartValueAxisLineOpacity": "0", + "sapUiChartCategoryAxisLabelFontHoverColor": "#333333", + "sapUiChartCategoryAxisLabelFontPressedColor": "#333333", + "sapUiChartTargetColor": "#333333", + "sapUiChartTargetShadowColor": "#ffffff", + "sapUiChartBubbleBGOpacity": "0.8", + "sapUiChartPaletteQualitativeHue1": "#5cbae6", + "sapUiChartPaletteQualitativeHue2": "#b6d957", + "sapUiChartPaletteQualitativeHue3": "#fac364", + "sapUiChartPaletteQualitativeHue4": "#8cd3ff", + "sapUiChartPaletteQualitativeHue5": "#d998cb", + "sapUiChartPaletteQualitativeHue6": "#f2d249", + "sapUiChartPaletteQualitativeHue7": "#93b9c6", + "sapUiChartPaletteQualitativeHue8": "#ccc5a8", + "sapUiChartPaletteQualitativeHue9": "#52bacc", + "sapUiChartPaletteQualitativeHue10": "#dbdb46", + "sapUiChartPaletteQualitativeHue11": "#98aafb", + "sapUiChartPaletteSemanticBadLight3": "#f09ca4", + "sapUiChartPaletteSemanticBadLight2": "#e9707b", + "sapUiChartPaletteSemanticBadLight1": "#e34352", + "sapUiChartPaletteSemanticBad": "#d32030", + "sapUiChartPaletteSemanticBadDark1": "#a71926", + "sapUiChartPaletteSemanticBadDark2": "#911621", + "sapUiChartPaletteSemanticCriticalLight3": "#f3ccab", + "sapUiChartPaletteSemanticCriticalLight2": "#edb17e", + "sapUiChartPaletteSemanticCriticalLight1": "#e79651", + "sapUiChartPaletteSemanticCritical": "#e17b24", + "sapUiChartPaletteSemanticCriticalDark1": "#b96319", + "sapUiChartPaletteSemanticCriticalDark2": "#a25716", + "sapUiChartPaletteSemanticGoodLight3": "#bedbba", + "sapUiChartPaletteSemanticGoodLight2": "#9fca98", + "sapUiChartPaletteSemanticGoodLight1": "#80b877", + "sapUiChartPaletteSemanticGood": "#61a656", + "sapUiChartPaletteSemanticGoodDark1": "#4d8445", + "sapUiChartPaletteSemanticGoodDark2": "#44743c", + "sapUiChartPaletteSemanticNeutralLight3": "#d5dadc", + "sapUiChartPaletteSemanticNeutralLight2": "#bac1c4", + "sapUiChartPaletteSemanticNeutralLight1": "#9ea8ad", + "sapUiChartPaletteSemanticNeutral": "#848f94", + "sapUiChartPaletteSemanticNeutralDark1": "#69767c", + "sapUiChartPaletteSemanticNeutralDark2": "#5e696e", + "sapUiChartPaletteSequentialHue1Light3": "#abdbf2", + "sapUiChartPaletteSequentialHue1Light2": "#84caec", + "sapUiChartPaletteSequentialHue1Light1": "#5cbae5", + "sapUiChartPaletteSequentialHue1": "#27a3dd", + "sapUiChartPaletteSequentialHue1Dark1": "#1b7eac", + "sapUiChartPaletteSequentialHue1Dark2": "#156489", + "sapUiChartPaletteSequentialHue2Light3": "#d7eaa2", + "sapUiChartPaletteSequentialHue2Light2": "#c6e17d", + "sapUiChartPaletteSequentialHue2Light1": "#b6d957", + "sapUiChartPaletteSequentialHue2": "#9dc62d", + "sapUiChartPaletteSequentialHue2Dark1": "#759422", + "sapUiChartPaletteSequentialHue2Dark2": "#5b731a", + "sapUiChartPaletteSequentialHue3Light3": "#fde5bd", + "sapUiChartPaletteSequentialHue3Light2": "#fbd491", + "sapUiChartPaletteSequentialHue3Light1": "#fac364", + "sapUiChartPaletteSequentialHue3": "#f8ac29", + "sapUiChartPaletteSequentialHue3Dark1": "#dd8e07", + "sapUiChartPaletteSequentialHue3Dark2": "#b57506", + "sapUiChartPaletteSequentialNeutralLight3": "#d5dadc", + "sapUiChartPaletteSequentialNeutralLight2": "#bac1c4", + "sapUiChartPaletteSequentialNeutralLight1": "#9ea8ad", + "sapUiChartPaletteSequentialNeutral": "#848f94", + "sapUiChartPaletteSequentialNeutralDark1": "#69767c", + "sapUiChartPaletteSequentialNeutralDark2": "#5e696e", + "sapUiChoroplethBG": "#f7f7f8", + "sapUiChoroplethRegionBorder": "#ffffff", + "sapUiChoroplethRegionBG": "#bac1c4", + "sapUiMapLegendBG": "#ffffff", + "sapUiMapLegendBorderColor": "#cdcdcd", + "sapUiUx3ShellGradientBottom": "rgba(44, 44, 44, 0)", + "sapUiUx3ShellGradientTop": "rgba(0, 95, 192, 0.03)", + "sapUiNotificationBarBorder": "#676767", + "sapUiUx3ToolPopupShadow": "0 0 30px rgba(0, 0, 0, 0.2)", + "sapUiCalloutShadow": "0 0 30px rgba(0, 0, 0, 0.2)", + "sapUiButtonLiteTextColor": "#00679e", + "sapUiToggleButtonPressedBorderColor": "#006ca7", + "sapUiToggleButtonPressedTextColor": "#ffffff", + "sapUiToggleButtonPressedHoverBackground": "#006ca7", + "sapUiToggleButtonPressedHoverBorderColor": "#006ca7", + "sapUiToggleButtonPressedDisabledBorderColor": "#006ca7", + "sapUiToggleButtonPressedDisabledTextColor": "#cccccc", + "sapUiFooterButtonHoverColor": "rgba(68, 78, 84, 0.96)", + "sapUiCalendarColorToday": "#ffc51c", + "sapUiUx3ShellBackgroundImageURL": "none", + "sapUiUx3ShellHeaderImageURL": "", + "sapUiUx3ShellApplicationImageURL": "none", + "sapUiActionSheetBG": "rgba(54, 62, 67, 0.96)", + "sapUiActionSheetOnDesktopBG": "rgba(54, 62, 67, 0.96)", + "sapUiActionSheetBorder": "#e5e5e5", + "sapUiActionSheetButtonText": "#ffffff", + "sapUiBarBG": "#f2f2f2", + "sapUiBarBrandingBG": "#009de0", + "sapUiHeaderBG": "#f2f2f2", + "sapUiSubHeaderBG": "#fcfcfc", + "sapUiBarText": "#666666", + "sapUiFooterText": "#ffffff", + "sapUiBarHeading": "#666666", + "sapUiBusy": "#009de0", + "sapUiBusyLight": "#ffffff", + "sapUiBusyDlgSimpleIndicatorBG": "rgba(255, 255, 255, 0.6)", + "sapUiBusyDlgSimpleIndicatorBorder": "rgba(255, 255, 255, 0.1)", + "sapUiBtnText": "#333333", + "sapUiBtnTextActive": "#ffffff", + "sapUiBtnTextLink": "#00679e", + "sapUiBtnTextLinkDisabled": "rgba(0, 103, 158, 0.5)", + "sapUiBtnBaseRadius": "0.143rem", + "sapUiBtnIcon": "#666666", + "sapUiBtnTextShadowDefault": "none", + "sapUiBtnBorderDefault": "#bfbfbf", + "sapUiBtnTextTransparentDisabled": "rgba(51, 51, 51, 0.5)", + "sapUiBtnIconHeader": "#666666", + "sapUiBtnTextHeader": "#666666", + "sapUiBtnTextHeaderDisabled": "#333333", + "sapUiBtnTextShadowHeader": "rgba(255, 255, 255, 0.5)", + "sapUiBtnTextFooterDisabled": "rgba(255, 255, 255, 0.5)", + "sapUiBtnTextShadowFooter": "rgba(0, 0, 0, 0.5)", + "sapUiBtnTextStandardDisabled": "rgba(51, 51, 51, 0.5)", + "sapUiBtnBGStandard": "#f7f7f7", + "sapUiBtnBGStandardHover": "#eaeaea", + "sapUiBtnBGStandardDown": "#007cc0", + "sapUiBtnBGStandardDisabled": "#fafafa", + "sapUiBtnTextPositiveDisabled": "rgba(255, 255, 255, 0.5)", + "sapUiBtnBGPositive": "#007833", + "sapUiBtnBGPositiveBorder": "#005f28", + "sapUiBtnBGPositiveHover": "#005f28", + "sapUiBtnBGPositiveDown": "#00451d", + "sapUiBtnBGPositiveDisabled": "rgba(0, 120, 51, 0.5)", + "sapUiBtnTextNegativeDisabled": "rgba(255, 255, 255, 0.5)", + "sapUiBtnBGNegative": "#cc1919", + "sapUiBtnBGNegativeBorder": "#b51616", + "sapUiBtnBGNegativeHover": "#b51616", + "sapUiBtnBGNegativeDown": "#9f1313", + "sapUiBtnBGNegativeDisabled": "rgba(204, 25, 25, 0.5)", + "sapUiBtnTextEmphasizedDisabled": "rgba(255, 255, 255, 0.5)", + "sapUiBtnBGEmphasized": "#009de0", + "sapUiBtnBGEmphasizedBorder": "#008bc7", + "sapUiBtnBGEmphasizedHover": "#008bc7", + "sapUiBtnBGEmphasizedDown": "#0079ad", + "sapUiBtnBGEmphasizedDisabled": "rgba(0, 157, 224, 0.5)", + "sapUiBtnTextShadowEmphasized": "rgba(0, 0, 0, 0.5)", + "sapUiBtnBGTransparent": "transparent", + "sapUiBtnBGTransparentHover": "rgba(222, 222, 222, 0.5)", + "sapUiBtnBGTransparentDown": "#007cc0", + "sapUiBtnFooterBGStandardHover": "rgba(234, 234, 234, 0.09999999999999998)", + "sapUiBtnActionSelectBG": "rgba(54, 62, 67, 0.96)", + "sapUiBtnActionSelectBorderColor": "rgba(100, 114, 123, 0.96)", + "sapUiBtnActionSelectBGTransparentHover": "rgba(68, 78, 84, 0.96)", + "sapUiToggleBtnPressed": "#007cc0", + "sapUiToggleBtnBorder": "#006ca7", + "sapUiToggleBtnPressedHover": "#006ca7", + "sapUiCheckBoxCheckedColor": "#007cc0", + "sapUiCheckBoxUncheckedColor": "#c0c0c0", + "sapUiCheckBoxFocusColor": "#005483", + "sapUiDTICustomRows": "5", + "sapUiDTICustomPhoneRows": "3", + "sapUiDTICustomWidth": "64", + "sapUiDTICustomHeight": "48", + "sapUiDTICustomShowLabel": "false", + "sapUiDTICustomHeaderText": "false", + "sapUiDTICustomMode": "scroller", + "sapUiDTICustomDesktopMode": "mixed", + "sapUiDTICustomDisplay": "bubble", + "sapUiDTICustomPhoneDisplay": "modal", + "sapUiDTICustomFontFamily": "Arial, Helvetica, sans-serif", + "sapUiDTICustomDialogBorder": "#9a9a9a", + "sapUiDTICustomDialogWheelsBG": "none", + "sapUiDTICustomDialogWheelBG": "none", + "sapUiDTICustomArrowBG": "#ffffff", + "sapUiDTICustomArrowColor": "#666666", + "sapUiDTICustomArrowHoverColor": "#007cc0", + "sapUiDTICustomItemText": "#666666", + "sapUiDTICustomSelectedItemText": "#000000", + "sapUiDTICustomSelectedItemBG": "#e6f2f9", + "sapUiDTICustomButtonBG": "rgba(54, 62, 67, 0.96)", + "sapUiDTICustomButtonOnDesktopBG": "rgba(54, 62, 67, 0.96)", + "sapUiDTICustomButtonHoverBG": "#007cc0", + "sapUiDTICustomButtonText": "#ffffff", + "sapUiDTICustomHeaderTextColor": "#666666", + "sapUiDTICustomHeaderTextShadow": "rgba(255, 255, 255, 0.5)", + "sapUiDTICustomHeaderBG": "#f2f2f2", + "sapUiDTICustomFooterBG": "rgba(54, 62, 67, 0.96)", + "sapUiDTICustomFooterOnDesktopBG": "rgba(54, 62, 67, 0.96)", + "sapUiDTICustomHeaderBoxShadow": "#dddddd", + "sapUiITBTextOnlyBrandText": "#0079ad", + "sapUiInputBaseBG": "#ffffff", + "sapUiInputBaseFont": "Arial, Helvetica, sans-serif", + "sapUiInputBaseText": "#000000", + "sapUiInputBaseBorder": "#c0c0c0", + "sapUiInputBaseFocus": "#007cc0", + "sapUiInputBasePlaceholder": "#707070", + "sapUiInputBaseWarning": "#f0ab00", + "sapUiInputBaseWarningBG": "#fffcb5", + "sapUiInputBaseError": "#e52929", + "sapUiInputBaseErrorBG": "#fbdfdf", + "sapUiInputBaseErrorFont": "#cc1919", + "sapUiInputBaseSuccess": "#008a3b", + "sapUiLabelText": "#666666", + "sapUiLabelFont": "Arial, Helvetica, sans-serif", + "sapUiListBGHeader": "#e6f2f9", + "sapUiListBGFooter": "#f7f7f7", + "sapUiListHeaderText": "#666666", + "sapUiListFooterText": "#666666", + "sapUiListSingleSelectMasterAsActive": "false", + "sapUiListHeaderBorder": "#dddddd", + "sapUiListTextColor": "#333333", + "sapUiGroupHeaderBG": "#f7f7f7", + "sapUiListNoDataTextColor": "#333333", + "sapUiListTblBG": "rgba(255, 255, 255, 0.8)", + "sapUiListTblHeaderBorder": "#dddddd", + "sapUiListTblTextColor": "#333333", + "sapUiListTblPopinHeaderTextColor": "#666666", + "sapUiListTblPopinValueTextColor": "#000000", + "sapUiListTblPopinBG": "rgba(255, 255, 255, 0.8)", + "sapUiListTblPopinActiveBG": "#007cc0", + "sapUiListTblPopinSelectedBG": "#e6f2f9", + "sapUiListTblIconSize": "1rem", + "sapUiListTblTextSize": "0.875rem", + "sapUiLIBorder": "#e5e5e5", + "sapUiLISelected": "#e6f2f9", + "sapUiLIActive": "#007cc0", + "sapUiLICounter": "#007cc0", + "sapUiLIText": "#333333", + "sapUiLIStandardText": "#000000", + "sapUiLITextSec": "#666666", + "sapUiLITextInverted": "#ffffff", + "sapUiLITextDisabled": "#666666", + "sapUiLIDelIcon": "true", + "sapUiLIDelColor": "#cc1919", + "sapUiLINavColor": "#8c8c8c", + "sapUiLIDetailIcon": "true", + "sapUiLIDetailColor": "#666666", + "sapUiLIDetailBGActive": "#007cc0", + "sapUiLIUnreadAsBubble": "false", + "sapUiALITextColor": "#ffffff", + "sapUiMessageToastTextColor": "#ffffff", + "sapUiMessageToastTextShadow": "#000000", + "sapUiPageBG": "#ffffff", + "sapUiPanelBG": "#ffffff", + "sapUiPopoverContBG": "#ffffff", + "sapUiPopupBorderColor": "rgba(154, 154, 154, 0.6)", + "sapUiPopupBorder": "1px rgba(154, 154, 154, 0.6) solid", + "sapUiPopupBoxShadow": "0px 0px 30px 2px rgba(0, 0, 0, 0.15)", + "sapUiBlockLayerColor": "#000000", + "sapUiPopupButtonSeparator": "1px #000000 solid", + "sapUiPopupBorderRadius": "2px", + "sapUiPullToRefreshText": "#666666", + "sapUiPullToRefreshArrow": "#007cc0", + "sapUiPullToRefreshBG": "#f2f2f2", + "sapUiRadioButtonSelectedColor": "#007cc0", + "sapUiRadioButtonBorderColor": "#c0c0c0", + "sapMUiScrollBarBG": "rgba(0, 0, 0, 0.5)", + "sapMUiScrollBarBorderColor": "#ffffff", + "sapUiSegmentedBtnBG": "#ffffff", + "sapUiSegmentedBtnBGSelected": "#007cc0", + "sapUiSegmentedBtnBGSelectedHover": "#006ca7", + "sapUiSegmentedBtnBGHover": "rgba(196, 196, 196, 0.5)", + "sapUiSegmentedBtnBGActive": "#007cc0", + "sapUiSegmentedBtnBorder": "#dedede", + "sapUiSegmentedBtnIconDark": "#666666", + "sapUiSegmentedBtnIconLight": "#ffffff", + "sapUiSegmentedBtnText": "#00679e", + "sapUiSegmentedBtnTextActive": "#ffffff", + "sapUiSegmentedBtnTextFooter": "#ffffff", + "sapUiSegmentedBtnFooterHover": "rgba(234, 234, 234, 0.1)", + "sapUiSegmentedBtnBorderFooter": "rgba(100, 114, 123, 0.96)", + "sapUiSelectBG": "#ffffff", + "sapUiSelectBorderColor": "#c0c0c0", + "sapUiSelectBorderColorPressed": "#007cc0", + "sapUiSelectLabelTextColor": "#000000", + "sapUiSelectBGActive": "#007cc0", + "sapUiSelectLabelTextColorPressed": "#ffffff", + "sapUiSelectArrowColor": "#666666", + "sapUiSelectArrowColorActive": "#ffffff", + "sapUiSelectArrowBGHover": "#f0f0f0", + "sapUiSelectArrowBGActive": "#007cc0", + "sapUiSelectIconColor": "#666666", + "sapUiSelectIconColorActive": "#ffffff", + "sapUiSelectIconBGHover": "#eaeaea", + "sapUiSelectIconBGPressed": "#007cc0", + "sapUiSelectIconBorderColor": "#c0c0c0", + "sapUiSelectFooterBGHover": "rgba(234, 234, 234, 0.09999999999999998)", + "sapUiSelectListActiveBG": "#e6f2f9", + "sapUiSelectListLightestBGHover": "#f0f0f0", + "sapUiSelectListLITextInverted": "#ffffff", + "sapUiSelectListHighlight": "#007cc0", + "sapUiSelectListMediumBorder": "#cdcdcd", + "sapUiSelectListBorder": "#c0c0c0", + "sapUiSelectListLightestBG": "#ffffff", + "sapMShellContentBGOpacity": "30", + "sapUiSliderBG": "#dddddd", + "sapUiSliderProgressBG": "#007cc0", + "sapUiSliderHandleBorder": "#9a9a9a", + "sapUiSliderHandleBG": "rgba(154, 154, 154, 0.3)", + "sapUiSliderHandleBGHover": "rgba(154, 154, 154, 0.6)", + "sapUiSliderHandleBorderPressed": "#007cc0", + "sapUiSliderHandleBGPressed": "rgba(0, 124, 192, 0.3)", + "sapUiSplitContainerMasterBG": "#ffffff", + "sapUiSplitContainerMasterShadow": "1px 0 10px rgba(0, 0, 0, 0.15)", + "sapUiSplitContainerMasterBorder": "1px solid rgba(0, 0, 0, 0.15)", + "sapUiSplitContainerMasterFooterSeperator": "rgba(100, 114, 123, 0.96)", + "sapUiSLIIconColor": "#666666", + "sapUiSLIIconColorActive": "#ffffff", + "sapUiInfoTop": "false", + "sapUiSwitchOnBG": "#007cc0", + "sapUiSwitchOnHoverBG": "#006ca7", + "sapUiSwitchOffBG": "#ffffff", + "sapUiSwitchHandleOnBG": "#ffffff", + "sapUiSwitchHandleOffBG": "#9a9a9a", + "sapUiSwitchOnBorder": "#007cc0", + "sapUiSwitchOffBorder": "#9a9a9a", + "sapUiSwitchBorderColorHover": "#007cc0", + "sapUiSwitchTextOn": "#ffffff", + "sapUiSwitchTextOff": "#666666", + "sapUiSwitchAcceptRejectBG": "#ffffff", + "sapUiRIIconPadding": "0.25rem", + "sapUiRIIconColor": "#f0ab00", + "sapUiToolbarBG": "rgba(229, 229, 229, 0)", + "sapUiToolbarSolidBG": "#e5e5e5", + "sapUiToolbarBorder": "#cdcdcd", + "sapUiToolbarInfoBG": "#457aae", + "sapUiToolbarInfoHoverBG": "#2b68a3", + "sapUiToolbarInfoActiveBG": "#125698", + "sapUiToolbarInfoBorder": "#e5e5e5", + "sapUiToolbarSeparatorBG": "#c0c0c0", + "sapUiToolbarSeparatorFooterBG": "rgba(100, 114, 123, 0.96)", + "sapUiFeedInputBG": "#ffffff", + "sapMeOverlapCalendarType00": "#e5e5e5", + "sapMeOverlapCalendarType01": "#d9ebf6", + "sapMeOverlapCalendarType01Action": "#cce8d8", + "sapMeOverlapCalendarType04": "#d9ebf6", + "sapMeOverlapCalendarType06": "#fae2a6", + "sapMeOverlapCalendarType07": "#fceaea", + "sapMeOverlapCalendarIndicator": "#f27020", + "sapMeCalendarLegendIconCollapse": "collapse", + "sapMeCalendarLegendIconExpand": "expand", + "sapMeTabIconInfo": "hint", + "sapMeTabColorInfo": "#f27020", + "sapMeTabIconNotes": "notes", + "sapMeTabColorNotes": "#ab218e", + "sapMeTabIconAttachments": "attachment", + "sapMeTabColorAttachments": "#007cc0", + "sapMeTabIconPeople": "group", + "sapMeTabColorPeople": "#004990", + "sapMSwitch-ONPOSITION": "-32", + "sapMSwitch-OFFPOSITION": "0", + "sapMSwitch-TRANSITIONTIME": "175" +} \ No newline at end of file diff --git a/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/library.css b/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/library.css new file mode 100644 index 0000000..50c38ca --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/library.css @@ -0,0 +1,12 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + .sapMALI{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex}.sapMALIText{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:3rem;display:block;text-align:center}.sapMALI>.sapMLIBContent{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-moz-box-pack:center;-ms-justify-content:center;justify-content:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sapMALI .sapMLIBUnread,.sapMALI .sapMLIBSelectS,.sapMALI .sapMLIBSelectM,.sapMALI .sapMLIBSelectD{display:none}.sapMActionSheet{width:100%}.sapMActionSheet:focus{outline:none}.sapMActionSheetDialog .sapMDialogScroll{display:block}.sapMApp{width:100%;height:100%}.sapMBar{display:block;width:100%;position:relative}.sapMBarContainer{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarContainer{display:flex;align-items:center}.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarPH{justify-content:center}.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarRight{justify-content:flex-end}.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarContainer>.sapMBarChild{flex:none}.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarContainer>.sapMButton,.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarContainer>.sapMText,.sap-desktop[data-sap-ui-browser^="ff"] .sapMBarContainer>.sapMLabel{flex:initial}.sapMBarLeft,.sapMBarRight{position:absolute;height:100%}.sapMBarLeft{left:0}.sapMBarRight{text-align:right;right:0}.sapMBarRight.sapMRTL{text-align:left}.sapMBarPH{display:inline-block;height:3rem}.sapMBarMiddle{text-align:center;width:100%;height:0;top:0;left:0}.sapMBar .sapMLabel{display:inline}.sapMBusyDialog{width:18.75em;text-align:center}.sapMLabel.sapMBusyDialogLabel{display:block;white-space:normal;font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5em;margin-right:1em;margin-left:1em;text-align:center!important}.sapMBusyIndicator,.sapMBusyIndicatorLight,.sapMBusyIndicatorDark{display:inline-block;vertical-align:middle}.sapMBsyIndLabel{vertical-align:middle;padding-left:.5em}html[dir='rtl'] .sapMBsyIndIcon{-moz-animation:sapMBsyIndRotateRTL 2s linear 0s infinite normal none;-webkit-animation:sapMBsyIndRotateRTL 2s linear 0 infinite normal none;animation:sapMBsyIndRotateRTL 2s linear 0 infinite normal none}.sapMBsyIndIcon{vertical-align:middle;-webkit-transform:rotate(0deg) translateZ(0);-webkit-transition-duration:0ms;-ms-transform:rotate(0deg) translateZ(0);-ms-transition-duration:0ms;transform:rotate(0deg) translateZ(0);transition-duration:0ms;-moz-animation:sapMBsyIndRotate 2s linear 0s infinite normal none;-webkit-animation:sapMBsyIndRotate 2s linear 0 infinite normal none;animation:sapMBsyIndRotate 2s linear 0 infinite normal none}@-moz-keyframes sapMBsyIndRotate{from{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(360deg)}}@-webkit-keyframes sapMBsyIndRotate{from{-webkit-transform:rotate(0deg) translateZ(0)}to{-webkit-transform:rotate(360deg) translateZ(0)}}@keyframes sapMBsyIndRotate{from{transform:rotate(0deg) translateZ(0)}to{transform:rotate(360deg) translateZ(0)}}@-moz-keyframes sapMBsyIndRotateRTL{from{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(-360deg)}}@-webkit-keyframes sapMBsyIndRotateRTL{from{-webkit-transform:rotate(0deg) translateZ(0)}to{-webkit-transform:rotate(-360deg) translateZ(0)}}@keyframes sapMBsyIndRotateRTL{from{transform:rotate(0deg) translateZ(0)}to{transform:rotate(-360deg) translateZ(0)}}.sapMBtn{height:2.750rem;margin:0;padding:0;vertical-align:top;border:none;cursor:pointer}.sapMBtn::-moz-focus-inner{padding:0;border:0}.sapMBtnInner{-webkit-appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-background-clip:padding-box;background-clip:padding-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;height:2.500rem;min-width:2.500em;margin:0;padding:0;text-align:center;position:relative}.sapMBtnIconLeft{position:absolute;top:0;left:0}.sapMBtnBackIconLeft{position:absolute;top:0;left:2.375rem}.sapMBtnIconRight{position:absolute;top:0;right:0}.sapMBtnContent{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:top;line-height:2.5rem}.sapMBtnContentLeft{padding-right:2.375rem}.sapMBtnContentRight{padding-left:2.375rem}.sapMBtnBackContentRight{padding-left:4.750rem}html[data-sap-ui-browser*='ie'] .sapMBtnContentWithIcon{display:inline}.sapMBtnDisabled{pointer-events:none;cursor:default}.sapMCrsl{position:relative;overflow:hidden;touch-action:pan-y;-ms-touch-action:pan-y}.sapMCrsl.sapMCrslLeft{text-align:left}.sapMCrsl.sapMCrslCenter{text-align:center}.sapMCrsl.sapMCrslFluid>.sapMCrslInner>*{width:100%}.sapMCrsl.sapMCrslFluid.sapMCrslCenter>.sapMCrslInner>*:first-child{margin-left:0}.sapMCrslInner{height:100%;position:relative;white-space:nowrap;text-align:begin;font-size:0;-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-ms-transition-property:-ms-transform;transition-property:transform;-webkit-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);-moz-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);-ms-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);-webkit-transition-duration:0.5s;-moz-transition-duration:0.5s;-ms-transition-duration:0.5s;transition-duration:0.5s}html[data-sap-ui-browser^="ie"] .sapMCrslInner{text-align:left}html[dir=rtl][data-sap-ui-browser^="ie"] .sapMCrslInner{text-align:right}.sapMCrslItemTable{display:table}.sapMCrslItemTableCell{height:100%;display:table-cell}.sapMCrslImg{text-align:center;vertical-align:middle}.sapMCrslInner.sapMCrslNoTransition{-webkit-transition-duration:0.01s;-moz-transition-duration:0.01s;-ms-transition-duration:0.01s;transition-duration:0.01s}.sapMCrslInner.sapMCrslHideNonActive>:not(.sapMCrslActive) .sapMCrslItemTableCell{visibility:hidden}.sapMCrslInner>*{display:inline-block;vertical-align:top;white-space:normal;font-size:1rem}.sapMCrslFluid>.sapMCrslInner>*{box-sizing:border-box;-ms-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.sapMCrslItemTable,.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{height:100%;width:100%}.sapMCrsl.sapUiContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll,.sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll,.sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll,.sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:0}.sapMSplitContainerDetail .sapMCrsl.sapUiResponsiveContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:1rem}.sapMCrsl.sapUiNoContentPadding>.sapMCrslInner>.sapMCrslItem>.sapMScrollCont>.sapMScrollContScroll{padding:0}.sapMCb{display:inline-block;position:relative}.sapMCbBg{height:2rem;width:2rem;position:relative;display:inline-block;top:0.7rem}.sapMCbBg>.sapMCbMark,.sapMCbBg.sapMCbMark>input{font-size:inherit}.sapMListTblRow.sapMListTblRowTop>td{vertical-align:top}.sapMListTblRow.sapMListTblRowMiddle>td{vertical-align:middle}.sapMListTblRow.sapMListTblRowBottom>td{vertical-align:bottom}.sapMComboBoxBaseArrow{display:inline-block;cursor:pointer;outline:none;padding:0;border:none;-webkit-appearance:none;-moz-appearance:none;background:transparent;font-size:inherit}.sapMComboBoxBaseReadonly .sapMComboBoxBaseArrow{display:none}.sapMCLI{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex}.sapMCLI>.sapMLIBContent{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1}.sapMCustomTile{display:inline-block;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition-property:transform3d;-webkit-transition-duration:0.2s;transition-property:transform3d;transition-duration:0.2s;width:13em;height:15em;margin:0}.sapMCustomTileContent{overflow:hidden;width:100%;height:100%}.sap-phone .sapMCustomTile{width:9.5em;height:11em;margin:0}.sapMDP>.sapMInputBaseInner{padding-right:2.5rem}.sapUiSizeCompact .sapMDP>.sapMInputBaseInner{padding-right:1.625rem}.sapMDateRangeSelection{color:#008000;border:1px solid blue}.sapMDTICustom .dwwr{min-width:13rem}.sapMDTICustom .dwbg .dwb{padding-right:.25rem;padding-left:.25rem}html[dir=rtl] .sapMDTICustomTime .dwc,html[dir=rtl] .sapMDTICustomDateTime .dwc:last-child{direction:ltr}.sapMDialog,.sapMMessageDialog .sapMDialogScrollCont,.sapMDialogSection{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMDialog{position:absolute;background-clip:padding-box;-webkit-animation-duration:0.1s;-webkit-animation-timing-function:ease-in;-webkit-animation-fill-mode:forwards;-moz-animation-duration:0.1s;-moz-animation-timing-function:ease-in;animation-duration:0.1s;animation-timing-function:ease-in;animation-fill-mode:forwards;max-width:100%;max-height:100%;overflow:hidden;outline:none}.sap-tablet .sapMDialog,.sap-desktop .sapMDialog{min-width:25rem}.sapMDialog>.sapMBar{position:relative;width:auto}.sapMDialogSection{position:relative;overflow:hidden}.sapMDialogScroll{display:inline-block;min-height:100%;width:100%;vertical-align:middle}.sapMDialogVerScrollDisabled .sapMDialogScroll{height:100%}.sapMDialogHorScrollDisabled .sapMDialogScroll{display:block;width:100%}.sapMDialogHidden{visibility:hidden}.sapMDialogSliding{-webkit-transition-duration:0.3s;-moz-transition-duration:0.3s;transition-duration:0.3s}.sapMDialogBlockLayer{opacity:0.6}.sapMDialogTransparent{opacity:0}.sapMDialogActions{display:flex;display:-webkit-box;display:-ms-flexbox;display:-moz-box;width:100%}.sapMDialogActions>.sapMDialogAction{flex:1 1 0;-webkit-box-flex:1;width:0;-ms-flex:1 1 0;-moz-box-flex:1}html[data-sap-ui-browser^="ie9"] .sapMDialog-CTX .sapMDialogActions>.sapMDialogAction{display:inline-block;vertical-align:bottom}.sapUiPopupWithPadding .sapMDialogScrollCont{padding:1rem}.sapMMessageDialog .sapMDialogScrollCont{padding:1.5rem;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMDialogWithScrollCont .sapMDialogScroll{position:relative}.sapMDialogWithScrollCont .sapMDialogScrollCont{padding:0;width:100%;height:100%;position:absolute}.sapMActionSheetDialog .sapMDialogScrollCont{padding:0}@-webkit-keyframes sapMDialogZoomIn{0%{-webkit-transform:scale3d(0.9,0.9,1);transform:scale3d(0.9,0.9,1);opacity:0}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}}@-webkit-keyframes sapMDialogZoomOut{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}100%{-webkit-transform:scale3d(0.9,0.9,1);transform:scale3d(0.9,0.9,1);opacity:0}}@-moz-keyframes sapMDialogZoomIn{0%{-moz-transform:scale3d(0.9,0.9,1);transform:scale3d(0.9,0.9,1);opacity:0}100%{-moz-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}}@-moz-keyframes sapMDialogZoomOut{0%{-moz-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}100%{-moz-transform:scale3d(0.9,0.9,1);transform:scale3d(0.9,0.9,1);opacity:0}}@keyframes sapMDialogZoomIn{from{transform:scale3d(0.9,0.9,1);opacity:0}to{transform:scale3d(1,1,1);opacity:1}}@keyframes sapMDialogZoomOut{from{transform:scale3d(1,1,1);opacity:1}to{transform:scale3d(0.9,0.9,1);opacity:0}}.sapMDialogOpening{-webkit-animation-name:sapMDialogZoomIn;-moz-animation-name:sapMDialogZoomIn;animation-name:sapMDialogZoomIn}.sapMDialogClosing{-webkit-animation-name:sapMDialogZoomOut;-moz-animation-name:sapMDialogZoomOut;animation-name:sapMDialogZoomOut}.sapMDialogBlockLayerAnimation{position:absolute;-webkit-transition:opacity 0.2s linear;-moz-transition:opacity 0.2s linear;transition:opacity 0.2s linear}.sapMDialog.sapUiContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont,.sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont,.sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont,.sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:0}.sapMSplitContainerDetail .sapMDialog.sapUiResponsiveContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:1rem}.sapMDialog.sapUiNoContentPadding>section>.sapMDialogScroll>.sapMDialogScrollCont{padding:0}.sapMDLI{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;height:2.75em}.sapMDLILabel{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:3rem;display:block}.sap-desktop .sapMLIBCursor .sapMDLILabel{cursor:pointer}.sapMDLIValue{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:3rem}.sapMDLI>.sapMLIBContent{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sapMMessagePage{width:100%;height:100%}.sapMMessagePage>.sapMPage>section>.sapMText,.sapMMessagePage>.sapMPage>section>.sapMLnk{font-family:Arial,Helvetica,sans-serif;margin-top:1rem}.sapMMessagePage .sapMMessagePageMainText{font-size:1.5rem;line-height:2rem;display:block}.sapMMessagePage .sapMMessagePageDescription{font-size:1rem;display:inline-block}.sapMMessagePage>.sapMPage section{max-width:30rem;box-sizing:border-box;text-align:center;margin:-5% auto 0;top:30%}.sapMMessagePage>.sapMPage>.sapMPageHeader + section{top:30%}.sapMMessagePage>.sapMPage>section>.sapUiIcon::before{font-size:6rem}.sapMFFLI{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;min-height:3rem}.sapMFFLI>.sapMLIBContent{overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}.sapMFFLITitleWrap{word-wrap:break-word;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}.sapMFeedIn{display:block;position:relative}.sapMFeedInImage{width:4rem;line-height:4rem;font-size:3rem;display:block;margin-left:auto;margin-right:auto}.sapMFeedListItem{display:block}.sapMFeedListShowSeparatorsAll .sapMFeedListItem{padding-top:1rem;padding-bottom:1rem}.sapMFeedListShowSeparatorsNone .sapMFeedListItem{padding-top:0.5rem;padding-bottom:0.5rem}.sapMFeedListItem:after{content:" ";display:block;height:0rem;clear:both;overflow:hidden;visibility:hidden}.sapMFeedListItem .sapMFeedListItemTextText a,.sapMFeedListItem .sapMFeedListItemTextText span,.sapMFeedListItem .sapMFeedListItemTextName a{font-family:Arial,Helvetica,sans-serif;font-weight:bold;line-height:1.4}.sapMFeedListItemFigure a img{border:0rem}.sapMFeedListItemText{vertical-align:top;margin:0rem}.sapMFeedListItemText .sapMLnk{vertical-align:top}.sap-tablet .sapMFeedListItemHasFigure,.sap-desktop .sapMFeedListItemHasFigure{margin-left:3.75rem}.sapMFeedListItemTextText{margin:0rem;line-height:1.4;font-family:Arial,Helvetica,sans-serif;text-overflow:ellipsis}.sapMFeedListItemFigure{float:left;height:3rem;width:3rem;overflow:visible;margin:0rem}.sapMFeedListItemImage{width:3rem;height:3rem;line-height:3rem;font-size:3rem;margin-left:0rem;margin-right:0rem;overflow:hidden}.sapMFeedListItemTimestamp{line-height:auto}.sapMFeedListItemInfo{line-height:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sapMFeedListItemTextName{line-height:1.4;font-family:Arial,Helvetica,sans-serif;font-weight:bold}html[dir=rtl] .sapMFeedListItemTextName{float:left;margin-right:0.3rem}html[dir=rtl].sap-phone .sapMFeedListItemTextName{float:none;margin-right:0}.sapMFeedListItemFooter{margin-top:0.375rem;margin-bottom:0rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-family:Arial,Helvetica,sans-serif}.sapMFeedListItemTitleDiv.sapMLIB{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:center;flex-direction:row;align-items:center}.sapMFeedListShowSeparatorsNone.sapMLIB{border-bottom:0}html[data-sap-ui-browser="ie9"] .sapMFeedListItemTitleDiv{display:block}.sapMFeedListItemTitleDiv .sapMLIBContent{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;overflow:hidden;-ms-flex-negative:1}.sap-phone .sapMFeedListItemHeader{white-space:nowrap;overflow:hidden}.sap-phone .sapMFeedListItemHeader.sapMFeedListItemFullHeight,.sap-phone .sapMFeedListItemHeader.sapMFeedListItemHasFigure{height:3rem}.sap-phone .sapMFeedListItemImage{width:3rem;heigth:3rem;line-height:3rem;font-size:2.5rem}.sap-phone .sapMFeedListItemTextName{margin-top:0.25rem;margin-bottom:0.25rem}.sap-phone .sapMFeedListItemTextName a{font-family:Arial,Helvetica,sans-serif;font-weight:normal;width:100%}.sap-phone .sapMFeedListItemFigure{height:3rem;width:3rem;margin-right:0.75rem}.sap-phone .sapMFeedListItemFooter{margin-top:0.375rem;margin-bottom:0rem;overflow:hidden;text-overflow:ellipsis}.sap-phone .sapMFeedListItemTimestamp{margin-top:0;margin-bottom:0.25rem;overflow:hidden;text-overflow:ellipsis}.sap-phone .sapMFeedListItemText{clear:left;line-height:1.4;margin-top:0.75rem;margin-bottom:0;overflow:hidden;text-overflow:ellipsis}.sapMUploadCollection{}.sapMFlexItem{position:relative;-ms-flex-preferred-size:auto;-ms-flex-negative:1}.sapMGHLI .sapMLIBSelectM,.sapMGHLI .sapMLIBSelectS,.sapMGHLI .sapMLIBSelectD,.sapMGHLI .sapMListTblSelCol{display:none}.sapMGHLI .sapMLIBUnread,.sapMGHLI .sapMListTblUnreadCol{display:none}.sapMGHLIUpperCase{text-transform:uppercase}.sapMGHLI .sapMLIBContent{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:100%}.sapMITB{display:block;width:100%;position:relative}.sapMITBContentClosed{position:relative;padding:0.125rem 0 0 0;margin-top:0.750rem;background-color:transparent;border-bottom:none}.sapMITBTab{display:block}.sapMITBFilterIcon,.sapMITBTextOnly .sapMITBFilter,.sapMITBTextOnly .sapMITBText,.sapMITBAll{cursor:pointer}.sapMITBTextUpperCase .sapMITBText{text-transform:uppercase}.sapMITBStretch{position:absolute;bottom:0;top:0;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.sapMITBStretch>.sapMITBContainerContent{-webkit-flex-grow:1;-ms-flex:1 1;flex-grow:1}.sapMITBStretch>.sapMITBContainerContent>.sapMITBContent{position:absolute;bottom:0;top:0;right:0;left:0}.sapMITB.sapMITBNoContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:0}.sapMITBBackgroundDesignTransparent>.sapMITBContainerContent>.sapMITBContent{background-color:transparent}.sap-bb .sapMITBContainerContent{overflow:hidden}.sapMITB.sapMITBNoContentPadding>.sapMITBContainerContent,.sapMITB.sapUiNoContentPadding>.sapMITBContainerContent{border-top:0;border-bottom:0}.sapMITB.sapUiContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent,.sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent,.sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent,.sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:0}.sapMSplitContainerDetail .sapMITB.sapUiResponsiveContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:1rem}.sapMITB.sapUiNoContentPadding>.sapMITBContainerContent>.sapMITBContent{padding:0}.sapMImg{border:none;-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-user-select:none;-moz-user-select:none;-webkit-touch-callout:none}.sapMImg.sapMNoImg{visibility:hidden}.sapMImg:focus{outline:none}.sapMInputSuggestionPopup>.sapMPopoverArr{display:none}.sapMDialog.sapMInputSuggestionPopup .sapMDialogScrollCont{padding:0}.sapMInputDescription{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sapMInputDescription>span{padding-left:0.5rem;font-family:Arial,Helvetica,sans-serif;font-style:normal;font-weight:normal}.sapMInputSuggestionTableHidden{visibility:hidden}.sapMInputVHO,.sapMInput.sapMInputVHO>input{cursor:pointer}.sapMInputDescription.sapMInputVH>span{position:relative;display:inline-Block;height:100%}.sapMInputBase,.sapMInputBaseInner,.sapMInputBasePlaceholder{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMInputBasePlaceholder{cursor:text}.sapMInputBaseDisabled>.sapMInputBaseReadonly,.sapMInputBaseDisabled>.sapMInputBasePlaceholder{cursor:default}.sapMInputBase,.sapMInputBaseInner{font:inherit}.sapMInputBaseInner,.sapMInputBasePlaceholder{width:100%}.sapMInputBaseInner::-webkit-outer-spin-button,.sapMInputBaseInner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.sapMInputBaseInner::-ms-clear{height:0}.sapMInputBaseInner{-webkit-appearance:none;border-radius:0}.sapMPointer>.sapMInputBaseInner{cursor:pointer}.sapMInputBaseDisabled{opacity:0.5;pointer-events:none}.sapMInputBaseInner::-webkit-input-placeholder{text-overflow:ellipsis}.sapMInputBaseMessage{padding:0.3125rem;background:#ffffff;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMInputBaseMessageText{width:100%}.sapMILI{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;height:2.75em}.sapMILILabel{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.sap-desktop .sapMLIBCursor .sapMILILabel{cursor:pointer}.sapMILI>.sapMLIBContent{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1}.sapMILIDiv{-webkit-box-flex:9;-moz-box-flex:9;-ms-flex:auto;flex:auto;-ms-flex-negative:1;text-align:right}html[dir=rtl] .sapMILIDiv{text-align:left}.sapMLabel{color:#000000;font-size:16px;display:inline-block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:text}.sapMLabelBold{font-weight:bold}.sapMLabelMaxWidth{max-width:100%}.sapMLIBCursor .sapMLabel,.sapMLIBCursor + .sapMListTblSubRow .sapMLabel{cursor:pointer}.sapUiGridLabel>.sapMLabel{float:right}.sapUiRespGridMedia-Std-Phone.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanS12)>.sapMLabel,.sapUiRespGridMedia-Std-Tablet.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanM12)>.sapMLabel,.sapUiRespGridMedia-Std-Desktop.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanL12)>.sapMLabel{float:right}.sapMLnk{color:#00679e;text-decoration:none;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;word-wrap:normal}.sapMLnk:active{background-color:transparent}.sapMLnk:active:not(.sapMLnkDsbl),.sapMLnk:focus:not(.sapMLnkDsbl){color:#00679e}.sapMLnk:visited{color:#00679e}.sapMLnk:hover:not(.sapMLnkDsbl){color:#00679e}.sapUiInverted-CTX .sapUiLnk{color:#1bb1ff}.sapMLnk.sapMLnkWrapping{white-space:normal;word-wrap:break-word}.sapMLnkMaxWidth{max-width:100%}.sapMList{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMListUl{list-style-type:none}.sapMListSwipable{touch-action:pan-y;-ms-touch-action:pan-y}.sapMList:focus,.sapMListUl:focus{outline:none}.sapMListInset{overflow:hidden}.sapMListSwp{overflow:hidden;position:absolute;right:0.5em;z-index:1;opacity:0;pointer-events:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@-webkit-keyframes sapMListSwpInAnim{0%{opacity:0}100%{opacity:1}}@keyframes sapMListSwpInAnim{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes sapMListSwpOutAnim{0%{opacity:1}100%{opacity:0}}@keyframes sapMListSwpOutAnim{0%{opacity:1}100%{opacity:0}}.sapMListSwpInAnim{-webkit-animation:sapMListSwpInAnim 0.2s ease-in forwards;animation:sapMListSwpInAnim 0.2s ease-in forwards}.sapMListSwpOutAnim{-webkit-animation:sapMListSwpOutAnim 0.2s ease-in forwards;animation:sapMListSwpOutAnim 0.2s ease-in forwards}.sapMListNoData{list-style-type:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:2.75em}.sapMListNoDataText{-ms-flex-negative:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sapMListShowSeparatorsAll{}.sapMListShowSeparatorsInner{}.sapMListShowSeparatorsNone{}.sapMGrowingListTrigger,.sapMGrowingListLoading{display:block;text-align:center;overflow:hidden}.sapMGrowingListBusyIndicator{float:left;overflow:hidden;visibility:hidden;width:2.0em;height:2.0em}.sapMGrowingListBusyIndicatorVisible{visibility:visible}.sapMGrowingListLoading>.sapMGrowingListBusyIndicator{float:none;visibility:visible}.sapMList.sapUiContentPadding{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMList.sapUiResponsiveContentPadding,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMList.sapUiResponsiveContentPadding,.sapMList.sapUiResponsiveContentPadding{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMList.sapUiResponsiveContentPadding,.sapMList.sapUiResponsiveContentPadding{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMList.sapUiResponsiveContentPadding,.sapMList.sapUiResponsiveContentPadding{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMList.sapUiResponsiveContentPadding{padding:0}.sapMSplitContainerDetail .sapMList.sapUiResponsiveContentPadding{padding:1rem}.sapMList.sapUiNoContentPadding{padding:0}.sapMLIB,.sapMLIBImgNav,.sapMLIBIconDet,.sapMLIBIconDel{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMLIB{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}.sapMLIBTypeNavigation{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sapMLIB:focus,.sapMListTblSubRow:focus{outline:none}.sapMLIBSelectS,.sapMLIBSelectSL,.sapMLIBSelectM,.sapMLIBSelectD{width:2.75em}.sap-desktop .sapMLIBCursor,.sap-desktop .sapMLIBCursor + .sapMListTblSubRow{cursor:pointer}.sapMLIBImgNav,.sapMLIBImgDet,.sapMLIBImgDel,.sapMLIBIconDet,.sapMLIBSelectS,.sapMLIBSelectSL,.sapMLIBSelectM,.sapMLIBSelectD,.sapMLIBCounter,.sapMLIBContent ~ .sapMLIBCursor{-webkit-box-flex:0;-moz-box-flex:0;-ms-flex:none;flex:none}.sapMMessageBoxLinkText{float:right}.sapMMessageBoxDetails{width:100%}.sapMMessageDialog .sapMIBar .sapMDialogTitle{margin-left:0}.sapMMsgPopover{}.sapMMsgPopover .sapMSegBBtnMixed{padding-left:0;padding-right:0}.sapMMsgPopover .sapMDialogScrollCont{padding:0}.sapMMsgPopover.sapMMsgPopover-ModeToolbar .sapMPopoverArr{display:none}.sapMMsgPopover .sapMIBar .sapMBarChild{margin-left:.25rem;margin-right:.25rem}.sapMMsgPopover .sapMMsgPopoverTitleText,.sapMMsgPopover .sapMMsgPopoverDescriptionText{float:left;padding:0 1rem 0 3rem;margin-top:1rem}.sapMMsgPopover .sapMMsgPopoverDescriptionText{padding-bottom:1rem}.sapMMsgPopover .sapMMsgPopoverTitleText{vertical-align:middle;font-weight:600}.sapMMsgPopover.sapMMsgPopover-init .sapMNavItem.sapMPage{position:relative}.sapMMsgPopover.sapMMsgPopover-init .sapMIBar{border-bottom:0}.sapMMsgPopoverDescIcon{position:absolute;left:0;width:3rem;top:.7rem;font-size:1.35rem}.sapMMsgPopoverCloseBtn .sapMBtnIcon{width:2.5rem;height:2.5rem;font-size:1rem}.sapUiSizeCompact.sapMMsgPopover.sapMPopoverArrUp:after,.sapUiSizeCompact.sapMMsgPopover.sapMPopoverWithoutBar.sapMPopoverNav.sapMPopoverWithHeaderCont>.sapMPopoverArrUp:after,.sapUiSizeCompact.sapMMsgPopover.sapMPopoverWithoutBar.sapMPopoverPage.sapMPopoverWithHeaderCont>.sapMPopoverArrUp:after{bottom:-9px;left:-8px}.sapUiSizeCompact.sapMMsgPopover .sapMMsgPopoverCloseBtn .sapMBtnIcon{width:1.626rem;height:1.626rem;font-size:0.75rem}.sapUiSizeCompact.sapMMsgPopover .sapMList .sapMLIBContent .sapUiIcon{font-size:1rem}.sapUiSizeCompact.sapMMsgPopover .sapMBtnInner{padding:0}.sapUiSizeCompact.sapMMsgPopover .sapMBtnCustomIcon{margin-left:0}.sapUiSizeCompact.sapMMsgPopover .sapMMsgPopoverDescIcon{width:3rem;height:1.626rem;line-height:1.626rem;font-size:1rem}.sapMMessageToast{box-sizing:border-box;position:absolute;max-width:100%;font-family:inherit;font-weight:normal;word-wrap:break-word;text-align:center;text-decoration:none;text-overflow:ellipsis;overflow:hidden}.sapMMultiInputBorder{box-sizing:border-box;position:relative;white-space:nowrap}.sapMMultiInputInputContainer{box-sizing:border-box}.sap-desktop .sapMMultiInputBorder{overflow:hidden}.sapMMultiInput .sapMInputValHelp{display:inline-block;position:static}.sapUiSizeCompact .sapMMultiInput .sapMInputValHelp{display:inline-block;position:static}.sapMMultiInputTextInput :not(.sapMMultiInputNotEditable){border-radius:0}.sapMMultiInputInputContainer{position:absolute;top:0rem;right:0rem}.sapMMultiInputNotEditable .sapMMultiInputInputContainer{visibility:collapse}.sapMMultiInputShadowDiv{display:inline;visibility:collapse;position:absolute;top:0rem;left:0rem}.sapMMultiInputMultiModeInputContainer{position:static}.sapMNav{overflow:hidden;position:relative;height:100%}.sapMNavFlip{-webkit-perspective:1000;perspective:1000px}.sapMNavItem,.sapMNavItem.sapMPage{position:absolute;top:0;left:0;display:block;height:100%;-webkit-transition-property:-webkit-transform;transition-property:transform}.sapMNavItem.sapMNavItemRendering{visibility:hidden;left:-4000px}.sapMNavItem.sapMNavItemHidden{display:none}.sapMNavItem.sapMNavItemCenter{-webkit-transform:translate3d(0px,0px,0px);transform:translate3d(0px,0px,0px)}.sapMNavItem.sapMNavItemRight{-webkit-transition-property:-webkit-transform;-webkit-transform:translate3d(100%,0px,0px);transform:translate3d(100%,0px,0px);transition-property:transform}.sapMNavItem.sapMNavItemLeft{-webkit-transition-property:-webkit-transform;-webkit-transform:translate3d(-100%,0px,0px);transition-property:transform;transform:translate3d(-100%,0px,0px)}.sapMNavItem.sapMNavItemSliding{-webkit-transition-duration:0.3s;transition-duration:0.3s}.sapMNavItem.sapMNavItemTransparent{-webkit-transition-property:opacity;transition-property:opacity;opacity:0}.sapMNavItem.sapMNavItemOpaque{-webkit-transition-property:opacity;transition-property:opacity;opacity:1}.sapMNavItem.sapMNavItemFading{-webkit-transition-duration:0.5s;transition-duration:0.5s}.sapMNavItem.sapMNavItemFlipNext{-webkit-transform:rotate3d(0,1,0,180deg);transform:rotate3d(0,1,0,180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden}.sap-winphone .sapMNavItem.sapMNavItemFlipNext{transform:rotateY(180deg)}.sapMNavItem.sapMNavItemFlipPrevious{-webkit-transform:rotate3d(0,1,0,-180deg);transform:rotate3d(0,1,0,-180deg)}.sap-winphone .sapMNavItem.sapMNavItemFlipPrevious{transform:rotateY(-180deg)}.sapMNavItem.sapMNavItemFlipping{-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-backface-visibility:hidden;backface-visibility:hidden}@-webkit-keyframes sapMNavItemDoorInPrevious{from{-webkit-transform:rotate3d(0,1,0,0deg);visibility:visible;opacity:1}40%{-webkit-transform:rotate3d(0,1,0,-70deg);visibility:visible;opacity:0}41%{-webkit-transform:rotate3d(0,1,0,-70deg);visibility:hidden}to{-webkit-transform:rotate3d(0,1,0,-70deg)}}@keyframes sapMNavItemDoorInPrevious{from{transform:rotate3d(0,1,0,0deg);visibility:visible;opacity:1}40%{transform:rotate3d(0,1,0,-70deg);visibility:visible;opacity:0}41%{transform:rotate3d(0,1,0,-70deg);visibility:hidden}to{transform:rotate3d(0,1,0,-70deg)}}@-webkit-keyframes sapMNavItemDoorInNext{from{-webkit-transform:rotate3d(0,1,0,80deg);opacity:0}46%{-webkit-transform:rotate3d(0,1,0,80deg);opacity:0}to{-webkit-transform:rotate3d(0,1,0,0deg);opacity:1}}@keyframes sapMNavItemDoorInNext{from{transform:rotate3d(0,1,0,80deg);visibility:hidden;opacity:0}45%{transform:rotate3d(0,1,0,80deg);visibility:hidden;opacity:0}46%{transform:rotate3d(0,1,0,80deg);visibility:visible;opacity:0}to{transform:rotate3d(0,1,0,0deg);opacity:1}}@-webkit-keyframes sapMNavItemDoorOutPrevious{from{-webkit-transform:rotate3d(0,1,0,0deg);visibility:visible;opacity:1}40%{-webkit-transform:rotate3d(0,1,0,80deg);visibility:visible;opacity:0}41%{-webkit-transform:rotate3d(0,1,0,80deg);visibility:hidden}to{-webkit-transform:rotate3d(0,1,0,80deg)}}@keyframes sapMNavItemDoorOutPrevious{from{transform:rotate3d(0,1,0,0deg);visibility:visible;opacity:1}40%{transform:rotate3d(0,1,0,80deg);visibility:visible;opacity:0}41%{transform:rotate3d(0,1,0,80deg);visibility:hidden}to{transform:rotate3d(0,1,0,80deg)}}@-webkit-keyframes sapMNavItemDoorOutNext{from{-webkit-transform:rotate3d(0,1,0,-70deg);opacity:0}46%{-webkit-transform:rotate3d(0,1,0,-70deg);opacity:0}to{-webkit-transform:rotate3d(0,1,0,0deg);opacity:1}}@keyframes sapMNavItemDoorOutNext{from{transform:rotate3d(0,1,0,-70deg);visibility:hidden;opacity:0}45%{transform:rotate3d(0,1,0,-70deg);visibility:hidden;opacity:0}46%{transform:rotate3d(0,1,0,-70deg);visibility:visible;opacity:0}to{transform:rotate3d(0,1,0,0deg);opacity:1}}.sapMNavDoor{-webkit-perspective:1000;perspective:1000px;-webkit-perspective-origin:0 50%;perspective-origin:0 50%}.sapMNavItem.sapMNavItemDoorInPrevious{-webkit-animation:sapMNavItemDoorInPrevious .8s;animation:sapMNavItemDoorInPrevious .8s;visibility:hidden;opacity:0}.sapMNavItem.sapMNavItemDoorInNext{-webkit-animation:sapMNavItemDoorInNext .8s;animation:sapMNavItemDoorInNext .8s;visibility:visible}.sapMNavItem.sapMNavItemDoorOutPrevious{-webkit-animation:sapMNavItemDoorOutPrevious .8s;animation:sapMNavItemDoorOutPrevious .8s;visibility:hidden;opacity:0}.sapMNavItem.sapMNavItemDoorOutNext{-webkit-animation:sapMNavItemDoorOutNext .8s;animation:sapMNavItemDoorOutNext .8s;visibility:visible}.sapMNavItem.sapMNavItemDooring{-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-transform-origin:0 50%;transform-origin:0 50%}.sapMObjectAttributeDiv .sapMText,.sapMObjectAttributeDiv .sapMObjectAttributeTitle,.sapMObjectAttributeDiv .sapMObjectAttributeText{font-size:.875rem}.sapMObjectAttributeActive .sapMText{color:#00679e;cursor:pointer}.sapMObjectAttributeActive .sapMText:active,.sapMObjectAttributeActive .sapMText:focus,.sapMObjectAttributeActive .sapMText:hover{text-decoration:underline}.sapMOH h1,.sapMOHR h1{margin:0;font-weight:normal}.sapMOH{margin:1rem;padding:0.625rem}.sap-phone .sapMOH{padding:1rem 0}.sapMDialog .sapMOH{margin:1rem}.sapMPopover .sapMOH{margin:1rem;padding:1rem 0}.sapMOH.sapMOHC{margin:0;padding:1.125rem 2rem 1rem 2rem}.sap-phone .sapMOH.sapMOHC{margin:0;padding:1.125rem 1rem 1rem 1rem}.sapMDialog .sapMOH.sapMOHC{margin:0}.sapMPopover .sapMOH.sapMOHC{margin:0;padding:1.125rem 0 1rem 0}.sapUiIcon:focus{outline:none}.sapMOHIntro{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:0.875rem;margin-top:0.375rem;margin-bottom:0.625rem}.sapMOHIntroActive>a:active,.sap-desktop .sapMOHIntroActive>a:hover,.sapMOHTitleActive h1 .sapMText:active,.sap-desktop .sapMOHTitleActive h1 .sapMText:hover{text-decoration:underline}.sapMOHTitleDiv{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:6.3rem;width:65%;overflow:hidden;float:left}.sapMOHC>.sapMOHTitleDiv{padding-right:0.5rem}.sapMOHC>.sapMOHTitleDivFull,.sapMOHTitleDivFull{width:100%}.sapMOHTitleDiv.sapMOHNumberWrap{max-height:4.2rem}.sap-phone .sapMOHTitleDiv{max-height:5rem}.sap-phone .sapMOHTitleDiv.sapMOHNumberWrap{max-height:3.4rem}.sapMOHIcon{position:absolute;margin-top:0.375rem;width:3rem}.sapMOHTitle{margin-top:0.375rem;display:inline-block;position:relative}.sapMText.sapMOHTitle{position:relative}.sapMOHTitle h1 .sapMText{font-size:1.375rem}.sapMListTbl .sapMOHTitle h1 .sapMText{font-size:0.875rem}.sapMOHTitleFollowArrow{margin-right:3rem}.sapMOHC .sapMOHTitleFollowArrow{margin-right:2.5rem}.sapMOHTitleAndArrow{display:inline-block;position:relative;min-height:3rem}.sapMOHTitleIcon{min-height:3rem}.sap-phone .sapMOHTitleIcon{min-height:2.5rem}.sap-phone .sapMText.sapMOHTitle{font-size:1.188rem}.sapMOHIcon + .sapMOHTitle{margin-left:4rem}.sapMOHIcon + .sapMOHTitleAndArrow{margin-left:3.5rem}.sapMOHTitleArrow{display:inline-block;vertical-align:top;position:absolute;right:0}.sapMOHC .sapMOHTitleArrow{margin-top:0.3rem}.sapMOHTitleArrow .sapUiIcon{margin-top:1px;vertical-align:top;display:inline-block;padding:0.4rem 0.5rem 0.4rem 0.5rem}.sap-desktop.sapUiMedia-Std-Phone .sapMOHTitleArrow .sapUiIcon,.sap-phone .sapMOHTitleArrow .sapUiIcon{padding:0.3rem 0.4rem 0.3rem 0.4rem}.sapMOHTitle + .sapMOHTitleArrow{margin-left:0.5rem}.sapMOHNumberDiv{margin-top:0.375rem;display:inline-block;float:right;text-align:end;overflow:hidden;white-space:nowrap}.sapMOHC>.sapMOHNumberDiv{padding-left:0.5rem}.sapMOHC .sapMOHTitle h1>.sapMText,.sap-phone .sapMOHC .sapMOHTitle h1>.sapMText{line-height:1.8rem;font-size:1.125rem}html[data-sap-ui-browser^=ie] .sapMOHNumberDiv{text-align:right}html[dir=rtl][data-sap-ui-browser^=ie] .sapMOHNumberDiv{text-align:left}.sapMOHNumberWrap{width:100%}.sap-phone .sapMOHNumberWrap{margin-top:0.25rem}.sapMOHNumber{display:block;font-size:1.75rem;margin-top:-0.25rem}.sapMOHNumberUnit{display:block;font-size:0.75rem;margin-top:-0.25rem}.sapMOHBottomRow{margin-top:1rem;font-size:0.875rem}.sapMOHAttrRow{margin-top:0.625rem;overflow:hidden}.sapMOHAttrRow:first-child{margin-top:0}.sapMOHC>.sapMOHAttr{margin-top:0.125rem}.sapMOHAttr{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;width:65%;text-align:start;vertical-align:top;overflow:hidden;float:left}html[data-sap-ui-browser^=ie] .sapMOHAttr{text-align:left}html[dir=rtl][data-sap-ui-browser^=ie] .sapMOHAttr{text-align:right}.sapMOH .sapMObjectAttributeDiv{display:inline-block;text-overflow:inherit;white-space:inherit}.sapMOHStatus,.sapMOHStatusFixedWidth{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;text-align:end;vertical-align:top;overflow:hidden;float:right;white-space:nowrap}.sapMOHStatusFixedWidth{width:35%}.sapMOHStatusFixedWidth>.sapMPI{float:right}.sapMOHDivider,.sapMOHLastDivider{clear:both}div[class*='sapUiRespGrid']>.sapMOH>.sapMOHLastDivider{clear:none}html[data-sap-ui-browser^=ie] .sapMOHStatus,html[data-sap-ui-browser^=ie] .sapMOHStatusFixedWidth{text-align:right}html[dir=rtl][data-sap-ui-browser^=ie] .sapMOHStatus,html[dir=rtl][data-sap-ui-browser^=ie] .sapMOHStatusFixedWidth{text-align:left}div[class*='sapMOHRBg']{padding-bottom:1.5rem}.sap-desktop.sapUiMedia-Std-Phone div[class*='sapMOHRBg'],.sap-phone div[class*='sapMOHRBg']{padding-bottom:1rem}.sapMOHR{width:100%;height:100%;padding:1.1rem 2rem 0 2rem;box-sizing:border-box}.sap-desktop.sapUiMedia-Std-Phone .sapMOHR,.sap-phone .sapMOHR{padding:0.625rem 1rem 0 1rem}.sapMOHRTitleNumberDiv{display:inline-block;max-width:95rem;width:100%}.sapMOHRStatesOneOrThree{max-width:95rem}.sap-desktop .sapMOHRStatesOneOrThree .sapMOHRTitleNumberDiv{width:70%;max-width:none}.sapMOHRIcon{position:absolute;top:0.4375rem;width:3rem;height:3rem;margin-right:1rem;background-size:cover;display:block}.sapMOHRHideIcon{display:none;visibility:hidden;margin-left:0}.sapMOHRTitleIcon>.sapMOHRTitle{margin-left:4rem;min-height:3.375rem}html[data-sap-ui-browser^="ie"] .sapMOHRTitleIcon>.sapMOHRTitle{min-height:3.5rem}.sapMOHRTitleDiv{display:inline-block;box-sizing:border-box;overflow:hidden;vertical-align:top;position:relative;width:100%}.sapMOHRTitleTextWrappable{white-space:normal}.sapMOHRTitleText{margin-top:0.4rem;text-decoration:none}.sapMOHRTitleTextContainer{margin:0.4rem 0.5rem 0 0;display:inline-block;position:relative}.sapMOHR .sapMObjStatusMarker{font-family:SAP-icons;font-size:1rem;white-space:nowrap}.sapMOHR .sapMObjStatusMarker .sapUiIcon{display:inline;margin-left:0.5rem}.sapMOHR .sapMObjStatusMarker.sapMObjStatusMarkerOpposite .sapUiIcon{margin-right:0.5rem;margin-left:0}html[dir=rtl] .sapMObjStatusMarker>.sapUiIcon.sapUiIconMirrorInRTL{-ms-transform:none;-webkit-transform:none;transform:none}.sapMOHRIntro{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:0.5rem;line-height:normal}.sapMOHRIntroMargin{margin-top:0}.sap-desktop.sapUiMedia-Std-Phone .sapMOHRIntroMargin,.sap-phone .sapMOHRIntroMargin{margin-top:-0.3rem}.sapMOHRIntroActive>a:active,.sap-desktop .sapMOHRIntroActive>a:hover,.sapMOHRTitleActive .sapMOHRTitleText:active,.sap-desktop .sapMOHRTitleActive .sapMOHRTitleText:hover{text-decoration:underline}.sapMOHRTitleArrow{display:inline-block;vertical-align:top;min-height:2.56rem}.sapMOHRTitleArrow .sapUiIcon{margin-top:1px;vertical-align:top;position:absolute;display:inline-block;padding:0.4rem 0.5rem 0.4rem 0.5rem}.sap-desktop.sapUiMedia-Std-Phone .sapMOHRTitleArrow .sapUiIcon,.sap-phone .sapMOHRTitleArrow .sapUiIcon{padding:0.3rem 0.4rem 0.3rem 0.4rem}.sapMOHRTitleFollowArrow{margin-right:2.5rem;padding-right:0}.sapMOHRStates{display:inline-block;box-sizing:border-box;vertical-align:top;padding-top:1rem;width:100%;max-width:95rem}.sap-desktop .sapMOHRStatesOneOrThree>.sapMOHRStates{width:30%;box-sizing:border-box;padding:0.85rem 0 0 1rem;text-align:end}html[data-sap-ui-browser^=ie].sap-desktop .sapMOHRStatesOneOrThree>.sapMOHRStates{text-align:right}html[dir=rtl][data-sap-ui-browser^=ie].sap-desktop .sapMOHRStatesOneOrThree>.sapMOHRStates{text-align:left}.sap-desktop .sapMOHRStatesOneOrThree>.sapMOHRStates .sapMObjectAttributeDiv>span[class*='sapMObjectAttribute']{float:none}.sapMOHR .sapMObjectNumber{display:inline-block;white-space:normal;padding:0.4rem 0 0 1rem}.sapMOHR .sapMObjectNumberText{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;max-width:100%}.sapMOHR .sapMObjectNumberUnit{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.6;box-sizing:border-box;max-width:100%}.sap-desktop .sapMOHR .sapMObjectNumber{width:30%;box-sizing:border-box}.sap-desktop.sapUiMedia-Std-Tablet .sapMOHR .sapMObjectNumber,.sap-tablet .sapMOHR .sapMObjectNumber{width:35%;box-sizing:border-box}.sap-desktop.sapUiMedia-Std-Phone .sapMOHR .sapMObjectNumber,.sap-phone .sapMOHR .sapMObjectNumber{box-sizing:border-box;float:right}.sap-desktop.sapUiMedia-Std-Phone .sapMOHR .sapMObjectNumber.sapMObjectNumberBelowTitle,.sap-phone .sapMOHR .sapMObjectNumber.sapMObjectNumberBelowTitle{width:100%;padding:0.5rem 0 0 0}.sap-desktop.sapUiMedia-Std-Phone .sapMOHR .sapMObjectNumberText,.sap-phone .sapMOHR .sapMObjectNumberText{display:inline-block}.sap-desktop.sapUiMedia-Std-Phone .sapMOHR .sapMObjectNumberUnit,.sap-phone .sapMOHR .sapMObjectNumberUnit{display:inline-block}.sap-desktop.sapUiMedia-Std-Phone .sapMOHRNumberWrap,.sap-phone .sapMOHRNumberWrap{width:100%;text-align:left;margin-left:0}.sap-desktop .sapMOHRTitleDiv,.sap-desktop .sapMOHRStatesOneOrThree>.sapMOHRTitleNumberDiv>.sapMOHRTitleDiv{width:70%}.sap-desktop.sapUiMedia-Std-Tablet .sapMOHRTitleDiv,.sap-desktop.sapUiMedia-Std-Tablet .sapMOHRStatesOneOrThree>.sapMOHRTitleNumberDiv>.sapMOHRTitleDiv,.sap-tablet .sapMOHRTitleDiv,.sap-tablet .sapMOHRStatesOneOrThree>.sapMOHRTitleNumberDiv>.sapMOHRTitleDiv{width:65%}.sap-desktop.sapUiMedia-Std-Phone .sapMOHRTitleDiv,.sap-phone .sapMOHRTitleDiv{width:60%}.sap-desktop.sapUiMedia-Std-Phone .sapMOHRTitleDivFull.sapMOHRTitleDiv,.sap-phone .sapMOHRTitleDivFull.sapMOHRTitleDiv,.sapMOHRTitleDivFull.sapMOHRTitleDiv{width:100%}.sapMOHRStatesCont1,.sapMOHRStatesCont2,.sapMOHRStatesCont3,.sapMOHRStatesCont4{float:left}.sapMOHROneCols{width:100%}.sapMOHRTwoCols{width:50%;box-sizing:border-box}.sapMOHRTwoCols.sapMOHRStatesCont1{padding-right:0.5rem}.sapMOHRTwoCols.sapMOHRStatesCont2{text-align:end;padding-left:0.5rem}html[data-sap-ui-browser^=ie] .sapMOHRTwoCols.sapMOHRStatesCont2{text-align:right}html[dir=rtl][data-sap-ui-browser^=ie] .sapMOHRTwoCols.sapMOHRStatesCont2{text-align:left}.sapMOHRTwoCols.sapMOHRStatesCont2 .sapMOHRAttr .sapMObjectAttributeDiv>span[class*='sapMObjectAttribute']{float:none}.sapMOHRThreeCols{width:33%;box-sizing:border-box}.sapMOHRThreeCols.sapMOHRStatesCont1{padding-right:0.66rem}.sapMOHRThreeCols.sapMOHRStatesCont3{padding-left:0.66rem}.sapMOHRThreeCols.sapMOHRStatesCont2{padding-left:0.33rem;padding-right:0.33rem}.sapMOHRFourCols{width:25%;box-sizing:border-box}.sapMOHRFourCols.sapMOHRStatesCont1{padding-right:0.75rem}.sapMOHRFourCols.sapMOHRStatesCont4{padding-left:0.75rem}.sapMOHRFourCols.sapMOHRStatesCont2{padding-right:0.5rem;padding-left:0.25rem}.sapMOHRFourCols.sapMOHRStatesCont3{padding-left:0.5rem;padding-right:0.25rem}div[class*='sapMOHRStatesCont']>div:last-child{padding-bottom:0}.sapMOHR .sapMITH{position:relative;margin-left:-1.8rem;margin-right:-1.8rem}.sap-phone .sapMOHRTabs .sapMITH,.sap-desktop.sapUiMedia-Std-Phone .sapMOHRTabs .sapMITH{position:relative;margin-left:-1rem;margin-right:-1rem}.sapMOHRTabs{margin:0 0 0 0;padding-top:0}.sap-phone .sapMOHRTabs,.sap-desktop.sapUiMedia-Std-Phone .sapMOHRTabs{margin:0 0 0 0;padding-left:0;padding-right:0}.sap-phone .sapMOHRTabs .sapMITBTextOnly>.sapMITBFilter>.sapMITBText + .sapMITBContentArrow{height:0.75rem}.sapMOHR .sapMITB{display:block;position:relative;width:100%}.sapMOHR .sapMITBHead{display:block;font-size:0.75rem;margin:0 1.25rem 0;overflow:hidden;position:relative;white-space:nowrap}.sapMOHR .sapMPI{margin:0}.sapMObjectIdentifierIcons{overflow:hidden;text-align:right;vertical-align:top-text;float:right;font-size:1rem;color:#666666}.sapMObjectIdentifierIconSpan{padding:0 0.5rem}.sapMObjectIdentifierTitle .sapMLnk,.sapMObjectIdentifierTitle .sapMText{overflow:visible;font-weight:bold;font-size:1rem;display:inline;word-wrap:break-word;white-space:normal}.sapMObjectIdentifierTitle .sapMText{color:#333333}.sapMObjectIdentifierText{color:#666666;font-size:0.875rem;padding-top:0}.sapMObjectIdentifierTextBellow{margin-top:0.5rem}.sapMListTbl .sapMObjectIdentifierTitle .sapMLnk,.sapMListTbl .sapMObjectIdentifierTitle .sapMText{overflow:visible;font-weight:bold;font-size:0.875rem;display:inline;word-wrap:break-word;white-space:normal;padding-top:0}.sapMListTbl .sapMObjectIdentifierTitle .sapMText{color:#333333}.sapMListTbl .sapMObjectIdentifierText .sapMText{line-height:1.4;padding-top:0}.sapMObjLItem{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.sapMObjLItem>.sapMLIBContent{overflow:hidden}.sapMLIB.sapMObjLItem{padding:1rem}.sapMObjLItem .sapMLIBImgNav:active,.sapMObjLItem .sapMLIBIconDet:active,.sapMObjLItem .sapMLIBIconDel:active{border-bottom:none}.sapMObjLTopRow{float:left;width:100%}.sapMObjLIntro{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}html[data-sap-ui-browser="ie9"] .sapMText.sapMObjLTitle{word-break:break-all}.sapMText.sapMObjLTitle{vertical-align:top;word-break:break-word}.sapMOHTitle:not(.sapMOHRTitleNoWordBreak)>.sapMText{word-break:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.sapMObjLNumberDiv{float:right;padding-left:1rem}.sapMObjLNumber{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:top;text-align:right}html[dir=rtl] .sapMObjLNumber{text-align:left}.sapMObjLNumberUnit{font-weight:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}html[dir=rtl] .sapMObjLNumberUnit{text-align:left}.sapMObjLBottomRow{margin-top:.25rem}.sapMObjLAttrRow{font-size:.875rem;padding-top:.313rem}.sapMObjLAttrDiv{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;width:65%;text-align:left;vertical-align:top}html[dir=rtl] .sapMObjLAttrDiv{text-align:right}.sapMObjLAttrDiv .sapMObjectAttributeDiv{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:100%}.sapMObjLAttrRow:nth-child(1)>.sapMObjLAttrDiv .sapMObjectAttributeDiv,.sapMObjLAttrRow:nth-child(2)>.sapMObjLAttrDiv .sapMObjectAttributeDiv{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}.sapMObjLAttrDiv .sapMObjectAttributeDiv{display:inline-block}.sapMObjLStatusDiv{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;width:35%;text-align:right;vertical-align:top}html[dir=rtl] .sapMObjLStatusDiv{text-align:left}.sapMObjLAttrRow .sapMObjStatus{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.sapMObjLBottomRow .sapMObjStatusIcon{font-size:1rem}.sapMObjLItem .sapMLIBContent{-webkit-box-flex:1;-ms-flex:1;flex:1 1 auto}.sapMObjLListModeDiv{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-align:center;-ms-flex-direction:row;-ms-flex-align:center;flex-direction:row;align-items:center}html[data-sap-ui-browser="ie10"] .sapMObjLItem .sapMLIBContent,html[data-sap-ui-browser="ie11"] .sapMObjLItem .sapMLIBContent{width:100%}html[dir=rtl] .sapMObjStatusMarker>.sapUiIcon.sapUiIconMirrorInRTL{-ms-transform:none;-webkit-transform:none;transform:none}.sapMObjectNumber{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;word-wrap:normal;color:#333333}.sapMObjectNumberEmph>.sapMObjectNumberText{font-weight:bold}.sapMObjectNumberUnit{padding-left:.25rem;font-size:.75rem}.sapMObjectNumberUnit.sapMRTLOpposite{padding-left:0;padding-right:.25rem}.sapMObjStatusIcon>.sapUiIcon{font-size:1rem}.sapMObjStatusIcon{padding-right:.25rem}.sapMObjStatus>.sapMObjStatusTitle{padding-right:.25rem}.sapMConditionPanel .displayNone{display:none}.sapMConditionPanel .conditionRootGrid>div + div .sapUiRespGridMedia-Std-Tablet{margin-top:1rem}.sapMConditionPanel .conditionRootGrid>div + div .sapUiRespGridMedia-Std-Phone{margin-top:1rem}.sapMConditionPanel .conditionAddBtnFloatRight{float:right}.sapUiSizeCompact .sapMConditionPanel .conditionLabel{margin-top:0.5rem}.sapMConditionPanel .conditionLabel{margin-top:1rem}.sapMConditionPanel .sapMCb{display:block}.sapMP13nDialog{color:#008000;border:1px solid blue}.sapMP13nDialog .sapMITBHead{margin:0rem}.sapMFilterPanel .compPadding{padding-left:1rem;padding-right:1rem;padding-bottom:1rem}.sapMFilterPanel .sapMPanelContent{padding:0;border-bottom-width:0}.sapMFilterPanel .sapUiRespGrid.sapUiRespGridVSpace1>div{margin-bottom:0;margin-left:0}.sapMFilterPanel .sapMPanelWrappingDiv{border-bottom:0}.sapMFilterPanel .panelTopMargin{margin-top:1rem}.sapMP13nPanel{color:#008000;border:1px solid blue}.sapMSortPanel{width:100%}.sapMSortPanelContent{padding-top:1rem;padding-bottom:1rem}.sapMGroupPanelContent{padding-top:1rem;padding-bottom:1rem}.sapMPage,.sapMPage>section,.sapMPageScroll{width:100%}.sapMPage{height:100%;position:relative}.sapMPage>section{position:absolute;top:0;left:0;right:0;bottom:0}.sapMPageScroll:not(.sapMPageScrollEnabled){height:100%}.sapMPageScroll{min-height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media (orientation:landscape){html[data-sap-ui-os^="iOS7"][data-sap-ui-browser^="msf"]{padding:0;margin:0;bottom:0}html[data-sap-ui-os^="iOS7"][data-sap-ui-browser^="msf"] body{position:fixed;top:0;bottom:0}}html[data-sap-ui-os^="iOS7"][data-sap-ui-browser^="msf"]:not(.sap-tablet) .sapMPageWithFooter>section>.sapMPageScroll{bottom:3rem}html[data-sap-ui-os^="iOS7"][data-sap-ui-browser^="msf"]:not(.sap-tablet) .sapUiSizeCompact.sapMPageWithFooter .sapMPageScroll,html[data-sap-ui-os^="iOS7"][data-sap-ui-browser^="msf"]:not(.sap-tablet) .sapUiSizeCompact .sapMPageWithFooter .sapMPageScroll{bottom:2.5rem}.sapMPageFooter{position:absolute;bottom:0;left:0;z-index:2}.sapMPageFooter.sapMTB{right:0;border-bottom-width:0}.sapMPageSubHeader,.sapMPageHeader{z-index:1}.sapMPage.sapUiContentPadding>section{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPage.sapUiResponsiveContentPadding>section,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMPage.sapUiResponsiveContentPadding>section,.sapMPage.sapUiResponsiveContentPadding>section{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPage.sapUiResponsiveContentPadding>section,.sapMPage.sapUiResponsiveContentPadding>section{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPage.sapUiResponsiveContentPadding>section,.sapMPage.sapUiResponsiveContentPadding>section{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMPage.sapUiResponsiveContentPadding>section{padding:0}.sapMSplitContainerDetail .sapMPage.sapUiResponsiveContentPadding>section{padding:1rem}.sapMPage.sapUiNoContentPadding>section{padding:0}.sapMPanel{overflow:hidden}.sapMPanelHdr{box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:none;height:3rem;line-height:3rem;padding:0 1rem;-webkit-text-size-adjust:none}.sapMPanelContent{padding:1rem;box-sizing:border-box;overflow:auto}.sapMPanelExpandablePart{clear:both}.sapMPanelExpandableIcon{position:absolute;width:3rem;line-height:3rem;font-size:1rem;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform 0.4s ease-out;transition:transform 0.4s ease-out}.sapMPanelExpandableIconExpanded{display:inline-block;-webkit-transform:translateY(-50%) rotate(90deg);-ms-transform:translateY(-50%) rotate(90deg);transform:translateY(-50%) rotate(90deg);-webkit-transition:all 0.4s ease-out;transition:all 0.4s ease-out}html[dir=rtl] .sapUiIconMirrorInRTL:not(.sapUiIconSuppressMirrorInRTL).sapMPanelExpandableIcon{-webkit-transform:translateY(-50%) scale(-1,1);-ms-transform:translateY(-50%) scale(-1,1);transform:translateY(-50%) scale(-1,1)}html[dir=rtl] .sapUiIconMirrorInRTL:not(.sapUiIconSuppressMirrorInRTL).sapMPanelExpandableIconExpanded{-webkit-transform:translateY(-50%) rotate(90deg) scale(-1,1);-ms-transform:translateY(-50%) rotate(90deg) scale(-1,1);transform:translateY(-50%) rotate(90deg) scale(-1,1)}.sapMPanelWrappingDiv,.sapMPanelWrappingDivTb{position:relative}.sapMPanelWrappingDivTb>.sapMPanelHdrExpandable.sapMTB{border-width:0}.sapMPanelWrappingDiv.sapMPanelWrappingDivExpanded{border-bottom-width:0}.sap-tablet .sapUiFioriObjectPage>section>.sapMPanel,.sap-desktop .sapUiFioriObjectPage>section>.sapMPanel{margin:1rem 0;padding:0 1rem;box-sizing:border-box}.sapMPanelHdrExpandable.sapMPanelHdr,.sapMPanelHdrExpandable.sapMTB-Transparent-CTX.sapMTB{padding-left:0}.sapMIBar.sapMPanelHdrExpandable .sapMBarChild:first-child{margin-left:0}.sapMPanelHdrExpandable.sapMPanelHdr,.sapMPanelWrappingDivTb>.sapMTB{margin-left:3rem}.sapMPanel.sapUiContentPadding>.sapMPanelContent{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent,.sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent,.sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent,.sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent{padding:0}.sapMSplitContainerDetail .sapMPanel.sapUiResponsiveContentPadding>.sapMPanelContent{padding:1rem}.sapMPanel.sapUiNoContentPadding>.sapMPanelContent{padding:0}.sapMPopover{position:absolute;color:#000000;min-width:100px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;outline:none;max-width:100%;max-height:100%;overflow:hidden;-webkit-transition:opacity 0.2s linear;-moz-transition:opacity 0.2s linear;transition:opacity 0.2s linear}.sapMPopoverHeader .sapMTitle{font-size:.865rem}.sapMPopover .sapMPopoverCont{overflow:hidden;position:relative;margin:0.4375em;background-color:#e5e5e5}.sapMPopover .sapMPopoverScroll{display:inline-block;overflow:hidden;vertical-align:middle;min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMPopover.sapUiPopupWithPadding .sapMPopoverScroll{padding:1rem}.sapMPopoverVerScrollDisabled .sapMPopoverScroll{height:100%}.sapMPopoverHorScrollDisabled .sapMPopoverScroll{display:block;width:100%}.sapMPopoverCont:focus{outline:none}.sapMPopover.sapMPopoverTransparent{opacity:0}.sapMPopover.sapMPopoverOpaque{opacity:1}.sapMPopoverWithBar.sapMPopoverWithFooter>.sapMPopoverCont{margin-bottom:0;margin-top:0}.sapMPopoverWithoutBar.sapMPopoverWithFooter>.sapMPopoverCont{margin-bottom:0}.sapMPopoverWithBar.sapMPopoverWithoutFooter>.sapMPopoverCont{margin-top:0}.sapMPopoverWithoutBar.sapMPopoverNav>.sapMPopoverCont,.sapMPopoverWithoutBar.sapMPopoverPage>.sapMPopoverCont,.sapMActionSheetPopover>.sapMPopoverCont{margin:0;background-color:transparent}.sapMPopover>.sapMBar{position:relative;width:auto}.sapMPopoverWithoutBar.sapMPopoverNav .sapMPopoverCont .sapMPage{background-color:transparent}.sapMPopover>.sapMPopoverCont .sapMPage>section{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:auto}.sapMPopoverWithoutBar .sapMPage footer.sapMIBar{position:absolute}.sapMPopover.sapUiContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll,.sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll,.sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll,.sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:0}.sapMSplitContainerDetail .sapMPopover.sapUiResponsiveContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:1rem}.sapMPopover.sapUiNoContentPadding>.sapMPopoverCont>.sapMPopoverScroll{padding:0}.sapMPI{-webkit-box-sizing:border-box;box-sizing:border-box;-moz-box-sizing:border-box;border:1px solid #c0c0c0;padding:1px;margin:0.25rem 0}.sapMPIBar{height:100%;float:left}.sapMPIBarDisabled{opacity:0.5}.sapMPIText{font-size:0.75rem;color:#666666}.sapMPITextLeft{color:#ffffff;display:none;float:right;padding-right:0.5rem}.sapMPITextRight{display:block;float:left;padding-left:0.5rem}.sapMPIValueGreaterHalf .sapMPITextRight{display:none}.sapMPIValueGreaterHalf .sapMPITextLeft{display:block}.sapMPIAnimate .sapMPIText{display:none}.sapMRb{float:left;clear:left;outline:none;text-overflow:ellipsis;position:relative}.sapMILI-CTX .sapMRb{float:right}.sapMRbB{height:3em;width:3em;display:inline-block;display:-webkit-inline-box}.sapMRbB .sapMRbBOut{height:1.03em;width:1.03em;border-radius:1em}.sapMRbBLabel{vertical-align:top;height:3em;line-height:3em}.sapMRbB input{-webkit-appearance:none;visibility:hidden}.sapMRbB:focus{outline:none}.sapMRbG:not(.sapMRbGTab){display:inline-block}.sapMRbGTab{display:box;display:-moz-box;display:-webkit-box}html[data-sap-ui-browser^="ie"] .sapMRbGTab{display:table;table-layout:fixed}.sapMRbGCol{vertical-align:top;min-width:10px;margin-right:0;padding:1px;overflow:hidden}.sapMRbGTabFlex>.sapMRbGCol{-moz-box-flex:1;-webkit-box-flex:1;box-flex:1}html[data-sap-ui-browser^="ie"] .sapMRbGCol{display:table-cell;padding-right:15px}.sapMRbGDummy{-moz-box-flex:1000;-webkit-box-flex:1000;box-flex:1000;min-width:1px}html[data-sap-ui-browser^="ie"] .sapMRbGDummy{display:table-cell;width:1px}.sapMRbG>.sapMRb,.sapMRbGCol>.sapMRb{float:left;clear:left;text-overflow:ellipsis}.sapMRbG.sapMRbG1Row>.sapMRb{float:none;clear:none;margin-right:15px}.sapMRbGCol>.sapMRb{width:100%;outline-offset:-1px}.sapMRbG .sapMRbB{position:absolute;left:0}.sapMRbG .sapMRbBLabel{padding-left:2.875rem;display:inline-block}.sapMRbG[dir=rtl] .sapMRbB{right:0}.sapMRbG[dir=rtl] .sapMRbBLabel{padding-right:2.875rem}.sapMRI{position:relative;display:inline-block;overflow:hidden;vertical-align:middle;padding:0.25rem;touch-action:pan-y;-ms-touch-action:pan-y}.sapMRISelector{position:absolute;background:transparent;width:100%;height:100%}html[data-sap-ui-browser*='ie'] .sapMRISelector{background-color:rgba(255,255,255,0.01)}.sapMRISel{float:left;display:block;overflow:hidden;padding:0;margin:0;color:#007cc0;word-wrap:normal;white-space:nowrap}.sapMRIUnsel{position:relative;float:right;color:#e5e5e5;word-wrap:normal;white-space:nowrap}.sapMRIUnselWrapper{float:right;overflow:hidden}.sapMRIHov{float:left;display:none;overflow:hidden;color:#00679e;word-wrap:normal;white-space:nowrap}.sapMScrollCont{overflow:hidden;position:relative}.sapMScrollContScroll{display:inline-block}.sapMScrollContV .sapMScrollContScroll{display:block}.sapMScrollCont.sapUiContentPadding>.sapMScrollContScroll{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll,.sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll,.sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll,.sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll{padding:0}.sapMSplitContainerDetail .sapMScrollCont.sapUiResponsiveContentPadding>.sapMScrollContScroll{padding:1rem}.sapMScrollCont.sapUiNoContentPadding>.sapMScrollContScroll{padding:0}.sapMSF{position:relative;-moz-user-modify:read-only;-webkit-user-modify:read-only;-webkit-user-select:none;user-select:none}.sapMSFI[type="search"]{font-size:0.88em;-webkit-appearance:none;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}.sapMSFI[type="search"]::-webkit-search-decoration,.sapMSFI[type="search"]::-webkit-search-results-decoration,.sapMSFI[type="search"]::-webkit-search-results-button{-webkit-appearance:none}.sapMSFI[type="search"]:focus{-webkit-appearance:none}input.sapMSFI[type="search"]:focus{outline:none;outline-width:0}.sapMSFR{position:absolute;right:0;top:0;width:1.8em;height:100%;background:transparent}.sapMSFPlaceholder{font-size:0.88em;display:none}.sapMSegB{margin:0;padding:0;-webkit-tap-highlight-color:rgba(255,255,255,0);border:none;display:inline-block;white-space:nowrap}.sapMSegBBtn{list-style:none;text-overflow:ellipsis;overflow:hidden;-webkit-tap-highlight-color:rgba(255,255,255,0);display:inline-block;text-align:center;cursor:pointer}.sapMSegBBtn:focus{outline:none}.sapMSegBBtn .sapUiIcon:focus{outline:none}.sapMSegBBtn .sapMBtnIconLeft{position:relative}.sapMSegBBtn.sapMSegBBtnMixed{padding-right:0.5rem}.sapMSegB .sapMSegBBtn.sapMSegBBtnMixed{padding-right:0.5rem}.sapMSegB img{margin:0;vertical-align:top;pointer-events:none}.sapMSegB.sapMSegBHide{visibility:hidden}.sapMSegBBtn.sapMSegBBtnDis{text-shadow:none;cursor:default;opacity:0.5}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMBar .sapMSegB{line-height:2.5rem}html[data-sap-ui-os^="bb"] header .sapMSegB,html[data-sap-ui-os^="Android4.1"][data-sap-ui-browser^="an"] header .sapMSegB,html[data-sap-ui-os^="Android4.2"][data-sap-ui-browser^="an"] header .sapMSegB,html[data-sap-ui-os^="Android4.3"][data-sap-ui-browser^="an"] header .sapMSegB,html[data-sap-ui-os^="bb"] footer .sapMSegB,html[data-sap-ui-os^="Android4.1"][data-sap-ui-browser^="an"] footer .sapMSegB,html[data-sap-ui-os^="Android4.2"][data-sap-ui-browser^="an"] footer .sapMSegB,html[data-sap-ui-os^="Android4.3"][data-sap-ui-browser^="an"] footer .sapMSegB,html[data-sap-ui-os^="bb"] .sapMBar .sapMSegB,html[data-sap-ui-os^="Android4.1"][data-sap-ui-browser^="an"] .sapMBar .sapMSegB,html[data-sap-ui-os^="Android4.2"][data-sap-ui-browser^="an"] .sapMBar .sapMSegB,html[data-sap-ui-os^="Android4.3"][data-sap-ui-browser^="an"] .sapMBar .sapMSegB{height:1.5rem;line-height:1.5rem;display:inline-block}html[data-sap-ui-os^="iOS"] header .sapMSegB,html[data-sap-ui-os^="iOS"] footer .sapMSegB,html[data-sap-ui-os^="iOS"] .sapMBar .sapMSegB{line-height:1.5rem;display:inline-block}html[data-sap-ui-os^="Android"] .sapUiSizeCompact .sapMSegBBtn .sapUiIcon{line-height:1.6rem}.sapMSlt,.sapMSltNative,.sapMSlt>.sapMSltLabel{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMSltNative,.sapMSltNative>option{font:inherit}.sapMSlt,.sapMSltLabel,.sapMSltArrow{display:inline-block}.sapMSlt,.sapMSltLabel{overflow:hidden}.sapMSlt:not(.sapMSltDisabled),.sapMSlt:not(.sapMSltDisabled)>.sapMSltLabel{cursor:pointer}.sapMSltDisabled{pointer-events:none}.sapMSlt{position:relative;vertical-align:top;outline:none}.sapMSlt>.sapMSltLabel{position:absolute;left:0;right:0;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;text-indent:0;text-align:start;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.sapMSltAutoAdjustedWidth>.sapMSltLabel{position:relative;vertical-align:top}.sapMILI-CTX .sapMSltLabel{text-align:end}.sapMSltIcon{position:absolute;display:block}.sapMSltAutoAdjustedWidth .sapMSltIcon{position:relative}.sapMSltNative{-webkit-appearance:none;position:relative;cursor:inherit;border:none;margin:0;padding:0;width:auto;opacity:0}.sapMSelectDialog.sapMDialog .sapMDialogScrollCont{padding:0}.sapMBusyIndicator.sapMSelectDialogBusyIndicator{position:absolute;top:50%;left:50%;margin-top:-1rem;margin-left:-1rem;display:none}.sapMSelectDialogListHide{display:none}.sapMSelectDialog.sapMDialog .sapMDialogScroll{width:100%!important}.sapMSelectListDisabled,.sapMSelectListItemDisabled{pointer-events:none}.sapMSelectList{margin:0;padding:0;outline:none;list-style-type:none;-webkit-box-sizing:border-box;box-sizing:border-box}.sapMSelectListItem{outline:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sapMShell{width:100%;height:100%;position:relative;-moz-box-sizing:border-box;box-sizing:border-box}.sapMShellBrandingBar{position:absolute;left:0;top:0;width:100%;height:4px;z-index:1;background-color:#009de0}.sapMBrandingBar-CTX .sapMShellBrandingBar,.sapUiUfdShell .sapMShellBrandingBar{display:none}.sapMShellBG{position:absolute;left:0;top:0;width:100%;height:100%}.sapMShellCentralBox{position:relative;height:100%}.sapMShellHeader{position:relative;width:100%;text-align:center;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 16px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.sapMShellHeaderText{display:none;cursor:default;position:relative}.sapMShellLogo{display:none;position:relative;z-index:1}.sapMShellLogoImgAligner{display:none}.sapMShellHeaderRight{display:none;position:relative}.sapMShellContent{-moz-box-sizing:border-box;box-sizing:border-box;height:100%!important;width:100%;position:relative;margin:0 auto}@media (min-height:3401px){.sap-desktop .sapMShellLogo{position:absolute;float:left;display:-webkit-flex;display:flex;height:40px;margin:0.75em;margin-left:0}html[data-sap-ui-browser^="ie"].sap-desktop .sapMShellLogo{display:block}html[data-sap-ui-browser^="ie"].sap-desktop .sapMShellLogoImgAligner{display:inline-block;height:100%;vertical-align:middle;margin-right:-0.25em}html[data-sap-ui-browser^="ie"].sap-desktop .sapMShellLogoImg{vertical-align:middle;display:inline-block}.sap-desktop .sapMShellLogoImg{margin:auto;max-width:6rem;max-height:40px}.sap-desktop .sapMShellHeader{display:block;position:relative;height:4.25rem;color:#333333;border-bottom:0.0625rem solid #dddddd}.sap-desktop .sapMShellHeaderText{display:inline-block;margin-top:1.25rem;font-size:1.75em;font-weight:lighter}.sap-desktop .sapMShellHeaderRight{display:inline-block;float:right;font-size:0.875em;margin-top:30px}.sap-desktop .sapMShellHeaderRightText{padding:0.75em 0.57em}.sap-desktop .sapMShellHeaderLogout{cursor:pointer;padding:0.75em 0.57em}.sap-desktop .sapMShellHeaderLogout:hover{}.sap-desktop .sapMShellHeaderLogout:focus{outline:none}.sap-desktop .sapMShellHeaderLogout:active{background-color:#007cc0;outline:none}.sap-desktop .sapMShellContent{position:absolute;top:68px;bottom:0;height:auto!important}}@media (min-height:769px) and (max-width:640px){.sap-desktop .sapMShellLogo{display:none}}@media (min-width:1280px){.sap-desktop .sapMShellLogo{margin-left:1rem}.sap-desktop .sapMShellAppWidthLimited .sapMShellCentralBox{width:1280px;margin-left:-640px;left:50%;background-color:rgba(255,255,255,0.3)}}@media (min-width:1280px){.sap-desktop .sapMShellAppWidthLimited .sapMShellHeader{padding:0}}@media (min-width:1480px){.sap-desktop .sapMShellAppWidthLimited .sapMShellLogo{position:absolute;opacity:1;height:auto;width:80px;text-align:center;display:block;right:1280px;top:0;margin:0.75em;margin-left:0}.sap-desktop .sapMShellAppWidthLimited .sapMShellLogoImg{max-width:80px;max-height:80px}html[data-sap-ui-browser^="ie"].sap-desktop .sapMShellAppWidthLimited .sapMShellLogoImgAligner{display:none}}@media (min-width:1680px){.sap-desktop .sapMShellAppWidthLimited .sapMShellLogo{width:160px;margin:2rem}.sap-desktop .sapMShellAppWidthLimited .sapMShellLogoImg{max-width:160px;max-height:160px}}.sapMSlider{display:inline-block;vertical-align:top;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;touch-action:pan-y;-ms-touch-action:pan-y}.sapMSlider:not(.sapMSliderDisabled){cursor:pointer}.sapMSliderDisabled{pointer-events:none}.sapMSliderInner{width:100%;position:relative;background-repeat:no-repeat}.sapMSliderProgress,.sapMSliderHandle{position:absolute}.sapMSliderHandle{display:block;outline:none}.sapMSliderInput{display:none}.sapMSplitContainer{width:100%;height:100%;display:block;position:relative;overflow:hidden}.sapMSplitContainerMaster{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:320px;float:left;left:0}.sapMSplitContainerMaster>.sapMSplitContainerMasterBlindLayer{border:none;position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1;display:none}.sapMSplitContainerPortrait.sapMSplitContainerShowHide>.sapMSplitContainerMaster>.sapMSplitContainerMasterBlindLayer,.sapMSplitContainerHideMode>.sapMSplitContainerMaster>.sapMSplitContainerMasterBlindLayer{display:block}.sapMSplitContainerDetail{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;height:100%;touch-action:pan-y;-ms-touch-action:pan-y}.sapMSplitContainerStretchCompress>.sapMSplitContainerMaster,.sapMSplitContainerShowHide:not(.sapMSplitContainerPortrait)>.sapMSplitContainerMaster,.sapMSplitContainerPopover:not(.sapMSplitContainerPortrait)>.sapMSplitContainerMaster{border-radius:0.3125em}.sapMSplitContainerPortrait.sapMSplitContainerShowHide>.sapMSplitContainerMaster,.sapMSplitContainerHideMode>.sapMSplitContainerMaster{display:inline-block;position:absolute;transform:translate3d(-330px,0,0);transition:all 0ms;-webkit-transform:translate3d(-330px,0,0);-webkit-transition:all 0ms;-moz-transform:translate3d(-330px,0,0);-moz-transition:all 0ms;z-index:5;top:0;height:100%;border-right:none}html[data-sap-ui-browser^="ie9"] .sapMSplitContainerPortrait.sapMSplitContainerShowHide>.sapMSplitContainerMaster,html[data-sap-ui-browser^="ie9"] .sapMSplitContainerHideMode>.sapMSplitContainerMaster{left:-320px}.sapMSplitContainerPopover>.sapMPopoverCont>.sapMPopoverScroll>.sapMSplitContainerMaster{border-right:none}.sapMSplitContainerPortrait.sapMSplitContainerShowHide>.sapMSplitContainerDetail,.sapMSplitContainerHideMode>.sapMSplitContainerDetail,.sapMSplitContainerPopover .sapMSplitContainerDetail{margin-left:0}.sapMSplitContainerPortrait.sapMSplitContainerShowHide>.sapMSplitContainerMasterVisible,.sapMSplitContainerHideMode>.sapMSplitContainerMasterVisible{transform:translate3d(0,0,0);transition:all 300ms;-webkit-transform:translate3d(0,0,0);-webkit-transition:all 300ms;-moz-transform:translate3d(0,0,0);-moz-transition:all 300ms}.sapMSplitContainerPortrait.sapMSplitContainerShowHide>.sapMSplitContainerMasterHidden,.sapMSplitContainerHideMode>.sapMSplitContainerMasterHidden{transform:translate3d(-330px,0,0);transition:all 300ms;-webkit-transform:translate3d(-330px,0,0);-webkit-transition:all 300ms;-moz-transform:translate3d(-330px,0,0);-moz-transition:all 300ms}.sapMSplitContainerPortrait.sapMSplitContainerStretchCompress>.sapMSplitContainerMaster{width:320px!important;left:0}@-webkit-keyframes sapMSplitContainerSlidein{from{width:0}to{width:320px}}@-webkit-keyframes sapMSplitContainerSlideout{from{width:320px}to{width:0}}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0.7}}@-moz-keyframes sapMSplitContainerSlidein{from{width:0}to{width:320px}}@-moz-keyframes sapMSplitContainerSlideout{from{width:320px}to{width:0}}@-moz-keyframes fadeIn{from{opacity:0}to{opacity:1}}@-moz-keyframes fadeOut{from{opacity:1}to{opacity:0.7}}@keyframes sapMSplitContainerSlideout{from{width:320px}to{width:0}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{from{opacity:1}to{opacity:0.7}}.sapMSplitContainerPortrait .sapMSplitContainerMasterBtnShow{display:block;animation:fadeIn 300ms;-webkit-animation:fadeIn 300ms;-moz-animation:fadeIn 300ms}.sapMSplitContainerPortrait .sapMSplitContainerMasterBtnHide{animation:fadeOut 150ms;-webkit-animation:fadeOut 150ms;-moz-animation:fadeOut 150ms}.sapMSplitContainerMasterBtnShow{display:block;animation:fadeIn 1ms;-webkit-animation:fadeIn 1ms;-moz-animation:fadeIn 1ms}.sapMSplitContainerMasterBtnHide{animation:fadeOut 5ms;-webkit-animation:fadeOut 5ms;-moz-animation:fadeOut 5ms}.sapMSplitContainerMasterBtnHidden{display:none}.sapMSplitContainerMobile{width:100%;height:100%}.sapMSplitContainer>.sapMSplitContainerDetail .sapMSplitContainerHiddenChild{display:none}.sapMSLI{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;height:2.75em}.sapMSLIDiv{-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-moz-box-pack:center;-ms-justify-content:center;justify-content:center}.sapMSLITitle,.sapMSLITitleOnly,.sapMSLIDescription{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:9;-moz-box-flex:9;-ms-flex:auto;flex:auto;-ms-flex-negative:1}.sapMSLITitleDiv,.sapMSLIDescriptionDiv{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex}.sapMSLIDiv.sapMSLITitleDiv{-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}.sapMSLIInfo{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:0;-moz-box-flex:0;-ms-flex:none;flex:none;text-align:right}html[dir=rtl] .sapMSLIInfo{text-align:left}.sapMSLI>.sapMLIBContent{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-ms-flex-negative:1;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}.sapMStdTileTopRow{height:4rem;padding:1rem 1rem 0 1rem;margin-bottom:1rem}.sapMStdTileIconDiv{display:inline-block;float:left}.sapMStdTileNumDiv{display:inline-block;float:right;width:7.5rem;height:4rem}.sapMStdTileNum,.sapMStdTileNumM,.sapMStdTileNumS{white-space:nowrap;overflow:hidden;text-align:right;line-height:1em}.sapMStdTileNum{font-size:3rem;margin-top:-0.437rem}.sapMStdTileNumM{font-size:2.25rem;margin-top:-0.25rem}.sapMStdTileNumS{font-size:1.5rem;margin-top:-0.125rem}.sapMStdTileNumUnit{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right;text-transform:uppercase;font-size:0.875rem}.sapMStdTileTitle{line-height:1.4rem;vertical-align:top;text-align:left;font-size:1rem;height:4rem;width:100%;overflow:hidden;word-break:break-word}html[dir=rtl] .sapMStdTileTitle{text-align:right}.sapMStdTileInfo{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right;font-size:0.875rem;margin-top:2rem}html[dir=rtl] .sapMStdTileNum,html[dir=rtl] .sapMStdTileNumM,html[dir=rtl] .sapMStdTileNumS,html[dir=rtl] .sapMStdTileNumUnit,html[dir=rtl] .sapMStdTileInfo{text-align:left}.sapMStdTileBottomRow{height:7rem;padding:0 1rem 1rem 1rem}.sapMStdTileMonitorType{margin-top:-2rem;padding-top:2rem}.sapMStdTileBottomRow .sapMStdTileMonitorType{height:10rem}.sap-phone .sapMStdTileTopRow{height:3rem;margin-bottom:0}.sap-phone .sapMStdTileNumDiv{width:5rem;height:3rem}.sap-phone .sapMStdTileNumUnit{font-size:0.75rem}.sap-phone .sapMStdTileBottomRow{height:5rem}.sap-phone .sapMStdTileMonitorType{margin-top:-1rem;padding-top:1rem}.sap-phone .sapMStdTileTitle{line-height:1.2rem;font-size:.875rem;height:4rem;margin-bottom:0}.sap-phone .sapMStdTileInfo{height:1rem;font-size:0.75rem;width:100%;margin-top:0}.sap-phone .sapMStdTileNum{font-size:2.375rem}.sap-phone .sapMStdTileNumM{font-size:1.5rem}.sap-phone .sapMStdTileNumS{font-size:1rem}.sap-phone .sapMSupport .sapMDialogScrollCont{padding:0}.sapMSupport .sapUiSupportLabel{font-weight:bold}.sapMSupport .sapUiSupportTechInfoBorder{border:1px solid #E2E2E2}.sapMSupport .sapUiSupportTxtFld,.sapMSupport .sapUiSupportBtn{border:1px solid #BFBFBF;font-size:14px;height:22px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin-left:10px}.sapMSupport .sapUiSupportTxtArea{width:100%;height:50px;margin-top:5px;resize:none;box-sizing:border-box}.sapMSupport .sapUiSupportPnlLbl{display:block}.sapMSupport .sapUiSupportDiv{margin-top:5px}.sapMSupport .sapUiSupportTxtFld{background-color:#FFFFFF;padding:1px}.sapMSupport .sapUiSupportTxtFld:focus{border-color:#007DC0}.sapMSupport .sapUiSupportBtn{background-color:#E2E2E2;border-color:#A3A3A3;padding-bottom:3px;cursor:pointer}.sapMSupport .sapUiSupportBtn:focus,.sapMSupport .sapUiSupportBtn.sapUiSupportRunningTrace{color:#FFFFFF;border-color:#00689E;background-color:#007DC0}.sapMSupport .sapUiSupportBtn.sapUiSupportRunningTrace{cursor:default}.sapMSwtText,.sapMSwtHandle,.sapMSwtInner{position:absolute}.sapMSwtCont{display:inline-block;vertical-align:top;outline:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sapMSwtCont:not(.sapMSwtContDisabled){cursor:pointer}.sapMSwtCont>input{display:none}.sapMSwtContDisabled{pointer-events:none}.sapMSwt{position:relative;outline:none;touch-action:pan-y;-ms-touch-action:pan-y}.sapMSwtDisabled:focus{outline:none}.sapMSwtInner{width:100%;height:100%}.sapMSwtText{text-align:center}.sapMSwtLabel{white-space:nowrap;text-decoration:none;text-overflow:ellipsis;overflow:hidden}.sapMSwtHandle{display:block;top:0;bottom:0;margin:auto}.sapMSwtAcceptReject .sapMSwtLabelOn::before,.sapMSwtAcceptReject .sapMSwtLabelOff::before{font-family:'SAP-icons';speak:none}.sapMListTbl{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;overflow:hidden}.sapMListTbl th,.sapMListTbl td{overflow:hidden}.sapMListTbl .sapMLIB{display:table-row}.sapMListTbl:focus,.sapMListTbl th:focus,.sapMListTbl td:focus,.sapMListTbl>tr:focus{outline:none}.sapMListTblCellNoData{text-align:center}.sapMListTblHeaderNone{height:0}.sapMListTblCellDup>.sapMListTblCellDupCnt{position:absolute;clip:rect(0,0,0,0)}tr.sapMListTblHeaderNone>th{border:0;margin-top:0;padding-top:0;margin-bottom:0;padding-bottom:0}.sapMListTblHeaderNone>.sapMListTblSelCol>.sapMCb,.sapMListTblHeaderNone>.sapMListTblCell>*{display:none}.sapMListTbl .sapMLabel{word-wrap:normal}.sapMListTblNone{display:none}.sapMListTblSelCol{width:3rem}.sapMListTblNavCol{width:0}.sapMListTblUnreadCol{width:1.74rem}.sapMListTblSubCnt{display:block}.sapMListTblSubCntRow{display:block;overflow:hidden}.sapMListTblSubCntSpr,.sapMListTblSubCntHdr,.sapMListTblSubCntVal{display:inline-block;vertical-align:middle}.sapMListTblSubCntValBlock{display:block}@media screen and (max-width:1120px){.sapMListTblCell.sapMSize-xxlarge{display:none}}@media screen and (max-width:1024px){.sapMListTblCell.sapMSize-desktop{display:none}}@media screen and (max-width:960px){.sapMListTblCell.sapMSize-xlarge{display:none}}@media screen and (max-width:768px){.sapMListTblCell.sapMSize-large{display:none}}@media screen and (max-width:600px){.sapMListTblCell.sapMSize-tablet{display:none}}@media screen and (max-width:560px){.sapMListTblCell.sapMSize-medium{display:none}}@media screen and (max-width:480px){.sapMListTblCell.sapMSize-small{display:none}}@media screen and (max-width:320px){.sapMListTblCell.sapMSize-xsmall{display:none}}@media screen and (max-width:240px){.sapMListTblCell.sapMSize-xxsmall,.sapMListTblCell.sapMSize-phone{display:none}}.sapMListTbl.sapUiContentPadding{padding:1rem;box-sizing:border-box}@media (max-width:599px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMListTbl.sapUiResponsiveContentPadding,.sapMSplitContainerPortrait>.sapMSplitContainerDetail .sapMListTbl.sapUiResponsiveContentPadding,.sapMListTbl.sapUiResponsiveContentPadding{padding:0}}@media (min-width:600px) and (max-width:1023px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMListTbl.sapUiResponsiveContentPadding,.sapMListTbl.sapUiResponsiveContentPadding{padding:1rem;box-sizing:border-box}}@media (min-width:1024px){.sapMSplitContainerHideMode>.sapMSplitContainerDetail .sapMListTbl.sapUiResponsiveContentPadding,.sapMListTbl.sapUiResponsiveContentPadding{padding:1rem 2rem;box-sizing:border-box}}.sapMSplitContainerMaster .sapMListTbl.sapUiResponsiveContentPadding{padding:0}.sapMSplitContainerDetail .sapMListTbl.sapUiResponsiveContentPadding{padding:1rem}.sapMListTbl.sapUiNoContentPadding{padding:0}html[data-sap-ui-browser="ie9"] .sapMPersoDialog .sapMPersoDialogFixedBar .sapMPersoDialogSelectAllCb{margin-left:1rem}.sapMPersoDialogFixedBar{position:relative}.sapMPersoDialogFixedBar .sapMPersoDialogSelectAllCb>.sapMCbLabel{font-size:1.125rem}.sapMPersoDialogFixedBar .sapMPersoDialogResetBtn{position:absolute;top:0;right:0}.sapMTableSelectDialog.sapMDialog .sapMDialogScrollCont{padding:0}.sapMBusyIndicator.sapMTableSelectDialogBusyIndicator{position:absolute;top:50%;left:50%;margin-top:-1rem;margin-left:-1rem;display:none}.sapMTableSelectDialogTableHide{display:none}.sapMText{display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;white-space:pre-line;word-wrap:break-word;cursor:text}.sapMTextNoWrap,.sapMTextMaxLine{overflow:hidden}.sapMTextNoWrap{text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.sapMTextLineClamp{display:-webkit-box;-webkit-box-orient:vertical}.sapMTextBreakWord{word-break:break-all;word-break:break-word}.sapMTextMaxWidth{max-width:100%}.sapMLIBCursor .sapMText,.sapMLIBCursor + .sapMListTblSubRow .sapMText{cursor:pointer}.sapMTextAreaInner{line-height:1.6em;overflow:auto;-webkit-transform:none;resize:none}.sapMTextArea>.sapMTextAreaInner{height:100%;width:100%}.sapMTile{border:1px solid #dddddd;display:inline-block;-webkit-transition-property:transform3d;-webkit-transition-duration:0.2s;-moz-transition-property:transform3d;-moz-transition-duration:0.2s;transition-property:transform3d;transition-duration:0.2s;width:12rem;height:14rem;margin:0.5rem;-webkit-touch-callout:none;background-color:#ffffff}.sapMTile *{-webkit-user-select:none;-webkit-user-drag:none;-moz-user-select:-moz-none;-ms-user-select:none}.sapMTCEditable .sapMTile{background-color:rgba(255,255,255,0.5)}html[data-sap-ui-browser*='ie'] .sapMTile{transition-property:transform}.sapMTile.sapMTileActive{background:#007cc0}.sap-phone .sapMTile{width:8.5rem;height:10rem;margin:0.5rem}.sap-phone .sapMTileContent{width:8.5rem;height:10rem}.sapMTileContent{overflow:hidden;width:12rem;height:14rem}.sapMTileDrag{opacity:0.8;z-index:10;-webkit-transition-property:none;-moz-transition-property:none;transition-property:none}.sapMNavItemFlipping .sapMTile{opacity:0.01}.sapMTC{top:0;bottom:0;left:0;right:0;position:relative;overflow:hidden;touch-action:pan-y;-ms-touch-action:pan-y}.sapMTC .sapMTCScrl{padding:0;position:absolute;left:0;top:0;overflow:visible}.sapMTC:focus{outline:none}.sapMTC .sapMTCCnt{height:100%;width:100%;overflow:visible;position:absolute;left:0;top:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none}.sap-tablet .sapMTC .sapMTCScrl,.sap-phone .sapMTC .sapMTCScrl{padding:0}.sapMTC.sapMTCEditable .sapMTCCnt{opacity:1}.sapMTC .sapMTCCnt.sapMTCAnim{-webkit-transition-property:-webkit-transform3d;-webkit-transition-duration:0.4s;-moz-transition-property:-moz-transform;-moz-transition-duration:0.4s;transition-property:transform3d;transition-duration:0.4s}.sapMTC .sapMTCPager{position:absolute;bottom:0;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:30px;padding:5px;text-align:center}.sapMTC .sapMTCPager SPAN{display:inline-block;background-color:#aaaaaa;border-radius:4px;height:8px;width:8px;margin-right:8px;margin-bottom:1px;cursor:default;box-shadow:0 0 1px 1px #ffffff}.sapMTC .sapMTCBlind{background-color:#ffffff;opacity:0.4;position:absolute;top:0;left:0;bottom:0;right:0;display:none;box-shadow:0 0 5px 5px #ffffff}.sapMTC .sapMTCPager SPAN.sapMTCActive{background-color:#007cc0;box-shadow:0 0 2px 2px #ffffff}.sapMTC .sapMTCScroller{position:absolute;display:none;top:41%;border-radius:50%;background-color:#ffffff;height:48px;width:48px;opacity:0;cursor:default;-webkit-transition-property:opacity,left,right;-webkit-transition-duration:0.4s;-moz-transition-property:opacity,left,right;-moz-transition-duration:0.4s;transition-property:opacity,left,right;transition-duration:0.4s;box-shadow:0 1px 4px #838383;padding:4px;-moz-box-sizing:border-box;box-sizing:border-box}.sapMTC .sapMTCScroller .sapMTCInner{background-color:#007cc0;height:100%;width:100%;border-radius:50%;font-family:"SAP-icons";font-size:21px;vertical-align:middle;color:#ffffff;padding-top:8px;-moz-box-sizing:border-box;box-sizing:border-box}.sapMTC:hover .sapMTCScroller{opacity:0.1}.sapMTC:hover .sapMTCScroller:hover{opacity:1}.sapMTC .sapMTCScroller.sapMTCLeft{left:-100px}.sapMTC .sapMTCScroller.sapMTCLeft .sapMTCInner::before{content:"\e067";padding-left:13px}.sapMTC:hover .sapMTCScroller.sapMTCLeft{left:1rem}.sapMTC .sapMTCScroller.sapMTCRight{right:-100px}.sapMTC:hover .sapMTCScroller.sapMTCRight{right:1rem}.sapMTC .sapMTCScroller.sapMTCRight .sapMTCInner::before{content:"\e066";padding-left:16px}.sapMTC .sapMTile,.sapMTC .sapMCustomTile{position:absolute;top:0;left:0}html[dir=rtl] .sapMTC .sapMTile,html[dir=rtl] .sapMTC .sapMCustomTile{left:auto;right:0}.sap-tablet .sapMTC .sapMTCScroller,.sap-phone .sapMTC .sapMTCScroller{display:none}.sapMTC .sapMTCRemove{display:none}.sapMTC.sapMTCEditable .sapMTileContent{margin-top:-1em}.sapMTC.sapMTCEditable .sapMTile{cursor:move;box-shadow:0 1px 5px rgba(0,0,0,0.6)}.sapMTC.sapMTCEditable .sapMTile .sapMTCRemove{background-color:#5d5d5d;display:block;height:24px;width:25px;border-radius:50%;font-family:"SAP-icons";font-size:20px;color:#ffffff;padding-top:0;padding-left:2px;box-sizing:border-box;margin-top:-0.5em;margin-left:-0.5em;box-shadow:0 1px 3px #5d5d5d;z-index:1;cursor:default}html[data-sap-ui-browser^="ff"] .sapMTC.sapMTCEditable .sapMTile .sapMTCRemove{width:22px}.sapMTC.sapMTCEditable .sapMTile .sapMTCNoRemove{height:24px;width:25px;margin-top:-0.5em;margin-left:-0.5em;z-index:1;visibility:hidden}.sapMTC.sapMTCEditable .sapMTCRemove:hover{background-color:#009df3}.sapMTC.sapMTCEditable .sapMTCRemove:active{background-color:#27b2ff}.sapMTC.sapMTCEditable .sapMTCRemove::before{content:"\e1c7"}.sapMTC .sapMTCEdgeRight,html[dir=rtl] .sapMTC .sapMTCEdgeLeft{position:absolute;top:0;right:0;width:40px;height:100%;border-right:2px solid rgba(39,178,255,0.6);opacity:0.01;background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,#ffffff 76%,#ffffff 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0%,rgba(255,255,255,0)),color-stop(76%,#ffffff),color-stop(100%,#ffffff));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,#ffffff 76%,#ffffff 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,#ffffff 76%,#ffffff 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,#ffffff 76%,#ffffff 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,#ffffff 76%,#ffffff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffffff',endColorstr='#ffffff',GradientType=1)}.sapMTC .sapMTCEdgeLeft,html[dir=rtl] .sapMTC .sapMTCEdgeRight{position:absolute;top:0;left:0;width:40px;height:100%;border-left:2px solid rgba(39,178,255,0.6);opacity:0.01;background:-moz-linear-gradient(left,#ffffff 0,#ffffff 24%,rgba(255,255,255,0) 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0%,#ffffff),color-stop(24%,#ffffff),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,#ffffff 0,#ffffff 24%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,#ffffff 0,#ffffff 24%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,#ffffff 0,#ffffff 24%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,#ffffff 0,#ffffff 24%,rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#00ffffff',GradientType=1)}.sap-phone .sapMTC .sapMTCEdgeLeft,.sap-phone .sapMTC .sapMTCEdgeRight{width:20px}.sapMTitle{position:relative;display:inline-block;margin:0;-webkit-margin-before:0;-webkit-margin-after:0;-webkit-margin-start:0;-webkit-margin-end:0;font-weight:normal;color:#333333;font-family:Arial,Helvetica,sans-serif;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;cursor:text}.sapMTitleMaxWidth{max-width:100%}.sapMTitleAlignBegin{text-align:left;text-align:start}.sapMTitleAlignLeft{text-align:left}.sapMTitleAlignEnd{text-align:right;text-align:end}.sapMTitleAlignRight{text-align:right}.sapMTitleAlignCenter{text-align:center}.sapMTitleStyleAuto{font-size:1.75rem}.sapMTitleStyleH1{font-size:1.75rem}.sapMTitleStyleH2{font-size:1.5rem}.sapMTitleStyleH3{font-size:1.25rem}.sapMTitleStyleH4{font-size:1.125rem}.sapMTitleStyleH5{font-size:1rem}.sapMTitleStyleH6{font-size:0.875rem}.sapMToken{display:inline;overflow:hidden;box-sizing:border-box}.sapMTokenText{display:inline;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sapMTokenIcon{display:inline}.sapMToken .sapUiIcon{display:inline-block;min-width:1.4375rem}.sapMTokenizer{display:inline-block;white-space:nowrap;overflow:hidden}.sapMTokenizer .sapMToken{margin-top:0.375rem;margin-bottom:0.375rem;margin-right:0.375rem;line-height:initial;padding-top:0;padding-bottom:0;height:1.625rem;display:inline-block}.sapMTokenTruncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}.sapMTokenTruncate>.sapMTokenIcon{position:absolute;right:0rem}.sapMTokenTruncate>.sapMTokenText{line-height:1.625rem;display:inline-block;width:calc(100% - 2rem)}.sap-phone .sapMTokenizerMultiLine{padding-left:1rem;padding-right:1rem}.sap-phone .sapMTokenizerMultiLine>.sapMTokenizerScrollContainer>.sapMToken{display:table}.sapMMultiInputMultiModeBorder .sapMTokenizer{white-space:normal}.sapMMultiInputMultiModeBorder .sapMTokenizer .sapMToken{margin-bottom:0}.sapUiSizeCompact .sapMTokenizer .sapMToken{height:1.25rem;margin-top:0.125rem;margin-bottom:0.125rem;margin-right:0.125rem}.sapUiSizeCompact .sapMMultiInputMultiModeBorder .sapMTokenizer .sapMToken{margin-bottom:-0.125rem}.sapUiSizeCompact .sapMTokenTruncate>.sapMTokenText{line-height:1.25rem;width:calc(100% - 1.25rem)}.sapMTokenizer:focus{outline:none}.sapMTokenizerScrollContainer{display:inline-block;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sapMTB{white-space:nowrap;overflow:hidden;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none}.sapMTB:focus{outline:0}.sapMTBActive,.sapMTBActive>*{cursor:pointer}.sapMTBShrinkItem{min-width:1rem}.sapMTBNewFlex{display:-webkit-flex;display:-ms-flexbox;display:flex}.sapMTBNewFlex>*{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.sapMTBNewFlex>.sapMTBShrinkItem{-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1}.sapMTBOldFlex{display:-webkit-box}.sapMTBOldFlex>.sapMTBShrinkItem:not(.sapMFlexBox){display:block}.sapMTBOldFlex.sapMTBOverflow>.sapMTBShrinkItem{-webkit-box-flex:1}.sapMTB.sapMTBOldFlex>*{vertical-align:middle;margin-bottom:0;margin-top:0}.sapMTBNoFlex::after{content:"";height:100%;display:inline-block;vertical-align:middle}.sapMTB.sapMTBNoFlex>*{vertical-align:middle;display:inline-block;margin-bottom:0;margin-top:0;float:none}.sapMTBSpacer{margin:0!important;padding:0!important;border:0!important;height:1px}.sapMTBSpacerFlex{-webkit-flex-grow:1;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:auto}.sapMUC .sapMIBar>.sapMBarChild:last-child{margin-right:0rem}.sapMTB.sapMUCListHeader{width:100%;height:3rem;padding-left:1rem;padding-right:1rem;border-bottom-width:0.0625rem;border-bottom-style:solid;font-family:Arial,Helvetica,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.sapMUC .sapMLIB.sapMUCListSingleItem,.sapMUC .sapMLIB.sapMUCListFirstItem,.sapMUC .sapMLIB.sapMUCListLastItem,.sapMUC .sapMLIB.sapMUCListItem{height:5rem;padding-top:1rem;padding-bottom:0.9375rem;border-bottom-width:0.0625rem;border-bottom-style:solid}.sapMLIB.sapMUCItem.sapMUCListSingleItem,.sapMLIB.sapMUCItem.sapMUCListFirstItem,.sapMLIB.sapMUCItem.sapMUCListLastItem,.sapMLIB.sapMUCItem.sapMUCListItem{padding-left:0.9rem}.sapMUCItemIcon{font-family:SAP-icons;font-size:2.5rem}.sapMImg.sapMUCItemImage{height:3rem}.sapMUC .sapMUCFileName.sapMLnk{margin-top:0.125rem;margin-left:0.1rem;font-family:Arial,Helvetica,sans-serif;font-weight:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:top}.sapMUC .sapMUCItem .sapMUCFileName.sapMLnk:focus{outline-offset:0.0625rem}.sapMUCDescriptionHL .sapMLabel{height:1rem;margin-top:0.625rem;margin-bottom:0.125rem;margin-left:0.1rem;font-family:Arial,Helvetica,sans-serif;font-weight:normal;vertical-align:bottom}.sapMUC .sapUiVlt{margin:1rem 0rem 1rem 0rem;overflow:hidden}.sapMUCBtnHL{right:0rem;margin:1rem 1rem 1rem 0rem;-webkit-box-flex:none;-webkit-flex:none;-moz-flex:none;-ms-flex:none;flex:none}.sapMBtn.sapMUCEditBtn,.sapMBtn.sapMUCDeleteBtn,.sapMBtn.sapMUCCancelBtn,.sapMBtn.sapMUCOkBtn{margin-left:0.125rem}.sapMUCText{-webkit-box-flex:10;-webkit-flex:10;-moz-flex:10;-ms-flex:10;flex:10 10 auto}.sapMUCItemIcon,.sapMUCItemImage{height:3rem;width:3rem;padding-left:0rem;margin-right:0.65rem;margin-left:0.1rem;margin-top:1rem;margin-bottom:1rem;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-moz-flex:none;-ms-flex:none;flex:none}.sapMUCEditHL{position:absolute;width:20%}.sapMBusyIndicator.sapMUCloadingIcon{padding-top:1.25rem;padding-bottom:1.25rem;padding-right:1rem;padding-left:0rem}.sapMBusyIndicator.sapMUCloadingIcon .sapMBusySvg{height:2.5rem;width:2.5rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUCItemIcon,html[data-sap-ui-os^="iOS"] .sapMUCItemIcon,html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUCItemImage,html[data-sap-ui-os^="iOS"] .sapMUCItemImage{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUCBtnHL,html[data-sap-ui-os^="iOS"] .sapMUCBtnHL{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMBusyIndicator.sapMUCloadingIcon,html[data-sap-ui-os^="iOS"] .sapMBusyIndicator.sapMUCloadingIcon{padding-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapUiVlt,html[data-sap-ui-os^="iOS"] .sapMUC .sapUiVlt{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone{}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem>.sapMLIBContent.sapMLIBContentMargin,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem>.sapMLIBContent.sapMLIBContentMargin{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCItemIcon,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCItemIcon,html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCItemImage,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCItemImage{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCText,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCText{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCBtnHL{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCItemIcon,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCItemIcon,html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCItemImage,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCItemImage{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCText,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCText{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCBtnHL{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCItemIcon,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCItemIcon,html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCItemImage,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCItemImage{margin-top:0.5rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCText,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCText{margin-top:0.5rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCBtnHL{margin-top:0.5rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem>.sapMLIBContent.sapMLIBContentMargin,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem>.sapMLIBContent.sapMLIBContentMargin{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCItemIcon,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCItemIcon,html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCItemImage,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCItemImage{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCText,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCText{margin-top:0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"] .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCBtnHL{margin-top:0rem}.sapMUC .sapMListShowSeparatorsNone{}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem{border-bottom-color:transparent;padding-top:0.5rem;padding-bottom:0.4375rem}.sapMUC .sapMListShowSeparatorsNone .sapMUCFileName.sapMLnk{margin-top:0.125rem}.sapMUC .sapMListShowSeparatorsNone .sapMBusyIndicator.sapMUCloadingIcon{padding-top:0.75rem;padding-bottom:0.75rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem{height:4rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCItemIcon,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCItemImage{margin-top:0.5rem;margin-bottom:0.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCText{margin:0.5rem 0rem 0.5rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCBtnHL{margin:0.5rem 1rem 0.5rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCEditMode .sapMUCBtnHL{margin:0.5rem 1rem 0.5rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem{height:5rem;padding-top:1rem;padding-bottom:0.9375rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCItemIcon,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCItemImage{padding-top:0rem;padding-bottom:0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCBtnHL{margin:1rem 1rem 1rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCEditMode .sapMUCBtnHL{margin:1rem 1rem 1rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMBusyIndicator.sapMUCloadingIcon{margin-top:0.5rem;margin-bottom:0.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem{height:4.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem>.sapMLIBContent.sapMLIBContentMargin{margin-top:-0.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCBtnHL{margin:1rem 1rem 0.5rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCItemIcon,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCItemImage{margin-top:1rem;margin-bottom:0.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCText{margin:1rem 0rem 0.5rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMBusyIndicator.sapMUCloadingIcon{margin-top:0.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem{height:4.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem>.sapMLIBContent.sapMLIBContentMargin{margin-top:0.5rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCItemIcon,.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCItemImage{margin-top:0.5rem;margin-bottom:1rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCText{margin:0.5rem 0rem 1rem 0rem}.sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCBtnHL{margin:0.5rem 1rem 1rem 0rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"].sapUiSizeCompact .sapMUC .sapMUCBtnHL,html[data-sap-ui-os^="iOS"].sapUiSizeCompact .sapMUC .sapMUCBtnHL{margin-top:1rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone,html[data-sap-ui-os^="iOS"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone{}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCBtnHL{margin-top:1rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCBtnHL{margin-top:1rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem sapMUCBtnHL,html[data-sap-ui-os^="iOS"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem sapMUCBtnHL{margin-top:1.5rem}html[data-sap-ui-os^="mac"][data-sap-ui-browser^="sf"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCBtnHL,html[data-sap-ui-os^="iOS"].sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCBtnHL{margin-top:1rem}.sapUiSizeCompact .sapMUC{}.sapUiSizeCompact .sapMUC .sapMUC .sapMUCFileName.sapMLnk{margin-top:0.125rem}.sapUiSizeCompact .sapMUC .sapMUCDescriptionHL .sapMLabel{margin-top:0.5rem;margin-bottom:0.25rem}.sapUiSizeCompact .sapMUC .sapMUCBtnHL{margin:2rem 1rem 1rem 0rem}.sapUiSizeCompact .sapMUC .sapMUCEditHL{height:3rem}.sapUiSizeCompact .sapMUC .sapMUCEditBox{height:3rem;padding-top:0.6875rem;padding-bottom:0.6875rem}.sapUiSizeCompact .sapMUC .sapMUCEditMode .sapMUCBtnHL{margin:1.5rem 1rem 1.5rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone{}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMUCFileName.sapMLnk{margin-top:0.25rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMBusyIndicator.sapMUCloadingIcon{padding-top:0.75rem;padding-bottom:0.75rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMUCBtnHL{margin:1.5rem 1rem 0.5rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem{padding-top:0.5rem;padding-bottom:0.4375rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCBtnHL{margin:1.5rem 1rem 0.5rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListItem .sapMUCEditMode .sapMUCBtnHL{margin:1rem 1rem 1rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem{padding-top:1rem;padding-bottom:0.9375rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCBtnHL{margin:2rem 1rem 1rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListSingleItem .sapMUCEditMode .sapMUCBtnHL{margin:1.5rem 1rem 1.5rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem{padding-bottom:0.4375rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCBtnHL{margin:2rem 1rem 0.5rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListFirstItem .sapMUCEditMode .sapMUCBtnHL{margin:1.5rem 1rem 1rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem{padding-top:0.5rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCBtnHL{margin:1.5rem 1rem 1rem 0rem}.sapUiSizeCompact .sapMUC .sapMListShowSeparatorsNone .sapMLIB.sapMUCListLastItem .sapMUCEditMode .sapMUCBtnHL{margin:1rem 1rem 1.5rem 0rem}.sapMTB.sapMUCListHeader .sapMBtnPaddingLeft{padding-left:0rem}.sapMUC .sapUiIcon:focus{outline-style:dotted;outline-width:1px}.sapMUCItem{white-space:nowrap;overflow:hidden}.sapMUCListFirstItem>.sapMLIBContent,.sapMUCListLastItem>.sapMLIBContent,.sapMUCListSingleItem>.sapMLIBContent,.sapMUCListItem>.sapMLIBContent{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:flex;overflow:hidden}.sapMUCDescriptionHL.sapUiHLayout{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:flex}.sapMUCDescriptionHL>.sapUiHLayoutChildWrapper{width:100%;overflow:hidden}.sapMUCBtnNoFlex{position:absolute}.sapMVSDUpperList{border-bottom:2px solid #c0c0c0}.sapMVSD.sapMDialog .sapMDialogScrollCont{padding:0}.sapMScrollbarV,.sapMScrollbarH,.sapMScrollbarV>div,.sapMScrollbarH>div{position:absolute}.sapMScrollbarV>div,.sapMScrollbarH>div{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-background-clip:padding-box;background-clip:padding-box;border-width:0.0625rem;border-style:solid;border-color:rgba(255,255,255,0.901961);border-radius:0.1875rem;background-color:rgba(0,0,0,0.498039)}.sapMScrollbarV{width:0.438rem;right:0.063rem;top:0;bottom:0}.sapMScrollbarV>div{width:100%}.sapMScrollbarH{height:0.4375rem;bottom:0.0625rem;left:0.125rem;right:0.125rem}.sapMScrollbarH>div{height:100%}.sapMObjStatusMarker{color:#007cc0}.sapMObjStatusMarker .sapUiIcon + .sapUiIcon,.sapMObjStatusMarker .sapUiHiddenPlaceholder + .sapUiIcon{margin-left:.5rem}.sapMObjStatusMarkerInvisible{visibility:hidden}.sapUiCondensedTableCellContent{box-sizing:border-box;padding:0 0.5rem;line-height:1.5rem;vertical-align:middle}.sapMALI{height:3rem}.sapMList .sapMLIB.sapMALI:not(.sapMLIBActive){background:rgba(54,62,67,0.96);border-color:rgba(100,114,123,0.96)}.sap-desktop .sapMList .sapMLIB.sapMALI:not(.sapMLIBActive){background:rgba(54,62,67,0.96);border-color:rgba(100,114,123,0.96)}.sapMList .sapMLIB.sapMALI:focus{outline:0.0625rem dotted #ffffff;outline-offset:-0.0625rem}.sapMALI>.sapMLIBContent{line-height:3rem}.sapMALIText{color:#ffffff;font-weight:normal;line-height:1.25rem;font-size:1.125rem;margin:0 0 0 0.5rem}.sap-desktop .sapMList .sapMLIB.sapMALI:hover:not(.sapMLIBActive){background:rgba(68,78,84,0.96)}.sapUiSizeCompact .sapMALI{height:2rem}.sapUiSizeCompact .sapMALI>.sapMLIBContent{line-height:2rem}.sapUiSizeCompact .sapMALIText{font-size:0.875rem}.sapMActionSheet.sapMActionSheetMixedButtons button.sapMActionSheetButtonNoIcon>.sapMBtnInner>span.sapMBtnContent{margin-left:1.625rem}.sapMActionSheet button.sapMActionSheetButton>.sapMBtnInner{text-align:start}html[data-sap-ui-browser^=ie] .sapMActionSheet button.sapMActionSheetButton>.sapMBtnInner{text-align:left}html[dir=rtl][data-sap-ui-browser^=ie] .sapMActionSheet button.sapMActionSheetButton>.sapMBtnInner{text-align:right}.sapMActionSheet button.sapMActionSheetButton>.sapMBtnInner.sapMBtnTransparent .sapUiIcon{color:#ffffff;text-shadow:none}.sapMDialog.sapMActionSheetDialog.sapUiPopupWithPadding .sapMDialogScrollCont{padding:0}.sapMDialog.sapMActionSheetDialog.sapMDialogPhone{background-color:transparent;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border:none}.sapMDialog.sapMActionSheetDialog.sapMDialogPhone>section{border-radius:0;background-color:rgba(54,62,67,0.98)}.sapMActionSheetDialogWithTitle.sapMActionSheetDialog.sapMDialogPhone>section{-webkit-box-shadow:0 -20px 30px 2px rgba(0,0,0,0.15);-moz-box-shadow:0 -20px 30px 2px rgba(0,0,0,0.15);box-shadow:0 -20px 30px 2px rgba(0,0,0,0.15)}.sapMActionSheetDialog.sapMDialogPhone .sapMActionSheet button.sapMActionSheetButton{width:100%;padding-left:0.25rem;padding-right:0.25rem}.sapMActionSheetDialog.sapMDialogPhone .sapMActionSheet button.sapMActionSheetButton>.sapMBtnInner{color:#ffffff;text-shadow:0 -0.0625rem 0 rgba(0,0,0,0.6);box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;vertical-align:top}.sapMActionSheetDialog.sapMDialogPhone .sapMActionSheet button.sapMActionSheetButton.sapMBtnAccept>.sapMBtnInner,.sapMActionSheetDialog.sapMDialogPhone .sapMActionSheet button.sapMActionSheetButton.sapMBtnReject>.sapMBtnInner{border-bottom:none}.sapMActionSheetDialog.sapMDialogPhone .sapMActionSheet button.sapMActionSheetCancelButton>.sapMBtnInner{text-align:center}.sapMActionSheetDialog.sapMDialogPhone .sapMActionSheet button.sapMActionSheetCancelButton>.sapMBtnInner{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none;font-weight:normal;border-radius:0;vertical-align:top}.sapMActionSheetDialog.sapMDialogPhone>.sapMIBar.sapMHeader-CTX{background:transparent;box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none;color:#ffffff;text-shadow:0 -0.0625rem 0 rgba(0,0,0,0.6)}.sapMActionSheetDialog.sapMDialogPhone>.sapMBar.sapMHeader-CTX>.sapMBarMiddle{text-align:start}html[data-sap-ui-browser^=ie] .sapMActionSheetDialog.sapMDialogPhone>.sapMBar.sapMHeader-CTX>.sapMBarMiddle{text-align:left}html[dir=rtl][data-sap-ui-browser^=ie] .sapMActionSheetDialog.sapMDialogPhone>.sapMBar.sapMHeader-CTX>.sapMBarMiddle{text-align:right}.sapMActionSheetDialog.sapMDialogPhone>.sapMBar.sapMHeader-CTX>.sapMBarMiddle>.sapMBarPH>.sapMLabel{color:#ffffff;text-shadow:0 -0.0625rem 0 rgba(0,0,0,0.6);font-size:0.875rem;margin:0 1rem 0 1rem}.sapMActionSheetPopover.sapMPopover{background-color:rgba(54,62,67,0.98)}.sap-desktop .sapMActionSheetPopover.sapMPopover{background-color:rgba(54,62,67,0.98)}.sapMActionSheetPopover.sapMPopover>.sapMPopoverArrDown:after{border-top-color:rgba(54,62,67,0.98)}.sap-desktop .sapMActionSheetPopover.sapMPopover>.sapMPopoverArrDown:after{border-top-color:rgba(54,62,67,0.98)}.sapMActionSheetPopover.sapMPopover>.sapMPopoverArrUp:after{border-bottom-color:rgba(54,62,67,0.98)}.sap-desktop .sapMActionSheetPopover.sapMPopover>.sapMPopoverArrUp:after{border-bottom-color:rgba(54,62,67,0.98)}.sapMActionSheetPopover.sapMPopover>.sapMPopoverArrLeft:after{border-right-color:rgba(54,62,67,0.98)}.sap-desktop .sapMActionSheetPopover.sapMPopover>.sapMPopoverArrLeft:after{border-right-color:rgba(54,62,67,0.98)}.sapMActionSheetPopover.sapMPopover>.sapMPopoverArrRight:after{border-left-color:rgba(54,62,67,0.98)}.sap-desktop .sapMActionSheetPopover.sapMPopover>.sapMPopoverArrRight:after{border-left-color:rgba(54,62,67,0.98)}.sapMActionSheetPopover.sapMPopover .sapMActionSheet button.sapMActionSheetButton{display:block;width:100%;padding-left:0.25rem;padding-right:0.25rem}.sapMActionSheetPopover.sapMPopover .sapMActionSheet button.sapMActionSheetButton>.sapMBtnInner{color:#ffffff;text-shadow:0 -0.0625rem 0 rgba(0,0,0,0.6);box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:top}.sap-desktop .sapMActionSheetPopover .sapMActionSheet button.sapMActionSheetButton:hover .sapMBtnInner:not(.sapMBtnActive){background:rgba(68,78,84,0.96)}.sapMActionSheetPopover.sapMPopover .sapMActionSheet button.sapMActionSheetButton>.sapMBtnInner.sapMBtnAccept,.sapMActionSheetPopover.sapMPopover .sapMActionSheet button.sapMActionSheetButton>.sapMBtnInner.sapMBtnReject{border-bottom:none}.sapMBarPH{vertical-align:top}.sapMBar .sapMSlt{vertical-align:top}.sapMBar{height:3rem;line-height:3rem;color:#666666;background-color:#f2f2f2;text-shadow:0 0.0625rem 0 rgba(255,255,255,0.5);-webkit-box-shadow:inset 0 -0.0625rem #dddddd;box-shadow:inset 0 -0.0625rem #dddddd}.sapMBar:active{text-shadow:none}.sapMBrandingBar-CTX .sapMBar.sapMPageHeader:before,.sapUiUfdShell .sapMBar.sapMPageHeader:before{display:none}@media (min-height:3401px){.sap-desktop .sapMShell .sapMBar.sapMPageHeader:before{display:none}}.sapMBar .sapMBarLeft>.sapMImg,.sapMBar .sapMBarPH>.sapMImg,.sapMBar .sapMBarRight>.sapMImg{vertical-align:middle}.sapUiSizeCompact .sapMBar{height:2rem}.sapUiSizeCompact .sapMBarLeft,.sapUiSizeCompact .sapMBarRight,.sapUiSizeCompact .sapMBarPH{height:2rem;line-height:2rem}.sapMBarRight,.sapMBarRight>.sapMBarChild:last-child{margin-right:0}.sapMBarLeft,.sapMIBar.sapMBar .sapMBarChild:first-child{margin-left:0}.sapMBarRight,.sapMBarLeft,.sapMBarPH{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sapMBarRight,.sapMBarPH{padding-right:0.25rem}.sapMBarLeft,.sapMBarPH{padding-left:0.25rem}.sapMIBar>.sapMBarLeft>.sapMBarChild:last-child,.sapMIBar .sapMBarPH>.sapMBarChild:last-child{margin-right:0}.sapMIBar .sapMBarChild:first-child{margin-left:0.25rem}.sapMIBar .sapMBarChild{margin-left:0.5rem}.sapMIBar>.sapMBarChild:last-child{margin-right:0.25rem}.sapMIBar-CTX.sapMFooter-CTX{color:#ffffff;text-shadow:0 0.0625em 0 rgba(0,0,0,0.5);background-color:rgba(54,62,67,0.96);background-image:none;border-top:0.0625rem solid rgba(229,229,229,0.2);-webkit-box-shadow:none;box-shadow:none}.sapMIBar.sapMSubHeader-CTX{color:#666666;background-color:#f2f2f2}.sap-desktop .sapMIBar.sapMFooter-CTX{background-color:rgba(54,62,67,0.96)}.sapMSplitContainerMaster .sapMFooter-CTX{border-right:0.0625rem solid rgba(229,229,229,0.2)}.sapMIBar.sapMHeader-CTX{background-color:#f2f2f2;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#f7f7f7,endColorstr=#ededed,GradientType=0);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f7f7f7),color-stop(0.33,#f2f2f2),color-stop(0.75,#f2f2f2),color-stop(1,#ededed));background:-webkit-linear-gradient(top,#f7f7f7 0,#f2f2f2 33%,#f2f2f2 75%,#ededed 100%);background:linear-gradient(top,#f7f7f7 0,#f2f2f2 33%,#f2f2f2 75%,#ededed 100%);color:#666666}.sap-desktop .sapMIBar.sapMHeader-CTX{background-color:#ffffff;filter:none;background-image:none}.sapMPopup-CTX .sapMIBar.sapMHeader-CTX{background-color:#f2f2f2;filter:none;background-image:none}html[data-sap-ui-browser*='ie9'] .sapMPageHeader::after{content:"";position:absolute;width:100%;bottom:0;border-bottom:0.0625em solid #dddddd}.sapMDialogBLyInit{opacity:0.6;background:#000000}.sapMBusyDialog{background:#ffffff;border:1px rgba(154,154,154,0.6) solid}.sapMBusyDialogSimple{background:transparent;border:none}.sapMBusyDialog .sapMDialogTitle{height:3em;line-height:3em;background:#f2f2f2;color:#666666;text-shadow:0 0.0625em 0 rgba(255,255,255,0.5);box-shadow:inset 0 -0.0625em #dddddd}.sapMBusyDialog .sapMBusyIndicator{margin:1em}.sapMBusyDialogLabel{margin-top:1em}footer.sapMBusyDialogFooter{height:3em;color:#ffffff;background-color:rgba(54,62,67,0.96);background-image:none;-webkit-box-shadow:inset 0 0.0625em rgba(229,229,229,0.2);box-shadow:inset 0 0.0625em rgba(229,229,229,0.2);padding:0 0.25rem}.sapMBusyDialog .sapMDialogBtnPhone{color:white;width:100%;padding:0;margin:0;background:transparent;font-size:0.875rem;line-height:3.0rem;border:none}.sapUiSizeCompact.sapMBusyDialog .sapMDialogTitle{height:1.625rem;line-height:1.625rem;padding:0.1875rem 0.5rem}.sapUiSizeCompact.sapMBusyDialog .sapMBusyIndicator{margin:0.5rem}.sapUiSizeCompact.sapMBusyDialog .sapMBusyDialogLabel{margin-top:0.5rem}.sapUiSizeCompact.sapMBusyDialog .sapMBusyDialogFooter{height:2rem;line-height:1.625rem;padding:0.1875rem 0.25rem}.sapUiSizeCompact.sapMBusyDialog .sapMDialogBtnPhone{line-height:1.625rem;border:none}.sapMIBar-CTX>div>.BusyBar{margin:0;vertical-align:top;min-width:3rem;text-align:center}svg.sapMBusySvg,canvas.sapMSpinCanvas{width:2em;height:2em;vertical-align:middle}.sapMBusyIndicator[style^="visibility:hidden"]>.sapMBusySvg{display:none}canvas.sapMSpinCanvas{color:#009de0}svg.sapMBusySvg{stroke:#009de0}.sapMBusyIndicatorLight>canvas.sapMSpinCanvas{color:#ffffff}.sapMBusyIndicatorLight>svg.sapMBusySvg{stroke:#ffffff}.sapMBtn{height:3.000rem;margin:0;padding:0.250rem 0;vertical-align:top;background-color:transparent;border:none}.sapMBtnBack{min-width:5.000rem}.sapMBtn:focus{outline:none}.sapMBtnInner{height:2.500rem;min-width:2.500rem;margin:0;padding:0;vertical-align:top;border:1px solid #bfbfbf;border-radius:0.125rem;color:#333333;text-shadow:0 1px 0 #ffffff;font-family:Arial,Helvetica,sans-serif;font-size:0.875rem;background-color:#f7f7f7;background:-ms-linear-gradient(top,#f7f7f7 0,#f2f2f2 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f7f7f7),color-stop(1,#f2f2f2));background:-webkit-linear-gradient(top,#f7f7f7 0,#f2f2f2 100%);background:linear-gradient(top,#f7f7f7 0,#f2f2f2 100%)}.sapMBtnInner::-moz-focus-inner{border:0}.sapMBtnPaddingLeft{padding-left:0.75rem}.sapMBtnPaddingRight{padding-right:0.75rem}.sapMBtnInner:focus,.sapMBtnContent>span:focus{outline:none}.sapMBtnContent{line-height:2.375rem}.sapMBtnIcon{color:#666666;font-size:1.375rem;line-height:2.375rem;width:2.375rem;text-align:center;margin:0;padding:0;vertical-align:top;max-height:2.375rem}.sapMBtn:hover>.sapMBtnHoverable{background-image:none;background-color:#eaeaea}.sapMBtn:focus>.sapMBtnInner.sapMFocusable{outline:1px dotted #005483;outline-offset:-1px}.sapMFooter-CTX .sapMBtn:focus>.sapMBtnInner.sapMFocusable{outline-color:#ffffff}.sapMBtn.sapMBtnInverted:focus>.sapMBtnInner.sapMFocusable{outline-color:#ffffff}html[data-sap-ui-browser^="ie"]{}html[data-sap-ui-browser^="ie"] .sapMBtn:focus>.sapMBtnInner.sapMFocusable{outline:none;position:relative}html[data-sap-ui-browser^="ie"] .sapMBtn:focus>.sapMBtnInner.sapMFocusable:before{content:" ";-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;position:absolute;left:0;top:0;border:1px dotted #005483}html[data-sap-ui-browser^="ie"] .sapMFooter-CTX .sapMBtn:focus>.sapMBtnInner.sapMFocusable:before{border-color:#ffffff}html[data-sap-ui-browser^="ie"] .sapMBtn.sapMBtnInverted:focus>.sapMBtnInner.sapMFocusable:before{border-color:#ffffff}html[data-sap-ui-browser^="ie"] .sapMBar .sapMBtnInner{position:relative}.sapMBtnDisabled{text-shadow:none;cursor:default;opacity:0.5}:not(.sapMBtnDisabled)>.sapMBtnInner.sapMBtnActive{background-image:none;background-color:#007cc0;border-color:#007cc0;color:#ffffff;text-shadow:none}:not(.sapMBtnDisabled)>.sapMBtnInner.sapMBtnActive .sapMBtnIcon{color:#ffffff}div.sapMBtnInner.sapMBtnAccept{background-image:none;background-color:#007833;border-color:#005f28;color:#ffffff;text-shadow:none}div.sapMBtnInner.sapMBtnAccept>.sapMBtnIcon{color:#ffffff}.sapMBtn:hover>.sapMBtnHoverable.sapMBtnAccept:not(.sapMBtnActive){background-color:#005f28;border-color:#005f28}:not(.sapMBtnDisabled)>div.sapMBtnInner.sapMBtnAccept.sapMBtnActive{background-color:#00451d;border-color:#00451d}div.sapMBtnInner.sapMBtnReject{background-image:none;background-color:#cc1919;border-color:#b51616;color:#ffffff;text-shadow:none}div.sapMBtnInner.sapMBtnReject>.sapMBtnIcon{color:#ffffff}.sapMBtn:hover>.sapMBtnHoverable.sapMBtnReject:not(.sapMBtnActive){background-color:#b51616;border-color:#b51616}:not(.sapMBtnDisabled)>div.sapMBtnInner.sapMBtnReject.sapMBtnActive{background-color:#9f1313;border-color:#9f1313}div.sapMBtnInner.sapMBtnEmphasized{background-image:none;background-color:#009de0;border-color:#008bc7;color:#ffffff;text-shadow:0 1px 0 rgba(0,0,0,0.5)}div.sapMBtnInner.sapMBtnEmphasized>.sapMBtnIcon{color:#ffffff}.sapMBtn:hover>.sapMBtnHoverable.sapMBtnEmphasized:not(.sapMBtnActive){background-color:#008bc7;border-color:#008bc7}:not(.sapMBtnDisabled)>div.sapMBtnInner.sapMBtnEmphasized.sapMBtnActive{background-color:#0079ad;border-color:#0079ad;text-shadow:none}.sapMBtnTransparent{background-image:none;background-color:transparent;border-color:transparent;color:#00679e;text-shadow:none}.sap-desktop .sapMBtnTransparent>.sapMBtnIcon{color:#666666}.sapMBtn:hover>.sapMBtnTransparent.sapMBtnHoverable{background-color:rgba(222,222,222,0.5)}:not(.sapMBtnDisabled)>.sapMBtnTransparent.sapMBtnActive,:not(.sapMBtnDisabled):hover>.sapMBtnTransparent.sapMBtnActive{background-color:#007cc0;border-color:#007cc0}.sapMIBar .sapMBtnInner{padding-top:1px;padding-bottom:1px;vertical-align:top}.sapMIBar-CTX .sapMBtnInner{border-color:transparent}.sapMIBar-CTX .sapMBtn:focus>.sapMBtnInner.sapMFocusable{outline-offset:-0.125rem}.sapMBar .sapMBtnInner,.sapMHeader-CTX .sapMBtnInner,.sapMFooter-CTX .sapMBtnInner,.sapMSubHeader-CTX .sapMBtnInner{background:transparent}.sapMIBar-CTX .sapMBtnContent{line-height:2.25rem}.sapMTB-Info-CTX .sapMBtnHoverable:not(.sapMBtnActive):hover,.sapMTB-Transparent-CTX .sapMBtnHoverable:not(.sapMBtnActive):hover{background-color:#eaeaea}.sapMBar-CTX :not(.sapMBtnDisabled)>.sapMBtnInner.sapMBtnActive{background-color:#007cc0}.sapMFooter-CTX .sapMBtn:hover>.sapMBtnHoverable:not(.sapMBtnActive){background-color:rgba(234,234,234,0.1);color:#ffffff;text-shadow:0 1px 0 rgba(0,0,0,0.5)}.sapMFooter-CTX .sapMBtn:hover>.sapMBtnHoverable.sapMBtnAccept:not(.sapMBtnActive){background-color:#005f28;border-color:#005f28}.sapMFooter-CTX .sapMBtn:hover>.sapMBtnHoverable.sapMBtnReject:not(.sapMBtnActive){background-color:#b51616;border-color:#b51616}.sapMFooter-CTX .sapMBtn:hover>.sapMBtnHoverable.sapMBtnEmphasized:not(.sapMBtnActive){background-color:#008bc7;border-color:#008bc7}.sapMFooter-CTX .sapMBtnInner{border-color:transparent}.sap-desktop .sapMFooter-CTX .sapMBtnInner{border-color:transparent}.sapMIBar-CTX .sapMBtnInner{color:#666666;text-shadow:0 1px 0 none}.sapMIBar-CTX .sapMBtnTransparent{color:#00679e;text-shadow:none}.sapMFooter-CTX div.sapMBtnInner,.sapMIBar-CTX.sapMFooter-CTX .sapMBtnIcon{color:#ffffff;text-shadow:0 1px 0 rgba(0,0,0,0.5)}.sapMIBar-CTX .sapMBtnDisabled,.sapMIBar-CTX .sapMBtnDisabled .sapMBtnContent>.sapMBtnIcon{color:#333333;text-shadow:none}.sapMIBar-CTX.sapMFooter-CTX :not(.sapMBtnDisabled)>.sapMBtnActive{background-color:#007cc0;color:#ffffff;text-shadow:none}.sapMActionSelectPicker .sapMBtn{display:block;width:100%;padding:0;border-top-width:0;border-bottom-width:0.0625rem;text-shadow:0 1px 0 #000000}.sapMActionSelectPicker .sapMBtnDisabled{opacity:1}.sapMActionSelectPicker .sapMBtnDisabled .sapMBtnContent{opacity:0.5}.sapMActionSelectPicker .sapMBtnInner{border-radius:0;border-top:0;border-left:0;border-right:0;border-bottom:1px solid rgba(100,114,123,0.96)}.sapMSltPickerStandalone .sapMBtn{height:2.5rem}.sapMSltPickerStandalone .sapMBtnInner>.sapMBtnContent{line-height:2.5rem}.sapMActionSelectPicker .sapMBtnDefault{color:#ffffff;background:rgba(54,62,67,0.96);border-color:rgba(100,114,123,0.96);text-shadow:none}.sap-desktop .sapMActionSelectPicker .sapMBtnDefault:not(.sapMBtnActive):hover{background:rgba(68,78,84,0.96)}.sap-desktop .sapMActionSelectPicker .sapMBtnDefault:focus{outline-color:#ffffff}.sapMTB>.sapMBtnInner.sapMFocusable:focus{outline-offset:-0.125rem}.sapMTB-Transparent-CTX .sapMBtnInner{background-image:none;background:transparent;border-color:transparent}.sapMLIBActive div.sapMBtnInner{color:#333333}.sapUiSizeCompact .sapMBtn{height:2.000rem;padding:0.1875rem 0}.sapUiSizeCompact .sapMBtnBack{min-width:4.000rem}.sapUiSizeCompact .sapMBtnInner{height:1.625rem;min-width:2.0rem;padding:0 0.4375rem;text-shadow:none}.sapUiSizeCompact .sapMBtnInner>img{height:1.500rem;width:1.500rem;margin-left:0.250rem;margin-right:0.250rem}.sapUiSizeCompact .sapMBtnIconLeft{margin-left:0.4375rem;margin-right:0.4375rem;top:0;left:0}.sapUiSizeCompact .sapMBtnBackIconLeft{margin-left:0.4375rem;margin-right:0.4375rem;top:0;left:2.000rem}.sapUiSizeCompact .sapMBtnIconRight{margin-left:0.4375rem;margin-right:0.4375rem;top:0;right:0}.sapUiSizeCompact .sapMBtnPaddingLeft{padding-left:0.4375rem}.sapUiSizeCompact .sapMBtnPaddingRight{padding-right:0.4375rem}.sapUiSizeCompact .sapMBar-CTX .sapMBtnInner{margin:0;border-color:transparent}.sapUiSizeCompact .sapMBtnContent{line-height:1.500rem}.sapUiSizeCompact .sapMBtnContentLeft{padding-right:1.500rem}.sapUiSizeCompact .sapMBtnContentRight{padding-left:1.500rem}.sapUiSizeCompact .sapMBtnBackContentRight{padding-left:3.500rem}.sapUiSizeCompact .sapMBtnIcon{line-height:1.500rem;width:1.000rem;font-size:1.000rem;max-height:1.500rem}.sapUiSizeCompact.sapMActionSelectPicker .sapMBtnInner{height:2rem;border-radius:0;border-top:0;border-left:0;border-right:0;border-bottom:1px solid rgba(100,114,123,0.96)}.sapUiSizeCompact.sapMActionSelectPicker .sapMBtnContent{line-height:2rem}.sapUiSizeCompact.sapMActionSelectPicker .sapMBtn{height:2rem;padding:0}.sapUiSizeCondensed .sapMBtn{height:1.375rem;padding:0}.sapUiSizeCondensed .sapMBtnBack{min-width:4.000rem}.sapUiSizeCondensed .sapMBtnInner{height:1.375rem;min-width:2.0rem;padding:0 0.4375rem;text-shadow:none}.sapUiSizeCondensed .sapMBtnInner>img{height:1.250rem;width:1.250rem;margin-left:0.250rem;margin-right:0.250rem}.sapUiSizeCondensed .sapMBtnIconLeft{margin-left:0.4375rem;margin-right:0.4375rem;top:0;left:0}.sapUiSizeCondensed .sapMBtnBackIconLeft{margin-left:0.4375rem;margin-right:0.4375rem;top:0;left:2.000rem}.sapUiSizeCondensed .sapMBtnIconRight{margin-left:0.4375rem;margin-right:0.4375rem;top:0;right:0}.sapUiSizeCondensed .sapMBtnPaddingLeft{padding-left:0.4375rem}.sapUiSizeCondensed .sapMBtnPaddingRight{padding-right:0.4375rem}.sapUiSizeCondensed .sapMBar-CTX .sapMBtnInner{margin:0;border-color:transparent}.sapUiSizeCondensed .sapMBtnContent{line-height:1.250rem}.sapUiSizeCondensed .sapMBtnContentLeft{padding-right:1.500rem}.sapUiSizeCondensed .sapMBtnContentRight{padding-left:1.500rem}.sapUiSizeCondensed .sapMBtnBackContentRight{padding-left:3.500rem}.sapUiSizeCondensed .sapMBtnIcon{line-height:1.250rem;width:1.000rem;font-size:1.000rem;max-height:1.250rem}.sapMCrslControls{padding-top:0.625rem;text-align:center}.sapMCrslControls a{padding:0.3125rem;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;-webkit-user-drag:none;-moz-user-drag:-moz-none;user-drag:none}.sapMCrslBulleted.sapMCrslBottomOffset{position:absolute;padding-top:0;bottom:0.3125rem;width:100%;z-index:10}.sapMCrslBulleted:not(.sapMCrslBottomOffset){padding-bottom:0.1875rem;padding-top:0.125rem}.sapMCrslBulleted>span{text-indent:2rem;line-height:0;text-decoration:none;overflow:hidden;display:inline-block;padding:0.25rem;width:0;height:0;margin:0 0.25rem;color:#9a9a9a;background-color:#9a9a9a;-webkit-transition:background-color 0.1s ease-in;-moz-transition:background-color 0.1s ease-in;transition:background-color 0.1s ease-in;-webkit-box-shadow:0 0 0.0625rem 0.0625rem #ffffff;-moz-box-shadow:0 0 0.0625rem 0.0625rem #ffffff;box-shadow:0 0 0.0625rem 0.0625rem #ffffff;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%}.sapMCrslBulleted>span:hover,.sapMCrslBulleted>span:focus{cursor:default;outline:none}.sapMCrslBulleted>span.sapMCrslActive{color:#007cc0;background-color:#007cc0}.sapMCrslHud{padding-top:0}.sapMCrslHud a{z-index:2;opacity:0;position:absolute;top:calc(46.125%);width:3rem;height:3rem;margin:-1.5625px 0 0 0;padding:0;text-decoration:none;overflow:hidden;background-color:#ffffff;color:#ffffff;-webkit-transition:opacity 0.1s ease-in;-moz-transition:opacity 0.1s ease-in;transition:opacity 0.1s ease-in;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;-webkit-box-shadow:rgba(0,0,0,0.3) 0 0.0625rem 0.25rem;-moz-box-shadow:rgba(0,0,0,0.3) 0 0.0625rem 0.25rem;-ms-box-shadow:rgba(0,0,0,0.3) 0 0.0625rem 0.25rem;box-shadow:0 0.0625rem 0.25rem rgba(0,0,0,0.3)}.sapMCrsl{box-sizing:border-box;border:1px solid transparent}.sapMCrsl:focus{outline:none;border:1px dotted #005483}.sapMCrsl:hover .sapMCrslHud a{opacity:0.3}.sapMCrsl .sapMCrslHud a:hover,.sapMCrsl .sapMCrslHud a:focus{opacity:1}.sapMCrsl .sapMCrslHud.sapMCrslLeftmost a.sapMCrslPrev,.sapMCrsl .sapMCrslHud.sapMCrslRightmost a.sapMCrslNext{opacity:0;display:none}.sapMCrslHud .sapMCrslHudInner{-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;margin:0.25rem;background-color:#007cc0;color:#ffffff;font-family:"SAP-icons";font-size:1.375rem;font-weight:bold;text-indent:0;text-align:center;display:table;z-index:9;width:2.5rem;height:2.5rem}.sapMCrslHud .sapMCrslPrev{left:0.625rem}.sapMCrslHud .sapMCrslNext{right:0.625rem}.sapMCrslHud .sapMCrslPrev:focus,.sapMCrslHud .sapMCrslNext:focus{outline:1px dotted #005483}html[dir='rtl'] .sapMCrslPrev>.sapMCrslHudInner>.sapUiIcon,.sapMCrslNext>.sapMCrslHudInner>.sapUiIcon{left:auto;right:0;text-indent:0.0625rem}html[dir='rtl'] .sapMCrslNext>.sapMCrslHudInner>.sapUiIcon,.sapMCrslPrev>.sapMCrslHudInner>.sapUiIcon{right:auto;left:0;text-indent:-0.0625rem}.sapMCrslHudInner>.sapUiIcon{display:table-cell;vertical-align:middle;cursor:inherit!important}.sapMCrslCaption{margin:0;padding:0.625rem;height:auto;text-align:center}.sapMCrslFluid .sapMCrslItem{margin-right:1.25rem;width:100%;height:100%;overflow:hidden}.sapMCrslItem.sapMCrslBottomOffset{padding-bottom:1.6875rem}.sapMCb{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;height:3rem;line-height:3rem;vertical-align:top;text-align:left;padding:0 0 0 3rem}.sapMCb>label{vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.sapMCbBg{background-color:#ffffff;position:absolute;left:0.8125rem;top:0.8125rem;height:1.125rem;width:1.125rem;line-height:1.125rem;padding:0;text-align:center;border:solid 0.125rem #c0c0c0;border-top-left-radius:0.125rem;border-top-right-radius:0.125rem;border-bottom-right-radius:0.125rem;border-bottom-left-radius:0.125rem;-webkit-focus-ring-color:none}.sapUiForm .sapMCbBg{left:0.0625rem}.sapMCbBg.sapMCbMarkChecked:before{content:"\e05b";font-family:"SAP-icons";color:#007cc0}.sapMCbBg>input{position:absolute;left:0;-webkit-appearance:none;visibility:hidden}.sapMCbBg:focus,.sapMCbBg:active,.sap-desktop .sapMCbBg.sapMCbBgDis:focus{-webkit-tap-highlight-color:rgba(255,255,255,0);outline:none}.sapMCb:focus{outline:none}.sapMCb:not(.sapMCbBgDis):focus>.sapMCbBg,.sapMCb:not(.sapMCbBgDis)>.sapMCbBg:focus{outline-color:#005483;outline-width:1px;outline-style:dotted}.sapMLIBActive .sapMCbBg,.sapMLIBActive .sapMCbBg.sapMCbMarkChecked,.sapMLIBActive .sapMCbBg.sapMCbBgDis,.sapMLIBActive .sapMCbBg.sapMCbBgDis.sapMCbMarkChecked{border-color:#ffffff}.sapMLIBActive .sapMCbBg{background-color:#007cc0}.sapMCbHoverable:hover{border-color:#007cc0}.sapMCbBgDis{opacity:0.5}.sapMLIBActive .sapMActive .sapMCbBg.sapMCbActiveStateOff.sapMCbMarkChecked:before,.sapMLIBActive .sapMCbBg:active.sapMCbActiveStateOff.sapMCbMarkChecked:before,.sapMLIBActive .sapMCbBg.sapMCbMarkChecked:before,.sapMLIBActive .sapMActive .sapMCbBg.sapMCbMarkChecked:before,.sapMLIBActive .sapMCbBg:active.sapMCbMarkChecked:before,.sapMLIBActive .sapMCbBg.sapMCbBgDis.sapMCbMarkChecked:before{color:#ffffff}.sapMActive .sapMCbBg.sapMCbActiveStateOff.sapMCbMarkChecked:before,.sapMCbBg:active.sapMCbActiveStateOff.sapMCbMarkChecked:before,.sapMActive .sapMCbBg.sapMCbMarkChecked:before,.sapMCbBg:active.sapMCbMarkChecked:before{color:#007cc0}.sapMCbBg.sapMCbBgDis.sapMCbMarkChecked:before{color:rgba(0,124,192,0.25)}.sapMLIBSelectM>.sapMCb{width:3rem}.sapMCbRo .sapMCbBg{background-color:#f2f2f2;border-color:#c0c0c0}.sapMCbRo>.sapMCbBg.sapMCbMarkChecked:before{color:#666666}.sapUiSizeCompact .sapMCb{height:2rem;line-height:2rem;padding-left:2rem}.sapUiSizeCompact .sapMCbBg{left:0.5rem;top:0.5rem;height:0.75rem;width:0.75rem;line-height:0.75rem;font-size:0.625rem;border-radius:0}.sapUiSizeCompact .sapMLIBSelectM>.sapMCb{width:2rem}.sapUiSizeCondensed .sapMCb{height:1.5rem;line-height:1.5rem;padding-left:1.5rem}.sapUiSizeCondensed .sapUiTableCell>.sapMCb{margin-left:0.25rem;padding-left:1.75rem}.sapUiSizeCondensed .sapMCbBg{left:0.25rem;top:0.25rem;height:0.75rem;width:0.75rem;line-height:0.75rem;font-size:0.625rem;border-radius:0}.sap-desktop .sapMListTblRow:focus{outline:1px dotted #005483;outline-offset:-1px}.sapMListTblSubRow{background:rgba(255,255,255,0.8)}.sapMLIBSelected.sapMLIB + .sapMListTblSubRow{background:#e6f2f9}.sapMLIBActive.sapMLIB + .sapMListTblSubRow{background:#007cc0}.sapMListTblSubCnt{padding:.5rem 1rem;box-sizing:border-box}.sapMListTblSubCntRow{padding-bottom:0}.sapMListTblSubCntSpr{font-size:0.875rem}.sapMListTblSubCntRow + .sapMListTblSubCntRow{margin-top:.5rem}.sapMListTblSubCntValBlock{margin-top:.25rem;display:block}.sapMListTblSubCntValInline{display:inline-block}.sapMListTblSubCntRow>.sapMListTblSubCntSpr,.sapMListTblSubCntRow>.sapMListTblSubCntHdr .sapMText,.sapMListTblSubCntRow>.sapMListTblSubCntHdr .sapMLabel{color:#666666;padding-top:0}.sapMListTblSubCntRow>.sapMListTblSubCntVal .sapMText,.sapMListTblSubCntRow>.sapMListTblSubCntVal .sapMLabel{color:#000000;padding-top:0}.sapMListTblSubCntSpr{padding-right:.5rem}.sapMLIBShowSeparator>td{border-top:1px solid #e5e5e5}.sapMListShowSeparatorsNone .sapMLIBShowSeparator>td,.sapMListShowSeparatorsInner .sapMLIBShowSeparator:first-child>td{border-color:transparent}.sapMListShowSeparatorsAll .sapMListTblSubRow:last-child>td,.sapMListShowSeparatorsAll .sapMLIBShowSeparator:last-child>td{border-bottom:1px solid #e5e5e5}.sapMListShowSeparatorsAll .sapMLIBShowSeparator:last-child>td,.sapMListShowSeparatorsAll .sapMListTblSubRow:last-child>td{border-bottom:1px solid #cdcdcd}.sapMListShowSeparatorsAll .sapMLIBShowSeparator:first-child>td,.sapMListShowSeparatorsInner .sapMLIBShowSeparator:first-child>td{border-top-color:transparent}.sapMListShowSeparatorsInner .sapMLIBShowSeparator:last-child>td,.sapMListShowSeparatorsInner .sapMListTblSubRow:last-child>td{border-bottom-color:transparent}.sapMListShowSeparatorsNone .sapMListTblFooter>td{border-top-width:2px}.sapUiSizeCompact .sapMListTblSubCnt{padding-top:.25rem;padding-bottom:.25rem}.sapUiSizeCompact .sapMListModeMultiSelect .sapMListTblSubCnt,.sapUiSizeCompact .sapMListModeSingleSelectLeft .sapMListTblSubCnt{padding-left:2.5rem}.sapUiSizeCompact .sapMListTblRowTop>.sapMListTblCell>*{margin-top:.5rem;margin-bottom:.5rem}:not(.sapMComboBoxState)>.sapMComboBoxArrow{background:#ffffff}.sapMComboBoxBaseArrow::before,.sapMComboBoxBaseBar::before{font-family:"SAP-icons";speak:none;content:"\e1ef"}.sapMComboBoxBaseArrow,.sapMComboBoxBaseBar::before{position:absolute;text-align:center;color:#666666}input.sapMComboBoxBaseInputInner:not(.sapMComboBoxBaseInputInnerReadonly){padding-right:3rem}.sapMComboBoxBasePressed .sapMComboBoxBaseInputInner:not(.sapMInputBaseStateInner){border-color:#007cc0}.sapMComboBoxBaseArrow{width:2.5rem;height:2.375rem;line-height:2.375rem;top:0.3125rem;right:0.0625rem}.sap-desktop .sapMComboBoxBaseArrow:not(.sapMComboBoxBasePressed):hover{background:#f0f0f0}.sapMComboBoxBasePressed .sapMComboBoxBaseArrow,.sap-desktop .sapMComboBoxBasePressed .sapMComboBoxBaseArrow:hover{background:#007cc0}.sapMComboBoxBasePressed .sapMComboBoxBaseArrow::before{color:#ffffff}.sapMComboBoxBaseList{border:0.0625rem solid #c0c0c0}.sapMComboBoxBaseItemDisabled{opacity:0.5;pointer-events:none}.sapMComboBoxBasePicker .sapMSLITitleOnly{font-size:0.875rem}li.sapMComboBoxBaseItem{height:2.5rem;border:none}.sapMComboBoxBaseItem .sapMCb{height:2.5rem;line-height:2.5rem}.sapMComboBoxBaseItem .sapMCbBg{top:0;bottom:0;margin:auto}li.sapMComboBoxBaseItemVisible{display:block}li.sapMComboBoxBaseItemNotVisible{display:none}.sap-desktop li.sapMComboBoxBaseItem:focus{outline:none}div.sapMComboBoxBasePicker{-webkit-box-shadow:0 0.0625rem 0.1875rem rgba(0,0,0,0.5);box-shadow:0 0.0625rem 0.1875rem rgba(0,0,0,0.5);border:none;min-width:0}.sapMComboBoxBasePicker .sapMPopoverArr{display:none}.sapMComboBoxBaseBar{-webkit-box-shadow:none;box-shadow:none}div.sapMComboBoxBasePicker .sapMDialogScrollCont{padding:0}.sapMComboBoxBaseBar::before{top:0;right:0;line-height:3rem;width:3.5rem;color:#ffffff;background:#007cc0}.sapMComboBoxBasePicker .sapMComboBoxBaseBar{background:#ffffff;border:0.0625rem solid #007cc0}.sapMComboBoxBasePicker input{padding-right:3.5rem;vertical-align:top}.sapUiSizeCompact input.sapMComboBoxBaseInputInner:not(.sapMComboBoxBaseInputInnerReadonly){padding-right:2.5rem}.sapUiSizeCompact .sapMComboBoxBaseArrow{width:2rem;height:1.5rem;line-height:1.5rem;top:0.25rem}.sapUiSizeCondensed .sapMComboBoxBaseArrow{top:0;right:0}.sapUiSizeCompact li.sapMComboBoxBaseItem{height:2rem}.sapMCLI.sapMLIB{padding:0}.sapMCLI .sapMLIBSelectSL,.sapMCLI .sapMLIBSelectM{margin-left:0}.sapMCLI .sapMLIBImgNav,.sapMCLI .sapMLIBSelectS,.sapMCLI .sapMLIBSelectD{margin-right:0}.sapMCustomTile:focus{outline:1px dotted #005483}.sapMDP{position:relative}.sapMDTICustom .dw{padding:0}.sapMDTICustom .dwo{position:fixed;top:0;left:0;right:0;bottom:0;width:auto;height:auto}.sapMDTICustom .dwwr{padding:0;min-width:18rem;position:relative;background:#ffffff;font-size:0}.sapMDTICustom .dwv{height:3rem;line-height:3rem;font-size:1rem;color:#666666;font-family:Arial,Helvetica,sans-serif;text-shadow:0 0.063rem 0 rgba(255,255,255,0.5);-webkit-box-shadow:inset 0 -0.063rem 0 0 #dddddd;-moz-box-shadow:inset 0 -0.063rem 0 0 #dddddd;-ms-box-shadow:inset 0 -0.07rem 0 0 #dddddd;box-shadow:inset 0 -0.063rem 0 0 #dddddd;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#f7f7f7),color-stop(33%,#f2f2f2),color-stop(75%,#f2f2f2),color-stop(100%,#ededed));background:-webkit-linear-gradient(top,#f7f7f7 0,#f2f2f2 33%,#f2f2f2 75%,#ededed 100%);background:-moz-linear-gradient(top,#f7f7f7 0,#f2f2f2 33%,#f2f2f2 75%,#ededed 100%);background:-ms-linear-gradient(top,#f7f7f7 0,#f2f2f2 33%,#f2f2f2 75%,#ededed 100%);background:linear-gradient(top,#f7f7f7 0,#f2f2f2 33%,#f2f2f2 75%,#ededed 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#f7f7f7,endColorstr=#ededed,GradientType=0);padding:0 1rem;border-bottom-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sapMDTICustom .dwbg{-webkit-box-shadow:rgba(154,154,154,0.6) 0.063rem 0 0 0,rgba(154,154,154,0.6) -0.063rem 0 0 0,rgba(154,154,154,0.6) 0 0.063rem 0 0,rgba(154,154,154,0.6) 0 -0.063rem 0 0;-moz-box-shadow:rgba(154,154,154,0.6) 0.063rem 0 0 0,rgba(154,154,154,0.6) -0.063rem 0 0 0,rgba(154,154,154,0.6) 0 0.063rem 0 0,rgba(154,154,154,0.6) 0 -0.063rem 0 0;-ms-box-shadow:rgba(154,154,154,0.6) 0.07rem 0 0 0,rgba(154,154,154,0.6) -0.07rem 0 0 0,rgba(154,154,154,0.6) 0 0.07rem 0 0,rgba(154,154,154,0.6) 0 -0.07rem 0 0;box-shadow:rgba(154,154,154,0.6) 0.063rem 0 0 0,rgba(154,154,154,0.6) -0.063rem 0 0 0,rgba(154,154,154,0.6) 0 0.063rem 0 0,rgba(154,154,154,0.6) 0 -0.063rem 0 0;border-radius:.125rem}.sapMDTICustom .dwbg .dwc .dwwl,.sapMDTICustom .dwbg .dwpm .dwwl{border:0;border-radius:0;background:none}.sapMDTICustom .dwwo{background:none}.sapMDTICustom .dwbg .dwwb,.sapMDTICustom .dwbg .dwwbp,.sapMDTICustom .dwbg .dwwbm{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;box-shadow:none}.sapMDTICustom .dwbg .dwwbp{background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(255,255,255,0)),color-stop(66%,#ffffff));background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#ffffff 66%);background:-moz-linear-gradient(top,rgba(255,255,255,0) 0,#ffffff 66%);background:-ms-linear-gradient(top,rgba(255,255,255,0) 0,#ffffff 66%);background:linear-gradient(top,rgba(255,255,255,0) 0,#ffffff 66%);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',EndColorStr='#ffffff');top:auto;bottom:0}.sapMDTICustom .dwbg .dwwbm{background:-webkit-gradient(linear,left top,left bottom,color-stop(33%,#ffffff),color-stop(100%,rgba(255,255,255,0)));background:-moz-linear-gradient(top,#ffffff 33%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(top,#ffffff 33%,rgba(255,255,255,0) 100%);background:linear-gradient(top,#ffffff 33%,rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',EndColorStr='#ffffff');top:0;bottom:auto}.sapMDTICustom .dwwb{right:0;border-radius:0;margin-left:auto;margin-right:auto}.sap-desktop .sapMDTICustom .dwwb:hover,.sapMDTICustom .dwbg .dwwl .dwb-a{background:#ffffff}.sapMDTICustom .dwa .dwwb{opacity:1}.sapMDTICustom .dwwbp>span:before{content:"\e1e2"}.sapMDTICustom .dwwbm>span:before{content:"\e1e1"}.sapMDTICustom .dwwb>span:before{font-size:1.375rem;color:#666666;font-family:'SAP-icons';font-weight:normal;text-shadow:none;opacity:0;-webkit-transition-property:opacity,background;transition-property:opacity,background;-webkit-transition-duration:0.5s;transition-duration:0.5s}html[data-sap-ui-browser^="ie9"] .sapMDTICustom .dwwb>span:before{color:#666666;opacity:.40}.sap-desktop .sapMDTICustom .dwwb:hover>span:before,.sapMDTICustom .dwb-a>span:before{color:#007cc0;opacity:.75;-webkit-transition-property:opacity,background;transition-property:opacity,background;-webkit-transition-duration:0.5s;transition-duration:0.5s}.sapMDTICustom .dwwb>span{font-size:0;color:transparent}.sapMDTICustom .dwhl{padding:0}.sapMDTICustom .dwwc{padding:0 .750rem;background:none}.sapMDTICustom .dwwc>table{margin:0 auto}.sapMDTICustom .dwwc td>.dwwl{margin:0 .375rem 0 0}.sapMDTICustom .dwwc td .dww{background:none;padding:1px 0;margin:0}.sapMDTICustom .dwwc td .dww:before{content:"";background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffffff),color-stop(20%,rgba(255,255,255,0)));background:-webkit-linear-gradient(top,#ffffff 20%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(top,#ffffff 20%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(top,#ffffff 20%,rgba(255,255,255,0) 100%);background:linear-gradient(top,#ffffff 20%,rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',EndColorStr='#ffffff');position:absolute;left:0;right:0;top:0;bottom:80%;z-index:3}.sapMDTICustom .dwwc td .dww:after{content:"";background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(255,255,255,0)),color-stop(80%,#ffffff));background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#ffffff 80%);background:-moz-linear-gradient(top,rgba(255,255,255,0) 0,#ffffff 80%);background:-ms-linear-gradient(top,rgba(255,255,255,0) 0,#ffffff 80%);background:linear-gradient(top,rgba(255,255,255,0) 0,#ffffff 80%);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',EndColorStr='#ffffff');position:absolute;left:0;right:0;top:80%;bottom:0;z-index:3}.sapMDTICustom .dwwc td:last-child>.dwwl{margin:0}.sapMDTICustom .dwwc td .dwwb ~ .dww:before{display:none}.sapMDTICustom .dwwc td .dwwb ~ .dww:after{display:none}.sapMDTICustom .dwwc td:last-child>.dwwl{margin:0}.sapMDTICustom .dw-i{padding:0 .5rem 0 .375rem;margin:0 0 0 .125rem}.sapMDTICustom .dw-i,.sapMDTICustom .dw-i>span{overflow:hidden;text-overflow:ellipsis}.sapMDTICustom .dw-sel .dw-i{color:#000000;border-radius:0.125rem;box-shadow:0 0.063rem 0.188rem rgba(0,0,0,0.15),inset 0.063rem 0 0 0 #dddddd,inset -0.063rem 0 0 0 #dddddd,inset 0 0.063rem 0 0 #dddddd,inset 0 -0.063rem 0 0 #dddddd;background:#ffffff}.sapMDTICustom .dw-li{font-size:1rem;color:#666666;font-family:Arial,Helvetica,sans-serif;text-shadow:none;padding:0;margin:0}.sapMDTICustom .dwwol{display:none}.sapMDTICustom .dwc{margin:0;overflow:hidden;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(0,124,192,0)),color-stop(25%,rgba(0,124,192,0)),color-stop(50%,rgba(0,124,192,0.075)),color-stop(75%,rgba(0,124,192,0)),color-stop(100%,rgba(0,124,192,0)));background:-webkit-linear-gradient(top,rgba(0,124,192,0) 0,rgba(0,124,192,0) 25%,rgba(0,124,192,0.075) 50%,rgba(0,124,192,0) 75%,rgba(0,124,192,0) 100%);background:-moz-linear-gradient(top,rgba(0,124,192,0) 0,rgba(0,124,192,0) 25%,rgba(0,124,192,0.075) 50%,rgba(0,124,192,0) 75%,rgba(0,124,192,0) 100%);background:-ms-linear-gradient(top,rgba(0,124,192,0) 0,rgba(0,124,192,0) 25%,rgba(0,124,192,0.075) 50%,rgba(0,124,192,0) 75%,rgba(0,124,192,0) 100%);background:linear-gradient(top,rgba(0,124,192,0) 0,rgba(0,124,192,0) 25%,rgba(0,124,192,0.075) 50%,rgba(0,124,192,0) 75%,rgba(0,124,192,0) 100%)}.sapMDTICustom .dwbc{margin:0;padding:0;height:3rem;background-color:rgba(54,62,67,0.96);background-image:none}.sap-desktop .sapMDTICustom .dwbc{background-color:rgba(54,62,67,0.96)}.sapMDTICustom .dwbw{border:0;height:3rem;margin:0;padding:0.25rem}.sapMDTICustom .dwbg .dwb{background:none;-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;box-shadow:none;color:#ffffff;font-family:Arial,Helvetica,sans-serif;font-size:.875rem;line-height:3rem;border:none;border-radius:0;height:3rem;margin:0;padding:0 1.063rem 0 1rem;font-weight:normal;text-shadow:0 0.063rem 0 rgba(0,0,0,0.5);cursor:hand;cursor:pointer}.sap-desktop .sapMDTICustom .dwbg .dwbw:hover .dwb,.sapMDTICustom .dwbg .dwbw .dwb-a{text-shadow:none;background:#007cc0}.sapMDTICustom .dwbg .dwbw{border-radius:0}.sapMDTICustom.dw-bubble .dw-arr{-webkit-box-shadow:inset #9a9a9a 0.063rem 0 0 0,inset #9a9a9a 0 0.063rem 0 0,inset #9a9a9a -0.063rem 0 0 0,inset #9a9a9a -0.063rem 0 0 0;-moz-box-shadow:inset #9a9a9a 0.063rem 0 0 0,inset #9a9a9a 0 0.063rem 0 0,inset #9a9a9a -0.063rem 0 0 0,inset #9a9a9a -0.063rem 0 0 0;-ms-box-shadow:inset #9a9a9a 0.063rem 0 0 0,inset #9a9a9a 0 0.063rem 0 0,inset #9a9a9a -0.063rem 0 0 0,inset #9a9a9a -0.063rem 0 0 0;box-shadow:inset #9a9a9a 0.063rem 0 0 0,inset #9a9a9a 0 0.063rem 0 0,inset #9a9a9a -0.063rem 0 0 0,inset #9a9a9a -0.063rem 0 0 0;border:none;height:1.5rem;width:1.5rem;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);margin:0;margin-left:-0.73rem}.sapMDTICustom .dw-bubble-bottom .dw-arrw{top:-2.25rem}.sapMDTICustom.sapMDTICustomHdr .dw-bubble-bottom .dw-arr{background-color:#f7f7f7;top:1.5rem}.sapMDTICustom .dw-bubble-bottom .dw-arr{background-color:#ffffff;top:1.5rem}.sapMDTICustom .dw-bubble-top .dw-arr{background-color:rgba(54,62,67,0.96);top:-0.75rem}.sap-desktop .sapMDTICustom .dw-bubble-top .dw-arr{background-color:rgba(54,62,67,0.96)}.sapMDTICustom.dw-bubble .dw-persp{width:0}.sapMDTICustom.dw-bubble .dwo{display:none}.sap-desktop .sapMDTICustom .dwww:focus{outline:none}.sap-desktop .sapMDTICustom .dwww:focus .dw-sel>.dw-i{outline:none;position:relative}.sap-desktop .sapMDTICustom .dwww:focus .dw-sel>.dw-i:before{content:" ";-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;position:absolute;left:0;top:0;border:1px dotted #005483}.sap-desktop .sapMDTICustom .dwbw a:focus{outline:1px dotted #ffffff}.sapMDTICustom.dw-bubble .dw{margin:1.125rem 0 0 0;-webkit-box-shadow:rgba(0,0,0,0.14902) 0 0 1.875rem 0.125rem;-moz-box-shadow:rgba(0,0,0,0.14902) 0 0 1.875rem 0.125rem;-ms-box-shadow:rgba(0,0,0,0.14902) 0 0 1.875rem 0.125rem;box-shadow:rgba(0,0,0,0.14902) 0 0 1.875rem 0.125rem;border:0.063rem solid rgba(154,154,154,0.6)}html[data-sap-ui-browser^="ie"] .sapMCustomSlt.dw-bubble .dw{border:0.07rem solid rgba(154,154,154,0.6)}.sapMDialogPhone{opacity:1;-webkit-transform:translate3d(0px,0px,0px);-moz-transform:translate3d(0px,0px,0px);transform:translate3d(0px,0px,0px);-webkit-transition-property:-webkit-transform;-moz-transition-property:-webkit-transform;transition-property:transform}.sapMDialog{border-radius:2px;border:1px rgba(154,154,154,0.6) solid;-webkit-box-shadow:0 0 30px 2px rgba(0,0,0,0.15);-moz-box-shadow:0 0 30px 2px rgba(0,0,0,0.15);box-shadow:0 0 30px 2px rgba(0,0,0,0.15)}.sapMDialog.sapMMessageDialog{font-size:0.875rem}.sapMDialogSection{background-color:#ffffff}.sapMDialog>header.sapMDialogTitle,.sapMDialog>header.sapMDialogSubHeader{font-size:1rem}.sapMDialogIcon ~ .sapMDialogTitle{display:inline}.sapMDialog .sapMIBar.sapMPageHeader::before{border-top:none}.sapMMessageDialog.sapMPopup-CTX>header.sapMDialogTitle{background-color:#ffffff;background-image:none;filter:none}.sapMDialog>header.sapMDialogTitle>.sapMBarMiddle>.sapMBarPH>.sapMTitle{color:#666666;vertical-align:middle}.sapMDialog>header.sapMDialogTitle>.sapMBarMiddle>.sapMBarPH>.sapMImg{width:2.25rem;height:2.25rem;vertical-align:middle;margin-right:0.625rem}.sapMDialog>header.sapMDialogTitle>.sapMBarMiddle>.sapMBarPH>.sapUiIcon{vertical-align:middle;height:3rem;line-height:3rem;margin-right:0.5rem;font-size:1.25rem;color:#666666}.sapMTB.sapMTBNoBorders{border-top:none;border-bottom:none}.sapMDialog>footer.sapMDialogActions{background-color:rgba(54,62,67,0.96);border-top:1px rgba(229,229,229,0.2) solid}.sap-desktop .sapMDialog>footer.sapMDialogActions{background-color:rgba(54,62,67,0.96)}.sapMDialog>footer.sapMDialogActions>.sapMDialogAction{box-sizing:border-box;width:50%;padding:0 0.25rem}.sapMDialog>footer.sapMDialogActions>.sapMDialogAction:only-child{width:100%}.sapMDialog>footer.sapMDialogActions>.sapMDialogAction>button.sapMDialogBtn{width:100%;vertical-align:top;border:none}.sapMDialogWarning>header.sapMDialogTitle>.sapMBarMiddle>.sapMBarPH>.sapUiIcon{color:#d14900}.sapMDialogError>header.sapMDialogTitle>.sapMBarMiddle>.sapMBarPH>.sapUiIcon{color:#cc1919}.sapMDialogSuccess>header.sapMDialogTitle>.sapMBarMiddle>.sapMBarPH>.sapUiIcon{color:#007833}.sapMDialogWarning>header.sapMDialogTitle>.sapMBarMiddle>.sapMBarPH>.sapMDialogTitle.sapMTitle{color:#d14900}.sapMDialogError>header.sapMDialogTitle>.sapMBarMiddle>.sapMBarPH>.sapMDialogTitle.sapMTitle{color:#cc1919}.sapMDialogSuccess>header.sapMDialogTitle>.sapMBarMiddle>.sapMBarPH>.sapMDialogTitle.sapMTitle{color:#007833}.sapUiSizeCompact.sapMDialog>header.sapMDialogTitle>.sapMBarMiddle>.sapMBarPH>.sapMImg{width:1.5rem;height:1.5rem}.sapUiSizeCompact.sapMDialog>header.sapMDialogTitle>.sapMBarMiddle>.sapMBarPH>.sapUiIcon{line-height:1.5rem;height:1.5rem;width:1rem;font-size:1rem}.sapUiSizeCompact .sapMDialogActions{width:auto;height:1.625rem;line-height:1.625rem;padding:0.1875rem 0.25rem}.sapUiSizeCompact.sapMDialog>header:first-of-type.sapMHeader-CTX,.sapUiSizeCompact.sapMDialog footer:last-of-type.sapMFooter-CTX{height:2.5rem}.sapUiSizeCompact.sapMDialog>header:first-of-type.sapMHeader-CTX .sapMBarLeft,.sapUiSizeCompact.sapMDialog footer:last-of-type.sapMFooter-CTX .sapMBarLeft,.sapUiSizeCompact.sapMDialog>header:first-of-type.sapMHeader-CTX .sapMBarRight,.sapUiSizeCompact.sapMDialog footer:last-of-type.sapMFooter-CTX .sapMBarRight,.sapUiSizeCompact.sapMDialog>header:first-of-type.sapMHeader-CTX .sapMBarPH,.sapUiSizeCompact.sapMDialog footer:last-of-type.sapMFooter-CTX .sapMBarPH{height:2.5rem;padding-top:0.25rem;padding-bottom:0.25rem}.sapMDLI{height:3rem}.sapMDLI>.sapMLIBContent{line-height:3rem}.sapMDLILabel{font-size:1.125rem;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;color:#333333}.sapMDLIValue{font-size:0.875rem;margin-left:1rem;text-align:right;color:#666666}html[dir=rtl] .sapMDLIValue{text-align:left}.sapMLIBActive .sapMDLILabel{color:#ffffff}.sapMLIBActive .sapMDLIValue{color:#ffffff}.sapUiSizeCompact .sapMDLI{height:2rem}.sapUiSizeCompact .sapMDLI>.sapMLIBContent{line-height:2rem}.sapUiSizeCompact .sapMDLILabel{font-size:0.875rem}.sapMMessagePage{background:rgba(255,255,255,0.7)}.sapMMessagePage .sapMText.sapMMessagePageMainText{color:#444444}.sapMMessagePage .sapMText.sapMMessagePageDescription{color:#707070}.sapMMessagePage>.sapMPage>section>.sapUiIcon::before{color:rgba(102,102,102,0.2)}.sapMFF{position:relative}.sapMFFHead{margin-left:0rem;white-space:nowrap;position:relative;overflow:hidden}.sapMFF .sapUiIcon,.sapMFF .sapMTB .sapMBtnIcon .sapUiIcon{font-size:1rem}.sap-phone .sapMFFHead{margin:1rem}.sap-desktop .sapMFFScrolling>.sapMFFHead{margin-right:2rem;margin-left:3rem}.sapMFFArrowScroll{font-size:1rem;line-height:1rem;position:absolute;top:0;color:#666666;padding:1rem 0.4rem}.sapMFFArrowScrollLeft{left:1rem}.sapMFFArrowScrollRight{right:0rem}.sapMFFNoScrolling>.sapMFFArrowScroll{visibility:hidden}.sap-desktop .sapMFFScrolling.sapMFFNoScrollBack>.sapMFFArrowScrollLeft,.sap-desktop .sapMFFScrolling.sapMFFNoScrollForward>.sapMFFArrowScrollRight{visibility:hidden}.sapMFFResetDiv{position:absolute;width:3rem;right:-3rem;top:0}.sapMFFResetSpacer{margin-right:3rem}.sapMFF .sapMTB-Info-CTX .sapMBtnIcon .sapUiIcon{color:#ffffff}.sapMFF .sapMTB-Info-CTX.sapMTB>.sapMBtn{margin:0}.sapMFF .sapMTB-Info-CTX.sapMTB{padding-right:0}.sapMFF .sapMTB-Info-CTX.sapMTB>.sapMBtn:hover{background-color:#2b68a3}.sap-desktop .sapMFFRefresh .sapMBtnTransparent>.sapMBtnIcon{color:#ffffff}.sapMTB-Info-CTX .sapMFFBtnHoverable .sapMBtnHoverable:not(.sapMBtnActive):hover,.sapMTB-Transparent-CTX .sapMBtnHoverable:not(.sapMBtnActive):hover{background-color:#457aae}.sapMFF .sapMTB-Info-CTX.sapMTB>.sapMBtn:active{background-color:#125698}.sapMFFCheckbar{cursor:pointer}.sapMFFDialog .sapMCbLabel{cursor:pointer}.sapMFF .sapMFFArrowScroll:hover{background-color:#eaeaea}.sapMFF .sapMFFArrowScroll:active{background-color:#007cc0;color:#ffffff}.sapMFFLITitle{font-size:1.125rem;color:#333333;overflow:hidden;text-overflow:ellipsis}.sapMFFLITitleWrap{word-wrap:break-word;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:1;-moz-box-flex:1;-ms-flex:auto;flex:auto;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;align-items:center}.sapMFFPop.sapMPopover{min-width:300px}.sapMFFPop .sapMCbLabel{cursor:pointer}.sapMFF .sapMFFLRemoveIcon{color:#666666;font-size:1rem;line-height:1rem;padding-top:1rem;padding-bottom:1rem;padding-right:1rem;padding-left:1rem}.sapMFF .sapMFFLVisibleRemoveIcon{visibility:visible}.sapMFF .sapMFFLHiddenRemoveIcon{visibility:hidden}.sapMFF .sapMFFLRemoveIcon:hover{background-color:#eaeaea}.sapMFF .sapMFFLRemoveIcon:active{background-color:#007cc0;color:#ffffff}.sapMFeedIn{background-color:#e5e5e5;padding:0.5rem 0.5rem 0.5rem 5rem;width:100%;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}@media (max-width:25rem){.sapMFeedInFigure{display:none}.sapMFeedIn{padding-left:0.5rem}}.sapMFeedInNoIcon{padding-left:0.5rem}.sapMFeedInFigure{position:absolute;height:4rem;width:4rem;margin:0 0 0 0.5rem;background-color:#f2f2f2;border:0.125rem;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border-style:solid;border-color:#ffffff;left:0;overflow:hidden}.sapMFeedInImage{color:#bfbfbf}.sapMFeedIn .sapMFeedInContainer{background-color:#ffffff;width:100%;min-height:4rem;max-height:20rem;position:relative}.sapMFeedIn>.sapMFeedInContainer>.sapMInputBase{width:100%;padding:0 4.0rem 0 0;margin:0;min-height:4rem}.sapMFeedIn>.sapMFeedInContainer>.sapMTextArea>.sapMInputBaseInner{border-bottom-style:hidden;border-top-style:hidden;border-left-style:hidden;border-right-style:hidden;font-family:Arial,Helvetica,sans-serif;font-size:0.875rem;font-style:normal;font-weight:normal;color:#000000;line-height:1.4;padding:0.5rem 0.05rem 0.5rem 0.5rem;min-height:4rem}.sapMFeedIn .sapMBtn{width:4.0rem;height:3.75rem;padding-top:0.25rem;padding-right:0.25rem;padding-bottom:0.25rem;position:absolute;right:-0.25rem;bottom:0.25rem}.sapMFeedIn .sapMBtnInner{width:3.5rem;height:3.5rem;background-color:#f7f7f7;padding:0}.sapMFeedIn .sapMBtnIcon{width:3.5rem;height:3.5rem}.sapMFeedIn .sapMBtnIcon{width:2.375rem;height:2.375rem;padding:0.5rem;font-size:1.5rem;line-height:2.375rem}.sapMFeedListItemTextText{font-size:0.875rem;color:#000000;word-wrap:break-word}.sapMFeedListItemImage:focus{outline-style:dotted;outline-color:#005483;outline-width:0.0625rem}.sap-tablet .sapMFeedListItem .sapMLnk:focus{outline-style:dotted;outline-color:#005483;outline-width:0.0625rem}.sapMFeedListShowSeparatorsAll .sapMFeedListItem{padding-left:0.0625rem}.sapMFeedListItemTitleDiv.sapMLIB{padding-left:0.9375rem}.sap-desktop .sapMFeedListItem .sapMLnk:focus{outline-color:#005483}.sapMFeedListItemImage,.sapMLIBActive .sapMFeedListItem span.sapMFeedListItemImage{color:#bfbfbf}.sapMFeedListItemTextName{font-size:0.875rem;color:#000000}.sapMFeedListItemFooter{font-size:0.75rem;color:#666666}.sapMFeedListItem .sapMFeedListItemTextText a,.sapMFeedListItem .sapMFeedListItemTextText span,.sapMFeedListItem .sapMFeedListItemTextName a{font-size:0.875rem;color:#00679e}.sapMFeedListItemText{color:#000000}.sapMLIBActive .sapMFeedListItemFigure.sapMFeedListItemIsDefaultIcon{background:#f2f2f2}.sapMFeedListItemFigure.sapMFeedListItemIsDefaultIcon{background:#f2f2f2}.sapMLIBActive .sapMFeedListItem a,.sapMLIBActive .sapMFeedListItem span,.sapMLIBActive .sapMFeedListItem p,.sapMLIBActive .sapMFeedListItemFooter,.sapMLIBActive .sapMFeedListItemText,.sapMLIBActive .sapMFeedListItemTimestamp,.sapMLIBActive .sapMFeedListItem .sapMFeedListItemTextText .sapMFeedListItemTextString,.sapMLIBActive .sapMFeedListItem:hover .sapMFeedListItemTextText>.sapMFeedListItemLinkExpandCollapse,.sapMLIBActive .sapMFeedListItemTextText,.sapMLIBActive .sapMFeedListItemTextText>.sapMLnk,.sapMLIBActive .sapMFeedListItemTextText>.sapMLnk.sapMLnkDsbl .sapMLIBActive .sapMFeedListItemTextName>.sapMLnk,.sapMLIBActive .sapMFeedListItemTextName>.sapMLnk.sapMLnkDsbl{color:#ffffff;opacity:1;text-decoration:none}.sapMFeedListItemTextText>.sapMLnk.sapMLnkDsbl,.sapMFeedListItemTextName>.sapMLnk.sapMLnkDsbl,.sap-desktop .sapMFeedListItemTextName>.sapMLnk.sapMLnkDsbl:hover{opacity:1;color:#000000}.sapMFeedListItemTextText>.sapMLnk{display:inline}.sapMFeedListItemTextText>.sapMLnk.sapMLnkDsbl{color:#000000}.sap-desktop .sapMFeedListItemTextText>.sapMLnk.sapMLnkDsbl:hover{color:#000000}.sapMFeedListShowSeparatorsAll.sapMLIB{border-bottom:0.063rem solid #e5e5e5}li.sapMLIB.sapMFeedListItemTitleDiv.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF{table-layout:fixed;width:100%}li.sapMLIB.sapMFeedListItemTitleDiv.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF article.sapMFeedListItem{display:table-cell;overflow:hidden}.sap-phone .sapMFeedListItemTextName a{line-height:normal;font-size:1rem}.sap-phone .sapMFeedListItemText,.sap-phone .sapMFeedListItemTimestamp{font-size:0.875rem}.sap-phone .sapMFeedListItemFooter{font-size:0.75rem}.sap-phone .sapMFeedListItemTimestamp{color:#666666;line-height:normal}.sapMFeedListItem .sapMFeedListItemTextText>.sapMFeedListItemLinkExpandCollapse{font-family:Arial,Helvetica,sans-serif;font-size:0.875rem;font-weight:normal;color:#666666}.sapMFeedListItem:hover .sapMFeedListItemTextText>.sapMFeedListItemLinkExpandCollapse{color:#00679e}.sapMFeedListItem .sapMFeedListItemTextText .sapMFeedListItemTextString{font-family:Arial,Helvetica,sans-serif;font-size:0.875rem;font-style:normal;font-weight:normal;color:#000000;line-height:1.4}.sapUiSizeCondensed .sapUiTableCell>.sapMFlexBox{box-sizing:border-box;padding:0 0.5rem;vertical-align:middle}.sapMList .sapMLIB.sapMGHLI{height:2rem;line-height:2rem;font-size:0.875rem;font-weight:normal;color:#004990;background:#f7f7f7;border-bottom:1px solid rgba(0,73,144,0.33)}.sap-desktop .sapMGHLI.sapMLIBTypeInactive:hover{background:#f7f7f7!important}.sapMGHLI.sapMLIBActive.sapMLIB,.sapMGHLI.sapMLIBActive.sapMLIB>td{color:#ffffff;background:#007cc0}.sapMGHLICell{padding:0 1rem}.sapMITBHead{display:block;margin:1rem 1.25rem 0 1.25rem;padding:1px 1px 0 1px;white-space:nowrap;font-size:0.75rem;position:relative;overflow:hidden}.sap-phone .sapMITBHead{display:inline-block;margin:1rem 0 0;vertical-align:top}.sap-tablet .sapMITBHead,html[data-sap-ui-os=win8] .sapMITBHead{display:inline-block;margin:1rem 1rem 0 0;vertical-align:top}.sapMITBScrollContainer{display:block;padding:1px 1px 0 1px;margin-right:1rem;margin-left:1rem}.sapMITBScrollContainer::-webkit-scrollbar{display:none}.sap-tablet .sapMITBScrollContainer,html[data-sap-ui-os=win8] .sapMITBScrollContainer{margin-right:1.25rem;margin-left:1.25rem}.sapMITBScrollContainer>div:nth-child(2){visibility:hidden}.sapMITBContentArrow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;height:1rem;border-bottom:0.25rem solid transparent}.sapMITBSelected>.sapMITBContentArrow{border-bottom-color:#009de0}.sapMITBSelected.sapMITBFilterNeutral>.sapMITBContentArrow{border-bottom-color:#007cc0}.sapMITBSelected.sapMITBFilterPositive>.sapMITBContentArrow{border-bottom-color:#007833}.sapMITBSelected.sapMITBFilterNegative>.sapMITBContentArrow{border-bottom-color:#cc1919}.sapMITBSelected.sapMITBFilterCritical>.sapMITBContentArrow{border-bottom-color:#d14900}.sapMITBNoText>.sapMITBFilter>.sapMITBContentArrow{margin:0 auto;width:3rem}.sapMITBNoText>.sapMITBFilter:first-child>.sapMITBContentArrow{margin:0 auto 0 0}.sapMITBVertical.sapMITBFilter>.sapMITBText + .sapMITBContentArrow{height:0.6875rem}.sapMITBTextOnly>.sapMITBFilter>.sapMITBText + .sapMITBContentArrow{height:0.75rem}.sapMITBAll>.sapMITBTab{height:3rem;margin-bottom:1rem}.sapMITBHorizontal.sapMITBFilter>.sapMITBContentArrow{width:3rem}html[dir='rtl'] .sapMITBContentArrow{z-index:1}.sapMITBContent{background-color:#ffffff;padding:1rem;position:relative}.sap-phone .sapMITBContent{padding:0}.sapMITBContainerContent{position:relative;padding:0;margin-top:0;border-top:0.0625rem solid #dddddd;-webkit-box-shadow:0 -1px 0 rgba(0,0,0,0.05);box-shadow:0 -1px 0 rgba(0,0,0,0.05);border-bottom:0.0625rem solid #dddddd}.sap-phone .sapMITBContainerContent,.sap-tablet .sapMITBContainerContent,html[data-sap-ui-os=win8] .sapMITBContainerContent{margin-top:0}.sapMITBContainerContent.sapMITBContentClosed{background-color:transparent;border-bottom:none}.sapMITBTab{width:5rem}.sapMITBVertical>.sapMITBTab{height:3rem}.sapMITBTextOnly .sapMITBTab{width:auto;height:1rem;margin-bottom:0.1875rem;text-align:left;padding:0}html[dir=rtl] .sapMITBTextOnly .sapMITBTab{text-align:right}.sap-phone .sapMITBTextOnly .sapMITBTab{padding-right:0.25rem}.sapMITBItem{display:inline-block;color:#333333;vertical-align:top;text-align:center;position:relative}.sap-desktop .sapMITBFilter{cursor:pointer}.sapMITBDisabled{opacity:0.5}.sapMITBFilter{margin:0 0.25rem}.sapMITBTextOnly .sapMITBFilter{padding:0;margin:0 1rem}.sapMITBTextOnly .sapMITBFilter:first-child{padding:0;margin:0 1rem 0 0.5rem}.sapMITBTextOnly .sapMITBFilter:last-child{padding:0;margin:0 0.5rem 0 1rem}.sap-phone .sapMITBFilter{margin:0 0.125rem}.sap-phone .sapMITBTextOnly .sapMITBFilter{padding:0 0.75rem;margin:0 0.125rem}.sap-phone .sapMITBTextOnly .sapMITBFilter:first-child{padding:0 0.75rem 0 0;margin:0 0.125rem 0 0}.sap-phone .sapMITBTextOnly .sapMITBFilter:last-child{padding:0 0 0 0.75rem;margin:0 0 0 0.125rem}.sapMITBNoText .sapMITBFilter>.sapMITBTab{width:3rem;height:3rem;padding:0 0.75rem}.sap-phone .sapMITBFilter:last-child,.sap-tablet .sapMITBFilter:last-child,html[data-sap-ui-os=win8] .sapMITBFilter:last-child,.sap-phone .sapMITBNoText .sapMITBFilter:last-child,.sap-tablet .sapMITBNoText .sapMITBFilter:last-child,html[data-sap-ui-os=win8] .sapMITBNoText .sapMITBFilter:last-child{padding-right:1rem}.sapMITBNoText .sapMITBFilter:first-child .sapMITBTab{padding-left:0}.sapMITBFilter:first-child{margin-left:0}.sapMITBHorizontal.sapMITBFilter:first-child>.sapMITBTab{padding-left:0}.sapMITBHorizontal.sapMITBFilter:first-child>.sapMITBText{padding-left:3.25rem}.sapMITBNoText .sapMITBFilter,.sap-phone .sapMITBNoText .sapMITBFilter{margin:0 0.25rem}.sapMITBNoText .sapMITBFilter:first-child,.sap-phone .sapMITBNoText .sapMITBFilter:first-child{margin-left:0}.sapMITBFilter .sapMITBText{position:relative;color:#666666;text-shadow:0 0.0625rem 0 rgba(255,255,255,0.5);padding:0.375rem 0 0;width:5rem;line-height:0.9375rem;overflow:hidden;text-overflow:ellipsis}.sapMITBHorizontal.sapMITBFilter .sapMITBText{padding:0.625rem 0 0}.sapMITBVertical{height:5rem}.sapMITBTextOnly>.sapMITBVertical{height:2.9375rem}.sap-phone .sapMITBTextOnly>.sapMITBVertical{height:2.9375rem}.sapMITBNoText>.sapMITBVertical{height:4rem}.sapMITBHorizontalWrapper{display:inline-block;width:auto;max-width:7.5rem;overflow:hidden;text-overflow:ellipsis;height:3rem;left:-1rem;vertical-align:top}.sapMITBHorizontal.sapMITBFilter>.sapMITBHorizontalWrapper>.sapMITBText{width:auto;text-align:left;max-width:7.5rem;display:block;padding-left:0.25rem;top:0.3125rem}.sapMITBHorizontal.sapMITBFilter{height:4rem}.sapMITBHorizontal.sapMITBFilter>.sapMITBHorizontalWrapper>.sapMITBCount{max-width:7.5rem;display:block;position:relative;text-align:left;padding-left:0.25rem;top:0.4375rem}.sapMITBHorizontal.sapMITBFilter>.sapMITBTab{width:3rem;height:3rem;padding:0;display:inline-block;vertical-align:top}.sapMITBTextOnly .sapMITBText{padding:0.25rem 0.5rem 0.5rem 0.5rem;margin:-0.25rem -0.5rem -0.5rem -0.5rem;font-size:0.875rem;text-align:left;line-height:1rem;width:auto}.sap-phone .sapMITBTextOnly .sapMITBText{font-size:0.75rem}.sapMITBTextOnly .sapMITBFilterDefault>.sapMITBText{color:#333333;text-shadow:0 0.0625rem 0 rgba(255,255,255,0.5)}.sapMITBTextOnly .sapMITBFilterDefault.sapMITBSelected>.sapMITBText{color:#0079ad}.sapMITBTextOnly .sapMITBFilterNeutral>.sapMITBText{color:#007cc0}.sapMITBTextOnly .sapMITBFilterPositive>.sapMITBText{color:#007833}.sapMITBTextOnly .sapMITBFilterNegative>.sapMITBText{color:#cc1919}.sapMITBTextOnly .sapMITBFilterCritical>.sapMITBText{color:#d14900}.sapMITBFilter .sapMITBCount{position:absolute;color:#000000;text-shadow:0 0.0625rem 0 rgba(255,255,255,0.5);max-width:2rem;overflow:hidden;text-overflow:ellipsis}.sapMITBTextOnly .sapMITBFilter .sapMITBCount{position:relative;color:#333333;font-size:0.875rem;max-width:none;overflow:hidden;text-overflow:ellipsis}.sap-phone .sapMITBTextOnly .sapMITBFilter .sapMITBCount{font-size:0.875rem}.sapMITBFilterIcon{display:inline-block;line-height:2.75rem;overflow:hidden;font-size:1.5rem;background:#ffffff;-moz-border-radius:3rem;border-top-left-radius:3rem;border-top-right-radius:3rem;border-bottom-right-radius:3rem;border-bottom-left-radius:3rem;border:1px solid #009de0;width:3rem;height:3rem;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sapMITBFilterNoIcon{display:inline-block;width:3rem;height:3rem;vertical-align:middle}.sapMITBFilterDefault{color:#009de0}.sapMITBFilterNeutral{color:#007cc0;border-color:#007cc0}.sapMITBFilterPositive{color:#007833;border-color:#007833}.sapMITBFilterNegative{color:#cc1919;border-color:#cc1919}.sapMITBFilterCritical{color:#d14900;border-color:#d14900}.sapMITBCount{color:#333333}.sapMITBSelected .sapMITBFilterDefault{background:#009de0;color:#ffffff}.sapMITBSelected .sapMITBFilterNeutral{background:#007cc0;color:#ffffff}.sapMITBSelected .sapMITBFilterPositive{background:#007833;color:#ffffff}.sapMITBSelected .sapMITBFilterNegative{background:#cc1919;color:#ffffff}.sapMITBSelected .sapMITBFilterCritical{background:#d14900;color:#ffffff}.sapMITBAll .sapMITBTab{display:inline-block;width:auto;line-height:3rem;height:3rem}.sapMITBAll{margin-left:0.5rem;margin-right:1.25rem}.sap-phone .sapMITBAll{margin-left:0;margin-right:0.25rem}.sapMITBAll .sapMITBCount{color:#333333;vertical-align:middle;font-size:1.5rem;padding:0 0.5rem;display:inline-block;width:auto;text-shadow:0 0.0625rem 0 rgba(255,255,255,0.5)}.sap-phone .sapMITBAll>.sapMITBTab>.sapMITBCount{padding:0 0.25rem}.sapMITBAll:first-Child>.sapMITBTab>.sapMITBCount{padding-left:0}.sapMITBAll:first-Child{margin-left:0.75rem}.sapMITBAll .sapMITBText{color:#333333;vertical-align:middle;display:inline-block;width:auto;white-space:normal;max-width:4rem;text-align:left;max-height:3rem;overflow:hidden;text-overflow:ellipsis;text-shadow:0 0.0625rem 0 rgba(255,255,255,0.5)}.sap-phone .sapMITBAll .sapMITBText{padding-right:0.5rem}.sapMITBSep{width:1.5rem}.sapMITBSepLine{width:0;border:1px solid #c0c0c0;height:3rem;margin:0 0.25rem}.sap-phone .sapMITBSepLine{margin:0 0.125rem}.sapMITBSepIcon{font-size:1rem;color:#666666;line-height:3rem;height:3rem;padding:0 0.25rem}.sapMITBHorizontal + .sapMITBSep{width:auto}.sapMITBHorizontal + .sapMITBSep>.sapMITBSepIcon{padding:0 0.5rem}.sapMITBArrowScroll{font-size:1rem;position:absolute;top:1px;color:#666666;cursor:pointer}.sap-desktop .sapMITBArrowScroll:hover,.sap-desktop .sapMITBArrowScroll:active{color:#007cc0}.sap-phone .sapMITBArrowScroll,.sap-tablet .sapMITBArrowScroll,html[data-sap-ui-os=win8] .sapMITBArrowScroll{top:1rem}.sapMITBArrowScrollLeft{left:0.25rem;padding:1rem 0.4rem}.sapMITBArrowScrollRight{right:0.25rem;padding:1rem 0.4rem}.sapMITBArrowScrollLeftTextOnly{left:0.25rem;padding:1.3rem 0.4rem 0.7rem}.sapMITBArrowScrollRightTextOnly{right:0.25rem;padding:1.3rem 0.4rem 0.7rem}.sap-phone .sapMITBArrowScrollLeft{left:0.25rem;padding:1rem 0}.sap-phone .sapMITBArrowScrollRight{right:0.25rem;padding:1rem 0}.sap-phone .sapMITBArrowScrollLeftTextOnly{left:0.25rem;padding:1.25rem 0 0.75rem}.sap-phone .sapMITBArrowScrollRightTextOnly{right:0.25rem;padding:1.25rem 0 0.75rem}.sapMITBNotScrollable>.sapMITBArrowScroll{visibility:hidden}.sapMITBScrollable.sapMITBNoScrollBack>.sapMITBArrowScrollLeft,.sapMITBScrollable.sapMITBNoScrollBack>.sapMITBArrowScrollLeftTextOnly,.sapMITBScrollable.sapMITBNoScrollForward>.sapMITBArrowScrollRight,.sapMITBScrollable.sapMITBNoScrollForward>.sapMITBArrowScrollRightTextOnly{visibility:hidden}.sapMITBArrowScroll:focus,.sapMITBHead:focus,.sapMITBFilterIcon:focus,.sapMITBItem:focus{outline:none}.sap-desktop .sapMITBItem:focus .sapMITBFilterIcon,.sap-desktop .sapMITBTextOnly .sapMITBItem:focus .sapMITBText,.sap-desktop .sapMITBItem:focus.sapMITBAll{outline:1px dotted #005483}.sapMImgFocusable:focus{outline:1px dotted #005483}.sapMInputVH>.sapMInputBaseInner{padding-right:2.375rem}.sapMInputValHelp{position:absolute;top:0.3125rem;right:0.0625rem;height:2.375rem;width:2.375rem;box-sizing:border-box}.sapMInputDescription.sapMInputVH>span>.sapMInputValHelp{left:-2.4375rem;top:0.0625rem}.sapMInputValHelpInner,html[data-sap-ui-browser='ie9'] .sapMInputValHelpInner{height:2.375rem;width:2.375rem;line-height:2.375rem}html[data-sap-ui-browser='ie9'] .sapMInputValHelp{background-color:#ffffff}.sapMInputBaseState .sapMInputValHelp{top:0.375rem;right:0.125rem;height:2.25rem;width:2.25rem}.sapMInputBaseState.sapMInputDescription.sapMInputVH>span>.sapMInputValHelp{left:-2.375rem;top:0.125rem}.sapMInputBaseState .sapMInputValHelp>.sapMInputValHelpInner{height:2.25rem;width:2.25rem;line-height:2.25rem}.sapMInputBaseState.sapMInputDescription.sapMInputVH>span>.sapMInputValHelp>.sapMInputValHelpInner{vertical-align:top}.sapMInputVHO:hover>.sapMInputValHelp>.sapMInputValHelpInner{background-color:rgba(222,222,222,0.5)}.sapMInputVHO:active>.sapMInputValHelp>.sapMInputValHelpInner{background-color:#007cc0;color:#ffffff}.sapMInputValHelpInner{speak:none;color:#666666}.sapMInputVH:not(.sapMInputBaseReadonly) .sapMInputValHelp>.sapMInputValHelpInner:hover,.sapMInputVH:not(.sapMInputBaseReadonly) .sapMInputValHelp>.sapMInputValHelpInner:focus{background-color:rgba(222,222,222,0.5)}.sapMInputVH:not(.sapMInputBaseReadonly) .sapMInputValHelp>.sapMInputValHelpInner:focus{outline:1px dotted #005483;outline-offset:-1px}.sapMInputVH:not(.sapMInputBaseReadonly) .sapMInputValHelp>.sapMInputValHelpInner:active{background-color:#007cc0;color:#ffffff;outline:1px dotted #ffffff}.sapMInputIE9.sapMInputVH{padding-right:2.375rem}.sapMInputIE9.sapMInputVH>.sapMInputBaseInner{padding-right:0;border-right:0}.sapMInputIE9 .sapMInputValHelp{color:#000000;background-color:#ffffff;border:0.0625rem solid #c0c0c0;border-left:none;margin:0;line-height:normal;height:2.5rem;width:2.4375rem;top:0.25rem;right:0}.sapMInputIE9.sapMInputDescription.sapMInputVH>span>.sapMInputValHelp{left:-2.375rem;top:0}.sapMInputIE9.sapMInputBaseState.sapMInputDescription.sapMInputVH>span>.sapMInputValHelp{left:-2.25rem}.sapMInputIE9>.sapMInputBaseInner:not(.sapMInputBaseStateInner):focus + .sapMInputValHelp,.sapMInputIE9>.sapMInputBaseInner:not(.sapMInputBaseStateInner):hover + .sapMInputValHelp,.sapMInputIE9>.sapMInputBaseInner:not(.sapMInputBaseStateInner):focus + span>.sapMInputValHelp,.sapMInputIE9>.sapMInputBaseInner:not(.sapMInputBaseStateInner):hover + span>.sapMInputValHelp{border-color:#007cc0}.sapMInputIE9.sapMInputBaseState .sapMInputValHelp{border-width:0.125rem;width:2.375rem}.sapMInputIE9.sapMInputBaseWarning .sapMInputValHelp{border-color:#f0ab00}.sapMInputIE9.sapMInputBaseError .sapMInputValHelp{border-color:#e52929}.sapMInputIE9.sapMInputBaseSuccess .sapMInputValHelp{border-color:#008a3b}div.sapMInputSuggestionPopup{border:none;-webkit-box-shadow:0 0.0625rem 0.1875rem rgba(0,0,0,0.5);box-shadow:0 0.0625rem 0.1875rem rgba(0,0,0,0.5)}.sapMInputSuggestionPopup .sapMDLIValue{font-size:0.875rem;color:#333333;padding-right:1rem}.sapMInputSuggestionPopup .sapMLIBActive .sapMDLIValue{color:#ffffff}.sapMInputSuggestionPopup .sapMDLILabel{font-size:0.875rem}.sapMInputDescription>span{font-size:0.875rem;line-height:2.5rem;color:#000000}.sapUiSizeCompact .sapMInputVH>.sapMInputBaseInner{padding-right:1.625rem}.sapUiSizeCompact .sapMInputValHelp{top:0.25rem;height:1.5rem;width:1.5rem}.sapUiSizeCompact .sapMInputDescription.sapMInputVH>span>.sapMInputValHelp{left:-1.5625rem}.sapUiSizeCompact .sapMInputValHelp>.sapMInputValHelpInner{font-size:1rem;height:1.5rem;width:1.5rem;line-height:1.5rem}.sapUiSizeCompact .sapMInputDescription.sapMInputVH>span>.sapMInputValHelp>.sapMInputValHelpInner{vertical-align:top}.sapUiSizeCompact .sapMInputBaseState .sapMInputValHelp{top:0.3125rem;height:1.375rem;width:1.375rem}.sapUiSizeCompact .sapMInputBaseState.sapMInputDescription.sapMInputVH>span>.sapMInputValHelp{left:-1.5rem}.sapUiSizeCompact .sapMInputBaseState .sapMInputValHelp>.sapMInputValHelpInner{height:1.375rem;width:1.375rem;line-height:1.375rem}.sapUiSizeCompact .sapMInputIE9.sapMInput{padding-right:1.4rem}.sapUiSizeCompact .sapMInputIE9 .sapMInputValHelp{height:1.625rem;width:1.5625rem;top:0.1875rem}.sapUiSizeCompact .sapMInputIE9.sapMInputBaseState .sapMInputValHelp{width:1.5rem}.sapUiSizeCompact .sapMInputIE9.sapMInputDescription.sapMInputVH>span>.sapMInputValHelp{left:-1.5rem}.sapUiSizeCompact .sapMInputIE9.sapMInputBaseState.sapMInputDescription.sapMInputVH>span>.sapMInputValHelp{left:-1.375rem}.sapUiSizeCompact .sapMInputDescription>span{line-height:1.625rem}.sapMInputBase{background-color:transparent;border:none;position:relative;display:inline-block;padding:0.25rem 0;height:3rem;vertical-align:top}.sapMInputBaseInner{color:#000000;background-color:#ffffff;border:1px solid #c0c0c0;margin:0;font-size:0.875rem;font-family:Arial,Helvetica,sans-serif;line-height:normal;height:2.5rem;vertical-align:top;padding:0 0.75rem;-moz-appearance:textfield}.sapMInputBaseInner::-webkit-input-placeholder{color:#707070;font-size:0.875rem;font-style:italic}.sapMInputBaseInner::-moz-placeholder{color:#707070;font-size:0.875rem;font-style:italic}.sapMInputBaseInner:-ms-input-placeholder{color:#707070;font-size:0.875rem;font-style:italic}.sapMInputBasePlaceholder{color:#707070;font-size:0.875rem;font-style:italic;position:absolute;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;line-height:2.5rem;padding:0 0.75rem}.sapMInputBaseInner:focus{outline:none;outline-width:0}.sapMInputBaseStateInner{border-width:2px;padding:0 0.6875rem}.sapMInputBaseWarningInner{border-color:#f0ab00}.sapMInputBaseErrorInner{border-color:#e52929}.sapMInputBaseSuccessInner{border-color:#008a3b}.sapMInputBaseInner.sapMInputBaseReadonlyInner{border-color:transparent;background-color:transparent}.sapMInputBaseInner:not(.sapMInputBaseReadonlyInner):not(.sapMInputBaseStateInner):focus,.sapMInputBaseInner:not(.sapMInputBaseReadonlyInner):not(.sapMInputBaseStateInner):not(.sapMInputBaseDisabledInner):hover{border-color:#007cc0}.sapMILI-CTX .sapMInputBase{display:block}.sapMILI-CTX .sapMInputBaseInner{text-align:right;background-color:transparent}html[dir=rtl] .sapMILI-CTX .sapMInputBaseInner,html[dir=rtl] .sapMILI-CTX .sapMInputBasePlaceholder{text-align:left}.sapMILI-CTX .sapMInputBasePlaceholder{text-align:right}.sapMILI-CTX :not(.sapMInputVH) .sapMInputBaseInner:not(.sapMInputBaseStateInner){border:none}.sapMLIBActive .sapMInputBaseInner{color:#ffffff;background:transparent}.sapMLIBActive .sapMInputBaseInner::-webkit-input-placeholder{color:#ffffff}.sapMInputBaseMessage{color:#000000;border-width:0;font-size:0.75rem;font-family:Arial,Helvetica,sans-serif;padding:0.3rem 0.625rem;min-width:6rem;max-width:22rem}.sapMInputBaseMessageError{background:#fbdfdf;border:#e52929}.sapMInputBaseMessageWarning{background:#fffcb5;border:#f0ab00}.sapUiSizeCompact .sapMInputBase{height:2rem;padding:0.1875rem 0}.sapUiSizeCompact .sapMInputBaseInner{height:1.625rem;padding:0 0.5rem}.sapUiSizeCompact .sapMInputBasePlaceholder{line-height:1.625rem;padding:0 0.5rem}.sapUiSizeCondensed .sapMInputBase{height:1.5rem;padding:0}.sapUiSizeCondensed .sapMInputBaseInner{border-color:transparent}.sapUiSizeCondensed .sapMInputBaseInner{height:1.5rem}.sapUiSizeCondensed .sapMInputBasePlaceholder{line-height:1.5rem}.sapMILI{height:3rem}.sapMILILabel{font-size:1.125rem;max-width:60%;color:#333333}.sapMILIDiv{margin:0 0 0 1rem}.sapMLIBActive .sapMILILabel{color:#ffffff}.sapUiSizeCompact .sapMILI{height:2rem}.sapUiSizeCompact .sapMILILabel{font-size:0.875rem}.sapMLabel{color:#666666;font-size:0.875rem;font-family:Arial,Helvetica,sans-serif;font-weight:normal}.sapMLabel.sapMLabelTBHeader{font-family:Arial,Helvetica,sans-serif;font-size:1rem;font-weight:normal;color:#333333;text-shadow:0 0.0625rem 0 rgba(255,255,255,0.5)}.sapMLabel.sapMLabelBold{font-weight:bold}.sapMLabelRequired:before{content:"*";color:#007cc0;font-size:1rem;line-height:0.9375rem}.sapMIBar-CTX .sapMLabel{color:#666666}.sapMIBar-CTX.sapMFooter-CTX .sapMLabel{font-family:Arial,Helvetica,sans-serif;font-size:0.875rem;color:#ffffff;text-shadow:0 0.0625rem 0 rgba(0,0,0,0.5)}.sapMIBar-CTX.sapMPageHeader .sapMLabel,.sapMDialog-CTX .sapMIBar-CTX .sapMLabel{font-family:Arial,Helvetica,sans-serif;font-size:1rem;font-weight:normal}.sapMLIBActive .sapMLabel,.sapMLIBActive .sapMListTblCell .sapMLabel,.sapMLIBActive .sapMListTblSubCntRow .sapMLabel{color:#ffffff}.sapUiForm .sapMLabel{height:auto;position:relative;padding-right:0.3em}.sapUiForm.sapUiFormEdit .sapMLabel{vertical-align:top}.sapUiForm .sapMLabel:after{content:":"}.sapUiForm .sapMLabel:lang(fr):after{content:" :"}.sapUiForm .sapMCb>.sapMCbLabel:after,.sapUiForm .sapMRb>.sapMRbBLabel:after,.sapUiForm .sapMLabel.sapMLabelNoText:after{content:none}.sapMLIBUnread .sapMLabel,.sapMLIBUnread + .sapMListTblSubRow .sapMLabel{font-family:Arial,Helvetica,sans-serif;font-weight:bold}.sapMTB-Info-CTX .sapMLabel{font-style:italic;font-size:0.875rem;font-family:Arial,Helvetica,sans-serif;color:#ffffff}.sapMTB-Info-CTX .sapMLabel.sapMLabelTBHeader{text-shadow:none}.sapMTB-Transparent-CTX .sapMLabel{font-weight:normal;font-size:1rem;font-family:Arial,Helvetica,sans-serif;text-shadow:0 1px 0 #ffffff;color:#333333}.sapMTB-Transparent-CTX>.sapMLabelTBHeader{font-size:1.125rem}.sapUiFormResLayout .sapUiRFLRow:first-child>.sapUiRFLContainer:first-child>.sapUiRFLContainerContent>.sapMLabel{text-align:end!important;width:100%;padding-right:4px;-moz-box-sizing:border-box;box-sizing:border-box}.sapUiRespGridMedia-Std-Phone.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanS12)>.sapMLabel:after,.sapUiRespGridMedia-Std-Tablet.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanM12)>.sapMLabel:after,.sapUiRespGridMedia-Std-Desktop.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanL12)>.sapMLabel:after,.sapUiFormResLayout .sapUiRFLRow:first-child>.sapUiRFLContainer:first-child>.sapUiRFLContainerContent>.sapUiForm .sapMLabel:after{position:absolute;right:0}html[data-sap-ui-browser^=ie] .sapUiFormResLayout .sapUiRFLRow:first-child>.sapUiRFLContainer:first-child>.sapUiRFLContainerContent>.sapMLabel{text-align:right!important}html[dir=rtl][data-sap-ui-browser^=ie] .sapUiFormResLayout .sapUiRFLRow:first-child>.sapUiRFLContainer:first-child>.sapUiRFLContainerContent>.sapMLabel{text-align:left!important}.sapUiFormResLayout .sapUiRFLRow:first-child>.sapUiRFLContainer.sapUiRFLFullLength>.sapUiRFLContainerContent>.sapMLabel{text-align:start!important;padding-bottom:2px}html[data-sap-ui-browser^=ie] .sapUiFormResLayout .sapUiRFLRow:first-child>.sapUiRFLContainer.sapUiRFLFullLength>.sapUiRFLContainerContent>.sapMLabel{text-align:left!important}html[dir=rtl][data-sap-ui-browser^=ie] .sapUiFormResLayout .sapUiRFLRow:first-child>.sapUiRFLContainer.sapUiRFLFullLength>.sapUiRFLContainerContent>.sapMLabel{text-align:right!important}.sapUiFormResGridLbl>.sapMLabel{width:100%}.sapUiRespGridMedia-Std-Phone.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanS12)>.sapMLabel,.sapUiRespGridMedia-Std-Tablet.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanM12)>.sapMLabel,.sapUiRespGridMedia-Std-Desktop.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanL12)>.sapMLabel{text-align:end!important;float:none}html[data-sap-ui-browser^=ie] .sapUiRespGridMedia-Std-Phone.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanS12)>.sapMLabel,html[data-sap-ui-browser^=ie] .sapUiRespGridMedia-Std-Tablet.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanM12)>.sapMLabel,html[data-sap-ui-browser^=ie] .sapUiRespGridMedia-Std-Desktop.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanL12)>.sapMLabel{text-align:right!important}html[dir=rtl][data-sap-ui-browser^=ie] .sapUiRespGridMedia-Std-Phone.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanS12)>.sapMLabel,html[dir=rtl][data-sap-ui-browser^=ie] .sapUiRespGridMedia-Std-Tablet.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanM12)>.sapMLabel,html[dir=rtl][data-sap-ui-browser^=ie] .sapUiRespGridMedia-Std-Desktop.sapUiFormResGridCont>.sapUiFormResGridLbl:not(.sapUiRespGridSpanL12)>.sapMLabel{text-align:left!important}.sapUiSizeCompact .sapMIBar-CTX.sapMPageHeader .sapMLabel,.sapUiSizeCondensed .sapMIBar-CTX.sapMPageHeader .sapMLabel,.sapUiSizeCompact .sapMDialog-CTX .sapMIBar-CTX .sapMLabel,.sapUiSizeCondensed .sapMDialog-CTX .sapMIBar-CTX .sapMLabel{font-size:0.875rem}.sapUiSizeCompact .sapMTB-Transparent-CTX .sapMLabel,.sapUiSizeCondensed .sapMTB-Transparent-CTX .sapMLabel{font-size:0.875rem}.sapUiSizeCompact .sapMTB-Transparent-CTX>.sapMLabelTBHeader,.sapUiSizeCondensed .sapMTB-Transparent-CTX>.sapMLabelTBHeader{font-size:1.125rem}.sapUiSizeCondensed .sapUiTableCell>.sapMLabel{box-sizing:border-box;padding:0 0.5rem;line-height:1.5rem;vertical-align:middle}.sapMLnk{font-size:0.875rem}.sapMLnkDsbl{opacity:0.5;outline:none;cursor:default}.sap-desktop .sapMLnk:hover:not(.sapMLnkDsbl){text-decoration:underline}.sap-desktop .sapMLnk:focus:not(.sapMLnkDsbl){outline:0.0625rem dotted #005483;outline-offset:-0.0625rem}.sap-desktop[data-sap-ui-browser^="ie"] .sapMLnk:focus{outline:none;position:relative}.sap-desktop[data-sap-ui-browser^="ie"] .sapMLnk:focus:before{content:" ";box-sizing:border-box;width:100%;height:100%;position:absolute;left:0;top:0;border:0.0625rem dotted #005483;pointer-events:none}.sapMLIBActive .sapMLnk{color:#ffffff;text-decoration:underline}.sapUiFormEdit .sapMLnk{line-height:3rem}.sapMLnkSubtle{color:#003552}.sapMLnkSubtle:focus{color:#005483}.sapMLnkEmphasized{font-weight:bold}.sapUiSizeCompact .sapUiFormEdit .sapMLnk{line-height:2rem}.sapUiSizeCondensed .sapUiTableCell>.sapMLnk{box-sizing:border-box;padding:0 0.5rem;line-height:1.5rem;vertical-align:middle}li.sapMLIB.sapMLIBNoFlex{width:100%;display:table;border-collapse:collapse;padding:0}li.sapMLIB.sapMLIBNoFlex{}li.sapMLIB.sapMLIBNoFlex>div{display:table-cell;vertical-align:middle;margin:0}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent{width:100%;padding:0}li.sapMLIB.sapMLIBNoFlex>.sapMLIBSelectSM + .sapMLIBContent,li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent:first-child{padding-left:1rem}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent:last-child{padding-right:1rem}li.sapMLIB.sapMLIBNoFlex.sapMCLI>.sapMLIBContent{padding:0}li.sapMLIB.sapMLIBNoFlex:not(.sapMCLI)>.sapMLIBContent>div.sapMLIBContentNF{display:table;width:100%;padding:0}li.sapMLIB.sapMLIBNoFlex.sapMDLI>.sapMLIBContent>.sapMLIBContentNF,li.sapMLIB.sapMLIBNoFlex.sapMILI>.sapMLIBContent>.sapMLIBContentNF{table-layout:fixed}li.sapMLIB.sapMLIBNoFlex.sapMSLI.sapMSLIIcon:not(.sapMSLIIconThumb)>div:not(.sapMLIBSelectSM) + .sapMLIBContent>.sapMLIBContentNF>.sapUiIcon{min-width:2rem;width:2rem;text-align:left}li.sapMLIB.sapMLIBNoFlex:not(.sapMCLI)>.sapMLIBContent>.sapMLIBContentNF>div,li.sapMLIB.sapMLIBNoFlex:not(.sapMCLI)>.sapMLIBContent>.sapMLIBContentNF>span,li.sapMLIB.sapMLIBNoFlex:not(.sapMCLI)>.sapMLIBContent>.sapMLIBContentNF>label,li.sapMLIB.sapMLIBNoFlex:not(.sapMCLI)>.sapMLIBContent>.sapMLIBContentNF>button{display:table-cell;vertical-align:middle;min-width:3rem}li.sapMLIB.sapMLIBNoFlex:not(.sapMCLI)>.sapMLIBContent>.sapMLIBContentNF>label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF{}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>div.sapMSLIDescriptionDiv{min-width:0}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>img.sapMSLIImg{margin:0;min-width:0;padding:0.5rem}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>span.sapMSLIImgThumbIcon{padding-right:0.75rem}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv{width:100%}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLITitleDiv{display:table;table-layout:fixed;width:100%}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLITitleDiv>.sapMSLITitle{display:table-cell;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLIDescriptionDiv{display:table;table-layout:fixed;width:100%}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLIDescriptionDiv>div{display:table-cell;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLIDescriptionDiv>.sapMSLIInfo{width:33%}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMLIBNoFlex{display:table;table-layout:fixed;width:100%}li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMLIBNoFlex>div{display:table-cell;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}li.sapMLIB.sapMLIBNoFlex>div.sapMLIBCursor>.sapMLIBIconDet{height:auto;overflow:visible}li.sapMLIB.sapMLIBNoFlex>div.sapMLIBCursor:last-child>.sapMLIBIconDet{margin-right:0}li.sapMLIB.sapMLIBNoFlex>div.sapMLIBSelectD{text-align:center;min-width:3rem}li.sapMLIB.sapMLIBNoFlex>div.sapMLIBSelectD>span.sapMLIBIconDel{min-width:3rem}li.sapMLIB.sapMLIBNoFlex>div.sapMLIBSelectD>span.sapUiIcon{height:auto}li.sapMLIB.sapMLIBNoFlex>div.sapMLIBSelectM>div.sapMCb{padding:0}li.sapMLIB.sapMLIBNoFlex>div.sapMLIBCounter{text-align:right}li.sapMLIB.sapMLIBNoFlex>div.sapMLIBCounter:last-child{padding-right:1rem}li.sapMLIB.sapMLIBNoFlex>div>.sapMLIBImgNav{margin:0;padding:0;height:auto;width:3rem;vertical-align:middle}li.sapMLIB.sapMLIBNoFlex>div:not(:last-child)>.sapMLIBImgNav{width:2rem;text-align:right}html[data-sap-ui-browser*='ie9'] .sapMListNoData{text-align:center;line-height:3rem;height:3rem}.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex{}.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent{width:auto}.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv{width:auto}.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMLIBNoFlex,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMLIBNoFlex,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMLIBNoFlex,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMLIBNoFlex,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMLIBNoFlex,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMLIBNoFlex{display:block}.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLITitleDiv,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLITitleDiv,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLITitleDiv,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLITitleDiv,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLITitleDiv,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLITitleDiv,.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLIDescriptionDiv,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLIDescriptionDiv,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLIDescriptionDiv,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLIDescriptionDiv,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLIDescriptionDiv,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>.sapMSLIDiv>.sapMSLIDescriptionDiv{width:auto}.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF{width:auto}.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>label.sapMILILabel,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>label.sapMILILabel,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>label.sapMILILabel,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>label.sapMILILabel,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>label.sapMILILabel,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBContent>.sapMLIBContentNF>label.sapMILILabel{display:inline-block;line-height:3rem;padding-right:1.5rem;min-width:15rem;max-width:15rem}.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>div:last-child>.sapUiIcon,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>div:last-child>.sapUiIcon,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>div:last-child>.sapUiIcon,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>div:last-child>.sapUiIcon,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>div:last-child>.sapUiIcon,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>div:last-child>.sapUiIcon,.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>div:last-child>.sapMImg,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>div:last-child>.sapMImg,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>div:last-child>.sapMImg,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>div:last-child>.sapMImg,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>div:last-child>.sapMImg,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>div:last-child>.sapMImg{float:right}.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBImgNav.sapUiIcon,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBImgNav.sapUiIcon,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBImgNav.sapUiIcon,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBImgNav.sapUiIcon,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBImgNav.sapUiIcon,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex>.sapMLIBImgNav.sapUiIcon{display:table-cell}.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex .sapMSLITitleOnly,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex .sapMSLITitleOnly,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex .sapMSLITitleOnly,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex .sapMSLITitleOnly,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex .sapMSLITitleOnly,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex .sapMSLITitleOnly,.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex .sapMDLILabel,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex .sapMDLILabel,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex .sapMDLILabel,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex .sapMDLILabel,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex .sapMDLILabel,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex .sapMDLILabel,.sapMDialog>section:not([style*="width"]) .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex .sapMSLIDescription,.sapMPopover .sapMList:not([style*="width"])>ul>li.sapMLIB.sapMLIBNoFlex .sapMSLIDescription,.sapMDialog>section:not([style*="width"]) .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex .sapMSLIDescription,.sapMPopover .sapMList[style*="auto"]>ul>li.sapMLIB.sapMLIBNoFlex .sapMSLIDescription,.sapMDialog>section:not([style*="width"]) .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex .sapMSLIDescription,.sapMPopover .sapMList[style*="100%"]>ul>li.sapMLIB.sapMLIBNoFlex .sapMSLIDescription{padding-right:2rem}.sapMList{margin:0;padding:0}.sapMListUl{padding:0;margin:0}.sapUiFioriObjectPage>section>.sapMList:not(.sapMListInsetBG){margin:1rem 0;padding:0 1rem;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapUiFioriObjectPage>section>.sapMITB + .sapMList:not(.sapMListInsetBG){margin-top:1rem}.sap-phone .sapUiFioriObjectPage>section>.sapMList:not(.sapMListInsetBG){padding:0}.sapUIMeTabContainerContent .sapMList{padding:1rem;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sap-phone .sapUIMeTabContainerContent .sapMList{padding:0rem;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMListSwp{margin-top:-1px}.sapMListInsetBG{padding:2rem}.sapMListInsetBG>.sapMListSwp{margin-right:2rem}.sap-phone .sapMListInsetBG{padding:1rem}.sap-phone .sapMListInsetBG>.sapMListSwp{margin-right:1rem}.sapMListHdr{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font:normal 1rem Arial,Helvetica,sans-serif;text-shadow:0 1px 0 #ffffff;color:#333333;height:3rem;line-height:3rem;padding:0 1rem;background-color:rgba(255,255,255,0);border-bottom:1px solid #cdcdcd}.sapMListFtr{height:2rem;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-text-size-adjust:none;font-size:0.875rem;line-height:2rem;background-color:#f7f7f7;color:#666666;padding:0 1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sapMListNoData{color:#333333;background-color:#ffffff;border-bottom:1px solid #e5e5e5;padding:0 1rem!important;height:3rem}.sapMListTopBorder{border-top:1px solid #e5e5e5}.sapMListShowSeparatorsNone .sapMListNoData{border-bottom:0}.sapUIMeTabContainerContent .sapMList{padding:1rem;-webkit-box-sizing:border-box;box-sizing:border-box}.sapUIMeTabContainerContent .sapMFeedListItem{display:block;padding:.5rem 0}.sapMGrowingListTrigger,.sapMGrowingListLoading{border-top:0.0625em solid #e6e6e6;height:5.0rem}.sapMGrowingListBusyIndicator{margin:1.5rem 1.0rem;position:absolute}.sapMGrowingListLoading>.sapMGrowingListBusyIndicator{margin:0.5rem auto;position:static}.sapMGrowingListTitel{padding:0 4rem}.sapMGrowingListTitel>h1{margin:0.813rem 0}.sapMGrowingListDescription{padding:0 4rem;text-align:center}.sapMLIBActive .sapMGrowingListBusyIndicatorVisible .sapMBusySvg{stroke:#ffffff}.sapUiSizeCompact .sapMListNoData{height:2rem;font-size:0.875rem}.sapUiSizeCompact .sapMListFtr{font-size:0.75rem}.sapUiSizeCompact .sapMTB.sapMListHdrTBar{height:3rem}.sapUiSizeCompact .sapMGrowingListTrigger,.sapUiSizeCompact .sapMGrowingListLoading{height:4rem}.sapUiSizeCompact .sapMGrowingListBusyIndicator{margin:1rem}.sapUiSizeCompact .sapMGrowingListTitel>h1{margin-bottom:0}.sapMLIB{border-bottom:1px solid #e5e5e5;background-color:#ffffff;padding:0 1rem 0 1rem}.sap-desktop .sapMLIB:focus{outline:1px dotted #005483;outline-offset:-1px}.sapMListModeDelete .sapMLIB,.sapMListModeSingleSelect .sapMLIB,.sapMLIB.sapMLIBTypeNavigation{padding-right:0}.sapMListBGTransparent .sapMLIB{background-color:rgba(255,255,255,0)}.sapMListBGTranslucent .sapMLIB{background-color:rgba(255,255,255,0.8)}.sapMListBGSolid .sapMLIB{background-color:#ffffff}.sapMListShowSeparatorsNone .sapMLIBShowSeparator{border-bottom:1px solid transparent}.sapMListShowSeparatorsInner .sapMLIBShowSeparator:last-child{border-bottom-color:transparent}.sapMLIB.sapMListTblSupRow{border-bottom:0}.sapMLIBSelectSL,.sapMLIBSelectM{width:3rem;margin-left:-1rem}.sapMLIBSelectD,.sapMLIBSelectS{width:3rem;text-align:center}.sapMLIBSelectD{cursor:pointer}.sapMLIBSelectD>.sapUiIcon{font-size:1.5rem;color:#cc1919;font-weight:normal;width:100%}.sapMLIBSelectAnimation{-webkit-animation-duration:0.25s;-webkit-animation-timing-function:ease-in;-webkit-animation-name:resize;animation-duration:0.25s;animation-timing-function:ease-in;animation-name:resize}@-webkit-keyframes resize{0%{width:0}100%{width:3rem}}@keyframes resize{0%{width:0}100%{width:3rem}}.sapMLIBUnselectAnimation{-webkit-animation-duration:0.25s;-webkit-animation-timing-function:ease-in;-webkit-animation-name:close;animation-duration:0.25s;animation-timing-function:ease-in;animation-name:close}@-webkit-keyframes close{0%{width:3rem}100%{width:0}}@keyframes close{0%{width:3rem}100%{width:0}}.sapMLIBUnread,.sapMLIBUnread>.sapMListTblCell,.sapMLIBUnread + .sapMListTblSubRow{font-family:Arial,Helvetica,sans-serif;font-weight:bold}.sapMLIBCounter{font-size:0.875rem;color:#007cc0;padding-left:1rem}.sapMLIBImgNav{width:3rem;height:3rem;line-height:3rem;font-size:0.75rem;color:#8c8c8c}.sapMLIBIconDet{width:3rem;height:3rem;line-height:3rem;font-size:1.375rem;color:#666666;margin-right:-1rem;margin-left:0.5rem;-webkit-box-flex:0;-moz-box-flex:0;-ms-flex:none;flex:none}.sapMLIBActive .sapMLIBImgNav,.sapMLIBActive .sapMLIBIconDet,.sapMLIBActive .sapMLIBIconDel,.sapMLIBIconDet:active,.sapMLIBIconDel:active{color:#ffffff}.sapMLIBTypeDetailAndActive .sapMLIBIconDet:active,.sapMLIBTypeDetail .sapMLIBIconDet:active,.sapMListModeDelete .sapMLIBSelectD:active,.sapMListModeDelete .sapMLIBSelectD>.sapUiIcon:active,.sapMLIBActive:not(.sapMLIBTypeDetailAndActive):not(.sapMLIBTypeNavigation):not(.sapMLIBTypeActive) .sapMLIBImgNav{background-color:#007cc0}.sap-desktop .sapMLIBImgNav:focus,.sap-desktop .sapMLIBIconDet:focus,.sap-desktop .sapMLIBIconDel:focus{outline:1px dotted #005483;outline-offset:-1px}.sapMLIBImgDel{height:3rem;width:3rem}.sapMLIB.sapMLIBSelected,.sapMLIB.sapMLIBSelected>td{background:#e6f2f9}.sapMLIBSelectD:hover{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sap-desktop .sapMLIBSelectD:hover:not(:active),.sap-desktop .sapMLIB:not(.sapMLIBActive):not(.sapMLIBTypeInactive):not(.sapMLIBTypeDetail):not(.sapMALI):hover,.sap-desktop .sapMListUl:not(.sapMListModeDelete):not(.sapMListModeNone) .sapMLIB:not(.sapMLIBActive):not(.sapMALI):hover,.sap-desktop .sapMLIB:not(.sapMLIBActive):not(.sapMLIBSelected):not(.sapMLIBTypeInactive):not(.sapMLIBTypeDetail):not(.sapMALI):hover>td,.sap-desktop .sapMLIB:not(.sapMLIBActive):not(.sapMLIBTypeInactive):not(.sapMLIBTypeDetail):not(.sapMALI):not(.sapMLIBSelected):hover + .sapMListTblSubRow,.sap-desktop .sapMListTblSubRow:not(.sapMLIBActive):not(.sapMLIBTypeInactive):not(.sapMLIBTypeDetail):not(.sapMALI):hover{background:#f0f0f0}.sap-desktop .sapMLIBSelected:not(.sapMLIBActive):not(.sapMALI):hover,.sap-desktop .sapMListUl:not(.sapMListModeDelete):not(.sapMListModeNone) .sapMLIBSelected:not(.sapMLIBActive):not(.sapMALI):hover,.sap-desktop .sapMLIBSelected:not(.sapMLIBActive):not(.sapMALI):hover>td,.sap-desktop .sapMLIBSelected:not(.sapMLIBActive):not(.sapMALI):hover + .sapMListTblSubRow,.sap-desktop .sapMLIBSelected:not(.sapMLIBActive):not(.sapMALI) + .sapMListTblSubRow:hover{background:#d9ecf6}.sapMLIBActive.sapMLIB,.sapMLIBActive.sapMLIB>td{color:#ffffff;background:#007cc0}.sapMLIBActive div,.sapMLIBActive .sapMLIBCounter{color:#ffffff}.sapMLIBActive .sapThemeHighlight-asColor{color:#ffffff}.sapMLIBActive .sapThemeHighlight-asBorderColor{border-color:#ffffff}.sapUiSizeCompact .sapMLIBSelectSL,.sapUiSizeCompact .sapMLIBSelectM{width:2.5rem}.sapMDialog.sapMMessageBoxInfo>header.sapMBar>.sapMBarMiddle>.sapMBarPH>.sapMDialogIcon.sapUiIcon{color:#007cc0}.sapMDialog.sapMMessageBoxWarning>header.sapMBar>.sapMBarMiddle>.sapMBarPH>.sapMDialogIcon.sapUiIcon{color:#d14900}.sapMDialog.sapMMessageBoxError>header.sapMBar>.sapMBarMiddle>.sapMBarPH>.sapMDialogIcon.sapUiIcon{color:#cc1919}.sapMDialog.sapMMessageBoxSuccess>header.sapMBar>.sapMBarMiddle>.sapMBarPH>.sapMDialogIcon.sapUiIcon{color:#007833}.sapMDialog.sapMMessageBoxQuestion>header.sapMBar>.sapMBarMiddle>.sapMBarPH>.sapMDialogIcon.sapUiIcon{color:#007cc0}.sapMDialog.sapMMessageBoxInfo>header.sapMBar>.sapMBarMiddle>.sapMBarPH>.sapMDialogTitle.sapMLabel{color:#000000}.sapMDialog.sapMMessageBoxWarning>header.sapMBar>.sapMBarMiddle>.sapMBarPH>.sapMDialogTitle.sapMLabel{color:#000000}.sapMDialog.sapMMessageBoxError>header.sapMBar>.sapMBarMiddle>.sapMBarPH>.sapMDialogTitle.sapMLabel{color:#cc1919}.sapMDialog.sapMMessageBoxSuccess>header.sapMBar>.sapMBarMiddle>.sapMBarPH>.sapMDialogTitle.sapMLabel{color:#007833}.sapMDialog.sapMMessageBoxQuestion>header.sapMBar>.sapMBarMiddle>.sapMBarPH>.sapMDialogTitle.sapMLabel{color:#000000}.sapMDialog.sapMMessageBoxInfo>header.sapMBar{-webkit-box-shadow:inset 0 -0.0625rem #007cc0;box-shadow:inset 0 -0.0625rem #007cc0}.sapMDialog.sapMMessageBoxWarning>header.sapMBar{-webkit-box-shadow:inset 0 -0.0625rem #d14900;box-shadow:inset 0 -0.0625rem #d14900}.sapMDialog.sapMMessageBoxError>header.sapMBar{-webkit-box-shadow:inset 0 -0.0625rem #cc1919;box-shadow:inset 0 -0.0625rem #cc1919}.sapMDialog.sapMMessageBoxSuccess>header.sapMBar{-webkit-box-shadow:inset 0 -0.0625rem #007833;box-shadow:inset 0 -0.0625rem #007833}.sapMDialog.sapMMessageBoxQuestion>header.sapMBar{-webkit-box-shadow:inset 0 -0.0625rem #007cc0;box-shadow:inset 0 -0.0625rem #007cc0}.sapMMsgPopoverItemSuccess .sapMSLIImgIcon,.sapMMsgPopoverBtnSuccess.sapMSegBBtn .sapUiIcon,.sapMMsgPopoverDescIconSuccess{color:#007833}.sapMMsgPopoverItemWarning .sapMSLIImgIcon,.sapMMsgPopoverBtnWarning.sapMSegBBtn .sapUiIcon,.sapMMsgPopoverDescIconWarning{color:#d14900}.sapMMsgPopoverItemError .sapMSLIImgIcon,.sapMMsgPopoverBtnError.sapMSegBBtn .sapUiIcon,.sapMMsgPopoverDescIconError{color:#cc1919}.sapMMsgPopoverItemInformation .sapMSLIImgIcon,.sapMMsgPopoverBtnInformation.sapMSegBBtn .sapUiIcon,.sapMMsgPopoverDescIconInformation{color:#007cc0}.sapMMsgPopoverItem .sapMSLIIconActive{color:#ffffff}.sapMPopover.sapMMsgPopover.sapMMsgPopover-init .sapMPopoverArr:after{border-top-color:#f2f2f2}.sapMMsgPopover .sapMSegBBtn{background-color:transparent;border-color:transparent;border-radius:0.125rem;color:#333333}.sapMMsgPopover .sapMSegBBtn:hover{background-color:rgba(196,196,196,0.5);color:#333333}.sapMMsgPopover .sapMSegBBtn:hover .sapMBtnIcon{color:#666666}.sapMMsgPopover .sapMSegBBtn:active{background-color:#007cc0;color:#ffffff}.sapMMsgPopover .sapMSegBBtn:active .sapMBtnIcon.sapUiIcon{color:#ffffff}.sapMMsgPopover .sapMSegBBtn:last-child{border-color:transparent}.sapMMsgPopover .sapMSegBBtn.sapMSegBBtnSel{background-color:#007cc0;color:#ffffff}.sapMMsgPopover .sapMSegBBtn.sapMSegBBtnSel .sapMBtnIcon{color:#ffffff}.sapMMsgPopover .sapMSegBBtn.sapMSegBBtnSel:hover,.sapMMsgPopover .sapMSegBBtn.sapMSegBBtnSel:active{background-color:#006ca7;color:#ffffff}.sapMMsgPopover .sapMSegBBtn.sapMSegBBtnSel:hover .sapMBtnIcon,.sapMMsgPopover .sapMSegBBtn.sapMSegBBtnSel:active .sapMBtnIcon{color:#ffffff}.sapMMsgPopoverCloseBtn .sapMBtnIcon{color:#666666}.sapMMessageToast{font-size:0.875rem;padding:1rem;background:rgba(54,62,67,0.96);text-shadow:0 0.0625rem #000000;color:#ffffff;-webkit-box-shadow:0 0.125rem 2.75rem 0.125rem rgba(0,0,0,0.5),0 0.25rem 0.25rem 0 rgba(0,0,0,0.15);box-shadow:0 0.125rem 2.75rem 0.125rem rgba(0,0,0,0.5),0 0.25rem 0.25rem 0 rgba(0,0,0,0.15);border-radius:0.14285rem}.sap-desktop .sapMMessageToast{background:rgba(54,62,67,0.96)}.sap-android .sapMMessageToast{-webkit-box-shadow:none;box-shadow:none}.sapMMultiComboBox{padding:0.25rem 0;height:3.0rem}.sap-desktop .sapMMultiComboBoxFocused:not(.sapMInputBaseReadonly):not(.sapMInputBaseError):not(.sapMInputBaseWarning):not(.sapMInputBaseSuccess) .sapMMultiComboBoxBorder,.sap-desktop .sapMMultiComboBox:not(.sapMInputBaseReadonly):not(.sapMInputBaseError):not(.sapMInputBaseWarning):not(.sapMInputBaseSuccess)>.sapMMultiComboBoxBorder:hover{border-color:#007cc0}.sapMMultiComboBox>.sapMMultiComboBoxBorder{background:#ffffff;border:1px solid #c0c0c0;padding-left:0.75rem;white-space:nowrap;position:relative;height:2.375rem}.sap-desktop .sapMMultiComboBox>.sapMMultiComboBoxBorder{overflow:hidden}.sapUiSizeCompact .sapMMultiComboBox>.sapMMultiComboBoxBorder{padding-left:0.1875rem;height:1.5rem}.sapMInputBaseReadonly>.sapMMultiComboBoxBorder{border-color:transparent;background-color:transparent}.sapMMultiComboBoxInputContainer{overflow:hidden;display:inline}.sapMMultiComboBoxInputContainer>input,.sapMMultiComboBoxInputContainer>div{border:0 transparent;background:transparent}.sapUiSizeCompact .sapMMultiComboBoxInputContainer>input,.sapUiSizeCompact .sapMMultiComboBoxShadowDiv{padding-left:0.1875rem;padding-right:0.25rem;min-width:1.5rem}.sapMMultiComboBoxInputContainer>input,.sapMMultiComboBoxShadowDiv{border:0 transparent;padding-left:0.125rem;padding-right:0.375rem;min-width:2.25rem;background:transparent;height:2.375rem;font-size:0.875rem;font-family:Arial,Helvetica,sans-serif}.sapMMultiComboBoxShadowDiv{display:inline;visibility:collapse;white-space:nowrap;position:absolute;top:0;left:0}.sapUiSizeCompact .sapMMultiComboBoxShadowDiv{height:1.625rem}.sapMMultiComboBoxHasToken .sapMMultiComboBoxInputInner::-webkit-input-placeholder{color:transparent}.sapMMultiComboBoxHasToken .sapMMultiComboBoxInputInner::-moz-placeholder{color:transparent}.sapMMultiComboBoxHasToken .sapMMultiComboBoxInputInner:-ms-input-placeholder{color:transparent}.sapMMultiComboBoxHasToken>.sapMInputBasePlaceholder{color:transparent;max-width:0}.sapMMultiComboBox>.sapMInputBasePlaceholder{z-index:1}.sapMMultiComboBox .sapMComboBoxBaseArrow{z-index:2}.sapMMultiComboBoxInputContainer>input.sapMComboBoxBaseInputInner{height:2.375rem;padding-right:0}.sapUiSizeCompact .sapMMultiComboBoxInputContainer>input.sapMComboBoxBaseInputInner{height:1.625rem;padding-right:0}.sapMMultiComboBox.sapMInputBaseWarning .sapMMultiComboBoxBorder,.sapMMultiComboBox.sapMInputBaseError .sapMMultiComboBoxBorder,.sapMMultiComboBox.sapMInputBaseSuccess .sapMMultiComboBoxBorder{border-width:2px;padding:0 0.6875rem}.sapMMultiComboBox.sapMInputBaseError .sapMMultiComboBoxBorder{border-color:#e52929;height:2.25rem}.sapMMultiComboBox.sapMInputBaseWarning .sapMMultiComboBoxBorder{border-color:#f0ab00;height:2.25rem}.sapMMultiComboBox.sapMInputBaseSuccess .sapMMultiComboBoxBorder{border-color:#008a3b;height:2.25rem}.sapMMultiComboBox.sapMInputBaseError .sapMMultiComboBoxInputInner,.sapMMultiComboBox.sapMInputBaseWarning .sapMMultiComboBoxInputInner,.sapMMultiComboBox.sapMInputBaseSuccess .sapMMultiComboBoxInputInner{height:2.25rem}.sapMMultiComboBox.sapMInputBaseError .sapMComboBoxBaseArrow,.sapMMultiComboBox.sapMInputBaseWarning .sapMComboBoxBaseArrow,.sapMMultiComboBox.sapMInputBaseSuccess .sapMComboBoxBaseArrow{height:2.25rem;line-height:2.375rem}.sapUiSizeCompact .sapMMultiComboBox.sapMInputBaseWarning .sapMMultiComboBoxBorder,.sapUiSizeCompact .sapMMultiComboBox.sapMInputBaseError .sapMMultiComboBoxBorder,.sapUiSizeCompact .sapMMultiComboBox.sapMInputBaseSuccess .sapMMultiComboBoxBorder{padding-left:0.1875rem;height:1.375rem}.sapUiSizeCompact .sapMMultiComboBox.sapMInputBaseError .sapMMultiComboBoxBorder{border-color:#e52929}.sapUiSizeCompact .sapMMultiComboBox.sapMInputBaseWarning .sapMMultiComboBoxBorder{border-color:#f0ab00}.sapUiSizeCompact .sapMMultiComboBox.sapMInputBaseSuccess .sapMMultiComboBoxBorder{border-color:#008a3b}.sapUiSizeCompact .sapMMultiComboBox.sapMInputBaseError .sapMMultiComboBoxInputInner,.sapUiSizeCompact .sapMMultiComboBox.sapMInputBaseWarning .sapMMultiComboBoxInputInner,.sapUiSizeCompact .sapMMultiComboBox.sapMInputBaseSuccess .sapMMultiComboBoxInputInner{height:1.375rem}.sapUiSizeCompact .sapMMultiComboBox.sapMInputBaseError .sapMComboBoxBaseArrow,.sapUiSizeCompact .sapMMultiComboBox.sapMInputBaseWarning .sapMComboBoxBaseArrow,.sapUiSizeCompact .sapMMultiComboBox.sapMInputBaseSuccess .sapMComboBoxBaseArrow{height:1.375rem;line-height:1.5rem}.sapMMultiComboBoxInputContainer>.sapMComboBoxBaseArrow,.sapMMultiComboBoxInputContainer>.sapMComboBoxBaseBar::before{top:0;right:0}.sapUiSizeCompact .sapMMultiComboBoxInputContainer>.sapMComboBoxBaseArrow,.sapUiSizeCompact .sapMMultiComboBoxInputContainer>.sapMComboBoxBaseBar::before{top:0}.sap-desktop .sapMMultiComboBoxList li.sapMComboBoxBaseItem:focus{outline:1px dotted #005483}.sap-desktop li.sapMMultiComboBoxItemRangeSelection{background-color:#f0f0f0}.sapMMultiInput:not(.sapMMultiInputNotEditable) .sapMInputValHelp>.sapMInputValHelpInner:hover,.sapMMultiInput:not(.sapMMultiInputNotEditable) .sapMInputValHelp>.sapMInputValHelpInner:focus{background-color:rgba(222,222,222,0.5)}.sapMMultiInput:not(.sapMMultiInputNotEditable) .sapMInputValHelp>.sapMInputValHelpInner:active{background-color:#007cc0;color:#ffffff;outline:1px dotted #ffffff}.sapMMultiInputNotEditable .sapMMultiInputBorder{background:transparent;border:transparent}.sapMMultiInputBorder{border-radius:0;background:#ffffff;border:1px solid #c0c0c0;height:2.5rem;padding-left:0.375rem}.sap-desktop .sapMMultiInputMultiModeBorder{height:auto;max-height:10.375rem;overflow-y:auto;z-index:1}.sapUiSizeCompact .sapMMultiInputBorder{height:1.625rem;padding-left:0.25rem}.sapMMultiInputMultiModeBorder .sapMInputBaseInner{border:1px}.sap-desktop .sapUiSizeCompact .sapMMultiInputMultiModeBorder{height:auto;max-height:7rem;overflow-y:auto}.sapMMultiInputNotEditable .sapMMultiInputBorder:hover{border-color:transparent}.sapMInputFocused:not(.sapMMultiInputNotEditable) .sapMMultiInputBorder,.sapMMultiInputBorder:hover{border-color:#007cc0}.sapMMultiInputShadowDiv{font-size:0.875rem;font-family:Arial,Helvetica,sans-serif}.sapMMultiInput.sapMInputBaseWarning .sapMMultiInputBorder,.sapMMultiInput.sapMInputBaseError .sapMMultiInputBorder,.sapMMultiInput.sapMInputBaseSuccess .sapMMultiInputBorder{border-width:2px}.sapMMultiInput.sapMInputBaseWarning .sapMMultiInputBorder{border-color:#f0ab00}.sapMMultiInput.sapMInputBaseError .sapMMultiInputBorder{border-color:#e52929}.sapMMultiInput.sapMInputBaseSuccess .sapMMultiInputBorder{border-color:#008a3b}.sapMMultiInputInputContainer>input,.sapMMultiInputShadowDiv{border:0 transparent;min-width:2.4rem;background:transparent}.sapMMultiInput>.sapMInputBasePlaceholder{width:calc(97.625%)}.sapUiSizeCompact .sapMMultiInputInputContainer>input,.sapUiSizeCompact .sapMMultiInputShadowDiv{min-width:1.9rem;height:1.5rem}.sapMMultiInput .sapMInputBaseInner{padding-left:0.0rem;padding-right:0.1rem}.sapUiSizeCompact .sapMMultiInput .sapMInputBaseInner{padding-left:0.0rem;padding-right:0.1rem}.sapUiSizeCompact .sapMMultiInput>.sapMInputBasePlaceholder{width:calc(98.5%)}.sapMObjectAttributeDiv{outline:none}.sapMLIBActive .sapMObjectAttributeDiv{color:#ffffff}.sap-desktop .sapMObjectAttributeActive:focus{outline:none}.sap-desktop .sapMObjectAttributeActive:focus>.sapMText{outline:1px dotted #005483;outline-offset:-1px}.sapMOHR .sapMOHRAttr .sapMObjectAttributeTitle,.sapMOHR .sapMOHRAttr .sapMObjectAttributeText{display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:0.875rem;font-weight:normal;color:#666666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;float:left;max-width:50%}.sapMOHR .sapMOHRAttr .sapMObjectAttributeTitle{padding-right:0.5rem;max-width:50%;-moz-box-sizing:border-box;box-sizing:border-box}.sapMOHR .sapMOHRAttr .sapMObjectAttributeColon{display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:0.875rem;font-weight:normal;color:#666666;float:left;white-space:nowrap;max-width:0.5rem;margin-left:-0.5rem;overflow:auto}.sapMOHR .sapMObjectAttributeActive .sapMObjectAttributeText{color:#00679e;cursor:pointer}.sapMOHR .sapMObjectAttributeActive .sapMObjectAttributeText:active,.sapMOHR .sapMObjectAttributeActive .sapMObjectAttributeText:hover,.sapMOHR .sapMObjectAttributeActive:focus .sapMObjectAttributeText{text-decoration:underline}.sapMOHR .sapMObjectAttributeActive:focus .sapMObjectAttributeText{outline:1px dotted #005483;outline-offset:-1px}.sapMOHR .sapMOHRAttr .sapMObjectAttributeDiv{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-height:1rem}.sapMOH .sapMOHAttr .sapMObjectAttributeDiv{max-height:2rem;overflow:hidden}.sapMOH .sapMOHAttr .sapMObjectAttributeTitle,.sapMOH .sapMOHAttr .sapMObjectAttributeText,.sapMOH .sapMOHAttr .sapMObjectAttributeColon{font-family:Arial,Helvetica,sans-serif;font-size:0.875rem;font-weight:normal;color:#666666}.sapMOH .sapMObjectAttributeActive .sapMObjectAttributeText{color:#00679e;cursor:pointer}.sapMOH .sapMObjectAttributeActive .sapMObjectAttributeText:active,.sapMOH .sapMObjectAttributeActive .sapMObjectAttributeText:hover{text-decoration:underline}.sapMOH .sapMObjectAttributeActive:focus .sapMObjectAttributeText{outline:1px dotted #005483;outline-offset:-1px}.sapMOHC.sapMOHBgTransparent{background-color:transparent}.sapMOHC.sapMOHBgSolid{background-color:#ffffff;border-bottom:0.063rem #e5e5e5}.sapMOHC.sapMOHBgTranslucent{background:rgba(255,255,255,0.6)}.sapMOHIntro{color:#666666;font-size:0.875rem}.sapMOHTitle.sapMOHTitleActive>h1 .sapMText{color:#00679e;cursor:pointer}a.sapMOHTitle.sapMOHTitleActive:hover>h1 .sapMText{text-decoration:underline}.sapMOHTitle h1 .sapMText{color:#333333}.sap-phone .sapMOHTitle h1>.sapMText{font-size:1.125rem}.sapMOHNumberDiv .sapMObjectNumberText{font-family:Arial,Helvetica,sans-serif;font-size:1.375rem;font-weight:normal}.sapMOHNumberDiv .sapMObjectNumberUnit{font-size:0.75rem;padding:0;display:block}.sapMOHC .sapMOHNumberDiv .sapMObjectNumberText{font-family:Arial,Helvetica,sans-serif;font-size:1.375rem}.sapMOHBottomRow{font-size:0.875rem}.sapMOH .sapMObjectAttributeDiv{color:#666666}.sapMOH .sapMObjectAttributeActive{color:#00679e}.sapMOHNumberStateNone{color:#333333}.sapMOHNumberStateError{color:#cc1919}.sapMOHNumberStateWarning{color:#d14900}.sapMOHNumberStateSuccess{color:#007833}.sapMOHIcon .sapUiIcon{color:#666666}.sapMOHTitleArrow{color:#666666}.sapMOHTitleArrow>.sapUiIcon{outline-offset:-1px}.sapMOHIntro.sapMOHIntroActive>.sapMLnk:active{background:none}a.sapMOHTitleActive:focus,.sapMOHTitleIcon>.sapMOHIcon:focus,.sapMOHTitleArrow .sapUiIcon:focus{outline:1px dotted #005483}.sap-desktop .sapMOHTitleArrow .sapUiIcon:hover{background-color:#e5e5e5}.sapMOHC .sapMOHTitleArrow .sapUiIcon:active,.sapMOH .sapMOHTitleArrow .sapUiIcon:active{background-color:#007cc0;color:#ffffff}html[data-sap-ui-browser^="ie"] .sapMOH .sapMOHTitleActive,html[data-sap-ui-browser^="ie"] .sapMOH .sapMOHTitle{border:1px solid transparent;margin-top:0.125rem;padding-top:0.125rem;padding-left:0.125rem}html[data-sap-ui-browser^="ie"] .sapMOH a.sapMOHTitleActive:focus{outline:none;border:1px dotted #005483}html[data-sap-ui-browser^="ie"] .sapMOH .sapMOHIntro{padding:0.125rem 0.125rem 0.125rem 0.25rem}html[data-sap-ui-browser^="ie"] .sapMOH .sapMObjectAttributeDiv{padding:0.25rem 0.25rem 0.25rem 0.25rem}html[data-sap-ui-browser^="ie"] .sapMOH .sapMObjStatusMarker .sapUiIcon:focus{outline:none}.sapMOHR{background:rgba(255,255,255,0.6);border-bottom:1px solid #e5e5e5;box-shadow:0 1px 0 rgba(0,0,0,0.05)}.sapMOHRTitle h1{font-family:Arial,Helvetica,sans-serif;font-size:1.375rem;font-weight:normal;color:#333333}.sap-phone .sapMOHRTitle h1,.sap-desktop.sapUiMedia-Std-Phone .sapMOHRTitle h1{font-size:1.125rem}.sapMOHRIcon .sapUiIcon{font-family:SAP-icons;font-size:2.5rem;font-weight:normal;color:#666666}.sapMOHRTitleArrow .sapUiIcon{color:#666666}.sap-desktop .sapMOHRTitleArrow .sapUiIcon:hover{background-color:#e5e5e5}.sapMOHRTitleIcon .sapMOHRTitleFollowArrow .sapMOHRTitleArrow .sapUiIcon:active{background-color:#007cc0;color:#ffffff}.sapMOHRTitleArrow .sapUiIcon:focus{outline:#005483 dotted 1px;outline-offset:-1px}.sapMOHRIcon.sapMPointer:focus{outline:#005483 dotted 1px;outline-offset:-1px}.sapMOHR .sapMObjStatusMarker{color:#007cc0}.sapMOHRIntro{font-family:Arial,Helvetica,sans-serif;font-size:0.875rem;font-weight:normal;color:#666666}.sapMOHRTitleActive .sapMOHRTitleText{cursor:pointer;color:#00679e;text-decoration:none}.sapMOHRTitleActive .sapMOHRTitleText:focus{outline:#005483 dotted 1px;outline-offset:-1px}.sapMOHRIntro.sapMOHRIntroActive>.sapMLnk:active{background:none}html[data-sap-ui-browser^="ie"] .sapMOHR .sapMOHRTitleText{border:1px solid transparent;margin-top:0.125rem;padding-top:0.125rem;padding-left:0.125rem}html[data-sap-ui-browser^="ie"] .sapMOHR .sapMOHRTitleActive .sapMOHRTitleText:focus{outline:none;border:1px dotted #005483}html[data-sap-ui-browser^="ie"] .sapMOHR .sapMOHRIcon.sapMPointer{border:1px solid transparent}html[data-sap-ui-browser^="ie"] .sapMOHR .sapMOHRIcon.sapMPointer:focus{outline:none;border:1px dotted #005483}html[data-sap-ui-browser^="ie"] .sapMOHR .sapMOHRIntro,html[data-sap-ui-browser^="ie"] .sapMOHR .sapMOHRIntroActive{padding:0.125rem}html[data-sap-ui-browser^="ie"] .sapMOHR .sapMOHRIntro span,html[data-sap-ui-browser^="ie"] .sapMOHR .sapMOHRIntroActive span,html[data-sap-ui-browser^="ie"] .sapMOHR .sapMOHRIntro a,html[data-sap-ui-browser^="ie"] .sapMOHR .sapMOHRIntroActive a{margin:0.125rem}html[data-sap-ui-browser^="ie"] .sapMOHR .sapMOHRStates{padding-left:0.125rem}html[data-sap-ui-browser^="ie"] .sapMOHR .sapMObjStatusMarker .sapUiIcon:focus{outline:none}html[data-sap-ui-browser^="ie"] .sapMOHR .sapMObjectAttributeDiv{padding:0.125rem 0.125rem 0 0.125rem}html[data-sap-ui-browser^="ie"] .sapMOHR .sapMOHRStatus{padding:0.125rem 0.125rem 0.5rem 0.125rem}.sapMOHR .sapMObjectNumberText{font-family:Arial,Helvetica,sans-serif;font-size:1.375rem;font-weight:normal}.sapMOHR .sapMObjectNumberUnit{font-family:Arial,Helvetica,sans-serif;font-size:0.75rem;font-weight:normal}.sapMOHR .sapMOHRAttr,.sapMOHR .sapMOHRStatus,.sapMOHR .sapMObjStatus{font-family:Arial,Helvetica,sans-serif;font-size:0.875rem;font-weight:normal;color:#666666}.sapMOHR .sapMOHRAttr,.sapMOHR .sapMOHRStatus{padding-bottom:0.5rem}.sapMOHRStatus .sapMObjStatusNone .sapMObjStatusText{color:#000000}.sapMOHRStatus .sapMObjStatusSuccess .sapMObjStatusText{color:#007833}.sapMOHRStatus .sapMObjStatusError .sapMObjStatusText{color:#cc1919}.sapMOHRStatus .sapMObjStatusWarning .sapMObjStatusText{color:#d14900}.sapMLIBActive .sapMObjectIdentifier{color:#ffffff}.sapUiSizeCompact .sapMListTblCell>.sapMObjectIdentifier{margin:.5rem 0}.sapMObjLIntro{font-family:Arial,Helvetica,sans-serif;color:#666666;font-size:0.875rem;padding-bottom:.75rem}.sapMText.sapMObjLTitle{color:#333333;font-size:1.125rem;font-weight:normal;line-height:1.5rem}.sapMObjLIcon{color:#666666}.sapMLIBActive .sapMObjLIcon{color:#ffffff}.sapMObjLIcon{margin-top:2px}.sapMObjLIconDiv{float:left;margin-right:.75rem;width:3rem;height:3rem;text-align:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMObjLNumber{font-family:Arial,Helvetica,sans-serif;font-size:1.375rem;font-weight:normal;color:#333333}.sapMObjLNumberUnit{font-family:Arial,Helvetica,sans-serif;font-size:0.75rem}.sapMObjLItem .sapMObjLAttrDiv{color:#666666}.sapMObjLAdditAttribs{color:#666666}li.sapMLIB.sapMLIBNoFlex.sapMObjLItem>.sapMLIBContent>.sapMLIBContentNF>div{padding-top:1rem;padding-bottom:1rem}li.sapMLIB.sapMLIBNoFlex.sapMObjLItem>.sapMLIBContent>.sapMLIBContentNF .sapMObjLIntro,li.sapMLIB.sapMLIBNoFlex.sapMObjLItem>.sapMLIBContent>.sapMLIBContentNF .sapMObjLAttrRow{display:table;table-layout:fixed;width:100%}li.sapMLIB.sapMLIBNoFlex.sapMObjLItem>.sapMLIBContent>.sapMLIBContentNF .sapMObjLAttrRow>div{display:table-cell}li.sapMLIB.sapMLIBNoFlex.sapMObjLItem>.sapMLIBContent>.sapMLIBContentNF .sapMObjLIntro>span{display:table-cell;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sapMObjLAttrDiv.sapMObjAttrWithMarker{padding-top:0.1875rem}.sapMObjLNumberStateNone{color:#333333}.sapMObjLNumberStateError{color:#cc1919}.sapMObjLNumberStateWarning{color:#d14900}.sapMObjLNumberStateSuccess{color:#007833}.sapMObjStatusMarkerLocked{color:#004990}.sapMLIBActive .sapMObjectNumber{color:#ffffff}.sapMObjectNumberStatusError{color:#cc1919}.sapMObjectNumberStatusWarning{color:#d14900}.sapMObjectNumberStatusSuccess{color:#007833}.sapUiForm .sapMObjStatusText{overflow:hidden;font-size:0.875rem;line-height:normal;display:inline-block;-webkit-user-select:text;-ms-user-select:text;user-select:text}.sapMObjStatus{color:#000000}.sapMObjStatus>.sapMObjStatusTitle{color:#666666}.sapMObjStatusNone>.sapMObjStatusText,.sapMObjStatusNone>.sapMObjStatusIcon{color:#000000}.sapMObjStatusError>.sapMObjStatusText,.sapMObjStatusError>.sapMObjStatusIcon{color:#cc1919}.sapMObjStatusWarning>.sapMObjStatusText,.sapMObjStatusWarning>.sapMObjStatusIcon{color:#d14900}.sapMObjStatusSuccess>.sapMObjStatusText,.sapMObjStatusSuccess>.sapMObjStatusIcon{color:#007833}.sapUiTableCell .sapMObjStatus{font-size:0.875rem}.sapMLIBActive .sapMObjStatusNone>.sapMObjStatusText,.sapMLIBActive .sapMObjStatusNone>.sapMObjStatusIcon,.sapMLIBActive .sapMObjStatusError>.sapMObjStatusText,.sapMLIBActive .sapMObjStatusError>.sapMObjStatusIcon,.sapMLIBActive .sapMObjStatusWarning>.sapMObjStatusText,.sapMLIBActive .sapMObjStatusWarning>.sapMObjStatusIcon,.sapMLIBActive .sapMObjStatusSuccess>.sapMObjStatusText,.sapMLIBActive .sapMObjStatusSuccess>.sapMObjStatusIcon{color:#ffffff}.sapUiSizeCondensed .sapUiTableCell>.sapMObjStatus>.sapMObjStatusText{box-sizing:border-box;padding:0 0.5rem;line-height:1.5rem;vertical-align:middle;font-size:0.875rem}.sapMP13nColumnsPanel{color:#008000;border:0.0625rem solid lightgrey}.sapMP13nColumnsPanel .sapMLIB.sapMLIBSelected,.sapMP13nColumnsPanel .sapMLIB.sapMLIBSelected>td{background-color:transparent}.sapMP13nColumnsPanel .sapMListBGTranslucent .sapMLIB.sapMListTblRow.sapMP13nColumnsPanelItemSelected,.sapMP13nColumnsPanel .sapMListBGTranslucent .sapMLIB.sapMListTblRow.sapMP13nColumnsPanelItemSelected:focus{background-color:#e6f2f9}.sapMP13nColumnsPanel .sapMLIBActive .sapMText,.sapMP13nColumnsPanel .sapMLIBActive .sapMListTblCell .sapMText{color:#333333}.sapMP13nColumnsPanel .sapMLIBActive .sapMCbBg,.sapMP13nColumnsPanel .sapMLIBActive.sapMLIB,.sapMP13nColumnsPanel .sapMLIBActive.sapMLIB>td{background-color:transparent}.sapMP13nColumnsPanel .sapMLIBActive .sapMCbBg,.sapMP13nColumnsPanel .sapMLIBActive .sapMCbBg.sapMCbMarkChecked,.sapMP13nColumnsPanel .sapMLIBActive .sapMCbBg.sapMCbBgDis,.sapMP13nColumnsPanel .sapMLIBActive .sapMCbBg.sapMCbBgDis.sapMCbMarkChecked{border-color:#c0c0c0}.sapMP13nColumnsPanel .sapMLIBActive .sapMCbBg.sapMCbMarkChecked::before{color:#007cc0}.sap-desktop .sapMP13nColumnsPanel .sapMLIBSelected:not(.sapMLIBActive):not(.sapMALI):hover,.sap-desktop .sapMP13nColumnsPanel .sapMLIBSelected:not(.sapMLIBActive):not(.sapMALI):hover>td{background-color:#f0f0f0}.sapMPageBgSolid{background-color:#ffffff}.sapMPage.sapUiStdPage>section>.sapMPageScroll{padding:1rem}.sapMPage>.sapMPageHeader + .sapMPageSubHeader + section{top:6em}.sapMPage>.sapMPageHeader + section,.sapMPage>.sapMPageSubHeader + section,.sapMPage>.sapMPageHeader + .sapUiHiddenPlaceholder + section{top:3em}.sapMPageWithFooter>section{bottom:3em}.sapMBar-CTX .sapMBarLeft>.sapMImg.sapMPageAppIcon{max-height:1.375em;max-width:1.375em;margin:0.8125em}.sapMPage .sapMScrollbarV>div{background-color:rgba(0,0,0,0.5);border-color:#ffffff}.sapMPageHeader::before{content:"";position:absolute;width:100%;top:0;border-top:0.25rem solid #009de0;z-index:7}.sapMPopover .sapMPageHeader::before{display:none}@media (min-height:3401px){.sap-desktop .sapMShell .sapMPage.sapMPageHideHeaderWhenShellHeader header.sapMIBar{display:none}}.sap-tablet .sapUiFioriObjectPage>section,.sap-desktop .sapUiFioriObjectPage>section{padding-bottom:1rem}.sapUiSizeCompact{}.sapUiSizeCompact .sapMPageWithHeader>section{top:2.5rem}.sapUiSizeCompact .sapMPageHeader.sapMIBar,.sapUiSizeCompact .sapMPageFooter.sapMIBar{height:2.5rem}.sapUiSizeCompact .sapMPageHeader.sapMIBar .sapMBarLeft,.sapUiSizeCompact .sapMPageFooter.sapMIBar .sapMBarLeft,.sapUiSizeCompact .sapMPageHeader.sapMIBar .sapMBarRight,.sapUiSizeCompact .sapMPageFooter.sapMIBar .sapMBarRight,.sapUiSizeCompact .sapMPageHeader.sapMIBar .sapMBarPH,.sapUiSizeCompact .sapMPageFooter.sapMIBar .sapMBarPH{height:2.5rem;padding-top:0.25rem;padding-bottom:0.25rem}.sapUiSizeCompact .sapMPageWithFooter>section{bottom:2.5rem}.sapUiSizeCompact .sapMPageWithSubHeader>section{top:2rem}.sapUiSizeCompact .sapMPageWithHeader.sapMPageWithSubHeader>section{top:4.5rem}.sapUiSizeCompact .sapMBar-CTX .sapMBarLeft>.sapMImg.sapMPageAppIcon{max-height:1rem;max-width:1rem;margin:0.5rem}.sapMPanelBG{background-color:rgba(255,255,255,0.8)}.sapMPanelHdr:not(.sapMPanelHdrExpandable),.sapMPanelWrappingDiv,.sapMPanelWrappingDivTb{border-bottom:1px solid #cdcdcd}.sapMPanelHdr{font-weight:normal;font-size:1rem;font-family:Arial,Helvetica,sans-serif;text-shadow:0 0.0625rem 0 #ffffff;color:#333333;background-color:rgba(255,255,255,0)}.sapMPanelContent{border-bottom:1px solid #e5e5e5}.sapMPanelExpandableIcon{color:#666666}.sapMPanelExpandableIcon:focus{outline:1px dotted #005483;outline-offset:-0.75rem}.sapMPopover{background-color:#ffffff;border:1px rgba(154,154,154,0.6) solid;-webkit-box-shadow:0 0 30px 2px rgba(0,0,0,0.15);-moz-box-shadow:0 0 30px 2px rgba(0,0,0,0.15);box-shadow:0 0 30px 2px rgba(0,0,0,0.15);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.sapMPopover .sapMPopoverCont{background-color:transparent;margin:0}.sapMPopover>.sapMPopoverHeader>.sapMBarMiddle>.sapMBarPH{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMPopover>.sapMPopoverHeader>.sapMBarMiddle>.sapMBarPH>.sapMLabel{display:inline-block}.sapMPopover>.sapMPopoverHeader>.sapMBarLeft>.sapMBtn,.sapMPopover>.sapMPopoverHeader>.sapMBarRight>.sapMBtn{position:relative}.sapMPopoverSpecialFooter>.sapMBarMiddle{display:block;height:100%;padding:0 0.25rem;box-sizing:border-box}.sapMPopoverSpecialFooter>.sapMBarMiddle>.sapMBarPH{display:block;padding:0}.sapMPopoverSpecialFooter>.sapMBarLeft,.sapMPopoverSpecialFooter>.sapMBarRight{display:none}html[data-sap-ui-browser='ie9'] .sapMPopoverSpecialFooter>.sapMBarMiddle>.sapMBarPH{width:auto!important}.sapMPopoverSpecialFooter>.sapMBarMiddle>.sapMBarPH>.sapMBtn{width:50%;padding-left:0.25rem}.sapMPopoverSpecialFooter>.sapMBarMiddle>.sapMBarPH .sapMBtn:last-child{margin-left:0}.sapMPopoverSpecialFooter>.sapMBarMiddle>.sapMBarPH .sapMBtn:first-child{padding-right:0.25rem;padding-left:0}.sapMPopoverArr{display:block;border-style:solid;border-width:16px;position:absolute;width:0;height:0}.sapMPopoverArr:after{content:"";display:block;position:absolute;width:0;height:0;border-style:solid;border-width:16px}.sapMPopoverArrDown{left:20px;bottom:-33px}.sapMPopoverArrUp{left:20px;top:-33px}.sapMPopoverArrLeft{top:20px;left:-33px}.sapMPopoverArrRight{top:20px;right:-33px}.sapMPopoverArrDown{border-color:transparent;border-top-color:rgba(154,154,154,0.6)}.sapMPopoverArrDown:after{border-color:transparent;border-top-color:#ffffff;bottom:-15px;left:-16px}.sapMPopoverWithFooter>.sapMPopoverArrDown{border-top-color:#e5e5e5}.sapMPopoverWithFooter>.sapMPopoverArrDown:after{border-top-color:rgba(54,62,67,0.96)}.sap-desktop .sapMPopoverWithFooter>.sapMPopoverArrDown:after{border-top-color:rgba(54,62,67,0.96)}.sapMPopoverArrUp{border-color:transparent;border-bottom-color:rgba(154,154,154,0.6)}.sapMPopoverArrUp:after,.sapMPopoverWithoutBar.sapMPopoverNav.sapMPopoverWithHeaderCont>.sapMPopoverArrUp:after,.sapMPopoverWithoutBar.sapMPopoverPage.sapMPopoverWithHeaderCont>.sapMPopoverArrUp:after{border-color:transparent;border-bottom-color:#f2f2f2;bottom:-17px;left:-16px}.sapMPopoverWithoutBar>.sapMPopoverArrUp:after{border-color:transparent;border-bottom-color:#ffffff}.sapMPopoverArrLeft{border-color:transparent;border-right-color:rgba(154,154,154,0.6)}html[dir=rtl][data-sap-ui-browser='ie9'] .sapMPopoverArrRight:after,.sapMPopoverArrLeft:after{border-color:transparent;border-right-color:#ffffff;top:-16px;left:-15px}html[dir=rtl][data-sap-ui-browser='ie9'] .sapMPopoverArrLeft:after{right:-15px}html[dir=rtl][data-sap-ui-browser='ie9'] .sapMPopoverHeaderAlignArr.sapMPopoverArrRight:after,.sapMPopoverHeaderAlignArr.sapMPopoverArrLeft:after{border-color:transparent;border-right-color:#f2f2f2}html[dir=rtl][data-sap-ui-browser='ie9'] .sapMPopoverCrossArr.sapMPopoverArrLeft:after,.sapMPopoverCrossArr.sapMPopoverArrLeft:after{border-color:transparent;border-right-color:rgba(154,154,154,0.6)}html[dir=rtl][data-sap-ui-browser='ie9'] .sapMPopoverFooterAlignArr.sapMPopoverArrRight:after,.sapMPopoverFooterAlignArr.sapMPopoverArrLeft:after{border-color:transparent;border-right-color:rgba(54,62,67,0.96)}.sapMPopoverArrRight{border-color:transparent;border-left-color:rgba(154,154,154,0.6)}html[dir=rtl][data-sap-ui-browser='ie9'] .sapMPopoverArrLeft:after,.sapMPopoverArrRight:after{border-color:transparent;border-left-color:#ffffff;top:-16px;left:-17px}html[dir=rtl][data-sap-ui-browser='ie9'] .sapMPopoverArrRight:after{left:auto;right:-15px}html[dir=rtl][data-sap-ui-browser='ie9'] .sapMPopoverHeaderAlignArr.sapMPopoverArrLeft:after,.sapMPopoverHeaderAlignArr.sapMPopoverArrRight:after{border-color:transparent;border-left-color:#f2f2f2}html[dir=rtl][data-sap-ui-browser='ie9'] .sapMPopoverCrossArr.sapMPopoverArrLeft:after,.sapMPopoverCrossArr.sapMPopoverArrRight:after{border-color:transparent;border-left-color:rgba(154,154,154,0.6)}html[dir=rtl][data-sap-ui-browser='ie9'] .sapMPopoverFooterAlignArr.sapMPopoverArrLeft:after,.sapMPopoverFooterAlignArr.sapMPopoverArrRight:after{border-color:transparent;border-left-color:rgba(51,51,51,0.9)}.sapMPopover.sapUiSizeCompact{}.sapMPopover.sapUiSizeCompact .sapMPopoverArr{border-width:8px}.sapMPopover.sapUiSizeCompact .sapMPopoverArr:after{border-width:8px}.sapMPopover.sapUiSizeCompact .sapMPopoverArrDown{left:16px;bottom:-17px}.sapMPopover.sapUiSizeCompact .sapMPopoverArrUp{left:20px;top:-17px}.sapMPopover.sapUiSizeCompact .sapMPopoverArrLeft{top:16px;left:-17px}.sapMPopover.sapUiSizeCompact .sapMPopoverArrRight{top:16px;right:-17px}.sapMPopover.sapUiSizeCompact .sapMPopoverArrDown:after{border-color:transparent;border-top-color:#ffffff;bottom:-7px;left:-8px}.sapMPopover.sapUiSizeCompact .sapMPopoverArrUp:after,.sapMPopover.sapUiSizeCompact .sapMPopoverWithoutBar.sapMPopoverNav.sapMPopoverWithHeaderCont>.sapMPopoverArrUp:after,.sapMPopover.sapUiSizeCompact .sapMPopoverWithoutBar.sapMPopoverPage.sapMPopoverWithHeaderCont>.sapMPopoverArrUp:after{bottom:-9px;left:-8px}.sapMPopover.sapUiSizeCompact .sapMPopoverArrLeft:after{top:-8px;left:-7px}.sapMPopover.sapUiSizeCompact .sapMPopoverArrRight:after{top:-8px;left:-9px}.sapMPopover.sapUiSizeCompact>header:first-of-type.sapMHeader-CTX,.sapMPopover.sapUiSizeCompact>footer:last-of-type.sapMFooter-CTX{height:2.5rem}.sapMPopover.sapUiSizeCompact>header:first-of-type.sapMHeader-CTX .sapMBarLeft,.sapMPopover.sapUiSizeCompact>footer:last-of-type.sapMFooter-CTX .sapMBarLeft,.sapMPopover.sapUiSizeCompact>header:first-of-type.sapMHeader-CTX .sapMBarRight,.sapMPopover.sapUiSizeCompact>footer:last-of-type.sapMFooter-CTX .sapMBarRight,.sapMPopover.sapUiSizeCompact>header:first-of-type.sapMHeader-CTX .sapMBarPH,.sapMPopover.sapUiSizeCompact>footer:last-of-type.sapMFooter-CTX .sapMBarPH{height:2.5rem;padding-top:0.25rem;padding-bottom:0.25rem}.sapMPI{outline:none;background:#ffffff;height:2.5rem}.sapMPIBarNeutral{background:-moz-linear-gradient(top,#008cda 0,#006ca7 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#008cda),color-stop(100%,#006ca7));background:-webkit-linear-gradient(top,#008cda 0,#006ca7 100%);background:-ms-linear-gradient(top,#008cda 0,#006ca7 100%);background:linear-gradient(to bottom,#008cda 0,#006ca7 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#008cda,endColorstr=#006ca7,GradientType=0)}.sapMPIBarPositive{background:-moz-linear-gradient(top,#00923e 0,#005f28 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#00923e),color-stop(100%,#005f28));background:-webkit-linear-gradient(top,#00923e 0,#005f28 100%);background:-ms-linear-gradient(top,#00923e 0,#005f28 100%);background:linear-gradient(to bottom,#00923e 0,#005f28 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00923e,endColorstr=#005f28,GradientType=0)}.sapMPIBarNegative{background:-moz-linear-gradient(top,#e31c1c 0,#b51616 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#e31c1c),color-stop(100%,#b51616));background:-webkit-linear-gradient(top,#e31c1c 0,#b51616 100%);background:-ms-linear-gradient(top,#e31c1c 0,#b51616 100%);background:linear-gradient(to bottom,#e31c1c 0,#b51616 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#e31c1c,endColorstr=#b51616,GradientType=0)}.sapMPIBarCritical{background:-moz-linear-gradient(top,#eb5200 0,#b84000 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#eb5200),color-stop(100%,#b84000));background:-webkit-linear-gradient(top,#eb5200 0,#b84000 100%);background:-ms-linear-gradient(top,#eb5200 0,#b84000 100%);background:linear-gradient(to bottom,#eb5200 0,#b84000 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#eb5200,endColorstr=#b84000,GradientType=0)}.sapMPIText{font-family:Arial,Helvetica,sans-serif;font-weight:bold;line-height:2.25rem}.sapUiSizeCompact .sapMPI{height:1.625rem}.sapUiSizeCompact .sapMPIText{line-height:1.375rem}.sapUiSizeCondensed .sapMPI{height:1.5rem;margin:0}.sapUiSizeCondensed .sapMPIText{line-height:1.25rem}.sapMPullDown{position:relative;padding:0.6rem 1rem 0;font-size:0.875rem;overflow:hidden;cursor:pointer;color:#666666;background-color:#f2f2f2}.sapMPullDownNontouch{min-height:2rem;padding-bottom:0.1875rem;padding-left:0.8125rem;white-space:nowrap;text-overflow:ellipsis}.sapMPullDownTouch{min-height:3rem;border-bottom:1px solid #dddddd}.sapMPullDownTouch.sapMPullDownLogo{padding-top:4.125rem;height:3.25rem;line-height:3.75rem;background-image:none;background-repeat:no-repeat;background-position:center 1rem;background-size:5.5rem 2.75rem}.sapMPullDownCI{display:block;width:100%;height:3.125rem;overflow:hidden;margin:0 auto;text-align:center}.sapMPullDownCIImg{max-height:3.125rem}.sapMPullDownTouch>.sapMPullDownText{font-weight:bold}.sapMPullDownTouch>.sapMPullDownText,.sapMPullDownTouch>.sapMPullDownInfo{width:100%;display:block;text-align:center;line-height:1.5rem;box-sizing:border-box}.sapMPullDownNontouch>.sapMPullDownText{margin:0 0.875rem;text-transform:uppercase;vertical-align:middle}.sapMPullDownInfo{font-size:0.75rem;vertical-align:middle;color:#333333}.sapMPullDown>.sapMPullDownIcon::before{display:inline-block;font-family:SAP-icons;speak:none;float:left}.sapMPullDown.sapMLoading .sapMPullDownIcon::before{visibility:hidden}.sapMPullDownTouch>.sapMPullDownIcon{position:absolute;left:1rem;line-height:1rem;bottom:1.5rem}.sapMPullDownTouch>.sapMPullDownIcon::before{font-size:2em;color:#007cc0;content:'\e089';-webkit-transform-origin:center center;-webkit-transition-duration:250ms;-webkit-transition-property:-webkit-transform;transfrom-origin:center center;transition-duration:250ms;transition-property:transform;-webkit-transform:rotate(0deg);transform:rotate(0deg)}.sapMPullDownTouch.sapMFlip .sapMPullDownIcon::before{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.sapMPullDownNontouch>.sapMPullDownIcon{vertical-align:middle}.sapMPullDownNontouch>.sapMPullDownIcon::before{width:1.5rem;height:1.5rem;font-size:1.5em;content:'\e00a'}.sapMPullDown .sapMPullDownBusy{display:none;position:absolute;left:1rem;line-height:1rem;bottom:1rem}.sapMPullDownNontouch .sapMPullDownBusy{bottom:0.5rem}.sapMPullDown.sapMLoading .sapMPullDownBusy{display:block}.sapMRbB{font-size:1rem;height:2.875rem;width:2.875rem;padding:1px}.sapMRbBLabel{line-height:3rem;height:3rem}.sapMRbB .sapMRbBOut{height:1em;width:1em;border:2px solid #c0c0c0;background-color:#ffffff;margin:0.8125em;padding:1px}.sapMLIBActive .sapMRbB .sapMRbBOut{border:2px solid #ffffff}.sapMRbBInn{background-color:transparent;-webkit-user-select:none}.sapMRbB .sapMRbBInn{height:0.5em;width:0.5em;padding:1px;border-radius:1em;margin:0.1875em}.sapMRb:focus .sapMRbBOut{outline:1px dotted #005483}.sapMRbDis:focus .sapMRbBOut{outline:none}.sapMRbHoverable:hover{border-color:#007cc0}.sapMRb.sapMRbBTouched .sapMRbBOut{border-color:#007cc0}html[data-sap-ui-browser^="ie"] .sapMRbB .sapMRbBInn{margin:3px}.sapMRbSel .sapMRbBInn{background-color:#007cc0}.sapMLIBActive .sapMRbSel .sapMRbBInn{background-color:#ffffff}.sapMRbDis{opacity:0.5}.sapMRbErr.sapMRbSel .sapMRbBInn{background-color:#e52929}.sapMRbErr .sapMRbBOut{border-color:#e52929}.sapMRbWarn.sapMRbSel .sapMRbBInn{background-color:#000000}.sapMRbWarn .sapMRbBOut{border-color:#f0ab00}.sapMRbRo .sapMRbBOut{background-color:#f2f2f2;border-color:#c0c0c0}.sapMRbRo.sapMRbSel .sapMRbBInn{background-color:#666666}.sapUiSizeCompact .sapMRb{height:2rem}.sapUiSizeCompact .sapMRbB{font-size:1rem;height:1.875rem;width:1.875rem}.sapUiSizeCompact .sapMRbB .sapMRbBOut{height:0.75rem;width:0.75rem;border-width:1px;margin:0.5rem}.sapUiSizeCompact .sapMRbB .sapMRbBInn{height:0.25rem;width:0.25rem;margin:0.1875rem}.sapUiSizeCompact .sapMRbBLabel{line-height:2rem;height:2rem}.sapUiSizeCondensed .sapMRb{height:1.5rem;vertical-align:top}.sapUiSizeCondensed .sapMRbB{font-size:1rem;height:1.375rem;width:1.375rem}.sapUiSizeCondensed .sapUiTableCell>.sapMRb>.sapMRbB{margin:0 0.25rem}.sapUiSizeCondensed .sapMRbB .sapMRbBOut{height:0.75rem;width:0.75rem;border-width:1px;margin:0.1875rem}.sapUiSizeCondensed .sapMRbB .sapMRbBInn{height:0.25rem;width:0.25rem;margin:0.1875rem}.sapUiSizeCondensed .sapMRbBLabel{line-height:1.5rem;height:1.5rem}.sapUiRbG>.sapUiRb:focus,.sapUiRbGCol>.sapUiRb:focus{outline:1px dotted #005483}.sapMRIIcon{height:1.375rem;overflow:hidden}.sapMRIIconSel{color:#ffc32e;-webkit-text-stroke:1px #e1a000}.sapMRIIconUnsel{color:#cccccc;-webkit-text-stroke:1px #bfbfbf}.sapMRIGrd>.sapMRIIconSel{background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffd671),color-stop(100%,#f0ab00));background:-webkit-linear-gradient(top,#ffd671 0,#f0ab00 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.sapMRIGrd>.sapMRIIconUnsel{background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffffff),color-stop(100%,#e5e5e5));background:-webkit-linear-gradient(top,#ffffff 0,#e5e5e5 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.sapMRIDisabled{outline:none;cursor:default}html[data-sap-ui-browser^='ie10'] .sapMRIDisabled .sapMRIIconSel{text-shadow:0 0 0 #000000}.sapMRIIconHov{color:#f0ab00;-webkit-text-stroke:1px #e1a000}html[data-sap-ui-browser^='ie10'] .sapMRIIconHov{text-shadow:0 0 0 #000000}html[data-sap-ui-browser^='ie10'] .sapMRIIconUnsel{text-shadow:0 0 0 #000000}.sapMRI .sapUiIcon,.sapMRI .sapMImg{padding-right:0.25rem}.sapMRI .sapUiIcon:last-child,.sapMRI .sapMImg:last-child{padding-right:0rem}.sap-desktop .sapMRI:focus:not(.sapMRIDisabled){outline:1px dotted #005483;outline-offset:-1px}.sap-desktop[data-sap-ui-browser^="ie"] .sapMRI:focus{outline:none;position:relative}.sap-desktop[data-sap-ui-browser^="ie"] .sapMRI:focus:not(.sapMRIDisabled)::before{content:" ";box-sizing:border-box;width:100%;height:100%;position:absolute;left:0;top:0;border:1px dotted #005483}.sapUiSizeCompact .sapMRIIcon{height:1rem}.sapUiSizeCondensed .sapMRI .sapUiIcon,.sapUiSizeCondensed .sapMRI .sapMImg{vertical-align:top}.sapMResponsivePopover.sapMDialog .sapMIBar.sapMPageHeader:before{border-top:none}.sapMSF{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;min-width:7rem;height:3rem;background:transparent;padding:0.25rem 0}.sapMSplitContainerMaster .sapMSF{padding-right:1px}.sapMSFDisabled{opacity:0.5}.sapMSFF{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;height:2.5rem;line-height:2.375rem;border:1px solid #c0c0c0;background:#ffffff;vertical-align:top;width:100%;position:relative;padding-left:0.75rem;padding-right:4.75rem}.sapMSFF.sapMSFNS{padding-right:2.375rem}.sapMSubHeader-CTX .sapMSFF,.sapMFooter-CTX .sapMSFF{border-color:transparent}.sapMBar .sapMSF{display:inline-block}.sapMSFF>form>input{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sapMFocus>.sapMSFF,:not(.sapMSFDisabled)>.sapMSFF:hover{border-color:#007cc0}.sapMSFI{color:#666666;font-family:Arial,Helvetica,sans-serif;background:transparent;width:100%;height:2.375rem;border:none;outline:none;padding:0;margin:0;vertical-align:top;text-overflow:ellipsis}.sapMSFI.sapMSFIA4{-webkit-user-modify:read-write-plaintext-only}.sapMSFI[type='search']{font-size:0.875rem}.sapMSFI[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;display:none}.sapMSFI::-ms-clear{display:none}.sapMSFB{position:absolute;width:2.38rem;height:2.38rem;font-size:1.125rem;color:#666666;text-align:center;cursor:default;margin:0;padding:0;line-height:2.38rem;right:0;top:0}.sapMSFB:focus{outline:none}.sapMBarChild>.sapMSFF>.sapMSFB{text-shadow:none}.sapMFocus>.sapMSFF>.sapMSFB{color:#007cc0}.sapMFocus>.sapMSFF>.sapMSFB:active{color:#ffffff}.sapMSFB:hover{background-color:rgba(222,222,222,0.5)}.sapMFocus>.sapMSFF>.sapMSFB.sapMSFBA,.sapMSFB:active{background-color:#007cc0;color:#ffffff}.sapMSFB:after{speak:none;font-weight:normal;font-family:'SAP-icons';-webkit-font-smoothing:antialiased}.sapMSFR:not(.sapMSFNS){right:2.375rem}.sapMSFR{visibility:hidden}.sapMSFR:after{content:"\e1c7"}.sapMSFVal>.sapMSFF>.sapMSFR,:not(.sapMSFVal):not(.sapMFocus)>.sapMSFReload>.sapMSFR{visibility:visible}:not(.sapMSFVal)>.sapMSFReload>.sapMSFR:after{content:"\e00d"}.sapMSFS:after{content:"\e00d"}:not(.sapMFocus)>.sapMSFReload>.sapMSFS:after{content:"\e00a"}.sapMSFI:focus{color:#333333}.sapMSFI::-webkit-input-placeholder{color:#707070;font-size:0.875rem;font-style:italic}.sapMSFI:-ms-input-placeholder{color:#707070;font-size:0.875rem;font-style:italic}.sapMSFI::-moz-placeholder{color:#707070;font-size:0.875rem;font-style:italic}.sapMSF>.sapMSFF>.sapMSFPlaceholder{display:block;color:#707070;font-size:0.875rem;font-style:italic;position:absolute;bottom:0;left:1rem;height:2.375rem}.sapMSF.sapMSFVal>.sapMSFF>.sapMSFPlaceholder,.sapMSF.sapMFocus>.sapMSFF>.sapMSFPlaceholder{display:none}.sapUiSizeCompact{}.sapUiSizeCompact .sapMSF{height:2rem;padding:0.1875rem 0;min-width:6rem}.sapUiSizeCompact .sapMSFF{height:1.625rem;line-height:1.5rem;padding-left:0.5rem;padding-right:4rem}.sapUiSizeCompact .sapMSFF.sapMSFNS{padding-right:2rem}.sapUiSizeCompact .sapMSFI{height:1.5rem}.sapUiSizeCompact .sapMSFB{width:2rem;height:1.5rem;font-size:1rem;text-align:center;margin:0;padding:0;line-height:1.5rem}.sapUiSizeCompact .sapMSFR:not(.sapMSFNS){right:2rem}.sapUiSizeCompact .sapMSF>.sapMSFF>.sapMSFPlaceholder{left:0.5rem;height:1.5rem}.sapMSegB{height:2.5rem;padding:0.250rem 0;position:relative}.sapMSegBBtn{font-size:0.875rem;height:2.375rem;line-height:2.375rem;padding-left:1rem;padding-right:1rem;text-align:center;text-shadow:none;color:#00679e;border:1px solid #dedede;border-right:0;background-color:#ffffff}.sapMSegBBtnFocusable:hover{background:rgba(196,196,196,0.5)}.sapMSegBBtn:last-child{border-right:1px solid #dedede}.sap-desktop .sapMSegBBtnFocusable:focus{outline:none;border:1px dotted #005483}.sap-desktop .sapMSegBBtnFocusable.sapMSegBBtnSel:focus{outline:none;border:1px dotted #ffffff}.sap-desktop .sapMSegBBtnFocusable:focus + .sapMSegBBtn{outline:none;border-left:none}.sap-desktop .sapMSegBBtnFocusable.sapMSegBBtnSel:focus + .sapMSegBBtn{outline:none;border-left:none}.sap-desktop .sapMSegBBtnFocusable:last-child:focus{border-right:1px dotted #005483}.sap-desktop .sapMSegBBtnFocusable.sapMSegBBtnSel:last-child:focus{border-right:1px dotted #ffffff}.sap-desktop .sapMFooter-CTX .sapMSegBBtnFocusable:focus{border-color:#ffffff}.sapMSegBIcons .sapMSegBBtn{padding:0}.sapMSegBIcons .sapMSegBBtn img{padding:0 .5rem}.sapMSegBBtn.sapMSegBBtnSel{background:#007cc0;color:#ffffff;border-color:#006ca7}.sapMSegBBtn.sapMSegBBtnSel .sapUiIcon{color:#ffffff}.sapMSegBBtnFocusable.sapMBtnActive{background:#007cc0;color:#ffffff}.sapMSegBBtnFocusable.sapMBtnActive .sapUiIcon{color:#ffffff}.sapMSegBBtnFocusable.sapMSegBBtnSel:hover,.sapMSegBBtnFocusable.sapMBtnActive:hover{background:#006ca7}.sapMSegB img{line-height:2.375rem;max-height:2.375rem;vertical-align:middle}.sapMSegBBtn .sapUiIcon{font-size:1.375rem;line-height:2.375rem;width:2.375rem;color:#666666;vertical-align:middle;text-align:center}.sapMFooter-CTX .sapMSegB,.sapMFooter-CTX .sapMSegBBtn{border-color:rgba(100,114,123,0.96)}.sapMFooter-CTX .sapMSegBBtn{background-color:transparent;color:#ffffff}.sapMFooter-CTX .sapMSegBBtn .sapUiIcon{color:#666666}.sapMFooter-CTX .sapMSegBBtn:hover{background:rgba(234,234,234,0.1)}.sapMFooter-CTX .sapMSegBBtn .sapUiIcon{color:#ffffff}.sapMFooter-CTX .sapMSegBBtn.sapMBtnActive,.sapMFooter-CTX .sapMSegBBtn.sapMSegBBtnSel{background:#007cc0;color:#ffffff}.sapMFooter-CTX .sapMSegBBtn.sapMSegBBtnSel:hover,.sapMFooter-CTX .sapMSegBBtn.sapMBtnActive:hover{background:#006ca7;border-color:#006ca7}.sapUiSizeCompact .sapMSegB{height:1.625rem;padding:0.1875rem 0}.sapUiSizeCompact .sapMSegBBtn{height:1.5rem;line-height:1.5rem;padding-left:0.4375rem;padding-right:0.4375rem}.sapUiSizeCompact .sapMSegBBtn:first-child{border-top-left-radius:0.125rem;border-bottom-left-radius:0.125rem}.sapUiSizeCompact .sapMSegBBtn:last-child{border-top-right-radius:0.125rem;border-bottom-right-radius:0.125rem}.sapUiSizeCompact .sapMSegBIcons .sapMSegBBtn img{padding:0 .5rem}.sapUiSizeCompact .sapMSegB img{line-height:1.5rem;height:1.3rem;width:1.3rem}.sapUiSizeCompact .sapMSegBBtn .sapUiIcon{font-size:1rem;line-height:1.5rem;width:1.0rem;vertical-align:top}.sapUiSizeCompact .sapMSegB.sapMSegBIcons:not(.sapMBarChild) .sapMSegBBtn{padding-left:0;padding-right:0}.sapUiSizeCompact .sapMBtnIconLeft{margin-left:0}.sapUiSizeCompact.sapMSegBIcons .sapMSegBBtnMixed{padding-left:0}.sapUiSizeCompact.sapMSegBIcons .sapMSegBBtnMixed img{padding:0}html[data-sap-ui-os^="Android4.1"][data-sap-ui-browser^="an"] .sapUiSizeCompact .sapMSegBBtn img{margin-bottom:0.128rem}.sapMSlt>.sapMSltLabel,.sapMSltNative{padding:0 0.625rem}.sapMSltWithArrow>.sapMSltLabel,.sapMSltWithArrow>.sapMSltNative{padding:0 3rem 0 0.625rem}.sapMILI-CTX .sapMSlt>.sapMSltLabel,.sapMILI-CTX .sapMSltNative{padding:0 0.625rem}.sapMSlt>.sapMSltLabel,.sapMSltArrow,.sapMSltNative{height:100%}.sapMSltArrow::before,.sapMSltBar::after{font-family:"SAP-icons";speak:none;content:"\e1ef"}.sapMSltArrow,.sapMSltBar::after{position:absolute;line-height:inherit;text-align:center;top:0;right:-0.0625rem;color:#666666}.sapMSltDisabled{opacity:0.5}.sapMSlt{height:2.5rem;margin:0.25rem 0 0.25rem 0;border:1px solid #c0c0c0;background:#ffffff}.sapMSltIconOnly.sapMSltHoverable:hover{background:#eaeaea;border-color:#c0c0c0}.sap-desktop .sapMSlt:focus,.sapMSltHoverable:hover{border-color:#007cc0}.sapMSltPressed:not(.sapMSltDisabled){border-color:#007cc0}.sapMSltPressed.sapMSltIconOnly:not(.sapMSltDisabled){background:#007cc0}.sapMSltIconOnly.sapMSltPressed.sapMSltHoverable:hover{background:#007cc0;border-color:#007cc0}.sapMSlt>.sapMSltLabel{width:100%;line-height:2.375rem;color:#000000;font-size:0.875rem}.sapMSltIcon{font-size:1.375rem;line-height:2.375rem;padding:0 0.625rem;color:#666666}.sapMSltPressed>.sapMSltIcon{color:#ffffff}.sapMSltArrow{width:2.5rem;line-height:2.5rem;right:0;background:#ffffff}.sapMSltHoverable:not(.sapMSltPressed):hover>.sapMSltArrow{background:#f0f0f0}.sapMSltPressed>.sapMSltArrow{background:#007cc0}.sapMSltPressed>.sapMSltArrow::before{color:#ffffff}.sapMSltNative{visibility:hidden;font-size:0.9375rem}.sap-desktop .sapMHeader-CTX .sapMSltIconOnly:focus,.sap-desktop .sapMSubHeader-CTX .sapMSltIconOnly:focus,.sap-desktop .sapMFooter-CTX .sapMSlt:focus{outline:0.0625rem dotted;outline-offset:-0.0625rem}.sap-desktop .sapMHeader-CTX .sapMSltPressed.sapMSltIconOnly:focus,.sap-desktop .sapMSubHeader-CTX .sapMSltPressed.sapMSltIconOnly:focus,.sap-desktop .sapMFooter-CTX .sapMSlt:focus{outline-color:#ffffff}.sapMSubHeader-CTX .sapMSltPressed>.sapMSltIcon{color:#ffffff}.sapMHeader-CTX .sapMSltPressed,.sapMSubHeader-CTX .sapMSltPressed{text-shadow:none}.sapMHeader-CTX .sapMSltIconOnly.sapMSltHoverable:hover,.sapMSubHeader-CTX .sapMSltIconOnly.sapMSltHoverable:hover{border-color:transparent}.sapMHeader-CTX .sapMSltIconOnly:not(.sapMSltPressed),.sapMSubHeader-CTX .sapMSltIconOnly:not(.sapMSltPressed){border-color:transparent;background-color:transparent}.sapMSubHeader-CTX .sapMSltPressed>.sapMSltIcon{color:#ffffff}.sapMFooter-CTX .sapMSlt{border-color:rgba(54,62,67,0.96)}.sapMFooter-CTX .sapMSltIconOnly.sapMSltHoverable:not(.sapMSltPressed):hover{background:rgba(234,234,234,0.1);border-color:transparent}.sapMFooter-CTX .sapMSltIconOnly{border-color:transparent;background:transparent}.sapMIBar-CTX.sapMFooter-CTX .sapMSltArrow{text-shadow:none}.sapMFooter-CTX .sapMSltIcon{color:inherit}.sapMFooter-CTX .sapMSltLabel{text-shadow:none}.sapMILI-CTX .sapMSlt{border-left-width:0;border-right-width:0;margin:0;height:3rem;border-top-width:0;border-bottom-width:0;background-color:transparent}.sapMILI-CTX .sapMSltPressed>.sapMSltLabel{color:#ffffff}.sapMILI-CTX .sapMSltPressed:not(.sapMSltDisabled)>.sapMSltLabel{color:#000000}.sapMILI-CTX .sapMSltArrow{display:none}.sapMILI-CTX .sapMSltLabel{line-height:3rem}div.sapMSltPicker{border:none;-webkit-box-shadow:0 0.0625rem 0.1875rem rgba(0,0,0,0.5);box-shadow:0 0.0625rem 0.1875rem rgba(0,0,0,0.5)}.sapMSltPicker .sapMBtn{height:2.5rem}.sapMSltPicker .sapMPopoverArr{display:none}.sapMSltBar{-webkit-box-shadow:none;box-shadow:none}div.sapMSltPicker .sapMDialogScrollCont{padding:0}.sapMSltBar::after{width:3.5rem;color:#ffffff;background:#007cc0}.sapMSltPicker .sapMIBar.sapMIBar-CTX{background:#ffffff;border:0.0625rem solid #007cc0}.sapMSltPicker input{padding-right:3rem;vertical-align:top}.sapUiSizeCompact .sapMSltLabel,.sapUiSizeCompact .sapMSltNative,.sapUiSizeCondensed .sapMSltLabel,.sapUiSizeCondensed .sapMSltNative{padding-right:2.5rem;padding-left:0.5rem}.sapUiSizeCompact .sapMSltPicker .sapMBtn,.sapUiSizeCondensed .sapMSltPicker .sapMBtn{height:2rem}.sapUiSizeCompact .sapMSltLabel,.sapUiSizeCondensed .sapMSltLabel{line-height:1.5rem}.sapUiSizeCompact .sapMSltArrow,.sapUiSizeCondensed .sapMSltArrow{width:2rem;line-height:1.625rem}.sapUiSizeCompact .sapMSltIcon,.sapUiSizeCondensed .sapMSltIcon{font-size:1rem;line-height:1.5rem}.sapUiSizeCompact .sapMSlt{height:1.625rem;margin-top:0.1875rem;margin-bottom:0.1875rem}.sapUiSizeCondensed .sapMSlt{height:1.5rem;margin-top:0;margin-bottom:0}.sapUiSizeCondensed .sapUiTableCell .sapMSlt{border-color:transparent}.sapUiSizeCondensed .sapUiTableCell .sapMSltHoverable:hover{border-color:#007cc0}.sapMSelectList{border:0.0625rem solid #c0c0c0;background:#ffffff}.sapMSelectListItem{font-size:0.875rem;padding:0 1rem 0 1rem;height:2.5rem;line-height:2.5rem;cursor:pointer}.sapMSelectListItemSelected{background:#e6f2f9}.sapMSelectListItemHoverable:hover{background:#f0f0f0}.sapMSelectListItem.sapMSelectListItemPressed{color:#ffffff;background:#007cc0}.sapMSelectListItemDisabled{opacity:0.5}.sap-desktop .sapMSelectListItem:focus{outline:1px dotted #005483}.sapMSelectListSeparatorItem{border:1px solid #cdcdcd}.sapUiSizeCompact .sapMSelectListItem{height:2rem;line-height:2rem}@media (min-height:3401px){.sapMShellHeader{border-top:4px solid #009de0}.sap-desktop .sapMShellHeaderLogout:active{color:#ffffff}}.sapUiUfdShell .sapMShellHeader{border-top:none}.sapMShellBackgroundColorOnlyIfDefault{background-color:transparent}.sap-desktop .sapMShellHeaderText{font-size:1.5rem;color:#333333}.sap-desktop .sapMShellCentralBox{box-shadow:0 0 24px rgba(0,0,0,0.15)}.sapMSlider{height:3rem;padding:1.406rem 1.0625rem}.sapMSliderInner{background-color:#dddddd}.sapMSliderInner,.sapMSliderProgress{height:0.1875rem}.sapMSliderProgress{background-color:#007cc0}.sapMSliderHandle{margin-left:-1rem;top:-0.91rem;height:1.75rem;width:1.75rem;border-top-left-radius:1rem;border-top-right-radius:1rem;border-bottom-right-radius:1rem;border-bottom-left-radius:1rem;background-color:rgba(154,154,154,0.3);border:0.125rem solid #9a9a9a}.sap-desktop .sapMSliderHandle:hover{background-color:rgba(154,154,154,0.6)}.sap-desktop .sapMSliderHandle:focus{outline:0.0625rem dotted #005483}.sapMSliderPressed:not(.sapMSliderInnerDisabled)>.sapMSliderHandle{background-color:rgba(0,124,192,0.3);border:0.125rem solid #007cc0}.sapMSliderDisabled{opacity:0.5}.sapMSliderInnerDisabled .sapMSliderProgress{background:none}.sapUiSizeCompact .sapMSlider{height:2rem;padding-top:1rem;padding-bottom:1rem}.sapUiSizeCompact .sapMSliderHandle{height:1.375rem;width:1.375rem;margin-left:-0.8125rem;top:-0.75rem}.sapMSplitContainerMaster{background-color:#ffffff}.sapMSplitContainerMaster:not(.sapMSplitContainerMasterVisible):after{content:"";position:absolute;width:0;right:0;height:100%;bottom:0;border-right:1px solid #dddddd;z-index:5}.sapMSplitContainerMaster:not(.sapMSplitContainerMasterVisible):before{content:"";position:absolute;width:0;right:0;height:0.25rem;top:0;border-right:1px solid #009de0;z-index:6}.sapUiUfdShell .sapMSplitContainerMaster:not(.sapMSplitContainerMasterVisible):before{display:none}.sapMPopoverCont .sapMSplitContainerMaster:not(.sapMSplitContainerMasterVisible):before{display:none}@media (min-height:3401px){.sap-desktop .sapMShell .sapMSplitContainerMaster:not(.sapMSplitContainerMasterVisible):before{display:none}}.sapMSplitContainerMaster footer{z-index:6}.sapMPopoverCont .sapMSplitContainerMaster:after{display:none}.sapMSplitContainerStretchCompress>.sapMSplitContainerMaster,.sapMSplitContainerShowHide:not(.sapMSplitContainerPortrait)>.sapMSplitContainerMaster,.sapMSplitContainerPopover:not(.sapMSplitContainerPortrait)>.sapMSplitContainerMaster{border-radius:0}.sapMSplitContainerPortrait.sapMSplitContainerShowHide>.sapMSplitContainerMaster,.sapMSplitContainerHideMode>.sapMSplitContainerMaster{box-shadow:1px 0 10px rgba(0,0,0,0.15);-webkit-box-shadow:1px 0 10px rgba(0,0,0,0.15);-moz-box-shadow:1px 0 10px rgba(0,0,0,0.15);border-right:1px solid rgba(0,0,0,0.15);background-clip:padding-box;-webkit-background-clip:padding-box;-ms-background-clip:padding-box;-moz-background-clip:padding-box}.sapMSLI{height:3rem}html[data-sap-ui-browser*='ie1'] .sapMSLIDiv{width:100%}.sapMSLIImg,.sapMSLIImgFirst{margin:0.5rem 0.75rem 0.5rem 0rem;height:2rem;width:2rem}.sapMSLIImgThumb,.sapMSLIImgIcon,.sapMSLIImgFirstIcon,.sapMSLIImgThumbIcon{width:3rem;height:3rem;line-height:3rem;-webkit-box-flex:0;-moz-box-flex:0;-ms-flex:none;flex:none}.sapMSLIImgThumb{margin-right:0.75rem}.sapMSLIImgIcon,.sapMSLIImgFirstIcon{font-size:1.375rem;color:#666666;margin-left:-1rem}.sapMSLIImgThumbIcon{font-size:2.5rem;color:#666666;margin-right:0.75rem}.sapMSLIIconActive{color:#ffffff}.sapMSLITitle{font-size:1rem;color:#333333;padding-bottom:0.375rem}.sapMSLIDescription{font-size:0.875rem;color:#666666}.sapMSLITitleOnly{font-size:1.125rem;color:#333333}.sapMInputSuggestionPopup .sapMSLITitleOnly{font-size:0.875rem}.sapMSLIInfo{margin:0 0 0 1rem;font-size:0.875rem}.sapMSLIInfoNone{color:#000000}.sapMListShowSeparatorsNone .sapMSLIInfoNone{color:#666666}.sapMSLIInfoError{color:#cc1919}.sapMSLIInfoWarning{color:#d14900}.sapMSLIInfoSuccess{color:#007833}.sapMSLIIcon>.sapMLIBContent{margin-left:-1rem}.sapMSLIIconThumb,.sapMSLIDescNoIcon,.sapMSLIDescIcon{height:4rem}.sapMSLIIconThumb>.sapMLIBSelectD,.sapMSLIDescNoIcon>.sapMLIBSelectD,.sapMSLIDescIcon>.sapMLIBSelectD,.sapMSLIIconThumb>.sapMLIBImgNav,.sapMSLIIconThumb>.sapMLIBCursor>.sapMLIBIconDet,.sapMSLIIconThumb>.sapMLIBSelectD>.sapMLIBIconDel,.sapMSLIDescNoIcon>.sapMLIBImgNav,.sapMSLIDescNoIcon>.sapMLIBCursor>.sapMLIBIconDet,.sapMSLIDescNoIcon>.sapMLIBSelectD>.sapMLIBIconDel,.sapMSLIDescIcon>.sapMLIBImgNav,.sapMSLIDescIcon>.sapMLIBCursor>.sapMLIBIconDet,.sapMSLIDescIcon>.sapMLIBSelectD>.sapMLIBIconDel{height:4rem;line-height:4rem}.sapMSLIIconThumb>.sapMLIBContent,.sapMSLIDescIcon>.sapMLIBContent{padding:0.5rem 0 0.5rem 1rem}.sapMSLINoDescIcon>.sapMLIBContent{padding-left:1rem}.sapMLIBActive .sapMSLITitle,.sapMLIBActive .sapMSLIDescription,.sapMLIBActive .sapMSLITitleOnly{color:#ffffff}.sapUiSizeCompact .sapMSLI{height:2rem}.sapUiSizeCompact .sapMSLIIconThumb,.sapUiSizeCompact .sapMSLIDescNoIcon,.sapUiSizeCompact .sapMSLIDescIcon{height:4rem}.sapUiSizeCompact .sapMSLITitleOnly{font-size:0.875rem}.sapMStdTileIconDiv{color:#007cc0}.sapMStdIconMonitor{color:#666666}.sapMStdIconCreate{color:#666666;opacity:.3}.sapMStdTileNum,.sapMStdTileNumM,.sapMStdTileNumS{font-family:'Arial Narrow',HelveticaNeue-CondensedBold,Arial,sans-serif;font-stretch:condensed;color:#666666}.sapMStdTileNumUnit{color:#666666;text-transform:uppercase}.sapMStdTileTitle{color:#007cc0}.sapMStdTileInfoError{color:#cc1919}.sapMStdTileInfoWarning{color:#d14900}.sapMStdTileInfoSuccess{color:#007833}.sapMStdTileMonitorType{background-color:#f2f2f2}.sapMTCEditable .sapMStdTileMonitorType{background-color:rgba(242,242,242,0.5)}.sapMStdTileMonitorType .sapMStdTileTitle{color:#666666}.sapMTileActive-CTX .sapMStdTileMonitorType{background-color:transparent}.sapMTileActive-CTX .sapMStdIconCreate{opacity:1}.sapMTileActive-CTX .sapMStdTileInfoWarning,.sapMTileActive-CTX .sapMStdTileInfoSuccess,.sapMTileActive-CTX .sapMStdTileInfoError,.sapMTileActive-CTX .sapMStdTileTitle,.sapMTileActive-CTX .sapMStdTileNumUnit,.sapMTileActive-CTX .sapMStdTileNum,.sapMTileActive-CTX .sapMStdTileNumM,.sapMTileActive-CTX .sapMStdTileNumS,.sapMTileActive-CTX .sapMStdTileInfo{color:#ffffff}.sapMTileActive-CTX .sapMStdTileIconDiv,.sapMTileActive-CTX .sapMStdIconMonitor,.sapMTileActive-CTX .sapMStdIconCreate{color:#ffffff}.sapMSwtText,.sapMSwtAcceptReject .sapMSwtHandle{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sapMSwtCont{padding:0.5rem 0 0.5rem 0}.sap-desktop .sapMSwtCont:focus>.sapMSwt{outline:0.0625rem dotted #005483}.sapMSwt{width:4rem;height:2rem;border:0.0625rem solid;border-top-left-radius:1rem;border-top-right-radius:1rem;border-bottom-right-radius:1rem;border-bottom-left-radius:1rem;overflow:hidden}.sapMSwtOn:not(.sapMSwtAcceptReject){background:#007cc0;border-color:#007cc0}.sapMSwtOff:not(.sapMSwtAcceptReject){background:#ffffff;border-color:#9a9a9a}.sapMSwt.sapMSwtHoverable:hover{border-color:#007cc0}.sapMSwtHoverable.sapMSwtOn:not(.sapMSwtAcceptReject):hover{background:#006ca7}.sapMSwtDisabled{opacity:0.5}.sapMSwtOff>.sapMSwtInner{left:-2rem}.sapMSwtOn>.sapMSwtInner{left:0}.sapMSwtTrans>.sapMSwtInner{-webkit-transition:left 0.125s ease-in-out;transition:left 0.125s ease-in-out}html[dir=rtl] .sapMSwtTrans>.sapMSwtInner{-webkit-transition-property:right;transition-property:right}.sapMSwtText{font-size:0.75rem;width:100%;line-height:2rem}.sapMSwtOn .sapMSwtText{color:#ffffff}.sapMSwtOff .sapMSwtText{color:#666666}.sapMSwtTextOff{left:2rem}.sapMSwtLabel{display:block;width:1.875rem;padding:0 0.1875rem;text-transform:uppercase;line-height:inherit}.sapMSwtLabelOff{float:right}.sapMSwtHandle{width:1.5rem;height:1.5rem;left:2.25rem;border-top-left-radius:0.75rem;border-top-right-radius:0.75rem;border-bottom-right-radius:0.75rem;border-bottom-left-radius:0.75rem;-webkit-background-clip:padding-box;background-clip:padding-box}.sapMSwtOn .sapMSwtHandle{background:#ffffff}.sapMSwtOff .sapMSwtHandle{background:#9a9a9a}.sapMSwtAcceptReject.sapMSwtOn{border-color:#007833}.sapMSwtAcceptReject.sapMSwtOff{border-color:#cc1919}.sapMSwtAcceptReject.sapMSwt{background:#ffffff}.sapMSwtAcceptReject .sapMSwtLabel{font-size:1rem}.sapMSwtAcceptReject .sapMSwtLabelOn::before{content:"\e05b";color:#007833}.sapMSwtAcceptReject .sapMSwtLabelOff::before{content:"\e03e";color:#cc1919}.sapMSwtAcceptReject .sapMSwtHandle{background:#ffffff;border-style:solid;border-width:0.125rem}.sapMSwtAcceptReject.sapMSwtOn .sapMSwtHandle{border-color:#007833}.sapMSwtAcceptReject.sapMSwtOff .sapMSwtHandle{border-color:#cc1919}.sapMSwtAcceptReject .sapMSwtWebKit537-35.sapMSwtHandle{border:none}.sapMSwtAcceptReject.sapMSwtOn .sapMSwtWebKit537-35.sapMSwtHandle{box-shadow:inset 0 0 0 0.125rem #007833}.sapMSwtAcceptReject.sapMSwtOff .sapMSwtWebKit537-35.sapMSwtHandle{box-shadow:inset 0 0 0 0.125rem #cc1919}.sapUiSizeCompact .sapMSwtCont{padding-top:0.125rem;padding-bottom:0.125rem}.sapUiSizeCompact .sapMSwt{width:3.5rem;height:1.625rem}.sapUiSizeCompact .sapMSwtText{line-height:1.625rem}.sapUiSizeCompact .sapMSwtHandle{height:1rem;width:1rem}.sapMListBGTransparent .sapMListTblHeader,.sapMListBGTransparent .sapMListTblFooter,.sapMListBGTransparent .sapMLIB.sapMListTblRow{background-color:rgba(255,255,255,0)}.sapMListBGTranslucent .sapMListTblHeader,.sapMListBGTranslucent .sapMListTblFooter,.sapMListBGTranslucent .sapMLIB.sapMListTblRow{background-color:rgba(255,255,255,0.8)}.sapMListBGSolid .sapMListTblHeader,.sapMListBGSolid .sapMListTblFooter,.sapMListBGSolid .sapMLIB.sapMListTblRow{background-color:#ffffff}.sapMListTblNavCol,.sapMListTblSelCol{vertical-align:top;padding:0}.sapMListTblNavCol>.sapMLIBImgNav{display:block}.sapMListTblSelCol{width:3rem}.sapMListTblNavCol .sapMLIBIconDet{margin-left:0}.sapMListModeSingleSelect .sapMListTblSelCol{padding:0}.sapMListTblSelCol>.sapMLIBSelectSL,.sapMListTblSelCol>.sapMLIBSelectD,.sapMListTblSelCol>.sapMLIBSelectM{margin:0}.sapMListTblUnreadCol{display:none}.sapMListTblHeader th{border-bottom:1px solid #dddddd}.sapMListTbl{font-size:0.875rem}.sapMListTbl .sapMText,.sapMListTbl .sapMLabel{padding-top:1px;font-size:0.875rem;color:#333333;font-weight:normal}.sapMListTbl .sapUiIcon:not(.sapMLIBImgNav){font-size:1rem}.sapMListTbl .sapMLIBSelectD>.sapUiIcon{font-size:1.5rem;padding:.75rem 0}.sapMListTblCell{padding:.875rem .5rem;vertical-align:top;font-size:0.875rem}.sapMListTblCell.sapMListTblCellNoData{font-size:1rem;padding-top:.75rem;padding-bottom:.75rem;line-height:1.6;border-bottom:1px solid #dddddd}.sapMListTblCell:first-child,.sapMListTblNone:first-child + .sapMListTblCell{padding-left:1rem}.sapMListTblSelCol + .sapMListTblCell{padding-left:0}.sapMListTblCell.sapMListTblCellNoData,.sapMListTblRow>:nth-last-child(2){padding-right:1rem}.sapMListTblHasNav .sapMListTblRow>:nth-last-child(2),.sapMListModeSingleSelect.sapMListTblHasNav .sapMListTblRow>:nth-last-child(2){padding-right:0}.sapMListTblHasNav .sapMListTblNavCol{width:3rem}.sapMLIB.sapMListTblRow{border-bottom:0}.sapMListTblCell.sapMListTblCellDup{border-color:transparent}.sapMListModeMultiSelect .sapMListTblSubCnt,.sapMListModeSingleSelectLeft .sapMListTblSubCnt{padding-left:3rem}.sapMListTbl th{background:#e5e5e5;border-bottom:1px solid #cdcdcd}.sapMListTblFooter>td{border-top:1px solid #cdcdcd}.sapMListTblFooter .sapMText,.sapMListTblFooter .sapMLabel{font-weight:bold}.sapUiSizeCompact .sapMListTblCell{padding-top:0;padding-bottom:0;vertical-align:middle}.sapUiSizeCompact .sapMListTblCell.sapMListTblCellNoData{font-size:0.875rem}.sapUiSizeCompact .sapMListTblCell>.sapMLnk,.sapUiSizeCompact .sapMListTblCell>.sapMText,.sapUiSizeCompact .sapMListTblCell>.sapMLabel,.sapUiSizeCompact .sapMListTblCell>.sapMObjectNumber{vertical-align:middle;line-height:1.4}.sapUiSizeCompact .sapMTableContentMargin{margin:.5rem 0}.sapUiSizeCompact .sapMListTblNavCol,.sapUiSizeCompact .sapMListTblSelCol{vertical-align:middle;text-align:center}.sapUiSizeCompact .sapMListTblNavCol>.sapMLIBImgNav{width:auto;height:2rem;line-height:2rem}.sapUiSizeCompact .sapMListTblSelCol{width:2.5rem}.sapUiSizeCompact .sapMListTblHasNav .sapMListTblNavCol{width:2rem}.sapUiSizeCompact .sapMListTblSelCol .sapMCb{width:auto}.sapUiSizeCompact .sapMListTblCell{height:2rem}.sapUiSizeCompact .sapMListTbl .sapMLIBSelectD{width:auto}.sapUiSizeCompact .sapMListTbl .sapMLIBSelectD>.sapUiIcon{font-size:1rem;padding:0}.sapUiSizeCompact .sapMListTblNavCol .sapMLIBIconDet{margin-right:0;width:2rem;height:2rem;line-height:2rem}.sapUiSizeCompact .sapMListTblSelCol>.sapMLIBSelectS .sapMRbB,.sapUiSizeCompact .sapMListTblSelCol>.sapMLIBSelectSL .sapMRbB{margin-left:0.25rem;padding:0}.sapMListTblHeaderNone>.sapMListTblCell{height:0}.sapMPersoDialog:not(.sapMDialogPhone) .sapMDialogScroll{max-width:25rem}html[data-sap-ui-browser='ie9'] .sapMPersoDialog>.sapMDialogSection{width:24.875rem}.sapMPersoDialogLI .sapMILILabel{max-width:none}.sapMPersoDialogLI .sapMILIDiv{min-width:5.875rem}.sapMTB-Transparent-CTX.sapMTB.sapMPersoDialogFixedBar{padding-left:0;border-bottom:2px solid #e5e5e5}.sapMPersoDialogLIHeader{border-bottom:0}html[data-sap-ui-browser='ie10'] .sapMPersoDialogLI .sapMILILabel{-ms-flex-preferred-size:15rem;-ms-flex-negative:0;-ms-flex-positive:1}.sapMText{font-size:0.875rem;font-family:Arial,Helvetica,sans-serif;line-height:normal}.sapUiForm .sapMText{overflow:hidden}.sapUiFormEdit .sapMText{min-height:3rem;line-height:1.375rem;padding-top:0.8125rem;padding-bottom:0.8125rem}.sapMLIBActive .sapMText,.sapMLIBActive .sapMListTblCell .sapMText,.sapMLIBActive .sapMListTblSubCntRow .sapMText{color:#ffffff}.sapMLIBUnread .sapMText,.sapMLIBUnread + .sapMListTblSubRow .sapMText{font-family:Arial,Helvetica,sans-serif;font-weight:bold}.sapMTB-Info-CTX .sapMText{font-style:italic;font-size:0.875rem;font-family:Arial,Helvetica,sans-serif;color:#ffffff}.sapMTB-Transparent-CTX .sapMText{font-weight:normal;font-size:1rem;font-family:Arial,Helvetica,sans-serif;text-shadow:0 1px 0 #ffffff;color:#333333}.sapMLIBTypeNavigation span.sapMText{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sapUiSizeCompact .sapUiFormEdit .sapMText{min-height:2rem;padding-top:0.3125rem;padding-bottom:0.3125rem}.sapUiSizeCondensed .sapUiTableCell>.sapMText{box-sizing:border-box;padding:0 0.5rem;line-height:1.5rem;vertical-align:middle}.sapMInputBase.sapMTextArea{height:auto}.sapMInputBaseInner.sapMTextAreaInner{-webkit-overflow-scrolling:touch}.sapUiForm .sapMInputBaseInner.sapMTextAreaInner{padding-top:0.625rem}.sapMTextArea>.sapMTextAreaInner{line-height:1.4;padding:0.75rem}.sapMTextArea>.sapMInputBaseReadonlyInner.sapMTextAreaInner{border:1px solid #c0c0c0}.sapUiSizeCompact .sapMTextArea>.sapMTextAreaInner{padding:0.3125rem 0.5rem;height:auto}.sapMTile{border:1px solid #dddddd;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,0.15);background-color:#ffffff}.sapMTCEditable .sapMTile{background-color:rgba(255,255,255,0.5)}.sapMTile:focus{outline:1px dotted #005483}.sapMTile .sapMTileDrag{opacity:0.6;box-shadow:0 1px 3px rgba(0,0,0,0.6)}.sapMTC .sapMTCPager SPAN{box-shadow:0 0 1px 1px #ffffff}.sapMTC .sapMTCBlind{background-color:#ffffff;box-shadow:0 0 5px 5px #ffffff}.sapMTC .sapMTCPager SPAN.sapMTCActive{box-shadow:0 0 2px 2px #ffffff}.sapMTC .sapMTCScroller:focus::before{content:"";border:1px dotted #005483;position:absolute;top:-1px;bottom:-1px;left:-1px;right:-1px}.sapMTitle{text-shadow:0 0.0625rem 0 rgba(255,255,255,0.5)}.sapMTitleStyleAuto{font-size:1rem}.sapMIBar-CTX .sapMTitle{color:#666666;text-shadow:none}.sapMTB-Transparent-CTX .sapMTitle{text-shadow:0 1px 0 #ffffff}.sapMTB-Transparent-CTX>.sapMTitleTB.sapMTitleStyleAuto{font-size:1.125rem}.sapMToggleBtnPressed,.sapMIBar-CTX .sapMToggleBtnPressed,.sapMTB-Transparent-CTX .sapMBtnInner.sapMToggleBtnPressed{background-image:none;background-color:#007cc0;border-color:#006ca7;color:#ffffff;text-shadow:none}.sapMBtn:hover .sapMBtnHoverable.sapMToggleBtnPressed,.sapMBtn .sapMBtnHoverable.sapMToggleBtnPressed:hover,.sapMToggleBtnPressed.sapMBtnHoverable .sapMBtnIcon:hover,.sapMTB-Transparent-CTX .sapMBtnHoverable.sapMToggleBtnPressed:hover{background-image:none;background-color:#006ca7}.sapMToggleBtnPressed .sapMBtnIcon,.sapMToggleBtnPressed.sapMBtnTransparent>.sapMBtnIcon{color:#ffffff}.sapMBtn:focus>.sapMBtnInner.sapMToggleBtnPressed.sapMFocusable{outline:1px dotted #ffffff;outline-offset:-1px}html[data-sap-ui-browser^="ie"] .sapMBtn:focus>.sapMToggleBtnPressed.sapMFocusable::before{border-color:#ffffff}.sapMIBar-CTX .sapMBtn .sapMBtnHoverable.sapMToggleBtnPressed:hover{background-color:#006ca7;border-color:#006ca7;color:#ffffff;text-shadow:none}.sapMIBar-CTX.sapMFooter-CTX .sapMToggleBtnPressed.sapMBtnActive:not(.sapMBtnDisabled) .sapMBtnIcon{background-color:#006ca7}.sapMToken{font-size:0.875rem;background:#f7f7f7;border:#dedede 1px solid;border-radius:0.125rem;color:#333333;padding-left:0.375rem;padding-top:0.25rem;padding-bottom:0.25rem;height:1.625rem}.sapMToken.sapMTokenReadOnly{padding:0.25rem 0.375rem}.sap-desktop .sapMToken:hover{background:#eaeaea;border:#dedede 1px solid;border-radius:0.125rem}.sapMToken:focus{border:0.0625rem dotted #005483}.sapMTokenSelected{color:#ffffff;background:#007cc0;border:#006ca7 1px solid;border-radius:0.125rem}.sapMToken.sapMTokenSelected:hover{background:#006ca7;border:#006ca7 1px solid;border-radius:0.125rem}.sapMTokenSelected .sapMTokenIcon{color:#ffffff}.sapMTokenIcon{padding:0.25rem 0.5rem;font-size:1rem;color:#666666;vertical-align:middle}.sapUiSizeCompact .sapMToken{padding-left:0.25rem;padding-bottom:0.1rem;height:1.25rem}.sapUiSizeCompact .sapMToken.sapMTokenReadOnly{padding:0.1rem 0.25rem}.sapUiSizeCompact .sapMTokenIcon{font-size:0.75rem;padding:0.1rem 0.25rem;vertical-align:baseline}.sapUiSizeCompact .sapMListTbl .sapMToken .sapUiIcon:not(.sapMLIBImgNav){font-size:0.75rem}.sapMToken.sapMTokenActive{background:#eaeaea}.sapMTB{padding:0;height:3rem;background:rgba(229,229,229,0);border-bottom:1px solid #cdcdcd}.sapMTBShrinkItem{min-width:2.5rem}.sapMTB-Transparent-CTX.sapMTB{padding-left:1rem}.sapMIBar.sapMTB-Transparent-CTX.sapMTB>:first-child{margin-left:0}.sapMTB-Solid-CTX.sapMTB{background:#e5e5e5}.sapMTB-Info-CTX.sapMTB{height:2rem;padding:0 .5rem;background:#457aae;border-bottom:1px solid #e5e5e5}.sapMTB-Info-CTX.sapMTBActive:hover{background:#2b68a3}.sapMTB-Info-CTX.sapMTBActive:active{background:#125698}.sap-desktop .sapMTBActive:focus{outline:1px dotted #005483;outline-offset:-0.125rem}.sap-desktop .sapMTB-Info-CTX.sapMTBActive:focus{outline-color:#ffffff}.sapMTB-Info-CTX.sapMTB>*{margin:0 .5rem}.sapMIBar.sapMTB-Info-CTX.sapMTB>:first-child{margin:0 .5rem}.sapUiSizeCompact .sapMTB{height:2rem}.sapUiSizeCompact .sapMTBShrinkItem,.sapUiSizeCondensed .sapMTBShrinkItem{min-width:2rem}.sapMTBSeparator{width:0.0625rem;background:#c0c0c0;height:2rem}.sapMFooter-CTX>.sapMTBSeparator{background:rgba(100,114,123,0.96)}.sapUiSizeCompact .sapMTBSeparator{height:1.5rem}.sapMTB.sapMUCListHeader{background-color:rgba(255,255,255,0);border-bottom-color:#cdcdcd;font-size:1.125rem;font-weight:normal;color:#333333;text-shadow:0.0625rem 0rem #ffffff}.sapMLIB.sapMUCListSingleItem,.sapMLIB.sapMUCListFirstItem,.sapMLIB.sapMUCListLastItem,.sapMLIB.sapMUCListItem{border-bottom-color:#e5e5e5}.sapMUCItemIcon{color:#666666}.sapMUCDeleteBtn>.sapMBtnTransparent>.sapMBtnIcon{color:#cc1919}.sapMUCFileName.sapMLnk{font-size:1rem}.sapMUCDescriptionHL .sapMLabel{font-size:0.875rem;color:#666666}.sapMUC .sapMListShowSeparatorsNone .sapMUC .sapMListShowSeparatorsNone .sapMUCFileName.sapMLnk{margin-top:0.25rem;font-size:0.875rem}.sapUiSizeCompact .sapMUC{}.sapUiSizeCompact .sapMUC .sapMUCFileName.sapMLnk{margin-top:0.25rem;font-size:0.875rem}.sapMVSDSeg .sapMSegBBtn{text-shadow:0 0} \ No newline at end of file diff --git a/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/library.source.less b/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/library.source.less new file mode 100644 index 0000000..5ca4e97 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/m/themes/sap_bluecrystal/library.source.less @@ -0,0 +1,96 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +@import "../base/library.source.less"; +@import "../../../../sap/ui/core/themes/sap_bluecrystal/base.less"; +@import "../../../../sap/ui/core/themes/sap_bluecrystal/global.less"; +@import "shared.less"; + +@import "ActionListItem.less"; +@import "ActionSheet.less"; +@import "App.less"; +@import "Bar.less"; +@import "BarBase.less"; +@import "BusyDialog.less"; +@import "BusyIndicator.less"; +@import "Button.less"; +@import "Carousel.less"; +@import "CheckBox.less"; +@import "ColumnListItem.less"; +@import "ComboBox.less"; +@import "ComboBoxBase.less"; +@import "CustomListItem.less"; +@import "CustomTile.less"; +@import "DatePicker.less"; +@import "DateRangeSelection.less"; +@import "DateTimeInput.less"; +@import "Dialog.less"; +@import "DisplayListItem.less"; +@import "MessagePage.less"; +@import "FacetFilter.less"; +@import "FacetFilterItem.less"; +@import "FacetFilterList.less"; +@import "FeedInput.less"; +@import "FeedListItem.less"; +@import "FlexBox.less"; +@import "GroupHeaderListItem.less"; +@import "GrowingList.less"; +@import "IconTabBar.less"; +@import "Image.less"; +@import "Input.less"; +@import "InputBase.less"; +@import "InputListItem.less"; +@import "Label.less"; +@import "Link.less"; +@import "List.less"; +@import "List_noFlex.less"; +@import "ListBase.less"; +@import "ListItemBase.less"; +@import "MessageBox.less"; +@import "MessagePopover.less"; +@import "MessageToast.less"; +@import "MultiComboBox.less"; +@import "MultiInput.less"; +@import "ObjectAttribute.less"; +@import "ObjectHeader.less"; +@import "ObjectIdentifier.less"; +@import "ObjectListItem.less"; +@import "ObjectNumber.less"; +@import "ObjectStatus.less"; +@import "P13nColumnsPanel.less"; +@import "Page.less"; +@import "Panel.less"; +@import "Popover.less"; +@import "ProgressIndicator.less"; +@import "PullToRefresh.less"; +@import "RadioButton.less"; +@import "RadioButtonGroup.less"; +@import "RatingIndicator.less"; +@import "ResponsivePopover.less"; +@import "SearchField.less"; +@import "SegmentedButton.less"; +@import "Select.less"; +@import "SelectDialog.less"; +@import "SelectList.less"; +@import "Shell.less"; +@import "Slider.less"; +@import "SplitContainer.less"; +@import "StandardListItem.less"; +@import "StandardTile.less"; +@import "Switch.less"; +@import "Table.less"; +@import "TablePersoDialog.less"; +@import "Text.less"; +@import "TextArea.less"; +@import "Tile.less"; +@import "TileContainer.less"; +@import "Title.less"; +@import "ToggleButton.less"; +@import "Token.less"; +@import "Toolbar.less"; +@import "ToolbarSeparator.less"; +@import "UploadCollection.less"; +@import "ViewSettingsDialog.less"; diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/Device-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/Device-dbg.js new file mode 100644 index 0000000..7bf8b2a --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/Device-dbg.js @@ -0,0 +1,1594 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +/** + * Device and Feature Detection API of the SAP UI5 Library. + * + * @version 1.28.5 + * @namespace + * @name sap.ui.Device + * @public + */ + +/*global console */ + +//Declare Module if API is available +if (window.jQuery && window.jQuery.sap && window.jQuery.sap.declare) { + window.jQuery.sap.declare("sap.ui.Device", false); +} + +//Introduce namespace if it does not yet exist +if (typeof window.sap !== "object" && typeof window.sap !== "function" ) { + window.sap = {}; +} +if (typeof window.sap.ui !== "object") { + window.sap.ui = {}; +} + +(function() { + + //Skip initialization if API is already available + if (typeof window.sap.ui.Device === "object" || typeof window.sap.ui.Device === "function" ) { + var apiVersion = "1.28.5"; + window.sap.ui.Device._checkAPIVersion(apiVersion); + return; + } + + var device = {}; + +////-------------------------- Logging ------------------------------------- + /* since we cannot use the logging from jquery.sap.global.js, we need to come up with a seperate + * solution for the device API + */ + // helper function for date formatting + function pad0(i,w) { + return ("000" + String(i)).slice(-w); + } + + var FATAL = 0, ERROR = 1, WARNING = 2, INFO = 3, DEBUG = 4, TRACE = 5; + + var deviceLogger = function() { + this.defaultComponent = 'DEVICE'; + this.sWindowName = (window.top == window) ? "" : "[" + window.location.pathname.split('/').slice(-1)[0] + "] "; + // Creates a new log entry depending on its level and component. + this.log = function (iLevel, sMessage, sComponent) { + sComponent = sComponent || this.defaultComponent || ''; + var oNow = new Date(), + oLogEntry = { + time : pad0(oNow.getHours(),2) + ":" + pad0(oNow.getMinutes(),2) + ":" + pad0(oNow.getSeconds(),2), + date : pad0(oNow.getFullYear(),4) + "-" + pad0(oNow.getMonth() + 1,2) + "-" + pad0(oNow.getDate(),2), + timestamp: oNow.getTime(), + level : iLevel, + message : sMessage || "", + component: sComponent || "" + }; + /*eslint-disable no-console */ + if (window.console) { // in IE and FF, console might not exist; in FF it might even disappear + var logText = oLogEntry.date + " " + oLogEntry.time + " " + this.sWindowName + oLogEntry.message + " - " + oLogEntry.component; + switch (iLevel) { + case FATAL: + case ERROR: console.error(logText); break; + case WARNING: console.warn(logText); break; + case INFO: console.info ? console.info(logText) : console.log(logText); break; // info not available in iOS simulator + case DEBUG: console.debug ? console.debug(logText) : console.log(logText); break; // debug not available in IE, fallback to log + case TRACE: console.trace ? console.trace(logText) : console.log(logText); break; // trace not available in IE, fallback to log (no trace) + } + } + /*eslint-enable no-console */ + return oLogEntry; + }; + }; +// instantiate new logger + var logger = new deviceLogger(); + logger.log(INFO, "Device API logging initialized"); + + +//******** Version Check ******** + + //Only used internal to make clear when Device API is loaded in wrong version + device._checkAPIVersion = function(sVersion){ + var v = "1.28.5"; + if (v != sVersion) { + logger.log(WARNING, "Device API version differs: " + v + " <-> " + sVersion); + } + }; + + +//******** Event Management ******** (see Event Provider) + + var mEventRegistry = {}; + + function attachEvent(sEventId, fnFunction, oListener) { + if (!mEventRegistry[sEventId]) { + mEventRegistry[sEventId] = []; + } + mEventRegistry[sEventId].push({oListener: oListener, fFunction:fnFunction}); + } + + function detachEvent(sEventId, fnFunction, oListener) { + var aEventListeners = mEventRegistry[sEventId]; + + if (!aEventListeners) { + return this; + } + + for (var i = 0, iL = aEventListeners.length; i < iL; i++) { + if (aEventListeners[i].fFunction === fnFunction && aEventListeners[i].oListener === oListener) { + aEventListeners.splice(i,1); + break; + } + } + if (aEventListeners.length == 0) { + delete mEventRegistry[sEventId]; + } + } + + function fireEvent(sEventId, mParameters) { + var aEventListeners = mEventRegistry[sEventId], oInfo; + if (aEventListeners) { + aEventListeners = aEventListeners.slice(); + for (var i = 0, iL = aEventListeners.length; i < iL; i++) { + oInfo = aEventListeners[i]; + oInfo.fFunction.call(oInfo.oListener || window, mParameters); + } + } + } + +//******** OS Detection ******** + + /** + * Contains information about the operating system of the device. + * + * @namespace + * @name sap.ui.Device.os + * @public + */ + /** + * Enumeration containing the names of known operating systems. + * + * @namespace + * @name sap.ui.Device.os.OS + * @public + */ + /** + * The name of the operating system. + * + * @see sap.ui.Device.os#OS + * @name sap.ui.Device.os#name + * @type String + * @public + */ + /** + * The version as string. Might be empty if no version can be determined. + * + * @name sap.ui.Device.os#versionStr + * @type String + * @public + */ + /** + * The version as float. Might be -1 if no version can be determined. + * + * @name sap.ui.Device.os#version + * @type float + * @public + */ + /** + * Flag indicating the Windows operating system. + * + * @name sap.ui.Device.os#windows + * @type boolean + * @public + */ + /** + * Flag indicating the Linux operating system. + * + * @name sap.ui.Device.os#linux + * @type boolean + * @public + */ + /** + * Flag indicating the MAC operating system. + * + * @name sap.ui.Device.os#macintosh + * @type boolean + * @public + */ + /** + * Flag indicating the iOS operating system. + * + * @name sap.ui.Device.os#ios + * @type boolean + * @public + */ + /** + * Flag indicating the Android operating system. + * + * @name sap.ui.Device.os#android + * @type boolean + * @public + */ + /** + * Flag indicating the Blackberry operating system. + * + * @name sap.ui.Device.os#blackberry + * @type boolean + * @public + */ + /** + * Flag indicating the Windows Phone operating system. + * + * @name sap.ui.Device.os#windows_phone + * @type boolean + * @public + */ + + /** + * Windows operating system name. + * + * @see sap.ui.Device.os#name + * @name sap.ui.Device.os.OS#WINDOWS + * @public + */ + /** + * MAC operating system name. + * + * @see sap.ui.Device.os#name + * @name sap.ui.Device.os.OS#MACINTOSH + * @public + */ + /** + * Linux operating system name. + * + * @see sap.ui.Device.os#name + * @name sap.ui.Device.os.OS#LINUX + * @public + */ + /** + * iOS operating system name. + * + * @see sap.ui.Device.os#name + * @name sap.ui.Device.os.OS#IOS + * @public + */ + /** + * Android operating system name. + * + * @see sap.ui.Device.os#name + * @name sap.ui.Device.os.OS#ANDROID + * @public + */ + /** + * Blackberry operating system name. + * + * @see sap.ui.Device.os#name + * @name sap.ui.Device.os.OS#BLACKBERRY + * @public + */ + /** + * Windows Phone operating system name. + * + * @see sap.ui.Device.os#name + * @alias sap.ui.Device.os.OS#WINDOWS_PHONE + * @public + */ + + var OS = { + "WINDOWS": "win", + "MACINTOSH": "mac", + "LINUX": "linux", + "IOS": "iOS", + "ANDROID": "Android", + "BLACKBERRY": "bb", + "WINDOWS_PHONE": "winphone" + }; + + function getOS(userAgent){ // may return null!! + + userAgent = userAgent || navigator.userAgent; + + var platform, // regular expression for platform + result; + + function getDesktopOS(){ + var pf = navigator.platform; + if (pf.indexOf("Win") != -1 ) { + // userAgent in windows 7 contains: windows NT 6.1 + // userAgent in windows 8 contains: windows NT 6.2 or higher + // TODO: update this after windows 9 is released + var rVersion = /windows NT 6.(\d)/i; + var uaResult = userAgent.match(rVersion); + var sVersionStr = ""; + if (uaResult) { + if (uaResult[1] == 1) { + sVersionStr = "7"; + } else if (uaResult[1] > 1) { + sVersionStr = "8"; + } + } + return {"name": OS.WINDOWS, "versionStr": sVersionStr}; + } else if (pf.indexOf("Mac") != -1) { + return {"name": OS.MACINTOSH, "versionStr": ""}; + } else if (pf.indexOf("Linux") != -1) { + return {"name": OS.LINUX, "versionStr": ""}; + } + logger.log(INFO, "OS detection returned no result"); + return null; + } + + // Windows Phone. User agent includes other platforms and therefore must be checked first: + platform = /Windows Phone (?:OS )?([\d.]*)/; + result = userAgent.match(platform); + if (result) { + return ({"name": OS.WINDOWS_PHONE, "versionStr": result[1]}); + } + + // BlackBerry 10: + if (userAgent.indexOf("(BB10;") > 0) { + platform = /\sVersion\/([\d.]+)\s/; + result = userAgent.match(platform); + if (result) { + return {"name": OS.BLACKBERRY, "versionStr": result[1]}; + } else { + return {"name": OS.BLACKBERRY, "versionStr": '10'}; + } + } + + // iOS, Android, BlackBerry 6.0+: + platform = /\(([a-zA-Z ]+);\s(?:[U]?[;]?)([\D]+)((?:[\d._]*))(?:.*[\)][^\d]*)([\d.]*)\s/; + result = userAgent.match(platform); + if (result) { + var appleDevices = /iPhone|iPad|iPod/; + var bbDevices = /PlayBook|BlackBerry/; + if (result[0].match(appleDevices)) { + result[3] = result[3].replace(/_/g, "."); + //result[1] contains info of devices + return ({"name": OS.IOS, "versionStr": result[3]}); + } else if (result[2].match(/Android/)) { + result[2] = result[2].replace(/\s/g, ""); + return ({"name": OS.ANDROID, "versionStr": result[3]}); + } else if (result[0].match(bbDevices)) { + return ({"name": OS.BLACKBERRY, "versionStr": result[4]}); + } + } + + // Desktop + return getDesktopOS(); + } + + function setOS() { + device.os = getOS() || {}; + device.os.OS = OS; + device.os.version = device.os.versionStr ? parseFloat(device.os.versionStr) : -1; + + if (device.os.name) { + for (var b in OS) { + if (OS[b] === device.os.name) { + device.os[b.toLowerCase()] = true; + } + } + } + } + setOS(); + + + +//******** Browser Detection ******** + + /** + * Contains information about the used browser. + * + * @namespace + * @name sap.ui.Device.browser + * @public + */ + + /** + * Enumeration containing the names of known browsers. + * + * @namespace + * @name sap.ui.Device.browser.BROWSER + * @public + */ + + /** + * The name of the browser. + * + * @see sap.ui.Device.browser#BROWSER + * @name sap.ui.Device.browser#name + * @type String + * @public + */ + /** + * The version as string. Might be empty if no version can be determined. + * + * @name sap.ui.Device.browser#versionStr + * @type String + * @public + */ + /** + * The version as float. Might be -1 if no version can be determined. + * + * @name sap.ui.Device.browser#version + * @type float + * @public + */ + /** + * Flag indicating whether the mobile variant of the browser is used. + * + * @name sap.ui.Device.browser#mobile + * @type boolean + * @public + */ + /** + * Flag indicating the Internet Explorer browser. + * + * @name sap.ui.Device.browser#internet_explorer + * @type boolean + * @deprecated since 1.20: use sap.ui.Device.browser.msie + * @public + */ + /** + * Flag indicating the Internet Explorer browser. + * + * @name sap.ui.Device.browser#msie + * @type boolean + * @since 1.20.0 + * @public + */ + /** + * Flag indicating the Firefox browser. + * + * @name sap.ui.Device.browser#firefox + * @type boolean + * @public + */ + /** + * Flag indicating the Chrome browser. + * + * @name sap.ui.Device.browser#chrome + * @type boolean + * @public + */ + /** + * Flag indicating the Safari browser. + * + * @name sap.ui.Device.browser#safari + * @type boolean + * @public + */ + /** + * Flag indicating a Webkit browser. + * + * @name sap.ui.Device.browser#webkit + * @type boolean + * @since 1.20.0 + * @public + */ + /** + * Flag indicating a Mozilla browser. + * + * @name sap.ui.Device.browser#mozilla + * @type boolean + * @since 1.20.0 + * @public + */ + /** + * Internet Explorer browser name. + * + * @see sap.ui.Device.browser#name + * @name sap.ui.Device.browser.BROWSER#INTERNET_EXPLORER + * @public + */ + /** + * Firefox browser name. + * + * @see sap.ui.Device.browser#name + * @name sap.ui.Device.browser.BROWSER#FIREFOX + * @public + */ + /** + * Chrome browser name. + * + * @see sap.ui.Device.browser#name + * @name sap.ui.Device.browser.BROWSER#CHROME + * @public + */ + /** + * Safari browser name. + * + * @see sap.ui.Device.browser#name + * @name sap.ui.Device.browser.BROWSER#SAFARI + * @public + */ + /** + * Android stock browser name. + * + * @see sap.ui.Device.browser#name + * @alias sap.ui.Device.browser.BROWSER#ANDROID + * @public + */ + + var BROWSER = { + "INTERNET_EXPLORER": "ie", + "FIREFOX": "ff", + "CHROME": "cr", + "SAFARI": "sf", + "ANDROID": "an" + }; + + var ua = navigator.userAgent; + + /*! + * Taken from jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ + function calcBrowser(customUa){ + var _ua = (customUa || ua).toLowerCase(); // use custom user-agent if given + + var rwebkit = /(webkit)[ \/]([\w.]+)/; + var ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/; + var rmsie = /(msie) ([\w.]+)/; + //TODO this might needs to be adjusted in future IE version > 11 + var rmsienew = /(trident)\/[\w.]+;.*rv:([\w.]+)/; + var rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/; + + // WinPhone IE11 userAgent contains "WebKit" and "Mozilla" and therefore must be checked first + var browserMatch = rmsienew.exec( _ua ) || + rwebkit.exec( _ua ) || + ropera.exec( _ua ) || + rmsie.exec( _ua ) || + _ua.indexOf("compatible") < 0 && rmozilla.exec( _ua ) || + []; + + var res = { browser: browserMatch[1] || "", version: browserMatch[2] || "0" }; + res[res.browser] = true; + return res; + } + + function getBrowser(customUa) { + var b = calcBrowser(customUa); + var _ua = customUa || ua; + + // jQuery checks for user agent strings. We differentiate between browsers + var oExpMobile; + if ( b.mozilla ) { + oExpMobile = /Mobile/; + if ( _ua.match(/Firefox\/(\d+\.\d+)/) ) { + var version = parseFloat(RegExp.$1); + return { + name: BROWSER.FIREFOX, + versionStr: "" + version, + version: version, + mozilla: true, + mobile: oExpMobile.test(_ua) + }; + } else { + // unknown mozilla browser + return { + mobile: oExpMobile.test(_ua), + mozilla: true + }; + } + } else if ( b.webkit ) { + // webkit version is needed for calculation if the mobile android device is a tablet (calculation of other mobile devices work without) + var regExpWebkitVersion = _ua.toLowerCase().match(/webkit[\/]([\d.]+)/); + var webkitVersion; + if (regExpWebkitVersion) { + webkitVersion = regExpWebkitVersion[1]; + } + oExpMobile = /Mobile/; + if ( _ua.match(/(Chrome|CriOS)\/(\d+\.\d+).\d+/)) { + var version = parseFloat(RegExp.$2); + return { + name: BROWSER.CHROME, + versionStr: "" + version, + version: version, + mobile: oExpMobile.test(_ua), + webkit: true, + webkitVersion: webkitVersion + }; + } else if ( _ua.match(/Android .+ Version\/(\d+\.\d+)/) ) { + var version = parseFloat(RegExp.$1); + return { + name: BROWSER.ANDROID, + versionStr: "" + version, + version: version, + mobile: oExpMobile.test(_ua), + webkit: true, + webkitVersion: webkitVersion + }; + } else { // Safari might have an issue with _ua.match(...); thus changing + var oExp = /(Version|PhantomJS)\/(\d+\.\d+).*Safari/; + if (oExp.test(_ua)) { + var aParts = oExp.exec(_ua); + var version = parseFloat(aParts[2]); + return { + name: BROWSER.SAFARI, + versionStr: "" + version, + version: version, + mobile: oExpMobile.test(_ua), + webkit: true, + webkitVersion: webkitVersion, + phantomJS: aParts[1] === "PhantomJS" + }; + } else { + // unknown webkit browser + return { + mobile: oExpMobile.test(_ua), + webkit: true, + webkitVersion: webkitVersion + }; + } + } + } else if ( b.msie || b.trident ) { + var version; + // recognize IE8 when running in compat mode (only then the documentMode property is there) + if (document.documentMode && !customUa) { // only use the actual documentMode when no custom user-agent was given + if (document.documentMode === 7) { // OK, obviously we are IE and seem to be 7... but as documentMode is there this cannot be IE7! + version = 8.0; + } else { + version = parseFloat(document.documentMode); + } + } else { + version = parseFloat(b.version); + } + return { + name: BROWSER.INTERNET_EXPLORER, + versionStr: "" + version, + version: version, + msie: true, + mobile: false // TODO: really? + }; + } + return { + name: "", + versionStr: "", + version: -1, + mobile: false + }; + } + device._testUserAgent = getBrowser; // expose the user-agent parsing (mainly for testing), but don't let it be overwritten + + function setBrowser() { + device.browser = getBrowser(); + device.browser.BROWSER = BROWSER; + + if (device.browser.name) { + for (var b in BROWSER) { + if (BROWSER[b] === device.browser.name) { + device.browser[b.toLowerCase()] = true; + } + } + } + } + setBrowser(); + + + + +//******** Support Detection ******** + + /** + * Contains information about detected capabilities of the used browser or device. + * + * @namespace + * @name sap.ui.Device.support + * @public + */ + + /** + * Flag indicating whether touch events are supported. + * + * @name sap.ui.Device.support#touch + * @type boolean + * @public + */ + /** + * Flag indicating whether pointer events are supported. + * + * @name sap.ui.Device.support#pointer + * @type boolean + * @public + */ + /** + * Flag indicating whether media queries via JavaScript are supported. + * + * @name sap.ui.Device.support#matchmedia + * @type boolean + * @public + */ + /** + * Flag indicating whether events on JavaScript media queries are supported. + * + * @name sap.ui.Device.support#matchmedialistener + * @type boolean + * @public + */ + /** + * Flag indicating whether the native orientationchange event is supported. + * + * @name sap.ui.Device.support#orientation + * @type boolean + * @public + */ + /** + * Flag indicating whether the device has a Retina display. + * + * @name sap.ui.Device.support#retina + * @type boolean + * @public + */ + /** + * Flag indicating whether WebSockets are supported. + * + * @name sap.ui.Device.support#websocket + * @type boolean + * @public + */ + /** + * Flag indicating whether placeholder on input tags are supported. + * + * @name sap.ui.Device.support#input.placeholder + * @type boolean + * @public + */ + + device.support = {}; + + //Maybe better to but this on device.browser because there are cases that a browser can touch but a device can't! + device.support.touch = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch); + + // FIXME: PhantomJS doesn't support touch events but exposes itself as touch + // enabled browser. Therfore we manually override that in jQuery.support! + // This has been tested with PhantomJS 1.9.7 and 2.0.0! + if (device.browser.phantomJS) { + device.support.touch = false; + } + + device.support.pointer = !!window.PointerEvent; + + device.support.matchmedia = !!window.matchMedia; + var m = device.support.matchmedia ? window.matchMedia("screen and (max-width:0px)") : null; //IE10 doesn't like empty string as argument for matchMedia, FF returns null when running within an iframe with display:none + device.support.matchmedialistener = !!(m && m.addListener); + if (device.browser.safari && device.browser.version < 6) { + //Safari seems to have addListener but no events are fired ?! + device.support.matchmedialistener = false; + } + + device.support.orientation = !!("orientation" in window && "onorientationchange" in window); + + device.support.retina = (window.retina || window.devicePixelRatio >= 2); + + device.support.websocket = ('WebSocket' in window); + + device.support.input = {}; + device.support.input.placeholder = ('placeholder' in document.createElement("input")); + +//******** Match Media ******** + + /** + * Event API for Screen width media queries. + * + * @namespace + * @name sap.ui.Device.media + * @public + */ + device.media = {}; + + /** + * Enumeration containing the names of predefined Screen width media query range sets. + * + * @namespace + * @name sap.ui.Device.media.RANGESETS + * @public + */ + + /** + * A 3 step range set (S-L). + * + * @name sap.ui.Device.media.RANGESETS#SAP_3STEPS + * @public + */ + /** + * A 4 step range set (S-XL). + * + * @name sap.ui.Device.media.RANGESETS#SAP_4STEPS + * @public + */ + /** + * A 6 step range set (XS-XXL). + * + * @name sap.ui.Device.media.RANGESETS#SAP_6STEPS + * @public + */ + /** + * A 3 step range set (Phone, Tablet, Desktop).
    + *
    + * This range set is initialized always by default.
    + * Phone is < 600px
    + * Tablet is 600px >= Tablet < 1024
    + * Desktop is > 1024px
    + *
    + * There are 5 css classes to hide elements based on the width of the screen: + *
      + *
    • sapUiHideOnPhone - will be hidden if the screen has 600px or more
    • + *
    • sapUiHideOnTablet - will be hidden if the screen has less than 600px or more than 1023px
    • + *
    • sapUiHideOnDesktop - will be hidden if the screen is smaller than 1024px
    • + *
    • sapUiVisibleOnlyOnPhone - will be visible if the screen has less than 600px
    • + *
    • sapUiVisibleOnlyOnTablet - will be visible if the screen has 600px or more but less than 1024px
    • + *
    • sapUiVisibleOnlyOnDesktop - will be visible if the screen has 1024px or more
    • + *
    + * @alias sap.ui.Device.media.RANGESETS#SAP_STANDARD + * @public + */ + + var RANGESETS = { + "SAP_3STEPS": "3Step", + "SAP_4STEPS": "4Step", + "SAP_6STEPS": "6Step", + "SAP_STANDARD": "Std" + }; + device.media.RANGESETS = RANGESETS; + + device.media._predefinedRangeSets = {}; + device.media._predefinedRangeSets[RANGESETS.SAP_3STEPS] = {points: [520, 960], unit: "px", name: RANGESETS.SAP_3STEPS, names: ["S", "M", "L"]}; + device.media._predefinedRangeSets[RANGESETS.SAP_4STEPS] = {points: [520, 760, 960], unit: "px", name: RANGESETS.SAP_4STEPS, names: ["S", "M", "L", "XL"]}; + device.media._predefinedRangeSets[RANGESETS.SAP_6STEPS] = {points: [241, 400, 541, 768, 960], unit: "px", name: RANGESETS.SAP_6STEPS, names: ["XS", "S", "M", "L", "XL", "XXL"]}; + device.media._predefinedRangeSets[RANGESETS.SAP_STANDARD] = {points: [600, 1024], unit: "px", name: RANGESETS.SAP_STANDARD, names: ["Phone", "Tablet", "Desktop"]}; + + var _defaultRangeSet = RANGESETS.SAP_STANDARD; + var media_timeout = device.support.matchmedialistener ? 0 : 100; + var _querysets = {}; + var media_currentwidth = null; + + function getQuery(from, to, unit){ + unit = unit || "px"; + var q = "screen"; + if (from > 0) { + q = q + " and (min-width:" + from + unit + ")"; + } + if (to > 0) { + q = q + " and (max-width:" + to + unit + ")"; + } + return q; + } + + function handleChange(name){ + if (!device.support.matchmedialistener && media_currentwidth == windowSize()[0]) { + return; //Skip unnecessary resize events + } + + if (_querysets[name].timer) { + clearTimeout(_querysets[name].timer); + _querysets[name].timer = null; + } + + _querysets[name].timer = setTimeout(function() { + var mParams = checkQueries(name, false); + if (mParams) { + fireEvent("media_" + name, mParams); + } + }, media_timeout); + } + + function getRangeInfo(sSetName, iRangeIdx){ + var q = _querysets[sSetName].queries[iRangeIdx]; + var info = {from: q.from, unit: _querysets[sSetName].unit}; + if (q.to >= 0) { + info.to = q.to; + } + if (_querysets[sSetName].names) { + info.name = _querysets[sSetName].names[iRangeIdx]; + } + return info; + } + + function checkQueries(name, infoOnly){ + if (_querysets[name]) { + var aQueries = _querysets[name].queries; + var info = null; + for (var i = 0, len = aQueries.length; i < len; i++) { + var q = aQueries[i]; + if ((q != _querysets[name].currentquery || infoOnly) && device.media.matches(q.from, q.to, _querysets[name].unit)) { + if (!infoOnly) { + _querysets[name].currentquery = q; + } + if (!_querysets[name].noClasses && _querysets[name].names && !infoOnly) { + refreshCSSClasses(name, _querysets[name].names[i]); + } + info = getRangeInfo(name, i); + } + } + + return info; + } + logger.log(WARNING, "No queryset with name " + name + " found", 'DEVICE.MEDIA'); + return null; + } + + function refreshCSSClasses(sSetName, sRangeName, bRemove){ + var sClassPrefix = "sapUiMedia-" + sSetName + "-"; + changeRootCSSClass(sClassPrefix + sRangeName, bRemove, sClassPrefix); + } + + function changeRootCSSClass(sClassName, bRemove, sPrefix){ + var oRoot = document.documentElement; + if (oRoot.className.length == 0) { + if (!bRemove) { + oRoot.className = sClassName; + } + } else { + var aCurrentClasses = oRoot.className.split(" "); + var sNewClasses = ""; + for (var i = 0; i < aCurrentClasses.length; i++) { + if ((sPrefix && aCurrentClasses[i].indexOf(sPrefix) != 0) || (!sPrefix && aCurrentClasses[i] != sClassName)) { + sNewClasses = sNewClasses + aCurrentClasses[i] + " "; + } + } + if (!bRemove) { + sNewClasses = sNewClasses + sClassName; + } + oRoot.className = sNewClasses; + } + } + + function windowSize(){ + return [document.documentElement.clientWidth, document.documentElement.clientHeight]; + } + + function convertToPx(val, unit){ + if (unit === "em" || unit === "rem") { + var s = window.getComputedStyle || function(e) { + return e.currentStyle; + }; + var x = s(document.documentElement).fontSize; + var f = (x && x.indexOf("px") >= 0) ? parseFloat(x, 10) : 16; + return val * f; + } + return val; + } + + function match_legacy(from, to, unit){ + from = convertToPx(from, unit); + to = convertToPx(to, unit); + + var width = windowSize()[0]; + var a = from < 0 || from <= width; + var b = to < 0 || width <= to; + return a && b; + } + + function match(from, to, unit){ + var q = getQuery(from, to, unit); + var mm = window.matchMedia(q); //FF returns null when running within an iframe with display:none + return mm && mm.matches; + } + + device.media.matches = device.support.matchmedia ? match : match_legacy; + + /** + * Registers the given handler to the range change event, which is fired when a new range of the set is entered. + * + * The handler has one map parameter mParams: + *
      + *
    • mParams.from: the range start value
    • + *
    • mParams.to: the range end value, not defined for the last range (INFINITY)
    • + *
    • mParams.unit: the used unit, e.g. px
    • + *
    • mParams.name: the range name if defined
    • + *
    + * + * @param {Function} fnFunction The function to call, when the range change event occurs. + * @param {Object} [oListener] The 'this' context of the handler function. + * @param {String} sName The name of the range set to listen to. + * @name sap.ui.Device.media#attachHandler + * @function + * @public + */ + device.media.attachHandler = function(fnFunction, oListener, sName){ + var name = sName || _defaultRangeSet; + attachEvent("media_" + name, fnFunction, oListener); + }; + + /** + * Deregisters a previously registered handler from the range change event. + * + * @param {Function} fnFunction The function to call, when the range change event occurs. + * @param {Object} [oListener] The 'this' context of the handler function. + * @param {String} sName The name of the range set to listen to. + * @name sap.ui.Device.media#detachHandler + * @function + * @public + */ + device.media.detachHandler = function(fnFunction, oListener, sName){ + var name = sName || _defaultRangeSet; + detachEvent("media_" + name, fnFunction, oListener); + }; + + /** + * Initializes a Screen width media query range set. + * + * This function can either be called only with the name parameter to initialize a predefined range set, + * e.g. sap.ui.Device.media.initRangeSet(sap.ui.Device.media.RANGESETS.SAP_3STEPS). + * + * Or it is possible to define a custom range set as in the following example: + * sap.ui.Device.media.initRangeSet("MyRangeSet", [200, 400], "px", ["Small", "Medium", "Large"]) defines 3 ranges: + *
      + *
    • 0px-199.999px with name "Small"
    • + *
    • 200px-399.999px with name "Medium"
    • + *
    • 400px-INFINITY with name "Large"
    • + *
    + * + * The range names are optional. If they are specified also a CSS class (e.g. sapUiMedia-MyRangeSet-Small) is added to the document root + * depending on the current active range. This can be suppressed via parameter bSuppressClasses. + * + * @param {String} sName The name of the range set. Either a predefined or custom one. The name must be a valid id (consist of letters and digits). + * @param {int[]} aRangeBorders The range borders + * @param {String} [sUnit] The unit which should be used. Allowed values are px (default), em or rem. + * @param {String[]} [aRangeNames] The names of the ranges. The names must be a valid id (consist of letters and digits). + * @param {boolean} [bSuppressClasses] Whether writing CSS classes to the document root should be suppressed + * @name sap.ui.Device.media#initRangeSet + * @function + * @public + */ + device.media.initRangeSet = function(sName, aRangeBorders, sUnit, aRangeNames, bSuppressClasses){ + //TODO Do some Assertions and parameter checking + var oConfig; + if (!sName) { + oConfig = device.media._predefinedRangeSets[_defaultRangeSet]; + } else if (sName && device.media._predefinedRangeSets[sName]) { + oConfig = device.media._predefinedRangeSets[sName]; + } else { + oConfig = {name: sName, unit: (sUnit || "px").toLowerCase(), points: aRangeBorders || [], names: aRangeNames, noClasses: !!bSuppressClasses}; + } + + if (device.media.hasRangeSet(oConfig.name)) { + logger.log(INFO, "Range set " + oConfig.name + " hase already been initialized", 'DEVICE.MEDIA'); + return; + } + + sName = oConfig.name; + oConfig.queries = []; + oConfig.timer = null; + oConfig.currentquery = null; + oConfig.listener = function(){ + return handleChange(sName); + }; + + var from, to, query; + var aPoints = oConfig.points; + for (var i = 0, len = aPoints.length; i <= len; i++) { + from = (i == 0) ? 0 : aPoints[i - 1]; + to = (i == aPoints.length) ? -1 : aPoints[i]; + query = getQuery(from, to, oConfig.unit); + oConfig.queries.push({ + query: query, + from: from, + to: to + }); + } + + if (oConfig.names && oConfig.names.length != oConfig.queries.length) { + oConfig.names = null; + } + + _querysets[oConfig.name] = oConfig; + + if (device.support.matchmedialistener) { //FF, Safari, Chrome, IE10? + var queries = oConfig.queries; + for (var i = 0; i < queries.length; i++) { + var q = queries[i]; + q.media = window.matchMedia(q.query); + q.media.addListener(oConfig.listener); + } + } else { //IE, Safari (<6?) + if (window.addEventListener) { + window.addEventListener("resize", oConfig.listener, false); + window.addEventListener("orientationchange", oConfig.listener, false); + } else { //IE8 + window.attachEvent("onresize", oConfig.listener); + } + } + + oConfig.listener(); + }; + + /** + * Returns information about the current active range of the range set with the given name. + * + * @param {String} sName The name of the range set. + * @name sap.ui.Device.media#getCurrentRange + * @return {Map} the information about the current active range (same structure like the handler parameters (@see sap.ui.Device.media#attachHandler)) + * @function + * @public + */ + device.media.getCurrentRange = function(sName){ + if (!device.media.hasRangeSet(sName)) { + return null; + } + return checkQueries(sName, true); + }; + + /** + * Returns whether a range set with the given name is initialized. + * + * @param {String} sName The name of the range set. + * @name sap.ui.Device.media#hasRangeSet + * @return {boolean} + * @function + * @public + */ + device.media.hasRangeSet = function(sName){ + return sName && !!_querysets[sName]; + }; + + /** + * Removes a previously initialized range set and detaches all registered handlers. + * + * Initialized predefined range sets (@see sap.ui.Device.media#RANGESETS) cannot be removed. + * + * @param {String} sName The name of the range set. + * @name sap.ui.Device.media#removeRangeSet + * @function + * @protected + */ + device.media.removeRangeSet = function(sName){ + if (!device.media.hasRangeSet(sName)) { + logger.log(INFO, "RangeSet " + sName + " not found, thus could not be removed.", 'DEVICE.MEDIA'); + return; + } + + for (var x in RANGESETS) { + if (sName === RANGESETS[x]) { + logger.log(WARNING, "Cannot remove default rangeset - no action taken.", 'DEVICE.MEDIA'); + return; + } + } + + var oConfig = _querysets[sName]; + if (device.support.matchmedialistener) { //FF, Safari, Chrome, IE10? + var queries = oConfig.queries; + for (var i = 0; i < queries.length; i++) { + queries[i].media.removeListener(oConfig.listener); + } + } else { //IE, Safari (<6?) + if (window.removeEventListener) { + window.removeEventListener("resize", oConfig.listener, false); + window.removeEventListener("orientationchange", oConfig.listener, false); + } else { //IE8 + window.detachEvent("onresize", oConfig.listener); + } + } + + refreshCSSClasses(sName, "", true); + delete mEventRegistry["media_" + sName]; + delete _querysets[sName]; + }; + +//******** System Detection ******** + + /** + * Contains information about the system. + * + * @namespace + * @name sap.ui.Device.system + * @public + */ + /** + * Enumeration containing the names of known types of the devices. + * + * @namespace + * @name sap.ui.Device.system.SYSTEMTYPE + * @public + */ + /** + * Flag indicating if the device is a tablet. + * + * @name sap.ui.Device.system#tablet + * @type boolean + * @public + */ + /** + * Flag indicating if the device is a phone. + * + * @name sap.ui.Device.system#phone + * @type boolean + * @public + */ + /** + * Flag indicating if the device is a desktop. + * + * @name sap.ui.Device.system#desktop + * @type boolean + * @public + */ + /** + * Flag indicating if the device is a combination of desktop and tablet. + * + * This property is mainly targeting the windows 8 devices where the mouse and touch event may supported + * natively by the browser. + * + * This property is set to true only when both mouse and touch event are natively supported. + * + * @alias sap.ui.Device.system#combi + * @type boolean + * @public + */ + + var SYSTEMTYPE = { + "TABLET" : "tablet", + "PHONE" : "phone", + "DESKTOP" : "desktop", + "COMBI" : "combi" + }; + + var isWin8 = !!device.os.windows && device.os.version === 8; + var isWin7 = !!device.os.windows && device.os.version === 7; + + device.system = {}; + + function getSystem(_simMobileOnDesktop) { + var t = isTablet(); + + var s = {}; + s.tablet = ((device.support.touch && !isWin7) || isWin8 || !!_simMobileOnDesktop) && t; + s.phone = device.os.windows_phone || ((device.support.touch && !isWin7) || !!_simMobileOnDesktop) && !t; + s.desktop = (!s.tablet && !s.phone) || isWin8 || isWin7; + s.combi = (s.desktop && s.tablet); + s.SYSTEMTYPE = SYSTEMTYPE; + + for (var type in SYSTEMTYPE) { + changeRootCSSClass("sap-" + SYSTEMTYPE[type], !s[SYSTEMTYPE[type]]); + } + return s; + } + + function isTablet() { + var android_phone = (/(?=android)(?=.*mobile)/i.test(navigator.userAgent)); + // According to google documentation: https://developer.chrome.com/multidevice/webview/overview, the WebView shipped with Android 4.4 (KitKat) is based on the same code as Chrome for Android. + // If you're attempting to differentiate between the WebView and Chrome for Android, you should look for the presence of the Version/_X.X_ string in the WebView user-agent string + // The stock browser of Samsung device uses Chrome kernal from Android version 4.4. It behaves differently than the Chrome Webview, therefore it's excluded from this check by checking the 'SAMSUNG' + // string in the user agent. + var bChromeWebView = device.os.android && device.browser.chrome && (device.os.version >= 4.4) && /Version\/\d.\d/.test(navigator.userAgent) && !/SAMSUNG/.test(navigator.userAgent); + if (device.os.name === device.os.OS.IOS) { + return /ipad/i.test(navigator.userAgent); + } else { + if (device.support.touch) { + if (isWin8) { + return true; + } + + //in real mobile device + var densityFactor = window.devicePixelRatio ? window.devicePixelRatio : 1; // may be undefined in Windows Phone devices + if (!bChromeWebView && (device.os.name === device.os.OS.ANDROID) && device.browser.webkit && (device.browser.webkitVersion > 537.10)) { + // On Android sometimes window.screen.width returns the logical CSS pixels, sometimes the physical device pixels; + // Tests on multiple devices suggest this depends on the Webkit version. + // The Webkit patch which changed the behavior was done here: https://bugs.webkit.org/show_bug.cgi?id=106460 + // Chrome 27 with Webkit 537.36 returns the logical pixels, + // Chrome 18 with Webkit 535.19 returns the physical pixels. + // The BlackBerry 10 browser with Webkit 537.10+ returns the physical pixels. + // So it appears like somewhere above Webkit 537.10 we do not hve to divide by the devicePixelRatio anymore. + + // update: Chrome WebView returns physical pixels therefore it's excluded from this special check + densityFactor = 1; + } + + //this is how android distinguishes between tablet and phone + //http://android-developers.blogspot.de/2011/07/new-tools-for-managing-screen-sizes.html + var bTablet = (Math.min(window.screen.width / densityFactor, window.screen.height / densityFactor) >= 600); + + // special workaround for Nexus 7 where the window.screen.width is 600px or 601px in portrait mode (=> tablet) + // but window.screen.height 552px in landscape mode (=> phone), because the browser UI takes some space on top. + // So the detected device type depends on the orientation :-( + // actually this is a Chrome bug, as "width"/"height" should return the entire screen's dimensions and + // "availWidth"/"availHeight" should return the size available after subtracting the browser UI + if (isLandscape() + && (window.screen.height === 552 || window.screen.height === 553) // old/new Nexus 7 + && (/Nexus 7/i.test(navigator.userAgent))) { + bTablet = true; + } + + return bTablet; + } else { + // in desktop browser, it's detected as tablet when + // 1. Windows 8 device with a touch screen where "Touch" is contained in the userAgent + // 2. Android emulation and it's not an Android phone + return (device.browser.msie && ua.indexOf("Touch") !== -1) || (device.os.name === device.os.OS.ANDROID && !android_phone); + } + } + } + + function setSystem(_simMobileOnDesktop) { + device.system = getSystem(_simMobileOnDesktop); + if (device.system.tablet || device.system.phone) { + device.browser.mobile = true; + } + } + setSystem(); + +//******** Orientation Detection ******** + + /** + * Orientation Change Event API. + * + * @namespace + * @name sap.ui.Device.orientation + * @public + */ + + device.orientation = {}; + + /** + * Resize Event API. + * + * @namespace + * @name sap.ui.Device.resize + * @public + */ + device.resize = {}; + + /** + * Registers the given handler to the orientation change event. + * + * The handler has one map parameter mParams: + *
      + *
    • mParams.landscape: whether the orientation is currently landscape
    • + *
    + * + * @param {Function} fnFunction The function to call, when the orientation change event occurs. + * @param {Object} [oListener] The 'this' context of the handler function. + * @name sap.ui.Device.orientation#attachHandler + * @function + * @public + */ + device.orientation.attachHandler = function(fnFunction, oListener){ + attachEvent("orientation", fnFunction, oListener); + }; + + /** + * Registers the given handler to the resize event. + * + * The handler has one map parameter mParams: + *
      + *
    • mParams.height: new height of the window
    • + *
    • mParams.width: new width of the window
    • + *
    + * + * @param {Function} fnFunction The function to call, when the resize event occurs. + * @param {Object} [oListener] The 'this' context of the handler function. + * @name sap.ui.Device.resize#attachHandler + * @function + * @public + */ + device.resize.attachHandler = function(fnFunction, oListener){ + attachEvent("resize", fnFunction, oListener); + }; + + /** + * Deregisters a previously registered handler from the orientation change event. + * @param {Function} fnFunction The function to call, when the orientation change event occurs. + * @param {Object} [oListener] The 'this' context of the handler function. + * @name sap.ui.Device.orientation#detachHandler + * @function + * @public + */ + device.orientation.detachHandler = function(fnFunction, oListener){ + detachEvent("orientation", fnFunction, oListener); + }; + + /** + * Deregisters a previously registered handler from the resize event. + * @param {Function} fnFunction The function to call, when the resize event occurs. + * @param {Object} [oListener] The 'this' context of the handler function. + * @name sap.ui.Device.resize#detachHandler + * @function + * @public + */ + device.resize.detachHandler = function(fnFunction, oListener){ + detachEvent("resize", fnFunction, oListener); + }; + + function setOrientationInfo(oInfo){ + oInfo.landscape = isLandscape(true); + oInfo.portrait = !oInfo.landscape; + } + + function handleOrientationChange(){ + setOrientationInfo(device.orientation); + fireEvent("orientation", {landscape: device.orientation.landscape}); + } + + function handleResizeChange(){ + setResizeInfo(device.resize); + fireEvent("resize", {height: device.resize.height, width: device.resize.width}); + } + + function setResizeInfo(oInfo){ + oInfo.width = windowSize()[0]; + oInfo.height = windowSize()[1]; + } + + function handleOrientationResizeChange(){ + var wasL = device.orientation.landscape; + var isL = isLandscape(); + if (wasL != isL) { + handleOrientationChange(); + } + //throttle resize events because most browsers throw one or more resize events per pixel + //for every resize event inside the period from 150ms (starting from the first resize event), + //we only fire one resize event after this period + if (!iResizeTimeout) { + iResizeTimeout = window.setTimeout(handleResizeTimeout, 150); + } + } + + function handleResizeTimeout() { + handleResizeChange(); + iResizeTimeout = null; + } + + var bOrientationchange = false; + var bResize = false; + var iOrientationTimeout; + var iResizeTimeout; + var iClearFlagTimeout; + var iWindowHeightOld = windowSize()[1]; + var iWindowWidthOld = windowSize()[0]; + var bKeyboardOpen = false; + var iLastResizeTime; + var rInputTagRegex = /INPUT|TEXTAREA|SELECT/; + // On iPhone with iOS version 7.0.x and on iPad with iOS version 7.x (tested with all versions below 7.1.1), there's a invalide resize event fired + // when changing the orientation while keyboard is shown. + var bSkipFirstResize = device.os.ios && device.browser.name === "sf" && + ((device.system.phone && device.os.version >= 7 && device.os.version < 7.1) || (device.system.tablet && device.os.version >= 7)); + + function isLandscape(bFromOrientationChange){ + if (device.support.touch && device.support.orientation) { + //if on screen keyboard is open and the call of this method is from orientation change listener, reverse the last value. + //this is because when keyboard opens on android device, the height can be less than the width even in portrait mode. + if (bKeyboardOpen && bFromOrientationChange) { + return !device.orientation.landscape; + } + //when keyboard opens, the last orientation change value will be retured. + if (bKeyboardOpen) { + return device.orientation.landscape; + } + //otherwise compare the width and height of window + } else { + //most desktop browsers and windows phone/tablet which not support orientationchange + if (device.support.matchmedia && device.support.orientation) { + return !!window.matchMedia("(orientation: landscape)").matches; + } + } + var size = windowSize(); + return size[0] > size[1]; + } + + function handleMobileOrientationResizeChange(evt) { + if (evt.type == "resize") { + // supress the first invalid resize event fired before orientationchange event while keyboard is open on iPhone 7.0.x + // because this event has wrong size infos + if (bSkipFirstResize && rInputTagRegex.test(document.activeElement.tagName) && !bOrientationchange) { + return; + } + + var iWindowHeightNew = windowSize()[1]; + var iWindowWidthNew = windowSize()[0]; + var iTime = new Date().getTime(); + //skip multiple resize events by only one orientationchange + if (iWindowHeightNew === iWindowHeightOld && iWindowWidthNew === iWindowWidthOld) { + return; + } + bResize = true; + //on mobile devices opening the keyboard on some devices leads to a resize event + //in this case only the height changes, not the width + if ((iWindowHeightOld != iWindowHeightNew) && (iWindowWidthOld == iWindowWidthNew)) { + //Asus Transformer tablet fires two resize events when orientation changes while keyboard is open. + //Between these two events, only the height changes. The check of if keyboard is open has to be skipped because + //it may be judged as keyboard closed but the keyboard is still open which will affect the orientation detection + if (!iLastResizeTime || (iTime - iLastResizeTime > 300)) { + bKeyboardOpen = (iWindowHeightNew < iWindowHeightOld); + } + handleResizeChange(); + } else { + iWindowWidthOld = iWindowWidthNew; + } + iLastResizeTime = iTime; + iWindowHeightOld = iWindowHeightNew; + + if (iClearFlagTimeout) { + window.clearTimeout(iClearFlagTimeout); + iClearFlagTimeout = null; + } + //Some Android build-in browser fires a resize event after the viewport is applied. + //This resize event has to be dismissed otherwise when the next orientationchange event happens, + //a UI5 resize event will be fired with the wrong window size. + iClearFlagTimeout = window.setTimeout(clearFlags, 1200); + } else if (evt.type == "orientationchange") { + bOrientationchange = true; + } + + if (iOrientationTimeout) { + clearTimeout(iOrientationTimeout); + iOrientationTimeout = null; + } + iOrientationTimeout = window.setTimeout(handleMobileTimeout, 50); + } + + function handleMobileTimeout() { + if (bOrientationchange && bResize) { + handleOrientationChange(); + handleResizeChange(); + bOrientationchange = false; + bResize = false; + if (iClearFlagTimeout) { + window.clearTimeout(iClearFlagTimeout); + iClearFlagTimeout = null; + } + } + iOrientationTimeout = null; + } + + function clearFlags(){ + bOrientationchange = false; + bResize = false; + iClearFlagTimeout = null; + } + +//******** Update browser settings for test purposes ******** + + device._update = function(_simMobileOnDesktop) { + ua = navigator.userAgent; + logger.log(WARNING, "Device API values manipulated: NOT PRODUCTIVE FEATURE!!! This should be only used for test purposes. Only use if you know what you are doing."); + setBrowser(); + setOS(); + setSystem(_simMobileOnDesktop); + }; + +//******************************************************** + + setResizeInfo(device.resize); + setOrientationInfo(device.orientation); + + //Add API to global namespace + window.sap.ui.Device = device; + + // Add handler for orientationchange and resize after initialization of Device API (IE8 fires onresize synchronously) + if (device.support.touch && device.support.orientation) { + //logic for mobile devices which support orientationchange (like ios, android, blackberry) + window.addEventListener("resize", handleMobileOrientationResizeChange, false); + window.addEventListener("orientationchange", handleMobileOrientationResizeChange, false); + } else { + if (window.addEventListener) { + //most desktop browsers and windows phone/tablet which not support orientationchange + window.addEventListener("resize", handleOrientationResizeChange, false); + } else { + //IE8 + window.attachEvent("onresize", handleOrientationResizeChange); + } + } + + //Always initialize the default media range set + device.media.initRangeSet(); + + // define module if API is available + if (sap.ui.define) { + sap.ui.define("sap/ui/Device", [], function() { + return device; + }); + } + +}()); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/Device.js b/DVHMA-OpenUI5/www/resources/sap/ui/Device.js new file mode 100644 index 0000000..51d492e --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/Device.js @@ -0,0 +1,22 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +if(window.jQuery&&window.jQuery.sap&&window.jQuery.sap.declare){window.jQuery.sap.declare("sap.ui.Device",false);}if(typeof window.sap!=="object"&&typeof window.sap!=="function"){window.sap={};}if(typeof window.sap.ui!=="object"){window.sap.ui={};}(function(){if(typeof window.sap.ui.Device==="object"||typeof window.sap.ui.Device==="function"){var c="1.28.5";window.sap.ui.Device._checkAPIVersion(c);return;}var d={};function p(i,w){return("000"+String(i)).slice(-w);}var F=0,E=1,W=2,I=3,D=4,T=5;var g=function(){this.defaultComponent='DEVICE';this.sWindowName=(window.top==window)?"":"["+window.location.pathname.split('/').slice(-1)[0]+"] ";this.log=function(i,s,a){a=a||this.defaultComponent||'';var b=new Date(),e={time:p(b.getHours(),2)+":"+p(b.getMinutes(),2)+":"+p(b.getSeconds(),2),date:p(b.getFullYear(),4)+"-"+p(b.getMonth()+1,2)+"-"+p(b.getDate(),2),timestamp:b.getTime(),level:i,message:s||"",component:a||""};if(window.console){var f=e.date+" "+e.time+" "+this.sWindowName+e.message+" - "+e.component;switch(i){case F:case E:console.error(f);break;case W:console.warn(f);break;case I:console.info?console.info(f):console.log(f);break;case D:console.debug?console.debug(f):console.log(f);break;case T:console.trace?console.trace(f):console.log(f);break;}}return e;};};var l=new g();l.log(I,"Device API logging initialized");d._checkAPIVersion=function(s){var v="1.28.5";if(v!=s){l.log(W,"Device API version differs: "+v+" <-> "+s);}};var h={};function j(e,f,a){if(!h[e]){h[e]=[];}h[e].push({oListener:a,fFunction:f});}function k(e,f,a){var b=h[e];if(!b){return this;}for(var i=0,q=b.length;i1){w="8";}}return{"name":O.WINDOWS,"versionStr":w};}else if(s.indexOf("Mac")!=-1){return{"name":O.MACINTOSH,"versionStr":""};}else if(s.indexOf("Linux")!=-1){return{"name":O.LINUX,"versionStr":""};}l.log(I,"OS detection returned no result");return null;}b=/Windows Phone (?:OS )?([\d.]*)/;e=a.match(b);if(e){return({"name":O.WINDOWS_PHONE,"versionStr":e[1]});}if(a.indexOf("(BB10;")>0){b=/\sVersion\/([\d.]+)\s/;e=a.match(b);if(e){return{"name":O.BLACKBERRY,"versionStr":e[1]};}else{return{"name":O.BLACKBERRY,"versionStr":'10'};}}b=/\(([a-zA-Z ]+);\s(?:[U]?[;]?)([\D]+)((?:[\d._]*))(?:.*[\)][^\d]*)([\d.]*)\s/;e=a.match(b);if(e){var i=/iPhone|iPad|iPod/;var q=/PlayBook|BlackBerry/;if(e[0].match(i)){e[3]=e[3].replace(/_/g,".");return({"name":O.IOS,"versionStr":e[3]});}else if(e[2].match(/Android/)){e[2]=e[2].replace(/\s/g,"");return({"name":O.ANDROID,"versionStr":e[3]});}else if(e[0].match(q)){return({"name":O.BLACKBERRY,"versionStr":e[4]});}}return f();}function r(){d.os=o()||{};d.os.OS=O;d.os.version=d.os.versionStr?parseFloat(d.os.versionStr):-1;if(d.os.name){for(var b in O){if(O[b]===d.os.name){d.os[b.toLowerCase()]=true;}}}}r();var B={"INTERNET_EXPLORER":"ie","FIREFOX":"ff","CHROME":"cr","SAFARI":"sf","ANDROID":"an"};var u=navigator.userAgent; +/*! + * Taken from jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +function y(a){var b=(a||u).toLowerCase();var e=/(webkit)[ \/]([\w.]+)/;var f=/(opera)(?:.*version)?[ \/]([\w.]+)/;var i=/(msie) ([\w.]+)/;var q=/(trident)\/[\w.]+;.*rv:([\w.]+)/;var s=/(mozilla)(?:.*? rv:([\w.]+))?/;var t=q.exec(b)||e.exec(b)||f.exec(b)||i.exec(b)||b.indexOf("compatible")<0&&s.exec(b)||[];var v={browser:t[1]||"",version:t[2]||"0"};v[v.browser]=true;return v;}function z(a){var b=y(a);var e=a||u;var f;if(b.mozilla){f=/Mobile/;if(e.match(/Firefox\/(\d+\.\d+)/)){var v=parseFloat(RegExp.$1);return{name:B.FIREFOX,versionStr:""+v,version:v,mozilla:true,mobile:f.test(e)};}else{return{mobile:f.test(e),mozilla:true};}}else if(b.webkit){var i=e.toLowerCase().match(/webkit[\/]([\d.]+)/);var w;if(i){w=i[1];}f=/Mobile/;if(e.match(/(Chrome|CriOS)\/(\d+\.\d+).\d+/)){var v=parseFloat(RegExp.$2);return{name:B.CHROME,versionStr:""+v,version:v,mobile:f.test(e),webkit:true,webkitVersion:w};}else if(e.match(/Android .+ Version\/(\d+\.\d+)/)){var v=parseFloat(RegExp.$1);return{name:B.ANDROID,versionStr:""+v,version:v,mobile:f.test(e),webkit:true,webkitVersion:w};}else{var q=/(Version|PhantomJS)\/(\d+\.\d+).*Safari/;if(q.test(e)){var s=q.exec(e);var v=parseFloat(s[2]);return{name:B.SAFARI,versionStr:""+v,version:v,mobile:f.test(e),webkit:true,webkitVersion:w,phantomJS:s[1]==="PhantomJS"};}else{return{mobile:f.test(e),webkit:true,webkitVersion:w};}}}else if(b.msie||b.trident){var v;if(document.documentMode&&!a){if(document.documentMode===7){v=8.0;}else{v=parseFloat(document.documentMode);}}else{v=parseFloat(b.version);}return{name:B.INTERNET_EXPLORER,versionStr:""+v,version:v,msie:true,mobile:false};}return{name:"",versionStr:"",version:-1,mobile:false};}d._testUserAgent=z;function A(){d.browser=z();d.browser.BROWSER=B;if(d.browser.name){for(var b in B){if(B[b]===d.browser.name){d.browser[b.toLowerCase()]=true;}}}}A();d.support={};d.support.touch=!!(('ontouchstart'in window)||window.DocumentTouch&&document instanceof window.DocumentTouch);if(d.browser.phantomJS){d.support.touch=false;}d.support.pointer=!!window.PointerEvent;d.support.matchmedia=!!window.matchMedia;var m=d.support.matchmedia?window.matchMedia("screen and (max-width:0px)"):null;d.support.matchmedialistener=!!(m&&m.addListener);if(d.browser.safari&&d.browser.version<6){d.support.matchmedialistener=false;}d.support.orientation=!!("orientation"in window&&"onorientationchange"in window);d.support.retina=(window.retina||window.devicePixelRatio>=2);d.support.websocket=('WebSocket'in window);d.support.input={};d.support.input.placeholder=('placeholder'in document.createElement("input"));d.media={};var R={"SAP_3STEPS":"3Step","SAP_4STEPS":"4Step","SAP_6STEPS":"6Step","SAP_STANDARD":"Std"};d.media.RANGESETS=R;d.media._predefinedRangeSets={};d.media._predefinedRangeSets[R.SAP_3STEPS]={points:[520,960],unit:"px",name:R.SAP_3STEPS,names:["S","M","L"]};d.media._predefinedRangeSets[R.SAP_4STEPS]={points:[520,760,960],unit:"px",name:R.SAP_4STEPS,names:["S","M","L","XL"]};d.media._predefinedRangeSets[R.SAP_6STEPS]={points:[241,400,541,768,960],unit:"px",name:R.SAP_6STEPS,names:["XS","S","M","L","XL","XXL"]};d.media._predefinedRangeSets[R.SAP_STANDARD]={points:[600,1024],unit:"px",name:R.SAP_STANDARD,names:["Phone","Tablet","Desktop"]};var _=R.SAP_STANDARD;var C=d.support.matchmedialistener?0:100;var G={};var H=null;function J(f,t,a){a=a||"px";var q="screen";if(f>0){q=q+" and (min-width:"+f+a+")";}if(t>0){q=q+" and (max-width:"+t+a+")";}return q;}function K(a){if(!d.support.matchmedialistener&&H==Q()[0]){return;}if(G[a].timer){clearTimeout(G[a].timer);G[a].timer=null;}G[a].timer=setTimeout(function(){var b=M(a,false);if(b){n("media_"+a,b);}},C);}function L(s,i){var q=G[s].queries[i];var a={from:q.from,unit:G[s].unit};if(q.to>=0){a.to=q.to;}if(G[s].names){a.name=G[s].names[i];}return a;}function M(a,b){if(G[a]){var e=G[a].queries;var f=null;for(var i=0,s=e.length;i=0)?parseFloat(x,10):16;return v*f;}return v;}function U(f,t,e){f=S(f,e);t=S(t,e);var w=Q()[0];var a=f<0||f<=w;var b=t<0||w<=t;return a&&b;}function V(f,t,a){var q=J(f,t,a);var b=window.matchMedia(q);return b&&b.matches;}d.media.matches=d.support.matchmedia?V:U;d.media.attachHandler=function(f,a,s){var b=s||_;j("media_"+b,f,a);};d.media.detachHandler=function(f,a,s){var b=s||_;k("media_"+b,f,a);};d.media.initRangeSet=function(s,a,b,e,f){var t;if(!s){t=d.media._predefinedRangeSets[_];}else if(s&&d.media._predefinedRangeSets[s]){t=d.media._predefinedRangeSets[s];}else{t={name:s,unit:(b||"px").toLowerCase(),points:a||[],names:e,noClasses:!!f};}if(d.media.hasRangeSet(t.name)){l.log(I,"Range set "+t.name+" hase already been initialized",'DEVICE.MEDIA');return;}s=t.name;t.queries=[];t.timer=null;t.currentquery=null;t.listener=function(){return K(s);};var v,w,x;var x1=t.points;for(var i=0,y1=x1.length;i<=y1;i++){v=(i==0)?0:x1[i-1];w=(i==x1.length)?-1:x1[i];x=J(v,w,t.unit);t.queries.push({query:x,from:v,to:w});}if(t.names&&t.names.length!=t.queries.length){t.names=null;}G[t.name]=t;if(d.support.matchmedialistener){var z1=t.queries;for(var i=0;i=4.4)&&/Version\/\d.\d/.test(navigator.userAgent)&&!/SAMSUNG/.test(navigator.userAgent);if(d.os.name===d.os.OS.IOS){return/ipad/i.test(navigator.userAgent);}else{if(d.support.touch){if(Y){return true;}var e=window.devicePixelRatio?window.devicePixelRatio:1;if(!b&&(d.os.name===d.os.OS.ANDROID)&&d.browser.webkit&&(d.browser.webkitVersion>537.10)){e=1;}var t=(Math.min(window.screen.width/e,window.screen.height/e)>=600);if(t1()&&(window.screen.height===552||window.screen.height===553)&&(/Nexus 7/i.test(navigator.userAgent))){t=true;}return t;}else{return(d.browser.msie&&u.indexOf("Touch")!==-1)||(d.os.name===d.os.OS.ANDROID&&!a);}}}function b1(a){d.system=$(a);if(d.system.tablet||d.system.phone){d.browser.mobile=true;}}b1();d.orientation={};d.resize={};d.orientation.attachHandler=function(f,a){j("orientation",f,a);};d.resize.attachHandler=function(f,a){j("resize",f,a);};d.orientation.detachHandler=function(f,a){k("orientation",f,a);};d.resize.detachHandler=function(f,a){k("resize",f,a);};function c1(i){i.landscape=t1(true);i.portrait=!i.landscape;}function d1(){c1(d.orientation);n("orientation",{landscape:d.orientation.landscape});}function e1(){f1(d.resize);n("resize",{height:d.resize.height,width:d.resize.width});}function f1(i){i.width=Q()[0];i.height=Q()[1];}function g1(){var w=d.orientation.landscape;var i=t1();if(w!=i){d1();}if(!l1){l1=window.setTimeout(h1,150);}}function h1(){e1();l1=null;}var i1=false;var j1=false;var k1;var l1;var m1;var n1=Q()[1];var o1=Q()[0];var p1=false;var q1;var r1=/INPUT|TEXTAREA|SELECT/;var s1=d.os.ios&&d.browser.name==="sf"&&((d.system.phone&&d.os.version>=7&&d.os.version<7.1)||(d.system.tablet&&d.os.version>=7));function t1(f){if(d.support.touch&&d.support.orientation){if(p1&&f){return!d.orientation.landscape;}if(p1){return d.orientation.landscape;}}else{if(d.support.matchmedia&&d.support.orientation){return!!window.matchMedia("(orientation: landscape)").matches;}}var s=Q();return s[0]>s[1];}function u1(e){if(e.type=="resize"){if(s1&&r1.test(document.activeElement.tagName)&&!i1){return;}var w=Q()[1];var i=Q()[0];var t=new Date().getTime();if(w===n1&&i===o1){return;}j1=true;if((n1!=w)&&(o1==i)){if(!q1||(t-q1>300)){p1=(w ManagedObject -> validateProperty + + // API + // setURLFilter,onConvertURL => return true, false + // convertURL + + // what about being not on the root with the HTML page + // appcachebuster is always relative to the HTML page + + + // we need a detection for the root location + // --> to avoid registerComponent("./") + // --> configuration? + + // nested components? + // indexOf check in convertURL will not work here! + + // determine the language and loading mode from the configuration + var oConfiguration = sap.ui.getCore().getConfiguration(); + var sLanguage = oConfiguration.getLanguage(); + var bSync = oConfiguration.getAppCacheBusterMode() === "sync"; + var bBatch = oConfiguration.getAppCacheBusterMode() === "batch"; + + // file index (maps file to timestamp) / avoid duplicate loading of known base paths + var mIndex = {}; + + // store the original function to intercept + var fnAjaxOrig = jQuery.ajax; + var fnIncludeScript = jQuery.sap.includeScript; + var fnIncludeStyleSheet = jQuery.sap.includeStyleSheet; + var fnValidateProperty = sap.ui.base.ManagedObject.prototype.validateProperty; + + // determine the application base url + var sLocation = document.location.href.replace(/\?.*|#.*/g, ""); + + // determine the base urls (normalize and then calculate the resources and test-resources urls) + var oUri = URI(jQuery.sap.getModulePath("", "/../")); + var sOrgBaseUrl = oUri.toString(); + if (oUri.is("relative")) { + oUri = oUri.absoluteTo(sLocation); + } + var sBaseUrl = oUri.normalize().toString(); + var sResBaseUrl = URI("resources").absoluteTo(sBaseUrl).toString(); + //var sTestResBaseUrl = URI("test-resources").absoluteTo(sBaseUrl).toString(); + + // create resources check regex + var oFilter = new RegExp("^" + jQuery.sap.escapeRegExp(sResBaseUrl)); + + // helper function to append the trailing slashes if missing + var fnEnsureTrailingSlash = function(sUrl) { + // append the missing trailing slash + if (sUrl.length > 0 && sUrl.slice(-1) !== "/") { + sUrl += "/"; + } + return sUrl; + }; + + // internal registration function (with SyncPoint usage) + var fnRegister = function(sBaseUrl, oSyncPoint) { + + // the request object + var oRequest; + var sUrl; + var sAbsoluteBaseUrl; + + // in case of an incoming array we register each base url on its own + // except in case of the batch mode => there we pass all URLs in a POST request. + if (jQuery.isArray(sBaseUrl) && !bBatch) { + + jQuery.each(sBaseUrl, function(iIndex, sBaseUrlEntry) { + fnRegister(sBaseUrlEntry, oSyncPoint); + }); + + } else if (jQuery.isArray(sBaseUrl) && bBatch) { + + // BATCH MODE: send all base urls via POST request to the server + // -> server returns an JSON object for containing the index for + // different base urls. + // + // returns e.g.: + // { + // "": { ...... }, + // ... + // } + var sRootUrl = fnEnsureTrailingSlash(sBaseUrl[0]); + var sContent = []; + + // log + jQuery.sap.log.debug("sap.ui.core.AppCacheBuster.register(\"" + sRootUrl + "\"); // BATCH MODE!"); + + // determine the base URL + var sAbsoluteRootUrl = AppCacheBuster.normalizeURL(sRootUrl); // "./" removes the html doc from path + + // log + jQuery.sap.log.debug(" --> normalized to: \"" + sAbsoluteRootUrl + "\""); + + // create the list of absolute base urls + jQuery.each(sBaseUrl, function(iIndex, sUrlEntry) { + sUrl = fnEnsureTrailingSlash(sUrlEntry); + var sAbsoluteUrl = AppCacheBuster.normalizeURL(sUrl); + if (!mIndex[sAbsoluteBaseUrl]) { + sContent.push(sAbsoluteUrl); + } + }); + + // if we need to fetch some base urls we trigger the request otherwise + // we gracefully ignore the function call + if (sContent.length > 0) { + + // create the URL for the index file + var sUrl = sAbsoluteRootUrl + "sap-ui-cachebuster-info.json?sap-ui-language=" + sLanguage; + + // configure request; check how to execute the request (sync|async) + oRequest = { + url: sUrl, + type: "POST", + async: !bSync && !!oSyncPoint, + dataType: "json", + contentType: "text/plain", + data: sContent.join("\n"), + success: function(data) { + // notify that the content has been loaded + sap.ui.core.AppCacheBuster.onIndexLoaded(sUrl, data); + // add the index file to the index map + jQuery.extend(mIndex, data); + }, + error: function() { + jQuery.sap.log.error("Failed to batch load AppCacheBuster index file from: \"" + sUrl + "\"."); + } + }; + + } + + } else { + + // ensure the trailing slash + sBaseUrl = fnEnsureTrailingSlash(sBaseUrl); + + // log + jQuery.sap.log.debug("sap.ui.core.AppCacheBuster.register(\"" + sBaseUrl + "\");"); + + // determine the base URL + sAbsoluteBaseUrl = AppCacheBuster.normalizeURL(sBaseUrl); // "./" removes the html doc from path + + // log + jQuery.sap.log.debug(" --> normalized to: \"" + sAbsoluteBaseUrl + "\""); + + // if the index file has not been loaded yet => load! + if (!mIndex[sAbsoluteBaseUrl]) { + + // create the URL for the index file + var sUrl = sAbsoluteBaseUrl + "sap-ui-cachebuster-info.json?sap-ui-language=" + sLanguage; + + // configure request; check how to execute the request (sync|async) + oRequest = { + url: sUrl, + async: !bSync && !!oSyncPoint, + dataType: "json", + success: function(data) { + // notify that the content has been loaded + sap.ui.core.AppCacheBuster.onIndexLoaded(sUrl, data); + // add the index file to the index map + mIndex[sAbsoluteBaseUrl] = data; + }, + error: function() { + jQuery.sap.log.error("Failed to load AppCacheBuster index file from: \"" + sUrl + "\"."); + } + }; + + } + + } + + // only request in case of having a correct request object! + if (oRequest) { + + // hook to onIndexLoad to allow to inject the index file manually + var mIndexInfo = sap.ui.core.AppCacheBuster.onIndexLoad(oRequest.url); + // if anything else than undefined or null is returned we will use this + // content as data for the cache buster index + if (mIndexInfo != null) { + jQuery.sap.log.info("AppCacheBuster index file injected for: \"" + sUrl + "\"."); + oRequest.success(mIndexInfo); + } else { + + // use the syncpoint only during boot => otherwise the syncpoint + // is not given because during runtime the registration needs to + // be done synchrously. + if (oRequest.async) { + var iSyncPoint = oSyncPoint.startTask("load " + sUrl); + var fnSuccess = oRequest.success, fnError = oRequest.error; + jQuery.extend(oRequest, { + success: function(data) { + fnSuccess.apply(this, arguments); + oSyncPoint.finishTask(iSyncPoint); + }, + error: function() { + fnError.apply(this, arguments); + oSyncPoint.finishTask(iSyncPoint, false); + } + }); + } + + // load it + jQuery.sap.log.info("Loading AppCacheBuster index file from: \"" + sUrl + "\"."); + jQuery.ajax(oRequest); + + } + + } + + }; + + /** + * The AppCacheBuster is used to hook into URL relevant functions in jQuery + * and SAPUI5 and rewrite the URLs with a timestamp segment. The timestamp + * information is fetched from the server and used later on for the URL + * rewriting. + * + * @namespace + * @public + * @alias sap.ui.core.AppCacheBuster + */ + var AppCacheBuster = /** @lends sap.ui.core.AppCacheBuster */ { + + /** + * Boots the AppCacheBuster by initializing and registering the + * base URLs configured in the UI5 bootstrap. + * + * @param {jQuery.sap.syncPoint} [oSyncPoint] the sync point + * + * @private + */ + boot: function(oSyncPoint) { + + // application cachebuster mechanism (copy of array for later modification) + var oConfig = oConfiguration.getAppCacheBuster(); + + if (oConfig && oConfig.length > 0) { + + oConfig = oConfig.slice(); + + // flag to activate the cachebuster + var bActive = true; + + // fallback for old boolean configuration (only 1 string entry) + // restriction: the values true, false and x are reserved as fallback values + // and cannot be used as base url locations + var sValue = String(oConfig[0]).toLowerCase(); + if (oConfig.length === 1) { + if (sValue === "true" || sValue === "x") { + // register the current base URL (if it is a relative URL) + // hint: if UI5 is referenced relative on a server it might be possible + // with the mechanism to register another base URL. + var oUri = URI(sOrgBaseUrl); + oConfig = oUri.is("relative") ? [oUri.toString()] : []; + } else if (sValue === "false") { + bActive = false; + } + } + + // activate the cachebuster + if (bActive) { + + // initialize the AppCacheBuster + AppCacheBuster.init(); + + // register the components + fnRegister(oConfig, oSyncPoint); + + } + + } + + }, + + /** + * Initializes the AppCacheBuster. Hooks into the relevant functions + * in the Core to intercept the code which are dealing with URLs and + * converts those URLs into cachebuster URLs. + * + * The intercepted functions are: + *
      + *
    • jQuery.ajax
    • + *
    • jQuery.sap.includeScript
    • + *
    • jQuery.sap.includeStyleSheet
    • + *
    • sap.ui.base.ManagedObject.prototype.validateProperty
    • + *
    + * + * @private + */ + init: function() { + + // function shortcuts (better performance when used frequently!) + var fnConvertUrl = AppCacheBuster.convertURL; + var fnNormalizeUrl = AppCacheBuster.normalizeURL; + + // resources URL's will be handled via standard + // UI5 cachebuster mechanism (so we simply ignore them) + var fnIsACBUrl = function(sUrl) { + if (sUrl && typeof (sUrl) === "string") { + sUrl = fnNormalizeUrl(sUrl); + return !sUrl.match(oFilter); + } + return false; + }; + + // enhance the original ajax function with appCacheBuster functionality + jQuery.ajax = function(url, options) { + if (url && url.url && fnIsACBUrl(url.url)) { + url.url = fnConvertUrl(url.url); + } + return fnAjaxOrig.apply(this, arguments); + }; + + // enhance the includeScript function + jQuery.sap.includeScript = function(sUrl, sId) { + var oArgs = Array.prototype.slice.apply(arguments); + if (fnIsACBUrl(oArgs[0] /* sUrl */)) { + oArgs[0] = fnConvertUrl(oArgs[0] /* sUrl */); + } + return fnIncludeScript.apply(this, oArgs); + }; + + // enhance the includeStyleSheet function + jQuery.sap.includeStyleSheet = function(sUrl, sId) { + var oArgs = Array.prototype.slice.apply(arguments); + if (fnIsACBUrl(oArgs[0] /* sUrl */)) { + oArgs[0] = fnConvertUrl(oArgs[0] /* sUrl */); + } + return fnIncludeStyleSheet.apply(this, oArgs); + }; + + // enhance the validateProperty function to intercept URI types + // test via: new sap.ui.commons.Image({src: "acctest/img/Employee.png"}).getSrc() + // new sap.ui.commons.Image({src: "./acctest/../acctest/img/Employee.png"}).getSrc() + sap.ui.base.ManagedObject.prototype.validateProperty = function(sPropertyName, oValue) { + var oMetadata = this.getMetadata(), + oProperty = oMetadata.getProperty(sPropertyName), + oArgs; + if (oProperty && oProperty.type === "sap.ui.core.URI") { + oArgs = Array.prototype.slice.apply(arguments); + try { + if (fnIsACBUrl(oArgs[1] /* oValue */)) { + oArgs[1] = fnConvertUrl(oArgs[1] /* oValue */); + } + } catch (e) { + // URI normalization or conversion failed, fall back to normal processing + } + } + // either forward the modified or the original arguments + return fnValidateProperty.apply(this, oArgs || arguments); + }; + + }, + + /** + * Terminates the AppCacheBuster and removes the hooks from the URL + * specific functions. This will also clear the index which is used + * to prefix matching URLs. + * + * @private + */ + exit: function() { + + // remove the function interceptions + jQuery.ajax = fnAjaxOrig; + jQuery.sap.includeScript = fnIncludeScript; + jQuery.sap.includeStyleSheet = fnIncludeStyleSheet; + sap.ui.base.ManagedObject.prototype.validateProperty = fnValidateProperty; + + // clear the index + mIndex = {}; + + }, + + /** + * Registers an application. Loads the cachebuster index file from this + * locations. All registered files will be considered by the cachebuster + * and the URLs will be prefixed with the timestamp of the index file. + * + * @param {string} base URL of an application providing a cachebuster index file + * + * @public + */ + register: function(sBaseUrl) { + fnRegister(sBaseUrl); + }, + + /** + * Converts the given URL if it matches a URL in the cachebuster index. + * If not then the same URL will be returned. To prevent URLs from being + * modified by the application cachebuster you can implement the function + * sap.ui.core.AppCacheBuster.handleURL. + * + * @param {string} sUrl any URL + * @return {string} modified URL when matching the index or unmodified when not + * + * @public + */ + convertURL: function(sUrl) { + + jQuery.sap.log.debug("sap.ui.core.AppCacheBuster.convertURL(\"" + sUrl + "\");"); + + // modify the incoming url if found in the appCacheBuster file + if (mIndex && sUrl) { + + // normalize the URL + // local resources are registered with "./" => we remove the leading "./"! + // (code location for this: sap/ui/Global.js:sap.ui.localResources) + var sNormalizedUrl = AppCacheBuster.normalizeURL(sUrl); + jQuery.sap.log.debug(" --> normalized to: \"" + sNormalizedUrl + "\""); + + // should the URL be handled? + if (sNormalizedUrl && AppCacheBuster.handleURL(sNormalizedUrl)) { + + // scan for a matching base URL (by default we use the default index) + // we lookup the base url in the index list and if found we split the + // url into the base and path where the timestamp is added in between + jQuery.each(mIndex, function(sBaseUrl, mBaseUrlIndex) { + var sUrlPath; + if (sBaseUrl && sNormalizedUrl.length >= sBaseUrl.length && sNormalizedUrl.slice(0, sBaseUrl.length) === sBaseUrl ) { + sUrlPath = sNormalizedUrl.slice(sBaseUrl.length); + if (mBaseUrlIndex[sUrlPath]) { + // return the normilzed URL only if found in the index + sUrl = sBaseUrl + "~" + mBaseUrlIndex[sUrlPath] + "~/" + sUrlPath; + jQuery.sap.log.debug(" ==> return \"" + sUrl + "\";"); + return false; + } + } + }); + + } + + } + return sUrl; + + }, + + /** + * Normalizes the given URL and make it absolute. + * + * @param {string} sUrl any URL + * @return {string} normalized URL + * + * @public + */ + normalizeURL: function(sUrl) { + + // local resources are registered with "./" => we remove the leading "./"! + // (code location for this: sap/ui/Global.js:sap.ui.localResources) + // we by default normalize all relative URLs for a common base + var oUri = URI(sUrl || "./"); + if (oUri.is("relative")) { //(sUrl.match(/^\.\/|\..\//g)) { + oUri = oUri.absoluteTo(sLocation); + } + //return oUri.normalize().toString(); + // prevent to normalize the search and hash to avoid "+" in the search string + // because for search strings the space will be normalized as "+" + return oUri.normalizeProtocol().normalizeHostname().normalizePort().normalizePath().toString(); + + }, + + /** + * Callback function which can be overwritten to programmatically decide + * whether to rewrite the given URL or not. + * + * @param {string} sUrl any URL + * @return {boolean} true to rewrite or false to ignore + * + * @public + */ + handleURL: function(sUrl) { + // API function to be overridden by apps + // to exclude URLs from being manipulated + return true; + }, + + /** + * Hook to intercept the load of the cache buster info. Returns either the + * JSON object with the cache buster info or null/undefined if the URL should + * be handled. + *

    + * The cache buster info object is a map which contains the relative + * paths for the resources as key and a timestamp/etag as string as + * value for the entry. The value is used to be added as part of the + * URL to create a new URL if the resource has been changed. + * @param {string} sUrl URL from where to load the cachebuster info + * @return {object} cache buster info object or null/undefined + * @private + */ + onIndexLoad: function(sUrl) { + return null; + }, + + /** + * Hook to intercept the result of the cache buster info request. It will pass + * the loaded cache buster info object to this function to do something with that + * information. + * @param {string} sUrl URL from where to load the cachebuster info + * @param {object} mIndexInfo cache buster info object + * @private + */ + onIndexLoaded: function(sUrl, mIndexInfo) { + } + + }; + + // check for pre-defined callback handlers and register the callbacks + var mHooks = oConfiguration.getAppCacheBusterHooks(); + if (mHooks) { + jQuery.each(["handleURL", "onIndexLoad", "onIndexLoaded"], function(iIndex, sFunction) { + if (typeof mHooks[sFunction] === "function") { + AppCacheBuster[sFunction] = mHooks[sFunction]; + } + }); + } + + return AppCacheBuster; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/AppCacheBuster.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/AppCacheBuster.js new file mode 100644 index 0000000..19697fb --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/AppCacheBuster.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Core','sap/ui/thirdparty/URI'],function(q,C,U){"use strict";var c=sap.ui.getCore().getConfiguration();var l=c.getLanguage();var s=c.getAppCacheBusterMode()==="sync";var b=c.getAppCacheBusterMode()==="batch";var i={};var a=q.ajax;var I=q.sap.includeScript;var f=q.sap.includeStyleSheet;var v=sap.ui.base.ManagedObject.prototype.validateProperty;var L=document.location.href.replace(/\?.*|#.*/g,"");var u=URI(q.sap.getModulePath("","/../"));var o=u.toString();if(u.is("relative")){u=u.absoluteTo(L);}var B=u.normalize().toString();var r=URI("resources").absoluteTo(B).toString();var F=new RegExp("^"+q.sap.escapeRegExp(r));var E=function(d){if(d.length>0&&d.slice(-1)!=="/"){d+="/";}return d;};var R=function(B,S){var d;var e;var g;if(q.isArray(B)&&!b){q.each(B,function(x,y){R(y,S);});}else if(q.isArray(B)&&b){var j=E(B[0]);var k=[];q.sap.log.debug("sap.ui.core.AppCacheBuster.register(\""+j+"\"); // BATCH MODE!");var m=A.normalizeURL(j);q.sap.log.debug(" --> normalized to: \""+m+"\"");q.each(B,function(x,y){e=E(y);var z=A.normalizeURL(e);if(!i[g]){k.push(z);}});if(k.length>0){var e=m+"sap-ui-cachebuster-info.json?sap-ui-language="+l;d={url:e,type:"POST",async:!s&&!!S,dataType:"json",contentType:"text/plain",data:k.join("\n"),success:function(x){sap.ui.core.AppCacheBuster.onIndexLoaded(e,x);q.extend(i,x);},error:function(){q.sap.log.error("Failed to batch load AppCacheBuster index file from: \""+e+"\".");}};}}else{B=E(B);q.sap.log.debug("sap.ui.core.AppCacheBuster.register(\""+B+"\");");g=A.normalizeURL(B);q.sap.log.debug(" --> normalized to: \""+g+"\"");if(!i[g]){var e=g+"sap-ui-cachebuster-info.json?sap-ui-language="+l;d={url:e,async:!s&&!!S,dataType:"json",success:function(x){sap.ui.core.AppCacheBuster.onIndexLoaded(e,x);i[g]=x;},error:function(){q.sap.log.error("Failed to load AppCacheBuster index file from: \""+e+"\".");}};}}if(d){var n=sap.ui.core.AppCacheBuster.onIndexLoad(d.url);if(n!=null){q.sap.log.info("AppCacheBuster index file injected for: \""+e+"\".");d.success(n);}else{if(d.async){var p=S.startTask("load "+e);var t=d.success,w=d.error;q.extend(d,{success:function(x){t.apply(this,arguments);S.finishTask(p);},error:function(){w.apply(this,arguments);S.finishTask(p,false);}});}q.sap.log.info("Loading AppCacheBuster index file from: \""+e+"\".");q.ajax(d);}}};var A={boot:function(S){var d=c.getAppCacheBuster();if(d&&d.length>0){d=d.slice();var e=true;var V=String(d[0]).toLowerCase();if(d.length===1){if(V==="true"||V==="x"){var u=URI(o);d=u.is("relative")?[u.toString()]:[];}else if(V==="false"){e=false;}}if(e){A.init();R(d,S);}}},init:function(){var d=A.convertURL;var n=A.normalizeURL;var g=function(e){if(e&&typeof(e)==="string"){e=n(e);return!e.match(F);}return false;};q.ajax=function(e,j){if(e&&e.url&&g(e.url)){e.url=d(e.url);}return a.apply(this,arguments);};q.sap.includeScript=function(e,j){var k=Array.prototype.slice.apply(arguments);if(g(k[0])){k[0]=d(k[0]);}return I.apply(this,k);};q.sap.includeStyleSheet=function(e,j){var k=Array.prototype.slice.apply(arguments);if(g(k[0])){k[0]=d(k[0]);}return f.apply(this,k);};sap.ui.base.ManagedObject.prototype.validateProperty=function(p,V){var m=this.getMetadata(),P=m.getProperty(p),j;if(P&&P.type==="sap.ui.core.URI"){j=Array.prototype.slice.apply(arguments);try{if(g(j[1])){j[1]=d(j[1]);}}catch(e){}}return v.apply(this,j||arguments);};},exit:function(){q.ajax=a;q.sap.includeScript=I;q.sap.includeStyleSheet=f;sap.ui.base.ManagedObject.prototype.validateProperty=v;i={};},register:function(B){R(B);},convertURL:function(d){q.sap.log.debug("sap.ui.core.AppCacheBuster.convertURL(\""+d+"\");");if(i&&d){var n=A.normalizeURL(d);q.sap.log.debug(" --> normalized to: \""+n+"\"");if(n&&A.handleURL(n)){q.each(i,function(B,m){var e;if(B&&n.length>=B.length&&n.slice(0,B.length)===B){e=n.slice(B.length);if(m[e]){d=B+"~"+m[e]+"~/"+e;q.sap.log.debug(" ==> return \""+d+"\";");return false;}}});}}return d;},normalizeURL:function(d){var u=URI(d||"./");if(u.is("relative")){u=u.absoluteTo(L);}return u.normalizeProtocol().normalizeHostname().normalizePort().normalizePath().toString();},handleURL:function(d){return true;},onIndexLoad:function(d){return null;},onIndexLoaded:function(d,m){}};var h=c.getAppCacheBusterHooks();if(h){q.each(["handleURL","onIndexLoad","onIndexLoaded"],function(d,e){if(typeof h[e]==="function"){A[e]=h[e];}});}return A;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/BusyIndicator-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/BusyIndicator-dbg.js new file mode 100644 index 0000000..ed6ec3a --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/BusyIndicator-dbg.js @@ -0,0 +1,282 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// A static class to show a busy indicator +sap.ui.define(['jquery.sap.global', './Popup'], + function(jQuery, Popup) { + "use strict"; + + /** + * Provides methods to show or hide a waiting animation covering the whole page and blocking user interaction. + * @namespace + * @version 1.28.5 + * @public + * @alias sap.ui.core.BusyIndicator + */ + var BusyIndicator = jQuery.extend(jQuery.sap.newObject(sap.ui.base.EventProvider.prototype), { + oPopup: null, + oDomRef: null, + bOpenRequested: false, + iDEFAULT_DELAY_MS: 1000, + sDOM_ID: "sapUiBusyIndicator" + }); + + sap.ui.base.EventProvider.apply(BusyIndicator); + + /** + * Map of event names and ids, that are provided by this class + * @private + * @name sap.ui.core.BusyIndicator.M_EVENTS + */ + BusyIndicator.M_EVENTS = {Open: "Open", Close: "Close"}; + + + /** + * Sets up the BusyIndicator HTML and the Popup instance. + * + * @private + * @name sap.ui.core.BusyIndicator._init + * @function + */ + BusyIndicator._init = function() { + // Create the graphics element + var root = document.createElement("div"); + root.id = this.sDOM_ID; + + this._oResBundle = sap.ui.getCore().getLibraryResourceBundle("sap.ui.core"); + var sTitle = this._oResBundle.getText("BUSY_TEXT"); + delete this._oResBundle; + + // Render into invisible area, so the size settings from CSS are applied + var oInvisible = sap.ui.getCore().getStaticAreaRef(); + oInvisible.appendChild(root); + jQuery(root).addClass("sapUiBusy").attr("tabindex", 0).attr("role", "progressbar").attr("alt", "").attr("title", sTitle); + this.oDomRef = root; + + this.oPopup = new Popup(root); + this.oPopup.setModal(true, "sapUiBlyBusy"); + this.oPopup.setShadow(false); + + // since IE <9 isn't able to use CSS animations a JS-animation is needed + if (sap.ui.Device.browser.msie && sap.ui.Device.browser.version <= 9) { + this._iBusyPageWidth = jQuery(document.body).width(); + this._iBusyLeft = 0; + this._iBusyDelta = 60; + this._iBusyTimeStep = 50; + this._iBusyWidth = 500; + + this.attachOpen(this._IEAnimation, this); + } + }; + + /** + * Animates the BusyIndicator for InternetExplorer <=9 + * + * @private + * @name sap.ui.core.BusyIndicator._IEAnimation + * @function + */ + BusyIndicator._IEAnimation = function(oEvent) { + if (!this._$BusyIndicator && oEvent) { + // save the DOM-Ref when function is called for the first time to save + // the expensive DOM-calls during animation + this._$BusyIndicator = oEvent.getParameter("$Busy"); + } + jQuery.sap.clearDelayedCall(this._iAnimationTimeout); + + this._iBusyLeft += this._iBusyDelta; + if (this._iBusyLeft > this._iBusyPageWidth) { + this._iBusyLeft = -this._iBusyWidth; + } + if (!this._$BusyIndicator) { + // DOM-Ref is removed when the BusyIndicator was hidden -> stop the animation and delayed calls + jQuery.sap.clearDelayedCall(this._iAnimationTimeout); + } else { + this._$BusyIndicator.css("background-position", this._iBusyLeft + "px 0px"); + this._iAnimationTimeout = jQuery.sap.delayedCall(this._iBusyTimeStep, this, this._IEAnimation); + } + }; + + /** + * Displays the BusyIndicator and starts blocking all user input. + * This only happens after some delay and if after that delay the BusyIndicator.hide() has not yet been called in the meantime. + * There is a certain default value for the delay, but that one can be overridden. + * + * @public + * @param {int} [iDelay] The delay in milliseconds before opening the BusyIndicator. It is not opened if hide() is called before end of the delay. If no delay (or no valid delay) is given, the default value is used. + * @name sap.ui.core.BusyIndicator.show + * @function + */ + BusyIndicator.show = function(iDelay) { + jQuery.sap.log.debug("sap.ui.core.BusyIndicator.show (delay: " + iDelay + ") at " + new Date().getTime()); + + jQuery.sap.assert(iDelay === undefined || (typeof iDelay == "number" && (iDelay % 1 == 0)), "iDelay must be empty or an integer"); + + if ((iDelay === undefined) + || ((iDelay != 0) && (parseInt(iDelay, 10) == 0)) + || (parseInt(iDelay, 10) < 0)) { + iDelay = this.iDEFAULT_DELAY_MS; + } + + this.bOpenRequested = true; + if (iDelay === 0) { // avoid async call when there is no delay + this._showNowIfRequested(); + } else { + jQuery.sap.delayedCall(iDelay, this, "_showNowIfRequested"); + } + }; + + + /** + * Immediately displays the BusyIndicator if the application has not called hide() yet. + * + * @private + * @name sap.ui.core.BusyIndicator._showNowIfRequested + * @function + */ + BusyIndicator._showNowIfRequested = function() { + jQuery.sap.log.debug("sap.ui.core.BusyIndicator._showNowIfRequested (bOpenRequested: " + this.bOpenRequested + ") at " + new Date().getTime()); + + // Do not open if the request has been canceled in the meantime + if (!this.bOpenRequested) { + return; + } + + // If body/Core are not available yet, give them some more time and open later if still required + if (!document.body || !sap.ui.getCore().isInitialized()) { + jQuery.sap.delayedCall(100, this, "_showNowIfRequested"); + return; + } + + this.bOpenRequested = false; // opening request is handled + + // Initialize/create the BusyIndicator if this has not been done yet + if (!this.oDomRef) { + this._init(); + } + + // Actually open the popup + this.oPopup.open(0, Popup.Dock.CenterCenter, Popup.Dock.CenterCenter, document); + + // allow an event handler to do something with the indicator + this.fireOpen({$Busy: this.oPopup._$()}); + + // Grab the focus once opened + var oDomRef = jQuery.sap.domById(BusyIndicator.sDOM_ID); + jQuery.sap.focus(oDomRef); + + jQuery("body").attr("aria-busy", true); + }; + + /** + * Removes the BusyIndicator from the screen + * + * @public + * @name sap.ui.core.BusyIndicator.hide + * @function + */ + BusyIndicator.hide = function() { + jQuery.sap.log.debug("sap.ui.core.BusyIndicator.hide at " + new Date().getTime()); + + var bi = BusyIndicator; // Restore scope in case we are called with setTimeout or so... + + bi.bOpenRequested = false; + + if (bi.oDomRef) { // only if the BusyIndicator was shown before! + jQuery("body").removeAttr("aria-busy"); + + // allow an event handler to do something with the indicator + this.fireClose({$Busy: this.oPopup._$()}); + + bi.oPopup.close(0); + } + + delete this._$BusyIndicator; + }; + + + /* EVENT HANDLING */ + + /** + * Registers a handler for the "open" event. + * + * @param {function} + * fnFunction The function to call, when the event occurs. This function will be called on the + * oListener-instance (if present) or in a 'static way'. + * @param {object} + * [oListener] Object on which to call the given function. + * @return {sap.ui.core.BusyIndicator} this to allow method chaining + * @public + * @name sap.ui.core.BusyIndicator.attachOpen + * @function + */ + BusyIndicator.attachOpen = function(fnFunction, oListener) { + this.attachEvent(BusyIndicator.M_EVENTS.Open, fnFunction, oListener); + return this; + }; + + /** + * Unregisters a handler for the "open" event + * @param {function} + * fnFunction The callback function to unregister + * @param {object} + * oListener Object on which the given function had to be called. + * @return {sap.ui.core.BusyIndicator} this to allow method chaining + * @public + * @name sap.ui.core.BusyIndicator.detachOpen + * @function + */ + BusyIndicator.detachOpen = function(fnFunction, oListener) { + this.detachEvent(BusyIndicator.M_EVENTS.Open, fnFunction, oListener); + return this; + }; + + /** + * Registers a handler for the "close" event + * + * @param {function} + * fnFunction The function to call, when the event occurs. This function will be called on the + * oListener-instance (if present) or in a 'static way'. + * @param {object} + * [oListener] Object on which to call the given function. + * @return {sap.ui.core.BusyIndicator} this to allow method chaining + * @public + * @name sap.ui.core.BusyIndicator.attachClose + * @function + */ + BusyIndicator.attachClose = function(fnFunction, oListener) { + this.attachEvent(BusyIndicator.M_EVENTS.Close, fnFunction, oListener); + return this; + }; + + /** + * Unregisters a handler for the "close" event + * + * @param {function} + * fnFunction The callback function to unregister + * @param {object} + * oListener Object on which the given function had to be called. + * @return {sap.ui.core.BusyIndicator} this to allow method chaining + * @public + * @name sap.ui.core.BusyIndicator.detachClose + * @function + */ + BusyIndicator.detachClose = function(fnFunction, oListener) { + this.detachEvent(BusyIndicator.M_EVENTS.Close, fnFunction, oListener); + return this; + }; + + BusyIndicator.fireOpen = function(mParameters) { + this.fireEvent(BusyIndicator.M_EVENTS.Open, mParameters); + }; + + BusyIndicator.fireClose = function(mParameters) { + this.fireEvent(BusyIndicator.M_EVENTS.Close, mParameters); + }; + + return BusyIndicator; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/BusyIndicator.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/BusyIndicator.js new file mode 100644 index 0000000..217851b --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/BusyIndicator.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Popup'],function(q,P){"use strict";var B=q.extend(q.sap.newObject(sap.ui.base.EventProvider.prototype),{oPopup:null,oDomRef:null,bOpenRequested:false,iDEFAULT_DELAY_MS:1000,sDOM_ID:"sapUiBusyIndicator"});sap.ui.base.EventProvider.apply(B);B.M_EVENTS={Open:"Open",Close:"Close"};B._init=function(){var r=document.createElement("div");r.id=this.sDOM_ID;this._oResBundle=sap.ui.getCore().getLibraryResourceBundle("sap.ui.core");var t=this._oResBundle.getText("BUSY_TEXT");delete this._oResBundle;var i=sap.ui.getCore().getStaticAreaRef();i.appendChild(r);q(r).addClass("sapUiBusy").attr("tabindex",0).attr("role","progressbar").attr("alt","").attr("title",t);this.oDomRef=r;this.oPopup=new P(r);this.oPopup.setModal(true,"sapUiBlyBusy");this.oPopup.setShadow(false);if(sap.ui.Device.browser.msie&&sap.ui.Device.browser.version<=9){this._iBusyPageWidth=q(document.body).width();this._iBusyLeft=0;this._iBusyDelta=60;this._iBusyTimeStep=50;this._iBusyWidth=500;this.attachOpen(this._IEAnimation,this);}};B._IEAnimation=function(e){if(!this._$BusyIndicator&&e){this._$BusyIndicator=e.getParameter("$Busy");}q.sap.clearDelayedCall(this._iAnimationTimeout);this._iBusyLeft+=this._iBusyDelta;if(this._iBusyLeft>this._iBusyPageWidth){this._iBusyLeft=-this._iBusyWidth;}if(!this._$BusyIndicator){q.sap.clearDelayedCall(this._iAnimationTimeout);}else{this._$BusyIndicator.css("background-position",this._iBusyLeft+"px 0px");this._iAnimationTimeout=q.sap.delayedCall(this._iBusyTimeStep,this,this._IEAnimation);}};B.show=function(d){q.sap.log.debug("sap.ui.core.BusyIndicator.show (delay: "+d+") at "+new Date().getTime());if((d===undefined)||((d!=0)&&(parseInt(d,10)==0))||(parseInt(d,10)<0)){d=this.iDEFAULT_DELAY_MS;}this.bOpenRequested=true;if(d===0){this._showNowIfRequested();}else{q.sap.delayedCall(d,this,"_showNowIfRequested");}};B._showNowIfRequested=function(){q.sap.log.debug("sap.ui.core.BusyIndicator._showNowIfRequested (bOpenRequested: "+this.bOpenRequested+") at "+new Date().getTime());if(!this.bOpenRequested){return;}if(!document.body||!sap.ui.getCore().isInitialized()){q.sap.delayedCall(100,this,"_showNowIfRequested");return;}this.bOpenRequested=false;if(!this.oDomRef){this._init();}this.oPopup.open(0,P.Dock.CenterCenter,P.Dock.CenterCenter,document);this.fireOpen({$Busy:this.oPopup._$()});var d=q.sap.domById(B.sDOM_ID);q.sap.focus(d);q("body").attr("aria-busy",true);};B.hide=function(){q.sap.log.debug("sap.ui.core.BusyIndicator.hide at "+new Date().getTime());var b=B;b.bOpenRequested=false;if(b.oDomRef){q("body").removeAttr("aria-busy");this.fireClose({$Busy:this.oPopup._$()});b.oPopup.close(0);}delete this._$BusyIndicator;};B.attachOpen=function(f,l){this.attachEvent(B.M_EVENTS.Open,f,l);return this;};B.detachOpen=function(f,l){this.detachEvent(B.M_EVENTS.Open,f,l);return this;};B.attachClose=function(f,l){this.attachEvent(B.M_EVENTS.Close,f,l);return this;};B.detachClose=function(f,l){this.detachEvent(B.M_EVENTS.Close,f,l);return this;};B.fireOpen=function(p){this.fireEvent(B.M_EVENTS.Open,p);};B.fireClose=function(p){this.fireEvent(B.M_EVENTS.Close,p);};return B;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Component-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Component-dbg.js new file mode 100644 index 0000000..7c9e823 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Component-dbg.js @@ -0,0 +1,803 @@ +/* + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides base class sap.ui.core.Component for all components +sap.ui.define(['jquery.sap.global', 'sap/ui/base/ManagedObject', './ComponentMetadata', './Core'], + function(jQuery, ManagedObject, ComponentMetadata, Core) { + "use strict"; + + /*global Promise */ + + /** + * Creates and initializes a new component with the given sId and + * settings. + * + * The set of allowed entries in the mSettings object depends on + * the concrete subclass and is described there. See {@link sap.ui.core.Component} + * for a general description of this argument. + * + * @param {string} + * [sId] optional id for the new control; generated automatically if + * no non-empty id is given Note: this can be omitted, no matter + * whether mSettings will be given or not! + * @param {object} + * [mSettings] optional map/JSON-object with initial settings for the + * new component instance + * @public + * + * @class Base Class for Component. + * @extends sap.ui.base.ManagedObject + * @abstract + * @author SAP SE + * @version 1.28.5 + * @alias sap.ui.core.Component + * @since 1.9.2 + */ + var Component = ManagedObject.extend("sap.ui.core.Component", /** @lends sap.ui.core.Component.prototype */ + + { + constructor : function(sId, mSettings) { + + ManagedObject.apply(this, arguments); + + }, + + metadata : { + stereotype : "component", + "abstract": true, + version : "0.0", + /*enable/disable type validation by MessageManager + handleValidation: 'boolean'*/ + includes : [], // css, javascript files that should be used in the component + dependencies : { // external dependencies + libs : [], + components : [], + ui5version : "" + }, + config: {}, // static configuration + customizing: { // component/view customizing + + /* Example: + "sap.ui.viewReplacements": { + "sap.xx.org.Main": { + viewName: "sap.xx.new.Main", + type: "XML" + } + }, + "sap.ui.controllerReplacements": { + "sap.xx.org.Main": "sap.xx.new.Main" + }, + "sap.ui.viewExtensions": { + "sap.xx.new.Main": { + "extensionX": { + name: "sap.xx.new.Fragment1", + type: "sap.ui.core.XMLFragment" + }, + "extensionY": { + ... + } + } + }, + "sap.ui.viewModification": { + "sap.xx.new.Main": { + "myControlId": { + text: "{i18n_custom>mytext}" + } + } + } + */ + }, + /* + properties: { + config : "any" + }, + */ + library: "sap.ui.core" + } + + }, /* Metadata constructor */ ComponentMetadata); + + /** + * Returns the metadata for the Component class. + * + * @return {sap.ui.core.ComponentMetadata} Metadata for the Component class. + * @static + * @public + * @name sap.ui.core.ComponentMetadata.getMetadata + * @function + */ + + /** + * Returns the metadata for the class that this component belongs to. + * + * @return {sap.ui.core.ComponentMetadata} Metadata for the class of the component + * @public + * @name sap.ui.core.ComponentMetadata#getMetadata + * @function + */ + + + /** + * Activates the customizing configuration for the given component. + * @param {string} sComponentName the name of the component to activate + * @private + * @deprecated Since 1.21.0 as it is handled by component instantiation + */ + Component.activateCustomizing = function(sComponentName) { + // noop since it will be handled by component instantiation + }; + + /** + * Deactivates the customizing configuration for the given component. + * @param {string} sComponentName the name of the component to activate + * @private + * @deprecated Since 1.21.0 as it is handled by component termination + */ + Component.deactivateCustomizing = function(sComponentName) { + // noop since it will be handled by component termination + }; + + // ---- Ownership functionality ------------------------------------------------------------ + + // + // Implementation note: the whole ownership functionality is now part of Component + // a) to ensure that only Components are used as owners + // b) to keep component related code out of ManagedObject as far as possible + // + // Only exception is the _sOwnerId property and its assignment in the ManagedObject + // constructor, but that doesn't require much knowledge about components + + /** + * Returns the Id of the object in whose "context" the given ManagedObject has been created. + * + * For objects that are not ManagedObjects or for which the owner is unknown, + * undefined will be returned as owner Id. + * + * Note: Ownership for objects is only checked by the framework at the time + * when they are created. It is not checked or updated afterwards. And it can only be detected + * while the {@link sap.ui.core.Component.runAsOwner Component.runAsOwner} function is executing. + * Without further action, this is only the case while the content of an UIComponent is + * {@link sap.ui.core.UIComponent.createContent constructed} or when a + * {@link sap.ui.core.routing.Router Router} creates a new View and its content. + * + * Note: This method does not guarantee that the returned owner Id belongs + * to a Component. Currently, it always does. But future versions of UI5 might introduce a + * more fine grained ownership concept, e.g. taking Views into account. Callers that + * want to deal only with components as owners, should use the following method: + * {@link sap.ui.core.Component.getOwnerComponentFor Component.getOwnerComponentFor}. + * It guarantees that the returned object (if any) will be a Component. + * + * Further note that only the Id of the owner is recorded. In rare cases, + * when the lifecycle of a ManagedObject is not bound to the lifecycle of its owner, + * (e.g. by the means of aggregations), then the owner might have been destroyed already + * whereas the ManagedObject is still alive. So even the existence of an owner Id is + * not a guarantee for the existence of the corresponding owner. + * + * @param {sap.ui.base.ManagedObject} oObject Object to retrieve the owner Id for + * @return {string} the Id of the owner or undefined + * @static + * @public + * @since 1.15.1 + */ + Component.getOwnerIdFor = function(oObject) { + jQuery.sap.assert(oObject instanceof ManagedObject, "oObject must be given and must be a ManagedObject"); + var sOwnerId = ( oObject instanceof ManagedObject ) && oObject._sOwnerId; + return sOwnerId || undefined; // no or empty id --> undefined + }; + + /** + * Returns the Component instance in whose "context" the given ManagedObject has been created + * or undefined. + * + * This is a convenience wrapper around {@link sap.ui.core.Component.getOwnerIdFor Component.getOwnerIdFor}. + * If the owner Id cannot be determined for the reasons document with getOwnerForId + * or when the Component for the determined Id no longer exists, undefined + * will be returned. + * + * @param {sap.ui.base.ManagedObject} oObject Object to retrieve the owner Component for + * @return {sap.ui.core.Component} the owner Component or undefined. + * @static + * @public + * @since 1.25.1 + */ + Component.getOwnerComponentFor = function(oObject) { + var sOwnerId = Component.getOwnerIdFor(oObject); + return sOwnerId && sap.ui.component(sOwnerId); + }; + + /** + * Calls the function fn once and marks all ManagedObjects + * created during that call as "owned" by this Component. + * + * Nested calls of this method are supported (e.g. inside a newly created, + * nested component). The currently active owner Component will be remembered + * before executing fn and restored afterwards. + * + * @param {function} fn the function to execute + * @return {any} result of function fn + * @since 1.25.1 + * @public + * @experimental + */ + Component.prototype.runAsOwner = function(fn) { + jQuery.sap.assert(typeof fn === "function", "fn must be a function"); + + var oldOwnerId = ManagedObject._sOwnerId; + try { + ManagedObject._sOwnerId = this.getId(); + return fn.call(); + } finally { + ManagedObject._sOwnerId = oldOwnerId; + } + }; + + // ---- ---- + + /** + * @see sap.ui.base.Object#getInterface + * @public + */ + Component.prototype.getInterface = function() { + return this; + }; + + /* + * initialize the Component and keep the component data + */ + Component.prototype._initCompositeSupport = function(mSettings) { + + // registry of mock servers + this._mMockServers = {}; + + // register the component instance + this.getMetadata().onInitComponent(); + + // make user specific data available during component instantiation + this.oComponentData = mSettings && mSettings.componentData; + + // static initialization + this.getMetadata().init(); + + // init the component models + this.initComponentModels(); + + // error handler (if exists) + if (this.onWindowError) { + this._fnWindowErrorHandler = jQuery.proxy(function(oEvent) { + var oError = oEvent.originalEvent; + this.onWindowError(oError.message, oError.filename, oError.lineno); + }, this); + jQuery(window).bind("error", this._fnWindowErrorHandler); + } + + + // before unload handler (if exists) + if (this.onWindowBeforeUnload) { + this._fnWindowBeforeUnloadHandler = jQuery.proxy(this.onWindowBeforeUnload, this); + jQuery(window).bind("beforeunload", this._fnWindowBeforeUnloadHandler); + } + + // unload handler (if exists) + if (this.onWindowUnload) { + this._fnWindowUnloadHandler = jQuery.proxy(this.onWindowUnload, this); + jQuery(window).bind("unload", this._fnWindowUnloadHandler); + } + + }; + + /* + * clean up mock server and event handlers + */ + Component.prototype.destroy = function() { + + // kill the mock servers + if (this._mMockServers) { + jQuery.each(this._mMockServers, function(sName, oMockServer) { + oMockServer.stop(); + }); + delete this._mMockServers; + } + + // remove the event handlers + if (this._fnWindowErrorHandler) { + jQuery(window).unbind("error", this._fnWindowErrorHandler); + delete this._fnWindowErrorHandler; + } + if (this._fnWindowBeforeUnloadHandler) { + jQuery(window).unbind("beforeunload", this._fnWindowBeforeUnloadHandler); + delete this._fnWindowBeforeUnloadHandler; + } + if (this._fnWindowUnloadHandler) { + jQuery(window).unbind("unload", this._fnWindowUnloadHandler); + delete this._fnWindowUnloadHandler; + } + + // destroy event bus + if (this._oEventBus) { + this._oEventBus.destroy(); + delete this._oEventBus; + } + + // destroy the object + ManagedObject.prototype.destroy.apply(this, arguments); + + //unregister for messging + sap.ui.getCore().getMessageManager().unregisterObject(this); + + // unregister the component instance + this.getMetadata().onExitComponent(); + + }; + + + /** + * Returns user specific data object + * + * @return {object} componentData + * @public + * @since 1.15.0 + */ + Component.prototype.getComponentData = function() { + return this.oComponentData; + }; + + + /** + * Returns the event bus of this component. + * @return {sap.ui.core.EventBus} the event bus + * @since 1.20.0 + * @public + */ + Component.prototype.getEventBus = function() { + if (!this._oEventBus) { + jQuery.sap.require("sap.ui.core.EventBus"); + this._oEventBus = new sap.ui.core.EventBus(); + } + return this._oEventBus; + }; + + /** + * Initializes the component models and services. + * + * @private + */ + Component.prototype.initComponentModels = function(mModels, mServices) { + + var oMetadata = this.getMetadata(); + + // currently the automatic creation of the models is not activated + // for the metadata version 2 - here the implementation needs to be + // adopted to take the model configuration out of the models section + // of sap.ui5 and the datasources mapping from sap.app + if (oMetadata.getMetadataVersion() === 2) { + jQuery.sap.log.debug("Skipping component model creation for manifest.json models."); + return; + } + + // get the application configuration + var oModelsConfig = mModels || oMetadata.getModels(), + oServicesConfig = mServices || oMetadata.getServices(); + + // iterate over the model configurations and create and register the + // models base on the configuration if available + if (oModelsConfig) { + + // create and start the mock server + var fnCreateMockServer = function(sName, sUri, sMetadataUrl, sMockdataBaseUrl) { + + // kill the existing mock server + if (this._mMockServers[sName]) { + this._mMockServers[sName].stop(); + } + + // start the mock server + jQuery.sap.require("sap.ui.core.util.MockServer"); + this._mMockServers[sName] = new sap.ui.core.util.MockServer({ + rootUri: sUri + }); + + this._mMockServers[sName].simulate(sMetadataUrl, sMockdataBaseUrl); + this._mMockServers[sName].start(); + + }; + + // helper to create a model depending on the type + // TODO: models could have generic instantiation to pass the JSON object + // of the configuration directly instead of individual handling + var fnCreateModel = function(sName, oConfig) { + + // extract uri and type + var sUri = oConfig.uri, sType = oConfig.type; + + // require the model and instantiate it + jQuery.sap.require(sType); + var oClass = jQuery.sap.getObject(sType); + jQuery.sap.assert(oClass !== undefined, "The specified model type \"" + sType + "\" could not be found!"); + + // create the model and apply the configuration + var oModel; + if (sType === "sap.ui.model.resource.ResourceModel") { + oModel = new oClass({bundleUrl: sUri}); + } else if (sType === "sap.ui.model.odata.ODataModel" || sType === "sap.ui.model.odata.v2.ODataModel") { + // check for a mock server configuration and start the mock server + if (oConfig.mockserver) { + fnCreateMockServer.call(this, sName, sUri, oConfig.mockserver.model, oConfig.mockserver.data); + } + // create the model + oModel = new oClass(sUri, oConfig.settings); + } else if (sType === "sap.ui.model.json.JSONModel" || sType === "sap.ui.model.xml.XMLModel") { + oModel = new oClass(); + if (sUri) { + oModel.loadData(sUri); + } + } /* else { + TODO: what about custom models / analog to ODataModel & setting? + } */ + + // check the model to be an instance of sap.ui.model.Model + jQuery.sap.assert(oModel instanceof sap.ui.model.Model, "The specified model type \"" + sType + "\" must be an instance of sap.ui.model.Model!"); + return oModel; + + }; + + // create the models + var that = this; + jQuery.each(oModelsConfig, function(sKey, oModelConfig) { + + // if the model refer to a service configuration we use the service configuration + var sService = oModelConfig.service, + oModel; + if (sService) { + var oServiceConfig = oServicesConfig[sService]; + jQuery.sap.assert(oServiceConfig, "The service configuration for service \"" + sService + "\" is not available!"); + oModel = fnCreateModel.call(that, sKey, oServiceConfig); + } else if (oModelConfig.type) { + oModel = fnCreateModel.call(that, sKey, oModelConfig); + } + + // we apply the model to the root component if created + if (oModel) { + that.setModel(oModel, sKey || undefined); + } + + }); + + } + + }; + + + /** + * Initializes the Component instance after creation. + * + * Applications must not call this hook method directly, it is called by the + * framework while the constructor of an Component is executed. + * + * Subclasses of Component should override this hook to implement any necessary + * initialization. + * + * @function + * @name sap.ui.core.Component.prototype.init + * @protected + */ + //sap.ui.core.Component.prototype.init = function() {}; + + /** + * Cleans up the component instance before destruction. + * + * Applications must not call this hook method directly, it is called by the + * framework when the element is {@link #destroy destroyed}. + * + * Subclasses of Component should override this hook to implement any necessary + * cleanup. + * + * @function + * @name sap.ui.core.Component.prototype.exit + * @protected + */ + //sap.ui.core.Component.prototype.exit = function() {}; + + + /** + * The window before unload hook. Override this method in your Component class + * implementation, to handle cleanup before the real unload or to prompt a question + * to the user, if the component should be exited. + * + * @return {string} return a string if a prompt should be displayed to the user + * confirming closing the component (e.g. when the component is not yet saved). + * @public + * @since 1.15.1 + * @name sap.ui.core.Component.prototype.onWindowBeforeUnload + * @function + */ + //onWindowBeforeUnload : function() {}, + + + /** + * The window unload hook. Override this method in your Component class + * implementation, to handle cleanup of the component once the window + * will be unloaded (e.g. closed). + * + * @public + * @since 1.15.1 + * @name sap.ui.core.Component.prototype.onWindowUnload + * @function + */ + //onWindowUnload : function() {}, + + + /** + * The window error hook. Override this method in your Component class implementation + * to listen to unhandled errors. + * + * @param {string} sMessage The error message. + * @param {string} sFile The file where the error occurred + * @param {number} iLine The line number of the error + * @public + * @since 1.15.1 + * @name sap.ui.core.Component.prototype.onError + * @function + */ + //onWindowError : null, // function(sMessage, sFile, iLine) - function not added directly as it might result in bad stack traces in older browsers + + + /** + * The hook which gets called when the static configuration of the component + * has been changed by some configuration extension. + * + * @param {string} sConfigKey The error message. + * @public + * @since 1.15.1 + * @name sap.ui.core.Component.prototype.onConfigChange + * @function + */ + //onConfigChange : null, // function(sConfigKey) + + + /** + * Creates a new instance of a Component or returns the instance + * of an existing Component. + * + * If you want to lookup all an existing Component you can call + * this function with a component Id as parameter: + *

     
    +	 *   var oComponent = sap.ui.component(sComponentId);
    +	 * 
    + * + * To create a new instance of a component you pass a component configuration + * object into this function: + *
    +	 *   var oComponent = sap.ui.component({
    +	 *     name: "my.Component",
    +	 *     url: "my/component/location",
    +	 *     id: "myCompId1"
    +	 *   });
    +	 * 
    + * + * @param {string|object} vConfig the id of an existing Component or the configuration object to create the Component + * @param {string} vConfig.name the name of the Component to load + * @param {string} [vConfig.url] an alternate location from where to load the Component + * @param {object} [vConfig.componentData] initial data of the Component (@see sap.ui.core.Component#getComponentData) + * @param {string} [vConfig.id] the sId of the new Component + * @param {object} [vConfig.settings] the mSettings of the new Component + * @param {boolean} [vConfig.async=false] whether the component creation should be done asynchronously (experimental setting) + * @param {object} [vConfig.asyncHints] hints for the asynchronous loading (experimental setting) + * @param {string[]} [vConfig.asyncHints.libs] libraries that should be (pre-)loaded before the component (experimental setting) + * @param {string[]} [vConfig.asyncHints.components] components that should be (pre-)loaded before the component (experimental setting) + * @return {sap.ui.core.Component|Promise} the Component instance or a Promise in case of asynchronous loading + * + * @public + * @static + * @since 1.15.0 + * @experimental Since 1.27.0. Support for asynchronous loading and the corresponding hints is still experimental + * and might be modified or removed completely again. It must not be used in productive code, except in code + * delivered by the UI5 teams. The synchronous usage of the API is not experimental and can be used without + * restrictions. + */ + sap.ui.component = function(vConfig) { + + // a parameter must be given! + if (!vConfig) { + throw new Error("sap.ui.component cannot be called without parameter!"); + } + + // when only a string is given then this function behaves like a + // getter and returns an existing component instance + if (typeof vConfig === 'string') { + + // lookup and return the component + return sap.ui.getCore().getComponent(vConfig); + + } + + function createInstance(oClass) { + + // retrieve the required properties + var sName = vConfig.name, + sId = vConfig.id, + oComponentData = vConfig.componentData, + sController = sName + '.Component', + mSettings = vConfig.settings; + + // create an instance + var oInstance = new oClass(jQuery.extend({}, mSettings, { + id: sId, + componentData: oComponentData + })); + jQuery.sap.assert(oInstance instanceof Component, "The specified component \"" + sController + "\" must be an instance of sap.ui.core.Component!"); + jQuery.sap.log.info("Component instance Id = " + oInstance.getId()); + + /*register for messging: register if either handleValidation is set in metadata or if not set in metadata and + * set on instance + */ + var bHandleValidation = oInstance.getMetadata().handleValidation() !== undefined || vConfig.handleValidation; + if (bHandleValidation) { + //calc handleValidation for registration + if (oInstance.getMetadata().handleValidation() !== undefined) { + bHandleValidation = oInstance.getMetadata().handleValidation(); + } else { + bHandleValidation = vConfig.handleValidation; + } + sap.ui.getCore().getMessageManager().registerObject(oInstance, bHandleValidation); + } + + return oInstance; + } + + // load the component class + var vClassOrPromise = sap.ui.component.load(vConfig, true); + if ( vConfig.async ) { + // async: instantiate component after Promise has been fulfilled with component constructor + return vClassOrPromise.then(createInstance); + } else { + // sync: constructor has been returned, instantiate component immediately + return createInstance(vClassOrPromise); + } + }; + + /** + * Load a component without instantiating it. + * + * Provides experimental support for loading components asynchronously by setting + * oConfig.async to true. In that case, the method returns a Javascript 6 + * Promise that will be fulfilled with the component class after loading. + * + * Using async = true doesn't necessarily mean that no more synchronous loading + * occurs. Both the framework as well as component implementations might still execute + * synchronous requests. The contract for async = true just allows to use + * async calls. + * + * When asynchronous loading is used, additional hints can be provided : + *
      + *
    • oConfig.asyncHints.components : string[]a list of components needed by the current component and its subcomponents + * The framework will try to preload these components (their Component-preload.js) asynchronously, errors will be ignored. + * Please note that the framework has no knowledge about whether a component provides a preload file or whether it is bundled + * in some library preload. If components are listed in the hints section, they will be preloaded.
    • + *
    • oConfig.asyncHints.libs : string[]libraries needed by the component and its subcomponents. + * The framework will asynchronously load those libraries, if they're not loaded yet.
    • + *
    + * + * If components and/or libraries are listed in the hints section, all the corresponding preload files will + * be requested in parallel. The constructor class will only be required after all of them are rejected or resolved. + * + * Note: so far, only the requests for the preload files (library and/or component) are executed asynchronously. + * If a preload is deactivated by configuration (e.g. debug mode), then requests won't be asynchronous. + * + * @param {object} oConfig a configuration object describing the component to be loaded. See {@link sap.ui.component} for more Information. + * @return {function|Promise} the constructor of the component class or a Promise that will be fulfilled with the same + * + * @since 1.16.3 + * @static + * @public + * @experimental Since 1.27.0. Support for asynchronous loading and the corresponding hints is still experimental + * and might be modified or removed completely again. It must not be used in productive code, except in code + * delivered by the UI5 teams. The synchronous usage of the API is not experimental and can be used without + * restrictions. + */ + sap.ui.component.load = function(oConfig, bFailOnError) { + + var sName = oConfig.name, + sUrl = oConfig.url, + bComponentPreload = /^(sync|async)$/.test(sap.ui.getCore().getConfiguration().getComponentPreload()); + + // check for an existing name + if (!sName) { + throw new Error("The name of the component is undefined."); + } + + // check the type of the name + jQuery.sap.assert(typeof sName === 'string', "sName must be a string"); + + // if a URL is given we register this URL for the name of the component: + // the name is the package in which the component is located (dot separated) + if (sUrl) { + jQuery.sap.registerModulePath(sName, sUrl); + } + + function getControllerClass() { + + var sController = sName + '.Component'; + + // require the component controller + jQuery.sap.require(sController); + var oClass = jQuery.sap.getObject(sController); + + if (!oClass) { + var sMsg = "The specified component controller '" + sController + "' could not be found!"; + if (bFailOnError) { + throw new Error(sMsg); + } else { + jQuery.sap.log.warning(sMsg); + } + } + + return oClass; + } + + function preload(sComponentName, bAsync) { + + var sController = sComponentName + '.Component', + sPreloadName; + + // only load the Component-preload file if the Component module is not yet available + if ( bComponentPreload && !jQuery.sap.isDeclared(sController, /* bIncludePreloaded=*/ true) ) { + + if ( bAsync ) { + sPreloadName = jQuery.sap.getResourceName(sController, '-preload.js'); // URN + return jQuery.sap._loadJSResourceAsync(sPreloadName, true); + } + + try { + sPreloadName = sController + '-preload'; // Module name + jQuery.sap.require(sPreloadName); + } catch (e) { + jQuery.sap.log.warning("couldn't preload component from " + sPreloadName + ": " + ((e && e.message) || e)); + } + } + } + + if ( oConfig.async ) { + + // trigger loading of libraries and component preloads and collect the given promises + var hints = oConfig.asyncHints || {}, + promises = [], + collect = function(oPromise) { + if ( oPromise ) { + promises.push(oPromise); + } + }; + + // preload required libraries + if ( hints.libs ) { + collect(sap.ui.getCore().loadLibraries( hints.libs )); + } + + if ( bComponentPreload ) { + collect(preload(sName, true)); + + // if a hint about "used" components is given, preload those components + if ( hints.components ) { + jQuery.each(hints.components, function(i, sCompName) { + collect(preload(sCompName, true)); + }); + } + } + + // combine given promises + return Promise.all(promises).then(function(v) { + jQuery.sap.log.debug("Component.load: all promises fulfilled, then " + v); + return getControllerClass(); + }); + + } + + preload(sName); + return getControllerClass(); + }; + + return Component; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Component.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Component.js new file mode 100644 index 0000000..107b7be --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Component.js @@ -0,0 +1,6 @@ +/* + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/base/ManagedObject','./ComponentMetadata','./Core'],function(q,M,C,a){"use strict";var b=M.extend("sap.ui.core.Component",{constructor:function(i,s){M.apply(this,arguments);},metadata:{stereotype:"component","abstract":true,version:"0.0",includes:[],dependencies:{libs:[],components:[],ui5version:""},config:{},customizing:{},library:"sap.ui.core"}},C);b.activateCustomizing=function(c){};b.deactivateCustomizing=function(c){};b.getOwnerIdFor=function(o){var O=(o instanceof M)&&o._sOwnerId;return O||undefined;};b.getOwnerComponentFor=function(o){var O=b.getOwnerIdFor(o);return O&&sap.ui.component(O);};b.prototype.runAsOwner=function(f){var o=M._sOwnerId;try{M._sOwnerId=this.getId();return f.call();}finally{M._sOwnerId=o;}};b.prototype.getInterface=function(){return this;};b.prototype._initCompositeSupport=function(s){this._mMockServers={};this.getMetadata().onInitComponent();this.oComponentData=s&&s.componentData;this.getMetadata().init();this.initComponentModels();if(this.onWindowError){this._fnWindowErrorHandler=q.proxy(function(e){var E=e.originalEvent;this.onWindowError(E.message,E.filename,E.lineno);},this);q(window).bind("error",this._fnWindowErrorHandler);}if(this.onWindowBeforeUnload){this._fnWindowBeforeUnloadHandler=q.proxy(this.onWindowBeforeUnload,this);q(window).bind("beforeunload",this._fnWindowBeforeUnloadHandler);}if(this.onWindowUnload){this._fnWindowUnloadHandler=q.proxy(this.onWindowUnload,this);q(window).bind("unload",this._fnWindowUnloadHandler);}};b.prototype.destroy=function(){if(this._mMockServers){q.each(this._mMockServers,function(n,m){m.stop();});delete this._mMockServers;}if(this._fnWindowErrorHandler){q(window).unbind("error",this._fnWindowErrorHandler);delete this._fnWindowErrorHandler;}if(this._fnWindowBeforeUnloadHandler){q(window).unbind("beforeunload",this._fnWindowBeforeUnloadHandler);delete this._fnWindowBeforeUnloadHandler;}if(this._fnWindowUnloadHandler){q(window).unbind("unload",this._fnWindowUnloadHandler);delete this._fnWindowUnloadHandler;}if(this._oEventBus){this._oEventBus.destroy();delete this._oEventBus;}M.prototype.destroy.apply(this,arguments);sap.ui.getCore().getMessageManager().unregisterObject(this);this.getMetadata().onExitComponent();};b.prototype.getComponentData=function(){return this.oComponentData;};b.prototype.getEventBus=function(){if(!this._oEventBus){q.sap.require("sap.ui.core.EventBus");this._oEventBus=new sap.ui.core.EventBus();}return this._oEventBus;};b.prototype.initComponentModels=function(m,s){var o=this.getMetadata();if(o.getMetadataVersion()===2){q.sap.log.debug("Skipping component model creation for manifest.json models.");return;}var c=m||o.getModels(),S=s||o.getServices();if(c){var f=function(n,u,e,g){if(this._mMockServers[n]){this._mMockServers[n].stop();}q.sap.require("sap.ui.core.util.MockServer");this._mMockServers[n]=new sap.ui.core.util.MockServer({rootUri:u});this._mMockServers[n].simulate(e,g);this._mMockServers[n].start();};var d=function(n,e){var u=e.uri,T=e.type;q.sap.require(T);var g=q.sap.getObject(T);var h;if(T==="sap.ui.model.resource.ResourceModel"){h=new g({bundleUrl:u});}else if(T==="sap.ui.model.odata.ODataModel"||T==="sap.ui.model.odata.v2.ODataModel"){if(e.mockserver){f.call(this,n,u,e.mockserver.model,e.mockserver.data);}h=new g(u,e.settings);}else if(T==="sap.ui.model.json.JSONModel"||T==="sap.ui.model.xml.XMLModel"){h=new g();if(u){h.loadData(u);}}return h;};var t=this;q.each(c,function(k,e){var g=e.service,h;if(g){var i=S[g];h=d.call(t,k,i);}else if(e.type){h=d.call(t,k,e);}if(h){t.setModel(h,k||undefined);}});}};sap.ui.component=function(c){if(!c){throw new Error("sap.ui.component cannot be called without parameter!");}if(typeof c==='string'){return sap.ui.getCore().getComponent(c);}function d(o){var n=c.name,i=c.id,e=c.componentData,s=n+'.Component',S=c.settings;var I=new o(q.extend({},S,{id:i,componentData:e}));q.sap.log.info("Component instance Id = "+I.getId());var h=I.getMetadata().handleValidation()!==undefined||c.handleValidation;if(h){if(I.getMetadata().handleValidation()!==undefined){h=I.getMetadata().handleValidation();}else{h=c.handleValidation;}sap.ui.getCore().getMessageManager().registerObject(I,h);}return I;}var v=sap.ui.component.load(c,true);if(c.async){return v.then(d);}else{return d(v);}};sap.ui.component.load=function(c,f){var n=c.name,u=c.url,d=/^(sync|async)$/.test(sap.ui.getCore().getConfiguration().getComponentPreload());if(!n){throw new Error("The name of the component is undefined.");}if(u){q.sap.registerModulePath(n,u);}function g(){var s=n+'.Component';q.sap.require(s);var o=q.sap.getObject(s);if(!o){var m="The specified component controller '"+s+"' could not be found!";if(f){throw new Error(m);}else{q.sap.log.warning(m);}}return o;}function p(s,A){var i=s+'.Component',P;if(d&&!q.sap.isDeclared(i,true)){if(A){P=q.sap.getResourceName(i,'-preload.js');return q.sap._loadJSResourceAsync(P,true);}try{P=i+'-preload';q.sap.require(P);}catch(e){q.sap.log.warning("couldn't preload component from "+P+": "+((e&&e.message)||e));}}}if(c.async){var h=c.asyncHints||{},j=[],k=function(P){if(P){j.push(P);}};if(h.libs){k(sap.ui.getCore().loadLibraries(h.libs));}if(d){k(p(n,true));if(h.components){q.each(h.components,function(i,s){k(p(s,true));});}}return Promise.all(j).then(function(v){q.sap.log.debug("Component.load: all promises fulfilled, then "+v);return g();});}p(n);return g();};return b;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentContainer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentContainer-dbg.js new file mode 100644 index 0000000..4bf853b --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentContainer-dbg.js @@ -0,0 +1,184 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.core.ComponentContainer. +sap.ui.define(['jquery.sap.global', './Control', './library'], + function(jQuery, Control, library) { + "use strict"; + + + + /** + * Constructor for a new ComponentContainer. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * Component Container + * @extends sap.ui.core.Control + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.ui.core.ComponentContainer + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var ComponentContainer = Control.extend("sap.ui.core.ComponentContainer", /** @lends sap.ui.core.ComponentContainer.prototype */ { metadata : { + + library : "sap.ui.core", + properties : { + + /** + * Component name, the package where the component is contained. The property can only be applied initially. + */ + name : {type : "string", defaultValue : null}, + + /** + * The URL of the component. The property can only be applied initially. + */ + url : {type : "sap.ui.core.URI", defaultValue : null}, + + /** + * Enable/disable validation handling by MessageManager for this component. + * The resulting Messages will be propagated to the controls. + */ + handleValidation : {type : "boolean", defaultValue : false}, + + /** + * The settings object passed to the component when created. The property can only be applied initially. + */ + settings : {type : "object", defaultValue : null}, + + /** + * Defines whether binding information is propagated to the component. + */ + propagateModel : {type : "boolean", defaultValue : false}, + + /** + * Container width in CSS size + */ + width : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : null}, + + /** + * Container height in CSS size + */ + height : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : null} + }, + associations : { + + /** + * The component displayed in this ComponentContainer. + */ + component : {type : "sap.ui.core.UIComponent", multiple : false} + } + }}); + + /** + * Returns the real component instance which is associated with the container. + * @return {sap.ui.core.UIComponent} the component instance + */ + ComponentContainer.prototype.getComponentInstance = function () { + var sComponentId = this.getComponent(); + return sap.ui.getCore().getComponent(sComponentId); + }; + + + /* + * TODO: make sure once a component is assigned to the container it cannot be + * exchanged later when the container is rendered. + * + * Exchanging the component via setComponent is still required - see existing + * examples in sap/ui/core/ComponentShell.html - but this opens up another + * question which was not answered before - what to do here when exchanging + * the component - destroy or not? Right now we at least unlink the container. + */ + ComponentContainer.prototype.setComponent = function(oComponent, bSupressInvalidate) { + // unlink the old component from the container + var oOldComponent = this.getComponentInstance(); + if (oOldComponent) { + // TODO: destroy or not destroy + oOldComponent.setContainer(undefined); + } + // set the new component + this.setAssociation("component", oComponent, bSupressInvalidate); + // cross link the new component and propagate the properties (models) + oComponent = this.getComponentInstance(); + if (oComponent) { + oComponent.setContainer(this); + this.propagateProperties(); + } + }; + + + /* + * delegate the onBeforeRendering to the component instance + */ + ComponentContainer.prototype.onBeforeRendering = function(){ + + // check if we have already a valid component instance + // in this case we skip the component creation via props + // ==> not in applySettings to make sure that components are lazy instantiated, + // e.g. in case of invisible containers the component will not be created + // immediately in the constructor. + var oComponent = this.getComponentInstance(); + if (!oComponent) { + // create the component / link to the container (if a name is given) + var sName = this.getName(); + if (sName) { + oComponent = sap.ui.component({ + name: sName, + url: this.getUrl(), + handleValidation: this.getHandleValidation(), + settings: this.getSettings() + }); + this.setComponent(oComponent, true); + } + } + + // delegate the onBeforeRendering to the component instance + if (oComponent && oComponent.onBeforeRendering) { + oComponent.onBeforeRendering(); + } + + }; + + /* + * delegate the onAfterRendering to the component instance + */ + ComponentContainer.prototype.onAfterRendering = function(){ + var oComponent = this.getComponentInstance(); + if (oComponent && oComponent.onAfterRendering) { + oComponent.onAfterRendering(); + } + }; + + + /* + * once the container is destroyed we also destroy the component + */ + ComponentContainer.prototype.exit = function(){ + var oComponent = this.getComponentInstance(); + if (oComponent) { + oComponent.destroy(); + } + }; + + + /* + * overridden to support property propagation to the associated component + */ + ComponentContainer.prototype.propagateProperties = function (vName) { + var oComponent = this.getComponentInstance(); + if (oComponent && this.getPropagateModel()) { + this._propagateProperties(vName, oComponent); + Control.prototype.propagateProperties.apply(this, arguments); + } + }; + + return ComponentContainer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentContainer.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentContainer.js new file mode 100644 index 0000000..a5a9c23 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentContainer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Control','./library'],function(q,C,l){"use strict";var a=C.extend("sap.ui.core.ComponentContainer",{metadata:{library:"sap.ui.core",properties:{name:{type:"string",defaultValue:null},url:{type:"sap.ui.core.URI",defaultValue:null},handleValidation:{type:"boolean",defaultValue:false},settings:{type:"object",defaultValue:null},propagateModel:{type:"boolean",defaultValue:false},width:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:null},height:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:null}},associations:{component:{type:"sap.ui.core.UIComponent",multiple:false}}}});a.prototype.getComponentInstance=function(){var c=this.getComponent();return sap.ui.getCore().getComponent(c);};a.prototype.setComponent=function(c,s){var o=this.getComponentInstance();if(o){o.setContainer(undefined);}this.setAssociation("component",c,s);c=this.getComponentInstance();if(c){c.setContainer(this);this.propagateProperties();}};a.prototype.onBeforeRendering=function(){var c=this.getComponentInstance();if(!c){var n=this.getName();if(n){c=sap.ui.component({name:n,url:this.getUrl(),handleValidation:this.getHandleValidation(),settings:this.getSettings()});this.setComponent(c,true);}}if(c&&c.onBeforeRendering){c.onBeforeRendering();}};a.prototype.onAfterRendering=function(){var c=this.getComponentInstance();if(c&&c.onAfterRendering){c.onAfterRendering();}};a.prototype.exit=function(){var c=this.getComponentInstance();if(c){c.destroy();}};a.prototype.propagateProperties=function(n){var c=this.getComponentInstance();if(c&&this.getPropagateModel()){this._propagateProperties(n,c);C.prototype.propagateProperties.apply(this,arguments);}};return a;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentContainerRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentContainerRenderer-dbg.js new file mode 100644 index 0000000..b1dab13 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentContainerRenderer-dbg.js @@ -0,0 +1,67 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// A renderer for the ComponentContainer control +sap.ui.define(['jquery.sap.global'], + function(jQuery) { + "use strict"; + + + /** + * ComponentContainer renderer. + * @namespace + * @alias sap.ui.core.ComponentContainerRenderer + */ + var ComponentContainerRenderer = { + }; + + + /** + * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}. + * + * @param {sap.ui.core.RenderManager} oRenderManager RenderManager that can be used for writing to the Render-Output-Buffer + * @param {sap.ui.core.Control} oControl Object representation of the control that should be rendered + */ + ComponentContainerRenderer.render = function(oRenderManager, oComponentContainer){ + + // convenience variable + var oRM = oRenderManager; + var oComponent = oComponentContainer.getComponentInstance(); + var sWidth = oComponentContainer.getWidth(); + var sHeight = oComponentContainer.getHeight(); + + oRM.write(""); + oRM.write("
    "); + if (oComponent) { + oComponent.render(oRM); + } + oRM.write("
    "); + }; + + + + return ComponentContainerRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentContainerRenderer.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentContainerRenderer.js new file mode 100644 index 0000000..d48da6c --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentContainerRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var C={};C.render=function(r,c){var R=r;var o=c.getComponentInstance();var w=c.getWidth();var h=c.getHeight();R.write("");R.write("
    ");if(o){o.render(R);}R.write("
    ");};return C;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentMetadata-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentMetadata-dbg.js new file mode 100644 index 0000000..35573cc --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentMetadata-dbg.js @@ -0,0 +1,776 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.core.ComponentMetadata +sap.ui.define(['jquery.sap.global', 'sap/ui/base/ManagedObjectMetadata'], + function(jQuery, ManagedObjectMetadata) { + "use strict"; + + + /** + * Creates a new metadata object for a Component subclass. + * + * @param {string} sClassName fully qualified name of the class that is described by this metadata object + * @param {object} oStaticInfo static info to construct the metadata from + * + * @experimental Since 1.9.2. The Component concept is still under construction, so some implementation details can be changed in future. + * @class + * @author SAP SE + * @version 1.28.5 + * @since 1.9.2 + * @alias sap.ui.core.ComponentMetadata + */ + var ComponentMetadata = function(sClassName, oClassInfo) { + + // call super constructor + ManagedObjectMetadata.apply(this, arguments); + + }; + + //chain the prototypes + ComponentMetadata.prototype = jQuery.sap.newObject(ManagedObjectMetadata.prototype); + + ComponentMetadata.preprocessClassInfo = function(oClassInfo) { + // if the component is a string we convert this into a "_src" metadata entry + // the specific metadata object can decide to support this or gracefully ignore it + // basically the ComponentMetadata makes use of this feature + if (oClassInfo && typeof oClassInfo.metadata === "string") { + oClassInfo.metadata = { + _src: oClassInfo.metadata + }; + } + return oClassInfo; + }; + + ComponentMetadata.prototype.applySettings = function(oClassInfo) { + + var oStaticInfo = oClassInfo.metadata; + + // if the component metadata loadFromFile feature is active then + // the component metadata will be loaded from the specified file + // which needs to be located next to the Component.js file. + var sName = this.getName(), + sPackage = sName.replace(/\.\w+?$/, ""); + if (oStaticInfo._src) { + if (oStaticInfo._src == "component.json") { + jQuery.sap.log.warning("Usage of declaration \"metadata: 'component.json'\" is deprecated (component " + sName + "). Use \"metadata: 'json'\" instead."); + } else if (oStaticInfo._src != "json") { + throw new Error("Invalid metadata declaration for component " + sName + ": \"" + oStaticInfo._src + "\"! Use \"metadata: 'json'\" to load metadata from component.json."); + } + + var sResource = sPackage.replace(/\./g, "/") + "/component.json"; + jQuery.sap.log.info("The metadata of the component " + sName + " is loaded from file " + sResource + "."); + try { + var oResponse = jQuery.sap.loadResource(sResource, { + dataType: "json" + }); + jQuery.extend(oStaticInfo, oResponse); + } catch (err) { + jQuery.sap.log.error("Failed to load component metadata from \"" + sResource + "\" (component " + sName + ")! Reason: " + err); + } + } + + ManagedObjectMetadata.prototype.applySettings.call(this, oClassInfo); + + // keep the information about the component name (for customizing) + this._sComponentName = sPackage; + + // static initialization flag & instance count + this._bInitialized = false; + this._iInstanceCount = 0; + + // get the parent component + var oParent = this.getParent(), + bIsComponentBaseClass = /^sap\.ui\.core\.(UI)?Component$/.test(sName), + sParentName = bIsComponentBaseClass && oParent && oParent._sComponentName; + + // extract the manifest + var oManifest = oStaticInfo["manifest"]; + + // if a manifest is available we switch to load the manifest for the + // metadata instead of using the component metadata section + if (oManifest) { + + // set the version of the metadata + oStaticInfo.__metadataVersion = 2; + + // load the manifest if defined as string + if (typeof oManifest === "string" && oManifest === "json") { + + var sResource = sPackage.replace(/\./g, "/") + "/manifest.json"; + jQuery.sap.log.info("The manifest of the component " + sName + " is loaded from file " + sResource + "."); + try { + // the synchronous loading would be only relevant during the + // development time - for productive usage the Component should + // provide a preload packaging which includes the manifest + // next to the Component code - so the sync request penalty + // should be ignorable for now (async implementation will + // change the complete behavior of the constructor function) + var oResponse = jQuery.sap.loadResource(sResource, { + dataType: "json" + }); + oManifest = oResponse; + } catch (err) { + jQuery.sap.log.error("Failed to load component manifest from \"" + sResource + "\" (component " + sName + ")! Reason: " + err); + // in case of error the manifest is an empty object + // to behave similar like for missing component.json + oManifest = {}; + } + + } + + } else { + + // set the version of the metadata + // no manifest => metadata version 1 + oStaticInfo.__metadataVersion = 1; + oManifest = {}; + + } + + // ensure the general property name, the namespace sap.app with the id, + // the namespace sap.ui5 and eventually the extends property + oManifest["name"] = oManifest["name"] || sName; + oManifest["sap.app"] = oManifest["sap.app"] || { + "id": sPackage // use the "package" namespace instead of the classname (without ".Component") + }; + oManifest["sap.ui5"] = oManifest["sap.ui5"] || {}; + if (sParentName) { + oManifest["sap.ui5"]["extends"] = oManifest["sap.ui5"]["extends"] || {}; + oManifest["sap.ui5"]["extends"].component = oManifest["sap.ui5"]["extends"].component || sParentName; + } + + // convert the old legacy metadata and merge with the new manifest + this._convertLegacyMetadata(oStaticInfo, oManifest); + + // apply the manifest to the static info and store the static info for + // later access to specific custom entries of the manifest itself + oStaticInfo["manifest"] = oManifest; + this._oStaticInfo = oStaticInfo; + + }; + + /** + * Static initialization of components. This function will be called by the + * component and the metadata decides whether to execute the static init code + * or not. It will be called the first time a component is initialized. + * @private + */ + ComponentMetadata.prototype.init = function() { + if (!this._bInitialized) { + + // first we load the dependencies of the parent + var oParent = this.getParent(); + if (oParent instanceof ComponentMetadata) { + oParent.init(); + } + + // first the dependencies have to be loaded (other UI5 libraries) + this._loadDependencies(); + + // then load the custom scripts and CSS files + this._loadIncludes(); + + this._bInitialized = true; + + } + }; + + /** + * Static termination of components. + * + * TODO: Right now it is unclear when this function should be called. Just to + * make sure that we do not forget this in future. + * + * @private + */ + ComponentMetadata.prototype.exit = function() { + if (this._bInitialized) { + var oParent = this.getParent(); + if (oParent instanceof ComponentMetadata) { + oParent.exit(); + } + // TODO: implement unload of CSS, ... + this._bInitialized = false; + } + }; + + /** + * Component instances need to register themselves in this method to enable + * the customizing for this component. This will only be done for the first + * instance and only if a customizing configuration is available. + * @private + */ + ComponentMetadata.prototype.onInitComponent = function() { + var oUI5Manifest = this.getManifestEntry("sap.ui5", true), + mExtensions = oUI5Manifest && oUI5Manifest["extends"] && oUI5Manifest["extends"].extensions; + if (this._iInstanceCount === 0 && !jQuery.isEmptyObject(mExtensions)) { + jQuery.sap.require("sap.ui.core.CustomizingConfiguration"); + sap.ui.core.CustomizingConfiguration.activateForComponent(this._sComponentName); + } + this._iInstanceCount++; + }; + + /** + * Component instances need to unregister themselves in this method to disable + * the customizing for this component. This will only be done for the last + * instance and only if a customizing configuration is available. + * @private + */ + ComponentMetadata.prototype.onExitComponent = function() { + this._iInstanceCount--; + var oUI5Manifest = this.getManifestEntry("sap.ui5", true), + mExtensions = oUI5Manifest && oUI5Manifest["extends"] && oUI5Manifest["extends"].extensions; + if (this._iInstanceCount === 0 && !jQuery.isEmptyObject(mExtensions)) { + if (sap.ui.core.CustomizingConfiguration) { + sap.ui.core.CustomizingConfiguration.deactivateForComponent(this._sComponentName); + } + } + }; + + /** + * Returns the version of the metadata which could be 1 or 2. 1 is for legacy + * metadata whereas 2 is for the manifest. + * @return {int} metadata version (1: legacy metadata, 2: manifest) + * @protected + * @since 1.27.1 + */ + ComponentMetadata.prototype.getMetadataVersion = function() { + return this._oStaticInfo.__metadataVersion; + }; + + /** + * Returns the manifest defined in the metadata of the component. + * If not specified, the return value is null. + * @return {Object} manifest. + * @public + * @since 1.27.1 + */ + ComponentMetadata.prototype.getManifest = function() { + // only a copy of the manifest will be returned to make sure that it + // cannot be modified - TODO: think about Object.freeze() instead + return jQuery.extend(true, {}, this._oStaticInfo.manifest); + }; + + /** + * Returns the manifest configuration entry with the specified key (Must be a JSON object). + * If no key is specified, the return value is null. + * + * Example: + * + * sap.ui.core.Component.extend("sample.Component", { + * metadata: { + * manifest: { + * "my.custom.config" : { + * "property1" : true, + * "property2" : "Something else" + * } + * } + * } + * }); + * + * + * The configuration above can be accessed via sample.Component.getMetadata().getManifestEntry("my.custom.config"). + * + * @param {string} sKey key of the custom configuration (must be prefixed with a namespace / separated with dots) + * @param {boolean} [bMerged] whether the custom configuration should be merged with components parent custom configuration. + * @return {Object} custom Component configuration with the specified key. + * @public + * @since 1.27.1 + */ + ComponentMetadata.prototype.getManifestEntry = function(sKey, bMerged) { + if (!sKey || sKey.indexOf(".") <= 0) { + jQuery.sap.log.warning("Manifest entries with keys without namespace prefix can not be read via getManifestEntry. Key: " + sKey + ", Component: " + this.getName()); + return null; + } + + var oParent, + oManifest = this.getManifest(), + oData = oManifest && oManifest[sKey] || {}; + + if (!jQuery.isPlainObject(oData)) { + jQuery.sap.log.warning("Custom Manifest entry with key '" + sKey + "' must be an object. Component: " + this.getName()); + return null; + } + + if (bMerged && (oParent = this.getParent()) instanceof ComponentMetadata) { + return jQuery.extend(true, {}, oParent.getManifestEntry(sKey, bMerged), oData); + } + return jQuery.extend(true, {}, oData); + }; + + /** + * Returns the custom Component configuration entry with the specified key (Must be a JSON object). + * If no key is specified, the return value is null. + * + * Example: + * + * sap.ui.core.Component.extend("sample.Component", { + * metadata: { + * "my.custom.config" : { + * "property1" : true, + * "property2" : "Something else" + * } + * } + * }); + * + * + * The configuration above can be accessed via sample.Component.getMetadata().getCustomEntry("my.custom.config"). + * + * @param {string} sKey key of the custom configuration (must be prefixed with a namespace) + * @param {boolean} bMerged whether the custom configuration should be merged with components parent custom configuration. + * @return {Object} custom Component configuration with the specified key. + * @public + * @deprecated Since 1.27.1. Please use the sap.ui.core.ComponentMetadata#getManifestEntry + */ + ComponentMetadata.prototype.getCustomEntry = function(sKey, bMerged) { + if (!sKey || sKey.indexOf(".") <= 0) { + jQuery.sap.log.warning("Component Metadata entries with keys without namespace prefix can not be read via getCustomEntry. Key: " + sKey + ", Component: " + this.getName()); + return null; + } + + var oParent, + oData = this._oStaticInfo[sKey] || {}; + + if (!jQuery.isPlainObject(oData)) { + jQuery.sap.log.warning("Custom Component Metadata entry with key '" + sKey + "' must be an object. Component: " + this.getName()); + return null; + } + + if (bMerged && (oParent = this.getParent()) instanceof ComponentMetadata) { + return jQuery.extend(true, {}, oParent.getCustomEntry(sKey, bMerged), oData); + } + return jQuery.extend(true, {}, oData); + }; + + + /** + * Returns the name of the Component (which is the namespace only with the module name) + * @return {string} Component name + * @public + */ + ComponentMetadata.prototype.getComponentName = function() { + return this._sComponentName; + }; + + /** + * Returns the dependencies defined in the metadata of the component. If not specified, the return value is null. + * @return {Object} Component dependencies. + * @public + * @deprecated Since 1.27.1. Please use the sap.ui.core.ComponentMetadata#getManifest + */ + ComponentMetadata.prototype.getDependencies = function() { + //jQuery.sap.log.warning("Usage of sap.ui.core.ComponentMetadata.protoype.getDependencies is deprecated!"); + if (!this._oLegacyDependencies) { + var oUI5Manifest = this.getManifestEntry("sap.ui5"), + mDependencies = oUI5Manifest && oUI5Manifest.dependencies, + sUI5Version = mDependencies && mDependencies.minUI5Version || null, + mLibs = mDependencies && mDependencies.libs || {}, + mComponents = mDependencies && mDependencies.components || {}; + var mLegacyDependencies = { + ui5version: sUI5Version, + libs: [], + components: [] + }; + for (var sLib in mLibs) { + mLegacyDependencies.libs.push(sLib); + } + for (var sComponent in mComponents) { + mLegacyDependencies.components.push(sComponent); + } + this._oLegacyDependencies = mLegacyDependencies; + } + return this._oLegacyDependencies; + }; + + /** + * Returns the array of the included files that the Component requires such as css and js. If not specified or the array is empty, the return value is null. + * @return {string[]} Included files. + * @public + * @deprecated Since 1.27.1. Please use the sap.ui.core.ComponentMetadata#getManifest + */ + ComponentMetadata.prototype.getIncludes = function() { + //jQuery.sap.log.warning("Usage of sap.ui.core.ComponentMetadata.protoype.getIncludes is deprecated!"); + if (!this._aLegacyIncludes) { + var aIncludes = [], + oUI5Manifest = this.getManifestEntry("sap.ui5"), + mResources = oUI5Manifest && oUI5Manifest.resources || {}, + aCSSResources = mResources && mResources.css || [], + aJSResources = mResources && mResources.js || []; + for (var i = 0, l = aCSSResources.length; i < l; i++) { + if (aCSSResources[i] && aCSSResources[i].uri) { + aIncludes.push(aCSSResources[i].uri); + } + } + for (var i = 0, l = aJSResources.length; i < l; i++) { + if (aJSResources[i] && aJSResources[i].uri) { + aIncludes.push(aJSResources[i].uri); + } + } + this._aLegacyIncludes = (aIncludes.length > 0) ? aIncludes : null; + } + return this._aLegacyIncludes; + }; + + /** + * Returns the required version of SAP UI5 defined in the metadata of the Component. If returned value is null, then no special UI5 version is required. + * @return {string} Required version of UI5 or if not specified then null. + * @public + * @deprecated Since 1.27.1. Please use the sap.ui.core.ComponentMetadata#getManifest + */ + ComponentMetadata.prototype.getUI5Version = function() { + //jQuery.sap.log.warning("Usage of sap.ui.core.ComponentMetadata.protoype.getUI5Version is deprecated!"); + var oUI5Manifest = this.getManifestEntry("sap.ui5"); + return oUI5Manifest && oUI5Manifest.dependencies && oUI5Manifest.dependencies.minUI5Version; + }; + + /** + * Returns array of components specified in the metadata of the Component. If not specified or the array is empty, the return value is null. + * @return {string[]} Required Components. + * @public + * @deprecated Since 1.27.1. Please use the sap.ui.core.ComponentMetadata#getManifest + */ + ComponentMetadata.prototype.getComponents = function() { + //jQuery.sap.log.warning("Usage of sap.ui.core.ComponentMetadata.protoype.getComponents is deprecated!"); + return this.getDependencies().components; + }; + + /** + * Returns array of libraries specified in metadata of the Component, that are automatically loaded when an instance of the component is created. + * If not specified or the array is empty, the return value is null. + * @return {string[]} Required libraries. + * @public + * @deprecated Since 1.27.1. Please use the sap.ui.core.ComponentMetadata#getManifest + */ + ComponentMetadata.prototype.getLibs = function() { + //jQuery.sap.log.warning("Usage of sap.ui.core.ComponentMetadata.protoype.getLibs is deprecated!"); + return this.getDependencies().libs; + }; + + /** + * Returns the version of the component. If not specified, the return value is null. + * @return {string} The version of the component. + * @public + */ + ComponentMetadata.prototype.getVersion = function() { + var oAppManifest = this.getManifestEntry("sap.app"); + return oAppManifest && oAppManifest.applicationVersion && oAppManifest.applicationVersion.version; + }; + + /** + * Returns a copy of the configuration property to disallow modifications. If no + * key is specified it returns the complete configuration property. + * @param {string} [sKey] the key of the configuration property + * @param {boolean} [bDoNotMerge] true, to return only the local configuration + * @return {object} the value of the configuration property + * @public + * @since 1.15.1 + * @deprecated Since 1.27.1. Please use the sap.ui.core.ComponentMetadata#getManifest + */ + ComponentMetadata.prototype.getConfig = function(sKey, bDoNotMerge) { + //jQuery.sap.log.warning("Usage of sap.ui.core.ComponentMetadata.protoype.getConfig is deprecated!"); + var oUI5Manifest = this.getManifestEntry("sap.ui5", !bDoNotMerge), + mConfig = oUI5Manifest && oUI5Manifest.config; + + // return the configuration + return jQuery.extend(true, {}, mConfig && sKey ? mConfig[sKey] : mConfig); + }; + + + /** + * Returns a copy of the customizing property + * @param {boolean} [bDoNotMerge] true, to return only the local customizing config + * @return {object} the value of the customizing property + * @private + * @since 1.15.1 + * @experimental Since 1.15.1. Implementation might change. + * @deprecated Since 1.27.1. Please use the sap.ui.core.ComponentMetadata#getManifest + */ + ComponentMetadata.prototype.getCustomizing = function(bDoNotMerge) { + //jQuery.sap.log.warning("Usage of sap.ui.core.ComponentMetadata.protoype.getCustomizing is deprecated!"); + var oUI5Manifest = this.getManifestEntry("sap.ui5", !bDoNotMerge), + mExtensions = jQuery.extend(true, {}, oUI5Manifest && oUI5Manifest["extends"] && oUI5Manifest["extends"].extensions); + + // return the exensions object + return mExtensions; + }; + + + /** + * Returns the models configuration which defines the available models of the + * component. + * @param {boolean} [bDoNotMerge] true, to return only the local model config + * @return {object} models configuration + * @private + * @since 1.15.1 + * @experimental Since 1.15.1. Implementation might change. + * @deprecated Since 1.27.1. Please use the sap.ui.core.ComponentMetadata#getManifest + */ + ComponentMetadata.prototype.getModels = function(bDoNotMerge) { + //jQuery.sap.log.warning("Usage of sap.ui.core.ComponentMetadata.protoype.getModels is deprecated!"); + if (!this._oLegacyModels) { + this._oLegacyModels = {}; + var oUI5Manifest = this.getManifestEntry("sap.ui5"), + mDataSources = oUI5Manifest && oUI5Manifest.models || {}; + for (var sDataSource in mDataSources) { + var oDataSource = mDataSources[sDataSource]; + this._oLegacyModels[sDataSource] = oDataSource.settings || {}; + this._oLegacyModels[sDataSource].type = oDataSource.type; + } + } + + // deep copy of the legacy models object + var oParent, + mModels = jQuery.extend(true, {}, this._oLegacyModels); + // merge the models object if defined via parameter + if (!bDoNotMerge && (oParent = this.getParent()) instanceof ComponentMetadata) { + mModels = jQuery.extend(true, {}, oParent.getModels(), mModels); + } + + // return a clone of the models + return mModels; + }; + + /** + * Returns messaging flag + * + * @return {boolean} bMessaging Messaging enabled/disabled + * @private + * @since 1.28.0 + * @deprecated Since 1.28.1. Please use the sap.ui.core.ComponentMetadata#getManifest + */ + ComponentMetadata.prototype.handleValidation = function() { + //jQuery.sap.log.warning("Usage of sap.ui.core.ComponentMetadata.protoype.handleValidation is deprecated!"); + var oUI5Manifest = this.getManifestEntry("sap.ui5"); + return oUI5Manifest && oUI5Manifest.handleValidation; + }; + + /** + * Returns the services configuration which defines the available services of the + * component. + * @return {object} services configuration + * @private + * @since 1.15.1 + * @experimental Since 1.15.1. Implementation might change. + * @deprecated Since 1.27.1. Please use the sap.ui.core.ComponentMetadata#getManifest + */ + ComponentMetadata.prototype.getServices = function() { + jQuery.sap.log.warning("Usage of sap.ui.core.ComponentMetadata.protoype.getServices is deprecated!"); + // legacy API - for the manifest services has a different meaning! + return this._oStaticInfo.services || {}; + }; + + /** + * Loads the included CSS and JavaScript resources. The resources will be + * resoloved relative to the component location. + * + * @private + */ + ComponentMetadata.prototype._loadIncludes = function() { + + var oUI5Manifest = this.getManifestEntry("sap.ui5"); + var mResources = oUI5Manifest["resources"]; + + if (!mResources) { + return; + } + + var sComponentName = this.getComponentName(); + + // load JS files + var aJSResources = mResources["js"]; + if (aJSResources) { + for (var i = 0; i < aJSResources.length; i++) { + var oJSResource = aJSResources[i]; + var sFile = oJSResource.uri; + if (sFile) { + // load javascript file + var m = sFile.match(/\.js$/i); + if (m) { + // prepend lib name to path, remove extension + var sPath = sComponentName.replace(/\./g, '/') + (sFile.slice(0, 1) === '/' ? '' : '/') + sFile.slice(0, m.index); + jQuery.sap.log.info("Component \"" + this.getName() + "\" is loading JS: \"" + sPath + "\""); + // call internal require variant that accepts a requireJS path + jQuery.sap._requirePath(sPath); + } + } + } + } + + // include CSS files + var aCSSResources = mResources["css"]; + if (aCSSResources) { + for (var j = 0; j < aCSSResources.length; j++) { + var oCSSResource = aCSSResources[j]; + if (oCSSResource.uri) { + var sCssUrl = sap.ui.resource(sComponentName, oCSSResource.uri); + jQuery.sap.log.info("Component \"" + this.getName() + "\" is loading CSS: \"" + sCssUrl + "\""); + jQuery.sap.includeStyleSheet(sCssUrl, oCSSResource.id); + } + } + } + + }; + + /** + * Load external dependencies (like libraries and components) + * + * @private + */ + ComponentMetadata.prototype._loadDependencies = function() { + + // afterwards we load our dependencies! + var that = this, + oDep = this.getDependencies(); + if (oDep) { + + // load the libraries + var aLibraries = oDep.libs; + if (aLibraries) { + for (var i = 0, l = aLibraries.length; i < l; i++) { + var sLib = aLibraries[i]; + jQuery.sap.log.info("Component \"" + that.getName() + "\" is loading library: \"" + sLib + "\""); + sap.ui.getCore().loadLibrary(sLib); + } + } + + // load the components + var aComponents = oDep.components; + if (aComponents) { + for (var i = 0, l = aComponents.length; i < l; i++) { + var sName = aComponents[i]; + jQuery.sap.log.info("Component \"" + that.getName() + "\" is loading component: \"" + sName + ".Component\""); + sap.ui.component.load({ + name: sName + }); + } + } + + } + + }; + + + /** + * Converts the legacy metadata into the new manifest format + * + * @private + */ + ComponentMetadata.prototype._convertLegacyMetadata = function(oStaticInfo, oManifest) { + + // this function can be outsourced in future when the ComponentMetadata + // is not used anymore and the new Application manifest is used - + // but for now we keep it as it will be one of the common use cases + // to have the classical ComponentMetadata and this should be + // transformed into the new manifest structure for compatibility + + // converter for array with string values to object + var fnCreateObject = function(a, fnCallback) { + var o = {}; + if (a) { + for (var i = 0, l = a.length; i < l; i++) { + var oValue = a[i]; + if (typeof oValue === "string") { + o[oValue] = typeof fnCallback === "function" && fnCallback(oValue) || {}; + } + } + } + return o; + }; + + // add the old information on component metadata to the manifest info + var oAppManifest = oManifest["sap.app"]; + var oUI5Manifest = oManifest["sap.ui5"]; + + // we do not merge the manifest and the metadata - once a manifest + // entry exists, the metadata entries will be ignored and the specific + // metadata entry needs to be migrated into the manifest. + for (var sName in oStaticInfo) { + var oValue = oStaticInfo[sName]; + if (oValue !== undefined) { + switch (sName) { + case "name": + oManifest[sName] = oManifest[sName] || oValue; + oAppManifest["id"] = oAppManifest["id"] || oValue; + break; + case "description": + case "keywords": + oAppManifest[sName] = oAppManifest[sName] || oValue; + break; + case "version": + var mAppVersion = oAppManifest.applicationVersion = oAppManifest.applicationVersion || {}; + mAppVersion.version = mAppVersion.version || oValue; + break; + case "config": + oUI5Manifest[sName] = oUI5Manifest[sName] || oValue; + break; + case "customizing": + var mExtends = oUI5Manifest["extends"] = oUI5Manifest["extends"] || {}; + mExtends.extensions = mExtends.extensions || oValue; + break; + case "dependencies": + if (!oUI5Manifest[sName]) { + oUI5Manifest[sName] = {}; + oUI5Manifest[sName].minUI5Version = oValue.ui5version; + oUI5Manifest[sName].libs = fnCreateObject(oValue.libs); + oUI5Manifest[sName].components = fnCreateObject(oValue.components); + } + break; + case "includes": + if (!oUI5Manifest["resources"]) { + oUI5Manifest["resources"] = {}; + if (oValue && oValue.length > 0) { + for (var i = 0, l = oValue.length; i < l; i++) { + var sResource = oValue[i]; + var m = sResource.match(/\.(css|js)$/i); + if (m) { + oUI5Manifest["resources"][m[1]] = oUI5Manifest["resources"][m[1]] || []; + oUI5Manifest["resources"][m[1]].push({ + "uri": sResource + }); + } + } + } + } + break; + case "handleValidation": + if (oUI5Manifest[sName] === undefined) { + oUI5Manifest[sName] = oValue; + } + break; + case "models": + if (!oUI5Manifest["models"]) { + var oModels = {}; + for (var sModel in oValue) { + var oDS = oValue[sModel]; + var oModel = { + settings: {} + }; + for (var sDSSetting in oDS) { + var oDSSetting = oDS[sDSSetting]; + switch (sDSSetting) { + case "type": + oModel[sDSSetting] = oDSSetting; + break; + default: + oModel.settings[sDSSetting] = oDSSetting; + } + } + oModels[sModel] = oModel; + } + oUI5Manifest["models"] = oModels; + } + break; + // no default + } + } + } + + }; + + return ComponentMetadata; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentMetadata.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentMetadata.js new file mode 100644 index 0000000..8b60612 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ComponentMetadata.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/base/ManagedObjectMetadata'],function(q,M){"use strict";var C=function(c,o){M.apply(this,arguments);};C.prototype=q.sap.newObject(M.prototype);C.preprocessClassInfo=function(c){if(c&&typeof c.metadata==="string"){c.metadata={_src:c.metadata};}return c;};C.prototype.applySettings=function(c){var s=c.metadata;var n=this.getName(),p=n.replace(/\.\w+?$/,"");if(s._src){if(s._src=="component.json"){q.sap.log.warning("Usage of declaration \"metadata: 'component.json'\" is deprecated (component "+n+"). Use \"metadata: 'json'\" instead.");}else if(s._src!="json"){throw new Error("Invalid metadata declaration for component "+n+": \""+s._src+"\"! Use \"metadata: 'json'\" to load metadata from component.json.");}var r=p.replace(/\./g,"/")+"/component.json";q.sap.log.info("The metadata of the component "+n+" is loaded from file "+r+".");try{var R=q.sap.loadResource(r,{dataType:"json"});q.extend(s,R);}catch(e){q.sap.log.error("Failed to load component metadata from \""+r+"\" (component "+n+")! Reason: "+e);}}M.prototype.applySettings.call(this,c);this._sComponentName=p;this._bInitialized=false;this._iInstanceCount=0;var P=this.getParent(),i=/^sap\.ui\.core\.(UI)?Component$/.test(n),a=i&&P&&P._sComponentName;var m=s["manifest"];if(m){s.__metadataVersion=2;if(typeof m==="string"&&m==="json"){var r=p.replace(/\./g,"/")+"/manifest.json";q.sap.log.info("The manifest of the component "+n+" is loaded from file "+r+".");try{var R=q.sap.loadResource(r,{dataType:"json"});m=R;}catch(e){q.sap.log.error("Failed to load component manifest from \""+r+"\" (component "+n+")! Reason: "+e);m={};}}}else{s.__metadataVersion=1;m={};}m["name"]=m["name"]||n;m["sap.app"]=m["sap.app"]||{"id":p};m["sap.ui5"]=m["sap.ui5"]||{};if(a){m["sap.ui5"]["extends"]=m["sap.ui5"]["extends"]||{};m["sap.ui5"]["extends"].component=m["sap.ui5"]["extends"].component||a;}this._convertLegacyMetadata(s,m);s["manifest"]=m;this._oStaticInfo=s;};C.prototype.init=function(){if(!this._bInitialized){var p=this.getParent();if(p instanceof C){p.init();}this._loadDependencies();this._loadIncludes();this._bInitialized=true;}};C.prototype.exit=function(){if(this._bInitialized){var p=this.getParent();if(p instanceof C){p.exit();}this._bInitialized=false;}};C.prototype.onInitComponent=function(){var u=this.getManifestEntry("sap.ui5",true),e=u&&u["extends"]&&u["extends"].extensions;if(this._iInstanceCount===0&&!q.isEmptyObject(e)){q.sap.require("sap.ui.core.CustomizingConfiguration");sap.ui.core.CustomizingConfiguration.activateForComponent(this._sComponentName);}this._iInstanceCount++;};C.prototype.onExitComponent=function(){this._iInstanceCount--;var u=this.getManifestEntry("sap.ui5",true),e=u&&u["extends"]&&u["extends"].extensions;if(this._iInstanceCount===0&&!q.isEmptyObject(e)){if(sap.ui.core.CustomizingConfiguration){sap.ui.core.CustomizingConfiguration.deactivateForComponent(this._sComponentName);}}};C.prototype.getMetadataVersion=function(){return this._oStaticInfo.__metadataVersion;};C.prototype.getManifest=function(){return q.extend(true,{},this._oStaticInfo.manifest);};C.prototype.getManifestEntry=function(k,m){if(!k||k.indexOf(".")<=0){q.sap.log.warning("Manifest entries with keys without namespace prefix can not be read via getManifestEntry. Key: "+k+", Component: "+this.getName());return null;}var p,o=this.getManifest(),d=o&&o[k]||{};if(!q.isPlainObject(d)){q.sap.log.warning("Custom Manifest entry with key '"+k+"' must be an object. Component: "+this.getName());return null;}if(m&&(p=this.getParent())instanceof C){return q.extend(true,{},p.getManifestEntry(k,m),d);}return q.extend(true,{},d);};C.prototype.getCustomEntry=function(k,m){if(!k||k.indexOf(".")<=0){q.sap.log.warning("Component Metadata entries with keys without namespace prefix can not be read via getCustomEntry. Key: "+k+", Component: "+this.getName());return null;}var p,d=this._oStaticInfo[k]||{};if(!q.isPlainObject(d)){q.sap.log.warning("Custom Component Metadata entry with key '"+k+"' must be an object. Component: "+this.getName());return null;}if(m&&(p=this.getParent())instanceof C){return q.extend(true,{},p.getCustomEntry(k,m),d);}return q.extend(true,{},d);};C.prototype.getComponentName=function(){return this._sComponentName;};C.prototype.getDependencies=function(){if(!this._oLegacyDependencies){var u=this.getManifestEntry("sap.ui5"),d=u&&u.dependencies,U=d&&d.minUI5Version||null,l=d&&d.libs||{},c=d&&d.components||{};var L={ui5version:U,libs:[],components:[]};for(var s in l){L.libs.push(s);}for(var a in c){L.components.push(a);}this._oLegacyDependencies=L;}return this._oLegacyDependencies;};C.prototype.getIncludes=function(){if(!this._aLegacyIncludes){var I=[],u=this.getManifestEntry("sap.ui5"),r=u&&u.resources||{},c=r&&r.css||[],j=r&&r.js||[];for(var i=0,l=c.length;i0)?I:null;}return this._aLegacyIncludes;};C.prototype.getUI5Version=function(){var u=this.getManifestEntry("sap.ui5");return u&&u.dependencies&&u.dependencies.minUI5Version;};C.prototype.getComponents=function(){return this.getDependencies().components;};C.prototype.getLibs=function(){return this.getDependencies().libs;};C.prototype.getVersion=function(){var a=this.getManifestEntry("sap.app");return a&&a.applicationVersion&&a.applicationVersion.version;};C.prototype.getConfig=function(k,d){var u=this.getManifestEntry("sap.ui5",!d),c=u&&u.config;return q.extend(true,{},c&&k?c[k]:c);};C.prototype.getCustomizing=function(d){var u=this.getManifestEntry("sap.ui5",!d),e=q.extend(true,{},u&&u["extends"]&&u["extends"].extensions);return e;};C.prototype.getModels=function(d){if(!this._oLegacyModels){this._oLegacyModels={};var u=this.getManifestEntry("sap.ui5"),D=u&&u.models||{};for(var s in D){var o=D[s];this._oLegacyModels[s]=o.settings||{};this._oLegacyModels[s].type=o.type;}}var p,m=q.extend(true,{},this._oLegacyModels);if(!d&&(p=this.getParent())instanceof C){m=q.extend(true,{},p.getModels(),m);}return m;};C.prototype.handleValidation=function(){var u=this.getManifestEntry("sap.ui5");return u&&u.handleValidation;};C.prototype.getServices=function(){q.sap.log.warning("Usage of sap.ui.core.ComponentMetadata.protoype.getServices is deprecated!");return this._oStaticInfo.services||{};};C.prototype._loadIncludes=function(){var u=this.getManifestEntry("sap.ui5");var r=u["resources"];if(!r){return;}var c=this.getComponentName();var J=r["js"];if(J){for(var i=0;i0){for(var i=0,l=v.length;i + * sap.ui.core.CompositeSupport.mixInto(your.Class, { + * createComponent1 : function() { + * }, + * createComponent2 : function() { + * }, + * ... + * }); + * + * + * @namespace + * @alias sap.ui.core.CompositeSupport + */ + var CompositeSupport = {}; + + /** + * Applies the CompositeMixin to the given control class fnClass. This includes the following steps: + * + *
      + *
    • Creates a new subclass of {@link sap.ui.core.ComponentFactory} and adds it to the given class + *
    • Merges the given methods into the prototype of the newly created class + *
    • Enriches the prototype of the given control class with a getComponentFactory() method + *
    • Hooks into init() and destroy() of the given class + *
    + * + * @param {function} fnClass the class (constructor function) of a control calls to be enriched + * @param {string} [sFactoryName='ComponentFactory'] name under which the newly created factory class will be added to the control class + * @param {object} [oMethods] default factory methods and helper methods + * @public + */ + CompositeSupport.mixInto = function(fnClass, sFactoryName, oMethods) { + + if ( arguments.length == 2 && typeof sFactoryName === "object" ) { + oMethods = sFactoryName; + sFactoryName = "ComponentFactory"; + } + jQuery.sap.assert(typeof fnClass === "function" && fnClass.prototype instanceof Control, "CompositeSupport.mixInto: fnClass must be a subclass of Control"); + jQuery.sap.assert(typeof sFactoryName === "string" && sFactoryName, "CompositeSupport.mixInto: sFactoryName must be a non-empty string"); + jQuery.sap.assert(typeof oMethods === "object", "oMethods must be an object"); + + function _getBaseFactory() { + var oMetadata = fnClass.getMetadata(); + do { + oMetadata = oMetadata.getParent(); + if ( oMetadata && oMetadata.getComponentFactoryClass ) { + return oMetadata.getComponentFactoryClass(); + } + } while ( oMetadata ); + return sap.ui.core.ComponentFactory; + } + + // create a new component factory class + fnClass[sFactoryName] = (_getBaseFactory()).subclass(oMethods); + + // add factory class info to metadata + fnClass.getMetadata().getComponentFactoryClass = jQuery.sap.getter(fnClass[sFactoryName]); + + // initialization and getter for the component factory + if ( !fnClass.prototype._initCompositeSupport ) { + fnClass.prototype._initCompositeSupport = function(mSettings) { + + var oFactory = new (this.getMetadata().getComponentFactoryClass())(this); + + if ( mSettings.componentFactory ) { + + // assert a pure object literal + jQuery.sap.assert(jQuery.isPlainObject(mSettings.componentFactory)); + + // customize the factory with it + oFactory.customize(mSettings.componentFactory); + + // cleanup settings + delete mSettings.componentFactory; + + } + + this.getComponentFactory = jQuery.sap.getter(oFactory); + }; + } + + if ( !fnClass.prototype._exitCompositeSupport ) { + fnClass.prototype._exitCompositeSupport = function() { + + this.getComponentFactory().destroy(); + delete this.getComponentFactory; + }; + } + + }; + + /** + * @class Base class for component factories. Subclasses are created by the CompositeSupport mixin. + * + * @param {sap.ui.core.Control} oComposite Composite control that this factory is used for. + * @name sap.ui.core.ComponentFactory + */ + sap.ui.base.EventProvider.extend("sap.ui.core.ComponentFactory", /** @lends sap.ui.core.ComponentFactory */ { + constructor: function(oComposite) { + sap.ui.base.EventProvider.apply(this); + this.oComposite = oComposite; + return this; + } + }); + + /** + * Attaches a change notification listener to this factory. The listener will be informed when + * any of the API objects of the composite API will change. + * @param {function} f listener function to call + * @param {object} [o=window] Object to call the function on + * @return {sap.ui.core.ComponentFactory} returns this to facilitate method chaining + * @public + */ + sap.ui.core.ComponentFactory.prototype.attachChange = function (f,o) { + this.getModel(); + this.attachEvent("change", f,o); + return this; + }; + + /** + * Detaches the given change notification listener from this factory. + * The listener must have been registered with the exact same parameters before + * @param {function} f listener function to remove + * @param {object} [o=window] Object that the listener function had to be called for + * @return {sap.ui.core.ComponentFactory} returns this to facilitate method chaining + * @public + */ + sap.ui.core.ComponentFactory.prototype.detachChange = function (f,o) { + this.getModel(); + this.detachEvent("change", f,o); + return this; + }; + + /** + * Returns a control model for the composite that this factory belongs to. + * + * The model can be used to bind properties of created components against it. + * + * @return {sap.ui.model.control.ControlModel} A model for the composite of this factory + * @public + */ + sap.ui.core.ComponentFactory.prototype.getModel = function() { + if ( !this.oModel ) { + var that = this; + this.oModel = new ControlModel(this.oComposite); + this.oModel._onchange = function(e) { + that.fireEvent("change", e.getParameters && e.getParameters()); + }; + } + return this.oModel; + }; + + /** + * Adds an element to the facade of the composite. To be called by the composite application. + * @param {sap.ui.core.Element} oElement element to be added to the facade + * @return {void} + * @public + */ + sap.ui.core.ComponentFactory.prototype.addFacadeComponent = function(oElement) { + this.getModel().add(oElement); + }; + + /** + * Removes an element from the facade of the composite. To be called by the composite application. + * @param {sap.ui.core.Element} oElement element to be removed to the facade + * @return {void} + * @public + */ + sap.ui.core.ComponentFactory.prototype.removeFacadeComponent = function(oElement) { + this.getModel().remove(oElement); + }; + + (function() { + + function _extend(o, oMethods, bDefaults) { + jQuery.each(oMethods, function(sName, fnFunc) { + if ( sName.indexOf("default") != 0 ) { + o[sName] = fnFunc; + } + // for create functions keep a backup + if ( bDefaults && sName.indexOf("create") == 0 ) { + o["defaultC" + sName.substring(1)] = o[sName]; + } + }); + } + + function _createExtendFunction(fnBaseClass) { + return function(oMethods) { + + // create a new constructor function + var fnCtor = function(/* anonymous arguments */) { + // invoke base class + fnBaseClass.apply(this, arguments); + }; + // properly chain the prototypes + fnCtor.prototype = jQuery.sap.newObject(fnBaseClass.prototype); + _extend(fnCtor.prototype, oMethods, /* bDefaults */ true); + + fnCtor.customize = function(oMethods) { + _extend(fnCtor.prototype, oMethods); + return this; + }; + + fnCtor.subclass = _createExtendFunction(fnCtor); + + return fnCtor; + }; + } + + /** + * Creates a concrete subclass of ComponentFactory with the given methods. + * + * @function + * @param {object} [oMethods] Map of methods that should be attached to the subclass. + * @return {Function} constructor for created subclass. + */ + sap.ui.core.ComponentFactory.subclass = _createExtendFunction(sap.ui.core.ComponentFactory); + + /** + * Overrides factory methods with a customized implementation. + * + * The members in the mMethods parameter should match + * the documented factory methods in the concrete ComponentFactory subclass + * of a composite. + * + * @see Application Developers guide for component customization + * + * @param {object} mMethods + * @return {sap.ui.core.ComponentFactory} this to allow method chaining + * @public + */ + sap.ui.core.ComponentFactory.prototype.customize = function (mMethods) { + _extend(this, mMethods); + if ( this.oComposite && this.oComposite._onComponentFactoryChanged ) { + // + this.oComposite._onComponentFactoryChanged(); + } + return this; + }; + + }()); + + return CompositeSupport; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/CompositeSupport.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/CompositeSupport.js new file mode 100644 index 0000000..5f50875 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/CompositeSupport.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Control','sap/ui/model/control/ControlModel'],function(q,C,a){"use strict";var b={};b.mixInto=function(c,f,m){if(arguments.length==2&&typeof f==="object"){m=f;f="ComponentFactory";}function _(){var M=c.getMetadata();do{M=M.getParent();if(M&&M.getComponentFactoryClass){return M.getComponentFactoryClass();}}while(M);return sap.ui.core.ComponentFactory;}c[f]=(_()).subclass(m);c.getMetadata().getComponentFactoryClass=q.sap.getter(c[f]);if(!c.prototype._initCompositeSupport){c.prototype._initCompositeSupport=function(s){var F=new(this.getMetadata().getComponentFactoryClass())(this);if(s.componentFactory){F.customize(s.componentFactory);delete s.componentFactory;}this.getComponentFactory=q.sap.getter(F);};}if(!c.prototype._exitCompositeSupport){c.prototype._exitCompositeSupport=function(){this.getComponentFactory().destroy();delete this.getComponentFactory;};}};sap.ui.base.EventProvider.extend("sap.ui.core.ComponentFactory",{constructor:function(c){sap.ui.base.EventProvider.apply(this);this.oComposite=c;return this;}});sap.ui.core.ComponentFactory.prototype.attachChange=function(f,o){this.getModel();this.attachEvent("change",f,o);return this;};sap.ui.core.ComponentFactory.prototype.detachChange=function(f,o){this.getModel();this.detachEvent("change",f,o);return this;};sap.ui.core.ComponentFactory.prototype.getModel=function(){if(!this.oModel){var t=this;this.oModel=new a(this.oComposite);this.oModel._onchange=function(e){t.fireEvent("change",e.getParameters&&e.getParameters());};}return this.oModel;};sap.ui.core.ComponentFactory.prototype.addFacadeComponent=function(e){this.getModel().add(e);};sap.ui.core.ComponentFactory.prototype.removeFacadeComponent=function(e){this.getModel().remove(e);};(function(){function _(o,m,d){q.each(m,function(n,f){if(n.indexOf("default")!=0){o[n]=f;}if(d&&n.indexOf("create")==0){o["defaultC"+n.substring(1)]=o[n];}});}function c(B){return function(m){var f=function(){B.apply(this,arguments);};f.prototype=q.sap.newObject(B.prototype);_(f.prototype,m,true);f.customize=function(m){_(f.prototype,m);return this;};f.subclass=c(f);return f;};}sap.ui.core.ComponentFactory.subclass=c(sap.ui.core.ComponentFactory);sap.ui.core.ComponentFactory.prototype.customize=function(m){_(this,m);if(this.oComposite&&this.oComposite._onComponentFactoryChanged){this.oComposite._onComponentFactoryChanged();}return this;};}());return b;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/CustomData-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/CustomData-dbg.js new file mode 100644 index 0000000..fb7d513 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/CustomData-dbg.js @@ -0,0 +1,107 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.core.CustomData. +sap.ui.define(['jquery.sap.global', './Element', './library'], + function(jQuery, Element, library) { + "use strict"; + + + + /** + * Constructor for a new CustomData. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * Contains a single key/value pair of custom data attached to an Element. See method data(). + * @extends sap.ui.core.Element + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.ui.core.CustomData + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var CustomData = Element.extend("sap.ui.core.CustomData", /** @lends sap.ui.core.CustomData.prototype */ { metadata : { + + library : "sap.ui.core", + properties : { + + /** + * The key of the data in this CustomData object. + * When the data is just stored, it can be any string, but when it is to be written to HTML (writeToDom == true) then it must also be a valid HTML attribute name (it must conform to the sap.ui.core.ID type and may contain no colon) to avoid collisions, it also may not start with "sap-ui". When written to HTML, the key is prefixed with "data-". + * If any restriction is violated, a warning will be logged and nothing will be written to the DOM. + */ + key : {type : "string", group : "Data", defaultValue : null}, + + /** + * The data stored in this CustomData object. + * When the data is just stored, it can be any JS type, but when it is to be written to HTML (writeToDom == true) then it must be a string. + * If this restriction is violated, a warning will be logged and nothing will be written to the DOM. + */ + value : {type : "any", group : "Data", defaultValue : null}, + + /** + * If set to "true" and the value is of type "string" and the key conforms to the documented restrictions, this custom data is written to the HTML root element of the control as a "data-*" attribute. + * If the key is "abc" and the value is "cde", the HTML will look as follows: + * <SomeTag ... data-abc="cde" ... > + * Thus the application can provide stable attributes by data binding which can be used for styling or identification purposes. + * ATTENTION: use carefully to not create huge attributes or a large number of them. + * @since 1.9.0 + */ + writeToDom : {type : "boolean", group : "Data", defaultValue : false} + } + }}); + + CustomData.prototype.setValue = function(oValue) { + this.setProperty("value", oValue, true); + + var oControl = this.getParent(); + if (oControl && oControl.getDomRef()) { + var oCheckResult = this._checkWriteToDom(oControl); + if (oCheckResult) { + // update DOM directly + oControl.$().attr(oCheckResult.key, oCheckResult.value); + } + } + return this; + }; + + CustomData.prototype._checkWriteToDom = function(oRelated) { + if (!this.getWriteToDom()) { + return null; + } + + var key = this.getKey(); + var value = this.getValue(); + + if (typeof value != "string") { + jQuery.sap.log.error("CustomData with key " + key + " should be written to HTML of " + oRelated + " but the value is not a string."); + return null; + } + + if (!(sap.ui.core.ID.isValid(key)) || (key.indexOf(":") != -1)) { + jQuery.sap.log.error("CustomData with key " + key + " should be written to HTML of " + oRelated + " but the key is not valid (must be a valid sap.ui.core.ID without any colon)."); + return null; + } + + if (key == jQuery.sap._FASTNAVIGATIONKEY) { + value = /^\s*(x|true)\s*$/i.test(value) ? "true" : "false"; // normalize values + } else if (key.indexOf("sap-ui") == 0) { + jQuery.sap.log.error("CustomData with key " + key + " should be written to HTML of " + oRelated + " but the key is not valid (may not start with 'sap-ui')."); + return null; + } + + return {key: "data-" + key, value: value}; + + }; + + + return CustomData; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/CustomData.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/CustomData.js new file mode 100644 index 0000000..8467afe --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/CustomData.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Element','./library'],function(q,E,l){"use strict";var C=E.extend("sap.ui.core.CustomData",{metadata:{library:"sap.ui.core",properties:{key:{type:"string",group:"Data",defaultValue:null},value:{type:"any",group:"Data",defaultValue:null},writeToDom:{type:"boolean",group:"Data",defaultValue:false}}}});C.prototype.setValue=function(v){this.setProperty("value",v,true);var c=this.getParent();if(c&&c.getDomRef()){var o=this._checkWriteToDom(c);if(o){c.$().attr(o.key,o.value);}}return this;};C.prototype._checkWriteToDom=function(r){if(!this.getWriteToDom()){return null;}var k=this.getKey();var v=this.getValue();if(typeof v!="string"){q.sap.log.error("CustomData with key "+k+" should be written to HTML of "+r+" but the value is not a string.");return null;}if(!(sap.ui.core.ID.isValid(k))||(k.indexOf(":")!=-1)){q.sap.log.error("CustomData with key "+k+" should be written to HTML of "+r+" but the key is not valid (must be a valid sap.ui.core.ID without any colon).");return null;}if(k==q.sap._FASTNAVIGATIONKEY){v=/^\s*(x|true)\s*$/i.test(v)?"true":"false";}else if(k.indexOf("sap-ui")==0){q.sap.log.error("CustomData with key "+k+" should be written to HTML of "+r+" but the key is not valid (may not start with 'sap-ui').");return null;}return{key:"data-"+k,value:v};};return C;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/CustomizingConfiguration-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/CustomizingConfiguration-dbg.js new file mode 100644 index 0000000..8b8c4d4 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/CustomizingConfiguration-dbg.js @@ -0,0 +1,206 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +sap.ui.define(['jquery.sap.global', './Core', './Component'], + function(jQuery, Core, Component) { + "use strict"; + + + + + // keys for configuration sections + var CONFIG_VIEW_REPLACEMENTS = "sap.ui.viewReplacements", + CONFIG_VIEW_EXTENSIONS = "sap.ui.viewExtensions", + CONFIG_VIEW_MODIFICATIONS = "sap.ui.viewModifications", + CONFIG_CONTROLLER_EXTENSIONS = "sap.ui.controllerExtensions"; + + // map of component configurations + var mComponentConfigs = {}; + + /** + * finds the config in the given type and use the check function to validate + * if the correct entry has been found! + * @param {string} sType name of the config section + * @param {string|sap.ui.base.ManagedObject} vObject Component ID or ManagedObject + * @param {function} fnCheck check function + */ + function findConfig(sType, vObject, fnCheck) { + var sComponentId = vObject && typeof vObject === "string" ? vObject : (vObject && Component.getOwnerIdFor(vObject)); + if (sComponentId) { + // if a component name is given only the component customizing + // configuration is checked - the customizing configuration is + // merged in case of extending components - so the configuration + // should be available properly + var oComponent = sap.ui.component(sComponentId); + var sComponentName = oComponent && oComponent.getMetadata().getComponentName(); + var oConfig = mComponentConfigs[sComponentName]; + if (oConfig && oConfig[sType] && fnCheck(oConfig[sType])) { + return false; + } + } else { + // TODO: checking order of components? + jQuery.each(mComponentConfigs, function(sComponentName, oConfig) { + if (oConfig && oConfig[sType] && fnCheck(oConfig[sType])) { + return false; + } + }); + } + } + + /** + * The static object CustomizingConfiguration contains configuration + * for view replacements, view extensions and custom properties. The configuration + * will be added from component metadata objects once the component gets activated. + * By deactivating the component the customizing configuration of the component + * gets removed again. + * + * @author SAP SE + * @version 1.28.5 + * @constructor + * @private + * @since 1.15.1 + * @alias sap.ui.core.CustomizingConfiguration + */ + var CustomizingConfiguration = { + + /** + * logging of customizing configuration + * @private + */ + log: function() { + if (window.console) { + window.console.log(mComponentConfigs); + } + }, + + /** + * Activates the customizing of a component by registering the component + * configuration in the central customizing configuration. + * @param {string} sComponentName the name of the component + * @private + */ + activateForComponent: function(sComponentName) { + jQuery.sap.log.info("CustomizingConfiguration: activateForComponent('" + sComponentName + "')"); + var sFullComponentName = sComponentName + ".Component"; + jQuery.sap.require(sFullComponentName); + var oCustomizingConfig = jQuery.sap.getObject(sFullComponentName).getMetadata().getCustomizing(); + mComponentConfigs[sComponentName] = oCustomizingConfig; + + jQuery.sap.log.debug("CustomizingConfiguration: customizing configuration for component '" + sComponentName + "' loaded: " + JSON.stringify(oCustomizingConfig)); + }, + + /** + * Deactivates the customizing of a component by removing the component + * configuration in the central customizing configuration. + * @param {string} sComponentName the name of the component + * @private + */ + deactivateForComponent: function(sComponentName) { + jQuery.sap.log.info("CustomizingConfiguration: deactivateForComponent('" + sComponentName + "')"); + delete mComponentConfigs[sComponentName]; + }, + + /** + * returns the configuration of the replacement View or undefined + * @private + */ + getViewReplacement: function(sViewName, vObject) { + var oResultConfig; + // TODO: checking order of components? + findConfig(CONFIG_VIEW_REPLACEMENTS, vObject, function(oConfig) { + oResultConfig = oConfig[sViewName]; + return !!oResultConfig; + }); + return oResultConfig; + }, + + /** + * returns the configuration of the given extension point or undefined + * @private + */ + getViewExtension: function(sViewName, sExtensionPointName, vObject) { // FIXME: currently ONE extension wins, but they should be somehow merged - but how to define the order? + var oResultConfig; + // TODO: checking order of components? + findConfig(CONFIG_VIEW_EXTENSIONS, vObject, function(oConfig) { + oResultConfig = oConfig[sViewName] && oConfig[sViewName][sExtensionPointName]; + return !!oResultConfig; + }); + return oResultConfig; + }, + + /** + * returns the configuration of the controller extensions for the given + * controller name + * @private + */ + getControllerExtension: function(sControllerName, vObject) { + var oResultConfig; + findConfig(CONFIG_CONTROLLER_EXTENSIONS, vObject, function(oConfig) { + oResultConfig = oConfig[sControllerName]; + return !!oResultConfig; + }); + return oResultConfig; + }, + + /** + * currently returns an object (or undefined) because we assume there is + * only one property modified and only once + * @private + */ + getCustomProperties: function(sViewName, sControlId, vObject) { // TODO: Fragments and Views are mixed here + var mSettings; + // TODO: checking order of components? + findConfig(CONFIG_VIEW_MODIFICATIONS, vObject, function(oConfig) { + var oSettings = oConfig[sViewName] && oConfig[sViewName][sControlId]; + var oUsedSettings = {}; + var bValidConfigFound = false; + if (oSettings) { + jQuery.each(oSettings, function(sName, vValue) { + if (sName === "visible") { + bValidConfigFound = true; + oUsedSettings[sName] = vValue; + jQuery.sap.log.info("Customizing: custom value for property '" + sName + "' of control '" + sControlId + "' in View '" + sViewName + "' applied: " + vValue); + } else { + jQuery.sap.log.warning("Customizing: custom value for property '" + sName + "' of control '" + sControlId + "' in View '" + sViewName + "' ignored: only the 'visible' property can be customized."); + } + }); + if (bValidConfigFound) { // initialize only when there is actually something to add + mSettings = mSettings || {}; // merge with any previous calls to findConfig in case of multiple definition sections + jQuery.extend(mSettings, oUsedSettings); // FIXME: this currently overrides customizations from different components in random order + } + } + }); + return mSettings; + }, + + hasCustomProperties: function(sViewName, vObject) { + var mSettings = {}; + findConfig(CONFIG_VIEW_MODIFICATIONS, vObject, function(oConfig) { + if (!!oConfig[sViewName]) { + mSettings = oConfig[sViewName]; + } + }); + return (!jQuery.isEmptyObject(mSettings)); + } + + }; + + // when the customizing is disabled all the functions will be noop + if (sap.ui.getCore().getConfiguration().getDisableCustomizing()) { + jQuery.sap.log.info("CustomizingConfiguration: disabling Customizing now"); + jQuery.each(CustomizingConfiguration, function(sName, vAny) { + if (typeof vAny === "function") { + CustomizingConfiguration[sName] = function() {}; + } + }); + } + + + + + return CustomizingConfiguration; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/CustomizingConfiguration.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/CustomizingConfiguration.js new file mode 100644 index 0000000..a4ef7ee --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/CustomizingConfiguration.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Core','./Component'],function(q,C,a){"use strict";var b="sap.ui.viewReplacements",c="sap.ui.viewExtensions",d="sap.ui.viewModifications",e="sap.ui.controllerExtensions";var m={};function f(t,o,h){var s=o&&typeof o==="string"?o:(o&&a.getOwnerIdFor(o));if(s){var i=sap.ui.component(s);var j=i&&i.getMetadata().getComponentName();var k=m[j];if(k&&k[t]&&h(k[t])){return false;}}else{q.each(m,function(j,k){if(k&&k[t]&&h(k[t])){return false;}});}}var g={log:function(){if(window.console){window.console.log(m);}},activateForComponent:function(s){q.sap.log.info("CustomizingConfiguration: activateForComponent('"+s+"')");var F=s+".Component";q.sap.require(F);var o=q.sap.getObject(F).getMetadata().getCustomizing();m[s]=o;q.sap.log.debug("CustomizingConfiguration: customizing configuration for component '"+s+"' loaded: "+JSON.stringify(o));},deactivateForComponent:function(s){q.sap.log.info("CustomizingConfiguration: deactivateForComponent('"+s+"')");delete m[s];},getViewReplacement:function(v,o){var r;f(b,o,function(h){r=h[v];return!!r;});return r;},getViewExtension:function(v,E,o){var r;f(c,o,function(h){r=h[v]&&h[v][E];return!!r;});return r;},getControllerExtension:function(s,o){var r;f(e,o,function(h){r=h[s];return!!r;});return r;},getCustomProperties:function(v,s,o){var S;f(d,o,function(h){var i=h[v]&&h[v][s];var u={};var V=false;if(i){q.each(i,function(n,j){if(n==="visible"){V=true;u[n]=j;q.sap.log.info("Customizing: custom value for property '"+n+"' of control '"+s+"' in View '"+v+"' applied: "+j);}else{q.sap.log.warning("Customizing: custom value for property '"+n+"' of control '"+s+"' in View '"+v+"' ignored: only the 'visible' property can be customized.");}});if(V){S=S||{};q.extend(S,u);}}});return S;},hasCustomProperties:function(v,o){var s={};f(d,o,function(h){if(!!h[v]){s=h[v];}});return(!q.isEmptyObject(s));}};if(sap.ui.getCore().getConfiguration().getDisableCustomizing()){q.sap.log.info("CustomizingConfiguration: disabling Customizing now");q.each(g,function(n,A){if(typeof A==="function"){g[n]=function(){};}});}return g;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/DeclarativeSupport-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/DeclarativeSupport-dbg.js new file mode 100644 index 0000000..7d7388c --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/DeclarativeSupport-dbg.js @@ -0,0 +1,552 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.core.DeclarativeSupport +sap.ui.define(['jquery.sap.global', 'sap/ui/base/DataType', 'sap/ui/base/ManagedObject', './Control', './CustomData', './HTML', './mvc/View'], + function(jQuery, DataType, ManagedObject, Control, CustomData, HTML, View) { + "use strict"; + + + /** + * @class Static class for enabling declarative UI support. + * + * @author Peter Muessig, Tino Butz + * @version 1.28.5 + * @since 1.7.0 + * @public + * @alias sap.ui.core.DeclarativeSupport + */ + var DeclarativeSupport = { + }; + + + /** + * Defines the attributes of an element that should be handled differently. + * Set key/value pairs. The key indicates the attribute. The value can be of type Boolean or Function. + * When the value is of type Function it will receive three arguments: + * sValue the value of the attribute, + * mSettings the settings of the control + * fnClass the control class + * @private + */ + DeclarativeSupport.attributes = { + "data-sap-ui-type" : true, + "data-sap-ui-id" : true, + "data-sap-ui-aggregation" : true, + "data-sap-ui-default-aggregation" : true, + "data-sap-ui-binding" : function(sValue, mSettings) { + var oBindingInfo = ManagedObject.bindingParser(sValue); + // TODO reject complex bindings, types, formatters; enable 'parameters'? + mSettings.objectBindings = mSettings.objectBindings || {}; + mSettings.objectBindings[oBindingInfo.model || undefined] = oBindingInfo; + }, + "data-tooltip" : function(sValue, mSettings) { + // special handling for tooltip (which is an aggregation) + // but can also be applied as property + mSettings["tooltip"] = sValue; + }, + "tooltip" : function(sValue, mSettings, fnClass) { + // TODO: Remove this key / value when deprecation is removed + mSettings["tooltip"] = sValue; + jQuery.sap.log.warning('[Deprecated] Control "' + mSettings.id + '": The attribute "tooltip" is not prefixed with "data-*". Future version of declarative support will only suppport attributes with "data-*" prefix.'); + }, + "class":true, + "style" : true, + "id" : true + }; + + + /** + * Enhances the given DOM element by parsing the Control and Elements info and creating + * the SAPUI5 controls for them. + * + * @param {Element} oElement the DOM element to compile + * @param {sap.ui.core.mvc.HTMLView} [oView] The view instance to use + * @param {boolean} [isRecursive] Whether the call of the function is recursive. + * @public + */ + DeclarativeSupport.compile = function(oElement, oView, isRecursive) { + // Find all defined classes + var that = this; + jQuery(oElement).find("[data-sap-ui-type]").filter(function() { + return jQuery(this).parents("[data-sap-ui-type]").length === 0; + }).each(function() { + that._compile(this, oView, isRecursive); + }); + }; + + + + /** + * Enhances the given element by parsing the attributes and child elements. + * + * @param {Element} oElement the element to compile + * @param {sap.ui.core.mvc.HTMLView} [oView] The view instance to use + * @param {boolean} [isRecursive] Whether the call of the function is recursive. + * @private + */ + DeclarativeSupport._compile = function(oElement, oView, isRecursive) { + var $element = jQuery(oElement); + + var sType = $element.attr("data-sap-ui-type"); + var aControls = []; + var bIsUIArea = sType === "sap.ui.core.UIArea"; + + if (bIsUIArea) { + // use a UIArea / better performance when rendering multiple controls + // parse and create the controls / children of element + var that = this; + $element.children().each(function() { + var oControl = that._createControl(this, oView); + if (oControl) { + aControls.push(oControl); + } + }); + } else { + var oControl = this._createControl(oElement, oView); + if (oControl) { + aControls.push(oControl); + } + } + + // remove the old content + $element.empty(); + + // in case of the root control is not a UIArea we remove all HTML attributes + // for a UIArea we remove only the data HTML attributes and keep the others + // also marks the control as parsed (by removing data-sap-ui-type) + var aAttr = []; + jQuery.each(oElement.attributes, function(iIndex, oAttr) { + var sName = oAttr.name; + if (!bIsUIArea || bIsUIArea && /^data-/g.test(sName.toLowerCase())) { + aAttr.push(sName); + } + }); + if (aAttr.length > 0) { + $element.removeAttr(aAttr.join(" ")); + } + + // add the controls + jQuery.each(aControls, function(vKey, oControl) { + if (oControl instanceof Control) { + if (oView && !isRecursive) { + oView.addContent(oControl); + } else { + oControl.placeAt(oElement); + if (oView) { + // Remember the unassociated control so that it can be destroyed on exit of the view + oView.connectControl(oControl); + } + } + } + }); + }; + + + + /** + * Parses a given DOM ref and converts it into a Control. + * @param {Element} oElement reference to a DOM element + * @param {sap.ui.core.mvc.HTMLView} [oView] The view instance to use. + * @return {sap.ui.core.Control} reference to a Control + * @private + */ + DeclarativeSupport._createControl = function(oElement, oView) { + var $element = jQuery(oElement); + + var oControl = null; + + var sType = $element.attr("data-sap-ui-type"); + if (sType) { + jQuery.sap.require(sType); // make sure fnClass.getMatadata() is available + var fnClass = jQuery.sap.getObject(sType); + jQuery.sap.assert(typeof fnClass !== "undefined", "Class not found: " + sType); + + + var mSettings = {}; + mSettings.id = this._getId($element, oView); + this._addSettingsForAttributes(mSettings, fnClass, oElement, oView); + this._addSettingsForAggregations(mSettings, fnClass, oElement, oView); + + var oControl; + if (View.prototype.isPrototypeOf(fnClass.prototype) && typeof fnClass._sType === "string") { + // for views having a factory function defined we use the factory function! + oControl = sap.ui.view(mSettings, undefined, fnClass._sType); + } else { + oControl = new fnClass(mSettings); + } + + if (oElement.className) { + oControl.addStyleClass(oElement.className); + } + + // mark control as parsed + $element.removeAttr("data-sap-ui-type"); + + } else { + oControl = this._createHtmlControl(oElement, oView); + } + + return oControl; + }; + + + /** + * Parses a given DOM ref and converts it into a HTMLControl. + * @param {Element} oElement reference to a DOM element + * @param {sap.ui.core.mvc.HTMLView} [oView] The view instance to use. + * @return {sap.ui.core.HTML} reference to a Control + * @private + */ + DeclarativeSupport._createHtmlControl = function(oElement, oView) { + //include HTML content + var oHTML = new HTML(); + oHTML.setDOMContent(oElement); + // check for declarative content + this.compile(oElement, oView, true); + return oHTML; + }; + + + /** + * Adds all defined attributes to the settings object of a control. + * + * @param {object} mSettings reference of the settings of the control + * @param {function} fnClass reference to a Class + * @param {Element} oElement reference to a DOM element + * @param {sap.ui.core.mvc.HTMLView} [oView] The view instance to use. + * @return {object} the settings of the control. + * @throws {Error} if an attribute is not supported + * @private + */ + DeclarativeSupport._addSettingsForAttributes = function(mSettings, fnClass, oElement, oView) { + var that = this; + var oSpecialAttributes = DeclarativeSupport.attributes; + var fnBindingParser = ManagedObject.bindingParser; + var aCustomData = []; + var reCustomData = /^data-custom-data:(.+)/i; + + jQuery.each(oElement.attributes, function(iIndex, oAttr) { + var sName = oAttr.name; + var sValue = oAttr.value; + + if (!reCustomData.test(sName)) { + + // no custom data attribute: + + if (typeof oSpecialAttributes[sName] === "undefined") { + sName = that.convertAttributeToSettingName(sName, mSettings.id); + var oProperty = that._getProperty(fnClass, sName); + if (oProperty) { + var oBindingInfo = fnBindingParser(sValue, oView && oView.getController(), true ); + if ( oBindingInfo && typeof oBindingInfo === "object" ) { + mSettings[sName] = oBindingInfo; + } else { + mSettings[sName] = that.convertValueToType(that.getPropertyDataType(oProperty), oBindingInfo || sValue); + } + } else if (that._getAssociation(fnClass, sName)) { + var oAssociation = that._getAssociation(fnClass, sName); + if (oAssociation.multiple) { + // we support "," and " " to split between IDs + sValue = sValue.replace(/\s*,\s*|\s+/g, ","); // normalize strings: "id1 , id2 id3" to "id1,id2,id3" + var aId = sValue.split(","); // split array for all "," + jQuery.each(aId, function(iIndex, sId) { + aId[iIndex] = oView ? oView.createId(sId) : sId; + }); + mSettings[sName] = aId; + } else { + mSettings[sName] = oView ? oView.createId(sValue) : sValue; // use the value as ID + } + } else if (that._getAggregation(fnClass, sName)) { + var oAggregation = that._getAggregation(fnClass, sName); + if (oAggregation.multiple) { + var oBindingInfo = fnBindingParser(sValue, oView && oView.getController()); + if (oBindingInfo) { + mSettings[sName] = oBindingInfo; + } else { + throw new Error("Aggregation " + sName + " with cardinality 0..n only allows binding paths as attribute value"); + } + } else if (oAggregation.altTypes) { + var oBindingInfo = fnBindingParser(sValue, oView && oView.getController(), true); + if ( oBindingInfo && typeof oBindingInfo === "object" ) { + mSettings[sName] = oBindingInfo; + } else { + mSettings[sName] = that.convertValueToType(oAggregation.altTypes[0], oBindingInfo || sValue); + } + } else { + throw new Error("Aggregation " + sName + " not supported"); + } + } else if (that._getEvent(fnClass, sName)) { + var oController = oView && (oView._oContainingView || oView).getController(); + var vHandler = View._resolveEventHandler(sValue, oController); + if ( vHandler ) { + mSettings[sName] = vHandler; + } else { + throw new Error('Control "' + mSettings.id + '": The function "' + sValue + '" for the event "' + sName + '" is not defined'); + } + } else { + jQuery.sap.assert((sName === "id"), "DeclarativeSupport encountered unknown setting '" + sName + "' for class '" + fnClass.getMetadata().getName() + "' (value:'" + sValue + "')"); + } + } else if (typeof oSpecialAttributes[sName] === "function") { + oSpecialAttributes[sName](sValue, mSettings, fnClass); + } + + } else { + + // custom data handling: + + // determine the key of the custom data entry + sName = jQuery.sap.camelCase(reCustomData.exec(sName)[1]); + + // create a binding info object if necessary + var oBindingInfo = fnBindingParser(sValue, oView && oView.getController()); + + // create the custom data object + aCustomData.push(new CustomData({ + key: sName, + value: oBindingInfo || sValue + })); + + } + + }); + + if (aCustomData.length > 0) { + mSettings.customData = aCustomData; + } + + return mSettings; + }; + + + /** + * Adds all defined aggregations to the settings object of a control. + * + * @param {object} mSettings reference of the settings of the control + * @param {function} fnClass reference to a Class + * @param {Element} oElement reference to a DOM element + * @param {sap.ui.core.mvc.HTMLView} [oView] The view instance to use. + * @return {object} the settings of the control. + * @private + */ + DeclarativeSupport._addSettingsForAggregations = function(mSettings, fnClass, oElement, oView) { + var $element = jQuery(oElement); + + var sDefaultAggregation = this._getDefaultAggregation(fnClass, oElement); + + var that = this; + var oAggregations = fnClass.getMetadata().getAllAggregations(); + + $element.children().each(function() { + // check for an aggregation tag of in case of a sepcifiying the + // aggregration on the parent control this will be used in case + // of no meta tag was found + var $child = jQuery(this); + var sAggregation = $child.attr("data-sap-ui-aggregation"); + var sType = $child.attr("data-sap-ui-type"); + + var bUseDefault = false; + if (!sAggregation) { + bUseDefault = true; + sAggregation = sDefaultAggregation; + } + + // add the child to the aggregation + if (sAggregation && oAggregations[sAggregation]) { + var bMultiple = oAggregations[sAggregation].multiple; + + var addControl = function(oChildElement) { + var oControl = that._createControl(oChildElement, oView); + if (oControl) { + if (bMultiple) { + // 1..n AGGREGATION + if (!mSettings[sAggregation]) { + mSettings[sAggregation] = []; + } + if ( typeof mSettings[sAggregation].path === "string" ) { + jQuery.sap.assert(!mSettings[sAggregation].template, "list bindings support only a single template object"); + mSettings[sAggregation].template = oControl; + } else { + mSettings[sAggregation].push(oControl); + } + + } else { + // 1..1 AGGREGATION + mSettings[sAggregation] = oControl; + } + } + }; + + if (bUseDefault || (sType && !bUseDefault)) { + addControl(this); + } else { + $child.children().each(function() { + addControl(this); + }); + } + } + + $child.removeAttr("data-sap-ui-aggregation"); + $child.removeAttr("data-sap-ui-type"); + }); + return mSettings; + + }; + + + /** + * Returns the id of the element. + * + * @param {Element} oElement reference to a DOM element + * @param {sap.ui.core.mvc.HTMLView} [oView] The view instance to use. + * @return {string} the id of the element + * @private + */ + DeclarativeSupport._getId = function(oElement, oView) { + var $element = jQuery(oElement); + var sId = $element.attr("id"); + if (sId) { + if (oView) { + sId = oView.createId(sId); + // Remember the id for the HTMLView rendering method. This is needed to replace the placeholder div with the actual + // control HTML (Do not use ID as Firefox even finds detached IDs) + $element.attr("data-sap-ui-id", sId); + } + // in case of having an ID retrieve it and clear it in the placeholder + // DOM element to avoid double IDs + $element.attr("id", ""); + } + return sId; + }; + + + /** + * Returns the property of a given class and property name. + * + * @param {function} fnClass reference to a Class + * @param {string} sName the name of the property + * @return {object} reference to the property object + * @private + */ + DeclarativeSupport._getProperty = function(fnClass, sName) { + return fnClass.getMetadata().getProperty(sName); + }; + + + /** + * Converts a given value to the right property type. + * + * @param {object} oType the type of the value + * @param {string} sValue the value to convert + * @return {string} the converted value + * @private + */ + DeclarativeSupport.convertValueToType = function(oType, sValue) { + if (oType instanceof DataType) { + sValue = oType.parseValue(sValue); + } + // else return original sValue (e.g. for enums) + // Note: to avoid double resolution of binding expressions, we have to escape string values once again + return typeof sValue === "string" ? ManagedObject.bindingParser.escape(sValue) : sValue; + }; + + + /** + * Returns the data type object for a certain property. + * + * @param {object} oProperty reference to the property object + * @return {object} the type of the property + * @throws {Error} if no type for the property is found + * @private + */ + DeclarativeSupport.getPropertyDataType = function(oProperty) { + var oType = DataType.getType(oProperty.type); + if (!oType) { + throw new Error("Property " + oProperty.name + " has no known type"); + } + return oType; + }; + + + + /** + * Returns the settings name for a given html attribute (converts data-my-setting to mySetting) + * + * @param {string} sAttribute the name of the attribute + * @param {string} sId the id of the control + * @param {boolean} bDeprecationWarning whether to show a deprecation warning or not + * @return {string} the settings name + * @private + */ + DeclarativeSupport.convertAttributeToSettingName = function(sAttribute, sId, bDeprecationWarning) { + if (sAttribute.indexOf("data-") === 0) { + sAttribute = sAttribute.substr(5); + } else if (bDeprecationWarning) { + jQuery.sap.log.warning('[Deprecated] Control "' + sId + '": The attribute "' + sAttribute + '" is not prefixed with "data-*". Future version of declarative support will only suppport attributes with "data-*" prefix.'); + } else { + throw new Error('Control "' + sId + '": The attribute "' + sAttribute + '" is not prefixed with "data-*".'); + } + return jQuery.sap.camelCase(sAttribute); + }; + + + /** + * Returns the association of a given class and association name. + * + * @param {function} fnClass reference to a Class + * @param {string} sName the name of the association + * @return {object} reference to the association object + * @private + */ + DeclarativeSupport._getAssociation = function(fnClass, sName) { + return fnClass.getMetadata().getAssociation(sName); + }; + + /** + * Returns the aggregations of a given class and aggregation name. + * + * @param {function} fnClass reference to a Class + * @param {string} sName the name of the association + * @return {object} reference to the association object + * @private + */ + DeclarativeSupport._getAggregation = function(fnClass, sName) { + return fnClass.getMetadata().getAggregation(sName); + }; + + + /** + * Returns the event of a given class and event name. + * + * @param {function} fnClass reference to a Class + * @param {string} sName the name of the event + * @return {object} reference to the event object + * @private + */ + DeclarativeSupport._getEvent = function(fnClass, sName) { + return fnClass.getMetadata().getEvent(sName); + }; + + + /** + * Returns the default aggregation of the control. + * + * @param {function} fnClass reference to a Class + * @param {Element} oElement reference to a DOM element + * @return {string} the default aggregation + * @private + */ + DeclarativeSupport._getDefaultAggregation = function(fnClass, oElement) { + var $element = jQuery(oElement); + var sDefaultAggregation = $element.attr("data-sap-ui-default-aggregation") || fnClass.getMetadata().getDefaultAggregationName(); + $element.removeAttr("data-sap-ui-default-aggregation"); + return sDefaultAggregation; + }; + + + return DeclarativeSupport; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/DeclarativeSupport.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/DeclarativeSupport.js new file mode 100644 index 0000000..157788b --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/DeclarativeSupport.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/base/DataType','sap/ui/base/ManagedObject','./Control','./CustomData','./HTML','./mvc/View'],function(q,D,M,C,a,H,V){"use strict";var b={};b.attributes={"data-sap-ui-type":true,"data-sap-ui-id":true,"data-sap-ui-aggregation":true,"data-sap-ui-default-aggregation":true,"data-sap-ui-binding":function(v,s){var B=M.bindingParser(v);s.objectBindings=s.objectBindings||{};s.objectBindings[B.model||undefined]=B;},"data-tooltip":function(v,s){s["tooltip"]=v;},"tooltip":function(v,s,c){s["tooltip"]=v;q.sap.log.warning('[Deprecated] Control "'+s.id+'": The attribute "tooltip" is not prefixed with "data-*". Future version of declarative support will only suppport attributes with "data-*" prefix.');},"class":true,"style":true,"id":true};b.compile=function(e,v,i){var t=this;q(e).find("[data-sap-ui-type]").filter(function(){return q(this).parents("[data-sap-ui-type]").length===0;}).each(function(){t._compile(this,v,i);});};b._compile=function(e,v,i){var $=q(e);var t=$.attr("data-sap-ui-type");var c=[];var I=t==="sap.ui.core.UIArea";if(I){var d=this;$.children().each(function(){var o=d._createControl(this,v);if(o){c.push(o);}});}else{var o=this._createControl(e,v);if(o){c.push(o);}}$.empty();var A=[];q.each(e.attributes,function(f,g){var n=g.name;if(!I||I&&/^data-/g.test(n.toLowerCase())){A.push(n);}});if(A.length>0){$.removeAttr(A.join(" "));}q.each(c,function(k,o){if(o instanceof C){if(v&&!i){v.addContent(o);}else{o.placeAt(e);if(v){v.connectControl(o);}}}});};b._createControl=function(e,v){var $=q(e);var c=null;var t=$.attr("data-sap-ui-type");if(t){q.sap.require(t);var f=q.sap.getObject(t);var s={};s.id=this._getId($,v);this._addSettingsForAttributes(s,f,e,v);this._addSettingsForAggregations(s,f,e,v);var c;if(V.prototype.isPrototypeOf(f.prototype)&&typeof f._sType==="string"){c=sap.ui.view(s,undefined,f._sType);}else{c=new f(s);}if(e.className){c.addStyleClass(e.className);}$.removeAttr("data-sap-ui-type");}else{c=this._createHtmlControl(e,v);}return c;};b._createHtmlControl=function(e,v){var h=new H();h.setDOMContent(e);this.compile(e,v,true);return h;};b._addSettingsForAttributes=function(s,c,e,v){var t=this;var S=b.attributes;var B=M.bindingParser;var d=[];var r=/^data-custom-data:(.+)/i;q.each(e.attributes,function(i,A){var n=A.name;var f=A.value;if(!r.test(n)){if(typeof S[n]==="undefined"){n=t.convertAttributeToSettingName(n,s.id);var p=t._getProperty(c,n);if(p){var o=B(f,v&&v.getController(),true);if(o&&typeof o==="object"){s[n]=o;}else{s[n]=t.convertValueToType(t.getPropertyDataType(p),o||f);}}else if(t._getAssociation(c,n)){var g=t._getAssociation(c,n);if(g.multiple){f=f.replace(/\s*,\s*|\s+/g,",");var I=f.split(",");q.each(I,function(i,l){I[i]=v?v.createId(l):l;});s[n]=I;}else{s[n]=v?v.createId(f):f;}}else if(t._getAggregation(c,n)){var h=t._getAggregation(c,n);if(h.multiple){var o=B(f,v&&v.getController());if(o){s[n]=o;}else{throw new Error("Aggregation "+n+" with cardinality 0..n only allows binding paths as attribute value");}}else if(h.altTypes){var o=B(f,v&&v.getController(),true);if(o&&typeof o==="object"){s[n]=o;}else{s[n]=t.convertValueToType(h.altTypes[0],o||f);}}else{throw new Error("Aggregation "+n+" not supported");}}else if(t._getEvent(c,n)){var j=v&&(v._oContainingView||v).getController();var k=V._resolveEventHandler(f,j);if(k){s[n]=k;}else{throw new Error('Control "'+s.id+'": The function "'+f+'" for the event "'+n+'" is not defined');}}else{}}else if(typeof S[n]==="function"){S[n](f,s,c);}}else{n=q.sap.camelCase(r.exec(n)[1]);var o=B(f,v&&v.getController());d.push(new a({key:n,value:o||f}));}});if(d.length>0){s.customData=d;}return s;};b._addSettingsForAggregations=function(s,c,e,v){var $=q(e);var d=this._getDefaultAggregation(c,e);var t=this;var A=c.getMetadata().getAllAggregations();$.children().each(function(){var f=q(this);var g=f.attr("data-sap-ui-aggregation");var T=f.attr("data-sap-ui-type");var u=false;if(!g){u=true;g=d;}if(g&&A[g]){var m=A[g].multiple;var h=function(o){var i=t._createControl(o,v);if(i){if(m){if(!s[g]){s[g]=[];}if(typeof s[g].path==="string"){s[g].template=i;}else{s[g].push(i);}}else{s[g]=i;}}};if(u||(T&&!u)){h(this);}else{f.children().each(function(){h(this);});}}f.removeAttr("data-sap-ui-aggregation");f.removeAttr("data-sap-ui-type");});return s;};b._getId=function(e,v){var $=q(e);var i=$.attr("id");if(i){if(v){i=v.createId(i);$.attr("data-sap-ui-id",i);}$.attr("id","");}return i;};b._getProperty=function(c,n){return c.getMetadata().getProperty(n);};b.convertValueToType=function(t,v){if(t instanceof D){v=t.parseValue(v);}return typeof v==="string"?M.bindingParser.escape(v):v;};b.getPropertyDataType=function(p){var t=D.getType(p.type);if(!t){throw new Error("Property "+p.name+" has no known type");}return t;};b.convertAttributeToSettingName=function(A,i,d){if(A.indexOf("data-")===0){A=A.substr(5);}else if(d){q.sap.log.warning('[Deprecated] Control "'+i+'": The attribute "'+A+'" is not prefixed with "data-*". Future version of declarative support will only suppport attributes with "data-*" prefix.');}else{throw new Error('Control "'+i+'": The attribute "'+A+'" is not prefixed with "data-*".');}return q.sap.camelCase(A);};b._getAssociation=function(c,n){return c.getMetadata().getAssociation(n);};b._getAggregation=function(c,n){return c.getMetadata().getAggregation(n);};b._getEvent=function(c,n){return c.getMetadata().getEvent(n);};b._getDefaultAggregation=function(c,e){var $=q(e);var d=$.attr("data-sap-ui-default-aggregation")||c.getMetadata().getDefaultAggregationName();$.removeAttr("data-sap-ui-default-aggregation");return d;};return b;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/EnabledPropagator-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/EnabledPropagator-dbg.js new file mode 100644 index 0000000..0224c60 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/EnabledPropagator-dbg.js @@ -0,0 +1,90 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides helper sap.ui.core.EnabledPropagator +sap.ui.define(['jquery.sap.global', './Control'], + function(jQuery, Control) { + "use strict"; + + + /** + * @class Helper Class for enhancement of a Control with propagation of enabled property. + * + * This constructor should be applied to the prototype of a control + * + * Example: + * + * sap.ui.core.EnabledPropagator.call(Some-Control.prototype, Default-value, ...); + * + * e.g. + * + * sap.ui.core.EnabledPropagator.call(sap.ui.commons.Button.prototype); + * + * + * @author Daniel Brinkmann + * @version 1.28.5 + * @param {boolean} [bDefault=true] the value that should be used as default value for the enhancement of the control. + * @param {boolean} [bLegacy=false] whether the introduced property should use the old name 'Enabled' + * @public + * @alias sap.ui.core.EnabledPropagator + */ + var EnabledPropagator = function(bDefault, bLegacy) { + // Ensure only Controls are enhanced + if (!(this instanceof Control)) { + throw new Error("EnabledPropagator only supports subclasses of Control"); // TODO clarify why. Daniel has added this check, but it is not obvious why? + } + + // default for the default + if ( bDefault === undefined ) { + bDefault = true; + } + + // helper to find a parent that has a getEnabled() method + function findParentWithEnabled(/**sap.ui.core.Control*/oControl) { + var oParent = oControl.getParent(); + while (oParent && !oParent.getEnabled && oParent.getParent) { + oParent = oParent.getParent(); + } + return oParent; + } + + // Ensure not to overwrite existing implementations. + if (this.getEnabled === undefined) { + // set some default + this.getEnabled = function() { + var oParent = findParentWithEnabled(this); + return (oParent && oParent.getEnabled && !oParent.getEnabled()) ? false : this.getProperty("enabled"); + }; + + if ( bLegacy ) { + // add Enabled with old spelling for compatibility reasons. Shares the getter and setter with new spelling. + this.getMetadata().addProperty("Enabled", {type : "boolean", group : "Behavior", defaultValue : !!bDefault}); + } + this.getMetadata().addProperty("enabled", {type : "boolean", group : "Behavior", defaultValue : !!bDefault}); + this.getMetadata().addPublicMethods('getEnabled'); + + } else { + // + var fnOld = this.getEnabled; + this.getEnabled = function() { + var oParent = findParentWithEnabled(this); + return (oParent && oParent.getEnabled && !oParent.getEnabled()) ? false : fnOld.apply(this); + }; + } + + if (this.setEnabled === undefined) { + this.setEnabled = function(bEnabled) { + this.setProperty("enabled", bEnabled); + }; + + this.getMetadata().addPublicMethods('setEnabled'); + } + }; + + + return EnabledPropagator; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/EnabledPropagator.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/EnabledPropagator.js new file mode 100644 index 0000000..ef0e2b1 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/EnabledPropagator.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Control'],function(q,C){"use strict";var E=function(d,l){if(!(this instanceof C)){throw new Error("EnabledPropagator only supports subclasses of Control");}if(d===undefined){d=true;}function f(c){var p=c.getParent();while(p&&!p.getEnabled&&p.getParent){p=p.getParent();}return p;}if(this.getEnabled===undefined){this.getEnabled=function(){var p=f(this);return(p&&p.getEnabled&&!p.getEnabled())?false:this.getProperty("enabled");};if(l){this.getMetadata().addProperty("Enabled",{type:"boolean",group:"Behavior",defaultValue:!!d});}this.getMetadata().addProperty("enabled",{type:"boolean",group:"Behavior",defaultValue:!!d});this.getMetadata().addPublicMethods('getEnabled');}else{var o=this.getEnabled;this.getEnabled=function(){var p=f(this);return(p&&p.getEnabled&&!p.getEnabled())?false:o.apply(this);};}if(this.setEnabled===undefined){this.setEnabled=function(e){this.setProperty("enabled",e);};this.getMetadata().addPublicMethods('setEnabled');}};return E;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/EventBus-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/EventBus-dbg.js new file mode 100644 index 0000000..f751ae1 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/EventBus-dbg.js @@ -0,0 +1,219 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.core.EventBus +sap.ui.define(['jquery.sap.global', 'sap/ui/base/EventProvider'], + function(jQuery, EventProvider) { + "use strict"; + + + + + /** + * Creates an instance of EventBus. + * @class Provides eventing facilities, so subscribe, unsubscribe and publish events. + * + * @extends sap.ui.base.Object + * @author SAP SE + * @version 1.28.5 + * @constructor + * @public + * @since 1.8.0 + * @alias sap.ui.core.EventBus + */ + var EventBus = sap.ui.base.Object.extend("sap.ui.core.EventBus", { + + constructor : function() { + sap.ui.base.Object.apply(this); + this._mChannels = {}; + this._defaultChannel = new EventProvider(); + } + + }); + + /** + * Adds an event registration for the given object and given event name. + * + * The channel "sap.ui" is reserved by th UI5 framework. An application might listen to events on this channel but is not allowed to publish own events there. + * + * @param {string} + * [sChannelId] The channel of the event to subscribe for. If not given the default channel is used. + * @param {string} + * sEventId The identifier of the event to subscribe for + * @param {function} + * fnFunction The function to call, when the event occurs. This function will be called on the + * oListener-instance (if present) or on the event bus-instance. This functions might have the following parameters: sChannelId, sEventId, oData. + * @param {object} + * [oListener] The object, that wants to be notified, when the event occurs + * @return {sap.ui.core.EventBus} Returns this to allow method chaining + * @public + */ + EventBus.prototype.subscribe = function(sChannelId, sEventId, fnFunction, oListener) { + if (typeof (sEventId) === "function") { + oListener = fnFunction; + fnFunction = sEventId; + sEventId = sChannelId; + sChannelId = null; + } + + jQuery.sap.assert(!sChannelId || typeof (sChannelId) === "string", "EventBus.subscribe: sChannelId must be empty or a non-empty string"); + jQuery.sap.assert(typeof (sEventId) === "string" && sEventId, "EventBus.subscribe: sEventId must be a non-empty string"); + jQuery.sap.assert(typeof (fnFunction) === "function", "EventBus.subscribe: fnFunction must be a function"); + jQuery.sap.assert(!oListener || typeof (oListener) === "object", "EventBus.subscribe: oListener must be empty or an object"); + + var oChannel = getOrCreateChannel(this, sChannelId); + oChannel.attachEvent(sEventId, fnFunction, oListener); + return this; + }; + + /** + * Removes an event registration for the given object and given event name. + * + * The passed parameters must match those used for registration with {@link #subscribe } beforehand! + * + * @param {string} + * [sChannelId] The channel of the event to unsubscribe from. If not given the default channel is used. + * @param {string} + * sEventId The identifier of the event to unsubscribe from + * @param {function} + * fnFunction The function to call, when the event occurs. + * @param {object} + * [oListener] The object, that wants to be notified, when the event occurs + * @return {sap.ui.core.EventBus} Returns this to allow method chaining + * @public + */ + EventBus.prototype.unsubscribe = function(sChannelId, sEventId, fnFunction, oListener) { + if (typeof (sEventId) === "function") { + oListener = fnFunction; + fnFunction = sEventId; + sEventId = sChannelId; + sChannelId = null; + } + + jQuery.sap.assert(!sChannelId || typeof (sChannelId) === "string", "EventBus.unsubscribe: sChannelId must be empty or a non-empty string"); + jQuery.sap.assert(typeof (sEventId) === "string" && sEventId, "EventBus.unsubscribe: sEventId must be a non-empty string"); + jQuery.sap.assert(typeof (fnFunction) === "function", "EventBus.unsubscribe: fnFunction must be a function"); + jQuery.sap.assert(!oListener || typeof (oListener) === "object", "EventBus.unsubscribe: oListener must be empty or an object"); + + var oChannel = getChannel(this, sChannelId); + if (!oChannel) { + return this; + } + + oChannel.detachEvent(sEventId, fnFunction, oListener); + if (oChannel != this._defaultChannel) { // Check whether Channel is unused + var mEvents = EventProvider.getEventList(oChannel); + var bIsEmpty = true; + for (var sId in mEvents) { + if (oChannel.hasListeners(sId)) { + bIsEmpty = false; + break; + } + } + if (bIsEmpty) { + delete this._mChannels[sChannelId]; + } + } + + return this; + }; + + /** + * Fires the given event and notifies all listeners. Listeners must not change the content of the event. + * + * The channel "sap.ui" is reserved by the UI5 framework. An application might listen to events + * on this channel but is not allowed to publish own events there. + * + * @param {string} + * [sChannelId] The channel of the event; if not given the default channel is used + * @param {string} + * sEventId The identifier of the event + * @param {object} + * [oData] the parameter map + * @public + */ + EventBus.prototype.publish = function(sChannelId, sEventId, oData) { + + if (arguments.length == 1) { //sEventId + oData = null; + sEventId = sChannelId; + sChannelId = null; + } else if (arguments.length == 2) { //sChannelId + sEventId || sEventId + oData + if (typeof (sEventId) != "string") { + oData = sEventId; + sEventId = sChannelId; + sChannelId = null; + } + } + + oData = oData ? oData : {}; + + jQuery.sap.assert(!sChannelId || typeof (sChannelId) === "string", "EventBus.publish: sChannelId must be empty or a non-empty string"); + jQuery.sap.assert(typeof (sEventId) === "string" && sEventId, "EventBus.publish: sEventId must be a non-empty string"); + jQuery.sap.assert(typeof (oData) === "object", "EventBus.publish: oData must be an object"); + + var oChannel = getChannel(this, sChannelId); + if (!oChannel) { + return; + } + + //see sap.ui.base.EventProvider.prototype.fireEvent + var aEventListeners = EventProvider.getEventList(oChannel)[sEventId]; + if (aEventListeners && jQuery.isArray(aEventListeners)) { + // this ensures no 'concurrent modification exception' occurs (e.g. an event listener deregisters itself). + aEventListeners = aEventListeners.slice(); + var oInfo; + for (var i = 0, iL = aEventListeners.length; i < iL; i++) { + oInfo = aEventListeners[i]; + oInfo.fFunction.call(oInfo.oListener || this, sChannelId, sEventId, oData); + } + } + }; + + /** + * @see sap.ui.base.Object#getInterface + * @public + */ + EventBus.prototype.getInterface = function() { + return this; + }; + + /** + * @see sap.ui.base.Object#destroy + * @public + */ + EventBus.prototype.destroy = function() { + this._defaultChannel.destroy(); + for (var channel in this._mChannels) { + this._mChannels[channel].destroy(); + } + this._mChannels = {}; + sap.ui.base.Object.prototype.destroy.apply(this, arguments); + }; + + + function getChannel(oEventBus, sChannelId){ + if (!sChannelId) { + return oEventBus._defaultChannel; + } + return oEventBus._mChannels[sChannelId]; + } + + function getOrCreateChannel(oEventBus, sChannelId){ + var oChannel = getChannel(oEventBus, sChannelId); + if (!oChannel && sChannelId) { + oEventBus._mChannels[sChannelId] = new EventProvider(); + oChannel = oEventBus._mChannels[sChannelId]; + } + return oChannel; + } + + + + + return EventBus; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/EventBus.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/EventBus.js new file mode 100644 index 0000000..beabcb6 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/EventBus.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/base/EventProvider'],function(q,E){"use strict";var a=sap.ui.base.Object.extend("sap.ui.core.EventBus",{constructor:function(){sap.ui.base.Object.apply(this);this._mChannels={};this._defaultChannel=new E();}});a.prototype.subscribe=function(c,e,f,l){if(typeof(e)==="function"){l=f;f=e;e=c;c=null;}var C=b(this,c);C.attachEvent(e,f,l);return this;};a.prototype.unsubscribe=function(c,e,f,l){if(typeof(e)==="function"){l=f;f=e;e=c;c=null;}var C=g(this,c);if(!C){return this;}C.detachEvent(e,f,l);if(C!=this._defaultChannel){var m=E.getEventList(C);var i=true;for(var I in m){if(C.hasListeners(I)){i=false;break;}}if(i){delete this._mChannels[c];}}return this;};a.prototype.publish=function(c,e,d){if(arguments.length==1){d=null;e=c;c=null;}else if(arguments.length==2){if(typeof(e)!="string"){d=e;e=c;c=null;}}d=d?d:{};var C=g(this,c);if(!C){return;}var f=E.getEventList(C)[e];if(f&&q.isArray(f)){f=f.slice();var I;for(var i=0,l=f.length;i= 3) { + // must be plain instantiation mode: ID+Name[+Controller] + return sap.ui.fragment({id: sName, fragmentName: oFragmentDefinition, type: "JS"}, arguments[2]); + } else { + jQuery.sap.log.error("sap.ui.jsfragment() was called with wrong parameter set: " + sName + " + " + oFragmentDefinition); + } + } + }; + + + /** + * Instantiates an HTML-based Fragment. + * + * To instantiate a Fragment, call this method as: + * sap.ui.htmlfragment([sId], sFragmentName, [oController]); + * The Fragment instance ID is optional (generated if not given) and will be used as prefix for the ID of all + * contained controls. The sFragmentName must correspond to an HTML Fragment which can be loaded + * via the module system (fragmentName + ".fragment.html") and which defines the Fragment. + * If oController is given, the methods referenced in the Fragment will be called on this controller. + * Note that Fragments may require a Controller to be given and certain methods to be available. + * + * + * Advanced usage: + * To instantiate a Fragment and optionally directly give the HTML definition instead of loading it from a file, + * call this method as: + * sap.ui.htmlfragment(oFragmentConfig, [oController]); + * The oFragmentConfig object can have a either a "fragmentName" or a "fragmentContent" property. + * fragmentContent is optional and can hold the Fragment definition as XML string; if not + * given, fragmentName must be given and the Fragment content definition is loaded by the module system. + * Again, if oController is given, the methods referenced in the Fragment will be called on this controller. + * + * @param {string} [sId] id of the newly created Fragment + * @param {string | object} vFragment name of the Fragment (or Fragment configuration as described above, in this case no sId may be given. Instead give the id inside the config object, if desired.) + * @param {sap.ui.core.mvc.Controller} [oController] a Controller to be used for event handlers in the Fragment + * @public + * @static + * @return {sap.ui.core.Control|sap.ui.core.Control[]} the root Control(s) of the created Fragment instance + */ + sap.ui.htmlfragment = function(sId, vFragment, oController) { + + if (typeof (sId) === "string") { // basic call + if (typeof (vFragment) === "string") { // with ID + return sap.ui.fragment({fragmentName: vFragment, sId: sId, type: "HTML"}, oController); + + } else { // no ID, sId is actually the name and vFragment the optional Controller + return sap.ui.fragment(sId, "HTML", vFragment); + } + } else { // advanced call + sId.type = "HTML"; + return sap.ui.fragment(sId, vFragment); // second parameter "vFragment" is the optional Controller + } + }; + + + + + // ### FRAGMENT TYPES ### + + + // ### XML Fragments ### + + Fragment.registerType("XML" , { + init: function(mSettings) { + // use specified content or load the content definition + if (mSettings.fragmentContent) { + if (typeof (mSettings.fragmentContent) === "string") { + this._xContent = jQuery.parseXML(mSettings.fragmentContent).documentElement; + } else { + this._xContent = mSettings.fragmentContent; + } + } else { + this._xContent = XMLTemplateProcessor.loadTemplate(mSettings.fragmentName, "fragment"); + } + + this._oContainingView = this._sExplicitId ? this : (mSettings.containingView || this); + if ((this._oContainingView === this) ) { + this._oContainingView.oController = (mSettings.containingView && mSettings.containingView.oController) || mSettings.oController; + } + + var that = this; + // unset any preprocessors (e.g. from an enclosing JSON view) + ManagedObject.runWithPreprocessors(function() { + // parse the XML tree + + //var xmlNode = that._xContent; + // if sub ID is given, find the node and parse it + // TODO: for sub-fragments if () { + // xmlNode = jQuery(that._xContent).find("# ") + //} + that._aContent = XMLTemplateProcessor.parseTemplate(that._xContent, that); + }); + } + }); + + + + // ### JS Fragments ### + + Fragment.registerType("JS", { + init: function(mSettings) { + /*** require fragment definition if not yet done... ***/ + if (!mRegistry[mSettings.fragmentName]) { + jQuery.sap.require({modName: mSettings.fragmentName, type: "fragment"}); + } + /*** Step 2: extend() ***/ + jQuery.extend(this, mRegistry[mSettings.fragmentName]); + + this._oContainingView = mSettings.containingView || this; + + var that = this; + // unset any preprocessors (e.g. from an enclosing JSON view) + ManagedObject.runWithPreprocessors(function() { + + var content = that.createContent(mSettings.oController || that._oContainingView.oController); + that._aContent = []; + that._aContent = that._aContent.concat(content); + + }); + } + }); + + + + // ### HTML Fragments ### + + (function() { + + /** + * The template cache. Templates are only loaded once. + * + * @private + * @static + */ + var _mHTMLTemplates = {}; + + /** + * Loads and returns a template for the given template name. Templates are only loaded once. + * + * @param {string} sTemplateName The name of the template + * @return {string} the template data + * @private + */ + var _getHTMLTemplate = function(sTemplateName) { + var sUrl = jQuery.sap.getModulePath(sTemplateName, ".fragment.html"); + var sHTML = _mHTMLTemplates[sUrl]; + var sResourceName; + + if (!sHTML) { + sResourceName = jQuery.sap.getResourceName(sTemplateName, ".fragment.html"); + sHTML = jQuery.sap.loadResource(sResourceName); + // TODO discuss + // a) why caching at all (more precise: why for HTML fragment although we refused to do it for other view/fragment types - risk of a memory leak!) + // b) why cached via URL instead of via name? Any special scenario in mind? + _mHTMLTemplates[sUrl] = sHTML; + } + return sHTML; + }; + + Fragment.registerType("HTML", { + init: function(mSettings) { + // DeclarativeSupport automatically uses set/getContent, but Fragment should not have such an aggregation and should not be parent of any control + // FIXME: the other aggregation methods are not implemented. They are currently not used, but who knows... + this._aContent = []; + this.getContent = function() { + return this._aContent; + }; + this.addContent = function(oControl) { + this._aContent.push(oControl); + }; + + this._oContainingView = mSettings.containingView || this; + + var vHTML = mSettings.fragmentContent || _getHTMLTemplate(mSettings.fragmentName); + this._oTemplate = document.createElement("div"); + + if (typeof vHTML === "string") { + this._oTemplate.innerHTML = vHTML; + } else { + var oNodeList = vHTML; + var oFragment = document.createDocumentFragment(); + for (var i = 0; i < oNodeList.length;i++) { + oFragment.appendChild(oNodeList.item(i)); + } + this._oTemplate.appendChild(oFragment); + } + + var oMetaElement = this._oTemplate.getElementsByTagName("template")[0]; + var oProperties = this.getMetadata().getAllProperties(); + + if (oMetaElement) { + var that = this; + var DeclarativeSupport = DeclarativeSupport1; + jQuery.each(oMetaElement.attributes, function(iIndex, oAttr) { + var sName = DeclarativeSupport.convertAttributeToSettingName(oAttr.name, that.getId()); + var sValue = oAttr.value; + var oProperty = oProperties[sName]; + if (!mSettings[sName]) { + if (oProperty) { + mSettings[sName] = DeclarativeSupport.convertValueToType(DeclarativeSupport.getPropertyDataType(oProperty),sValue); + } else if (sap.ui.core.mvc.HTMLView._mAllowedSettings[sName]) { + mSettings[sName] = sValue; + } + } + }); + this._oTemplate = oMetaElement; + } + // This is a fix for browsers that support web components + if (this._oTemplate.content) { + var oFragment = this._oTemplate.content; + // Create a new template, as innerHTML would be empty for TemplateElements when the fragment is appended directly + this._oTemplate = document.createElement("div"); + // Make the shadow DOM available in the DOM + this._oTemplate.appendChild(oFragment); + } + + // unset any preprocessors (e.g. from an enclosing HTML view) + var that = this; + ManagedObject.runWithPreprocessors(function() { + DeclarativeSupport1.compile(that._oTemplate, that); + + // FIXME declarative support automatically inject the content into that through "that.addContent()" + var content = that.getContent(); + if (content && content.length === 1) { + that._aContent = [content[0]]; + }// else { + // TODO: error + //} + }); + } + }); + }()); // end of HTML Fragment stuff + + return Fragment; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Fragment.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Fragment.js new file mode 100644 index 0000000..b52cba2 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Fragment.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/base/ManagedObject','./DeclarativeSupport','./XMLTemplateProcessor'],function(q,M,D,X){"use strict";var r={},t={};var F=M.extend("sap.ui.core.Fragment",{metadata:{properties:{type:"string"},specialSettings:{fragmentName:true,fragmentContent:true,containingView:true,oController:true,sId:true}},constructor:function(i,s){M.apply(this,arguments);if(this._aContent&&this._aContent.length==1){return this._aContent[0];}else{return this._aContent;}}});F.registerType=function(T,f){if(!typeof(T)==="string"){q.sap.log.error("Ignoring non-string Fragment type: "+T);return;}if(t[T]){q.sap.log.warning("sap.ui.core.Fragment.registerType(): Fragment type '"+T+"' is already defined. Overriding this type now!");}t[T]=f;};F.prototype._initCompositeSupport=function(s){if(!s){throw new Error("Settings must be set");}if(!(s.fragmentName||s.fragmentContent)){throw new Error("Please provide a fragment name");}if(s.oController){this.oController=s.oController;}this._sExplicitId=s.sId||s.id;this._sFragmentName=s.fragmentName;var f=t[s.type];if(f){f.init.apply(this,[s]);}else{throw new Error("No type for the fragment has been specified: "+s.type);}};F.prototype.getFragmentName=function(){return this._sFragmentName;};F.prototype.getController=function(){return this.oController;};F.byId=function(f,i){if(!(typeof(f)==="string"&&typeof(i)==="string")){q.sap.log.error("sap.ui.core.Fragment.byId: two strings must be given as parameters, but are: "+f+" and "+i);return undefined;}return sap.ui.getCore().byId(f+"--"+i);};F.createId=function(f,i){if(!(typeof(f)==="string"&&typeof(i)==="string")){q.sap.log.error("sap.ui.core.Fragment.createId: two strings must be given as parameters, but are: "+f+" and "+i);return undefined;}return f+"--"+i;};F.prototype.createId=function(i){var a=this._sExplicitId?this._sExplicitId+"--"+i:i;if(this._oContainingView&&this._oContainingView!=this){a=this._oContainingView.createId(a);}return a;};F.prototype.isSubView=function(){return true;};sap.ui.fragment=function(n,T,c){var s={};if(typeof(n)==="string"){s.fragmentName=n;s.oController=c;s.type=T;}else if(typeof(n)==="object"){s=n;if(T){s.oController=T;}}else{q.sap.log.error("sap.ui.fragment() must be called with Fragment name or config object as first parameter, but is: "+n);}return new F(s);};sap.ui.xmlfragment=function(i,f,c){if(typeof(i)==="string"){if(typeof(f)==="string"){return sap.ui.fragment({fragmentName:f,sId:i,type:"XML"},c);}else{return sap.ui.fragment(i,"XML",f);}}else{i.type="XML";return sap.ui.fragment(i,f);}};sap.ui.jsfragment=function(n,f){if(typeof(n)==="string"&&typeof(f)==="object"){if(f.createContent){r[n]=f;q.sap.declare({modName:n,type:"fragment"},false);}else{return sap.ui.fragment(n,"JS",f);}}else if(typeof(n)==="string"&&f===undefined){return sap.ui.fragment(n,"JS");}else{if(typeof(n)==="object"){n.type="JS";return sap.ui.fragment(n,f);}else if(arguments&&arguments.length>=3){return sap.ui.fragment({id:n,fragmentName:f,type:"JS"},arguments[2]);}else{q.sap.log.error("sap.ui.jsfragment() was called with wrong parameter set: "+n+" + "+f);}}};sap.ui.htmlfragment=function(i,f,c){if(typeof(i)==="string"){if(typeof(f)==="string"){return sap.ui.fragment({fragmentName:f,sId:i,type:"HTML"},c);}else{return sap.ui.fragment(i,"HTML",f);}}else{i.type="HTML";return sap.ui.fragment(i,f);}};F.registerType("XML",{init:function(s){if(s.fragmentContent){if(typeof(s.fragmentContent)==="string"){this._xContent=q.parseXML(s.fragmentContent).documentElement;}else{this._xContent=s.fragmentContent;}}else{this._xContent=X.loadTemplate(s.fragmentName,"fragment");}this._oContainingView=this._sExplicitId?this:(s.containingView||this);if((this._oContainingView===this)){this._oContainingView.oController=(s.containingView&&s.containingView.oController)||s.oController;}var a=this;M.runWithPreprocessors(function(){a._aContent=X.parseTemplate(a._xContent,a);});}});F.registerType("JS",{init:function(s){if(!r[s.fragmentName]){q.sap.require({modName:s.fragmentName,type:"fragment"});}q.extend(this,r[s.fragmentName]);this._oContainingView=s.containingView||this;var a=this;M.runWithPreprocessors(function(){var c=a.createContent(s.oController||a._oContainingView.oController);a._aContent=[];a._aContent=a._aContent.concat(c);});}});(function(){var _={};var a=function(T){var u=q.sap.getModulePath(T,".fragment.html");var h=_[u];var R;if(!h){R=q.sap.getResourceName(T,".fragment.html");h=q.sap.loadResource(R);_[u]=h;}return h;};F.registerType("HTML",{init:function(s){this._aContent=[];this.getContent=function(){return this._aContent;};this.addContent=function(C){this._aContent.push(C);};this._oContainingView=s.containingView||this;var h=s.fragmentContent||a(s.fragmentName);this._oTemplate=document.createElement("div");if(typeof h==="string"){this._oTemplate.innerHTML=h;}else{var n=h;var f=document.createDocumentFragment();for(var i=0;itooltip aggregation/property and the + * hasStyleClass, addStyleClass, removeStyleClass and + * toggleStyleClass methods from its base class, it doesn't support them. + * Instead, the defined HTML content can contain a tooltip (title attribute) or custom CSS classes. + * + * For further hints about usage restrictions for this control, see also the documentation of the + * content property. + * + * @extends sap.ui.core.Control + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.ui.core.HTML + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var HTML = Control.extend("sap.ui.core.HTML", /** @lends sap.ui.core.HTML.prototype */ { metadata : { + + library : "sap.ui.core", + properties : { + + /** + * HTML content to be displayed, defined as a string. + * + * The content is converted to DOM nodes with a call to new jQuery(content), so any + * restrictions for the jQuery constructor apply to the content of the HTML control as well. + * + * Some of these restrictions (there might be others!) are: + *
      + *
    • the content must be enclosed in tags, pure text is not supported.
    • + *
    • if the content contains script tags, they will be executed but they will not appear in the + * resulting DOM tree. When the contained code tries to find the corresponding script tag, + * it will fail.
    • + *
    + * + * Please consider to consult the jQuery documentation as well. + * + * The HTML control currently doesn't prevent the usage of multiple root nodes in its DOM content + * (e.g. setContent("
    ")), but this is not a guaranteed feature. The accepted content + * might be restricted to single root nodes in future versions. To notify applications about this + * fact, a warning is written in the log when multiple root nodes are used. + * + * @SecSink {,XSS} The content of the 'content' property is rendered 1:1 to allow the full + * flexibility of HTML in UI5 applications. Applications therefore must ensure, that they don't + * set malicious content (e.g. derived from user input). UI5 does not provide an HTML validation + * function. jQuery.sap.encodeHTML will encode any HTML relevant character, but this is in + * nearly all cases not what applications want here. + */ + content : {type : "string", group : "Misc", defaultValue : null}, + + /** + * Whether existing DOM content is preferred over the given content string. + * + * There are two scenarios where this flag is relevant (when set to true): + *
      + *
    • for the initial rendering: when an HTML control is added to an UIArea for the first time + * and if the root node of that UIArea contained DOM content with the same id as the HTML + * control, then that content will be used for rendering instead of any specified string + * content
    • + *
    • any follow-up rendering: when an HTML control is rendered for the second or any later + * time and the preferDOM flag is set, then the DOM from the first rendering is preserved + * and not replaced by the string content
    • + *
    + * + * As preserving the existing DOM is the most common use case of the HTML control, the default value is true. + */ + preferDOM : {type : "boolean", group : "Misc", defaultValue : true}, + + /** + * Whether to run the HTML sanitizer once the content (HTML markup) is applied or not. + * + * To configure allowed URLs please use the whitelist API via jQuery.sap.addUrlWhitelist. + */ + sanitizeContent : {type : "boolean", group : "Misc", defaultValue : false}, + + /** + * Specifies whether the control is visible. Invisible controls are not rendered. + */ + visible : {type : "boolean", group : "Appearance", defaultValue : true} + }, + events : { + + /** + * Fired after the HTML control has been rendered. Allows to manipulate the resulting DOM. + * + * When the control doesn't have string content and no preserved DOM existed for this control, + * then this event will fire, but there won't be a DOM node for this control. + */ + afterRendering : { + parameters : { + + /** + * Whether the current DOM of the control has been preserved (true) or not (e.g. + * rendered from content property or it is an empty HTML control). + */ + isPreservedDOM : {type : "boolean"} + } + } + } + }}); + + /** + * @param {string} [sSuffix=''] Suffix of the Element to be retrieved or empty + * @return {Element} The element's DOM reference or null + * @public + */ + HTML.prototype.getDomRef = function(sSuffix) { + var sId = sSuffix ? this.getId() + "-" + sSuffix : this.getId(); + return jQuery.sap.domById(sap.ui.core.RenderPrefixes.Dummy + sId) || jQuery.sap.domById(sId); + }; + + HTML.prototype.setContent = function(sContent) { + + function parseHTML(s) { + if ( jQuery.parseHTML ) { + var a = jQuery.parseHTML(s); + if ( a ) { + var start = 0, end = a.length; + while ( start < end && a[start].nodeType != 1 ) { + start++; + } + while ( start < end && a[end - 1].nodeType != 1 ) { + end--; + } + if ( start > 0 || end < a.length ) { + a = a.slice(start, end); + } + return jQuery(a); + } + } + return jQuery(s); + } + + if ( this.getSanitizeContent() ) { + jQuery.sap.log.trace("sanitizing HTML content for " + this); + sContent = jQuery.sap._sanitizeHTML(sContent); + } + + this.setProperty("content", sContent, true); + if ( /* sContent && */ this.getDomRef() ) { + var $newContent = parseHTML(this.getContent()); // TODO what if content is not HTML (e.g. #something)? + jQuery(this.getDomRef()).replaceWith($newContent); + this._postprocessNewContent($newContent); + } else { + this.invalidate(); + } + return this; + }; + + + HTML.prototype.onBeforeRendering = function() { + if (this.getPreferDOM() && this.getDomRef() && !sap.ui.core.RenderManager.isPreservedContent(this.getDomRef())) { + sap.ui.core.RenderManager.preserveContent(this.getDomRef(), /* bPreserveRoot */ true, /* bPreserveNodesWithId */ false); + } + }; + + + /** + * If the HTML doesn't contain own content, it tries to reproduce existing content + */ + HTML.prototype.onAfterRendering = function() { + if (!this.getVisible()) { + // Just leave the placeholder there + return; + } + + var $placeholder = jQuery(jQuery.sap.domById(sap.ui.core.RenderPrefixes.Dummy + this.getId())); + var $oldContent = sap.ui.core.RenderManager.findPreservedContent(this.getId()); + var $newContent; + var isPreservedDOM = false; + if ( /*this.getContent() && */ (!this.getPreferDOM() || $oldContent.size() == 0) ) { + // remove old, preserved content + $oldContent.remove(); + // replace placeholder with content string + $newContent = new jQuery(this.getContent()); // TODO what if content is not HTML (e.g. #something)? + $placeholder.replaceWith($newContent); + } else if ( $oldContent.size() > 0 ) { + // replace dummy with old content + $placeholder.replaceWith($oldContent); + $newContent = $oldContent; + isPreservedDOM = true; + } else { + $placeholder.remove(); + } + + this._postprocessNewContent($newContent); + + this.fireAfterRendering({isPreservedDOM : isPreservedDOM}); + + }; + + HTML.prototype._postprocessNewContent = function($newContent) { + if ( $newContent && $newContent.size() > 0 ) { + if ( $newContent.length > 1 ) { + jQuery.sap.log.warning("[Unsupported Feature]: " + this + " has rendered " + $newContent.length + " root nodes!"); + } else { + var sContentId = $newContent.attr("id"); + if (sContentId && sContentId != this.getId()) { + jQuery.sap.log.warning("[Unsupported Feature]: Id of HTML Control '" + this.getId() + "' does not match with content id '" + sContentId + "'!"); + } + } + + // set a marker that identifies all root nodes in $newContent as 'to-be-preserved' + sap.ui.core.RenderManager.markPreservableContent($newContent, this.getId()); + // and if no node has the control id, search the first without an id and set it + if ( $newContent.find("#" + this.getId().replace(/(:|\.)/g,'\\$1')).length === 0 ) { + $newContent.filter(":not([id])").first().attr("id", this.getId()); + } + } else { + jQuery.sap.log.debug("" + this + " is empty after rendering, setting bOutput to false"); + this.bOutput = false; // clean up internal rendering bookkeeping + } + }; + + /** + * Sets some new DOM content for this HTML control. The content will replace the existing content + * after the next rendering. Properties are not modified, but preferDOM should be set to true. + * + * @param {Element} oDom the new DOM content + * @return {sap.ui.core.HTML} this to facilitate method chaining + * @public + */ + HTML.prototype.setDOMContent = function(oDom) { + var $newContent = jQuery(oDom); + if ( this.getDomRef() ) { + jQuery(this.getDomRef()).replaceWith($newContent); + this._postprocessNewContent($newContent); + } else { + $newContent.appendTo(sap.ui.core.RenderManager.getPreserveAreaRef()); + if ( this.getUIArea() ) { + this.getUIArea().invalidate(); + } // TODO fix issue with Control.rerender() + this._postprocessNewContent($newContent); // CHECK is it okay to set bOutput to false for empty content? + } + + return this; + }; + + HTML.prototype.setTooltip = function() { + jQuery.sap.log.warning("The sap.ui.core.HTML control doesn't support tooltips. Add the tooltip to the HTML content instead."); + return Control.prototype.setTooltip.apply(this, arguments); + }; + + jQuery.each("hasStyleClass addStyleClass removeStyleClass toggleStyleClass".split(" "), function(method) { + HTML.prototype[method] = function() { + jQuery.sap.log.warning("The sap.ui.core.HTML control doesn't support custom style classes. Manage custom CSS classes in the HTML content instead."); + return Control.prototype[method].apply(this, arguments); + }; + }); + + return HTML; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/HTML.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/HTML.js new file mode 100644 index 0000000..16cea65 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/HTML.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Control','./library'],function(q,C,l){"use strict";var H=C.extend("sap.ui.core.HTML",{metadata:{library:"sap.ui.core",properties:{content:{type:"string",group:"Misc",defaultValue:null},preferDOM:{type:"boolean",group:"Misc",defaultValue:true},sanitizeContent:{type:"boolean",group:"Misc",defaultValue:false},visible:{type:"boolean",group:"Appearance",defaultValue:true}},events:{afterRendering:{parameters:{isPreservedDOM:{type:"boolean"}}}}}});H.prototype.getDomRef=function(s){var i=s?this.getId()+"-"+s:this.getId();return q.sap.domById(sap.ui.core.RenderPrefixes.Dummy+i)||q.sap.domById(i);};H.prototype.setContent=function(c){function p(s){if(q.parseHTML){var a=q.parseHTML(s);if(a){var b=0,e=a.length;while(b0||e0){$.replaceWith(a);b=a;i=true;}else{$.remove();}this._postprocessNewContent(b);this.fireAfterRendering({isPreservedDOM:i});};H.prototype._postprocessNewContent=function($){if($&&$.size()>0){if($.length>1){q.sap.log.warning("[Unsupported Feature]: "+this+" has rendered "+$.length+" root nodes!");}else{var c=$.attr("id");if(c&&c!=this.getId()){q.sap.log.warning("[Unsupported Feature]: Id of HTML Control '"+this.getId()+"' does not match with content id '"+c+"'!");}}sap.ui.core.RenderManager.markPreservableContent($,this.getId());if($.find("#"+this.getId().replace(/(:|\.)/g,'\\$1')).length===0){$.filter(":not([id])").first().attr("id",this.getId());}}else{q.sap.log.debug(""+this+" is empty after rendering, setting bOutput to false");this.bOutput=false;}};H.prototype.setDOMContent=function(d){var $=q(d);if(this.getDomRef()){q(this.getDomRef()).replaceWith($);this._postprocessNewContent($);}else{$.appendTo(sap.ui.core.RenderManager.getPreserveAreaRef());if(this.getUIArea()){this.getUIArea().invalidate();}this._postprocessNewContent($);}return this;};H.prototype.setTooltip=function(){q.sap.log.warning("The sap.ui.core.HTML control doesn't support tooltips. Add the tooltip to the HTML content instead.");return C.prototype.setTooltip.apply(this,arguments);};q.each("hasStyleClass addStyleClass removeStyleClass toggleStyleClass".split(" "),function(m){H.prototype[m]=function(){q.sap.log.warning("The sap.ui.core.HTML control doesn't support custom style classes. Manage custom CSS classes in the HTML content instead.");return C.prototype[m].apply(this,arguments);};});return H;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/HTMLRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/HTMLRenderer-dbg.js new file mode 100644 index 0000000..42f5a4d --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/HTMLRenderer-dbg.js @@ -0,0 +1,36 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// A renderer for the HTML control +sap.ui.define(['jquery.sap.global'], + function(jQuery) { + "use strict"; + + + var HTMLRenderer = { + + /** + * Renders either the configured content or a dummy div that will be replaced after rendering + * + * @param {sap.ui.core.RenderManager} [oRM] The RenderManager instance + * @param {sap.ui.core.Control} [oControl] The instance of the invisible control + */ + render : function(oRM, oControl) { + // render an invisible, but easily identifiable placeholder for the content + oRM.write("
    "); + + // Note: we do not render the content string here, but only in onAfterRendering + // This has the advantage that syntax errors don't affect the whole control tree + // but only this control... + + oRM.write("
    "); + } + + }; + + return HTMLRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/HTMLRenderer.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/HTMLRenderer.js new file mode 100644 index 0000000..805fa81 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/HTMLRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var H={render:function(r,c){r.write("
    ");r.write("
    ");}};return H;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/History-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/History-dbg.js new file mode 100644 index 0000000..f97252a --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/History-dbg.js @@ -0,0 +1,145 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +//Provides the history handler sap.ui.core.History +sap.ui.define(['jquery.sap.global', 'sap/ui/base/Object'], + function(jQuery, BaseObject) { + "use strict"; + + /** + * Creates an instance of the History. + * + * Attention: The Web Storage API which is used by this class stores the data on the client. + * Therefore do not use this API for confidential information. + * + * @class History handles the history of certain controls (e.g. sap.ui.commons.SearchField). + * + * @param {string} sId id for the history + * @param {object} [mSettings] optional map/JSON-object with additional settings + * + * @extends sap.ui.base.Object + * @author SAP SE + * @version 1.28.5 + * @constructor + * @alias sap.ui.core.History + * @protected + */ + var History = BaseObject.extend("sap.ui.core.History", /** @lends sap.ui.core.History.prototype */ { + + constructor : function(sId, mSettings) { + BaseObject.apply(this); + if (!mSettings) { + mSettings = {}; + } + + var sHistoryPrefix = mSettings.prefix ? mSettings.prefix : document.location.pathname; + + this._iMaxHistory = mSettings.max ? mSettings.max : 100; + this._sHistoryId = sHistoryPrefix + sId; + + jQuery.sap.require("jquery.sap.storage"); + this._oStorage = jQuery.sap.storage(jQuery.sap.storage.Type.local); + + this._fFilter = mSettings.filter ? mSettings.filter : function(sHistoryValue, sValue) { + return sHistoryValue && (!sValue || (sValue && jQuery.sap.startsWithIgnoreCase(sHistoryValue, sValue))); + }; + this._fCheckHistory = mSettings.checkHistory ? mSettings.checkHistory : function(aHistory) { + return aHistory; + }; + }, + + /** + * Initializes the history if not already done. + * + * @private + */ + _initHistory : function() { + if (!this._aHistory) { + var aHistory = this._oStorage.get(this._sHistoryId); + if (typeof (aHistory) === "string") { + // in case it is a string, convert it to an array + aHistory = aHistory.split(","); + } else if (!aHistory) { + // or create a new one in case of non existence + aHistory = []; + } // else assume that there is the means for serializing JSON used, returning an array directly + //do a final check of the entries + this._aHistory = this._fCheckHistory(aHistory); + } + return this._aHistory; + }, + + /** + * Returns the history values fitting to the given value (according to the specified filter. + * + * @private + */ + get : function(sValue) { + var aHistory = this._initHistory(); + var aResult = []; + for (var i = 0; i < aHistory.length; i++) { + if (this._fFilter(aHistory[i], sValue)) { + aResult.push(aHistory[i]); + } + } + return aResult; + }, + + /** + * Removes the given value from the history values. + * + * @private + */ + remove : function(sValue) { + var aHistory = this._initHistory(); + for (var i = 0; i < aHistory.length; i++) { + if (aHistory[i] == sValue) { + aHistory.splice(i, 1); + break; + } + } + }, + + /** + * Adds the given value to the history. + * + * @private + */ + add : function(sValue) { + var aHistory = this._initHistory(); + // ensure it is not contained twice -> remove + for (var i = 0; i < aHistory.length; i++) { + if (aHistory[i] === sValue) { + aHistory.splice(i,1); + break; + } + } + // and put it to the 'very top' + aHistory.unshift(sValue); + // but do not store more than specified + if (aHistory.length > this._iMaxHistory) { + aHistory.splice(this._iMaxHistory); + } + + this._oStorage.put(this._sHistoryId, aHistory); + }, + + /** + * Clears the history. + * + * @private + */ + clear : function() { + this._oStorage.remove(this._sHistoryId); + this._aHistory = null; + } + + }); + + + return History; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/History.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/History.js new file mode 100644 index 0000000..d27d5c8 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/History.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/base/Object'],function(q,B){"use strict";var H=B.extend("sap.ui.core.History",{constructor:function(i,s){B.apply(this);if(!s){s={};}var h=s.prefix?s.prefix:document.location.pathname;this._iMaxHistory=s.max?s.max:100;this._sHistoryId=h+i;q.sap.require("jquery.sap.storage");this._oStorage=q.sap.storage(q.sap.storage.Type.local);this._fFilter=s.filter?s.filter:function(a,v){return a&&(!v||(v&&q.sap.startsWithIgnoreCase(a,v)));};this._fCheckHistory=s.checkHistory?s.checkHistory:function(a){return a;};},_initHistory:function(){if(!this._aHistory){var h=this._oStorage.get(this._sHistoryId);if(typeof(h)==="string"){h=h.split(",");}else if(!h){h=[];}this._aHistory=this._fCheckHistory(h);}return this._aHistory;},get:function(v){var h=this._initHistory();var r=[];for(var i=0;ithis._iMaxHistory){h.splice(this._iMaxHistory);}this._oStorage.put(this._sHistoryId,h);},clear:function(){this._oStorage.remove(this._sHistoryId);this._aHistory=null;}});return H;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Icon-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Icon-dbg.js new file mode 100644 index 0000000..ddf3a7e --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Icon-dbg.js @@ -0,0 +1,440 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.core.Icon. +sap.ui.define(['jquery.sap.global', './Control', './IconPool', './library'], + function(jQuery, Control, IconPool, library) { + "use strict"; + + + + /** + * Constructor for a new Icon. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * Icon uses embeded font instead of pixel image. Comparing to image, Icon is easily scalable, color can be altered live and various effects can be added using css. + * + * A set of built in Icons is available and they can be fetched by calling sap.ui.core.IconPool.getIconURI and set this value to the src property on the Icon. + * @extends sap.ui.core.Control + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.11.1 + * @alias sap.ui.core.Icon + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var Icon = Control.extend("sap.ui.core.Icon", /** @lends sap.ui.core.Icon.prototype */ { metadata : { + + library : "sap.ui.core", + properties : { + + /** + * This property should be set by the return value of calling sap.ui.core.IconPool.getIconURI with a Icon name parameter and an optional collection parameter which is required when using application extended Icons. A list of standard FontIcon is available here. + */ + src : {type : "sap.ui.core.URI", group : "Data", defaultValue : null}, + + /** + * Since Icon uses font, this property will be applied to the css font-size property on the rendered DOM element. + */ + size : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : null}, + + /** + * The color of the Icon. If color is not defined here, the Icon inherits the color from its DOM parent. + */ + color : {type : "string", group : "Appearance", defaultValue : null}, + + /** + * This color is shown when icon is hovered. This property has no visual effect when run on mobile device. + */ + hoverColor : {type : "string", group : "Appearance", defaultValue : null}, + + /** + * This color is shown when icon is pressed/activated by the user. + */ + activeColor : {type : "string", group : "Appearance", defaultValue : null}, + + /** + * This is the width of the DOM element which contains the Icon. Setting this property doesn't affect the size of the font. If you want to make the font bigger, increase the size property. + */ + width : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : null}, + + /** + * This is the height of the DOM element which contains the Icon. Setting this property doesn't affect the size of the font. If you want to make the font bigger, increase the size property. + */ + height : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : null}, + + /** + * Background color of the Icon in normal state. + */ + backgroundColor : {type : "string", group : "Appearance", defaultValue : null}, + + /** + * Background color for Icon in hover state. This property has no visual effect when run on mobile device. + */ + hoverBackgroundColor : {type : "string", group : "Appearance", defaultValue : null}, + + /** + * Background color for Icon in active state. + */ + activeBackgroundColor : {type : "string", group : "Appearance", defaultValue : null}, + + /** + * A decorative icon is included for design reasons. Accessibility tools will ignore decorative icons. Decorative icons don't have tab stop. + * @since 1.16.4 + */ + decorative : {type : "boolean", group : "Accessibility", defaultValue : true} + }, + events : { + + /** + * This event is fired when icon is pressed/activated by the user. + */ + press : {} + } + }}); + + + /* =========================================================== */ + /* Lifecycle methods */ + /* =========================================================== */ + + /** + * Required adaptations after rendering. + * + * @private + */ + Icon.prototype.onAfterRendering = function() { + var $Icon = this.$(); + + if (this.hasListeners("press")) { + $Icon.css("cursor", "pointer"); + } + // This is to check if no cursor property inherited from parent DOM. + // If the current value is auto, set it to default. + // This is to fix the cursor: auto interpreted as text cursor in firefox and IE. + if ($Icon.css("cursor") === "auto") { + $Icon.css("cursor", "default"); + } + }; + + /* =========================================================== */ + /* Event handlers */ + /* =========================================================== */ + + /** + * Handle the mousedown event on the Icon. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + Icon.prototype.onmousedown = function(oEvent) { + + this._bPressFired = false; + + if (this.hasListeners("press") || this.hasListeners("tap")) { + + // mark the event for components that needs to know if the event was handled + oEvent.setMarked(); + } + + var sActiveColor = this.getActiveColor(), + sActiveBackgroundColor = this.getActiveBackgroundColor(), + $Icon; + + if (sActiveColor || sActiveBackgroundColor) { + + // change the source only when the first finger is on the Icon, the following fingers doesn't affect + if (!oEvent.targetTouches || (oEvent.targetTouches && oEvent.targetTouches.length === 1)) { + $Icon = this.$(); + + $Icon.addClass("sapUiIconActive"); + + if (sActiveColor) { + this._addColorClass(sActiveColor, "color"); + } + + if (sActiveBackgroundColor) { + this._addColorClass(sActiveBackgroundColor, "background-color"); + } + } + } + }; + + /** + * Handle the touchstart event on the Icon. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + Icon.prototype.ontouchstart = Icon.prototype.onmousedown; + + /** + * Handle the mouseup event on the Icon. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + Icon.prototype.onmouseup = function(oEvent) { + + // change the source back only when all fingers leave the icon + if (!oEvent.targetTouches || (oEvent.targetTouches && oEvent.targetTouches.length === 0)) { + + this.$().removeClass("sapUiIconActive"); + this._restoreColors(); + } + }; + + /** + * Handle the touchend event on the Icon. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + Icon.prototype.ontouchend = Icon.prototype.onmouseup; + + /** + * Handle the touchcancel event on the Icon. + * + * @param {jQuery.Event} oEvent The event object. + * @private + */ + Icon.prototype.ontouchcancel = Icon.prototype.onmouseup; + + /** + * Handle the mouseover event on the Icon. + * + * @private + */ + Icon.prototype.onmouseover = function() { + + var sHoverColor = this.getHoverColor(), + sHoverBackgroundColor = this.getHoverBackgroundColor(); + + if (sHoverColor) { + this._addColorClass(sHoverColor, "color"); + } + + if (sHoverBackgroundColor) { + this._addColorClass(sHoverBackgroundColor, "background-color"); + } + }; + + /** + * Handle the mouseout event on the Icon. + * + * @private + */ + Icon.prototype.onmouseout = function() { + this._restoreColors(); + }; + + /** + * Handle the click or tap event on the Icon. + * + * @private + */ + Icon.prototype.onclick = function() { + if (this._bPressFired) { + return; + } + + this.firePress({/* no parameters */}); + this._bPressFired = true; + }; + + Icon.prototype.ontap = Icon.prototype.onclick; + + /* ----------------------------------------------------------- */ + /* Keyboard handling */ + /* ----------------------------------------------------------- */ + + /** + * Handle the key down event for SPACE and ENTER. + * + * @param {jQuery.Event} oEvent - the keyboard event. + * @private + */ + Icon.prototype.onkeydown = function(oEvent) { + + if (oEvent.which === jQuery.sap.KeyCodes.SPACE || oEvent.which === jQuery.sap.KeyCodes.ENTER) { + + // note: prevent document scrolling + oEvent.preventDefault(); + + var $Icon = this.$(), + sActiveColor = this.getActiveColor(), + sActiveBackgroundColor = this.getActiveBackgroundColor(); + + $Icon.addClass("sapUiIconActive"); + + if (sActiveColor) { + this._addColorClass(sActiveColor, "color"); + } + + if (sActiveBackgroundColor) { + this._addColorClass(sActiveBackgroundColor, "background-color"); + } + } + }; + + /** + * Handle the key up event for SPACE and ENTER. + * + * @param {jQuery.Event} oEvent - the keyboard event. + * @private + */ + Icon.prototype.onkeyup = function(oEvent) { + + if (oEvent.which === jQuery.sap.KeyCodes.SPACE || oEvent.which === jQuery.sap.KeyCodes.ENTER) { + + this.$().removeClass("sapUiIconActive"); + this._restoreColors(); + this.firePress({/* no parameters */}); + } + }; + + /* =========================================================== */ + /* Private methods */ + /* =========================================================== */ + + Icon.prototype._restoreColors = function() { + this._addColorClass(this.getColor() || "", "color"); + this._addColorClass(this.getBackgroundColor() || "", "background-color"); + }; + + /* =========================================================== */ + /* API method */ + /* =========================================================== */ + + Icon.prototype.setSrc = function(sSrc) { + var oIconInfo = IconPool.getIconInfo(sSrc), + bTextNeeded = sap.ui.Device.browser.internet_explorer && sap.ui.Device.browser.version < 9, + $Icon = this.$(); + + if (oIconInfo) { + $Icon.css("font-family", oIconInfo.fontFamily); + + if (bTextNeeded) { + $Icon.text(oIconInfo.content); + } else { + $Icon.attr("data-sap-ui-icon-content", oIconInfo.content); + } + + $Icon.toggleClass("sapUiIconMirrorInRTL", !oIconInfo.suppressMirroring); + } + + // when the given sSrc can't be found in IconPool, rerender the icon is needed. + this.setProperty("src", sSrc, !!oIconInfo); + + return this; + }; + + Icon.prototype.setWidth = function(sWidth) { + this.setProperty("width", sWidth, true); + this.$().css("width", sWidth); + + return this; + }; + + Icon.prototype.setHeight = function(sHeight) { + this.setProperty("height", sHeight, true); + this.$().css({ + "height": sHeight, + "line-height": sHeight + }); + + return this; + }; + + Icon.prototype.setSize = function(sSize) { + this.setProperty("size", sSize, true); + this.$().css("font-size", sSize); + + return this; + }; + + Icon.prototype.setColor = function(sColor) { + this.setProperty("color", sColor, true); + this._addColorClass(sColor, "color"); + + return this; + }; + + Icon.prototype._addColorClass = function(sColor, sCSSPropName) { + var $Icon = this.$(), + that = this; + + var sCSSClassNamePrefix = ""; + if (sCSSPropName === "color") { + sCSSClassNamePrefix = "sapUiIconColor"; + } else if (sCSSPropName === "background-color") { + sCSSClassNamePrefix = "sapUiIconBGColor"; + } else { + return; + } + + jQuery.each(sap.ui.core.IconColor, function(sPropertyName, sPropertyValue) { + that.removeStyleClass(sCSSClassNamePrefix + sPropertyValue); + }); + + if (sColor in sap.ui.core.IconColor) { + // reset the relevant css property + $Icon.css(sCSSPropName, ""); + this.addStyleClass(sCSSClassNamePrefix + sColor); + } else { + $Icon.css(sCSSPropName, sColor); + } + }; + + Icon.prototype.setActiveColor = function(sColor) { + return this.setProperty("activeColor", sColor, true); + }; + + Icon.prototype.setHoverColor = function(sColor) { + return this.setProperty("hoverColor", sColor, true); + }; + + Icon.prototype.setBackgroundColor = function(sColor) { + this.setProperty("backgroundColor", sColor, true); + this._addColorClass(sColor, "background-color"); + + return this; + }; + + Icon.prototype.setActiveBackgroundColor = function(sColor) { + return this.setProperty("activeBackgroundColor", sColor, true); + }; + + Icon.prototype.setHoverBackgroundColor = function(sColor) { + return this.setProperty("hoverBackgroundColor", sColor, true); + }; + + Icon.prototype.attachPress = function() { + var aMyArgs = Array.prototype.slice.apply(arguments); + aMyArgs.splice(0, 0, "press"); + this.$().css("cursor", "pointer"); + return Control.prototype.attachEvent.apply(this, aMyArgs); + }; + + Icon.prototype.detachPress = function() { + var aMyArgs = Array.prototype.slice.apply(arguments); + aMyArgs.splice(0, 0, "press"); + Control.prototype.detachEvent.apply(this, aMyArgs); + if (!this.hasListeners("press")) { + this.$().css("cursor", "default"); + } + return this; + }; + + return Icon; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Icon.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Icon.js new file mode 100644 index 0000000..8e072ff --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Icon.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Control','./IconPool','./library'],function(q,C,I,l){"use strict";var a=C.extend("sap.ui.core.Icon",{metadata:{library:"sap.ui.core",properties:{src:{type:"sap.ui.core.URI",group:"Data",defaultValue:null},size:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:null},color:{type:"string",group:"Appearance",defaultValue:null},hoverColor:{type:"string",group:"Appearance",defaultValue:null},activeColor:{type:"string",group:"Appearance",defaultValue:null},width:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:null},height:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:null},backgroundColor:{type:"string",group:"Appearance",defaultValue:null},hoverBackgroundColor:{type:"string",group:"Appearance",defaultValue:null},activeBackgroundColor:{type:"string",group:"Appearance",defaultValue:null},decorative:{type:"boolean",group:"Accessibility",defaultValue:true}},events:{press:{}}}});a.prototype.onAfterRendering=function(){var i=this.$();if(this.hasListeners("press")){i.css("cursor","pointer");}if(i.css("cursor")==="auto"){i.css("cursor","default");}};a.prototype.onmousedown=function(e){this._bPressFired=false;if(this.hasListeners("press")||this.hasListeners("tap")){e.setMarked();}var A=this.getActiveColor(),s=this.getActiveBackgroundColor(),i;if(A||s){if(!e.targetTouches||(e.targetTouches&&e.targetTouches.length===1)){i=this.$();i.addClass("sapUiIconActive");if(A){this._addColorClass(A,"color");}if(s){this._addColorClass(s,"background-color");}}}};a.prototype.ontouchstart=a.prototype.onmousedown;a.prototype.onmouseup=function(e){if(!e.targetTouches||(e.targetTouches&&e.targetTouches.length===0)){this.$().removeClass("sapUiIconActive");this._restoreColors();}};a.prototype.ontouchend=a.prototype.onmouseup;a.prototype.ontouchcancel=a.prototype.onmouseup;a.prototype.onmouseover=function(){var h=this.getHoverColor(),H=this.getHoverBackgroundColor();if(h){this._addColorClass(h,"color");}if(H){this._addColorClass(H,"background-color");}};a.prototype.onmouseout=function(){this._restoreColors();};a.prototype.onclick=function(){if(this._bPressFired){return;}this.firePress({});this._bPressFired=true;};a.prototype.ontap=a.prototype.onclick;a.prototype.onkeydown=function(e){if(e.which===q.sap.KeyCodes.SPACE||e.which===q.sap.KeyCodes.ENTER){e.preventDefault();var i=this.$(),A=this.getActiveColor(),s=this.getActiveBackgroundColor();i.addClass("sapUiIconActive");if(A){this._addColorClass(A,"color");}if(s){this._addColorClass(s,"background-color");}}};a.prototype.onkeyup=function(e){if(e.which===q.sap.KeyCodes.SPACE||e.which===q.sap.KeyCodes.ENTER){this.$().removeClass("sapUiIconActive");this._restoreColors();this.firePress({});}};a.prototype._restoreColors=function(){this._addColorClass(this.getColor()||"","color");this._addColorClass(this.getBackgroundColor()||"","background-color");};a.prototype.setSrc=function(s){var i=I.getIconInfo(s),t=sap.ui.Device.browser.internet_explorer&&sap.ui.Device.browser.version<9,$=this.$();if(i){$.css("font-family",i.fontFamily);if(t){$.text(i.content);}else{$.attr("data-sap-ui-icon-content",i.content);}$.toggleClass("sapUiIconMirrorInRTL",!i.suppressMirroring);}this.setProperty("src",s,!!i);return this;};a.prototype.setWidth=function(w){this.setProperty("width",w,true);this.$().css("width",w);return this;};a.prototype.setHeight=function(h){this.setProperty("height",h,true);this.$().css({"height":h,"line-height":h});return this;};a.prototype.setSize=function(s){this.setProperty("size",s,true);this.$().css("font-size",s);return this;};a.prototype.setColor=function(c){this.setProperty("color",c,true);this._addColorClass(c,"color");return this;};a.prototype._addColorClass=function(c,s){var i=this.$(),t=this;var b="";if(s==="color"){b="sapUiIconColor";}else if(s==="background-color"){b="sapUiIconBGColor";}else{return;}q.each(sap.ui.core.IconColor,function(p,P){t.removeStyleClass(b+P);});if(c in sap.ui.core.IconColor){i.css(s,"");this.addStyleClass(b+c);}else{i.css(s,c);}};a.prototype.setActiveColor=function(c){return this.setProperty("activeColor",c,true);};a.prototype.setHoverColor=function(c){return this.setProperty("hoverColor",c,true);};a.prototype.setBackgroundColor=function(c){this.setProperty("backgroundColor",c,true);this._addColorClass(c,"background-color");return this;};a.prototype.setActiveBackgroundColor=function(c){return this.setProperty("activeBackgroundColor",c,true);};a.prototype.setHoverBackgroundColor=function(c){return this.setProperty("hoverBackgroundColor",c,true);};a.prototype.attachPress=function(){var m=Array.prototype.slice.apply(arguments);m.splice(0,0,"press");this.$().css("cursor","pointer");return C.prototype.attachEvent.apply(this,m);};a.prototype.detachPress=function(){var m=Array.prototype.slice.apply(arguments);m.splice(0,0,"press");C.prototype.detachEvent.apply(this,m);if(!this.hasListeners("press")){this.$().css("cursor","default");}return this;};return a;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/IconPool-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/IconPool-dbg.js new file mode 100644 index 0000000..b9ec8f6 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/IconPool-dbg.js @@ -0,0 +1,360 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global', 'sap/ui/thirdparty/URI'], + function(jQuery, URI) { + "use strict"; + + + + if (IconPool) { + return; + } + var aIconNames = ["accidental-leave","account","wrench","windows-doors","washing-machine","visits","video","travel-expense","temperature","task","synchronize","survey","settings","search","sales-document","retail-store","refresh","product","present","ppt-attachment","pool","pie-chart","picture","photo-voltaic","phone","pending","pdf-attachment","past","outgoing-call","opportunity","opportunities","notes","money-bills","map","log","line-charts","lightbulb","leads","lead","laptop","kpi-managing-my-area","kpi-corporate-performance","incoming-call","inbox","horizontal-bar-chart","history","heating-cooling","gantt-bars","future","fridge","fallback","expense-report","excel-attachment","energy-saving-lightbulb","employee","email","edit","duplicate","download","doc-attachment","dishwasher","delete","decline","complete","competitor","collections-management","chalkboard","cart","card","camera","calendar","begin","basket","bar-chart","attachment","arrow-top","arrow-right","arrow-left","arrow-bottom","approvals","appointment","alphabetical-order","along-stacked-chart","alert","addresses","address-book","add-filter","add-favorite","add","activities","action","accept","hint","group","check-availability","weather-proofing","payment-approval","batch-payments","bed","arobase","family-care","favorite","navigation-right-arrow","navigation-left-arrow","e-care","less","lateness","lab","internet-browser","instance","inspection","image-viewer","home","grid","goalseek","general-leave-request","create-leave-request","flight","filter","favorite-list","factory","endoscopy","employee-pane","employee-approvals","email-read","electrocardiogram","documents","decision","database","customer-history","customer","credit-card","create-entry-time","contacts","compare","clinical-order","chain-link","pull-down","cargo-train","car-rental","business-card","bar-code","folder-blank","passenger-train","question-mark","world","iphone","ipad","warning","sort","course-book","course-program","add-coursebook","print","save","play","pause","record","response","pushpin-on","pushpin-off","unfavorite","learning-assistant","timesheet","time-entry-request","list","action-settings","share","feed","role","flag","post","inspect","inspect-down","appointment-2","target-group","marketing-campaign","notification","message-error","comment","shipping-status","collaborate","shortcut","lead-outdated","tools-opportunity","permission","supplier","table-view","table-chart","switch-views","e-learning","manager","switch-classes","simple-payment","signature","sales-order-item","sales-order","request","receipt","puzzle","process","private","popup-window","person-placeholder","per-diem","paper-plane","paid-leave","pdf-reader","overview-chart","overlay","org-chart","number-sign","notification-2","my-sales-order","meal","loan","order-status","customer-order-entry","performance","menu","employee-lookup","education","customer-briefing","customer-and-contacts","my-view","accelerated","to-be-reviewed","warning2","feeder-arrow","quality-issue","workflow-tasks","create","home-share","globe","tags","work-history","x-ray","wounds-doc","web-cam","waiver","vertical-bar-chart","upstacked-chart","trip-report","microphone","unpaid-leave","tree","toaster-up","toaster-top","toaster-down","time-account","theater","taxi","subway-train","study-leave","stethoscope","step","sonography","soccor","physical-activity","pharmacy","official-service","offsite-work","nutrition-activity","newspaper","monitor-payments","map-2","machine","mri-scan","end-user-experience-monitoring","unwired","customer-financial-fact-sheet","retail-store-manager","Netweaver-business-client","electronic-medical-record","eam-work-order","customer-view","crm-service-manager","crm-sales","widgets","commission-check","collections-insight","clinical-tast-tracker","citizen-connect","cart-approval","capital-projects","bo-strategy-management","business-objects-mobile","business-objects-explorer","business-objects-experience","bbyd-dashboard","bbyd-active-sales","business-by-design","business-one","sap-box","manager-insight","accounting-document-verification","hr-approval","idea-wall","Chart-Tree-Map","cart-5","cart-4","wallet","vehicle-repair","upload","unlocked","umbrella","travel-request","travel-expense-report","travel-itinerary","time-overtime","thing-type","technical-object","tag","syringe","syntax","suitcase","simulate","shield","share-2","sales-quote","repost","provision","projector","add-product","pipeline-analysis","add-photo","palette","nurse","sales-notification","mileage","meeting-room","media-forward","media-play","media-pause","media-reverse","media-rewind","measurement-document","measuring-point","measure","map-3","locked","letter","journey-arrive","journey-change","journey-depart","it-system","it-instance","it-host","iphone-2","ipad-2","inventory","insurance-house","insurance-life","insurance-car","initiative","incident","group-2","goal","functional-location","full-screen","form","fob-watch","blank-tag","family-protection","folder","fax-machine","example","eraser","employee-rejections","drop-down-list","draw-rectangle","document","doctor","discussion-2","discussion","dimension","customer-and-supplier","crop","add-contact","compare-2","color-fill","collision","curriculum","chart-axis","full-stacked-chart","full-stacked-column-chart","vertical-bar-chart-2","horizontal-bar-chart-2","horizontal-stacked-chart","vertical-stacked-chart","choropleth-chart","geographic-bubble-chart","multiple-radar-chart","radar-chart","crossed-line-chart","multiple-line-chart","multiple-bar-chart","line-chart","line-chart-dual-axis","bubble-chart","scatter-chart","multiple-pie-chart","column-chart-dual-axis","tag-cloud-chart","area-chart","cause","cart-3","cart-2","bus-public-transport","burglary","building","border","bookmark","badge","attachment-audio","attachment-video","attachment-html","attachment-photo","attachment-e-pub","attachment-zip-file","attachment-text-file","add-equipment","add-activity","activity-individual","activity-2","add-activity-2","activity-items","activity-assigned-to-goal","status-completed","status-positive","status-error","status-negative","status-inactive","status-in-process","status-critical","blank-tag-2","cart-full","locate-me","paging","company-view","document-text","explorer","personnel-view","sorting-ranking","drill-down","drill-up","vds-file","sap-logo-shape","folder-full","system-exit","system-exit-2","close-command-field","open-command-field","sys-enter-2","sys-enter","sys-help-2","sys-help","sys-back","sys-back-2","sys-cancel","sys-cancel-2","open-folder","sys-find-next","sys-find","sys-monitor","sys-prev-page","sys-first-page","sys-next-page","sys-last-page","generate-shortcut","create-session","display-more","enter-more","zoom-in","zoom-out","header","detail-view","collapse","expand","positive","negative","display","menu2","redo","undo","navigation-up-arrow","navigation-down-arrow","down","up","shelf","background","resize","move","show","hide","nav-back","error","slim-arrow-right","slim-arrow-left","slim-arrow-down","slim-arrow-up","forward","overflow","value-help","multi-select","exit-full-screen","sys-add","sys-minus","dropdown","expand-group","collapse-group","vertical-grip","horizontal-grip","sort-descending","sort-ascending","arrow-down","legend","message-warning","message-information","message-success","restart","stop","add-process","cancel-maintenance","activate","resize-horizontal","resize-vertical","connected","disconnected","edit-outside","key","minimize","back-to-top","hello-world","outbox"]; + var aIconCodes = ["e000","e001","e002","e003","e004","e005","e006","e007","e008","e009","e00a","e00b","e00c","e00d","e00e","e00f","e010","e011","e012","e013","e014","e015","e016","e017","e018","e019","e01a","e01b","e01c","e01d","e01e","e01f","e020","e021","e022","e023","e024","e025","e026","e027","e028","e029","e02a","e02b","e02c","e02d","e02e","e02f","e030","e031","e032","e033","e034","e035","e036","e037","e038","e039","e03a","e03b","e03c","e03d","e03e","e03f","e040","e041","e042","e043","e044","e045","e046","e047","e048","e049","e04a","e04b","e04c","e04d","e04e","e04f","e050","e051","e052","e053","e054","e055","e056","e057","e058","e059","e05a","e05b","e05c","e05d","e05e","e05f","e060","e061","e062","e063","e064","e065","e066","e067","e068","e069","e06a","e06b","e06c","e06d","e06e","e06f","e070","e071","e072","e073","e074","e075","e076","e077","e078","e079","e07a","e07b","e07c","e07d","e07e","e07f","e080","e081","e082","e083","e084","e085","e086","e087","e088","e089","e08a","e08b","e08c","e08d","e08e","e08f","e090","e091","e092","e093","e094","e095","e096","e097","e098","e099","e09a","e09b","e09c","e09d","e09e","e09f","e0a0","e0a1","e0a2","e0a3","e0a4","e0a5","e0a6","e0a7","e0a8","e0a9","e0aa","e0ab","e0ac","e0ad","e0ae","e0af","e0b0","e0b1","e0b1","e0b2","e0b3","e0b4","e0b5","e0b6","e0b7","e0b8","e0b9","e0ba","e0bb","e0bc","e0bd","e0be","e0bf","e0c0","e0c1","e0c2","e0c3","e0c4","e0c5","e0c6","e0c7","e0c8","e0c9","e0ca","e0cb","e0cc","e0cd","e0ce","e0cf","e0d0","e0d1","e0d2","e0d3","e0d4","e0d5","e0d6","e0d7","e0d8","e0d9","e0da","e0db","e0dc","e0dd","e0de","e0df","e0e0","e0e1","e0e2","e0e3","e0e4","e0e5","e0e6","e0e7","e0e8","e0e9","e0ea","e0eb","e0ec","e0ed","e0ee","e0ef","e0f0","e0f1","e0f2","e0f3","e0f4","e0f5","e0f6","e0f7","e0f8","e0f9","e0fa","e0fb","e0fc","e0fd","e0fe","e0ff","e100","e101","e102","e103","e104","e105","e106","e107","e108","e109","e10a","e10b","e10c","e10d","e10e","e10f","e110","e111","e112","e113","e114","e115","e116","e117","e118","e119","e11a","e11b","e11c","e11d","e11e","e11f","e120","e121","e122","e123","e124","e125","e126","e127","e128","e129","e12a","e12b","e12c","e12d","e12e","e12f","e130","e131","e132","e133","e134","e135","e136","e137","e138","e139","e13a","e13b","e13c","e13d","e13e","e13f","e140","e141","e142","e143","e144","e145","e146","e147","e148","e149","e14a","e14b","e14c","e14d","e14e","e14f","e150","e151","e152","e153","e154","e155","e156","e157","e158","e159","e15a","e15b","e15c","e15d","e15e","e15f","e160","e161","e162","e163","e164","e165","e166","e167","e168","e169","e16a","e16b","e16c","e16d","e16e","e16f","e170","e171","e172","e173","e174","e175","e176","e177","e178","e179","e17a","e17b","e17c","e17d","e17e","e17f","e180","e181","e182","e183","e184","e185","e186","e187","e188","e189","e18a","e18b","e18c","e18d","e18e","e18f","e190","e191","e192","e193","e194","e195","e196","e197","e198","e199","e19a","e19b","e19c","e19d","e19e","e19f","e1a0","e1a1","e1a2","e1a3","e1a4","e1a5","e1a6","e1a7","e1a8","e1a9","e1aa","e1ab","e1ab","e1ac","e1ac","e1ad","e1ae","e1ae","e1af","e1b0","e1b1","e1b2","e1b3","e1b4","e1b5","e1b6","e1b7","e1b8","e1b9","e1ba","e1bb","e1bc","e1bd","e1be","e1bf","e1c0","e1c1","e1c2","e1c3","e1c4","e1c5","e1c6","e1c7","e1c8","e1c9","e1ca","e1cb","e1cc","e1cd","e1ce","e1cf","e1d0","e1d1","e1d2","e1d3","e1d4","e1d5","e1d6","e1d7","e1d8","e1d9","e1da","e1db","e1dc","e1dd","e1de","e1df","e1e0","e1e1","e1e2","e1e3","e1e4","e1e5","e1e6","e1e7","e1e8","e1e9","e1ea","e1eb","e1ec","e1ed","e1ee","e1ef","e1f0","e1f1","e1f2","e1f3","e1f4","e1f5","e1f6","e1f7","e1f8","e1f9","e200","e1fa","e1fb","e1fc","e1fd","e1fe","e1ff","e201","e202","e203","e204","e205","e206","e207","e208","e209","e20a","e20b","e20c","e20d","e20e","e20f","e210","e211","e212"]; + var mIconSuppressMirroring = {"chalkboard": true, "calendar": true, "alphabetical-order": true, "address-book": true, "hint": true, "payment-approval": true, "batch-payments": true, "arobase": true, "question-mark": true, "lead": true, "lead-outdated": true, "simple-payment": true, "sales-order-item": true, "sales-order": true, "per-diem": true, "paid-leave": true, "pdf-reader": true, "my-sales-order": true, "loan": true, "globe": true, "waiver": true, "unpaid-leave": true, "customer-financial-fact-sheet": true, "crm-sales": true, "commission-check": true, "collections-insight": true, "capital-projects": true, "business-one": true, "travel-expense": true, "travel-expense-report": true, "travel-request": true, "time-overtime": true, "sales-quote": true, "sales-notification": true, "incident": true, "money-bills": true, "sales-document": true, "opportunities": true, "expense-report": true, "monitor-payments": true, "widgets": true, "sys-help-2": true, "sys-help": true, "accept": true, "accounting-document-verification": true, "activities": true, "activity-2": true, "add-activity": true, "add-activity-2": true, "approvals": true, "bbyd-active-sales": true, "business-by-design": true, "cart-approval": true, "complete": true, "customer-order-entry": true, "employee-approvals": true, "hr-approval": true, "kpi-corporate-performance": true, "kpi-managing-my-area": true, "survey": true, "sys-enter": true, "sys-enter-2": true, "task": true, "message-information": true, "past": true, "future": true, "check-availability": true, "order-status": true, "eam-work-order": true, "message-success": true, "choropleth-chart": true, "geographic-bubble-chart": true, "sap-logo-shape": true, "play": true, "media-play": true, "media-reverse": true, "media-rewind": true, "media-forward": true}; + var sapIconFamily = "SAP-icons"; + var sProtocolName = "sap-icon"; + + var mRegistry = {}; + + var bFontFaceInserted = false; + + /** + * Constructor for IconPool - must not be used: all of the methods that are under IconPool are static methods. + * + * @class + * The IconPool is a static class for retrieving or registering icons. + * It also provides helping methods for easier consumption of icons. + * There are already icons registered in IconPool, please follow this link and find the name of the icon: + * 1. If you use the icon inside existing control, please call sap.ui.core.IconPool.getIconURI and assign the URI to controls which support icon. + * 2. If you want to support icon and standard image in your own control, please call createControlByURI by giving the URI and a constructor when URI isn't a icon URI. Icon instance or instance created by calling the given constructor is returned. + * + * @public + * @alias sap.ui.core.IconPool + */ + var IconPool = function(){ + // Do not use the constructor + throw new Error(); + }; + + /** + * Creates an instance of sap.ui.core.Icon if the given URI is an icon URI, otherwise the given constructor is called. + * The given URI is set to the src property of the control. + * + * @param {string|object} setting contains the properties which will be used to instantiate the returned control. It should contain at least a property named src. If it's given with a string type, it will be taken as the value of src property. + * @param {function} constructor the constructor function which is called when the given URI isn't an icon URI + * @return {sap.ui.core.Control} either an instance of sap.ui.core.Icon or instance created by calling the given constructor + * @static + * @public + */ + IconPool.createControlByURI = function(setting, constructor){ + if (typeof setting === "string") { + setting = {src: setting}; + } + + if (setting && setting.src) { + var sSrc = setting.src, + fnConstructor = constructor; + if (IconPool.isIconURI(sSrc)) { + if (!sap.ui.core.Icon) { + jQuery.sap.require("sap.ui.core.Icon"); + } + fnConstructor = sap.ui.core.Icon; + //converting to press event in case tap is specified + if (setting.tap) { + setting.press = setting.tap; + delete setting.tap; + } + // remove unsupported settings (e.g. some for Image) + setting = fnConstructor.getMetadata().removeUnknownSettings(setting); + } + if (typeof fnConstructor === "function") { + return new fnConstructor(setting); + } + } + }; + + /** + * Register an additional icon to the sap.ui.core.IconPool. + * + * @param {string} iconName the name of the icon. + * @param {string} collectionName the name of icon collection. The built in icons are with empty collectionName, so if additional icons need to be registered in IconPool, the collectionName can't be empty. + * @param {object} iconInfo the icon info which contains the following properties: + * @param {string} iconInfo.fontFamily is the name of the font when importing the font using @font-face in CSS + * @param {string} iconInfo.content is the special code without the prefix, for example "e000" + * @param {boolean} [iconInfo.overWrite=false] indicates if already registered icons should be overwritten when the same name and collection are given. The built in icons can never be overwritten. + * @param {boolean} [iconInfo.suppressMirroring=false] indicates whether this icon should NOT be mirrored in RTL (right to left) mode. + * + * @return {object} the info object of the registered icon which has the name, collection, uri, fontFamily, content and suppressMirroring properties. + * @static + * @public + */ + IconPool.addIcon = function(iconName, collectionName, iconInfo){ + // OLD API Compatibility fontFamily, content, overWrite, suppressMirroring + if (typeof iconInfo === "string") { + iconInfo = { + fontFamily: arguments[2], + content: arguments[3], + overWrite: !!arguments[4], + suppressMirroring: !!arguments[5] + }; + } + + if (!mRegistry[collectionName]) { + mRegistry[collectionName] = {}; + } + + var collection = mRegistry[collectionName], + icon, oldIcon = collection[iconName], + parts; + + if (oldIcon && (collectionName === undefined || !iconInfo.overWrite)) { + jQuery.sap.log.warning("icon with the same iconName in the collection already exists, specify the last parameter to true in order to overwrite"); + return; + } + + parts = { + protocol: sProtocolName, + hostname: collectionName || iconName, + path: collectionName ? iconName : undefined + }; + + icon = { + name: iconName, + collection: collectionName, + uri: window.URI.build(parts), + fontFamily: iconInfo.fontFamily, + content: String.fromCharCode(parseInt(iconInfo.content, 16)), + suppressMirroring: iconInfo.suppressMirroring, + //keep compatibility with old name + skipMirroring: iconInfo.suppressMirroring + }; + + collection[iconName] = icon; + return icon; + }; + + /** + * Returns the URI of the icon which has the same given iconName and collectionName. + * + * @param {string} iconName the name of the icon. + * @param {string} collectionName the name of icon collection. The built in icons are with undefined collectionName, so if the built in icons need to be used, just ignore this parameter. + * @return {string} the URI of the icon. if the icon can't be found in IconPool, undefined is returned. + * @static + * @public + */ + IconPool.getIconURI = function(iconName, collectionName){ + var collection = mRegistry[collectionName]; + + if (collection && collection[iconName]) { + return collection[iconName].uri; + } + }; + + /** + * Returns the info object of the icon which has the same given iconName and collectionName. + * + * @param {string} iconName the name of the icon. + * @param {string} collectionName the name of icon collection. The built in icons are with undefined collectionName, so if the built in icons need to be used, just ignore this parameter. + * @return {object} the info object of the registered icon which has the uri, fontFamily and content properties. + * @static + * @public + */ + IconPool.getIconInfo = function(iconName, collectionName){ + IconPool.insertFontFaceStyle(); + + var sParsedIconName = iconName, + sParsedCollectionName = collectionName, + parts, + collection; + + if (this.isIconURI(iconName)) { + parts = window.URI.parse(iconName); + + if (parts.path.length === 1) { + sParsedIconName = parts.hostname; + sParsedCollectionName = undefined; + } else { + sParsedCollectionName = parts.hostname; + sParsedIconName = parts.path.substr(1, parts.path.length); + } + } + + collection = mRegistry[sParsedCollectionName]; + + return collection && collection[sParsedIconName]; + }; + + /** + * Returns If the given uri is an icon URI. + * + * @param {string} uri the icon uri which is in the format "sap-icon://collectionName/iconName" + * @return {boolean} if the uri follows the icon uri format. + * @static + * @public + */ + IconPool.isIconURI = function(uri){ + if (!uri) { + return false; + } + var parts = window.URI.parse(uri); + + return (parts.protocol === sProtocolName) && !!parts.hostname; + }; + + /** + * Returns all names of registered collections in IconPool + * + * @return {array} An array contains all of the registered collections' names. + * @static + * @public + */ + IconPool.getIconCollectionNames = function(){ + var aNames = []; + jQuery.map(mRegistry, function(value, key){ + aNames.push(key); + }); + return aNames; + }; + + /** + * Returns all name of icons that are registerd under the given collection. + * @param {string} collectionName the name of collection where icon names are retrieved. + * @return {array} An array contains all of the registered icon names under the given collection. + * @static + * @public + */ + IconPool.getIconNames = function(collectionName){ + var collection = mRegistry[collectionName], + aNames = []; + jQuery.map(collection, function(value, key){ + aNames.push(key); + }); + + return aNames; + }; + + + IconPool.insertFontFaceStyle = function(){ + if (bFontFaceInserted) { + return; + } + + var sFontPath = jQuery.sap.getModulePath("sap.ui.core", '/') + "themes/base/fonts/", sFontFace; + + //In IE9 the relative paths in dynamically inserted styles in iframe are relative to the html page + //which contains the iframe, not the iframe itself. + //http://support.microsoft.com/kb/937266 + //A conversion from relative path to absolute path is needed. + if (!!sap.ui.Device.browser.internet_explorer && sap.ui.Device.browser.version < 10 && /*check if it's in a iFrame*/window.self !== window.top) { + sFontPath = IconPool._calcAbsPath(sFontPath, window.location.href); + } + + /* This is the font used in sap.ui.core.Icon */ + sFontFace = "@font-face {" + + "font-family: 'SAP-icons';" + + "src: url('" + sFontPath + "SAP-icons.eot');" + + "src: url('" + sFontPath + "SAP-icons.eot?#iefix') format('embedded-opentype')," + + "url('" + sFontPath + "SAP-icons.ttf') format('truetype');" + + "font-weight: normal;" + + "font-style: normal;" + + "}"; + + jQuery('head').append(''); + + bFontFaceInserted = true; + }; + + IconPool._calcAbsPath = function(sRelative, sBase){ + // remove the URL parameters for base URL + sBase = sBase && sBase.replace(/\?.*|#.*/g, ""); + + // make the URL absolute + var oUri = new window.URI(sRelative), + oAbsUri = oUri.absoluteTo(sBase); + + // return the absolute URL (without URL parameters!!!) + return oAbsUri.href(); + }; + + IconPool._isMirroringSkipped = function(iconName){ + return !!mIconSuppressMirroring[iconName]; + }; + + //register the built in icons + jQuery.each(aIconNames, function(index, name){ + IconPool.addIcon(name, undefined, { + fontFamily: sapIconFamily, + content: aIconCodes[index], + suppressMirroring: IconPool._isMirroringSkipped(name) + }); + }); + + + var mIconForMimeType = { + "application/msword": "sap-icon://doc-attachment", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "sap-icon://doc-attachment", + "application/rtf": "sap-icon://doc-attachment", + "application/pdf": "sap-icon://pdf-attachment", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "sap-icon://excel-attachment", + "application/msexcel": "sap-icon://excel-attachment", + "application/vnd.ms-powerpoint": "sap-icon://ppt-attachment", + "application/vnd.openxmlformats-officedocument.presentationml.presentation": "sap-icon://ppt-attachment", + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": "sap-icon://ppt-attachment", + "application/mspowerpoint": "sap-icon://ppt-attachment", + "application/xml": "sap-icon://attachment-html", + "application/xhtml+xml": "sap-icon://attachment-html", + "application/x-httpd-php": "sap-icon://attachment-html", + "application/x-javascript": "sap-icon://attachment-html", + "application/gzip": "sap-icon://attachment-zip-file", + "application/x-rar-compressed": "sap-icon://attachment-zip-file", + "application/x-tar": "sap-icon://attachment-zip-file", + "application/zip": "sap-icon://attachment-zip-file", + "audio/voxware": "sap-icon://attachment-audio", + "audio/x-aiff": "sap-icon://attachment-audio", + "audio/x-midi": "sap-icon://attachment-audio", + "audio/x-mpeg": "sap-icon://attachment-audio", + "audio/x-pn-realaudio": "sap-icon://attachment-audio", + "audio/x-pn-realaudio-plugin": "sap-icon://attachment-audio", + "audio/x-qt-stream": "sap-icon://attachment-audio", + "audio/x-wav": "sap-icon://attachment-audio", + "image/png": "sap-icon://attachment-photo", + "image/tiff": "sap-icon://attachment-photo", + "image/bmp": "sap-icon://attachment-photo", + "image/jpeg": "sap-icon://attachment-photo", + "image/gif": "sap-icon://attachment-photo", + "text/plain": "sap-icon://attachment-text-file", + "text/comma-separated-values": "sap-icon://attachment-text-file", + "text/css": "sap-icon://attachment-text-file", + "text/html": "sap-icon://attachment-text-file", + "text/javascript": "sap-icon://attachment-text-file", + "text/richtext": "sap-icon://attachment-text-file", + "text/rtf": "sap-icon://attachment-text-file", + "text/tab-separated-values": "sap-icon://attachment-text-file", + "text/xml": "sap-icon://attachment-text-file", + "video/mpeg": "sap-icon://attachment-video", + "video/quicktime": "sap-icon://attachment-video", + "video/x-msvideo": "sap-icon://attachment-video", + "application/x-shockwave-flash": "sap-icon://attachment-video" + }; + + /** + * Returns the icon url based on the given mime type + * + * @param {string} sMimeType the mime type of a file (e.g. "application/zip") + * @return {string} the icon url (e.g. "sap-icon://attachment-zip-file") + * @static + * @public + * @since 1.25.0 + */ + IconPool.getIconForMimeType = function(sMimeType) { + return mIconForMimeType[sMimeType] || "sap-icon://document"; + }; + + + return IconPool; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/IconPool.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/IconPool.js new file mode 100644 index 0000000..53c089d --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/IconPool.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/thirdparty/URI'],function(q,U){"use strict";if(a){return;}var i=["accidental-leave","account","wrench","windows-doors","washing-machine","visits","video","travel-expense","temperature","task","synchronize","survey","settings","search","sales-document","retail-store","refresh","product","present","ppt-attachment","pool","pie-chart","picture","photo-voltaic","phone","pending","pdf-attachment","past","outgoing-call","opportunity","opportunities","notes","money-bills","map","log","line-charts","lightbulb","leads","lead","laptop","kpi-managing-my-area","kpi-corporate-performance","incoming-call","inbox","horizontal-bar-chart","history","heating-cooling","gantt-bars","future","fridge","fallback","expense-report","excel-attachment","energy-saving-lightbulb","employee","email","edit","duplicate","download","doc-attachment","dishwasher","delete","decline","complete","competitor","collections-management","chalkboard","cart","card","camera","calendar","begin","basket","bar-chart","attachment","arrow-top","arrow-right","arrow-left","arrow-bottom","approvals","appointment","alphabetical-order","along-stacked-chart","alert","addresses","address-book","add-filter","add-favorite","add","activities","action","accept","hint","group","check-availability","weather-proofing","payment-approval","batch-payments","bed","arobase","family-care","favorite","navigation-right-arrow","navigation-left-arrow","e-care","less","lateness","lab","internet-browser","instance","inspection","image-viewer","home","grid","goalseek","general-leave-request","create-leave-request","flight","filter","favorite-list","factory","endoscopy","employee-pane","employee-approvals","email-read","electrocardiogram","documents","decision","database","customer-history","customer","credit-card","create-entry-time","contacts","compare","clinical-order","chain-link","pull-down","cargo-train","car-rental","business-card","bar-code","folder-blank","passenger-train","question-mark","world","iphone","ipad","warning","sort","course-book","course-program","add-coursebook","print","save","play","pause","record","response","pushpin-on","pushpin-off","unfavorite","learning-assistant","timesheet","time-entry-request","list","action-settings","share","feed","role","flag","post","inspect","inspect-down","appointment-2","target-group","marketing-campaign","notification","message-error","comment","shipping-status","collaborate","shortcut","lead-outdated","tools-opportunity","permission","supplier","table-view","table-chart","switch-views","e-learning","manager","switch-classes","simple-payment","signature","sales-order-item","sales-order","request","receipt","puzzle","process","private","popup-window","person-placeholder","per-diem","paper-plane","paid-leave","pdf-reader","overview-chart","overlay","org-chart","number-sign","notification-2","my-sales-order","meal","loan","order-status","customer-order-entry","performance","menu","employee-lookup","education","customer-briefing","customer-and-contacts","my-view","accelerated","to-be-reviewed","warning2","feeder-arrow","quality-issue","workflow-tasks","create","home-share","globe","tags","work-history","x-ray","wounds-doc","web-cam","waiver","vertical-bar-chart","upstacked-chart","trip-report","microphone","unpaid-leave","tree","toaster-up","toaster-top","toaster-down","time-account","theater","taxi","subway-train","study-leave","stethoscope","step","sonography","soccor","physical-activity","pharmacy","official-service","offsite-work","nutrition-activity","newspaper","monitor-payments","map-2","machine","mri-scan","end-user-experience-monitoring","unwired","customer-financial-fact-sheet","retail-store-manager","Netweaver-business-client","electronic-medical-record","eam-work-order","customer-view","crm-service-manager","crm-sales","widgets","commission-check","collections-insight","clinical-tast-tracker","citizen-connect","cart-approval","capital-projects","bo-strategy-management","business-objects-mobile","business-objects-explorer","business-objects-experience","bbyd-dashboard","bbyd-active-sales","business-by-design","business-one","sap-box","manager-insight","accounting-document-verification","hr-approval","idea-wall","Chart-Tree-Map","cart-5","cart-4","wallet","vehicle-repair","upload","unlocked","umbrella","travel-request","travel-expense-report","travel-itinerary","time-overtime","thing-type","technical-object","tag","syringe","syntax","suitcase","simulate","shield","share-2","sales-quote","repost","provision","projector","add-product","pipeline-analysis","add-photo","palette","nurse","sales-notification","mileage","meeting-room","media-forward","media-play","media-pause","media-reverse","media-rewind","measurement-document","measuring-point","measure","map-3","locked","letter","journey-arrive","journey-change","journey-depart","it-system","it-instance","it-host","iphone-2","ipad-2","inventory","insurance-house","insurance-life","insurance-car","initiative","incident","group-2","goal","functional-location","full-screen","form","fob-watch","blank-tag","family-protection","folder","fax-machine","example","eraser","employee-rejections","drop-down-list","draw-rectangle","document","doctor","discussion-2","discussion","dimension","customer-and-supplier","crop","add-contact","compare-2","color-fill","collision","curriculum","chart-axis","full-stacked-chart","full-stacked-column-chart","vertical-bar-chart-2","horizontal-bar-chart-2","horizontal-stacked-chart","vertical-stacked-chart","choropleth-chart","geographic-bubble-chart","multiple-radar-chart","radar-chart","crossed-line-chart","multiple-line-chart","multiple-bar-chart","line-chart","line-chart-dual-axis","bubble-chart","scatter-chart","multiple-pie-chart","column-chart-dual-axis","tag-cloud-chart","area-chart","cause","cart-3","cart-2","bus-public-transport","burglary","building","border","bookmark","badge","attachment-audio","attachment-video","attachment-html","attachment-photo","attachment-e-pub","attachment-zip-file","attachment-text-file","add-equipment","add-activity","activity-individual","activity-2","add-activity-2","activity-items","activity-assigned-to-goal","status-completed","status-positive","status-error","status-negative","status-inactive","status-in-process","status-critical","blank-tag-2","cart-full","locate-me","paging","company-view","document-text","explorer","personnel-view","sorting-ranking","drill-down","drill-up","vds-file","sap-logo-shape","folder-full","system-exit","system-exit-2","close-command-field","open-command-field","sys-enter-2","sys-enter","sys-help-2","sys-help","sys-back","sys-back-2","sys-cancel","sys-cancel-2","open-folder","sys-find-next","sys-find","sys-monitor","sys-prev-page","sys-first-page","sys-next-page","sys-last-page","generate-shortcut","create-session","display-more","enter-more","zoom-in","zoom-out","header","detail-view","collapse","expand","positive","negative","display","menu2","redo","undo","navigation-up-arrow","navigation-down-arrow","down","up","shelf","background","resize","move","show","hide","nav-back","error","slim-arrow-right","slim-arrow-left","slim-arrow-down","slim-arrow-up","forward","overflow","value-help","multi-select","exit-full-screen","sys-add","sys-minus","dropdown","expand-group","collapse-group","vertical-grip","horizontal-grip","sort-descending","sort-ascending","arrow-down","legend","message-warning","message-information","message-success","restart","stop","add-process","cancel-maintenance","activate","resize-horizontal","resize-vertical","connected","disconnected","edit-outside","key","minimize","back-to-top","hello-world","outbox"];var I=["e000","e001","e002","e003","e004","e005","e006","e007","e008","e009","e00a","e00b","e00c","e00d","e00e","e00f","e010","e011","e012","e013","e014","e015","e016","e017","e018","e019","e01a","e01b","e01c","e01d","e01e","e01f","e020","e021","e022","e023","e024","e025","e026","e027","e028","e029","e02a","e02b","e02c","e02d","e02e","e02f","e030","e031","e032","e033","e034","e035","e036","e037","e038","e039","e03a","e03b","e03c","e03d","e03e","e03f","e040","e041","e042","e043","e044","e045","e046","e047","e048","e049","e04a","e04b","e04c","e04d","e04e","e04f","e050","e051","e052","e053","e054","e055","e056","e057","e058","e059","e05a","e05b","e05c","e05d","e05e","e05f","e060","e061","e062","e063","e064","e065","e066","e067","e068","e069","e06a","e06b","e06c","e06d","e06e","e06f","e070","e071","e072","e073","e074","e075","e076","e077","e078","e079","e07a","e07b","e07c","e07d","e07e","e07f","e080","e081","e082","e083","e084","e085","e086","e087","e088","e089","e08a","e08b","e08c","e08d","e08e","e08f","e090","e091","e092","e093","e094","e095","e096","e097","e098","e099","e09a","e09b","e09c","e09d","e09e","e09f","e0a0","e0a1","e0a2","e0a3","e0a4","e0a5","e0a6","e0a7","e0a8","e0a9","e0aa","e0ab","e0ac","e0ad","e0ae","e0af","e0b0","e0b1","e0b1","e0b2","e0b3","e0b4","e0b5","e0b6","e0b7","e0b8","e0b9","e0ba","e0bb","e0bc","e0bd","e0be","e0bf","e0c0","e0c1","e0c2","e0c3","e0c4","e0c5","e0c6","e0c7","e0c8","e0c9","e0ca","e0cb","e0cc","e0cd","e0ce","e0cf","e0d0","e0d1","e0d2","e0d3","e0d4","e0d5","e0d6","e0d7","e0d8","e0d9","e0da","e0db","e0dc","e0dd","e0de","e0df","e0e0","e0e1","e0e2","e0e3","e0e4","e0e5","e0e6","e0e7","e0e8","e0e9","e0ea","e0eb","e0ec","e0ed","e0ee","e0ef","e0f0","e0f1","e0f2","e0f3","e0f4","e0f5","e0f6","e0f7","e0f8","e0f9","e0fa","e0fb","e0fc","e0fd","e0fe","e0ff","e100","e101","e102","e103","e104","e105","e106","e107","e108","e109","e10a","e10b","e10c","e10d","e10e","e10f","e110","e111","e112","e113","e114","e115","e116","e117","e118","e119","e11a","e11b","e11c","e11d","e11e","e11f","e120","e121","e122","e123","e124","e125","e126","e127","e128","e129","e12a","e12b","e12c","e12d","e12e","e12f","e130","e131","e132","e133","e134","e135","e136","e137","e138","e139","e13a","e13b","e13c","e13d","e13e","e13f","e140","e141","e142","e143","e144","e145","e146","e147","e148","e149","e14a","e14b","e14c","e14d","e14e","e14f","e150","e151","e152","e153","e154","e155","e156","e157","e158","e159","e15a","e15b","e15c","e15d","e15e","e15f","e160","e161","e162","e163","e164","e165","e166","e167","e168","e169","e16a","e16b","e16c","e16d","e16e","e16f","e170","e171","e172","e173","e174","e175","e176","e177","e178","e179","e17a","e17b","e17c","e17d","e17e","e17f","e180","e181","e182","e183","e184","e185","e186","e187","e188","e189","e18a","e18b","e18c","e18d","e18e","e18f","e190","e191","e192","e193","e194","e195","e196","e197","e198","e199","e19a","e19b","e19c","e19d","e19e","e19f","e1a0","e1a1","e1a2","e1a3","e1a4","e1a5","e1a6","e1a7","e1a8","e1a9","e1aa","e1ab","e1ab","e1ac","e1ac","e1ad","e1ae","e1ae","e1af","e1b0","e1b1","e1b2","e1b3","e1b4","e1b5","e1b6","e1b7","e1b8","e1b9","e1ba","e1bb","e1bc","e1bd","e1be","e1bf","e1c0","e1c1","e1c2","e1c3","e1c4","e1c5","e1c6","e1c7","e1c8","e1c9","e1ca","e1cb","e1cc","e1cd","e1ce","e1cf","e1d0","e1d1","e1d2","e1d3","e1d4","e1d5","e1d6","e1d7","e1d8","e1d9","e1da","e1db","e1dc","e1dd","e1de","e1df","e1e0","e1e1","e1e2","e1e3","e1e4","e1e5","e1e6","e1e7","e1e8","e1e9","e1ea","e1eb","e1ec","e1ed","e1ee","e1ef","e1f0","e1f1","e1f2","e1f3","e1f4","e1f5","e1f6","e1f7","e1f8","e1f9","e200","e1fa","e1fb","e1fc","e1fd","e1fe","e1ff","e201","e202","e203","e204","e205","e206","e207","e208","e209","e20a","e20b","e20c","e20d","e20e","e20f","e210","e211","e212"];var m={"chalkboard":true,"calendar":true,"alphabetical-order":true,"address-book":true,"hint":true,"payment-approval":true,"batch-payments":true,"arobase":true,"question-mark":true,"lead":true,"lead-outdated":true,"simple-payment":true,"sales-order-item":true,"sales-order":true,"per-diem":true,"paid-leave":true,"pdf-reader":true,"my-sales-order":true,"loan":true,"globe":true,"waiver":true,"unpaid-leave":true,"customer-financial-fact-sheet":true,"crm-sales":true,"commission-check":true,"collections-insight":true,"capital-projects":true,"business-one":true,"travel-expense":true,"travel-expense-report":true,"travel-request":true,"time-overtime":true,"sales-quote":true,"sales-notification":true,"incident":true,"money-bills":true,"sales-document":true,"opportunities":true,"expense-report":true,"monitor-payments":true,"widgets":true,"sys-help-2":true,"sys-help":true,"accept":true,"accounting-document-verification":true,"activities":true,"activity-2":true,"add-activity":true,"add-activity-2":true,"approvals":true,"bbyd-active-sales":true,"business-by-design":true,"cart-approval":true,"complete":true,"customer-order-entry":true,"employee-approvals":true,"hr-approval":true,"kpi-corporate-performance":true,"kpi-managing-my-area":true,"survey":true,"sys-enter":true,"sys-enter-2":true,"task":true,"message-information":true,"past":true,"future":true,"check-availability":true,"order-status":true,"eam-work-order":true,"message-success":true,"choropleth-chart":true,"geographic-bubble-chart":true,"sap-logo-shape":true,"play":true,"media-play":true,"media-reverse":true,"media-rewind":true,"media-forward":true};var s="SAP-icons";var p="sap-icon";var r={};var f=false;var a=function(){throw new Error();};a.createControlByURI=function(c,d){if(typeof c==="string"){c={src:c};}if(c&&c.src){var S=c.src,C=d;if(a.isIconURI(S)){if(!sap.ui.core.Icon){q.sap.require("sap.ui.core.Icon");}C=sap.ui.core.Icon;if(c.tap){c.press=c.tap;delete c.tap;}c=C.getMetadata().removeUnknownSettings(c);}if(typeof C==="function"){return new C(c);}}};a.addIcon=function(c,d,e){if(typeof e==="string"){e={fontFamily:arguments[2],content:arguments[3],overWrite:!!arguments[4],suppressMirroring:!!arguments[5]};}if(!r[d]){r[d]={};}var g=r[d],h,o=g[c],j;if(o&&(d===undefined||!e.overWrite)){q.sap.log.warning("icon with the same iconName in the collection already exists, specify the last parameter to true in order to overwrite");return;}j={protocol:p,hostname:d||c,path:d?c:undefined};h={name:c,collection:d,uri:window.URI.build(j),fontFamily:e.fontFamily,content:String.fromCharCode(parseInt(e.content,16)),suppressMirroring:e.suppressMirroring,skipMirroring:e.suppressMirroring};g[c]=h;return h;};a.getIconURI=function(c,d){var e=r[d];if(e&&e[c]){return e[c].uri;}};a.getIconInfo=function(c,d){a.insertFontFaceStyle();var P=c,e=d,g,h;if(this.isIconURI(c)){g=window.URI.parse(c);if(g.path.length===1){P=g.hostname;e=undefined;}else{e=g.hostname;P=g.path.substr(1,g.path.length);}}h=r[e];return h&&h[P];};a.isIconURI=function(u){if(!u){return false;}var c=window.URI.parse(u);return(c.protocol===p)&&!!c.hostname;};a.getIconCollectionNames=function(){var n=[];q.map(r,function(v,k){n.push(k);});return n;};a.getIconNames=function(c){var d=r[c],n=[];q.map(d,function(v,k){n.push(k);});return n;};a.insertFontFaceStyle=function(){if(f){return;}var F=q.sap.getModulePath("sap.ui.core",'/')+"themes/base/fonts/",c;if(!!sap.ui.Device.browser.internet_explorer&&sap.ui.Device.browser.version<10&&window.self!==window.top){F=a._calcAbsPath(F,window.location.href);}c="@font-face {"+"font-family: 'SAP-icons';"+"src: url('"+F+"SAP-icons.eot');"+"src: url('"+F+"SAP-icons.eot?#iefix') format('embedded-opentype'),"+"url('"+F+"SAP-icons.ttf') format('truetype');"+"font-weight: normal;"+"font-style: normal;"+"}";q('head').append('');f=true;};a._calcAbsPath=function(R,B){B=B&&B.replace(/\?.*|#.*/g,"");var u=new window.URI(R),A=u.absoluteTo(B);return A.href();};a._isMirroringSkipped=function(c){return!!m[c];};q.each(i,function(c,n){a.addIcon(n,undefined,{fontFamily:s,content:I[c],suppressMirroring:a._isMirroringSkipped(n)});});var b={"application/msword":"sap-icon://doc-attachment","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"sap-icon://doc-attachment","application/rtf":"sap-icon://doc-attachment","application/pdf":"sap-icon://pdf-attachment","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"sap-icon://excel-attachment","application/msexcel":"sap-icon://excel-attachment","application/vnd.ms-powerpoint":"sap-icon://ppt-attachment","application/vnd.openxmlformats-officedocument.presentationml.presentation":"sap-icon://ppt-attachment","application/vnd.openxmlformats-officedocument.presentationml.slideshow":"sap-icon://ppt-attachment","application/mspowerpoint":"sap-icon://ppt-attachment","application/xml":"sap-icon://attachment-html","application/xhtml+xml":"sap-icon://attachment-html","application/x-httpd-php":"sap-icon://attachment-html","application/x-javascript":"sap-icon://attachment-html","application/gzip":"sap-icon://attachment-zip-file","application/x-rar-compressed":"sap-icon://attachment-zip-file","application/x-tar":"sap-icon://attachment-zip-file","application/zip":"sap-icon://attachment-zip-file","audio/voxware":"sap-icon://attachment-audio","audio/x-aiff":"sap-icon://attachment-audio","audio/x-midi":"sap-icon://attachment-audio","audio/x-mpeg":"sap-icon://attachment-audio","audio/x-pn-realaudio":"sap-icon://attachment-audio","audio/x-pn-realaudio-plugin":"sap-icon://attachment-audio","audio/x-qt-stream":"sap-icon://attachment-audio","audio/x-wav":"sap-icon://attachment-audio","image/png":"sap-icon://attachment-photo","image/tiff":"sap-icon://attachment-photo","image/bmp":"sap-icon://attachment-photo","image/jpeg":"sap-icon://attachment-photo","image/gif":"sap-icon://attachment-photo","text/plain":"sap-icon://attachment-text-file","text/comma-separated-values":"sap-icon://attachment-text-file","text/css":"sap-icon://attachment-text-file","text/html":"sap-icon://attachment-text-file","text/javascript":"sap-icon://attachment-text-file","text/richtext":"sap-icon://attachment-text-file","text/rtf":"sap-icon://attachment-text-file","text/tab-separated-values":"sap-icon://attachment-text-file","text/xml":"sap-icon://attachment-text-file","video/mpeg":"sap-icon://attachment-video","video/quicktime":"sap-icon://attachment-video","video/x-msvideo":"sap-icon://attachment-video","application/x-shockwave-flash":"sap-icon://attachment-video"};a.getIconForMimeType=function(M){return b[M]||"sap-icon://document";};return a;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/IconRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/IconRenderer-dbg.js new file mode 100644 index 0000000..8ff5eac --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/IconRenderer-dbg.js @@ -0,0 +1,86 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(["jquery.sap.global"], + function(jQuery) { + "use strict"; + + /** + * Font-Icon renderer. + * @namespace + * @alias sap.ui.core.IconRenderer + */ + var IconRenderer = {}; + + /** + * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}. + * + * @param {sap.ui.core.RenderManager} oRm The RenderManager that can be used for writing to the render output buffer. + * @param {sap.ui.core.Control} oControl An object representation of the control that should be rendered. + */ + IconRenderer.render = function(oRm, oControl) { + // write the HTML into the render manager + var oIconInfo = sap.ui.core.IconPool.getIconInfo(oControl.getSrc()), + sWidth = oControl.getWidth(), + sHeight = oControl.getHeight(), + sColor = oControl.getColor(), + sBackgroundColor = oControl.getBackgroundColor(), + sSize = oControl.getSize(), + sTooltip = oControl.getTooltip_AsString(); + + oRm.write(""); + }; + + return IconRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/IconRenderer.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/IconRenderer.js new file mode 100644 index 0000000..a5d3009 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/IconRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(["jquery.sap.global"],function(q){"use strict";var I={};I.render=function(r,c){var i=sap.ui.core.IconPool.getIconInfo(c.getSrc()),w=c.getWidth(),h=c.getHeight(),C=c.getColor(),b=c.getBackgroundColor(),s=c.getSize(),t=c.getTooltip_AsString();r.write("");};return I;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/IntervalTrigger-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/IntervalTrigger-dbg.js new file mode 100644 index 0000000..981d7f3 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/IntervalTrigger-dbg.js @@ -0,0 +1,142 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global', './EventBus'], + function(jQuery, EventBus) { + "use strict"; + + + + + var _EVENT_ID = "sapUiIntervalTrigger-event"; + + /** + * Creates an instance of EventBus. + * + * @class Provides a trigger that triggers in a set interval and calls all + * registered listeners. If the interval is <= 0 the trigger is + * switched off and won't trigger at all. + * @param {int} + * iInterval is the interval the trigger should be used. If the + * trigger is >0 triggering starts/runs and if the interval is + * set to <=0 triggering stops. + * + * @extends sap.ui.base.Object + * @author SAP SE + * @version 1.28.5 + * @constructor + * @public + * @since 1.11.0 + * @alias sap.ui.core.IntervalTrigger + */ + var IntervalTrigger = sap.ui.base.Object.extend("sap.ui.core.IntervalTrigger", { + constructor : function(iInterval) { + sap.ui.base.Object.apply(this); + + this._oEventBus = new EventBus(); + + this._delayedCallId = null; + this._triggerProxy = jQuery.proxy(trigger, this); + + this._iInterval = 0; + if (iInterval) { + this.setInterval(iInterval); + } + } + }); + + /** + * This is the function that will be used for triggering. This function is + * called by a proxy call. + * + * @private + */ + var trigger = function() { + jQuery.sap.clearDelayedCall(this._delayedCallId); + + // if interval is active and there are registered listeners + var bHasListeners = this._oEventBus._defaultChannel.hasListeners(_EVENT_ID); + if (this._iInterval > 0 && bHasListeners) { + this._oEventBus.publish(_EVENT_ID); + + this._delayedCallId = jQuery.sap.delayedCall(this._iInterval, this, this._triggerProxy); + } + }; + + /** + * Destructor method for objects. + * + * @public + */ + IntervalTrigger.prototype.destroy = function() { + sap.ui.base.Object.prototype.destroy.apply(this, arguments); + + delete this._triggerProxy; + + this._oEventBus.destroy(); + delete this._oEventBus; + }; + + /** + * Sets the trigger interval. If the value is >0 triggering will start if + * there are any registered listeners. If the interval is set to <=0 + * triggering will stop. + * + * @public + * @param {int} + * iInterval sets the interval in milliseconds when a new + * triggering should occur. + */ + IntervalTrigger.prototype.setInterval = function(iInterval) { + jQuery.sap.assert((typeof iInterval === "number"), "Interval must be an integer value"); + + // only change and (re)trigger if the interval is different + if (this._iInterval !== iInterval) { + this._iInterval = iInterval; + this._triggerProxy(); + } + }; + + /** + * Adds a listener to the list that should be triggered. + * + * @public + * @param {function} + * fnFunction is the called function that should be called when + * the trigger want to trigger the listener. + * @param {object} + * [oListener] that should be triggered. + */ + IntervalTrigger.prototype.addListener = function(fnFunction, oListener) { + this._oEventBus.subscribe(_EVENT_ID, fnFunction, oListener); + + this._triggerProxy(); + }; + + /** + * Removes corresponding listener from list. + * + * @public + * @param {function} + * fnFunction is the previously registered function + * @param {object} + * [oListener] that should be removed + */ + IntervalTrigger.prototype.removeListener = function(fnFunction, oListener) { + this._oEventBus.unsubscribe(_EVENT_ID, fnFunction, oListener); + }; + + /** + * @see sap.ui.base.Object#getInterface + * @public + */ + IntervalTrigger.prototype.getInterface = function() { + return this; + }; + + + return IntervalTrigger; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/IntervalTrigger.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/IntervalTrigger.js new file mode 100644 index 0000000..376a3d9 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/IntervalTrigger.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./EventBus'],function(q,E){"use strict";var _="sapUiIntervalTrigger-event";var I=sap.ui.base.Object.extend("sap.ui.core.IntervalTrigger",{constructor:function(i){sap.ui.base.Object.apply(this);this._oEventBus=new E();this._delayedCallId=null;this._triggerProxy=q.proxy(t,this);this._iInterval=0;if(i){this.setInterval(i);}}});var t=function(){q.sap.clearDelayedCall(this._delayedCallId);var h=this._oEventBus._defaultChannel.hasListeners(_);if(this._iInterval>0&&h){this._oEventBus.publish(_);this._delayedCallId=q.sap.delayedCall(this._iInterval,this,this._triggerProxy);}};I.prototype.destroy=function(){sap.ui.base.Object.prototype.destroy.apply(this,arguments);delete this._triggerProxy;this._oEventBus.destroy();delete this._oEventBus;};I.prototype.setInterval=function(i){if(this._iInterval!==i){this._iInterval=i;this._triggerProxy();}};I.prototype.addListener=function(f,l){this._oEventBus.subscribe(_,f,l);this._triggerProxy();};I.prototype.removeListener=function(f,l){this._oEventBus.unsubscribe(_,f,l);};I.prototype.getInterface=function(){return this;};return I;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/InvisibleText-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/InvisibleText-dbg.js new file mode 100644 index 0000000..4f5e371 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/InvisibleText-dbg.js @@ -0,0 +1,144 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.core.InvisibleText. +sap.ui.define(['jquery.sap.global', './Control', './library', 'jquery.sap.strings'], + function(jQuery, Control, library, strings) { + "use strict"; + + + + /** + * Constructor for a new InvisibleText. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * An InvisibleText is used to bring hidden texts to the UI for screen reader support. The hidden text can e.g. be referenced + * in the ariaLabelledBy or ariaDescribedBy associations of other controls. + * + * The inherited properties busy, busyIndicatorDelay and visible and the aggregation tooltip is not supported by this control. + * + * @extends sap.ui.core.Control + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.27.0 + * @alias sap.ui.core.InvisibleText + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var InvisibleText = Control.extend("sap.ui.core.InvisibleText", /** @lends sap.ui.core.InvisibleText.prototype */ { + metadata : { + library : "sap.ui.core", + publicMethods: ["toStatic"], + properties : { + + /** + * The text of the InvisibleText. + */ + text : {type : "string", defaultValue : ""} + } + }, + + renderer : function(oRm, oControl) { + // The text is hidden through "display: none" in the shared CSS class + // "sapUiInvisibleText", as an alternative in case screen readers have trouble with + // "display: none", the following class definition could be used: + // .sapUiInvisibleText { + // display: inline-block !important; + // visibility: hidden !important; + // width: 0 !important; + // height: 0 !important; + // overflow: hidden !important; + // position: absolute !important; + // } + + oRm.write(""); + oRm.writeEscaped(oControl.getText() || ""); + oRm.write(""); + } + }); + + /** + * @return {sap.ui.core.InvisibleControl} Returns this to allow method chaining + * @public + * @deprecated Local BusyIndicator is not supported by control. + */ + InvisibleText.prototype.setBusy = function() { + jQuery.sap.log.warning("Property busy is not supported by control sap.ui.core.InvisibleText."); + return this; + }; + + /** + * @return {sap.ui.core.InvisibleControl} Returns this to allow method chaining + * @public + * @deprecated Local BusyIndicator is not supported by control. + */ + InvisibleText.prototype.setBusyIndicatorDelay = function() { + jQuery.sap.log.warning("Property busyIndicatorDelay is not supported by control sap.ui.core.InvisibleText."); + return this; + }; + + /** + * @return {sap.ui.core.InvisibleControl} Returns this to allow method chaining + * @public + * @deprecated Property visible is not supported by control. + */ + InvisibleText.prototype.setVisible = function() { + jQuery.sap.log.warning("Property visible is not supported by control sap.ui.core.InvisibleText."); + return this; + }; + + /** + * @return {sap.ui.core.InvisibleControl} Returns this to allow method chaining + * @public + * @deprecated Tooltip is not supported by control. + */ + InvisibleText.prototype.setTooltip = function() { + jQuery.sap.log.warning("Aggregation tooltip is not supported by control sap.ui.core.InvisibleText."); + return this; + }; + + InvisibleText.prototype.setText = function(sText) { + this.setProperty("text", sText, true); + this.$().html(jQuery.sap.encodeHTML(this.getText() || "")); + return this; + }; + + /** + * Adds this control into the static, hidden area UI area container. + * + * @return {sap.ui.core.InvisibleControl} Returns this to allow method chaining + * @public + * @see sap.ui.core.Control#placeAt + */ + InvisibleText.prototype.toStatic = function() { + var oCore = sap.ui.getCore(); + + try { + var oStatic = oCore.getStaticAreaRef(); + var oRM = oCore.createRenderManager(); + oRM.render(this, oStatic); + oRM.destroy(); + } catch(e) { + this.placeAt("sap-ui-static"); + } + + return this; + }; + + return InvisibleText; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/InvisibleText.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/InvisibleText.js new file mode 100644 index 0000000..77f0649 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/InvisibleText.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Control','./library','jquery.sap.strings'],function(q,C,l,s){"use strict";var I=C.extend("sap.ui.core.InvisibleText",{metadata:{library:"sap.ui.core",publicMethods:["toStatic"],properties:{text:{type:"string",defaultValue:""}}},renderer:function(r,c){r.write("");r.writeEscaped(c.getText()||"");r.write("");}});I.prototype.setBusy=function(){q.sap.log.warning("Property busy is not supported by control sap.ui.core.InvisibleText.");return this;};I.prototype.setBusyIndicatorDelay=function(){q.sap.log.warning("Property busyIndicatorDelay is not supported by control sap.ui.core.InvisibleText.");return this;};I.prototype.setVisible=function(){q.sap.log.warning("Property visible is not supported by control sap.ui.core.InvisibleText.");return this;};I.prototype.setTooltip=function(){q.sap.log.warning("Aggregation tooltip is not supported by control sap.ui.core.InvisibleText.");return this;};I.prototype.setText=function(t){this.setProperty("text",t,true);this.$().html(q.sap.encodeHTML(this.getText()||""));return this;};I.prototype.toStatic=function(){var c=sap.ui.getCore();try{var S=c.getStaticAreaRef();var r=c.createRenderManager();r.render(this,S);r.destroy();}catch(e){this.placeAt("sap-ui-static");}return this;};return I;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Item-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Item-dbg.js new file mode 100644 index 0000000..85f5f45 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Item-dbg.js @@ -0,0 +1,63 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.core.Item. +sap.ui.define(['jquery.sap.global', './Element', './library'], + function(jQuery, Element, library) { + "use strict"; + + + + /** + * Constructor for a new Item. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * A control base type. + * @extends sap.ui.core.Element + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.ui.core.Item + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var Item = Element.extend("sap.ui.core.Item", /** @lends sap.ui.core.Item.prototype */ { metadata : { + + library : "sap.ui.core", + properties : { + + /** + * The text to be displayed for the item. + */ + text : {type : "string", group : "Misc", defaultValue : ""}, + + /** + * Enabled items can be selected. + */ + enabled : {type : "boolean", group : "Misc", defaultValue : true}, + + /** + * Options are RTL and LTR. Alternatively, an item can inherit its text direction from its parent control. + */ + textDirection : {type : "sap.ui.core.TextDirection", group : "Misc", defaultValue : sap.ui.core.TextDirection.Inherit}, + + /** + * Can be used as input for subsequent actions. + */ + key : {type : "string", group : "Data", defaultValue : null} + } + }}); + + + + return Item; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Item.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Item.js new file mode 100644 index 0000000..1f29da9 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Item.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Element','./library'],function(q,E,l){"use strict";var I=E.extend("sap.ui.core.Item",{metadata:{library:"sap.ui.core",properties:{text:{type:"string",group:"Misc",defaultValue:""},enabled:{type:"boolean",group:"Misc",defaultValue:true},textDirection:{type:"sap.ui.core.TextDirection",group:"Misc",defaultValue:sap.ui.core.TextDirection.Inherit},key:{type:"string",group:"Data",defaultValue:null}}}});return I;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/LabelEnablement-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/LabelEnablement-dbg.js new file mode 100644 index 0000000..e99bc66 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/LabelEnablement-dbg.js @@ -0,0 +1,228 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides helper sap.ui.core.LabelEnablement +sap.ui.define(['jquery.sap.global'], + function(jQuery) { + "use strict"; + + // Mapping between controls and labels + var CONTROL_TO_LABELS_MAPPING = {}; + + // Returns the control for the given id (if available) and invalidates it if desired + function toControl(sId, bInvalidate) { + if (!sId) { + return null; + } + + var oControl = sap.ui.getCore().byId(sId); + if (oControl && bInvalidate) { + oControl.invalidate(); + } + + return oControl; + } + + // Updates the mapping tables for the given label, in destroy case only a cleanup is done + function refreshMapping(oLabel, bDestroy){ + var sLabelId = oLabel.getId(); + var sOldId = oLabel.__sLabeledControl; + var sNewId = bDestroy ? null : oLabel.getLabelForRendering(); + + if (sOldId == sNewId) { + return; + } + + //Invalidate the label itself (see setLabelFor, setAlternativeLabelFor) + if (!bDestroy) { + oLabel.invalidate(); + } + + //Update the label to control mapping (1-1 mapping) + if (sNewId) { + oLabel.__sLabeledControl = sNewId; + } else { + delete oLabel.__sLabeledControl; + } + + //Update the control to label mapping (1-n mapping) + var aLabelsOfControl; + if (sOldId) { + aLabelsOfControl = CONTROL_TO_LABELS_MAPPING[sOldId]; + if (aLabelsOfControl) { + aLabelsOfControl = jQuery.grep(aLabelsOfControl, function(sCurrentLabelId) { + return sCurrentLabelId != sLabelId; + }); + if (aLabelsOfControl.length) { + CONTROL_TO_LABELS_MAPPING[sOldId] = aLabelsOfControl; + } else { + delete CONTROL_TO_LABELS_MAPPING[sOldId]; + } + } + } + if (sNewId) { + aLabelsOfControl = CONTROL_TO_LABELS_MAPPING[sNewId] || []; + aLabelsOfControl.push(sLabelId); + CONTROL_TO_LABELS_MAPPING[sNewId] = aLabelsOfControl; + } + + //Invalidate related controls + toControl(sOldId, true); + toControl(sNewId, true); + } + + // Checks whether enrich function can be applied on the given control or prototype. + function checkLabelEnablementPreconditions(oControl) { + if (!oControl) { + throw new Error("sap.ui.core.LabelEnablement cannot enrich null"); + } + var oMetadata = oControl.getMetadata(); + if (!oMetadata.isInstanceOf("sap.ui.core.Label")) { + throw new Error("sap.ui.core.LabelEnablement only supports Controls with interface sap.ui.core.Label"); + } + var oLabelForAssociation = oMetadata.getAssociation("labelFor"); + if (!oLabelForAssociation || oLabelForAssociation.multiple) { + throw new Error("sap.ui.core.LabelEnablement only supports Controls with a to-1 association 'labelFor'"); + } + //Add more detailed checks here ? + } + + /** + * Helper functionality for enhancement of a Label with common label functionality. + * + * @see sap.ui.core.LabelEnablement#enrich + * + * @author SAP SE + * @version 1.28.5 + * @protected + * @alias sap.ui.core.LabelEnablement + * @namespace + */ + var LabelEnablement = {}; + + /** + * Helper function for the label control to render the html 'for' attribute. This function should be called + * at the desired location in the renderer code of the label control. + * + * @param {sap.ui.core.RenderManager} oRenderManager The RenderManager that can be used for writing to the render-output-buffer. + * @param {sap.ui.core.Label} oLabel The label for which the 'for' html attribute should be written to the render-output-buffer. + * @protected + */ + LabelEnablement.writeLabelForAttribute = function(oRenderManager, oLabel) { + if (!oLabel || !oLabel.getLabelForRendering) { + return; + } + + var sControlId = oLabel.getLabelForRendering(); + if (!sControlId) { + return; + } + + var oControl = toControl(sControlId); + if (oControl && oControl.getIdForLabel) { + // for some controls the label must point to an special HTML element, not the outer one. + sControlId = oControl.getIdForLabel(); + } + + if (sControlId) { + oRenderManager.writeAttributeEscaped("for", sControlId); + } + }; + + /** + * Returns an array of ids of the labels referencing the given element + * + * @param {sap.ui.core.Element} oElement the element whose accessibility state should be rendered + * @returns {string[]} an array of ids of the labels referencing the given element + * @public + */ + LabelEnablement.getReferencingLabels = function(oElement){ + var sId = oElement ? oElement.getId() : null; + if (!sId) { + return []; + } + return CONTROL_TO_LABELS_MAPPING[sId] || []; + }; + + + /** + * This function should be called on a label control to enrich it's functionality. + * + * Usage: + * The function can be called with a control prototype: + * + * sap.ui.core.LabelEnablement.enrich(my.Label.prototype); + * + * Or the function can be called on instance level in the init function of a label control: + * + * my.Label.prototype.init: function(){ + * sap.ui.core.LabelEnablement.enrich(this); + * } + * + * + * Preconditions: + * The given control must implement the interface sap.ui.core.Label and have an association 'labelFor' with cardinality 0..1. + * This function extends existing API functions. Ensure not to override this extensions AFTER calling this function. + * + * What does this function do? + * + * A mechanismn is added that ensures that a bidirectional reference between the label and it's labeled control is established: + * The label references the labeled control via the html 'for' attribute (@see sap.ui.core.LabelEnablement#writeLabelForAttribute). + * If the labeled control supports the aria-labelledby attribute. A reference to the label is added automatically. + * + * In addition an alternative to apply a for reference without influencing the labelFor association of the API is applied (e.g. used by Form). + * For this purpose the functions setAlternativeLabelFor and getLabelForRendering are added. + * + * @param {sap.ui.core.Control} oControl the label control which should be enriched with further label functionality. + * @throws Error if the given control cannot be enriched to violated preconditions (see above) + * @protected + */ + LabelEnablement.enrich = function(oControl) { + //Ensure that enhancement possible + checkLabelEnablementPreconditions(oControl); + + oControl.__orig_setLabelFor = oControl.setLabelFor; + oControl.setLabelFor = function(sId) { + var res = this.__orig_setLabelFor.apply(this, arguments); + refreshMapping(this); + return res; + }; + + oControl.__orig_exit = oControl.exit; + oControl.exit = function() { + this._sAlternativeId = null; + refreshMapping(this, true); + if (oControl.__orig_exit) { + oControl.__orig_exit.apply(this, arguments); + } + }; + + // Alternative to apply a for reference without influencing the labelFor association of the API (see e.g. FormElement) + oControl.setAlternativeLabelFor = function(sId) { + if (sId instanceof sap.ui.base.ManagedObject) { + sId = sId.getId(); + } else if (sId != null && typeof sId !== "string") { + jQuery.sap.assert(false, "setAlternativeLabelFor(): sId must be a string, an instance of sap.ui.base.ManagedObject or null"); + return this; + } + + this._sAlternativeId = sId; + refreshMapping(this); + + return this; + }; + + // Returns id of the labelled control. The labelFor association is preferred before AlternativeLabelFor. + oControl.getLabelForRendering = function() { + return this.getLabelFor() || this._sAlternativeId; + }; + + }; + + + return LabelEnablement; + +}, /* bExport= */ true); \ No newline at end of file diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/LabelEnablement.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/LabelEnablement.js new file mode 100644 index 0000000..7c7a22c --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/LabelEnablement.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var C={};function t(i,I){if(!i){return null;}var o=sap.ui.getCore().byId(i);if(o&&I){o.invalidate();}return o;}function r(l,d){var s=l.getId();var o=l.__sLabeledControl;var n=d?null:l.getLabelForRendering();if(o==n){return;}if(!d){l.invalidate();}if(n){l.__sLabeledControl=n;}else{delete l.__sLabeledControl;}var a;if(o){a=C[o];if(a){a=q.grep(a,function(b){return b!=s;});if(a.length){C[o]=a;}else{delete C[o];}}}if(n){a=C[n]||[];a.push(s);C[n]=a;}t(o,true);t(n,true);}function c(o){if(!o){throw new Error("sap.ui.core.LabelEnablement cannot enrich null");}var m=o.getMetadata();if(!m.isInstanceOf("sap.ui.core.Label")){throw new Error("sap.ui.core.LabelEnablement only supports Controls with interface sap.ui.core.Label");}var l=m.getAssociation("labelFor");if(!l||l.multiple){throw new Error("sap.ui.core.LabelEnablement only supports Controls with a to-1 association 'labelFor'");}}var L={};L.writeLabelForAttribute=function(R,l){if(!l||!l.getLabelForRendering){return;}var s=l.getLabelForRendering();if(!s){return;}var o=t(s);if(o&&o.getIdForLabel){s=o.getIdForLabel();}if(s){R.writeAttributeEscaped("for",s);}};L.getReferencingLabels=function(e){var i=e?e.getId():null;if(!i){return[];}return C[i]||[];};L.enrich=function(o){c(o);o.__orig_setLabelFor=o.setLabelFor;o.setLabelFor=function(i){var a=this.__orig_setLabelFor.apply(this,arguments);r(this);return a;};o.__orig_exit=o.exit;o.exit=function(){this._sAlternativeId=null;r(this,true);if(o.__orig_exit){o.__orig_exit.apply(this,arguments);}};o.setAlternativeLabelFor=function(i){if(i instanceof sap.ui.base.ManagedObject){i=i.getId();}else if(i!=null&&typeof i!=="string"){return this;}this._sAlternativeId=i;r(this);return this;};o.getLabelForRendering=function(){return this.getLabelFor()||this._sAlternativeId;};};return L;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/LayoutData-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/LayoutData-dbg.js new file mode 100644 index 0000000..c5b792e --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/LayoutData-dbg.js @@ -0,0 +1,67 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.core.LayoutData. +sap.ui.define(['jquery.sap.global', './Element', './library'], + function(jQuery, Element, library) { + "use strict"; + + + + /** + * Constructor for a new LayoutData. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * A layout data base type. + * @extends sap.ui.core.Element + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.ui.core.LayoutData + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var LayoutData = Element.extend("sap.ui.core.LayoutData", /** @lends sap.ui.core.LayoutData.prototype */ { metadata : { + + "abstract" : true, + library : "sap.ui.core" + }}); + + LayoutData.prototype.invalidate = function() { + //No call of Element.invalidate to avoid bubbling of invalidate + var oParent = this.getParent(); + + if (oParent && oParent.getMetadata().getName() == "sap.ui.core.VariantLayoutData") { + // layout is part of a VariantLayout - so use parent of this one + oParent = oParent.getParent(); + } + + if (oParent) { + var oLayout = oParent.getParent(); + if (oLayout) { + var oEvent = jQuery.Event("LayoutDataChange"); + oEvent.srcControl = oParent; + oLayout._handleEvent(oEvent); + } + } + }; + + LayoutData.prototype.setLayoutData = function(oLayoutData) { + + // as LayoutData on LayoutData makes no sense just ignore it. + return this; + + }; + + + return LayoutData; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/LayoutData.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/LayoutData.js new file mode 100644 index 0000000..bb5bcf2 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/LayoutData.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Element','./library'],function(q,E,l){"use strict";var L=E.extend("sap.ui.core.LayoutData",{metadata:{"abstract":true,library:"sap.ui.core"}});L.prototype.invalidate=function(){var p=this.getParent();if(p&&p.getMetadata().getName()=="sap.ui.core.VariantLayoutData"){p=p.getParent();}if(p){var o=p.getParent();if(o){var e=q.Event("LayoutDataChange");e.srcControl=p;o._handleEvent(e);}}};L.prototype.setLayoutData=function(o){return this;};return L;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ListItem-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ListItem-dbg.js new file mode 100644 index 0000000..b3ccb78 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ListItem-dbg.js @@ -0,0 +1,55 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.core.ListItem. +sap.ui.define(['jquery.sap.global', './Item', './library'], + function(jQuery, Item, library) { + "use strict"; + + + + /** + * Constructor for a new ListItem. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * An item that is used in lists or list-similar controls such as DropdownBox, for example. + * The element foresees the usage of additional texts displayed in a second column. + * @extends sap.ui.core.Item + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.ui.core.ListItem + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var ListItem = Item.extend("sap.ui.core.ListItem", /** @lends sap.ui.core.ListItem.prototype */ { metadata : { + + library : "sap.ui.core", + properties : { + + /** + * The icon belonging to this list item instance. + * This can be an URI to an image or an icon font URI. + */ + icon : {type : "string", group : "Appearance", defaultValue : null}, + + /** + * Some additional text of type string, optionally to be displayed along with this item. + */ + additionalText : {type : "string", group : "Data", defaultValue : null} + } + }}); + + + + return ListItem; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ListItem.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ListItem.js new file mode 100644 index 0000000..0888691 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ListItem.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Item','./library'],function(q,I,l){"use strict";var L=I.extend("sap.ui.core.ListItem",{metadata:{library:"sap.ui.core",properties:{icon:{type:"string",group:"Appearance",defaultValue:null},additionalText:{type:"string",group:"Data",defaultValue:null}}}});return L;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicator-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicator-dbg.js new file mode 100644 index 0000000..60b7233 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicator-dbg.js @@ -0,0 +1,187 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.core.LocalBusyIndicator. +sap.ui.define(['jquery.sap.global', './Control', './LocalBusyIndicatorRenderer', './library', './theming/Parameters'], + function(jQuery, Control, LocalBusyIndicatorRenderer, library, Parameters) { + "use strict"; + + + + /** + * Constructor for a new LocalBusyIndicator. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * The LocalBusyIndicator is a special version of the + * BusyIndicator. This one doesn't block the whole screen - it just + * blocks the corresponding control and puts a local animation over the + * control. To use the functionality of this control the corresponding + * control needs to be enabled via the 'LocalBusyIndicatorSupport' + * accordingly to the ListBox control (see the init-function of the + * ListBox). + * @extends sap.ui.core.Control + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.11.0 + * @deprecated Since version 1.14.2. + * The LocalBusyIndicator Control is not needed anymore by the new implementation of the LBI. Hence, it is not used anymore. + * @alias sap.ui.core.LocalBusyIndicator + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var LocalBusyIndicator = Control.extend("sap.ui.core.LocalBusyIndicator", /** @lends sap.ui.core.LocalBusyIndicator.prototype */ { metadata : { + + deprecated : true, + library : "sap.ui.core", + properties : { + + /** + * This property is the width of the control that has to + * be covered. With this width the position of the animation can be + * properly set. + */ + width : {type : "sap.ui.core.CSSSize", group : "Misc", defaultValue : '100px'}, + + /** + * This property is the height of the control that has to + * be covered. With this height the position of the animation can be + * properly set. + */ + height : {type : "sap.ui.core.CSSSize", group : "Misc", defaultValue : '100px'} + } + }}); + + + (function() { + + LocalBusyIndicator.prototype.init = function() { + var sRoot = "sap.ui.core.LocalBusyIndicator:"; + + var sParam = "sapUiLocalBusyIndicatorBoxSize"; + sParam = Parameters.get(sRoot + sParam); + // this._iBoxSize = parseInt(sParam, 10); + this._iBoxSize = 8; + + sParam = "sapUiLocalBusyIndicatorBoxColor"; + this._sBoxColor = Parameters.get(sRoot + sParam); + + sParam = "sapUiLocalBusyIndicatorBoxColorActive"; + this._sBoxColorActive = Parameters.get(sRoot + sParam); + + this._animateProxy = jQuery.proxy(fnAnimate, this); + }; + + LocalBusyIndicator.prototype.exit = function() { + jQuery.sap.clearDelayedCall(this._delayedCallId); + delete this._delayedCallId; + }; + + LocalBusyIndicator.prototype.onThemeChanged = function(oEvent) { + if (this.getDomRef()) { + this.invalidate(); + } + }; + + LocalBusyIndicator.prototype.onAfterRendering = function() { + var w = parseInt(this.getWidth(), 10); + var h = parseInt(this.getHeight(), 10); + + var $this = this.$(); + $this.css("width", w + "px"); + $this.css("height", h + "px"); + + var $animation = this.$("animation"); + + var left = Math.floor(w / 2); + left -= Math.floor((5 * this._iBoxSize) / 2); + + var top = Math.floor(h / 2) - Math.floor(this._iBoxSize / 2); + + $animation.css("left", left + "px"); + $animation.css("top", top + "px"); + + if (!this._$left) { + this._$left = this.$("leftBox"); + } + if (!this._$middle) { + this._$middle = this.$("middleBox"); + } + if (!this._$right) { + this._$right = this.$("rightBox"); + } + + this._delayedCallId = jQuery.sap.delayedCall(0, this, this._animateProxy); + }; + + var fnAnimate = function() { + if (this.getDomRef()) { + var that = this; + var $left, $middle, $right; + var color = "", colorActive = ""; + + /* + * All this steps ensure that the control won't crash if during an + * animation the control was destroyed. + */ + if (that._$left) { + $left = that._$left; + } else { + return; + } + if (that._$middle) { + $middle = that._$middle; + } else { + return; + } + if (that._$right) { + $right = that._$right; + } else { + return; + } + if (that._sBoxColor) { + color = that._sBoxColor; + } else { + return; + } + if (that._sBoxColorActive) { + colorActive = that._sBoxColorActive; + } else { + return; + } + + $left.css("background-color", colorActive); + + setTimeout(function() { + $left.css("background-color", color); + + $middle.css("background-color", colorActive); + + setTimeout(function() { + $middle.css("background-color", color); + + $right.css("background-color", colorActive); + + setTimeout(function() { + $right.css("background-color", color); + }, 150); + }, 150); + }, 150); + + this._delayedCallId = jQuery.sap.delayedCall(1200, this, this._animateProxy); + } + }; + + }()); + + return LocalBusyIndicator; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicator.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicator.js new file mode 100644 index 0000000..d5da850 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicator.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Control','./LocalBusyIndicatorRenderer','./library','./theming/Parameters'],function(q,C,L,l,P){"use strict";var a=C.extend("sap.ui.core.LocalBusyIndicator",{metadata:{deprecated:true,library:"sap.ui.core",properties:{width:{type:"sap.ui.core.CSSSize",group:"Misc",defaultValue:'100px'},height:{type:"sap.ui.core.CSSSize",group:"Misc",defaultValue:'100px'}}}});(function(){a.prototype.init=function(){var r="sap.ui.core.LocalBusyIndicator:";var p="sapUiLocalBusyIndicatorBoxSize";p=P.get(r+p);this._iBoxSize=8;p="sapUiLocalBusyIndicatorBoxColor";this._sBoxColor=P.get(r+p);p="sapUiLocalBusyIndicatorBoxColorActive";this._sBoxColorActive=P.get(r+p);this._animateProxy=q.proxy(A,this);};a.prototype.exit=function(){q.sap.clearDelayedCall(this._delayedCallId);delete this._delayedCallId;};a.prototype.onThemeChanged=function(e){if(this.getDomRef()){this.invalidate();}};a.prototype.onAfterRendering=function(){var w=parseInt(this.getWidth(),10);var h=parseInt(this.getHeight(),10);var $=this.$();$.css("width",w+"px");$.css("height",h+"px");var b=this.$("animation");var c=Math.floor(w/2);c-=Math.floor((5*this._iBoxSize)/2);var t=Math.floor(h/2)-Math.floor(this._iBoxSize/2);b.css("left",c+"px");b.css("top",t+"px");if(!this._$left){this._$left=this.$("leftBox");}if(!this._$middle){this._$middle=this.$("middleBox");}if(!this._$right){this._$right=this.$("rightBox");}this._delayedCallId=q.sap.delayedCall(0,this,this._animateProxy);};var A=function(){if(this.getDomRef()){var t=this;var $,b,c;var d="",e="";if(t._$left){$=t._$left;}else{return;}if(t._$middle){b=t._$middle;}else{return;}if(t._$right){c=t._$right;}else{return;}if(t._sBoxColor){d=t._sBoxColor;}else{return;}if(t._sBoxColorActive){e=t._sBoxColorActive;}else{return;}$.css("background-color",e);setTimeout(function(){$.css("background-color",d);b.css("background-color",e);setTimeout(function(){b.css("background-color",d);c.css("background-color",e);setTimeout(function(){c.css("background-color",d);},150);},150);},150);this._delayedCallId=q.sap.delayedCall(1200,this,this._animateProxy);}};}());return a;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicatorRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicatorRenderer-dbg.js new file mode 100644 index 0000000..ffcde10 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicatorRenderer-dbg.js @@ -0,0 +1,70 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'], + function(jQuery) { + "use strict"; + + + /** + * @class LocalBusyIndicator renderer. + * @static + * @alias sap.ui.core.LocalBusyIndicatorRenderer + */ + var LocalBusyIndicatorRenderer = {}; + + (function() { + /** + * Renders the HTML for the given control, using the provided + * {@link sap.ui.core.RenderManager}. + * + * @param {sap.ui.core.RenderManager} + * oRm the RenderManager that can be used for writing to the + * render output buffer + * @param {sap.ui.core.Control} + * oControl an object representation of the control that should + * be rendered + */ + LocalBusyIndicatorRenderer.render = function(oRm, oControl) { + oRm.write(""); + + fnRenderFlickerDivs(oRm, oControl); + + oRm.write("
    "); + }; + + var fnRenderFlickerDivs = function(oRm, oControl) { + var sId = oControl.getId(); + var sIdAnimation = sId + "-animation"; + var aBoxEnum = [ "-leftBox", "-middleBox", "-rightBox" ]; + + oRm.write('"); + + for ( var i = 0; i < aBoxEnum.length; i++) { + oRm.write('"); + oRm.write("
    "); + + } + + oRm.write(""); + }; + }()); + + return LocalBusyIndicatorRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicatorRenderer.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicatorRenderer.js new file mode 100644 index 0000000..a0ddc90 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicatorRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var L={};(function(){L.render=function(R,c){R.write("");r(R,c);R.write("");};var r=function(R,c){var I=c.getId();var s=I+"-animation";var b=["-leftBox","-middleBox","-rightBox"];R.write('");for(var i=0;i");R.write("");}R.write("");};}());return L;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicatorSupport-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicatorSupport-dbg.js new file mode 100644 index 0000000..35cc790 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicatorSupport-dbg.js @@ -0,0 +1,48 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides helper sap.ui.core.LocalBusyIndicatorSupport +sap.ui.define(['jquery.sap.global', './Element'], + function(jQuery, Element) { + "use strict"; + + + /** + * This class is only here for compatibility reasons. LBI works automatically with all controls + * + * @returns {sap.ui.core.LocalBusyIndicatorSupport} + * @constructor + * @private + * @deprecated + * @alias sap.ui.core.LocalBusyIndicatorSupport + */ + var LocalBusyIndicatorSupport = function() { + // "this" is the prototype now when called with apply() + + // Ensure only Element prototype is enhanced + if (this === sap.ui.core.Control.prototype) { + + /** + * This function set the delay until the BusyIndicator is being shown + * + * @private + * @param iDelay + */ + this.setDelay = function(iDelay) { + this.setBusyIndicatorDelay(iDelay); + }; + + } else { + jQuery.sap.log.error("Only controls can use the LocalBusyIndicator", this); + } + }; + + //moved here to fix the cyclic dependency LocalBusyIndicatorSupport, Element, control + + + return LocalBusyIndicatorSupport; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicatorSupport.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicatorSupport.js new file mode 100644 index 0000000..ac6059b --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocalBusyIndicatorSupport.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Element'],function(q,E){"use strict";var L=function(){if(this===sap.ui.core.Control.prototype){this.setDelay=function(d){this.setBusyIndicatorDelay(d);};}else{q.sap.log.error("Only controls can use the LocalBusyIndicator",this);}};return L;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Locale-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Locale-dbg.js new file mode 100644 index 0000000..719c691 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Locale-dbg.js @@ -0,0 +1,338 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +//Provides the locale object sap.ui.core.Locale +sap.ui.define(['jquery.sap.global', 'sap/ui/base/Object'], + function(jQuery, BaseObject) { + "use strict"; + + + + + /** + * A regular expression that describes language tags according to BCP-47. + * @see BCP47 "Tags for Identifying Languages" (http://www.ietf.org/rfc/bcp/bcp47.txt) + * + * The matching groups are + * 0=all + * 1=language (shortest ISO639 code + ext. language sub tags | 4digits (reserved) | registered language sub tags) + * 2=script (4 letters) + * 3=region (2letter language or 3 digits) + * 4=variants (separated by '-', Note: capturing group contains leading '-' to shorten the regex!) + * 5=extensions (including leading singleton, multiple extensions separated by '-') + * 6=private use section (including leading 'x', multiple sections separated by '-') + * + * [-------------------- language ----------------------][--- script ---][------- region --------][------------ variants --------------][--------- extensions --------------][------ private use -------] + */ + var rLocale = /^((?:[A-Z]{2,3}(?:-[A-Z]{3}){0,3})|[A-Z]{4}|[A-Z]{5,8})(?:-([A-Z]{4}))?(?:-([A-Z]{2}|[0-9]{3}))?(-[0-9A-Z]{5,8}|(?:[0-9][0-9A-Z]{3}))*(?:-([0-9A-WYZ](?:-[0-9A-Z]{2,8})+))*(?:-(X(?:-[0-9A-Z]{1,8})+))?$/i; + + /** + * Creates an instance of the Locale. + * + * @class Locale represents a locale setting, consisting of a language, script, region, variants, extensions and private use section + * + * @param {string} sLocaleId the locale identifier, in format en-US or en_US. + * + * @extends sap.ui.base.Object + * @author SAP SE + * @version 1.28.5 + * @constructor + * @public + * @alias sap.ui.core.Locale + */ + var Locale = BaseObject.extend("sap.ui.core.Locale", /** @lends sap.ui.core.Locale.prototype */ { + + constructor : function(sLocaleId) { + BaseObject.apply(this); + var aResult = rLocale.exec(sLocaleId.replace(/_/g, "-")); + + // If the given Locale string cannot be parsed by the regular expression above we + // should at least tell the developer why the core fails to load. + if (aResult === null) { + throw "The given language does not adhere to BCP-47."; + } + + this.sLocaleId = sLocaleId; + this.sLanguage = aResult[1] || null; + this.sScript = aResult[2] || null; + this.sRegion = aResult[3] || null; + this.sVariant = (aResult[4] && aResult[4].slice(1)) || null; // remove leading dash from capturing group + this.sExtension = aResult[5] || null; + this.sPrivateUse = aResult[6] || null; + + // normalization according to BCP47: + if ( this.sLanguage ) { + this.sLanguage = this.sLanguage.toLowerCase(); + } + if ( this.sScript ) { + this.sScript = this.sScript.toLowerCase().replace(/^[a-z]/, function($) { + return $.toUpperCase(); + }); + } + if ( this.sRegion ) { + this.sRegion = this.sRegion.toUpperCase(); + } + }, + + /** + * Get the locale language. + * + * Note that the case might differ from the original script tag + * (Lower case is enforced as recommended by BCP47/ISO639). + * + * @return {string} the language code + * @public + */ + getLanguage : function() { + return this.sLanguage; + }, + + /** + * Get the locale script or null if none was specified. + * + * Note that the case might differ from the original language tag + * (Upper case first letter and lower case reminder enforced as + * recommended by BCP47/ISO15924) + * + * @return {string} the script code or null + * @public + */ + getScript : function() { + return this.sScript; + }, + + /** + * Get the locale region or null if none was specified. + * + * Note that the case might differ from the original script tag + * (Upper case is enforced as recommended by BCP47/ISO3166-1). + * + * @return {string} the ISO3166-1 region code (2-letter or 3-digits) + * @public + */ + getRegion : function() { + return this.sRegion; + }, + + /** + * Get the locale variants as a single string or null. + * + * Multiple variants are separated by a dash '-'. + * + * @return {string} the variant or null + * @public + */ + getVariant : function() { + return this.sVariant; + }, + + /** + * Get the locale variants as an array of individual variants. + * + * The separating dashes are not part of the result. + * If there is no variant section in the locale tag, an empty array is returned. + * + * @return {string[]} the individual variant sections + * @public + */ + getVariantSubtags : function() { + return this.sVariant ? this.sVariant.split('-') : []; + }, + + /** + * Get the locale extension as a single string or null. + * + * The extension always consists of a singleton character (not 'x'), + * a dash '-' and one or more extension token, each separated + * again with a dash. + * + * Use {@link #getExtensions} to get the individual extension tokens as an array. + * + * @return {string} the extension + * @public + */ + getExtension : function() { + return this.sExtension; + }, + + /** + * Get the locale extensions as an array of tokens. + * + * The leading singleton and the separating dashes are not part of the result. + * If there is no extensions section in the locale tag, an empty array is returned. + * + * @return {string[]} the individual extension sections + * @public + */ + getExtensionSubtags : function() { + return this.sExtension ? this.sExtension.slice(2).split('-') : []; + }, + + /** + * Get the locale private use section or null. + * + * @return {string} the private use section + * @public + */ + getPrivateUse : function() { + return this.sPrivateUse; + }, + + /** + * Get the locale private use section + * + * @return {string} the private use section + * @public + */ + getPrivateUseSubtags : function() { + return this.sPrivateUse ? this.sPrivateUse.slice(2).split('-') : []; + }, + + hasPrivateUseSubtag : function(sSubtag) { + jQuery.sap.assert(sSubtag && sSubtag.match(/^[0-9A-Z]{1,8}$/i), "subtag must be a valid BCP47 private use tag"); + return jQuery.inArray(sSubtag, this.getPrivateUseSubtags()) >= 0; + }, + + toString : function() { + var r = [this.sLanguage]; + if ( this.sScript ) { + r.push(this.sScript); + } + if ( this.sRegion ) { + r.push(this.sRegion); + } + if ( this.sVariant ) { + r.push(this.sVariant); + } + if ( this.sExtension ) { + r.push(this.sExtension ); + } + if ( this.sPrivateUse ) { + r.push(this.sPrivateUse ); + } + return r.join("-"); + }, + + /** + * Best guess to get a proper SAP Logon Language for this locale. + * + * Conversions taken into account: + *
      + *
    • use the language part only
    • + *
    • convert old ISO639 codes to newer ones (e.g. 'iw' to 'he')
    • + *
    • for Chinese, map 'Traditional Chinese' to SAP proprietary code 'zf'
    • + *
    • map private extensions x-sap1q and x-sap2q to SAP pseudo languages '1Q' and '2Q'
    • + *
    • remove ext. language sub tags
    • + *
    • convert to uppercase
    • + *
    + * + * Note that the conversion also returns a result for languages that are not + * supported by the default set of SAP languages. This method has no knowledge + * about the concrete languages of any given backend system. + * + * @return {string} a language code that should + * @public + * @since 1.17.0 + */ + getSAPLogonLanguage : function() { + var sLanguage = this.sLanguage || "", + m; + + // cut off any ext. language sub tags + if ( sLanguage.indexOf("-") >= 0 ) { + sLanguage = sLanguage.slice(0, sLanguage.indexOf("-")); + } + + // convert to new ISO codes + sLanguage = M_ISO639_OLD_TO_NEW[sLanguage] || sLanguage; + + // handle special cases for Chinese: map 'Traditional Chinese' (or region TW which implies Traditional) to 'zf' + if ( sLanguage === "zh" ) { + if ( this.sScript === "Hant" || (!this.sScript && this.sRegion === "TW") ) { + sLanguage = "zf"; + } + } + + // recognize SAP supportability pseudo languages + if ( this.sPrivateUse && (m = /-(saptrc|sappsd)(?:-|$)/i.exec(this.sPrivateUse)) ) { + sLanguage = (m[1].toLowerCase() === "saptrc") ? "1Q" : "2Q"; + } + + // by convention, SAP systems seem to use uppercase letters + return sLanguage.toUpperCase(); + } + + }); + + var M_ISO639_OLD_TO_NEW = { + "iw" : "he", + "ji" : "yi", + "in" : "id", + "sh" : "sr" + }; + + /** + * Helper to analyze and parse designtime variables + * + * @private + */ + function getDesigntimePropertyAsArray(sValue) { + var m = /\$([-a-z0-9A-Z._]+)(?::([^$]*))?\$/.exec(sValue); + return (m && m[2]) ? m[2].split(/,/) : null; + } + + /** + * A list of locales for which the CLDR specifies "right-to-left" + * as the character orientation. + * + * The string literal below is substituted during the build. + * The value is determined from the CLDR JSON files which are + * bundled with the UI5 runtime. + */ + var A_RTL_LOCALES = getDesigntimePropertyAsArray("$cldr-rtl-locales:ar,fa,he$") || []; + + /** + * A list of locales for which CLDR data is bundled wit the UI5 runtime. + * @private + */ + Locale._cldrLocales = getDesigntimePropertyAsArray("$cldr-locales:ar,ar_EG,ar_SA,bg,br,ca,cs,da,de,de_AT,de_CH,el,el_CY,en,en_AU,en_GB,en_HK,en_IE,en_IN,en_NZ,en_PG,en_SG,en_ZA,es,es_AR,es_BO,es_CL,es_CO,es_MX,es_PE,es_UY,es_VE,et,fa,fi,fr,fr_BE,fr_CA,fr_CH,fr_LU,he,hi,hr,hu,id,it,it_CH,ja,ko,lt,lv,nb,nl,nl_BE,nn,pl,pt,pt_PT,ro,ru,ru_UA,sk,sl,sr,sv,th,tr,uk,vi,zh_CN,zh_HK,zh_SG,zh_TW$"); + + /** + * List of locales for which translated texts have been bundled with the UI5 runtime. + * @private + */ + Locale._coreI18nLocales = getDesigntimePropertyAsArray("$core-i18n-locales:,ar,bg,ca,cs,da,de,el,en,es,et,fi,fr,hi,hr,hu,it,iw,ja,ko,lt,lv,nl,no,pl,pt,ro,ru,sh,sk,sl,sv,th,tr,uk,vi,zh_CN,zh_TW$"); + + /** + * Checks whether the given language tag implies a character orientation + * of 'right-to-left' ('RTL'). + * + * The implementation of this method and the configuration above assume + * that when a language (e.g. 'ar') is marked as 'RTL', then all language/region + * combinations for that language (e.g. 'ar_SA') will be 'RTL' as well, + * even if the combination is not mentioned in the above configuration. + * There is no mean to define RTL=false for a language/region, when RTL=true for + * the language alone. + * + * As of 3/2013 this is true for all supported locales/regions of UI5. + * + * @private + */ + Locale._impliesRTL = function(sLanguage) { + var oLocale = new Locale(sLanguage); + sLanguage = oLocale.getLanguage() || ""; + sLanguage = (sLanguage && M_ISO639_OLD_TO_NEW[sLanguage]) || sLanguage; + var sRegion = oLocale.getRegion() || ""; + + if ( sRegion && jQuery.inArray(sLanguage + "_" + sRegion, A_RTL_LOCALES) >= 0 ) { + return true; + } + return jQuery.inArray(sLanguage, A_RTL_LOCALES) >= 0; + }; + + return Locale; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Locale.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Locale.js new file mode 100644 index 0000000..478eb87 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Locale.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/base/Object'],function(q,B){"use strict";var a=/^((?:[A-Z]{2,3}(?:-[A-Z]{3}){0,3})|[A-Z]{4}|[A-Z]{5,8})(?:-([A-Z]{4}))?(?:-([A-Z]{2}|[0-9]{3}))?(-[0-9A-Z]{5,8}|(?:[0-9][0-9A-Z]{3}))*(?:-([0-9A-WYZ](?:-[0-9A-Z]{2,8})+))*(?:-(X(?:-[0-9A-Z]{1,8})+))?$/i;var L=B.extend("sap.ui.core.Locale",{constructor:function(l){B.apply(this);var r=a.exec(l.replace(/_/g,"-"));if(r===null){throw"The given language does not adhere to BCP-47.";}this.sLocaleId=l;this.sLanguage=r[1]||null;this.sScript=r[2]||null;this.sRegion=r[3]||null;this.sVariant=(r[4]&&r[4].slice(1))||null;this.sExtension=r[5]||null;this.sPrivateUse=r[6]||null;if(this.sLanguage){this.sLanguage=this.sLanguage.toLowerCase();}if(this.sScript){this.sScript=this.sScript.toLowerCase().replace(/^[a-z]/,function($){return $.toUpperCase();});}if(this.sRegion){this.sRegion=this.sRegion.toUpperCase();}},getLanguage:function(){return this.sLanguage;},getScript:function(){return this.sScript;},getRegion:function(){return this.sRegion;},getVariant:function(){return this.sVariant;},getVariantSubtags:function(){return this.sVariant?this.sVariant.split('-'):[];},getExtension:function(){return this.sExtension;},getExtensionSubtags:function(){return this.sExtension?this.sExtension.slice(2).split('-'):[];},getPrivateUse:function(){return this.sPrivateUse;},getPrivateUseSubtags:function(){return this.sPrivateUse?this.sPrivateUse.slice(2).split('-'):[];},hasPrivateUseSubtag:function(s){return q.inArray(s,this.getPrivateUseSubtags())>=0;},toString:function(){var r=[this.sLanguage];if(this.sScript){r.push(this.sScript);}if(this.sRegion){r.push(this.sRegion);}if(this.sVariant){r.push(this.sVariant);}if(this.sExtension){r.push(this.sExtension);}if(this.sPrivateUse){r.push(this.sPrivateUse);}return r.join("-");},getSAPLogonLanguage:function(){var l=this.sLanguage||"",m;if(l.indexOf("-")>=0){l=l.slice(0,l.indexOf("-"));}l=M[l]||l;if(l==="zh"){if(this.sScript==="Hant"||(!this.sScript&&this.sRegion==="TW")){l="zf";}}if(this.sPrivateUse&&(m=/-(saptrc|sappsd)(?:-|$)/i.exec(this.sPrivateUse))){l=(m[1].toLowerCase()==="saptrc")?"1Q":"2Q";}return l.toUpperCase();}});var M={"iw":"he","ji":"yi","in":"id","sh":"sr"};function g(v){var m=/\$([-a-z0-9A-Z._]+)(?::([^$]*))?\$/.exec(v);return(m&&m[2])?m[2].split(/,/):null;}var A=g("$cldr-rtl-locales:ar,fa,he$")||[];L._cldrLocales=g("$cldr-locales:ar,ar_EG,ar_SA,bg,br,ca,cs,da,de,de_AT,de_CH,el,el_CY,en,en_AU,en_GB,en_HK,en_IE,en_IN,en_NZ,en_PG,en_SG,en_ZA,es,es_AR,es_BO,es_CL,es_CO,es_MX,es_PE,es_UY,es_VE,et,fa,fi,fr,fr_BE,fr_CA,fr_CH,fr_LU,he,hi,hr,hu,id,it,it_CH,ja,ko,lt,lv,nb,nl,nl_BE,nn,pl,pt,pt_PT,ro,ru,ru_UA,sk,sl,sr,sv,th,tr,uk,vi,zh_CN,zh_HK,zh_SG,zh_TW$");L._coreI18nLocales=g("$core-i18n-locales:,ar,bg,ca,cs,da,de,el,en,es,et,fi,fr,hi,hr,hu,it,iw,ja,ko,lt,lv,nl,no,pl,pt,ro,ru,sh,sk,sl,sv,th,tr,uk,vi,zh_CN,zh_TW$");L._impliesRTL=function(l){var o=new L(l);l=o.getLanguage()||"";l=(l&&M[l])||l;var r=o.getRegion()||"";if(r&&q.inArray(l+"_"+r,A)>=0){return true;}return q.inArray(l,A)>=0;};return L;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/LocaleData-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocaleData-dbg.js new file mode 100644 index 0000000..e01e9a0 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocaleData-dbg.js @@ -0,0 +1,614 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +//Provides the locale object sap.ui.core.LocaleData +sap.ui.define(['jquery.sap.global', 'sap/ui/base/Object', './Configuration', './Locale'], + function(jQuery, BaseObject, Configuration, Locale) { + "use strict"; + + /** + * Creates an instance of the Data. + * + * @class Data provides access to locale-specific data, like date formats, number formats, currencies, etc. + * + * @param {sap.ui.core.Locale} oLocale the locale + * + * @extends sap.ui.base.Object + * @author SAP SE + * @version 1.28.5 + * @constructor + * @public + * @alias sap.ui.core.LocaleData + */ + var LocaleData = BaseObject.extend("sap.ui.core.LocaleData", /** @lends sap.ui.core.LocaleData.prototype */ { + + constructor : function(oLocale) { + BaseObject.apply(this); + this.mData = getData(oLocale); + }, + + _get : function(sKey) { + return this.mData[sKey]; + }, + + /** + * Get orientation (left-to-right or right-to-left) + * + * @returns {string} character orientation for this locale + * @public + */ + getOrientation : function() { + return this._get("orientation"); + }, + + /** + * Get locale specific language names + * + * @returns {object} map of locale specific language names + * @public + */ + getLanguages : function() { + return this._get("languages"); + }, + + /** + * Get locale specific script names + * + * @returns {object} map of locale specific script names + * @public + */ + getScripts : function() { + return this._get("scripts"); + }, + + /** + * Get locale specific territory names + * + * @returns {object} map of locale specific territory names + * @public + */ + getTerritories : function() { + return this._get("territories"); + }, + + /** + * Get month names in width "narrow", "abbreviated" or "wide" + * + * @param {string} sWidth the required width for the month names + * @returns {array} array of month names (starting with January) + * @public + */ + getMonths : function(sWidth) { + jQuery.sap.assert(sWidth == "narrow" || sWidth == "abbreviated" || sWidth == "wide", "sWidth must be narrow, abbreviated or wide"); + return this._get("months-format-" + sWidth); + }, + + /** + * Get stand alone month names in width "narrow", "abbreviated" or "wide" + * + * @param {string} sWidth the required width for the month names + * @returns {array} array of month names (starting with January) + * @public + */ + getMonthsStandAlone : function(sWidth) { + jQuery.sap.assert(sWidth == "narrow" || sWidth == "abbreviated" || sWidth == "wide", "sWidth must be narrow, abbreviated or wide"); + return this._get("months-standAlone-" + sWidth); + }, + + /** + * Get day names in width "narrow", "abbreviated" or "wide" + * + * @param {string} sWidth the required width for the day names + * @returns {array} array of day names (starting with Sunday) + * @public + */ + getDays : function(sWidth) { + jQuery.sap.assert(sWidth == "narrow" || sWidth == "abbreviated" || sWidth == "wide", "sWidth must be narrow, abbreviated or wide"); + return this._get("days-format-" + sWidth); + }, + + /** + * Get stand alone day names in width "narrow", "abbreviated" or "wide" + * + * @param {string} sWidth the required width for the day names + * @returns {array} array of day names (starting with Sunday) + * @public + */ + getDaysStandAlone : function(sWidth) { + jQuery.sap.assert(sWidth == "narrow" || sWidth == "abbreviated" || sWidth == "wide", "sWidth must be narrow, abbreviated or wide"); + return this._get("days-standAlone-" + sWidth); + }, + + /** + * Get quarter names in width "narrow", "abbreviated" or "wide" + * + * @param {string} sWidth the required width for the quarter names + * @returns {array} array of quarters + * @public + */ + getQuarters : function(sWidth) { + jQuery.sap.assert(sWidth == "narrow" || sWidth == "abbreviated" || sWidth == "wide", "sWidth must be narrow, abbreviated or wide"); + return this._get("quarters-format-" + sWidth); + }, + + /** + * Get stand alone quarter names in width "narrow", "abbreviated" or "wide" + * + * @param {string} sWidth the required width for the quarter names + * @returns {array} array of quarters + * @public + */ + getQuartersStandAlone : function(sWidth) { + jQuery.sap.assert(sWidth == "narrow" || sWidth == "abbreviated" || sWidth == "wide", "sWidth must be narrow, abbreviated or wide"); + return this._get("quarters-standAlone-" + sWidth); + }, + + /** + * Get day periods in width "narrow", "abbreviated" or "wide" + * + * @param {string} sWidth the required width for the day period names + * @returns {array} array of day periods (AM, PM) + * @public + */ + getDayPeriods : function(sWidth) { + jQuery.sap.assert(sWidth == "narrow" || sWidth == "abbreviated" || sWidth == "wide", "sWidth must be narrow, abbreviated or wide"); + return this._get("dayPeriods-format-" + sWidth); + }, + + /** + * Get date pattern in style "short", "medium", "long" or "full" + * + * @param {string} sStyle the required style for the date pattern + * @returns {string} the selected date pattern + * @public + */ + getDatePattern : function(sStyle) { + jQuery.sap.assert(sStyle == "short" || sStyle == "medium" || sStyle == "long" || sStyle == "full", "sStyle must be short, medium, long or full"); + return this._get("dateFormat-" + sStyle); + }, + + /** + * Get time pattern in style "short", "medium", "long" or "full" + * + * @param {string} sStyle the required style for the date pattern + * @returns {string} the selected time pattern + * @public + */ + getTimePattern : function(sStyle) { + jQuery.sap.assert(sStyle == "short" || sStyle == "medium" || sStyle == "long" || sStyle == "full", "sStyle must be short, medium, long or full"); + return this._get("timeFormat-" + sStyle); + }, + + /** + * Get datetime pattern in style "short", "medium", "long" or "full" + * + * @param {string} sStyle the required style for the datetime pattern + * @returns {string} the selected datetime pattern + * @public + */ + getDateTimePattern : function(sStyle) { + jQuery.sap.assert(sStyle == "short" || sStyle == "medium" || sStyle == "long" || sStyle == "full", "sStyle must be short, medium, long or full"); + return this._get("dateTimeFormat-" + sStyle); + }, + + /** + * Get number symbol "decimal", "group", "plusSign", "minusSign", "percentSign" + * + * @param {string} sType the required type of symbol + * @returns {string} the selected number symbol + * @public + */ + getNumberSymbol : function(sType) { + jQuery.sap.assert(sType == "decimal" || sType == "group" || sType == "plusSign" || sType == "minusSign" || sType == "percentSign", "sType must be decimal, group, plusSign, minusSign or percentSign"); + return this._get("symbols-latn-" + sType); + }, + + /** + * Get decimal format pattern + * + * @returns {string} The pattern + * @public + */ + getDecimalPattern : function() { + return this._get("decimalFormat").standard; + }, + + /** + * Get currency format pattern + * + * @param {string} sContext the context of the currency pattern (standard or accounting) + * @returns {string} The pattern + * @public + */ + getCurrencyPattern : function(sContext) { + return this._get("currencyFormat")[sContext] || this._get("currencyFormat").standard; + }, + + /** + * Get percent format pattern + * + * @returns {string} The pattern + * @public + */ + getPercentPattern : function() { + return this._get("percentFormat").standard; + }, + + /** + * Returns the day that usually is regarded as the first day + * of a week in the current locale. Days are encoded as integer + * where sunday=0, monday=1 etc. + * + * + * All week data information in the CLDR is provides for territories (countries). + * If the locale of this LocaleData doesn't contain country information (e.g. if it + * contains only a language), then the "likelySubtag" information of the CLDR + * is taken into account to guess the "most likely" territory for the locale. + * + * @returns {int} first day of week + * @public + */ + getFirstDayOfWeek : function() { + return this._get("weekData-firstDay"); + }, + + /** + * Returns the first day of a weekend for the given locale. + * + * Days are encoded in the same way as for {@link #getFirstDayOfWeek}. + * + * All week data information in the CLDR is provides for territories (countries). + * If the locale of this LocaleData doesn't contain country information (e.g. if it + * contains only a language), then the "likelySubtag" information of the CLDR + * is taken into account to guess the "most likely" territory for the locale. + * + * @returns {int} first day of weekend + * @public + */ + getWeekendStart : function() { + return this._get("weekData-weekendStart"); + }, + + /** + * Returns the last day of a weekend for the given locale. + * + * Days are encoded in the same way as for {@link #getFirstDayOfWeek}. + * + * All week data information in the CLDR is provides for territories (countries). + * If the locale of this LocaleData doesn't contain country information (e.g. if it + * contains only a language), then the "likelySubtag" information of the CLDR + * is taken into account to guess the "most likely" territory for the locale. + * + * @returns {int} last day of weekend + * @public + */ + getWeekendEnd : function() { + return this._get("weekData-weekendEnd"); + }, + + /** + * Returns the interval format with the given Id (see CLDR documentation for valid Ids) + * or the fallback format if no interval format with that Id is known. + * + * The empty Id ("") might be used to retrieve the interval format fallback. + * + * @param {string} sId Id of the interval format, e.g. "d-d" + * @returns {string} interval format string with placeholders {0} and {1} + * @public + * @since 1.17.0 + */ + getIntervalPattern : function(sId) { + return (sId && this._get("intervalFormat-" + sId)) || this._get("intervalFormatFallback"); + }, + + /** + * Returns the number of digits of the specified currency + * + * @param {string} sCurrency ISO 4217 currency code + * @returns {int} digits of the currency + * @public + * @since 1.21.1 + */ + getCurrencyDigits : function(sCurrency) { + var oCurrencyDigits = this._get("currencyDigits"); + var iDigits = 2; + if (oCurrencyDigits) { + if (oCurrencyDigits[sCurrency] != undefined) { + iDigits = oCurrencyDigits[sCurrency]; + } else { + iDigits = oCurrencyDigits["DEFAULT"]; + } + } + return iDigits; + }, + + /** + * Returns the currency symbol for the specified currency, if no symbol is found the ISO 4217 currency code is returned + * + * @param {string} sCurrency ISO 4217 currency code + * @returns {string} the currency symbol + * @public + * @since 1.21.1 + */ + getCurrencySymbol : function(sCurrency) { + var oCurrencySymbols = this._get("currencySymbols"); + return (oCurrencySymbols && oCurrencySymbols[sCurrency]) || sCurrency; + }, + + /** + * Returns the currency code which is corresponded with the given currency symbol. + * + * @param {string} sCurrencySymbol The currency symbol which needs to be converted to currency code + * @return {string} The corresponded currency code defined for the given currency symbol. Null is returned if no currency code can be found by using the given currency symbol. + * @public + * @since 1.27.0 + */ + getCurrencyCodeBySymbol : function(sCurrencySymbol) { + var oCurrencySymbols = this._get("currencySymbols"), sCurrencyCode; + for (sCurrencyCode in oCurrencySymbols) { + if (oCurrencySymbols[sCurrencyCode] === sCurrencySymbol) { + return sCurrencyCode; + } + } + return null; + }, + + _getRelative : function(sType, iDiff) { + if (Math.abs(iDiff) <= 1) { + return this._get("dateField-" + sType + "-relative-" + iDiff); + } + return this._get("dateField-" + sType + "-relative-" + (iDiff < 0 ? "past" : "future") + "-other"); + }, + + /** + * Returns the relative day resource pattern (like "Today", "Yesterday", "{0} days ago") based on the given + * difference of days (0 means today, 1 means tommorrow, -1 means yesterday, ...). + * + * @param {int} iDiff the difference in days + * @returns {string} the relative day resource pattern + * @public + * @since 1.25.0 + */ + getRelativeDay : function(iDiff) { + return this._getRelative("day", iDiff); + }, + + /** + * Returns the relative month resource pattern (like "This month", "Last month", "{0} months ago") based on the given + * difference of months (0 means this month, 1 means next month, -1 means last month, ...). + * + * @param {int} iDiff the difference in months + * @returns {string} the relative month resource pattern + * @public + * @since 1.25.0 + */ + getRelativeMonth : function(iDiff) { + return this._getRelative("month", iDiff); + }, + + /** + * Returns the relative year resource pattern (like "This year", "Last year", "{0} year ago") based on the given + * difference of years (0 means this year, 1 means next year, -1 means last year, ...). + * + * @param {int} iDiff the difference in years + * @returns {string} the relative year resource pattern + * @public + * @since 1.25.0 + */ + getRelativeYear : function(iDiff) { + return this._getRelative("year", iDiff); + }, + + /** + * Returns the short decimal formats (like 1K, 1M....) + * + * @param {string} sStyle short or long + * @param {string} sNumber 1000, 10000 ... + * @param {string} sPlural one or other (if not exists other is used) + * @returns {string} decimal format + * @public + * @since 1.25.0 + */ + getDecimalFormat : function(sStyle, sNumber, sPlural) { + + var sFormat; + var oFormats; + + switch (sStyle) { + case "long": + oFormats = this._get("decimalFormat-long"); + break; + + default: //short + oFormats = this._get("decimalFormat-short"); + break; + } + + if (oFormats) { + var sName = sNumber + "-" + sPlural; + sFormat = oFormats[sName]; + if (!sFormat) { + sName = sNumber + "-other"; + sFormat = oFormats[sName]; + } + } + + return sFormat; + + } + + }); + + /** + * Default data, in case neither the region specific, nor the language specific fallback can be found + * + * @private + */ + var M_DEFAULT_DATA = { + "orientation":"left-to-right", + "languages":{}, + "scripts":{}, + "territories":{}, + "dateFormat-full":"EEEE, MMMM d, y", + "dateFormat-long":"MMMM d, y", + "dateFormat-medium":"MMM d, y", + "dateFormat-short":"M/d/yy", + "timeFormat-full":"h:mm:ss a zzzz", + "timeFormat-long":"h:mm:ss a z", + "timeFormat-medium":"h:mm:ss a", + "timeFormat-short":"h:mm a", + "dateTimeFormat-full":"{1} 'at' {0}", + "dateTimeFormat-long":"{1} 'at' {0}", + "dateTimeFormat-medium":"{1}, {0}", + "dateTimeFormat-short":"{1}, {0}", + "decimalFormat": { "standard": "#,##0.###" }, + "currencyFormat": { "standard": "¤#,##0.00"}, + "percentFormat": { "standard": "#,##0%"}, + "months-format-abbreviated":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"], + "months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"], + "months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"], + "months-standAlone-abbreviated":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"], + "months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"], + "months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"], + "days-format-abbreviated":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"], + "days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], + "days-format-narrow":["S","M","T","W","T","F","S"], + "days-standAlone-abbreviated":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"], + "days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], + "days-standAlone-narrow":["S","M","T","W","T","F","S"], + "quarters-format-narrow":["1","2","3","4"], + "quarters-format-abbreviated":["Q1","Q2","Q3","Q4"], + "quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"], + "quarters-standAlone-narrow":["1","2","3","4"], + "quarters-standAlone-abbreviated":["Q1","Q2","Q3","Q4"], + "quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"], + "symbols-latn-decimal":".", + "symbols-latn-group":",", + "symbols-latn-plusSign":"+", + "symbols-latn-minusSign":"-", + "symbols-latn-percentSign":"%", + "dayPeriods-format-narrow":["AM","PM"], + "dayPeriods-format-wide":["AM","PM"], + "dayPeriods-format-abbreviated":["AM","PM"], + "weekData-minDays":4, + "weekData-firstDay":1, + "weekData-weekendStart":6, + "weekData-weekendEnd":0, + "intervalFormatFallback":"{0} – {1}" + }; + + var M_ISO639_OLD_TO_NEW = { + "iw" : "he", + "ji" : "yi", + "in" : "id", + "sh" : "sr" + }; + + /** + * A set of locales for which the UI5 runtime contains a CLDR JSON file. + * + * Helps to avoid unsatisfiable backend calls. + * + * @private + */ + var M_SUPPORTED_LOCALES = (function() { + var LOCALES = Locale._cldrLocales, + result = {}, + i; + + if ( LOCALES ) { + for (i = 0; i < LOCALES.length; i++) { + result[LOCALES[i]] = true; + } + } + + return result; + }()); + + /** + * Locale data cache + * + * @private + */ + var mLocaleDatas = {}; + + /** + * Load LocaleData data from the CLDR generated files + */ + function getData(oLocale) { + + var sLanguage = oLocale.getLanguage() || "", + sScript = oLocale.getScript() || "", + sRegion = oLocale.getRegion() || "", + mData; + + function getOrLoad(sId) { + if ( !mLocaleDatas[sId] && (!M_SUPPORTED_LOCALES || M_SUPPORTED_LOCALES[sId] === true) ) { + mLocaleDatas[sId] = jQuery.sap.loadResource("sap/ui/core/cldr/" + sId + ".json", { + dataType: "json", + failOnError : false + }); + // if load fails, null is returned + // -> caller will process the fallback chain, in the end a result is identified and stored in mDatas under the originally requested ID + } + return mLocaleDatas[sId]; + } + + // normalize language and handle special cases + sLanguage = (sLanguage && M_ISO639_OLD_TO_NEW[sLanguage]) || sLanguage; + // Special case 1: in a SAP context, the inclusive language code "no" always means Norwegian Bokmal ("nb") + if ( sLanguage === "no" ) { + sLanguage = "nb"; + } + // Special case 2: for Chinese, derive a default region from the script (this behavior is inherited from Java) + if ( sLanguage === "zh" && !sRegion ) { + if ( sScript === "Hans" ) { + sRegion = "CN"; + } else if ( sScript === "Hant" ) { + sRegion = "TW"; + } + } + + var sId = sLanguage + "_" + sRegion; // the originally requested locale; this is the key under which the result (even a fallback one) will be stored in the end + // first try: load CLDR data for specific language / region combination + if ( sLanguage && sRegion ) { + mData = getOrLoad(sId); + } + // second try: load data for language only + if ( !mData && sLanguage ) { + mData = getOrLoad(sLanguage); + } + // last try: use fallback data + mLocaleDatas[sId] = mData || M_DEFAULT_DATA; + + return mLocaleDatas[sId]; + } + + + /** + * A specialized subclass of LocaleData that merges custom settings. + * @private + */ + LocaleData.extend("sap.ui.core.CustomLocaleData", { + constructor : function(oLocale) { + LocaleData.apply(this, arguments); + this.mCustomData = sap.ui.getCore().getConfiguration().getFormatSettings().getCustomLocaleData(); + }, + _get : function(sId) { + return this.mCustomData[sId] || this.mData[sId]; + } + }); + + /** + * + */ + LocaleData.getInstance = function(oLocale) { + return oLocale.hasPrivateUseSubtag("sapufmt") ? new sap.ui.core.CustomLocaleData(oLocale) : new LocaleData(oLocale); + }; + + return LocaleData; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/LocaleData.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocaleData.js new file mode 100644 index 0000000..50cb6f1 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/LocaleData.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/base/Object','./Configuration','./Locale'],function(q,B,C,L){"use strict";var a=B.extend("sap.ui.core.LocaleData",{constructor:function(o){B.apply(this);this.mData=g(o);},_get:function(k){return this.mData[k];},getOrientation:function(){return this._get("orientation");},getLanguages:function(){return this._get("languages");},getScripts:function(){return this._get("scripts");},getTerritories:function(){return this._get("territories");},getMonths:function(w){return this._get("months-format-"+w);},getMonthsStandAlone:function(w){return this._get("months-standAlone-"+w);},getDays:function(w){return this._get("days-format-"+w);},getDaysStandAlone:function(w){return this._get("days-standAlone-"+w);},getQuarters:function(w){return this._get("quarters-format-"+w);},getQuartersStandAlone:function(w){return this._get("quarters-standAlone-"+w);},getDayPeriods:function(w){return this._get("dayPeriods-format-"+w);},getDatePattern:function(s){return this._get("dateFormat-"+s);},getTimePattern:function(s){return this._get("timeFormat-"+s);},getDateTimePattern:function(s){return this._get("dateTimeFormat-"+s);},getNumberSymbol:function(t){return this._get("symbols-latn-"+t);},getDecimalPattern:function(){return this._get("decimalFormat").standard;},getCurrencyPattern:function(s){return this._get("currencyFormat")[s]||this._get("currencyFormat").standard;},getPercentPattern:function(){return this._get("percentFormat").standard;},getFirstDayOfWeek:function(){return this._get("weekData-firstDay");},getWeekendStart:function(){return this._get("weekData-weekendStart");},getWeekendEnd:function(){return this._get("weekData-weekendEnd");},getIntervalPattern:function(i){return(i&&this._get("intervalFormat-"+i))||this._get("intervalFormatFallback");},getCurrencyDigits:function(s){var o=this._get("currencyDigits");var d=2;if(o){if(o[s]!=undefined){d=o[s];}else{d=o["DEFAULT"];}}return d;},getCurrencySymbol:function(s){var o=this._get("currencySymbols");return(o&&o[s])||s;},getCurrencyCodeBySymbol:function(s){var o=this._get("currencySymbols"),d;for(d in o){if(o[d]===s){return d;}}return null;},_getRelative:function(t,d){if(Math.abs(d)<=1){return this._get("dateField-"+t+"-relative-"+d);}return this._get("dateField-"+t+"-relative-"+(d<0?"past":"future")+"-other");},getRelativeDay:function(d){return this._getRelative("day",d);},getRelativeMonth:function(d){return this._getRelative("month",d);},getRelativeYear:function(d){return this._getRelative("year",d);},getDecimalFormat:function(s,n,p){var f;var F;switch(s){case"long":F=this._get("decimalFormat-long");break;default:F=this._get("decimalFormat-short");break;}if(F){var N=n+"-"+p;f=F[N];if(!f){N=n+"-other";f=F[N];}}return f;}});var M={"orientation":"left-to-right","languages":{},"scripts":{},"territories":{},"dateFormat-full":"EEEE, MMMM d, y","dateFormat-long":"MMMM d, y","dateFormat-medium":"MMM d, y","dateFormat-short":"M/d/yy","timeFormat-full":"h:mm:ss a zzzz","timeFormat-long":"h:mm:ss a z","timeFormat-medium":"h:mm:ss a","timeFormat-short":"h:mm a","dateTimeFormat-full":"{1} 'at' {0}","dateTimeFormat-long":"{1} 'at' {0}","dateTimeFormat-medium":"{1}, {0}","dateTimeFormat-short":"{1}, {0}","decimalFormat":{"standard":"#,##0.###"},"currencyFormat":{"standard":"¤#,##0.00"},"percentFormat":{"standard":"#,##0%"},"months-format-abbreviated":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"months-standAlone-abbreviated":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-format-abbreviated":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"days-format-narrow":["S","M","T","W","T","F","S"],"days-standAlone-abbreviated":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"days-standAlone-narrow":["S","M","T","W","T","F","S"],"quarters-format-narrow":["1","2","3","4"],"quarters-format-abbreviated":["Q1","Q2","Q3","Q4"],"quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"quarters-standAlone-narrow":["1","2","3","4"],"quarters-standAlone-abbreviated":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"symbols-latn-decimal":".","symbols-latn-group":",","symbols-latn-plusSign":"+","symbols-latn-minusSign":"-","symbols-latn-percentSign":"%","dayPeriods-format-narrow":["AM","PM"],"dayPeriods-format-wide":["AM","PM"],"dayPeriods-format-abbreviated":["AM","PM"],"weekData-minDays":4,"weekData-firstDay":1,"weekData-weekendStart":6,"weekData-weekendEnd":0,"intervalFormatFallback":"{0} – {1}"};var b={"iw":"he","ji":"yi","in":"id","sh":"sr"};var c=(function(){var d=L._cldrLocales,r={},i;if(d){for(i=0;ithis message. The types of + * {@link sap.ui.core.MessageType} are ordered from "Error" > "Warning" > "Success" > + * "Information" > "None". + * + * See {@link sap.ui.core.Message.compareByType} + * + * @param {sap.ui.core.Message} oOther message to compare with this one + * @return {int} returns 0 if both messages are at + * the same level. -1 if this + * message has a lower level. 1 if this + * message has a higher level. + * @public + */ + Message.prototype.compareByType = function(oOther) { + Message.compareByType(this, oOther); + }; + + /** + * Compares two given messages with each other. + * + * The types of {@link sap.ui.core.MessageType} are ordered from "Error" > "Warning" > "Success" > + * "Information" > "None". + * + * @param {sap.ui.core.Message} oMessage1 first message to compare + * @param {sap.ui.core.Message} oMessage2 second message to compare + * @return {int} returns 0 if both messages are at + * the same level. -1 if this + * message has a lower level. 1 if this + * message has a higher level. + * @static + * @public + */ + Message.compareByType = function(oMessage1, oMessage2) { + if (!oMessage1 && !oMessage2) { + return 0; + } + if (oMessage1 && !oMessage2) { + return 1; + } + if (!oMessage1 && oMessage2) { + return -1; + } + + var sLvl1 = oMessage1.getLevel(); + var sLvl2 = oMessage2.getLevel(); + var t = sap.ui.core.MessageType; + + if (sLvl1 === sLvl2) { + return 0; + } + + switch (sLvl1) { + case t.Error: + return 1; + + case t.Warning: + return sLvl2 === t.Error ? -1 : 1; + + case t.Success: + return sLvl2 === t.Error || sLvl2 === t.Warning ? -1 : 1; + + case t.Information: + return sLvl2 === t.None ? 1 : -1; + + case t.None: + return -1; + + default: + jQuery.sap.log.error("Comparison error", this); + return 0; + } + }; + + return Message; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Message.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Message.js new file mode 100644 index 0000000..5950288 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Message.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Element','./library','./theming/Parameters'],function(q,E,l,P){"use strict";var M=E.extend("sap.ui.core.Message",{metadata:{library:"sap.ui.core",properties:{text:{type:"string",group:"Misc",defaultValue:null},timestamp:{type:"string",group:"Misc",defaultValue:null},icon:{type:"sap.ui.core.URI",group:"Misc",defaultValue:null},level:{type:"sap.ui.core.MessageType",group:"Misc",defaultValue:sap.ui.core.MessageType.None},readOnly:{type:"boolean",group:"Misc",defaultValue:false}}}});M.prototype.getDefaultIcon=function(s){var m=q.sap.getModulePath("sap.ui.core",'/');var t="themes/"+sap.ui.getCore().getConfiguration().getTheme();var i="/img/message/";if(s&&s=="32x32"){i+="32x32/";}else{i+="16x16/";}var u="";switch(this.getProperty("level")){case sap.ui.core.MessageType.Error:u=m+t+i+"Message_Icon_Error.png";break;case sap.ui.core.MessageType.Information:u=m+t+i+"Message_Icon_Information.png";break;case sap.ui.core.MessageType.Warning:u=m+t+i+"Message_Icon_Warning.png";break;case sap.ui.core.MessageType.Success:u=m+t+i+"Message_Icon_Success.png";break;case sap.ui.core.MessageType.None:default:u=this.getProperty("icon");break;}return u;};M.prototype.compareByType=function(o){M.compareByType(this,o);};M.compareByType=function(m,o){if(!m&&!o){return 0;}if(m&&!o){return 1;}if(!m&&o){return-1;}var L=m.getLevel();var s=o.getLevel();var t=sap.ui.core.MessageType;if(L===s){return 0;}switch(L){case t.Error:return 1;case t.Warning:return s===t.Error?-1:1;case t.Success:return s===t.Error||s===t.Warning?-1:1;case t.Information:return s===t.None?1:-1;case t.None:return-1;default:q.sap.log.error("Comparison error",this);return 0;}};return M;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Popup-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Popup-dbg.js new file mode 100644 index 0000000..1d2e323 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Popup-dbg.js @@ -0,0 +1,2337 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides helper class sap.ui.core.Popup +sap.ui.define(['jquery.sap.global', 'sap/ui/base/ManagedObject', 'sap/ui/base/Object', './Control', './IntervalTrigger', './RenderManager', './UIArea', './PopupSupport', 'jquery.sap.script'], + function(jQuery, ManagedObject, BaseObject, Control, IntervalTrigger, RenderManager, UIArea, PopupSupport/* , jQuerySap */) { + "use strict"; + + + /** + * Creates an instance of sap.ui.core.Popup that can be used to open controls as a Popup, + * visually appearing in front of other controls. + * + * @class Popup Class is a helper class for controls that want themselves or + * parts of themselves or even other aggregated or composed controls + * or plain HTML content to popup on the screen like menues, dialogs, drop down boxes. + * + * It allows the controls to be aligned to other dom elements + * using the {@link sap.ui.core.Popup.Dock.html} method. With it you can define where + * the popup should be docked. One can dock the popup to the top bottom left or right side + * of a dom ref. + * + * In the case that the popup has no space to show itself in the view port + * of the current window it tries to open itself to + * the inverted direction. + * + * Since 1.12.3 it is possible to add further DOM-element-ids that can get the focus + * when 'autoclose' is enabled. E.g. the RichTextEditor with running TinyMCE uses this method to + * be able to focus the Popups of the TinyMCE if the RichTextEditor runs within a Popup/Dialog etc. + * + * To provide an additional DOM-element that can get the focus the following should be done: + * // create an object with the corresponding DOM-id + * var oObject = { + * id : "this_is_the_most_valuable_id_of_the_DOM_element" + * }; + * + * // add the event prefix for adding an element to the ID of the corresponding Popup + * var sEventId = "sap.ui.core.Popup.addFocusableContent-" + oPopup.getId(); + * + * // fire the event with the created event-id and the object with the DOM-id + * sap.ui.getCore().getEventBus().publish("sap.ui", sEventId, oObject); + * + * @param {sap.ui.core.Control | sap.ui.core.Element | DOMNode} oContent the content to render in the popup. In case of sap.ui.core.Element or DOMNode, the content must be present in the page (i.e. rendered). In case of sap.ui.core.Control, the Popup ensures rendering before opening. + * @param {boolean} [bModal=false] whether the popup should be opened in a modal way (i.e. with blocking background). Setting this to "true" effectively blocks all attempts to focus content outside the modal popup. A modal popup also automatically sets the focus back to whatever was focused when the popup opened. + * @param {boolean} [bShadow=true] whether the popup should be have a visual shadow underneath (shadow appearance depends on active theme and browser support) + * @param {boolean} [bAutoClose=false] whether the popup should automatically close when the focus moves out of the popup + * + * @constructor + * @public + * @alias sap.ui.core.Popup + */ + var Popup = ManagedObject.extend("sap.ui.core.Popup", /** @lends sap.ui.core.Popup.prototype */ { + constructor: function (oContent, bModal, bShadow, bAutoClose) { + jQuery.sap.assert(arguments.length == 0 || (oContent && typeof oContent === "object"), "oContent must be an object or there may be no arguments at all"); + jQuery.sap.assert((bModal === undefined || bModal === true || bModal === false), "bModal must be true, false, or undefined"); + jQuery.sap.assert((bShadow === undefined || bShadow === true || bShadow === false), "bShadow must be true, false, or undefined"); + jQuery.sap.assert((bAutoClose === undefined || bAutoClose === true || bAutoClose === false), "bAutoClose must be true, false, or undefined"); + + ManagedObject.apply(this); + PopupSupport.apply(this); + + this._popupUID = jQuery.sap.uid(); // internal ID to make event handlers unique + + this.bOpen = false; // true exactly if the Popup is opening, open, or closing + this.eOpenState = sap.ui.core.OpenState.CLOSED; + + this._mFocusEvents = {}; + this._mFocusEvents["sap.ui.core.Popup.addFocusableContent-" + this._popupUID] = this._addFocusableArea; + this._mFocusEvents["sap.ui.core.Popup.removeFocusableContent-" + this._popupUID] = this._removeFocusableArea; + this._mFocusEvents["sap.ui.core.Popup.closePopup-" + this._popupUID] = this._closePopup; + this._mFocusEvents["sap.ui.core.Popup.onFocusEvent-" + this._popupUID] = this.onFocusEvent; + this._mFocusEvents["sap.ui.core.Popup.increaseZIndex-" + this._popupUID] = this._increaseMyZIndex; + + if (oContent) { + this.setContent(oContent); + } + + this._oDefaultPosition = { + my: Popup.Dock.CenterCenter, + at: Popup.Dock.CenterCenter, + of: document, + offset: "0 0", + collision: "flip" + }; + + this._oPosition = jQuery.extend({},this._oDefaultPosition); + + this._bModal = !!bModal; + this._oPreviousFocus = null; + this._sInitialFocusId = null; + this._bShadow = typeof (bShadow) === "boolean" ? bShadow : true; + this._bAutoClose = !!bAutoClose; + this._animations = { open: null, close: null }; + this._durations = { open: "fast", close: "fast" }; + this._iZIndex = -1; + this._oBlindLayer = null; + this.setNavigationMode(); + + //autoclose handler for mobile or desktop browser in touch mode + //this function needs to be put onto the instance other than the prototype because functions on the prototype are treated as same function and can't be bound twice. + if (this.touchEnabled) { + this._fAutoCloseHandler = function(oEvent) { + // Suppress the delayed mouse event from mobile browser + if (oEvent.isMarked("delayedMouseEvent") || oEvent.isMarked("cancelAutoClose")) { + return; + } + // call the close handler only when it's fully opened + // this also prevents calling close while closing + if (this.eOpenState === sap.ui.core.OpenState.CLOSING || this.eOpenState === sap.ui.core.OpenState.CLOSED) { + return; + } + + var oDomNode = oEvent.target, + oPopupDomNode = this._$().get(0), + bInsidePopup = jQuery.sap.containsOrEquals(oPopupDomNode, oDomNode); + + if (!bInsidePopup) { + var aChildPopups = this.getChildPopups(); + for (var i = 0, l = aChildPopups.length; i < l; i++) { + var oDomRef = jQuery.sap.domById(aChildPopups[i]); + if (jQuery.sap.containsOrEquals(oDomRef, oDomNode)) { + bInsidePopup = true; + break; + } + } + } + + if (!bInsidePopup) { + this.close(); + } + }; + } + + this._F6NavigationHandler = function(oEvent) { + var oSettings = {}, + sMode = this._sF6NavMode, + oDockElement; + + // DOCK mode only possible for non-modal popups with valid dock element + if (sMode == "DOCK") { + if (this._bModal) { + sMode = "NONE"; + } else if (this._oLastPosition && this._oLastPosition.of) { + oDockElement = this._getOfDom(this._oLastPosition.of); + if (!oDockElement || oDockElement === document ){ + oDockElement = null; + sMode = "NONE"; + } + } + } + + // Define navigation settings according to specified mode + switch (sMode) { + case "SCOPE": + oSettings.scope = this._$()[0]; // Search scope for next F6 target is the popup itself + break; + case "DOCK": + oSettings.target = oDockElement; // Starting point for searching the next F6 target is the dock element + var $DockPopup = jQuery(oDockElement).parents("[data-sap-ui-popup]"); + oSettings.scope = $DockPopup.length ? $DockPopup[0] : null; // Search scope is the parent popup (if exists, otherwise the document) + break; + default: //"NONE" and others + oSettings.skip = true; // Ignore the F6 key event + } + + jQuery.sap.handleF6GroupNavigation(oEvent, oSettings); + }; + }, + + metadata : { + library: "sap.ui.core", + + publicMethods : ["open", "close", + "setContent", "getContent", + "setPosition", + "setShadow", "setModal", "getModal", "setAutoClose", "setAutoCloseAreas", + "isOpen", "getAutoClose", "getOpenState", "setAnimations", "setDurations", + "attachOpened", "attachClosed", "detachOpened", "detachClosed"], + + associations : { + "childPopups" : { + type : "sap.ui.core.Popup", + multiple : true, + visibility: "hidden" + } + }, + + events : { + "opened" : {}, + "closed" : {} + } + } + + }); + + Popup._activateBlindLayer = true; + + // stack used for storing z-indices for blocklayer + Popup.blStack = []; + + /** + * Enumeration providing options for docking of some element to another. + * "Right" and "Left" will stay the same in RTL mode, but "Begin" and "End" will flip to the other side ("Begin" is "Right" in RTL). + * + * @public + * @namespace + */ + Popup.Dock = { + + /** + * @public + */ + BeginTop : "begin top", + + /** + * @public + */ + BeginCenter : "begin center", + + /** + * @public + */ + BeginBottom : "begin bottom", + + /** + * @public + */ + LeftTop : "left top", + + /** + * @public + */ + LeftCenter : "left center", + + /** + * @public + */ + LeftBottom : "left bottom", + + /** + * @public + */ + CenterTop : "center top", + + /** + * @public + */ + CenterCenter : "center center", + + /** + * @public + */ + CenterBottom : "center bottom", + + /** + * @public + */ + RightTop : "right top", + + /** + * @public + */ + RightCenter : "right center", + + /** + * @public + */ + RightBottom : "right bottom", + + /** + * @public + */ + EndTop : "end top", + + /** + * @public + */ + EndCenter : "end center", + + /** + * @public + */ + EndBottom : "end bottom" + }; + + /** + * This property changes how the autoClose behaves on the Popup. When it's set to true, the Popup will be closed when tap outside of the Popup. Otherwise it will close as soon as the focus leaves the Popup. + * + * The default value of this property is true when running in touchable environments. + * + * @static + * @type {boolean} + * @private + */ + Popup.prototype.touchEnabled = sap.ui.Device.support.touch || jQuery.sap.simulateMobileOnDesktop; + + /** + * This property changes how focus handling works. When it's set to true, focus will be restored after Popup is closed to the previous focused element before Popup is open. Otherwise, this function is disabled. + * + * By default, the focus is restored only in non-touch environments. + * + * @type {boolean} + * @private + */ + Popup.prototype.restoreFocus = !sap.ui.Device.support.touch && !jQuery.sap.simulateMobileOnDesktop; + + //**************************************************** + //Layer et al + //**************************************************** + + /** + * @class + * @private + * @name sap.ui.core.Popup.Layer + */ + BaseObject.extend("sap.ui.core.Popup.Layer", { + constructor: function() { + var sDomString = this.getDomString(); + this._$Ref = jQuery(sDomString).appendTo(sap.ui.getCore().getStaticAreaRef()); + } + }); + + /** + * + * @param oRef + * @param iZIndex + * @private + * @name sap.ui.core.Popup.Layer#init + * @function + */ + Popup.Layer.prototype.init = function(/** jQuery */oRef, iZIndex) { + this._$Ref.css({ + "visibility" : "visible", + "z-index" : iZIndex + }); + this.update(oRef, iZIndex); + this._$Ref.insertAfter(oRef).show(); + }; + + /** + * @param {object} oRef + * @param {int} iZIndex + * @protected + * @name sap.ui.core.Popup.Layer#update + * @function + */ + Popup.Layer.prototype.update = function(/** jQuery */oRef, iZIndex){ + var oRect = oRef.rect(); + this._$Ref.css({ + "left" : oRect.left, + "top" : oRect.top + }); + + if (oRef.css("right") != "auto" && oRef.css("right") != "inherit") { + this._$Ref.css({ + "right" : oRef.css("right"), + "width" : "auto" + }); + } else { + this._$Ref.css({ + "width" : oRect.width, + "right" : "auto" + }); + } + if (oRef.css("bottom") != "auto" && oRef.css("bottom") != "inherit") { + this._$Ref.css({ + "bottom" : oRef.css("bottom"), + "height" : "auto" + }); + } else { + this._$Ref.css({ + "height" : oRect.height, + "bottom" : "auto" + }); + } + + if (typeof (iZIndex) === "number") { + this._$Ref.css("z-index", iZIndex); + } + }; + + Popup.Layer.prototype.reset = function(){ + this._$Ref.hide().css("visibility", "hidden") + .appendTo(sap.ui.getCore().getStaticAreaRef()); + }; + + /** + * Must be overwritten by sub class + * @name sap.ui.core.Popup.Layer#getDomString + * @function + */ + Popup.Layer.prototype.getDomString = function(){ + jQuery.sap.log.error("sap.ui.core.Popup.Layer: getDomString function must be overwritten!"); + + return ""; + }; + + //End of Layer + + //**************************************************** + // BlindLayer et al + //**************************************************** + + /** + * @class + * @private + */ + Popup.Layer.extend("sap.ui.core.Popup.BlindLayer", { + constructor : function() { + Popup.Layer.apply(this); + } + }); + + Popup.BlindLayer.prototype.getDomString = function(){ + return "
    "; + }; + + /** + * Facility for reuse of created iframes. + * @type sap.ui.base.ObjectPool + * @private + */ + Popup.prototype.oBlindLayerPool = new sap.ui.base.ObjectPool(Popup.BlindLayer); + // End of BlindLayer + + //**************************************************** + //ShieldLayer et al + //**************************************************** + + /** + * @class + * @private + * @name sap.ui.core.Popup.ShieldLayer + */ + Popup.Layer.extend("sap.ui.core.Popup.ShieldLayer", { + constructor: function() { + Popup.Layer.apply(this); + } + }); + + Popup.ShieldLayer.prototype.getDomString = function(){ + return "
    "; + }; + + /** + * Facility for reuse of created shield layers. + * @type sap.ui.base.ObjectPool + * @private + */ + Popup.prototype.oShieldLayerPool = new sap.ui.base.ObjectPool(Popup.ShieldLayer); + //End of ShieldLayer + + // Begin of Popup-Stacking facilities + (function() { + var iLastZIndex = 0; + + /** + * Returns the last z-index that has been handed out. does not increase the internal z-index counter. + * + * @returns {Number} + * @public + */ + Popup.getLastZIndex = function(){ + return iLastZIndex; + }; + + /** + * Returns the last z-index that has been handed out. does not increase the internal z-index counter. + * + * @returns {Number} + * @public + */ + Popup.prototype.getLastZIndex = function(){ + return Popup.getLastZIndex(); + }; + + /** + * Returns the next available z-index on top of the existing/previous popups. Each call increases the internal z-index counter and the returned z-index. + * + * @returns {Number} the next z-index on top of the Popup stack + * @public + */ + Popup.getNextZIndex = function(){ + iLastZIndex += 10; + return iLastZIndex; + }; + + /** + * Returns the next available z-index on top of the existing/previous popups. Each call increases the internal z-index counter and the returned z-index. + * + * @returns {Number} the next z-index on top of the Popup stack + * @public + */ + Popup.prototype.getNextZIndex = function(){ + return Popup.getNextZIndex(); + }; + }()); + // End of Popup-Stacking facilites + + /** + * Opens the popup's content at the position either specified here or beforehand via {@link #setPosition}. + * Content must be capable of being positioned via "position:absolute;" + * All parameters are optional (open() may be called without any parameters). iDuration may just be omitted, but if any of "at", "of", "offset", "collision" is given, also the preceding positioning parameters ("my", at",...) must be given. + * + * If the Popup's OpenState is different from "CLOSED" (i.e. if the Popup is already open, opening or closing), the call is ignored. + * + * @param {int} [iDuration] animation duration in milliseconds; default is the jQuery preset "fast". For iDuration == 0 the opening happens synchronously without animation. + * @param {sap.ui.core.Popup.Dock} [my=sap.ui.core.Popup.Dock.CenterCenter] the popup content's reference position for docking + * @param {sap.ui.core.Popup.Dock} [at=sap.ui.core.Popup.Dock.CenterCenter] the "of" element's reference point for docking to + * @param {string | sap.ui.core.Element | DOMRef | jQuery | jQuery.Event} [of=document] specifies the reference element to which the given content should dock to + * @param {string} [offset='0 0'] the offset relative to the docking point, specified as a string with space-separated pixel values (e.g. "0 10" to move the popup 10 pixels to the right). If the docking of both "my" and "at" are both RTL-sensitive ("begin" or "end"), this offset is automatically mirrored in the RTL case as well. + * @param {string} [collision='flip'] defines how the position of an element should be adjusted in case it overflows the window in some direction. + * @param {boolean} [followOf=false] defines whether the popup should follow the dock reference when the reference changes its position. + * @public + */ + Popup.prototype.open = function(iDuration, my, at, of, offset, collision, followOf) { + jQuery.sap.assert(this.oContent, "Popup content must have been set by now"); + // other asserts follow after parameter shifting + + if (this.eOpenState != sap.ui.core.OpenState.CLOSED) { + return; + } + + this.eOpenState = sap.ui.core.OpenState.OPENING; + + var oStatic; + try { + oStatic = sap.ui.getCore().getStaticAreaRef(); + oStatic = sap.ui.getCore().getUIArea(oStatic); + } catch (e) { + jQuery.sap.log.error(e); + throw new Error("Popup cannot be opened because static UIArea cannot be determined."); + } + + // If the content is a control and has no parent, add it to the static UIArea. + // This makes automatic rerendering after invalidation work. + // When the popup closes, the content is removed again from the static UIArea. + this._bContentAddedToStatic = false; + if ( this.oContent instanceof Control && !this.oContent.getParent() ) { + oStatic.addContent(this.oContent, true); + this._bContentAddedToStatic = true; + } + + // Check if the content isn't connected properly to an UI-area. This could cause strange behavior of events and rendering. + // To find a Popup issue in this case a warning should be logged to the console. + // + // E.g. if the content has a different UI-area than its parent -> warning is thrown if 'sap.ui.core.Popup._bEnableUIAreaCheck' + // is set + if (this.oContent.getUIArea) { + var oArea = this.oContent.getUIArea(); + + if (oArea === null) { + jQuery.sap.log.warning("The Popup content is NOT connected with an UIArea and may not work properly!"); + } else if (Popup._bEnableUIAreaCheck && oArea.getRootNode().id !== oStatic.getRootNode().id) { + + // the variable 'sap.ui.core.Popup._bEnableUIAreaCheck' isn't defined anywhere. To enable this check this variable + // has to be defined within the console or somehow else. + jQuery.sap.log.warning("The Popup content is NOT connected with the static-UIArea and may not work properly!"); + } + } + + // iDuration is optional... if not given: + if (typeof (iDuration) == "string") { + followOf = collision; + collision = offset; + offset = of; + of = at; + at = my; + my = iDuration; + iDuration = -1; + } + + // if no arguments are passed iDuration has to be set to -1 + if (iDuration === undefined) { + iDuration = -1; + } + + // all other parameters must be given if any subsequent parameter is given, hence no more shifting + // now every parameter should be in the right variable + + jQuery.sap.assert(iDuration === -1 || (typeof iDuration === "number" && iDuration % 1 == 0), "iDuration must be an integer (or omitted)"); // omitted results in -1 + jQuery.sap.assert(my === undefined || typeof my === "string", "my must be a string or empty"); + jQuery.sap.assert(at === undefined || typeof at === "string", "at must be a string or empty"); + jQuery.sap.assert(!of || typeof of === "object" || typeof of === "function", "of must be empty or an object"); + jQuery.sap.assert(!offset || typeof offset === "string", "offset must be empty or a string"); + jQuery.sap.assert(!collision || typeof collision === "string", "collision must be empty or a string"); + + // disable for mobile or desktop browser in touch mode + if (this.restoreFocus) { + // save current focused element to restore the focus after closing + this._oPreviousFocus = Popup.getCurrentFocusInfo(); + } + + // It is mandatroy to check if the new Popup runs within another Popup because + // if this new Popup is rendered via 'this._$(true)' and focused (happens e.g. if + // the Datepicker runs in a Popup and the corresponding Calendar will also open + // in a Popup. Then the corresponding date will be focused immediatelly. If the + // Calendar-Popup wasn't added to the previous Popup as child it is impossible to + // check in 'onFocusEvent' properly if the focus is being set to a Calendar-Popup which is + // a child of a Popup. + if (this.isInPopup(of) || this.isInPopup(this._oPosition.of)) { + var sParentId = this.getParentPopupId(of) || this.getParentPopupId(this._oPosition.of); + var sChildId = ""; + + var oContent = this.getContent(); + if (oContent instanceof sap.ui.core.Element) { + sChildId = oContent.getId(); + } else if (typeof oContent === "object") { + sChildId = oContent.id; + } + + this.addChildToPopup(sParentId, sChildId); + this.addChildToPopup(sParentId, this._popupUID); + } + + var $Ref = this._$(true); + + var iRealDuration = "fast"; + if ((iDuration === 0) || (iDuration > 0)) { + iRealDuration = iDuration; + } else if ((this._durations.open === 0) || (this._durations.open > 0)) { + iRealDuration = this._durations.open; + } + + // Ensure right position is used for this call + var _oPosition; + if (my || at || of || offset || collision) { + _oPosition = this._createPosition(my, at, of, offset, collision); + } else { + _oPosition = this._oPosition; + } + if (!_oPosition.of) { + _oPosition.of = this._oPosition.of || document; + } + + this._iZIndex = this._iZIndex === this.getLastZIndex() ? this._iZIndex : this.getNextZIndex(); + + var oStaticArea = sap.ui.getCore().getStaticAreaRef(); + $Ref.css({ + "position" : "absolute", + "visibility" : "hidden" + }); + + if (!($Ref[0].parentNode == oStaticArea)) { // do not move in DOM if not required - otherwise this destroys e.g. the RichTextEditor + $Ref.appendTo(oStaticArea); + } + $Ref.css("z-index", this._iZIndex); + + jQuery.sap.log.debug("position popup content " + $Ref.attr("id") + " at " + (window.JSON ? JSON.stringify(_oPosition.at) : String(_oPosition.at))); + this._applyPosition(_oPosition); + + if (followOf !== undefined) { + this.setFollowOf(followOf); + } + + var that = this; + + // shield layer is needs for iOS devices to prevent the delayed mouse events from reaching the dom element in popup while it's being open. + if (sap.ui.Device.os.ios && sap.ui.Device.support.touch) { + if (this._oTopShieldLayer) { + // very extreme case where the same popop is opened and closed again before the 500ms timed out. + // reuse the same shieldlayer and clear the timeout + jQuery.sap.clearDelayedCall(this._iTopShieldRemoveTimer); + this._iTopShieldRemoveTimer = null; + } else { + this._oTopShieldLayer = this.oShieldLayerPool.borrowObject($Ref, this._iZIndex + 1); + } + + // hide the shield layer after the delayed mouse events are fired. + this._iTopShieldRemoveTimer = jQuery.sap.delayedCall(500, this, function(){ + this.oShieldLayerPool.returnObject(this._oTopShieldLayer); + this._oTopShieldLayer = null; + this._iTopShieldRemoveTimer = null; + }); + } + + var fnOpened = function() { + // internal status that any animation has been finished should set to true; + that.bOpen = true; + $Ref.css("display","block"); + + + // in modal and auto-close case the focus needs to be in the popup; provide this generic implementation as helper, but users can change the focus in the "opened" event handler + if (that._bModal || that._bAutoClose || that._sInitialFocusId) { + var domRefToFocus = null; + if (that._sInitialFocusId) { + var control = sap.ui.getCore().byId(that._sInitialFocusId); + + if (control) { + domRefToFocus = control.getFocusDomRef(); + } + domRefToFocus = domRefToFocus || jQuery.sap.domById(that._sInitialFocusId); + } + + jQuery.sap.focus(domRefToFocus || $Ref.firstFocusableDomRef()); + } + + that.eOpenState = sap.ui.core.OpenState.OPEN; + + // set and register listener of 'followOf' (given via Popup.open()) only when + // the popup has been opened already. Otherwise checking the opener's positio + // starts to early + if (that.getFollowOf()) { + Popup.DockTrigger.addListener(Popup.checkDocking, that); + } + + that._updateBlindLayer(); + + // notify that opening has completed + if (!!sap.ui.Device.browser.internet_explorer && sap.ui.Device.browser.version === 9) { + jQuery.sap.delayedCall(0,that,function(){ + that.fireOpened(); + }); + } else { + that.fireOpened(); + } + }; + + // and show the popup content + $Ref.toggleClass("sapUiShd", this._bShadow).hide().css("visibility", "visible"); + if (iRealDuration == 0) { // do not animate if there is a duration == 0 + fnOpened.apply(); // otherwise call after-opening functions directly + } else if (this._animations.open) { // if custom animation is defined, call it + this._animations.open.call(null, $Ref, iRealDuration, fnOpened); + } else { // otherwise play the default animation + $Ref.fadeIn(iRealDuration, fnOpened); + } + + // get (and 'show' i.e. activate) the BlindLayer + if (!!sap.ui.Device.browser.internet_explorer && !sap.ui.Device.os.windows_phone && Popup._activateBlindLayer) { + this._oBlindLayer = this.oBlindLayerPool.borrowObject($Ref, this._iZIndex - 1); + } // -1 = BlindLayer, -2 = BlockLayer + + if (this._bModal) { + this._showBlockLayer(); + } + + // add Delegate to hosted content for handling of events (e.g. onfocusin) + if (this.oContent instanceof sap.ui.core.Element) { + this.oContent.addDelegate(this); + } + + this.bOpen = true; + + if (this._bModal || this._bAutoClose) { // initialize focus handling + this._addFocusEventListeners(); + } + + this._$(false, true).on("keydown", jQuery.proxy(this._F6NavigationHandler, this)); + + //autoclose implementation for mobile or desktop browser in touch mode + if (this.touchEnabled && !this._bModal && this._bAutoClose) { + jQuery(document).on("touchstart mousedown", jQuery.proxy(this._fAutoCloseHandler, this)); + } + + // register resize handler for blindlayer resizing + if (this._oBlindLayer) { + this._resizeListenerId = sap.ui.core.ResizeHandler.register(this._$().get(0), jQuery.proxy(this.onresize, this)); + } + }; + + /** + * Handles the focus/blur events. + * + * @param oBrowserEvent the browser event + * @private + */ + Popup.prototype.onFocusEvent = function(oBrowserEvent) { + var oEvent = jQuery.event.fix(oBrowserEvent); + if (arguments.length > 1 && arguments[1] === "sap.ui.core.Popup.onFocusEvent-" + this._popupUID) { + // if forwarding a focus event to this Popup via EventBus by any child Popup + oEvent = jQuery.event.fix(arguments[2]); + } + var type = (oEvent.type == "focus" || oEvent.type == "activate") ? "focus" : "blur"; + var bContains = false; + + if (type == "focus") { + var oDomRef = this._$().get(0); + if (oDomRef) { + bContains = jQuery.sap.containsOrEquals(oDomRef, oEvent.target); + + var aChildPopups = this.getChildPopups(); + if (!bContains) { + for (var i = 0, l = aChildPopups.length; i < l; i++) { + // define a new variable to prevent any influence if focused element isn't a child of + // this Popup: oDomRef is reused below. + var oChildDomRef = jQuery.sap.domById(aChildPopups[i]); + if (oChildDomRef) { + bContains = jQuery.sap.containsOrEquals(oChildDomRef, oEvent.target); + if (bContains) { + break; + } + } + } + } + + jQuery.sap.log.debug("focus event on " + oEvent.target.id + ", contains: " + bContains); + + if (this._bModal && !bContains) { // case: modal popup and focus has gone somewhere else in the document + // The popup is modal, but the focus has moved to a part of the document that is NOT inside the popup + // check whether this modal popup is the topmost one + var bTopMost = (Popup.getLastZIndex() == this._iZIndex); + + if (bTopMost) { + + // if in desktop browser or the DOM node which has the focus is input outside the popup, + // focus on the last blurred element + if (!sap.ui.Device.support.touch || jQuery(oEvent.target).is(":input")) { + + // set the focus back to the last focused element inside the popup or at least to the popup root + var oDomRefToFocus = this.oLastBlurredElement ? this.oLastBlurredElement : oDomRef; + jQuery.sap.focus(oDomRefToFocus); + } + } + } else if (this._bAutoClose && bContains && this._sTimeoutId) { // case: autoclose popup and focus has returned into the popup immediately + // focus has returned, so it did only move inside the popup => clear timeout + jQuery.sap.clearDelayedCall(this._sTimeoutId); + this._sTimeoutId = null; + } + } + } else if (type == "blur") { // an element inside the popup is loosing focus - remember in case we need to re-set + jQuery.sap.log.debug("blur event on " + oEvent.target.id); + if (this._bModal) { + this.oLastBlurredElement = oEvent.target; + } else if (this._bAutoClose) { + // focus/blur for handling autoclose is disabled for desktop browsers which are not in the touch simulation mode + // create timeout for closing the popup if there is no focus immediately returning to the popup + if (!this.touchEnabled && !this._sTimeoutId) { + // If Popup has focus and we click outside of the browser, in Chrome the blur event is fired, but the focused element is still in the Popup and is the same as the focused that triggers the blur event. + // if the dom element that fires the blur event is the same as the currently focused element, just return + // because in Chrome when the browser looses focus, it fires the blur event of the + // dom element that has the focus before, but document.activeElement is still this element + if (oEvent.target === document.activeElement) { + return; + } + + var iDuration = typeof this._durations.close === "string" ? 0 : this._durations.close; + // provide some additional event-parameters: closingDuration, where this delayed call comes from + this._sTimeoutId = jQuery.sap.delayedCall(iDuration, this, function(){ + this.close(iDuration, "autocloseBlur"); + var oOf = this._oLastPosition && this._oLastPosition.of; + if (oOf) { + var sParentPopupId = this.getParentPopupId(oOf); + if (sParentPopupId) { + // Also inform the parent popup that the focus is lost from the child popup + // Parent popup can check whether the current focused element is inside the parent popup. If it's still inside the + // parent popup, it keeps open, otherwise parent popup is also closed. + var sEventId = "sap.ui.core.Popup.onFocusEvent-" + sParentPopupId; + sap.ui.getCore().getEventBus().publish("sap.ui", sEventId, oEvent); + } + } + }); + } + } + } + }; + + /** + * Sets the ID of the element that should be focused once the popup opens. + * If the given ID is the ID of an existing Control, this Control's focusDomRef will be focused instead, which may be an HTML element with a different ID (usually a sub-element inside the Control). + * If no existing element ID is supplied and the Popup is modal or auto-close, the Popup will instead focus the first focusable element. + * + * @param {string} sId the ID of the DOM element to focus + * @public + */ + Popup.prototype.setInitialFocusId = function(sId) { + jQuery.sap.assert(!sId || typeof sId === "string", "sId must be a string or empty"); + this._sInitialFocusId = sId; + }; + + /** + * Closes the popup. + * + * If the Popup is already closed or in the process of closing, calling this method does nothing. + * If the Popup is in the process of being opened and closed with a duration of 0, calling this method does nothing. + * If the Popup is in the process of being opened and closed with an animation duration, the animation will be chained, but this functionality is dangerous, + * may lead to inconsistent behavior and is thus not recommended and may even be removed. + * + * @param {int} [iDuration] animation duration in milliseconds; default is the jQuery preset "fast". For iDuration == 0 the closing happens synchronously without animation. + * @public + */ + Popup.prototype.close = function(iDuration) { + if (Popup._autoCloseDebug) { + return; + } + if (this._sTimeoutId) { + jQuery.sap.clearDelayedCall(this._sTimeoutId); + this._sTimeoutId = null; + + if (arguments.length > 1) { + // arguments[0] = iDuration + var sAutoclose = arguments[1]; + var oDomRef = this._$().get(0); + /* + * If coming from the delayedCall from the autoclose mechanism + * but the active element is still in the Popup -> events messed up somehow. + * This is especially needed for the IE because it messes up focus and blur + * events if using a scroll-bar within a Popup + */ + if ((typeof (sAutoclose) == "string" && sAutoclose == "autocloseBlur") && + (oDomRef && jQuery.sap.containsOrEquals(oDomRef, document.activeElement))) { + return; + } + } + } + + jQuery.sap.assert(iDuration === undefined || (typeof iDuration === "number" && (iDuration % 1 == 0)), "iDuration must be empty or an integer"); + + if (this.eOpenState == sap.ui.core.OpenState.CLOSED || this.eOpenState == sap.ui.core.OpenState.CLOSING) { + return; + } // also close when OPENING + // the above will queue the animations (close only after opening), but may lead to the CLOSED event happening before the OPENED event + + var iRealDuration = "fast"; + if ((iDuration === 0) || (iDuration > 0)) { + iRealDuration = iDuration; + } else if ((this._durations.close === 0) || (this._durations.close > 0)) { + iRealDuration = this._durations.close; + } + + if (iRealDuration === 0 && this.eOpenState == sap.ui.core.OpenState.OPENING) { + return; + } // do not allowed immediate closing while opening + + //if(this.eOpenState != sap.ui.core.OpenState.OPEN) return; // this is the more conservative approach: to only close when the Popup is OPEN + + this.eOpenState = sap.ui.core.OpenState.CLOSING; + + if (this.getFollowOf()) { + Popup.DockTrigger.removeListener(Popup.checkDocking, this); + } + + // If we added the content control to the static UIArea, + // then we should remove it again now. + // Assumption: application did not move the content in the meantime! + if ( this.oContent && this._bContentAddedToStatic ) { + //Fix for RTE in PopUp + sap.ui.getCore().getEventBus().publish("sap.ui","__beforePopupClose", { domNode : this._$().get(0) }); + var oStatic = sap.ui.getCore().getStaticAreaRef(); + oStatic = sap.ui.getCore().getUIArea(oStatic); + oStatic.removeContent(oStatic.indexOfContent(this.oContent), true); + } + + this._bContentAddedToStatic = false; + + this._sTimeoutId = null; + + if (this.fEventHandler) { // remove focus handling + this._removeFocusEventListeners(); + } + + this._$(false, true).off("keydown", this._F6NavigationHandler); + + //deregister the autoclose handler for mobile + if (this.touchEnabled) { + if (!this._bModal && this._bAutoClose) { + jQuery(document).off("touchstart mousedown", this._fAutoCloseHandler); + } + } + + if (this.oContent instanceof sap.ui.core.Element) { + this.oContent.removeDelegate(this); + } + + var $Ref = this._$(); + // unsubscribe the event listeners from EventBus + if (this._bEventBusEventsRegistered) { + this._unregisterEventBusEvents(); + } + + // get (and 'hide' i.e. remove) the BlindLayer + if (this._oBlindLayer) { + this.oBlindLayerPool.returnObject(this._oBlindLayer); + } + this._oBlindLayer = null; + + var that = this; + + // shield layer is needs for iOS devices to prevent the delayed mouse events from reaching the underneath dom element. + if (sap.ui.Device.os.ios && sap.ui.Device.support.touch) { + if (this._oBottomShieldLayer) { + + // very extreme case where the same popop is opened and closed again before the 500ms timed out. + // reuse the same shieldlayer and clear the timeout + jQuery.sap.clearDelayedCall(this._iBottomShieldRemoveTimer); + this._iBottomShieldRemoveTimer = null; + } else { + this._oBottomShieldLayer = this.oShieldLayerPool.borrowObject($Ref, this._iZIndex - 3); + } + + // hide the shield layer after the delayed mouse events are fired. + this._iBottomShieldRemoveTimer = jQuery.sap.delayedCall(500, this, function(){ + this.oShieldLayerPool.returnObject(this._oBottomShieldLayer); + this._oBottomShieldLayer = null; + this._iBottomShieldRemoveTimer = null; + }); + } + + var fnClosed = function() { // the function to call when the popup closing animation has completed + // hide the old DOM ref + jQuery($Ref).hide().css({ + "visibility" : "hidden", + "left" : "0px", + "top" : "0px", + "right" : "" + }); + + // update the DomRef because it could have been rerendered during closing + $Ref = that._$(/* forceRerender */ false, /* only get DOM */ true); + if ($Ref.length) { + // also hide the new DOM ref + jQuery($Ref).hide().css({ + "visibility" : "hidden", + "left" : "0px", + "top" : "0px", + "right" : "" + }); + } + + //disabled for mobile or desktop browser in touch mode + if (that.restoreFocus) { + if (that._bModal) { + + // try to set the focus back to whatever was focused before. Do this here because animation needs to be finished. + //- TODO: currently focus is restored only for modal popups. Non modal popups have to do it themselves because the outside focus can change! + Popup.applyFocusInfo(that._oPreviousFocus); + that._oPreviousFocus = null; + that.oLastBlurredElement = null; + } + } + + that.bOpen = false; + that.eOpenState = sap.ui.core.OpenState.CLOSED; + + // notify users that the popup is now officially closed + that.fireClosed(); + + var aChildPopups = that.getChildPopups(); + for (var j = 0, l = aChildPopups.length; j < l; j++) { + that.closePopup(aChildPopups[j]); + } + }; + + if (iRealDuration == 0) { // iRealDuration == 0 means: no animation! + fnClosed.apply(); + } else if (this._animations.close) { + this._animations.close.call(null, $Ref, iRealDuration, fnClosed); // play custom animation, if supplied + } else { + $Ref.fadeOut(iRealDuration, fnClosed); // otherwise use jQuery animation + } + + if (this._bModal) { + this._hideBlockLayer(); + } + + //deregister resize handler + if (this._resizeListenerId) { + sap.ui.core.ResizeHandler.deregister(this._resizeListenerId); + this._resizeListenerId = null; + } + }; + + /** + * Returns an object containing as much information about the current focus as possible, or null if no focus is present or no focus information can be gathered. + */ + Popup.getCurrentFocusInfo = function() { + var _oPreviousFocus = null; + var focusedControlId = sap.ui.getCore().getCurrentFocusedControlId(); + if (focusedControlId) { + + // a SAPUI5 control was focused before + var oFocusedControl = sap.ui.getCore().getControl(focusedControlId); + _oPreviousFocus = {'sFocusId':focusedControlId,'oFocusInfo': oFocusedControl ? oFocusedControl.getFocusInfo() : {}}; // add empty oFocusInfo to avoid the need for all recipients to check + } else { + try { + + // not a SAPUI5 control... but if something has focus, save as much information about it as available + var oElement = document.activeElement; + if (oElement) { + _oPreviousFocus = {'sFocusId':oElement.id,'oFocusedElement':oElement,'oFocusInfo':{}}; // add empty oFocusInfo to avoid the need for all recipients to check + } + } catch (ex) { + + // IE9 throws an Unspecified Error when accessing document.activeElement inside a frame before body.onload + // This is not an issue, as there is just no focus yet to restore + // Other browsers do not fail here, but even if they would, the worst thing would be a non-restored focus + _oPreviousFocus = null; + } + } + return _oPreviousFocus; + }; + + /** + * + */ + Popup.applyFocusInfo = function(oPreviousFocus) { + if (oPreviousFocus) { + var oFocusedControl = sap.ui.getCore().getControl(oPreviousFocus.sFocusId); + if (oFocusedControl) { + + // if a SAPUI5 control had been focused, just re-focus it + oFocusedControl.applyFocusInfo(oPreviousFocus.oFocusInfo); + } else { + + // no SAPUI5 control... try to find the control by ID if an ID was there + var oElement = jQuery.sap.domById(oPreviousFocus.sFocusId) + || oPreviousFocus.oFocusedElement; // if not even an ID was available when focus was lost maybe the original DOM element is still there + jQuery.sap.focus(oElement); // also works for oElement == null + } + } + }; + + /** + * Sets the content this instance of the Popup should render. + * Content must be capable of being positioned via position:absolute; + * @param {sap.ui.core.Control | DOMRef } oContent + * @return {sap.ui.core.Popup} this to allow method chaining + * @public + */ + Popup.prototype.setContent = function(oContent) { + jQuery.sap.assert(typeof oContent === "object", "oContent must be an object"); + this.oContent = oContent; + return this; + }; + + /** + * Returns this Popup's content. + * @return {sap.ui.core.Control | DOMRef } the content that has been set previously (if any) + * @public + */ + Popup.prototype.getContent = function() { + return this.oContent; + }; + + /** + * Sets the position of the Popup (if you refer to a Control as anchor then do not + * use the DOMRef of the control which might change after re-renderings). + * Optional parameters can only be omitted when all subsequent parameters are omitted as well. + * + * @param {sap.ui.core.Popup.Dock} my specifies which point of the given Content should be aligned + * @param {sap.ui.core.Popup.Dock | {left: sap.ui.core.CSSSize, top: sap.ui.core.CSSSize}} at specifies the point of the reference element to which the given Content should be aligned + * @param {string | sap.ui.core.Element | DOMRef | jQuery | jQuery.Event} [of=document] specifies the reference element to which the given content should be aligned as specified in the other parameters + * @param {string} [offset='0 0'] the offset relative to the docking point, specified as a string with space-separated pixel values (e.g. "0 10" to move the popup 10 pixels to the right). If the docking of both "my" and "at" are both RTL-sensitive ("begin" or "end"), this offset is automatically mirrored in the RTL case as well. + * @param {string} [collision] defines how the position of an element should be adjusted in case it overflows the window in some direction. The valid values that refer to jQuery-UI's position parameters are "flip", "fit" and "none". + * @return {sap.ui.core.Popup} this to allow method chaining + * @public + */ + Popup.prototype.setPosition = function(my, at, of, offset, collision) { + jQuery.sap.assert(typeof my === "string", "my must be a string"); + jQuery.sap.assert(typeof at === "string" || (typeof at === "object" && (typeof at.left === "number") && (typeof at.top === "number")), "my must be a string or an object with 'left' and 'top' properties"); + jQuery.sap.assert(!of || typeof of === "object" || typeof of === "function", "of must be empty or an object"); + jQuery.sap.assert(!offset || typeof offset === "string", "offset must be empty or a string"); + jQuery.sap.assert(!collision || typeof collision === "string", "collision must be empty or a string"); + + this._oPosition = this._createPosition(my, at, of, offset, collision); + + if (this.eOpenState != sap.ui.core.OpenState.CLOSED) { + this._applyPosition(this._oPosition); + this._oBlindLayer && this._oBlindLayer.update(this._$()); + } + + return this; + }; + + Popup.prototype._createPosition = function(my, at, of, offset, collision) { + + // check if new jQuery-Ui (>1.9) offset is used + var bNewOffset = false; + if (my && (my.indexOf("+") >= 0 || my.indexOf("-") >= 0)) { + bNewOffset = true; + if (offset && offset != "0 0") { + jQuery.sap.log.warning("offset used in my and in offset, the offset value will be ignored", "sap.ui.core.Popup", "setPosition"); + } + offset = null; + } + + var oPosition = jQuery.extend({},this._oDefaultPosition, { + "my": my || this._oDefaultPosition.my, // to use default my if empty string + "at": at || this._oDefaultPosition.at, // to use default at if empty string + "of": of, + "offset": offset, + "collision": collision + }); + + if ( !jQuery.ui.version) { + // only jquery-ui-position.js loaded, not jquery-ui-core.js, so no version info available + if ( Popup._bNewOffset == null ) { + // check whether the jQuery UI version is new (no more offset parameter) or not + Popup._bNewOffset = true; + if (!(sap.ui.Device.browser.internet_explorer && sap.ui.Device.browser.version == 8 && jQuery.sap.Version(jQuery().jquery).compareTo("1.8.1") < 0)) { + // In IE8 and jQuery 1.7.1 this check crashes. So it is not supported to use a older jQueryUi version without the core in this case. + var $Div = jQuery(document.createElement("div")); + $Div.position({ + of: window, + using: function(position, data) { + // the data parameter to the using callback was introduced together with the replacement for 'offset' + Popup._bNewOffset = (data !== undefined); + } + }); + } + + } + } + + var aMy = []; + var aOffset = []; + + if ( Popup._bNewOffset || jQuery.sap.Version(jQuery.ui.version).compareTo("1.8.23") > 0) { + if (offset && offset != "0 0") { + // convert offset to my + aMy = oPosition.my.split(" "); + aOffset = offset.split(" "); + var aSign = [parseInt(aOffset[0], 10) < 0 ? "" : "+", parseInt(aOffset[1], 10) < 0 ? "" : "+"]; // no "-" sign because already in numer of offset + + oPosition.my = aMy[0] + aSign[0] + aOffset[0] + " " + aMy[1] + aSign[1] + aOffset[1]; + oPosition.offset = null; + } + } else if (bNewOffset) { + // new offset used with old jQuery version -> convert into offset property + aMy = oPosition.my.split(" "); + aOffset = ["",""]; + var iIndex = aMy[0].indexOf("+"); + if (iIndex < 0) { + iIndex = aMy[0].indexOf("-"); + } + if (iIndex >= 0) { + aOffset[0] = aMy[0].slice(iIndex); + aMy[0] = aMy[0].slice(0, iIndex); + } + + iIndex = aMy[1].indexOf("+"); + if (iIndex < 0) { + iIndex = aMy[1].indexOf("-"); + } + if (iIndex >= 0) { + aOffset[1] = aMy[1].slice(iIndex); + aMy[1] = aMy[1].slice(0, iIndex); + } + + oPosition.my = aMy[0] + " " + aMy[1]; + oPosition.offset = aOffset[0] + " " + aOffset[1]; + } + + return oPosition; + + }; + + Popup.prototype._getPositionOffset = function() { + + var aOffset = []; + + if (this._oPosition.my && (this._oPosition.my.indexOf("+") >= 0 || this._oPosition.my.indexOf("-") >= 0)) { + var aMy = this._oPosition.my.split(" "); + var iIndex = aMy[0].indexOf("+"); + if (iIndex < 0) { + iIndex = aMy[0].indexOf("-"); + } + if (iIndex >= 0) { + aOffset[0] = aMy[0].slice(iIndex); + } + + iIndex = aMy[1].indexOf("+"); + if (iIndex < 0) { + iIndex = aMy[1].indexOf("-"); + } + if (iIndex >= 0) { + aOffset[1] = aMy[1].slice(iIndex); + } + + } else if (this._oPosition.offset) { + aOffset = this._oPosition.offset.split(" "); + } + + return aOffset; + + }; + + /** + * Applies the given position to the Popup which is assumed to be currently open + * + * @private + */ + Popup.prototype._applyPosition = function(oPosition) { + var bRtl = sap.ui.getCore().getConfiguration().getRTL(); + var $Ref = this._$(); + var oAt = oPosition.at; + + if (typeof (oAt) === "string") { + $Ref.css("display", "block").position(this._resolveReference(this._convertPositionRTL(oPosition, bRtl))); // must be visible, so browsers can calculate its offset! + this._fixPositioning(oPosition, bRtl); + } else if (sap.ui.core.CSSSize.isValid(oAt.left) && sap.ui.core.CSSSize.isValid(oAt.top)) { + $Ref.css({ + "left" : oAt.left, + "top" : oAt.top + }); + } else if (sap.ui.core.CSSSize.isValid(oAt.right) && sap.ui.core.CSSSize.isValid(oAt.top)) { + $Ref.css({ + "right" : oAt.right, + "top" : oAt.top + }); + } else if (typeof (oAt.left) === "number" && typeof (oAt.top) === "number") { + var domRef = $Ref[0]; + if (domRef && domRef.style.right) { // in some RTL cases leave the Popup attached to the right side of the browser window + var width = $Ref.outerWidth(); + $Ref.css({ + "right" : (document.documentElement.clientWidth - (oAt.left + width)) + "px", + "top" : oAt.top + "px" + }); + } else { + $Ref.css({ + "left" : oAt.left + "px", + "top" : oAt.top + "px" + }); + } + } + + // remember given position for later redraws + this._oLastPosition = oPosition; + this._oLastOfRect = this._calcOfRect(oPosition.of); + }; + + /** + * Calculates the rect information of the given parameter. + * + * @param {String| DomNode | jQuery |sap.ui.core.Element | Event | jQuery.Event} oOf the DOM Element, UI Element instance on which the calculation is done + * @returns {object} the rect infomartion which contains the top, left, width, height of the given object. If Event or jQuery.Event type parameter is given, null is returned because there's no way to calculate the rect info based on a event object. + * @private + */ + Popup.prototype._calcOfRect = function(oOf){ + var oOfDom = this._getOfDom(oOf); + + if (oOfDom) { + return jQuery(oOfDom).rect(); + } + + return null; + }; + + /** + * Get the DOM reference of the given parameter. The "of" parameter can be different types. This methods returns the refered DOM reference base on the given parameter. If Event or jQuery.Event type parameter is given, null is returned. + * + * @param {String| DomNode | jQuery |sap.ui.core.Element | Event | jQuery.Event} oOf the DOM Element, UI Element instance on which the calculation is done + * @returns {DomNode} the DOM reference calculated based on the given parameter. If Event, or jQuery Event type parameter is given, null is returned. + * @private + */ + Popup.prototype._getOfDom = function(oOf) { + if (oOf instanceof jQuery.Event) { + return null; + } + + var $Of; + + if (typeof (oOf) === "string") { + $Of = jQuery.sap.byId(oOf); + } else if (oOf instanceof jQuery) { + $Of = oOf; + } else { + $Of = jQuery(oOf instanceof sap.ui.core.Element ? oOf.getDomRef() : oOf); + } + + return $Of[0]; + }; + + /** + * Converts a position string with RTL-independent settings like "begin top" or "end center" into a string understood by + * jQuery UI position() by replacing "begin" and "end" with the respective concrete value, depending on RTL settings. + * The returned object is a clone, the original is unchanged. + * + * @private + */ + Popup.prototype._convertPositionRTL = function(oPosition, bRtl) { + var oFixedPos = jQuery.extend({}, oPosition); // don't modify the original object + + if (bRtl) { + var bNewOffset = false; + if (oFixedPos.my && (oFixedPos.my.indexOf("+") >= 0 || oFixedPos.my.indexOf("-") >= 0)) { + // check if new jQuery-Ui (>1.9) offset is used + bNewOffset = true; + } + + if ((oFixedPos.offset || bNewOffset) + && ((oFixedPos.my.indexOf("begin") > -1) || (oFixedPos.my.indexOf("end") > -1)) + && ((oFixedPos.at.indexOf("begin") > -1) || (oFixedPos.at.indexOf("end") > -1))) { + if (bNewOffset) { + var aMy = oFixedPos.my.split(" "); + if (aMy.length == 2) { + oFixedPos.my = ""; + if (aMy[0]) { + if (aMy[0].indexOf("begin") > -1 || aMy[0].indexOf("end") > -1) { + if (aMy[0].indexOf("+") > -1) { + aMy[0] = aMy[0].replace("+", "-"); + } else if (aMy[0].indexOf("-") > -1) { + aMy[0] = aMy[0].replace("-", "+"); + } + } + oFixedPos.my = aMy[0]; + } + if (aMy[1]) { + if (aMy[1].indexOf("begin") > -1 || aMy[1].indexOf("end") > -1) { + if (aMy[1].indexOf("+") > -1) { + aMy[1] = aMy[1].replace("+", "-"); + } else if (aMy[1].indexOf("-") > -1) { + aMy[1] = aMy[1].replace("-", "+"); + } + } + if (aMy[0]) { + oFixedPos.my = oFixedPos.my + " "; + } + oFixedPos.my = oFixedPos.my + aMy[1]; + } + } + } else { + oFixedPos.offset = this._mirrorOffset(oFixedPos.offset); + } + } + oFixedPos.my = oFixedPos.my.replace("begin", "right").replace("end", "left"); + oFixedPos.at = oFixedPos.at.replace("begin", "right").replace("end", "left"); + } else { + oFixedPos.my = oFixedPos.my.replace("end", "right").replace("begin", "left"); + oFixedPos.at = oFixedPos.at.replace("end", "right").replace("begin", "left"); + } + + return oFixedPos; + }; + + /** + * Mirrors the given offset which is a string containing two integer numbers separated by whitespace. + * (=negates the first number) + * + * @param {string} sOffset the offset to be mirrored + * @returns {string} the mirrored offset + * + * @private + */ + Popup.prototype._mirrorOffset = function(sOffset) { + var aOffset = jQuery.trim(sOffset).split(/\s/); + var posX = parseInt(aOffset[0], 10); + return (-posX) + " " + aOffset[aOffset.length - 1]; // array could be longer than 2 with multiple whitespace characters + }; + + /** + * Changes the default positioning of the Popup ("left: ...px") to ("right: ...px"), maintaining the + * actual screen position, if the Popup should "grow to the left" when increasing in size. + * This is the case if: + * - LTR mode and horizontal alignment is right or end + * - RTL mode and horizontal alignment is right, begin or center + * + * @private + */ + Popup.prototype._fixPositioning = function(sPosition, bRtl) { + var my = sPosition.my; + var $Ref = this._$(); + var right = 0; + + if (typeof (my) === "string") { + if (bRtl && ((my.indexOf("right") > -1) || (my.indexOf("begin") > -1) || (my.indexOf("center") > -1))) { + $Ref = this._$(); + right = jQuery(window).width() - $Ref.outerWidth() - $Ref.offset().left; + $Ref.css({ + "right" : right + "px", + "left" : "" + }); + } else if ((my.indexOf("right") > -1) || (my.indexOf("end") > -1)) { + // LTR + $Ref = this._$(); + right = jQuery(window).width() - $Ref.outerWidth() - $Ref.offset().left; + $Ref.css({ + "right" : right + "px", + "left" : "" + }); + } + } + }; + + /** + * If the reference element is specified as a sap.ui.core.Element, then it is resolved to a DOM node. + * + * @param {object} oPosition position info object describing the desired position of the popup. + * @returns {object} resolved position info + * @private + */ + Popup.prototype._resolveReference = function(oPosition) { + var oResult = oPosition; + if ( oPosition.of instanceof sap.ui.core.Element ) { + oResult = jQuery.extend({}, oPosition, { of : oPosition.of.getDomRef()}); + } + + return oResult; + }; + + /** + * Determines whether the Popup should have a shadow (in supporting browsers). + * This also affects a currently open popup. + * + * @param {boolean} bShowShadow whether to show a shadow + * @return {sap.ui.core.Popup} this to allow method chaining + * @public + */ + Popup.prototype.setShadow = function(bShowShadow) { + jQuery.sap.assert(typeof bShowShadow === "boolean", "bShowShadow must be boolean"); + this._bShadow = bShowShadow; + if (this.eOpenState != sap.ui.core.OpenState.CLOSED) { + this._$().toggleClass("sapUiShd", bShowShadow); + } + + return this; + }; + + /** + * Used to specify whether the Popup should be modal. A modal popup will put some fading "block layer" over the background and + * prevent attempts to put the focus outside/below the popup. + * Setting this while the popup is open will change "block layer" immediately. + * + * @param {boolean} bModal whether the Popup is of modal type + * @param {string} [sModalCSSClass] a CSS class (or space-separated list of classes) that should be added to the block layer + * @return {sap.ui.core.Popup} this to allow method chaining + * @public + */ + Popup.prototype.setModal = function(bModal, sModalCSSClass) { + jQuery.sap.assert(typeof bModal === "boolean", "bModal must be boolean"); + jQuery.sap.assert(!sModalCSSClass || typeof sModalCSSClass === "string", "sModalCSSClass must be empty or a string"); + + var bOldModal = this._bModal; + + this._bModal = bModal; + this._sModalCSSClass = sModalCSSClass; + + //update the blocklayer and autoclose handler when the popup is open + if (this.isOpen()) { + if (bOldModal !== bModal) { + if (bModal) { + this._showBlockLayer(); + } else { + this._hideBlockLayer(); + } + + if (this.touchEnabled && this._bAutoClose) { + if (!bModal) { + + //register the autoclose handler when modal is set to false + jQuery(document).on("touchstart mousedown", jQuery.proxy(this._fAutoCloseHandler, this)); + } else { + + //deregister the autoclose handler when modal is set to true + jQuery(document).off("touchstart mousedown", this._fAutoCloseHandler); + } + } + } + } + return this; + }; + + /** + * Returns the value if a Popup is of modal type + * + * @return {boolean] bModal whether the Popup is of modal type + * @public + */ + Popup.prototype.getModal = function() { + return this._bModal; + }; + + /** + * Sets the behavior of the popup for fast navigation (F6). + * + * "NONE": Fast Navigation is disabled within the popup (default). + * "DOCK": Fast Navigation is disabled within the popup. When a fast navigation is triggered the first element before/after the dock element in the + * fast navigation chain will be focused. If the popup is modal, there is no dock element or the dock element is the document this option behaves like "NONE". + * "SCOPE": Fast Navigation is enabled and cycles within the popup. + * + * @private + * @param {string} sMode the desired navigation mode + * @since 1.25.0 + */ + Popup.prototype.setNavigationMode = function(sMode) { + if (sMode != "NONE" && sMode != "DOCK" && sMode != "SCOPE") { + this._sF6NavMode = "NONE"; + } + this._sF6NavMode = sMode; + }; + + /** + * Used to specify whether the Popup should close as soon as + * - for non-touch environment: the focus leaves + * - for touch environment: user clicks the area which is outside the popup itself, the dom elemnt which popup aligns to (except document), + * and one of the autoCloseAreas set by calling setAutoCloseAreas. + * @param {boolean} bAutoClose whether the Popup should close as soon as the focus leaves + * @return {sap.ui.core.Popup} this to allow method chaining + * @public + */ + Popup.prototype.setAutoClose = function(bAutoClose) { + jQuery.sap.assert(typeof bAutoClose === "boolean", "bAutoClose must be boolean"); + + if (this.touchEnabled && this.isOpen() && this._bAutoClose !== bAutoClose) { + if (!this._bModal) { + if (bAutoClose) { + //register the autoclose hanlder when autoclose is set to true + jQuery(document).on("touchstart mousedown", jQuery.proxy(this._fAutoCloseHandler, this)); + } else { + //deregister the autoclose handler when autoclose is set to false + jQuery(document).off("touchstart mousedown", this._fAutoCloseHandler); + } + } + } + + this._bAutoClose = bAutoClose; + return this; + }; + + /** + * Sets the additional areas in the page that are considered part of the Popup when autoclose is enabled. + * - non-touch environment: if the focus leaves the Popup but immediately enters one of these areas, the Popup does NOT close. + * - touch environment: if user clicks one of these areas, the Popup does NOT close. + * + * @param {DomRef[]} aAutoCloseAreas an array containing DOM elements considered part of the Popup; a value of null removes all previous areas + * @return {sap.ui.core.Popup} this to allow method chaining + * @public + */ + Popup.prototype.setAutoCloseAreas = function(aAutoCloseAreas) { + jQuery.sap.assert(aAutoCloseAreas === null || jQuery.isArray(aAutoCloseAreas), "aAutoCloseAreas must be null or an array"); + + for (var i = 0, l = aAutoCloseAreas.length; i < l; i++) { + var sId = ""; + + if (aAutoCloseAreas[i] instanceof sap.ui.core.Element) { + sId = aAutoCloseAreas[i].getId(); + } else if (typeof aAutoCloseAreas[i] === "object") { + sId = aAutoCloseAreas[i].id; + } else if (typeof aAutoCloseAreas[i] === "string") { + sId = aAutoCloseAreas[i]; + } + if (jQuery.inArray(sId, this.getChildPopups()) === -1) { + this.addChildPopup(sId); + } + } + return this; + }; + + /** + * Sets the animation functions to use for opening and closing the Popup. Any null value will be ignored and not change the respective animation function. + * When called, the animation functions receive three parameters: + * - the jQuery object wrapping the DomRef of the popup + * - the requested animation duration + * - a function that MUST be called once the animation has completed + * + * @param {function} fnOpen + * @param {function} fnClose + * @return {sap.ui.core.Popup} this to allow method chaining + * @public + */ + Popup.prototype.setAnimations = function(fnOpen, fnClose) { + jQuery.sap.assert(fnOpen === null || typeof fnOpen === "function", "fnOpen must be a function"); + jQuery.sap.assert(fnClose === null || typeof fnClose === "function", "fnClose must be a function"); + + if (fnOpen && (typeof (fnOpen) == "function")) { + this._animations.open = fnOpen; + } + + if (fnClose && (typeof (fnClose) == "function")) { + this._animations.close = fnClose; + } + + return this; + }; + + /** + * Sets the durations for opening and closing animations. + * Null values and values < 0 are ignored. + * A duration of 0 means no animation. + * Default value is "fast" which is the jQuery constant for "200 ms". + * + * @param {int} iOpenDuration in milliseconds + * @param {int} iCloseDuration in milliseconds + * @return {sap.ui.core.Popup} this to allow method chaining + * @public + */ + Popup.prototype.setDurations = function(iOpenDuration, iCloseDuration) { + jQuery.sap.assert(iOpenDuration === null || (typeof iOpenDuration === "number" && (iOpenDuration % 1 == 0)), "iOpenDuration must be null or an integer"); + jQuery.sap.assert(!iCloseDuration || (typeof iCloseDuration === "number" && (iCloseDuration % 1 == 0)), "iOpenDuration must be undefined or an integer"); + + if ((iOpenDuration > 0) || (iOpenDuration === 0)) { + this._durations.open = iOpenDuration; + } + + if ((iCloseDuration > 0) || (iCloseDuration === 0)) { + this._durations.close = iCloseDuration; + } + + return this; + }; + + Popup.CLOSE_ON_SCROLL = "close_Popup_if_of_is_moved"; + /** + * @private + */ + Popup.prototype._fnCloseOnScroll = function(oEventParameters) { + this.close(); + }; + + /** + * This enabled/disables the Popup to follow its opening reference. If the Popup is open and a followOf should + * be set the corresponding listener will be attached. + * + * @param {boolean | function | null} followOf a boolean value enabled/disables the default followOf-Handler. Or an individual handler can be given. + * null deletes all followOf settings. + * @since 1.13.0 + * @public + */ + Popup.prototype.setFollowOf = function(followOf) { + // deregister any listener to ensure that in every state of the Popup the correct listener is attached (or not) + Popup.DockTrigger.removeListener(Popup.checkDocking, this); + + var bUpdateOfRect = false; + this._bFollowOf = true; + this._followOfHandler = null; + + if (typeof (followOf) === "function") { + this._followOfHandler = followOf; + bUpdateOfRect = true; + } else if (typeof (followOf) === "boolean") { + bUpdateOfRect = followOf; + } else if (followOf === Popup.CLOSE_ON_SCROLL) { + this._followOfHandler = this._fnCloseOnScroll; + bUpdateOfRect = true; + } else { + this._bFollowOf = false; + + if (followOf !== null) { + jQuery.sap.log.error("Trying to set an invalid type to 'followOf: " + followOf); + } + } + + if (bUpdateOfRect && this._oLastPosition) { + this._oLastOfRect = this._calcOfRect(this._oLastPosition.of); + } + + if (this._bFollowOf && this.getOpenState() === sap.ui.core.OpenState.OPEN) { + Popup.DockTrigger.addListener(Popup.checkDocking, this); + } + }; + + /** + * Determines whether the pop-up should auto closes or not. + * + * @returns {boolean} + * @since 1.16 + * @public + */ + Popup.prototype.getAutoClose = function() { + return this._bAutoClose; + }; + + /** + * This returns true/false if the default followOf method should be used. If a separate followOf-handler was previously added + * the correspodning function is returned. + * + * @returns {boolean | function} if a function was set it is returned otherwise a boolean value whether the follow of is activated + * @since 1.13.0 + * @public + */ + Popup.prototype.getFollowOf = function() { + if (this._bFollowOf) { + return typeof (this._followOfHandler) === "function" ? this._followOfHandler : true; + } + + return false; + }; + + /** + * Returns whether the Popup is currently open (this includes opening and closing animations). + * + * @returns {boolean} whether the Popup is opened (or currently being opened or closed) + * @public + */ + Popup.prototype.isOpen = function() { + return this.bOpen; + }; + + /** + * Returns whether the Popup is currently open, closed, or transitioning between these states. + * + * @returns {sap.ui.core.OpenState} whether the Popup is opened + * @public + */ + Popup.prototype.getOpenState = function() { + return this.eOpenState; + }; + + /** + * Closes and destroys this instance of Popup. + * Does not destroy the hosted content. + * @public + */ + Popup.prototype.destroy = function() { + // deregister resize handler + if (this._resizeListenerId) { + sap.ui.core.ResizeHandler.deregister(this._resizeListenerId); + this._resizeListenerId = null; + } + + this.close(); + this.oContent = null; + + if (this._bFollowOf) { + this.setFollowOf(null); + } + + if (this._bEventBusEventsRegistered) { + this._unregisterEventBusEvents(); + } + }; + + /** + * When the Popup is being destroyed all corresponding references should be + * deleted as well to prevent any memory leeks. + * + * @public + */ + Popup.prototype.exit = function() { + delete this._mFocusEvents; + }; + + /** + * @private + */ + Popup.prototype._addFocusEventListeners = function(sChannel, sEvent, oEventData) { + if (!this.fEventHandler) { + this.fEventHandler = jQuery.proxy(this.onFocusEvent, this); + } + // make sure to notice all blur's in the popup + var $PopupRoot = this._$(); + var aChildPopups = this.getChildPopups(); + var oDomRef = {}; + var i = 0, l = 0; + + if (document.addEventListener && !sap.ui.Device.browser.internet_explorer) { //FF, Safari + document.addEventListener("focus", this.fEventHandler, true); + $PopupRoot.get(0).addEventListener("blur", this.fEventHandler, true); + + for (i = 0, l = aChildPopups.length; i < l; i++) { + oDomRef = jQuery.sap.domById(aChildPopups[i]); + if (oDomRef) { + oDomRef.addEventListener("blur", this.fEventHandler, true); + } + } + } else { // IE8 + jQuery(document).bind("activate." + this._popupUID, this.fEventHandler); + $PopupRoot.bind("deactivate." + this._popupUID, this.fEventHandler); + + for (i = 0, l = aChildPopups.length; i < l; i++) { + oDomRef = jQuery.sap.domById(aChildPopups[i]); + if (oDomRef) { + jQuery(oDomRef).bind("deactivate." + this._popupUID, this.fEventHandler); + } + } + } + }; + + /** + * @private + */ + Popup.prototype._removeFocusEventListeners = function(sChannel, sEvent, oEventData) { + var $PopupRoot = this._$(/* force rendering */false, /* getter only */true); + + // if popup's content isn't rendered yet, focus vent listeners don't need to be removed + if (!$PopupRoot.length) { + return; + } + + var aChildPopups = this.getChildPopups(); + var oDomRef = {}; + var i = 0, l = 0; + + if (document.removeEventListener && !sap.ui.Device.browser.internet_explorer) { //FF, Safari + document.removeEventListener("focus", this.fEventHandler, true); + $PopupRoot.get(0).removeEventListener("blur", this.fEventHandler, true); + + for (i = 0, l = aChildPopups.length; i < l; i++) { + oDomRef = jQuery.sap.domById(aChildPopups[i]); + if (oDomRef) { + oDomRef.removeEventListener("blur", this.fEventHandler, true); + } + + this.closePopup(aChildPopups[i]); + } + } else { // IE8 + jQuery(document).unbind("activate." + this._popupUID, this.fEventHandler); + $PopupRoot.unbind("deactivate." + this._popupUID, this.fEventHandler); + + for (i = 0, l = aChildPopups.length; i < l; i++) { + oDomRef = jQuery.sap.domById(aChildPopups[i]); + if (oDomRef) { + jQuery(oDomRef).unbind("deactivate." + this._popupUID, this.fEventHandler); + } + } + } + this.fEventHandler = null; + }; + + /** + * @private + */ + Popup.prototype._registerEventBusEvents = function(sChannel, sEvent, oEventData) { + var that = this; + + jQuery.each(that._mFocusEvents, function(sEventId, fnListener) { + sap.ui.getCore().getEventBus().subscribe("sap.ui", sEventId, fnListener, that); + }); + + this._bEventBusEventsRegistered = true; + }; + + /** + * @private + */ + Popup.prototype._unregisterEventBusEvents = function(sChannel, sEvent, oEventData) { + var that = this; + + jQuery.each(that._mFocusEvents, function(sEventId, fnListener) { + sap.ui.getCore().getEventBus().unsubscribe("sap.ui", sEventId, fnListener, that); + }); + + delete this._bEventBusEventsRegistered; + }; + + /** + * This listener is called by the EventBus when an element-id should be added to the + * focusable area. The event is fired when a control publishes the corresponding event + * according to the channel id "sap.ui" with the event id: + * "sap.ui.core.Popup.addFocusableContent-". The Popup-id can be obtained by this._popupUID. + * + * @param {string} sChannel channel of the EventBus + * @param {string} sEvent name of the event + * @param {Object} oFocusable object with an id-property + * @since 1.12.3 + * @private + */ + Popup.prototype._addFocusableArea = function(sChannel, sEvent, oEventData) { + if (jQuery.inArray(oEventData.id, this.getChildPopups()) === -1) { + this.addChildPopup(oEventData.id); + } + }; + + /** + * This listener is called by the EventBus when an element-id should be removed from the + * focusable area. The event is fired when a control publishes the corresponding event + * according to the channel id "sap.ui" with the event id: + * "sap.ui.core.Popup.removeFocusableContent-". The Popup-id can be obtained by this._popupUID. + * + * @param {string} sChannel channel of the EventBus + * @param {string} sEvent name of the event + * @param {Object} oFocusable object with an id-property and if a autoClose machanism should occur + * @since 1.17.0 + * @private + */ + Popup.prototype._removeFocusableArea = function(sChannel, sEvent, oEventData) { + this.removeChildPopup(oEventData.id); + }; + + /** + * This is the internal event listener that is called when a parent Popup closes its child + * Popups. + * + * @param {string} sChannel channel of the EventBus + * @param {string} sEvent name of the event + * @param {object} oEventData provides further attributes + */ + Popup.prototype._closePopup = function(sChannel, sEvent, oEventData) { + this.close(typeof this._durations.close === "string" ? 0 : this._durations.close); + }; + + /** + * This adds the Popup's id to the given DOM-reference right into the HTML as + * an attribute to identify the Popup within the static UI-area. + * + * Additionally the corresponding event-listener is registered to the EventBus. The event is registered + * to the reserved channel "sap.ui" and is called "sap.ui.core.Popup.addFocusableContent-" + * with the corresponding Popup-id. + * This event can be published via the EventBus to add a focusable DOM-element-id to the focusable area when + * the Popup looses its focus. + * + * @param {jQuery} $Ref to which DOM-reference the Popup-id should be added to + * @private + */ + Popup.prototype._setIdentity = function($Ref) { + if (typeof $Ref === "object") { + $Ref.attr("data-sap-ui-popup", this._popupUID); + } else { + jQuery.sap.log.warning("Incorrect DomRef-type for 'setIdentity': " + $Ref, this); + return; + } + + if (!this._bEventBusEventsRegistered) { + this._registerEventBusEvents(); + } + }; + + /** + * Returns the jQuery object containing the root of the content of the Popup + * + * @param {boolean} [bForceReRender] The content will be rendered again regardless of the render status. When it's set to true, the bGetOnly parameter is ignored. + * @param {boolean} [bGetOnly] Only returns the existing content DOM. When content isn't rendered yet, empty jQuery Object is returned. + * @returns {jQuery} the jQuery object containing the root of the content of the Popup + * @private + */ + Popup.prototype._$ = function(bForceReRender, bGetOnly){ + var $ContentRef; + + if (this.oContent instanceof Control) { + $ContentRef = this.oContent.$(); + if (bForceReRender || ($ContentRef.length === 0 && !bGetOnly)) { + jQuery.sap.log.info("Rendering of popup content: " + this.oContent.getId()); + if ($ContentRef.length > 0) { + RenderManager.preserveContent($ContentRef[0], /* bPreserveRoot */ true, /* bPreserveNodesWithId */ false); + } + sap.ui.getCore().getRenderManager().render(this.oContent, sap.ui.getCore().getStaticAreaRef()); + $ContentRef = this.oContent.$(); + } + } else if (this.oContent instanceof sap.ui.core.Element) { + $ContentRef = this.oContent.$(); + } else { + $ContentRef = jQuery(this.oContent); + } + + this._setIdentity($ContentRef); + + return $ContentRef; + }; + + /** + * + * @param iZIndex + * @private + */ + Popup.prototype._showBlockLayer = function() { + var $BlockRef = jQuery("#sap-ui-blocklayer-popup"), + sClassName = "sapUiBLy" + (this._sModalCSSClass ? " " + this._sModalCSSClass : ""); + + if ($BlockRef.length === 0) { + $BlockRef = jQuery('
    '); + $BlockRef.appendTo(sap.ui.getCore().getStaticAreaRef()); + } else { + $BlockRef.removeClass().addClass(sClassName); + } + + // push current z-index to stack + Popup.blStack.push(this._iZIndex - 2); + $BlockRef.css({ + "z-index" : this._iZIndex - 2, + "visibility" : "visible" + }).show(); + + // prevent HTML page from scrolling + jQuery("html").addClass("sapUiBLyBack"); + + }; + + Popup.prototype._hideBlockLayer = function() { + + // a dialog was closed so pop his z-index from the stack + Popup.blStack.pop(); + + // if there are more z-indices this means there are more dialogs stacked up. So redisplay the blocklayer (with new z-index) under the new current dialog which should be displayed. + if (Popup.blStack.length > 0) { + + // set the blocklayer z-index to the last z-index in the stack and show it + jQuery("#sap-ui-blocklayer-popup").css({ + "z-index" : Popup.blStack[Popup.blStack.length - 1], + "visibility" : "visible" + }).show(); + } else { + // the last dialog was closed so we can hide the block layer now + jQuery("#sap-ui-blocklayer-popup").css("visibility","hidden").hide(); + + // Allow scrolling again in HTML page only if there is no BlockLayer left + jQuery("html").removeClass("sapUiBLyBack"); + } + }; + + //**************************************************** + //Handling of movement of the dock references + //**************************************************** + Popup.DockTrigger = new IntervalTrigger(200); + + /** + * This function compares two different objects (created via jQuery(DOM-ref).rect()). + * If the left, top, width or height differs more than a set puffer this function + * will return false. + * + * @param {object} oRectOne the first object + * @param {object} oRectTwo the other object + * @return {boolean} if the given objects are equal + * @private + */ + var fnRectEqual = function(oRectOne, oRectTwo) { + var iPuffer = 3; + var iLeft = Math.abs(oRectOne.left - oRectTwo.left); + var iTop = Math.abs(oRectOne.top - oRectTwo.top); + var iWidth = Math.abs(oRectOne.width - oRectTwo.width); + var iHeight = Math.abs(oRectOne.height - oRectTwo.height); + + // check if the of has moved more pixels than set in the puffer + // Puffer is needed if the opener changed its position only by 1 pixel: + // this happens in IE if a control was clicked (is a reported IE bug) + if (iLeft > iPuffer || iTop > iPuffer || iWidth > iPuffer || iHeight > iPuffer) { + return false; + } + return true; + }; + + Popup.checkDocking = function(){ + if (this.getOpenState() === sap.ui.core.OpenState.OPEN) { + var oCurrentOfRef = this._getOfDom(this._oLastPosition.of), + oCurrentOfRect = jQuery(oCurrentOfRef).rect(); + + if (!oCurrentOfRect) { + // Docking not possibe due to missing opener. + this.close(); + return; + } + + // Check if the current 'of' dom element is removed from the dom tree which indicates that it + // was rerendered and all corresponding stuff has to be updated to position the popup + // properly again + if (!jQuery.sap.containsOrEquals(document.documentElement, oCurrentOfRef)) { + if (oCurrentOfRef.id && oCurrentOfRef.id !== "") { + // The 'of' was rerendered so the newest DOM-element has to be updated for the corresponding rect-object. + // Because the id of the 'of' may be still the same but due to its rerendering the reference changed and has to be updated + var oNewestOf = jQuery.sap.domById(oCurrentOfRef.id); + var oNewestOfRect = jQuery(oNewestOf).rect(); + + // if there is a newest corresponding DOM-reference and it differs from the current -> use the newest one + if (oNewestOfRect && !fnRectEqual(oCurrentOfRect, oNewestOfRect)) { + oCurrentOfRect = oNewestOfRect; + + delete this._oLastPosition.of; + this._oLastPosition.of = oNewestOf; + } + } + } + + /* + * It's possible that the triggering has already started since the listener is added in 'open' and the Popup hasn't opened yet. + * Therefore '_oLastOfRect' wasn't set due to the Popup didn't set it in '_applyPosition'. + */ + if (this._oLastOfRect) { + if (!fnRectEqual(this._oLastOfRect, oCurrentOfRect)) { + if (this._followOfHandler) { + // provide the last position additionally if the call back needs it also + // e.g. the Callout needs it => create deep copy of old positioning object + var oLastPositionCopy = jQuery.extend(true, {}, this._oLastPosition), + oLastOfRectCopy = jQuery.extend(true, {}, this._oLastOfRect); + this._followOfHandler({ + lastPosition: oLastPositionCopy, + lastOfRect: oLastOfRectCopy, + currentOfRect: oCurrentOfRect + }); + } else { + this._applyPosition(this._oLastPosition); + } + } + } + } + }; + + //**************************************************** + //Focus Handling Delegate function for use with the given content (of type sap.ui.core.Element) + //**************************************************** + /** + * Delegate function for handling of touchstart event on sap.ui.core.Elements as content + * + * This is a fix for preventing the Popup A from getting higher z-index than popup B when popup B is opened within popup A. + * + * Mousedown event is fired with 300ms delay and when the event is caught by popup A, the popup B is already opened. Therefore popup A increases its z-index to be on the front. + * When ontouchstart is called, the next mousedown event which comes with a 300ms delay will be ignored. + * + * @private + */ + Popup.prototype.ontouchstart = function(oEvent){ + this.onmousedown(oEvent, true); + // this marks that the onmousedown function is already called by listening to touchstart event on device which supports touchstart. + // the onmousedown won't be called again by listening to mousedown event + this._bMousedownCalled = true; + }; + + /** + * Delegate function for handling of mousedown event on sap.ui.core.Elements as content + * @private + */ + Popup.prototype.onmousedown = function(oEvent, bSupressChecking) { + if (this._bMousedownCalled && !bSupressChecking) { + //if onmousedown is already called, isn't needed to be called again. + this._bMousedownCalled = false; + return; + } + + /* + * If this Popup is 'uppermost' and therefore everything is ok. + * Or if this is a modal Popup - its index has to be the 'uppermost' + * otherwise there must be another issue with the modal-mode. + */ + if (this._iZIndex === this.getLastZIndex() || this.getModal()) { + return; + } + + this._increaseMyZIndex("", "mousedown", oEvent); + }; + + /** + * @private + */ + Popup.prototype._increaseMyZIndex = function(sChannel, sEvent, oEventData) { + var oParentPopup = this.getParentPopup(this._oLastPosition.of); + + /* + * Checks if the parent Popup should increase its z-index. + * If true then all child popups should increase their indexes accordingly + * to the parent popup. + */ + if (oEventData.type && oEventData.type === "mousedown" || oEventData.isFromParentPopup || oParentPopup.length === 0) { + this._iZIndex = this.getNextZIndex(); + + var $Ref = this._$(); + $Ref.css("z-index", this._iZIndex); + + if (this._oBlindLayer) { + this._oBlindLayer.update($Ref, this._iZIndex - 1); + } + + // only increase children's z-index if this function call + if (!oEventData.type || oEventData.type != "mousedown") { + var aChildPopups = this.getChildPopups(); + for (var i = 0, l = aChildPopups.length; i < l; i++) { + this.increaseZIndex(aChildPopups[i], true); + } + } + } else if (oParentPopup.length > 0) { + // call the parent popup to increase index + this.increaseZIndex(jQuery(oParentPopup.get(0)).attr("data-sap-ui-popup"), false); + } + }; + + //**************************************************** + //Rerendering Handling Delegate function for use with the given content (of type sap.ui.core.Element) + //**************************************************** + + /** + * Delegate function for onAfterRendering. + * Only active when Popup is opened. + * @private + */ + Popup.prototype.onAfterRendering = function(oEvent){ + var $Ref = this.getContent().$(); + + // TODO all stuff done in 'open' is destroyed if the content was rerendered + $Ref.toggleClass("sapUiShd", this._bShadow); + $Ref.css("position", "absolute"); + + // set/update the identification properly + this._setIdentity($Ref); + + // Ensure right position is used for this call + var ref = $Ref[0]; + var left = ref.style.left; + var right = ref.style.right; + var top = ref.style.top; + var bottom = ref.style.bottom; + + if (!(left && left != "auto" || right && right != "auto" || top && top != "auto" || bottom && bottom != "auto")) { + jQuery.sap.log.debug("reposition popup content " + $Ref.attr("id") + " at " + (window.JSON ? JSON.stringify(this._oLastPosition.at) : String(this._oLastPosition.at))); + this._applyPosition(this._oLastPosition); + } + + $Ref.show().css({ + "visibility" : "visible", + "z-index" : this._iZIndex + }); + + // register resize handler for blindlayer resizing + if (this._oBlindLayer) { + this._resizeListenerId = sap.ui.core.ResizeHandler.register(this._$().get(0), jQuery.proxy(this.onresize, this)); + } + + if (this.isOpen() && (this.getModal() || this.getAutoClose())) { + // register the focus event listener again after rendering because the content DOM node is changed + this._addFocusEventListeners(); + } + + this._$(false, true).on("keydown", jQuery.proxy(this._F6NavigationHandler, this)); + }; + + /** + * Delegate function for onBeforeRendering. + * @private + */ + Popup.prototype.onBeforeRendering = function(oEvent) { + // deregister resize handler + if (this._resizeListenerId) { + sap.ui.core.ResizeHandler.deregister(this._resizeListenerId); + this._resizeListenerId = null; + } + + if (this.isOpen() && (this.getModal() || this.getAutoClose())) { + // deregister the focus event listener because the content DOM node is going to be deleted + this._removeFocusEventListeners(); + } + + this._$(false, true).off("keydown", this._F6NavigationHandler); + }; + + /** + * Resize handler listening to the popup. If the Popup changes its size the blindlayer + * should be updated as well. For example necessary when popup content has absolute positions. + * + * @private + */ + Popup.prototype.onresize = function(oEvent) { + if (this.eOpenState != sap.ui.core.OpenState.CLOSED && this._oBlindLayer) { + var that = this; + setTimeout(function(){ + that._updateBlindLayer(); + }, 0); + } + }; + + Popup.prototype._updateBlindLayer = function() { + if (this.eOpenState != sap.ui.core.OpenState.CLOSED && this._oBlindLayer) { + this._oBlindLayer.update(this._$()); + } + }; + + return Popup; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Popup.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Popup.js new file mode 100644 index 0000000..fb7e32f --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Popup.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/base/ManagedObject','sap/ui/base/Object','./Control','./IntervalTrigger','./RenderManager','./UIArea','./PopupSupport','jquery.sap.script'],function(q,M,B,C,I,R,U,P){"use strict";var a=M.extend("sap.ui.core.Popup",{constructor:function(c,m,s,A){M.apply(this);P.apply(this);this._popupUID=q.sap.uid();this.bOpen=false;this.eOpenState=sap.ui.core.OpenState.CLOSED;this._mFocusEvents={};this._mFocusEvents["sap.ui.core.Popup.addFocusableContent-"+this._popupUID]=this._addFocusableArea;this._mFocusEvents["sap.ui.core.Popup.removeFocusableContent-"+this._popupUID]=this._removeFocusableArea;this._mFocusEvents["sap.ui.core.Popup.closePopup-"+this._popupUID]=this._closePopup;this._mFocusEvents["sap.ui.core.Popup.onFocusEvent-"+this._popupUID]=this.onFocusEvent;this._mFocusEvents["sap.ui.core.Popup.increaseZIndex-"+this._popupUID]=this._increaseMyZIndex;if(c){this.setContent(c);}this._oDefaultPosition={my:a.Dock.CenterCenter,at:a.Dock.CenterCenter,of:document,offset:"0 0",collision:"flip"};this._oPosition=q.extend({},this._oDefaultPosition);this._bModal=!!m;this._oPreviousFocus=null;this._sInitialFocusId=null;this._bShadow=typeof(s)==="boolean"?s:true;this._bAutoClose=!!A;this._animations={open:null,close:null};this._durations={open:"fast",close:"fast"};this._iZIndex=-1;this._oBlindLayer=null;this.setNavigationMode();if(this.touchEnabled){this._fAutoCloseHandler=function(e){if(e.isMarked("delayedMouseEvent")||e.isMarked("cancelAutoClose")){return;}if(this.eOpenState===sap.ui.core.OpenState.CLOSING||this.eOpenState===sap.ui.core.OpenState.CLOSED){return;}var d=e.target,p=this._$().get(0),b=q.sap.containsOrEquals(p,d);if(!b){var f=this.getChildPopups();for(var i=0,l=f.length;i";};a.prototype.oBlindLayerPool=new sap.ui.base.ObjectPool(a.BlindLayer);a.Layer.extend("sap.ui.core.Popup.ShieldLayer",{constructor:function(){a.Layer.apply(this);}});a.ShieldLayer.prototype.getDomString=function(){return"
    ";};a.prototype.oShieldLayerPool=new sap.ui.base.ObjectPool(a.ShieldLayer);(function(){var l=0;a.getLastZIndex=function(){return l;};a.prototype.getLastZIndex=function(){return a.getLastZIndex();};a.getNextZIndex=function(){l+=10;return l;};a.prototype.getNextZIndex=function(){return a.getNextZIndex();};}());a.prototype.open=function(d,m,b,o,c,f,g){if(this.eOpenState!=sap.ui.core.OpenState.CLOSED){return;}this.eOpenState=sap.ui.core.OpenState.OPENING;var s;try{s=sap.ui.getCore().getStaticAreaRef();s=sap.ui.getCore().getUIArea(s);}catch(e){q.sap.log.error(e);throw new Error("Popup cannot be opened because static UIArea cannot be determined.");}this._bContentAddedToStatic=false;if(this.oContent instanceof C&&!this.oContent.getParent()){s.addContent(this.oContent,true);this._bContentAddedToStatic=true;}if(this.oContent.getUIArea){var A=this.oContent.getUIArea();if(A===null){q.sap.log.warning("The Popup content is NOT connected with an UIArea and may not work properly!");}else if(a._bEnableUIAreaCheck&&A.getRootNode().id!==s.getRootNode().id){q.sap.log.warning("The Popup content is NOT connected with the static-UIArea and may not work properly!");}}if(typeof(d)=="string"){g=f;f=c;c=o;o=b;b=m;m=d;d=-1;}if(d===undefined){d=-1;}if(this.restoreFocus){this._oPreviousFocus=a.getCurrentFocusInfo();}if(this.isInPopup(o)||this.isInPopup(this._oPosition.of)){var p=this.getParentPopupId(o)||this.getParentPopupId(this._oPosition.of);var h="";var i=this.getContent();if(i instanceof sap.ui.core.Element){h=i.getId();}else if(typeof i==="object"){h=i.id;}this.addChildToPopup(p,h);this.addChildToPopup(p,this._popupUID);}var $=this._$(true);var j="fast";if((d===0)||(d>0)){j=d;}else if((this._durations.open===0)||(this._durations.open>0)){j=this._durations.open;}var _;if(m||b||o||c||f){_=this._createPosition(m,b,o,c,f);}else{_=this._oPosition;}if(!_.of){_.of=this._oPosition.of||document;}this._iZIndex=this._iZIndex===this.getLastZIndex()?this._iZIndex:this.getNextZIndex();var S=sap.ui.getCore().getStaticAreaRef();$.css({"position":"absolute","visibility":"hidden"});if(!($[0].parentNode==S)){$.appendTo(S);}$.css("z-index",this._iZIndex);q.sap.log.debug("position popup content "+$.attr("id")+" at "+(window.JSON?JSON.stringify(_.at):String(_.at)));this._applyPosition(_);if(g!==undefined){this.setFollowOf(g);}var t=this;if(sap.ui.Device.os.ios&&sap.ui.Device.support.touch){if(this._oTopShieldLayer){q.sap.clearDelayedCall(this._iTopShieldRemoveTimer);this._iTopShieldRemoveTimer=null;}else{this._oTopShieldLayer=this.oShieldLayerPool.borrowObject($,this._iZIndex+1);}this._iTopShieldRemoveTimer=q.sap.delayedCall(500,this,function(){this.oShieldLayerPool.returnObject(this._oTopShieldLayer);this._oTopShieldLayer=null;this._iTopShieldRemoveTimer=null;});}var O=function(){t.bOpen=true;$.css("display","block");if(t._bModal||t._bAutoClose||t._sInitialFocusId){var k=null;if(t._sInitialFocusId){var l=sap.ui.getCore().byId(t._sInitialFocusId);if(l){k=l.getFocusDomRef();}k=k||q.sap.domById(t._sInitialFocusId);}q.sap.focus(k||$.firstFocusableDomRef());}t.eOpenState=sap.ui.core.OpenState.OPEN;if(t.getFollowOf()){a.DockTrigger.addListener(a.checkDocking,t);}t._updateBlindLayer();if(!!sap.ui.Device.browser.internet_explorer&&sap.ui.Device.browser.version===9){q.sap.delayedCall(0,t,function(){t.fireOpened();});}else{t.fireOpened();}};$.toggleClass("sapUiShd",this._bShadow).hide().css("visibility","visible");if(j==0){O.apply();}else if(this._animations.open){this._animations.open.call(null,$,j,O);}else{$.fadeIn(j,O);}if(!!sap.ui.Device.browser.internet_explorer&&!sap.ui.Device.os.windows_phone&&a._activateBlindLayer){this._oBlindLayer=this.oBlindLayerPool.borrowObject($,this._iZIndex-1);}if(this._bModal){this._showBlockLayer();}if(this.oContent instanceof sap.ui.core.Element){this.oContent.addDelegate(this);}this.bOpen=true;if(this._bModal||this._bAutoClose){this._addFocusEventListeners();}this._$(false,true).on("keydown",q.proxy(this._F6NavigationHandler,this));if(this.touchEnabled&&!this._bModal&&this._bAutoClose){q(document).on("touchstart mousedown",q.proxy(this._fAutoCloseHandler,this));}if(this._oBlindLayer){this._resizeListenerId=sap.ui.core.ResizeHandler.register(this._$().get(0),q.proxy(this.onresize,this));}};a.prototype.onFocusEvent=function(b){var e=q.event.fix(b);if(arguments.length>1&&arguments[1]==="sap.ui.core.Popup.onFocusEvent-"+this._popupUID){e=q.event.fix(arguments[2]);}var t=(e.type=="focus"||e.type=="activate")?"focus":"blur";var c=false;if(t=="focus"){var d=this._$().get(0);if(d){c=q.sap.containsOrEquals(d,e.target);var f=this.getChildPopups();if(!c){for(var i=0,l=f.length;i1){var A=arguments[1];var D=this._$().get(0);if((typeof(A)=="string"&&A=="autocloseBlur")&&(D&&q.sap.containsOrEquals(D,document.activeElement))){return;}}}if(this.eOpenState==sap.ui.core.OpenState.CLOSED||this.eOpenState==sap.ui.core.OpenState.CLOSING){return;}var i="fast";if((d===0)||(d>0)){i=d;}else if((this._durations.close===0)||(this._durations.close>0)){i=this._durations.close;}if(i===0&&this.eOpenState==sap.ui.core.OpenState.OPENING){return;}this.eOpenState=sap.ui.core.OpenState.CLOSING;if(this.getFollowOf()){a.DockTrigger.removeListener(a.checkDocking,this);}if(this.oContent&&this._bContentAddedToStatic){sap.ui.getCore().getEventBus().publish("sap.ui","__beforePopupClose",{domNode:this._$().get(0)});var s=sap.ui.getCore().getStaticAreaRef();s=sap.ui.getCore().getUIArea(s);s.removeContent(s.indexOfContent(this.oContent),true);}this._bContentAddedToStatic=false;this._sTimeoutId=null;if(this.fEventHandler){this._removeFocusEventListeners();}this._$(false,true).off("keydown",this._F6NavigationHandler);if(this.touchEnabled){if(!this._bModal&&this._bAutoClose){q(document).off("touchstart mousedown",this._fAutoCloseHandler);}}if(this.oContent instanceof sap.ui.core.Element){this.oContent.removeDelegate(this);}var $=this._$();if(this._bEventBusEventsRegistered){this._unregisterEventBusEvents();}if(this._oBlindLayer){this.oBlindLayerPool.returnObject(this._oBlindLayer);}this._oBlindLayer=null;var t=this;if(sap.ui.Device.os.ios&&sap.ui.Device.support.touch){if(this._oBottomShieldLayer){q.sap.clearDelayedCall(this._iBottomShieldRemoveTimer);this._iBottomShieldRemoveTimer=null;}else{this._oBottomShieldLayer=this.oShieldLayerPool.borrowObject($,this._iZIndex-3);}this._iBottomShieldRemoveTimer=q.sap.delayedCall(500,this,function(){this.oShieldLayerPool.returnObject(this._oBottomShieldLayer);this._oBottomShieldLayer=null;this._iBottomShieldRemoveTimer=null;});}var c=function(){q($).hide().css({"visibility":"hidden","left":"0px","top":"0px","right":""});$=t._$(false,true);if($.length){q($).hide().css({"visibility":"hidden","left":"0px","top":"0px","right":""});}if(t.restoreFocus){if(t._bModal){a.applyFocusInfo(t._oPreviousFocus);t._oPreviousFocus=null;t.oLastBlurredElement=null;}}t.bOpen=false;t.eOpenState=sap.ui.core.OpenState.CLOSED;t.fireClosed();var b=t.getChildPopups();for(var j=0,l=b.length;j=0||m.indexOf("-")>=0)){n=true;if(c&&c!="0 0"){q.sap.log.warning("offset used in my and in offset, the offset value will be ignored","sap.ui.core.Popup","setPosition");}c=null;}var p=q.extend({},this._oDefaultPosition,{"my":m||this._oDefaultPosition.my,"at":b||this._oDefaultPosition.at,"of":o,"offset":c,"collision":d});if(!q.ui.version){if(a._bNewOffset==null){a._bNewOffset=true;if(!(sap.ui.Device.browser.internet_explorer&&sap.ui.Device.browser.version==8&&q.sap.Version(q().jquery).compareTo("1.8.1")<0)){var D=q(document.createElement("div"));D.position({of:window,using:function(f,g){a._bNewOffset=(g!==undefined);}});}}}var e=[];var O=[];if(a._bNewOffset||q.sap.Version(q.ui.version).compareTo("1.8.23")>0){if(c&&c!="0 0"){e=p.my.split(" ");O=c.split(" ");var s=[parseInt(O[0],10)<0?"":"+",parseInt(O[1],10)<0?"":"+"];p.my=e[0]+s[0]+O[0]+" "+e[1]+s[1]+O[1];p.offset=null;}}else if(n){e=p.my.split(" ");O=["",""];var i=e[0].indexOf("+");if(i<0){i=e[0].indexOf("-");}if(i>=0){O[0]=e[0].slice(i);e[0]=e[0].slice(0,i);}i=e[1].indexOf("+");if(i<0){i=e[1].indexOf("-");}if(i>=0){O[1]=e[1].slice(i);e[1]=e[1].slice(0,i);}p.my=e[0]+" "+e[1];p.offset=O[0]+" "+O[1];}return p;};a.prototype._getPositionOffset=function(){var o=[];if(this._oPosition.my&&(this._oPosition.my.indexOf("+")>=0||this._oPosition.my.indexOf("-")>=0)){var m=this._oPosition.my.split(" ");var i=m[0].indexOf("+");if(i<0){i=m[0].indexOf("-");}if(i>=0){o[0]=m[0].slice(i);}i=m[1].indexOf("+");if(i<0){i=m[1].indexOf("-");}if(i>=0){o[1]=m[1].slice(i);}}else if(this._oPosition.offset){o=this._oPosition.offset.split(" ");}return o;};a.prototype._applyPosition=function(p){var b=sap.ui.getCore().getConfiguration().getRTL();var $=this._$();var A=p.at;if(typeof(A)==="string"){$.css("display","block").position(this._resolveReference(this._convertPositionRTL(p,b)));this._fixPositioning(p,b);}else if(sap.ui.core.CSSSize.isValid(A.left)&&sap.ui.core.CSSSize.isValid(A.top)){$.css({"left":A.left,"top":A.top});}else if(sap.ui.core.CSSSize.isValid(A.right)&&sap.ui.core.CSSSize.isValid(A.top)){$.css({"right":A.right,"top":A.top});}else if(typeof(A.left)==="number"&&typeof(A.top)==="number"){var d=$[0];if(d&&d.style.right){var w=$.outerWidth();$.css({"right":(document.documentElement.clientWidth-(A.left+w))+"px","top":A.top+"px"});}else{$.css({"left":A.left+"px","top":A.top+"px"});}}this._oLastPosition=p;this._oLastOfRect=this._calcOfRect(p.of);};a.prototype._calcOfRect=function(o){var O=this._getOfDom(o);if(O){return q(O).rect();}return null;};a.prototype._getOfDom=function(o){if(o instanceof q.Event){return null;}var O;if(typeof(o)==="string"){O=q.sap.byId(o);}else if(o instanceof q){O=o;}else{O=q(o instanceof sap.ui.core.Element?o.getDomRef():o);}return O[0];};a.prototype._convertPositionRTL=function(p,b){var f=q.extend({},p);if(b){var n=false;if(f.my&&(f.my.indexOf("+")>=0||f.my.indexOf("-")>=0)){n=true;}if((f.offset||n)&&((f.my.indexOf("begin")>-1)||(f.my.indexOf("end")>-1))&&((f.at.indexOf("begin")>-1)||(f.at.indexOf("end")>-1))){if(n){var m=f.my.split(" ");if(m.length==2){f.my="";if(m[0]){if(m[0].indexOf("begin")>-1||m[0].indexOf("end")>-1){if(m[0].indexOf("+")>-1){m[0]=m[0].replace("+","-");}else if(m[0].indexOf("-")>-1){m[0]=m[0].replace("-","+");}}f.my=m[0];}if(m[1]){if(m[1].indexOf("begin")>-1||m[1].indexOf("end")>-1){if(m[1].indexOf("+")>-1){m[1]=m[1].replace("+","-");}else if(m[1].indexOf("-")>-1){m[1]=m[1].replace("-","+");}}if(m[0]){f.my=f.my+" ";}f.my=f.my+m[1];}}}else{f.offset=this._mirrorOffset(f.offset);}}f.my=f.my.replace("begin","right").replace("end","left");f.at=f.at.replace("begin","right").replace("end","left");}else{f.my=f.my.replace("end","right").replace("begin","left");f.at=f.at.replace("end","right").replace("begin","left");}return f;};a.prototype._mirrorOffset=function(o){var O=q.trim(o).split(/\s/);var p=parseInt(O[0],10);return(-p)+" "+O[O.length-1];};a.prototype._fixPositioning=function(p,b){var m=p.my;var $=this._$();var c=0;if(typeof(m)==="string"){if(b&&((m.indexOf("right")>-1)||(m.indexOf("begin")>-1)||(m.indexOf("center")>-1))){$=this._$();c=q(window).width()-$.outerWidth()-$.offset().left;$.css({"right":c+"px","left":""});}else if((m.indexOf("right")>-1)||(m.indexOf("end")>-1)){$=this._$();c=q(window).width()-$.outerWidth()-$.offset().left;$.css({"right":c+"px","left":""});}}};a.prototype._resolveReference=function(p){var o=p;if(p.of instanceof sap.ui.core.Element){o=q.extend({},p,{of:p.of.getDomRef()});}return o;};a.prototype.setShadow=function(s){this._bShadow=s;if(this.eOpenState!=sap.ui.core.OpenState.CLOSED){this._$().toggleClass("sapUiShd",s);}return this;};a.prototype.setModal=function(m,s){var o=this._bModal;this._bModal=m;this._sModalCSSClass=s;if(this.isOpen()){if(o!==m){if(m){this._showBlockLayer();}else{this._hideBlockLayer();}if(this.touchEnabled&&this._bAutoClose){if(!m){q(document).on("touchstart mousedown",q.proxy(this._fAutoCloseHandler,this));}else{q(document).off("touchstart mousedown",this._fAutoCloseHandler);}}}}return this;};a.prototype.getModal=function(){return this._bModal;};a.prototype.setNavigationMode=function(m){if(m!="NONE"&&m!="DOCK"&&m!="SCOPE"){this._sF6NavMode="NONE";}this._sF6NavMode=m;};a.prototype.setAutoClose=function(A){if(this.touchEnabled&&this.isOpen()&&this._bAutoClose!==A){if(!this._bModal){if(A){q(document).on("touchstart mousedown",q.proxy(this._fAutoCloseHandler,this));}else{q(document).off("touchstart mousedown",this._fAutoCloseHandler);}}}this._bAutoClose=A;return this;};a.prototype.setAutoCloseAreas=function(A){for(var i=0,l=A.length;i0)||(o===0)){this._durations.open=o;}if((c>0)||(c===0)){this._durations.close=c;}return this;};a.CLOSE_ON_SCROLL="close_Popup_if_of_is_moved";a.prototype._fnCloseOnScroll=function(e){this.close();};a.prototype.setFollowOf=function(f){a.DockTrigger.removeListener(a.checkDocking,this);var u=false;this._bFollowOf=true;this._followOfHandler=null;if(typeof(f)==="function"){this._followOfHandler=f;u=true;}else if(typeof(f)==="boolean"){u=f;}else if(f===a.CLOSE_ON_SCROLL){this._followOfHandler=this._fnCloseOnScroll;u=true;}else{this._bFollowOf=false;if(f!==null){q.sap.log.error("Trying to set an invalid type to 'followOf: "+f);}}if(u&&this._oLastPosition){this._oLastOfRect=this._calcOfRect(this._oLastPosition.of);}if(this._bFollowOf&&this.getOpenState()===sap.ui.core.OpenState.OPEN){a.DockTrigger.addListener(a.checkDocking,this);}};a.prototype.getAutoClose=function(){return this._bAutoClose;};a.prototype.getFollowOf=function(){if(this._bFollowOf){return typeof(this._followOfHandler)==="function"?this._followOfHandler:true;}return false;};a.prototype.isOpen=function(){return this.bOpen;};a.prototype.getOpenState=function(){return this.eOpenState;};a.prototype.destroy=function(){if(this._resizeListenerId){sap.ui.core.ResizeHandler.deregister(this._resizeListenerId);this._resizeListenerId=null;}this.close();this.oContent=null;if(this._bFollowOf){this.setFollowOf(null);}if(this._bEventBusEventsRegistered){this._unregisterEventBusEvents();}};a.prototype.exit=function(){delete this._mFocusEvents;};a.prototype._addFocusEventListeners=function(c,e,E){if(!this.fEventHandler){this.fEventHandler=q.proxy(this.onFocusEvent,this);}var p=this._$();var b=this.getChildPopups();var d={};var i=0,l=0;if(document.addEventListener&&!sap.ui.Device.browser.internet_explorer){document.addEventListener("focus",this.fEventHandler,true);p.get(0).addEventListener("blur",this.fEventHandler,true);for(i=0,l=b.length;i0){R.preserveContent(c[0],true,false);}sap.ui.getCore().getRenderManager().render(this.oContent,sap.ui.getCore().getStaticAreaRef());c=this.oContent.$();}}else if(this.oContent instanceof sap.ui.core.Element){c=this.oContent.$();}else{c=q(this.oContent);}this._setIdentity(c);return c;};a.prototype._showBlockLayer=function(){var b=q("#sap-ui-blocklayer-popup"),c="sapUiBLy"+(this._sModalCSSClass?" "+this._sModalCSSClass:"");if(b.length===0){b=q('
    ');b.appendTo(sap.ui.getCore().getStaticAreaRef());}else{b.removeClass().addClass(c);}a.blStack.push(this._iZIndex-2);b.css({"z-index":this._iZIndex-2,"visibility":"visible"}).show();q("html").addClass("sapUiBLyBack");};a.prototype._hideBlockLayer=function(){a.blStack.pop();if(a.blStack.length>0){q("#sap-ui-blocklayer-popup").css({"z-index":a.blStack[a.blStack.length-1],"visibility":"visible"}).show();}else{q("#sap-ui-blocklayer-popup").css("visibility","hidden").hide();q("html").removeClass("sapUiBLyBack");}};a.DockTrigger=new I(200);var r=function(o,b){var p=3;var l=Math.abs(o.left-b.left);var t=Math.abs(o.top-b.top);var w=Math.abs(o.width-b.width);var h=Math.abs(o.height-b.height);if(l>p||t>p||w>p||h>p){return false;}return true;};a.checkDocking=function(){if(this.getOpenState()===sap.ui.core.OpenState.OPEN){var c=this._getOfDom(this._oLastPosition.of),o=q(c).rect();if(!o){this.close();return;}if(!q.sap.containsOrEquals(document.documentElement,c)){if(c.id&&c.id!==""){var n=q.sap.domById(c.id);var N=q(n).rect();if(N&&!r(o,N)){o=N;delete this._oLastPosition.of;this._oLastPosition.of=n;}}}if(this._oLastOfRect){if(!r(this._oLastOfRect,o)){if(this._followOfHandler){var l=q.extend(true,{},this._oLastPosition),L=q.extend(true,{},this._oLastOfRect);this._followOfHandler({lastPosition:l,lastOfRect:L,currentOfRect:o});}else{this._applyPosition(this._oLastPosition);}}}}};a.prototype.ontouchstart=function(e){this.onmousedown(e,true);this._bMousedownCalled=true;};a.prototype.onmousedown=function(e,s){if(this._bMousedownCalled&&!s){this._bMousedownCalled=false;return;}if(this._iZIndex===this.getLastZIndex()||this.getModal()){return;}this._increaseMyZIndex("","mousedown",e);};a.prototype._increaseMyZIndex=function(c,e,E){var p=this.getParentPopup(this._oLastPosition.of);if(E.type&&E.type==="mousedown"||E.isFromParentPopup||p.length===0){this._iZIndex=this.getNextZIndex();var $=this._$();$.css("z-index",this._iZIndex);if(this._oBlindLayer){this._oBlindLayer.update($,this._iZIndex-1);}if(!E.type||E.type!="mousedown"){var b=this.getChildPopups();for(var i=0,l=b.length;i0){this.increaseZIndex(q(p.get(0)).attr("data-sap-ui-popup"),false);}};a.prototype.onAfterRendering=function(e){var $=this.getContent().$();$.toggleClass("sapUiShd",this._bShadow);$.css("position","absolute");this._setIdentity($);var b=$[0];var l=b.style.left;var c=b.style.right;var t=b.style.top;var d=b.style.bottom;if(!(l&&l!="auto"||c&&c!="auto"||t&&t!="auto"||d&&d!="auto")){q.sap.log.debug("reposition popup content "+$.attr("id")+" at "+(window.JSON?JSON.stringify(this._oLastPosition.at):String(this._oLastPosition.at)));this._applyPosition(this._oLastPosition);}$.show().css({"visibility":"visible","z-index":this._iZIndex});if(this._oBlindLayer){this._resizeListenerId=sap.ui.core.ResizeHandler.register(this._$().get(0),q.proxy(this.onresize,this));}if(this.isOpen()&&(this.getModal()||this.getAutoClose())){this._addFocusEventListeners();}this._$(false,true).on("keydown",q.proxy(this._F6NavigationHandler,this));};a.prototype.onBeforeRendering=function(e){if(this._resizeListenerId){sap.ui.core.ResizeHandler.deregister(this._resizeListenerId);this._resizeListenerId=null;}if(this.isOpen()&&(this.getModal()||this.getAutoClose())){this._removeFocusEventListeners();}this._$(false,true).off("keydown",this._F6NavigationHandler);};a.prototype.onresize=function(e){if(this.eOpenState!=sap.ui.core.OpenState.CLOSED&&this._oBlindLayer){var t=this;setTimeout(function(){t._updateBlindLayer();},0);}};a.prototype._updateBlindLayer=function(){if(this.eOpenState!=sap.ui.core.OpenState.CLOSED&&this._oBlindLayer){this._oBlindLayer.update(this._$());}};return a;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/PopupSupport-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/PopupSupport-dbg.js new file mode 100644 index 0000000..bf84186 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/PopupSupport-dbg.js @@ -0,0 +1,239 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.core.PopupSupport +sap.ui.define([ 'jquery.sap.global', './Element', './Control' ], function(jQuery, Element, Control) { + "use strict"; + + /** + * This class provides some methods for Popup handling. This class can be + * used as a mixin for controls that use a Popup as a local instance. + * + * @returns {sap.ui.core.PopupSupport} + * @constructor + * @private + * @alias sap.ui.core.PopupSupport + */ + var PopupSupport = function() { + this.getMetadata().addPublicMethods([ "getParentPopup", "isInPopup", "getParentPopupId", "addToPopup", "removeFromPopup" ]); + + /** + * Checks if the (optional) given jQuery-object or DOM-node is within a + * Popup. If no object is given the instance of the control will be used + * to check. + * + * @param {jQuery | + * Node} [oThis] is the object that should be checked + * (optional) + * @returns {boolean} whether this control instance is part of a Popup + */ + this.isInPopup = function(oThis) { + var $ParentPopup = this.getParentPopup(oThis); + + return $ParentPopup && $ParentPopup.length > 0; + }; + + /** + * This function returns the parent Popup if available. + * + * @param {control} + * [oThat] is an optional control instance. If another + * instance than "this" is given the corresponding control + * instance will be used to fetch the Popup. + * @returns {jQuery} [ParentPopup] + */ + this.getParentPopup = function(oThat) { + // use either given object (control or DOM-ref) or this instance + var oThis = oThat ? oThat : this; + + // if oThis is an element use its DOM-ref to look for a Popup. Else + // 'oThis' is an DOM-ref therefore simply use it + var $This = jQuery(oThis instanceof sap.ui.core.Element ? oThis.getDomRef() : oThis); + + // look up if there is a Popup above used DOM-ref + return $This.closest("[data-sap-ui-popup]"); + }; + + /** + * This returns the corresponding unique ID of the parent Popup. + * + * @param {control} + * [oThat] is an optional control instance. If another + * instance than "this" is given the corresponding control + * instance will be used to fetch the Popup. + * @returns [string] ParentPopupId + */ + this.getParentPopupId = function(oThis) { + var $ParentPopup = this.getParentPopup(oThis); + return $ParentPopup.attr("data-sap-ui-popup"); + }; + + /** + * Adds the given child Popup id to the given parent's association. + * + * @param [string] + * sParentPopupId to which the id will be added + * @param [string] + * sChildPopupId that will be added to the perant Popup + */ + this.addChildToPopup = function(sParentPopupId, sChildPopupId) { + var sEventId = "sap.ui.core.Popup.addFocusableContent-" + sParentPopupId; + sap.ui.getCore().getEventBus().publish("sap.ui", sEventId, { + id : sChildPopupId + }); + }; + + /** + * Removes the control id to the Popup. If a dedicated Popup id is given + * then the control will be removed accordingly from this Popup. Else + * the closest Popup will be used. + * + * @param {string} + * [sPopupId] from which Popup the control should be removed + * (optional) + */ + this.removeChildFromPopup = function(sPopupId) { + if (!sPopupId) { + sPopupId = this.getPopupId(); + } + + // de-register id of Menu-Popup to parent-Popup to make the menu as + // focusable + var sEventId = "sap.ui.core.Popup.removeFocusableContent-" + sPopupId; + sap.ui.getCore().getEventBus().publish("sap.ui", sEventId, { + id : this.getId() + }); + }; + + /** + * Closes a specific Popup when the control instance isn't available + * + * @param [string] + * sPopupId of Popup that should be closed + */ + this.closePopup = function(sPopupId) { + var sEventId = "sap.ui.core.Popup.closePopup-" + sPopupId; + sap.ui.getCore().getEventBus().publish("sap.ui", sEventId); + }; + + /** + * This function calls a popup to increase its z-index + * + * @param [string] + * sPopupId of Popup that should increase its z-index + * @param [boolean] + * bIsParent marks if a parent Popup calls its child Popups + * to increase their z-index + */ + this.increaseZIndex = function(sPopupId, bIsParent) { + var sEventId = "sap.ui.core.Popup.increaseZIndex-" + sPopupId; + sap.ui.getCore().getEventBus().publish("sap.ui", sEventId, { + isFromParentPopup : bIsParent ? bIsParent : false + }); + }; + + /** + * This function helps Popup controls to enable a tabchaining within its + * content. For the commons.Dialog and ux3.ToolPopup there is a fake + * element at the beginning and at the end of the DOM-structure. These + * elements are used to enable a chaining. If these element are focused + * this function determines which element in the content or footer area + * has to be focused. Since those control have a content and footer area + * with buttons it has to be checked whether a button or content-element + * is available that can be focused. + * + * @param [object] + * mParameters contain all necessary parameters + * @param [object.object] + * mParameter.that is the control that calls this function. + * Needed for debug logging info + * @param [object.object] + * mParameters.event is the event that is being forwarded + * from the + * @param [object.string] + * mParameters.firstFocusable is the first focusable element + * in the control + * @param [object.string] + * mParameters.lastFocusable is the last focusable element in + * the control + * @param [object.jQuery] + * mParameters.$FocusablesContent are focusable elements in + * the content area of the control + * @param [object.jQuery] + * mParameters.$FocusablesFooter are focusable elements in + * the footer area of the control (e.g. buttons) + */ + this.focusTabChain = function(mParameters) { + var oSourceDomRef = mParameters.event.target, + sName = mParameters.that.getMetadata().getName(), + oFocusDomRef; + + if ((!!!mParameters.$FocusablesContent || !!!mParameters.$FocusablesFooter) || + (!mParameters.$FocusablesContent.length && !mParameters.$FocusablesFooter.length)) { + // if there is neither content nor footer content (yet) simply do nothing + return; + } + /* + * It's not needed to check if buttons are set since + * jQuery(":focusable", jQuery.sap.byId(this.getId() + "-fhfe")) or + * jQuery(":sapFocusable", jQuery.sap.byId(this.getId() + "-fhfe")) + * returns an empty array. Therefore these elements won't be found + * via 'lastFocusableDomRef()' + */ + if (oSourceDomRef.id === mParameters.firstFocusable) { + // the FocusHandlingFirstElement was focused and thus the focus + // should move to the last element. + jQuery.sap.log.debug("First dummy focus element was focused", "", sName); + if (mParameters.$FocusablesFooter.length > 0) { + jQuery.sap.log.debug("Last footer element will be focused", "", sName); + oFocusDomRef = mParameters.$FocusablesFooter[mParameters.$FocusablesFooter.length - 1]; + } else { + jQuery.sap.log.debug("Last content element will be focused", "", sName); + oFocusDomRef = mParameters.$FocusablesContent[mParameters.$FocusablesContent.length - 1]; + } + } else if (oSourceDomRef.id === mParameters.lastFocusable) { + // the FocusHandlingEndElement was focused and thus the focus + // should move to the first element. + jQuery.sap.log.debug("Last dummy focus element was focues", "", sName); + if (mParameters.$FocusablesContent.length > 0) { + jQuery.sap.log.debug("First content element will be focused", "", sName); + oFocusDomRef = mParameters.$FocusablesContent[0]; + } else { + jQuery.sap.log.debug("First footer element will be focused", "", sName); + oFocusDomRef = mParameters.$FocusablesFooter[0]; + } + } + + if (oFocusDomRef) { + /* + * This check especially for IE9 is needed because when IE9 is + * used together with JAWS the element that will be focused + * isn't read when the focus happens too fast. Therefore a delay + * is added to JAWS can read the newly focused element. + */ + var iDelay = sap.ui.Device.browser.msie && sap.ui.Device.browser.version === 9 ? 100 : 0; + + jQuery.sap.delayedCall(iDelay, this, function() { + // if the element is a control the focus should be called + // via the control + // especially if the control has an individual focus DOM-ref + var oControl = sap.ui.getCore().byId(oFocusDomRef.id); + if (oControl instanceof Control) { + jQuery.sap.log.debug("Focus will be handled by " + oControl.getMetadata().getName(), "", sName); + } else { + jQuery.sap.log.debug("oFocusDomRef will be focused", "", sName); + } + jQuery.sap.focus(oControl ? oControl : oFocusDomRef); + + return oControl ? oControl.getId() : oFocusDomRef.id; + }); + } + }; + }; + + return PopupSupport; + +}, /* bExport= */true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/PopupSupport.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/PopupSupport.js new file mode 100644 index 0000000..be2c93a --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/PopupSupport.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Element','./Control'],function(q,E,C){"use strict";var P=function(){this.getMetadata().addPublicMethods(["getParentPopup","isInPopup","getParentPopupId","addToPopup","removeFromPopup"]);this.isInPopup=function(t){var p=this.getParentPopup(t);return p&&p.length>0;};this.getParentPopup=function(t){var T=t?t:this;var $=q(T instanceof sap.ui.core.Element?T.getDomRef():T);return $.closest("[data-sap-ui-popup]");};this.getParentPopupId=function(t){var p=this.getParentPopup(t);return p.attr("data-sap-ui-popup");};this.addChildToPopup=function(p,c){var e="sap.ui.core.Popup.addFocusableContent-"+p;sap.ui.getCore().getEventBus().publish("sap.ui",e,{id:c});};this.removeChildFromPopup=function(p){if(!p){p=this.getPopupId();}var e="sap.ui.core.Popup.removeFocusableContent-"+p;sap.ui.getCore().getEventBus().publish("sap.ui",e,{id:this.getId()});};this.closePopup=function(p){var e="sap.ui.core.Popup.closePopup-"+p;sap.ui.getCore().getEventBus().publish("sap.ui",e);};this.increaseZIndex=function(p,i){var e="sap.ui.core.Popup.increaseZIndex-"+p;sap.ui.getCore().getEventBus().publish("sap.ui",e,{isFromParentPopup:i?i:false});};this.focusTabChain=function(p){var s=p.event.target,n=p.that.getMetadata().getName(),f;if((!!!p.$FocusablesContent||!!!p.$FocusablesFooter)||(!p.$FocusablesContent.length&&!p.$FocusablesFooter.length)){return;}if(s.id===p.firstFocusable){q.sap.log.debug("First dummy focus element was focused","",n);if(p.$FocusablesFooter.length>0){q.sap.log.debug("Last footer element will be focused","",n);f=p.$FocusablesFooter[p.$FocusablesFooter.length-1];}else{q.sap.log.debug("Last content element will be focused","",n);f=p.$FocusablesContent[p.$FocusablesContent.length-1];}}else if(s.id===p.lastFocusable){q.sap.log.debug("Last dummy focus element was focues","",n);if(p.$FocusablesContent.length>0){q.sap.log.debug("First content element will be focused","",n);f=p.$FocusablesContent[0];}else{q.sap.log.debug("First footer element will be focused","",n);f=p.$FocusablesFooter[0];}}if(f){var d=sap.ui.Device.browser.msie&&sap.ui.Device.browser.version===9?100:0;q.sap.delayedCall(d,this,function(){var c=sap.ui.getCore().byId(f.id);if(c instanceof C){q.sap.log.debug("Focus will be handled by "+c.getMetadata().getName(),"",n);}else{q.sap.log.debug("oFocusDomRef will be focused","",n);}q.sap.focus(c?c:f);return c?c.getId():f.id;});}};};return P;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Renderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Renderer-dbg.js new file mode 100644 index 0000000..80e1cfe --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Renderer-dbg.js @@ -0,0 +1,135 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides (optional) base class for all renderers +sap.ui.define(['jquery.sap.global'], + function(jQuery) { + "use strict"; + + + /** + * @class Base Class for Renderer. + * + * @author Martin Schaus, Daniel Brinkmann + * @version 1.28.5 + * @static + * @public + * @alias sap.ui.core.Renderer + */ + var Renderer = { + }; + + /** + * Provides some 'extends' functionality for Renderers.
    Creates a new + * object (i.e. static class) that knows its parent (accessible from + * this._super) and initially forwards method calls to the + * parents methods.
    Methods can be overwritten afterwards as known from + * JavaScript. + * + * @param {object} + * oParentClass the definition of the class that should be extended. + * @return a new class definition that can be enriched. + * @type object + * @public + */ + Renderer.extend = function(oParentClass) { + //var oChild = jQuery.extend(new jQuery.sap.newObject(oParentClass), {_super: oParentClass}); + //return oChild; + var oChild = {_super: oParentClass}; + + /*eslint-disable no-loop-func */ + for (var f in oParentClass) { + if (typeof (oParentClass[f]) == "function") { + oChild[f] = (function(){ + var sMethod = f; + return function() { + return oChild._super[sMethod].apply(this, arguments); + }; + }()); + } + } + /*eslint-enable no-loop-func */ + return oChild; + }; + + /** + * Returns the TextAlignment for the provided configuration. + * + * @param oTextAlign + * {sap.ui.core.TextAlign} the text alignment of the Control + * @param oTextDirection + * {sap.ui.core.TextDirection} the text direction of the Control + * @return the actual text alignment that must be set for this environment + * @type {string} + * @private + */ + Renderer.getTextAlign = function(oTextAlign, oTextDirection) { + var sTextAlign = ""; + var oConfig = sap.ui.getCore().getConfiguration(); + + switch (oTextAlign) { + case sap.ui.core.TextAlign.End: + switch (oTextDirection) { + case "LTR": + sTextAlign = "right"; + break; + case "RTL": + sTextAlign = "left"; + break; + default: + if (oConfig.getRTL()) { // this is really only influenced by the SAPUI5 configuration. The browser does not change alignment with text-direction + sTextAlign = "left"; + } else { + sTextAlign = "right"; + } + break; + } + break; + case sap.ui.core.TextAlign.Begin: + switch (oTextDirection) { + case "LTR": + sTextAlign = "left"; + break; + case "RTL": + sTextAlign = "right"; + break; + default: + if (oConfig.getRTL()) { + sTextAlign = "right"; + } else { + sTextAlign = "left"; + } + break; + } + break; + case sap.ui.core.TextAlign.Right: + if (oConfig.getRTL()) { + if (oTextDirection == "LTR") { + sTextAlign = "right"; + } + } else { + sTextAlign = "right"; + } + break; + case sap.ui.core.TextAlign.Center: + sTextAlign = "center"; + break; + case sap.ui.core.TextAlign.Left: + if (oConfig.getRTL()) { + sTextAlign = "left"; + } else { + if (oTextDirection == "RTL") { + sTextAlign = "left"; + } + } + break; + } + return sTextAlign; + }; + + return Renderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Renderer.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Renderer.js new file mode 100644 index 0000000..425e340 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Renderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var R={};R.extend=function(p){var c={_super:p};for(var f in p){if(typeof(p[f])=="function"){c[f]=(function(){var m=f;return function(){return c._super[m].apply(this,arguments);};}());}}return c;};R.getTextAlign=function(t,T){var s="";var c=sap.ui.getCore().getConfiguration();switch(t){case sap.ui.core.TextAlign.End:switch(T){case"LTR":s="right";break;case"RTL":s="left";break;default:if(c.getRTL()){s="left";}else{s="right";}break;}break;case sap.ui.core.TextAlign.Begin:switch(T){case"LTR":s="left";break;case"RTL":s="right";break;default:if(c.getRTL()){s="right";}else{s="left";}break;}break;case sap.ui.core.TextAlign.Right:if(c.getRTL()){if(T=="LTR"){s="right";}}else{s="right";}break;case sap.ui.core.TextAlign.Center:s="center";break;case sap.ui.core.TextAlign.Left:if(c.getRTL()){s="left";}else{if(T=="RTL"){s="left";}}break;}return s;};return R;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/SafariCheck.css b/DVHMA-OpenUI5/www/resources/sap/ui/core/SafariCheck.css new file mode 100644 index 0000000..34a8f11 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/SafariCheck.css @@ -0,0 +1,4 @@ +/* for Safari to check if CSS is loaded before onAfterRendering*/ +.sapUiCssCheck{ + border: 10px solid red; +} \ No newline at end of file diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ScrollBar-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ScrollBar-dbg.js new file mode 100644 index 0000000..fa8de7f --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ScrollBar-dbg.js @@ -0,0 +1,715 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.core.ScrollBar. +sap.ui.define(['jquery.sap.global', './Control', './library'], + function(jQuery, Control, library) { + "use strict"; + + + + /** + * Constructor for a new ScrollBar. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * The ScrollBar control can be used for virtual scrolling of a certain area. + * This means: to simulate a very large scrollable area when technically the area is small and the control takes care of displaying the respective part only. E.g. a Table control can take care of only rendering the currently visible rows and use this ScrollBar control to make the user think he actually scrolls through a long list. + * @extends sap.ui.core.Control + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.ui.core.ScrollBar + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var ScrollBar = Control.extend("sap.ui.core.ScrollBar", /** @lends sap.ui.core.ScrollBar.prototype */ { metadata : { + + library : "sap.ui.core", + properties : { + + /** + * Orientation. Defines if the Scrollbar is vertical or horizontal. + */ + vertical : {type : "boolean", group : "Behavior", defaultValue : true}, + + /** + * Scroll position in steps or pixels. + */ + scrollPosition : {type : "int", group : "Behavior", defaultValue : null}, + + /** + * Size of the Scrollbar (in pixels). + */ + size : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : null}, + + /** + * Size of the scrollable content (in pixels). + */ + contentSize : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : null}, + + /** + * Number of steps to scroll. Used if the size of the content is not known as the data is loaded dynamically. + */ + steps : {type : "int", group : "Dimension", defaultValue : null} + }, + events : { + + /** + * Scroll event. + */ + scroll : { + parameters : { + + /** + * Actions are: Click on track, button, drag of thumb, or mouse wheel click. + */ + action : {type : "sap.ui.core.ScrollBarAction"}, + + /** + * Direction of scrolling: back (up) or forward (down). + */ + forward : {type : "boolean"}, + + /** + * Current Scroll position either in pixels or in steps. + */ + newScrollPos : {type : "int"}, + + /** + * Old Scroll position - can be in pixels or in steps. + */ + oldScrollPos : {type : "int"} + } + } + } + }}); + + + // ============================================================================= + // BASIC CONTROL API + // ============================================================================= + + /** + * Initialization of the Scrollbar control + * @private + */ + ScrollBar.prototype.init = function(){ + + // JQuery Object - Dom reference of the scroll bar + this._$ScrollDomRef = null; + + // In pixels - exact position + this._iOldScrollPos = 0; + + // In steps + this._iOldStep = 0; + + // True if the scroll position was verified. And false if the check was not done yet - for example if the rendering is not done completely + this._bScrollPosIsChecked = false; + + // RTL mode + this._bRTL = sap.ui.getCore().getConfiguration().getRTL(); + + // Supress scroll event + this._bSuppressScroll = false; + + this._iMaxContentDivSize = 1000000; // small value that all browsers still can render without any problems + + if (jQuery.sap.touchEventMode === "ON") { + jQuery.sap.require("sap.ui.thirdparty.zyngascroll"); + + // Remember last touch scroller position to prevent unneeded rendering + this._iLastTouchScrollerPosition = null; + + // The threshold in pixel for a step when scrolled by touch events + this._iTouchStepTreshold = 24; + + // Some zynga scroller methods call the touch handler. By settings this variable to false, touch handling is prevented and + // number of unneeded rendering is reduced. + this._bSkipTouchHandling = false; + + this._oTouchScroller = new window.Scroller(jQuery.proxy(this._handleTouchScroll,this), { + bouncing:false + }); + } + }; + + + /** + * Rerendering handling + * @private + */ + ScrollBar.prototype.onBeforeRendering = function() { + this.$("sb").unbind("scroll", this.onscroll); + }; + + + /** + * Rerendering handling + * @private + */ + ScrollBar.prototype.onAfterRendering = function () { + // count of steps (comes per API) + this._iSteps = this.getSteps(); + + // content size in pixel + var sContentSize = this.getContentSize(); + + // determine the mode + this._bStepMode = !sContentSize; + + var iScrollBarSize = this.getSize(); + if (jQuery.sap.endsWith(iScrollBarSize,"px")) { + iScrollBarSize = iScrollBarSize.substr(0, iScrollBarSize.length - 2); + } else { + iScrollBarSize = this.getVertical() ? this.$().height() : this.$().width(); + } + + var stepSize = null; + + var $ffsize = this.$("ffsize"); + if (!!sap.ui.Device.browser.firefox) { + stepSize = $ffsize.outerHeight(); + } + $ffsize.remove(); + + if (!!sap.ui.Device.browser.webkit) { + // document.width - was not supported by Chrome 17 anymore, but works again with Chrome from 18 to 30, and does not work in chrom 31. + if (!document.width) { + stepSize = Math.round(40 / (window.outerWidth / jQuery(document).width())); + } else { + stepSize = Math.round(40 / (document.width / jQuery(document).width())); + //jQuery.sap.log.debug( stepSize + " ****************************STEP SIZE*************************************************************"); + } + } + + if (this.getVertical()) { + if (!!sap.ui.Device.browser.firefox) { + this._iFactor = stepSize; + } else if (!!sap.ui.Device.browser.webkit) { + this._iFactor = stepSize; + } else { + this._iFactor = Math.floor(iScrollBarSize * 0.125); + } + this._iFactorPage = !!sap.ui.Device.browser.firefox ? iScrollBarSize - stepSize : Math.floor(iScrollBarSize * 0.875); + } else { + if (!!sap.ui.Device.browser.firefox) { + this._iFactor = 10; + this._iFactorPage = Math.floor(iScrollBarSize * 0.8); + } else if (!!sap.ui.Device.browser.webkit) { + this._iFactor = stepSize; + this._iFactorPage = Math.floor(iScrollBarSize * 0.875); + } else { + this._iFactor = 7; + this._iFactorPage = iScrollBarSize - 14; + } + } + + this._$ScrollDomRef = this.$("sb"); + + if (this._bStepMode) { + + if (this.getVertical()) { + // calculate the height of the content size => scroll bar height + (steps * browser step size) + var iSize = this._iSteps * this._iFactor; + + if (iSize > this._iMaxContentDivSize) { + this._iFactor = Math.ceil(this._iFactor / Math.ceil(iSize / this._iMaxContentDivSize)); + } + + var iContentSize = this._$ScrollDomRef.height() + this._iSteps * this._iFactor; + // set the content size + this._$ScrollDomRef.find("div").height(iContentSize); + } else { + // calculate the height of the content size => scroll bar size + (steps * browser step size) + var iContentSize = this._$ScrollDomRef.width() + this._iSteps * this._iFactor; + // set the content size + this._$ScrollDomRef.find("div").width(iContentSize); + } + } + + this.setCheckedScrollPosition(this.getScrollPosition() ? this.getScrollPosition() : 0, true); + + this._$ScrollDomRef.bind("scroll", jQuery.proxy(this.onscroll, this)); + + if (jQuery.sap.touchEventMode === "ON") { + this._bSkipTouchHandling = true; + + var oContent = { + width:0, + height:0 + }; + oContent[this.getVertical() ? "height" : "width"] = this._bStepMode ? (this.getSteps() * this._iTouchStepTreshold) : parseInt(this.getContentSize(), 10); + + this._oTouchScroller.setDimensions(0, 0, oContent.width, oContent.height); + + var oElement = this._$ScrollDomRef.get(0); + var oRect = oElement.getBoundingClientRect(); + this._oTouchScroller.setPosition(oRect.left + oElement.clientLeft, oRect.top + oElement.clientTop); + this._bSkipTouchHandling = false; + } + }; + + //============================================================================= + // CONTROL EVENT HANDLING + //============================================================================= + + /** + * Event object contains detail (for Firefox and Opera), and wheelData (for Internet Explorer, Safari, and Opera). + * Scrolling down is a positive number for detail, but a negative number for wheelDelta. + * @param {jQuery.Event} oEvent Event object contains detail (for Firefox and Opera), and wheelData (for Internet Explorer, Safari, and Opera). + * @private + */ + ScrollBar.prototype.onmousewheel = function(oEvent) { + + // ignore the mousewheel events when the scrollbar is not visible + if (this.$().is(":visible")) { + + // So let's scale and make negative value for all scroll down in all browsers. + var oOriginalEvent = oEvent.originalEvent; + var wheelData = oOriginalEvent.detail ? oOriginalEvent.detail : oOriginalEvent.wheelDelta * (-1) / 40; + + // find out if the user is scrolling up= back or down= forward. + var bForward = wheelData > 0 ? true : false; + + if (jQuery.sap.containsOrEquals(this._$ScrollDomRef[0], oEvent.target)) { + this._doScroll(sap.ui.core.ScrollBarAction.MouseWheel, bForward); + } else { + + this._bMouseWheel = true; + var pos = null; + if (this._bStepMode) { + pos = wheelData + this._iOldStep; + } else { + pos = wheelData * this._iFactor + this._iOldScrollPos; + } + + this.setCheckedScrollPosition(pos, true); + } + + // prevent the default behavior + oEvent.preventDefault(); + oEvent.stopPropagation(); + return false; + + } + + }; + + + /** + * Touch start handler. Called when the "touch start" event occurs on this control. + * @param {jQuery.Event} oEvent Touch Event object + * @private + */ + ScrollBar.prototype.ontouchstart = function(oEvent) { + // Don't react if initial down happens on a form element + var aTouches = oEvent.touches; + var oFirstTouch = aTouches[0]; + if (oFirstTouch && oFirstTouch.target && oFirstTouch.target.tagName.match(/input|textarea|select/i)) { + return; + } + if (this._oTouchScroller) { + this._oTouchScroller.doTouchStart(aTouches, oEvent.timeStamp); + } + if (aTouches.length == 1) { + oEvent.preventDefault(); + } + }; + + + /** + * Touch move handler. Called when the "touch move" event occurs on this control. + * @param {jQuery.Event} oEvent Touch Event object + * @private + */ + ScrollBar.prototype.ontouchmove = function(oEvent) { + if (this._oTouchScroller) { + this._oTouchScroller.doTouchMove(oEvent.touches, oEvent.timeStamp, oEvent.scale); + } + }; + + + /** + * Touch end handler. Called when the "touch end" event occurs on this control. + * @param {jQuery.Event} oEvent Touch Event object + * @private + */ + ScrollBar.prototype.ontouchend = function(oEvent) { + if (this._oTouchScroller) { + this._oTouchScroller.doTouchEnd(oEvent.timeStamp); + } + }; + + /** + * Touch cancel handler. Called when the "touch cancel" event occurs on this control. + * @param {jQuery.Event} oEvent Touch Event object + * @private + */ + ScrollBar.prototype.ontouchcancel = function(oEvent) { + if (this._oTouchScroller) { + this._oTouchScroller.doTouchEnd(oEvent.timeStamp); + } + }; + + /** + * Handles the Scroll event. + * + * @param {jQuery.Event} oEvent Event object + * @private + */ + ScrollBar.prototype.onscroll = function(oEvent) { + //jQuery.sap.log.debug("*****************************onScroll************************ SUPRESS SCROLL: " + this._bSuppressScroll ); + if (this._bSuppressScroll) { + this._bSuppressScroll = false; + oEvent.preventDefault(); + oEvent.stopPropagation(); + return false; + } + + // Set new Scroll position + var iScrollPos = null; + if (this._$ScrollDomRef) { + if (this.getVertical()) { + iScrollPos = Math.round(this._$ScrollDomRef.scrollTop()); + } else { + iScrollPos = Math.round(this._$ScrollDomRef.scrollLeft()); + if ( !!sap.ui.Device.browser.firefox && this._bRTL ) { + iScrollPos = Math.abs(iScrollPos); + } else if ( !!sap.ui.Device.browser.webkit && this._bRTL ) { + var oScrollDomRef = this._$ScrollDomRef.get(0); + iScrollPos = oScrollDomRef.scrollWidth - oScrollDomRef.clientWidth - oScrollDomRef.scrollLeft; + } + } + } + + var iDelta = iScrollPos - this._iOldScrollPos; + + var bForward = iDelta > 0 ? true : false; + if (iDelta < 0) { + iDelta = iDelta * (-1); + } + + var eAction = sap.ui.core.ScrollBarAction.Drag; + if (iDelta == this._iFactor) { + eAction = sap.ui.core.ScrollBarAction.Step; + } else if (iDelta == this._iFactorPage) { + eAction = sap.ui.core.ScrollBarAction.Page; + } else if (this._bMouseWheel) { + eAction = sap.ui.core.ScrollBarAction.MouseWheel; + } + + // Proceed scroll + this._doScroll(eAction, bForward); + + oEvent.preventDefault(); + oEvent.stopPropagation(); + return false; + }; + + + /** + * Handler for the touch scroller instance. Called only when touch mode is enabled. + * + * @param {number} left Horizontal scroll position + * @param {number} top Vertical scroll position + * @param {number} zoom The zoom level + * @private + */ + ScrollBar.prototype._handleTouchScroll = function(iLeft, iTop, iZoom) { + if (this._bSkipTouchHandling) { + return; + } + + var iValue = this.getVertical() ? iTop : iLeft; + var iPos; + if (this._bStepMode) { + iPos = Math.max(Math.round(iValue / this._iTouchStepTreshold), 0); + } else { + iPos = Math.round(iValue); + } + if (this._iLastTouchScrollerPosition !== iPos) { + this._iLastTouchScrollerPosition = iPos; + this.setCheckedScrollPosition(iPos, true); + this.fireScroll(); + } + }; + + + //============================================================================= + // PUBLIC API METHODS + //============================================================================= + + /** + * Unbinds the mouse wheel scroll event of the control that has the scrollbar + * + * @param {string} oOwnerDomRef + * Dom ref of the Control that uses the scrollbar + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + ScrollBar.prototype.unbind = function (oOwnerDomRef) { + if (oOwnerDomRef) { + this._$OwnerDomRef = jQuery(oOwnerDomRef); + if (this.getVertical()) { + this._$OwnerDomRef.unbind(!!sap.ui.Device.browser.firefox ? "DOMMouseScroll" : "mousewheel", this.onmousewheel); + } + + if (jQuery.sap.touchEventMode === "ON") { + this._$OwnerDomRef.unbind(this._getTouchEventType("touchstart"), jQuery.proxy(this.ontouchstart, this)); + this._$OwnerDomRef.unbind(this._getTouchEventType("touchmove"), jQuery.proxy(this.ontouchmove, this)); + this._$OwnerDomRef.unbind(this._getTouchEventType("touchend"), jQuery.proxy(this.ontouchend, this)); + this._$OwnerDomRef.unbind(this._getTouchEventType("touchcancle"), jQuery.proxy(this.ontouchcancle, this)); + } + } + }; + + /** + * Binds the mouse wheel scroll event of the control that has the scrollbar to the scrollbar itself. + * + * @param {string} oOwnerDomRef + * Dom ref of the control that uses the scrollbar + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + ScrollBar.prototype.bind = function (oOwnerDomRef) { + if (oOwnerDomRef) { + this._$OwnerDomRef = jQuery(oOwnerDomRef); + if (this.getVertical()) { + this._$OwnerDomRef.bind(!!sap.ui.Device.browser.firefox ? "DOMMouseScroll" : "mousewheel", jQuery.proxy(this.onmousewheel, this)); + } + + if (jQuery.sap.touchEventMode === "ON") { + this._$OwnerDomRef.bind(this._getTouchEventType("touchstart"), jQuery.proxy(this.ontouchstart, this)); + this._$OwnerDomRef.bind(this._getTouchEventType("touchmove"), jQuery.proxy(this.ontouchmove, this)); + this._$OwnerDomRef.bind(this._getTouchEventType("touchend"), jQuery.proxy(this.ontouchend, this)); + this._$OwnerDomRef.bind(this._getTouchEventType("touchcancle"), jQuery.proxy(this.ontouchcancle, this)); + } + } + }; + + /** + * Returns the event type for a given touch event type base on the current touch event mode (jQuery.sap.touchEventMod). + * + * @param {string} sType The touch event to convert + * @return {string} The converted event type. + * @private + */ + ScrollBar.prototype._getTouchEventType = function (sType) { + return jQuery.sap.touchEventMode === "SIM" ? ("sap" + sType) : sType; + }; + + /** + * Page Up is used to scroll one page back. + * + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + ScrollBar.prototype.pageUp = function() { + // call on scroll + this._doScroll(sap.ui.core.ScrollBarAction.Page, false); + }; + + /** + * Page Down is used to scroll one page forward. + * + * @public + * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel + */ + ScrollBar.prototype.pageDown = function() { + // call on scroll + this._doScroll(sap.ui.core.ScrollBarAction.Page, true); + }; + + //============================================================================= + // OVERRIDE OF SETTERS + //============================================================================= + + /* + * @see JSDoc generated by SAPUI5 control API generator + */ + ScrollBar.prototype.setScrollPosition = function (scrollPosition) { + if (this._$ScrollDomRef) { + this.setCheckedScrollPosition(scrollPosition, true); + } else { + this.setProperty("scrollPosition", scrollPosition); + } + return this; + }; + + /* + * After the Scrollbar is rendered, we check the validity of the scroll position and set Scroll Left and ScrollTop. + * @private + */ + ScrollBar.prototype.setCheckedScrollPosition = function (scrollPosition, callScrollEvent) { + + var iCheckedSP = Math.max(scrollPosition, 0); + + if ( this._bStepMode === undefined) { + this._bStepMode = !this.getContentSize(); + } + + var iScrollPos = iCheckedSP; + if ( this._bStepMode) { + + iCheckedSP = Math.min(iCheckedSP, this.getSteps()); + + // STEPS MODE - Calculate the position in PX + iScrollPos = iCheckedSP * this._iFactor; + } + + iCheckedSP = Math.round(iCheckedSP); + + this._bSuppressScroll = !callScrollEvent; + this.setProperty("scrollPosition", iCheckedSP, true); + + if ( this.getVertical()) { + this._$ScrollDomRef.scrollTop(iScrollPos); + } else { + if ( !!sap.ui.Device.browser.firefox && this._bRTL ) { + this._$ScrollDomRef.scrollLeft(-iScrollPos); + } else if ( !!sap.ui.Device.browser.webkit && this._bRTL ) { + var oScrollDomRef = this._$ScrollDomRef.get(0); + this._$ScrollDomRef.scrollLeft(oScrollDomRef.scrollWidth - oScrollDomRef.clientWidth - iScrollPos); + } else { + this._$ScrollDomRef.scrollLeft(iScrollPos); + } + } + + if (jQuery.sap.touchEventMode === "ON") { + var value = iCheckedSP; + if (this._bStepMode) { + value = Math.round(iCheckedSP * this._iTouchStepTreshold); + } + + this._oTouchScroller.__scrollTop = this.getVertical() ? value : 0; + this._oTouchScroller.__scrollLeft = this.getVertical() ? 0 : value; + } + }; + + /* + * @see JSDoc generated by SAPUI5 control API generator + */ + ScrollBar.prototype.setContentSize = function (sContentSize) { + + // Trigger the rerendering when switching the from step mode. + this.setProperty("contentSize", sContentSize); + this._bStepMode = false; + var $SbCnt = this.$("sbcnt"); + if ($SbCnt) { + if (this.getVertical()) { + $SbCnt.height(sContentSize); + } else { + $SbCnt.width(sContentSize); + } + } + return this; + }; + + //============================================================================= + // PRIVATE METHODS + //============================================================================= + + /** + * Process scroll events and fire scroll event + * @param eAction Action type that can be mouse wheel, Drag, Step or Page. + * @param bForward Scroll Direction - forward or back + * @private + */ + ScrollBar.prototype._doScroll = function(eAction, bForward) { + + // Get new scroll position + var iScrollPos = null; + if (this._$ScrollDomRef) { + if (this.getVertical()) { + iScrollPos = Math.round(this._$ScrollDomRef.scrollTop()); + } else { + iScrollPos = Math.round(this._$ScrollDomRef.scrollLeft()); + if (!!sap.ui.Device.browser.firefox && this._bRTL ) { + iScrollPos = Math.abs(iScrollPos); + } else if ( !!sap.ui.Device.browser.webkit && this._bRTL ) { + var oScrollDomRef = this._$ScrollDomRef.get(0); + iScrollPos = oScrollDomRef.scrollWidth - oScrollDomRef.clientWidth - oScrollDomRef.scrollLeft; + } + } + } + + if (this._bStepMode) { + + // STEP MODE + var iStep = Math.round(iScrollPos / this._iFactor); + var iOldStep = this._iOldStep; + + if (iOldStep !== iStep) { + + // Set new scrollposition without the rerendering + this.setCheckedScrollPosition(iStep, false); + + jQuery.sap.log.debug("-----STEPMODE-----: New Step: " + iStep + " --- Old Step: " + iOldStep + " --- Scroll Pos in px: " + iScrollPos + " --- Action: " + eAction + " --- Direction is forward: " + bForward); + this.fireScroll({ action: eAction, forward: bForward, newScrollPos: iStep, oldScrollPos: iOldStep}); + this._iOldStep = iStep; + + } + } else { + + // Set new scroll position without the rerendering: + iScrollPos = Math.round(iScrollPos); + this.setProperty("scrollPosition", iScrollPos, true); + + jQuery.sap.log.debug("-----PIXELMODE-----: New ScrollPos: " + iScrollPos + " --- Old ScrollPos: " + this._iOldScrollPos + " --- Action: " + eAction + " --- Direction is forward: " + bForward); + this.fireScroll({ action: eAction, forward: bForward, newScrollPos: iScrollPos, oldScrollPos: this._iOldScrollPos}); + } + this._bSuppressScroll = false; + this._iOldScrollPos = iScrollPos; + this._bMouseWheel = false; + + }; + + ScrollBar.prototype.onThemeChanged = function() { + this.rerender(); + }; + + /** + * return the native scroll position without any browser specific correction of + * the scroll position value (firefox & RTL => negative value / webkit & RTL => + * positive value not beginning with 0 because 0 is left and not as expected + * right for webkit RTL mode). + * @return {int} native scroll position + * @private + */ + ScrollBar.prototype.getNativeScrollPosition = function() { + if (this._$ScrollDomRef) { + if (this.getVertical()) { + return Math.round(this._$ScrollDomRef.scrollTop()); + } else { + return Math.round(this._$ScrollDomRef.scrollLeft()); + } + } + return 0; + }; + + /** + * sets the scroll position directly + * @param {int} iNativeScrollPos new native scroll position + * @private + */ + ScrollBar.prototype.setNativeScrollPosition = function(iNativeScrollPos) { + var iScrollPos = Math.round(iNativeScrollPos); + if (this._$ScrollDomRef) { + if (this.getVertical()) { + this._$ScrollDomRef.scrollTop(iScrollPos); + } else { + this._$ScrollDomRef.scrollLeft(iScrollPos); + } + } + }; + + return ScrollBar; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ScrollBar.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ScrollBar.js new file mode 100644 index 0000000..53c946e --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ScrollBar.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Control','./library'],function(q,C,l){"use strict";var S=C.extend("sap.ui.core.ScrollBar",{metadata:{library:"sap.ui.core",properties:{vertical:{type:"boolean",group:"Behavior",defaultValue:true},scrollPosition:{type:"int",group:"Behavior",defaultValue:null},size:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:null},contentSize:{type:"sap.ui.core.CSSSize",group:"Dimension",defaultValue:null},steps:{type:"int",group:"Dimension",defaultValue:null}},events:{scroll:{parameters:{action:{type:"sap.ui.core.ScrollBarAction"},forward:{type:"boolean"},newScrollPos:{type:"int"},oldScrollPos:{type:"int"}}}}}});S.prototype.init=function(){this._$ScrollDomRef=null;this._iOldScrollPos=0;this._iOldStep=0;this._bScrollPosIsChecked=false;this._bRTL=sap.ui.getCore().getConfiguration().getRTL();this._bSuppressScroll=false;this._iMaxContentDivSize=1000000;if(q.sap.touchEventMode==="ON"){q.sap.require("sap.ui.thirdparty.zyngascroll");this._iLastTouchScrollerPosition=null;this._iTouchStepTreshold=24;this._bSkipTouchHandling=false;this._oTouchScroller=new window.Scroller(q.proxy(this._handleTouchScroll,this),{bouncing:false});}};S.prototype.onBeforeRendering=function(){this.$("sb").unbind("scroll",this.onscroll);};S.prototype.onAfterRendering=function(){this._iSteps=this.getSteps();var c=this.getContentSize();this._bStepMode=!c;var s=this.getSize();if(q.sap.endsWith(s,"px")){s=s.substr(0,s.length-2);}else{s=this.getVertical()?this.$().height():this.$().width();}var a=null;var $=this.$("ffsize");if(!!sap.ui.Device.browser.firefox){a=$.outerHeight();}$.remove();if(!!sap.ui.Device.browser.webkit){if(!document.width){a=Math.round(40/(window.outerWidth/q(document).width()));}else{a=Math.round(40/(document.width/q(document).width()));}}if(this.getVertical()){if(!!sap.ui.Device.browser.firefox){this._iFactor=a;}else if(!!sap.ui.Device.browser.webkit){this._iFactor=a;}else{this._iFactor=Math.floor(s*0.125);}this._iFactorPage=!!sap.ui.Device.browser.firefox?s-a:Math.floor(s*0.875);}else{if(!!sap.ui.Device.browser.firefox){this._iFactor=10;this._iFactorPage=Math.floor(s*0.8);}else if(!!sap.ui.Device.browser.webkit){this._iFactor=a;this._iFactorPage=Math.floor(s*0.875);}else{this._iFactor=7;this._iFactorPage=s-14;}}this._$ScrollDomRef=this.$("sb");if(this._bStepMode){if(this.getVertical()){var i=this._iSteps*this._iFactor;if(i>this._iMaxContentDivSize){this._iFactor=Math.ceil(this._iFactor/Math.ceil(i/this._iMaxContentDivSize));}var b=this._$ScrollDomRef.height()+this._iSteps*this._iFactor;this._$ScrollDomRef.find("div").height(b);}else{var b=this._$ScrollDomRef.width()+this._iSteps*this._iFactor;this._$ScrollDomRef.find("div").width(b);}}this.setCheckedScrollPosition(this.getScrollPosition()?this.getScrollPosition():0,true);this._$ScrollDomRef.bind("scroll",q.proxy(this.onscroll,this));if(q.sap.touchEventMode==="ON"){this._bSkipTouchHandling=true;var o={width:0,height:0};o[this.getVertical()?"height":"width"]=this._bStepMode?(this.getSteps()*this._iTouchStepTreshold):parseInt(this.getContentSize(),10);this._oTouchScroller.setDimensions(0,0,o.width,o.height);var e=this._$ScrollDomRef.get(0);var r=e.getBoundingClientRect();this._oTouchScroller.setPosition(r.left+e.clientLeft,r.top+e.clientTop);this._bSkipTouchHandling=false;}};S.prototype.onmousewheel=function(e){if(this.$().is(":visible")){var o=e.originalEvent;var w=o.detail?o.detail:o.wheelDelta*(-1)/40;var f=w>0?true:false;if(q.sap.containsOrEquals(this._$ScrollDomRef[0],e.target)){this._doScroll(sap.ui.core.ScrollBarAction.MouseWheel,f);}else{this._bMouseWheel=true;var p=null;if(this._bStepMode){p=w+this._iOldStep;}else{p=w*this._iFactor+this._iOldScrollPos;}this.setCheckedScrollPosition(p,true);}e.preventDefault();e.stopPropagation();return false;}};S.prototype.ontouchstart=function(e){var t=e.touches;var f=t[0];if(f&&f.target&&f.target.tagName.match(/input|textarea|select/i)){return;}if(this._oTouchScroller){this._oTouchScroller.doTouchStart(t,e.timeStamp);}if(t.length==1){e.preventDefault();}};S.prototype.ontouchmove=function(e){if(this._oTouchScroller){this._oTouchScroller.doTouchMove(e.touches,e.timeStamp,e.scale);}};S.prototype.ontouchend=function(e){if(this._oTouchScroller){this._oTouchScroller.doTouchEnd(e.timeStamp);}};S.prototype.ontouchcancel=function(e){if(this._oTouchScroller){this._oTouchScroller.doTouchEnd(e.timeStamp);}};S.prototype.onscroll=function(e){if(this._bSuppressScroll){this._bSuppressScroll=false;e.preventDefault();e.stopPropagation();return false;}var s=null;if(this._$ScrollDomRef){if(this.getVertical()){s=Math.round(this._$ScrollDomRef.scrollTop());}else{s=Math.round(this._$ScrollDomRef.scrollLeft());if(!!sap.ui.Device.browser.firefox&&this._bRTL){s=Math.abs(s);}else if(!!sap.ui.Device.browser.webkit&&this._bRTL){var o=this._$ScrollDomRef.get(0);s=o.scrollWidth-o.clientWidth-o.scrollLeft;}}}var d=s-this._iOldScrollPos;var f=d>0?true:false;if(d<0){d=d*(-1);}var a=sap.ui.core.ScrollBarAction.Drag;if(d==this._iFactor){a=sap.ui.core.ScrollBarAction.Step;}else if(d==this._iFactorPage){a=sap.ui.core.ScrollBarAction.Page;}else if(this._bMouseWheel){a=sap.ui.core.ScrollBarAction.MouseWheel;}this._doScroll(a,f);e.preventDefault();e.stopPropagation();return false;};S.prototype._handleTouchScroll=function(L,t,z){if(this._bSkipTouchHandling){return;}var v=this.getVertical()?t:L;var p;if(this._bStepMode){p=Math.max(Math.round(v/this._iTouchStepTreshold),0);}else{p=Math.round(v);}if(this._iLastTouchScrollerPosition!==p){this._iLastTouchScrollerPosition=p;this.setCheckedScrollPosition(p,true);this.fireScroll();}};S.prototype.unbind=function(o){if(o){this._$OwnerDomRef=q(o);if(this.getVertical()){this._$OwnerDomRef.unbind(!!sap.ui.Device.browser.firefox?"DOMMouseScroll":"mousewheel",this.onmousewheel);}if(q.sap.touchEventMode==="ON"){this._$OwnerDomRef.unbind(this._getTouchEventType("touchstart"),q.proxy(this.ontouchstart,this));this._$OwnerDomRef.unbind(this._getTouchEventType("touchmove"),q.proxy(this.ontouchmove,this));this._$OwnerDomRef.unbind(this._getTouchEventType("touchend"),q.proxy(this.ontouchend,this));this._$OwnerDomRef.unbind(this._getTouchEventType("touchcancle"),q.proxy(this.ontouchcancle,this));}}};S.prototype.bind=function(o){if(o){this._$OwnerDomRef=q(o);if(this.getVertical()){this._$OwnerDomRef.bind(!!sap.ui.Device.browser.firefox?"DOMMouseScroll":"mousewheel",q.proxy(this.onmousewheel,this));}if(q.sap.touchEventMode==="ON"){this._$OwnerDomRef.bind(this._getTouchEventType("touchstart"),q.proxy(this.ontouchstart,this));this._$OwnerDomRef.bind(this._getTouchEventType("touchmove"),q.proxy(this.ontouchmove,this));this._$OwnerDomRef.bind(this._getTouchEventType("touchend"),q.proxy(this.ontouchend,this));this._$OwnerDomRef.bind(this._getTouchEventType("touchcancle"),q.proxy(this.ontouchcancle,this));}}};S.prototype._getTouchEventType=function(t){return q.sap.touchEventMode==="SIM"?("sap"+t):t;};S.prototype.pageUp=function(){this._doScroll(sap.ui.core.ScrollBarAction.Page,false);};S.prototype.pageDown=function(){this._doScroll(sap.ui.core.ScrollBarAction.Page,true);};S.prototype.setScrollPosition=function(s){if(this._$ScrollDomRef){this.setCheckedScrollPosition(s,true);}else{this.setProperty("scrollPosition",s);}return this;};S.prototype.setCheckedScrollPosition=function(s,c){var i=Math.max(s,0);if(this._bStepMode===undefined){this._bStepMode=!this.getContentSize();}var a=i;if(this._bStepMode){i=Math.min(i,this.getSteps());a=i*this._iFactor;}i=Math.round(i);this._bSuppressScroll=!c;this.setProperty("scrollPosition",i,true);if(this.getVertical()){this._$ScrollDomRef.scrollTop(a);}else{if(!!sap.ui.Device.browser.firefox&&this._bRTL){this._$ScrollDomRef.scrollLeft(-a);}else if(!!sap.ui.Device.browser.webkit&&this._bRTL){var o=this._$ScrollDomRef.get(0);this._$ScrollDomRef.scrollLeft(o.scrollWidth-o.clientWidth-a);}else{this._$ScrollDomRef.scrollLeft(a);}}if(q.sap.touchEventMode==="ON"){var v=i;if(this._bStepMode){v=Math.round(i*this._iTouchStepTreshold);}this._oTouchScroller.__scrollTop=this.getVertical()?v:0;this._oTouchScroller.__scrollLeft=this.getVertical()?0:v;}};S.prototype.setContentSize=function(c){this.setProperty("contentSize",c);this._bStepMode=false;var s=this.$("sbcnt");if(s){if(this.getVertical()){s.height(c);}else{s.width(c);}}return this;};S.prototype._doScroll=function(e,f){var s=null;if(this._$ScrollDomRef){if(this.getVertical()){s=Math.round(this._$ScrollDomRef.scrollTop());}else{s=Math.round(this._$ScrollDomRef.scrollLeft());if(!!sap.ui.Device.browser.firefox&&this._bRTL){s=Math.abs(s);}else if(!!sap.ui.Device.browser.webkit&&this._bRTL){var o=this._$ScrollDomRef.get(0);s=o.scrollWidth-o.clientWidth-o.scrollLeft;}}}if(this._bStepMode){var i=Math.round(s/this._iFactor);var O=this._iOldStep;if(O!==i){this.setCheckedScrollPosition(i,false);q.sap.log.debug("-----STEPMODE-----: New Step: "+i+" --- Old Step: "+O+" --- Scroll Pos in px: "+s+" --- Action: "+e+" --- Direction is forward: "+f);this.fireScroll({action:e,forward:f,newScrollPos:i,oldScrollPos:O});this._iOldStep=i;}}else{s=Math.round(s);this.setProperty("scrollPosition",s,true);q.sap.log.debug("-----PIXELMODE-----: New ScrollPos: "+s+" --- Old ScrollPos: "+this._iOldScrollPos+" --- Action: "+e+" --- Direction is forward: "+f);this.fireScroll({action:e,forward:f,newScrollPos:s,oldScrollPos:this._iOldScrollPos});}this._bSuppressScroll=false;this._iOldScrollPos=s;this._bMouseWheel=false;};S.prototype.onThemeChanged=function(){this.rerender();};S.prototype.getNativeScrollPosition=function(){if(this._$ScrollDomRef){if(this.getVertical()){return Math.round(this._$ScrollDomRef.scrollTop());}else{return Math.round(this._$ScrollDomRef.scrollLeft());}}return 0;};S.prototype.setNativeScrollPosition=function(n){var s=Math.round(n);if(this._$ScrollDomRef){if(this.getVertical()){this._$ScrollDomRef.scrollTop(s);}else{this._$ScrollDomRef.scrollLeft(s);}}};return S;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ScrollBarRenderer-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ScrollBarRenderer-dbg.js new file mode 100644 index 0000000..bc9070d --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ScrollBarRenderer-dbg.js @@ -0,0 +1,149 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// A renderer for the ScrollBar control +sap.ui.define(['jquery.sap.global'], + function(jQuery) { + "use strict"; + + + /** + * @class ScrollBar renderer. + * @static + * @alias sap.ui.core.ScrollBarRenderer + */ + var ScrollBarRenderer = { + }; + + + /** + * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}. + * + * @param {sap.ui.core.RenderManager} oRenderManager RenderManager that can be used for writing to the Render-Output-Buffer + * @param {sap.ui.core.Control} oControl Object representation of the control that should be rendered + */ + ScrollBarRenderer.render = function(oRenderManager, oScrollBar){ + + // convenience variable + var rm = oRenderManager; + var bRTL = sap.ui.getCore().getConfiguration().getRTL(); + + + rm.addClass("sapUiScrollBar"); + + var sScrollBarTouchClass; + if (sap.ui.Device.support.touch) { + sScrollBarTouchClass = "sapUiScrollBarTouch"; + rm.addClass(sScrollBarTouchClass); + } + + // Get Properties + var bVertical = oScrollBar.getVertical(); + var sSize = oScrollBar.getSize(); + var sContentSize = oScrollBar.getContentSize(); + + var oBSS = jQuery.sap.scrollbarSize(sScrollBarTouchClass); + var sWidth = oBSS.width; + var sHeight = oBSS.height; + + if (bVertical) { + // First div.
    + rm.write(""); + + // Middle div - ScrollBar itself. + rm.write("
    "); + + //Last div - The content div
    + rm.write(""); + rm.write("
    "); + rm.write("
    "); + + rm.write("
    "); + rm.write(""); + + } else { + + // Horizontal Scrollbar + // First div.
    + rm.write(""); + + // Middle div - ScrollBar itself. + rm.write("
    "); + + //Last div - The content div
    + rm.write(""); + rm.write("
    "); + rm.write("
    "); + rm.write(""); + } + }; + + + /* PURE HTML EXAMPLE, FOR TESTING, FOR EXAMPLE IE9 SCROLLING PROBLEM: +

    vertical

    +
    +
    +
    +
    +
    +
    + +

    horizontal

    +
    +
    +
    +
    +
    +
    + + */ + + return ScrollBarRenderer; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ScrollBarRenderer.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ScrollBarRenderer.js new file mode 100644 index 0000000..4bb2945 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ScrollBarRenderer.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var S={};S.render=function(r,s){var a=r;var R=sap.ui.getCore().getConfiguration().getRTL();a.addClass("sapUiScrollBar");var b;if(sap.ui.Device.support.touch){b="sapUiScrollBarTouch";a.addClass(b);}var v=s.getVertical();var c=s.getSize();var C=s.getContentSize();var B=q.sap.scrollbarSize(b);var w=B.width;var h=B.height;if(v){a.write("");a.write("
    ");a.write("");a.write("
    ");a.write("");a.write("
    ");a.write("");}else{a.write("");a.write("
    ");a.write("");a.write("
    ");a.write("");a.write("");}};return S;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/SeparatorItem-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/SeparatorItem-dbg.js new file mode 100644 index 0000000..4a8c107 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/SeparatorItem-dbg.js @@ -0,0 +1,40 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.core.SeparatorItem. +sap.ui.define(['jquery.sap.global', './Item', './library'], + function(jQuery, Item, library) { + "use strict"; + + + + /** + * Constructor for a new SeparatorItem. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * An item that provides a visual separation. It borrows all its methods from the classes sap.ui.core.Item, sap.ui.core.Element, + * sap.ui.base.EventProvider, and sap.ui.base.Object. + * @extends sap.ui.core.Item + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.ui.core.SeparatorItem + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var SeparatorItem = Item.extend("sap.ui.core.SeparatorItem", /** @lends sap.ui.core.SeparatorItem.prototype */ { metadata : { + + library : "sap.ui.core" + }}); + + return SeparatorItem; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/SeparatorItem.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/SeparatorItem.js new file mode 100644 index 0000000..2c176d8 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/SeparatorItem.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Item','./library'],function(q,I,l){"use strict";var S=I.extend("sap.ui.core.SeparatorItem",{metadata:{library:"sap.ui.core"}});return S;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ThemeCheck-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ThemeCheck-dbg.js new file mode 100644 index 0000000..2b2dd3f --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ThemeCheck-dbg.js @@ -0,0 +1,272 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +/*global URI*/// declare unusual global vars for JSLint/SAPUI5 validation + +// Provides class sap.ui.core.ThemeCheck +sap.ui.define(['jquery.sap.global', 'sap/ui/Device', 'sap/ui/base/Object', 'jquery.sap.script'], + function(jQuery, Device, BaseObject/* , jQuerySap */) { + "use strict"; + + + + + + sap.ui._maxThemeCheckCycles = 100; + + /** + * Creates a new ThemeCheck object. + * + * @class Helper class used by the UI5 Core to check whether the themes are applied correctly. + * + * It could happen that e.g. in onAfterRendering not all themes are available. In these cases the + * check waits until the CSS is applied and fires an onThemeChanged event. + * + * @extends sap.ui.base.Object + * @since 1.10.0 + * @author SAP SE + * @constructor + * @private + * @alias sap.ui.core.ThemeCheck + */ + var ThemeCheck = BaseObject.extend("sap.ui.core.ThemeCheck", /** @lends sap.ui.core.ThemeCheck.prototype */ { + + constructor : function(oCore) { + this._oCore = oCore; + this._iCount = 0; // Prevent endless loop + this._CUSTOMCSSCHECK = /\.sapUiThemeDesignerCustomCss/i; + this._CUSTOMID = "sap-ui-core-customcss"; + this._customCSSAdded = false; + this._themeCheckedForCustom = null; + this._mAdditionalLibCss = {}; + }, + + getInterface : function() { + return this; + }, + + fireThemeChangedEvent : function(bOnlyOnInitFail, bForceCheck) { + clear(this); + var bUseThemeCheck = sap.ui._maxThemeCheckCycles > 0; //Possibility to switch off theme check (except of force mode (for Core.applyTheme)) + + if (bUseThemeCheck || bForceCheck) { + delayedCheckTheme.apply(this, [true]); + } else { + ThemeCheck.themeLoaded = true; + } + + if (!bOnlyOnInitFail && !this._sThemeCheckId) { + this._oCore.fireThemeChanged({theme: this._oCore.getConfiguration().getTheme()}); + } + + } + + }); + + ThemeCheck.themeLoaded = false; + + ThemeCheck.checkStyle = function(oStyle, bLog){ + if (typeof (oStyle) === "string") { + oStyle = jQuery.sap.domById(oStyle); + } + var $Style = jQuery(oStyle); + + try { + var res = !oStyle || !!((oStyle.sheet && oStyle.sheet.cssRules.length > 0) || + !!(oStyle.styleSheet && oStyle.styleSheet.cssText.length > 0) || + !!(oStyle.innerHTML && oStyle.innerHTML.length > 0)); + var res2 = $Style.attr("sap-ui-ready"); + res2 = !!(res2 === "true" || res2 === "false"); + if (bLog) { + jQuery.sap.log.debug("ThemeCheck: Check styles '" + $Style.attr("id") + "': " + res + "/" + res2 + "/" + !!oStyle); + } + return res || res2; + } catch (e) {} + + if (bLog) { + jQuery.sap.log.debug("ThemeCheck: Error during check styles '" + $Style.attr("id") + "': false/false/" + !!oStyle); + } + return false; + }; + + function clear(oThemeCheck){ + ThemeCheck.themeLoaded = false; + if (oThemeCheck._sThemeCheckId) { + jQuery.sap.clearDelayedCall(oThemeCheck._sThemeCheckId); + oThemeCheck._sThemeCheckId = null; + oThemeCheck._iCount = 0; + oThemeCheck._mAdditionalLibCss = {}; + } + } + + function checkTheme(oThemeCheck) { + var mLibs = oThemeCheck._oCore.getLoadedLibraries(); + var sThemeName = oThemeCheck._oCore.getConfiguration().getTheme(); + var sPath = oThemeCheck._oCore._getThemePath("sap.ui.core", sThemeName) + "custom.css"; + var res = true; + + if (!!oThemeCheck._customCSSAdded && oThemeCheck._themeCheckedForCustom === sThemeName) { + // include custom style sheet here because it has already been added using jQuery.sap.includeStyleSheet + // hence, needs to be checked for successful inclusion, too + mLibs[oThemeCheck._CUSTOMID] = {}; + } + + function checkLib(lib) { + res = res && ThemeCheck.checkStyle("sap-ui-theme-" + lib, true); + if (!!res) { + + // check for css rule count + if (Device.browser.msie && Device.browser.version <= 9) { + var oStyle = jQuery.sap.domById("sap-ui-theme-" + lib); + var iRules = oStyle && oStyle.sheet && oStyle.sheet.rules && + oStyle.sheet.rules.length ? oStyle.sheet.rules.length : 0; + + // IE9 and below can only handle up to 4095 rules and therefore additional + // css files have to be included + if (iRules === 4095) { + var iNumber = parseInt(jQuery(oStyle).attr("sap-ui-css-count"), 10); + if (isNaN(iNumber)) { + iNumber = 1; // first additional stylesheet + } else { + iNumber += 1; + } + var sAdditionalLibSuffix = "ie9_" + iNumber; + var sAdditionalLibName = this.name + "-" + sAdditionalLibSuffix; + var sLinkId = "sap-ui-theme-" + sAdditionalLibName; + if (!oThemeCheck._mAdditionalLibCss[sAdditionalLibName] && !jQuery.sap.domById(sLinkId)) { + oThemeCheck._mAdditionalLibCss[sAdditionalLibName] = { + name: this.name // remember original libName + }; + var oBaseStyleSheet; + if (lib !== this.name) { + // use first stylesheet element of theme + oBaseStyleSheet = jQuery.sap.domById("sap-ui-theme-" + this.name); + } else { + oBaseStyleSheet = oStyle; + } + // parse original href + var oHref = new URI(oBaseStyleSheet.getAttribute("href")); + var sSuffix = oHref.suffix(); + // get filename without suffix + var sFileName = oHref.filename(); + if (sSuffix.length > 0) { + sSuffix = "." + sSuffix; + sFileName = sFileName.slice(0, -sSuffix.length); + } + // change filename only (to keep URI parameters) + oHref.filename(sFileName + "_" + sAdditionalLibSuffix + sSuffix); + // build final href + var sHref = oHref.toString(); + // create the new link element + var oLink = document.createElement("link"); + oLink.type = "text/css"; + oLink.rel = "stylesheet"; + oLink.href = sHref; + oLink.id = sLinkId; + + jQuery(oLink) + .attr("sap-ui-css-count", iNumber) + .load(function() { + jQuery(oLink).attr("sap-ui-ready", "true"); + }).error(function() { + jQuery(oLink).attr("sap-ui-ready", "false"); + }); + + oStyle.parentNode.insertBefore(oLink, oStyle.nextSibling); + } + } + } + + /* as soon as css has been loaded, look if there is a flag for custom css inclusion inside, but only + * if this has not been checked successfully before for the same theme + */ + if (oThemeCheck._themeCheckedForCustom != sThemeName) { + if (checkCustom(oThemeCheck, lib)) { + //load custom css available at sap/ui/core/themename/library.css + jQuery.sap.includeStyleSheet(sPath, oThemeCheck._CUSTOMID); + oThemeCheck._customCSSAdded = true; + jQuery.sap.log.warning("ThemeCheck delivered custom CSS needs to be loaded, Theme not yet applied"); + oThemeCheck._themeCheckedForCustom = sThemeName; + res = false; + return false; + } else { + // remove stylesheet once the particular class is not available (e.g. after theme switch) + /*check for custom theme was not successful, so we need to make sure there are no custom style sheets attached*/ + var customCssLink = jQuery("LINK[id='" + oThemeCheck._CUSTOMID + "']"); + if (customCssLink.length > 0) { + customCssLink.remove(); + jQuery.sap.log.debug("Custom CSS removed"); + } + oThemeCheck._customCSSAdded = false; + } + } + } + } + + jQuery.each(mLibs, checkLib); + jQuery.each(oThemeCheck._mAdditionalLibCss, checkLib); + + if (!res) { + jQuery.sap.log.warning("ThemeCheck: Theme not yet applied."); + } else { + oThemeCheck._themeCheckedForCustom = sThemeName; + } + return res; + } + + /* checks if a particular class is available at the beginning of the core styles + */ + function checkCustom (oThemeCheck, lib){ + var iRulesToCheck = 2, + bSuccess = false, + aRules = []; + if (jQuery.sap.domById("sap-ui-theme-" + lib)) { + var cssFile = jQuery.sap.domById("sap-ui-theme-" + lib); + if (cssFile.sheet) { + aRules = cssFile.sheet.cssRules; + } else if (cssFile.styleSheet) { + //we're in an old IE version + aRules = cssFile.styleSheet.rules; + } + } + if (aRules.length == 0) { + jQuery.sap.log.warning("Custom check: Failed retrieving a CSS rule from stylesheet " + lib); + return false; + } + // we should now have some rule name ==> try to match against custom check + for (var i = 0; (i < iRulesToCheck && i < aRules.length) ; i++) { + if (oThemeCheck._CUSTOMCSSCHECK.test(aRules[i].selectorText)) { + bSuccess = true; + } + } + return bSuccess; + } + + function delayedCheckTheme(bFirst) { + this._iCount++; + + var bEmergencyExit = this._iCount > sap.ui._maxThemeCheckCycles; + + if (!checkTheme(this) && !bEmergencyExit) { + this._sThemeCheckId = jQuery.sap.delayedCall(2, this, delayedCheckTheme); + } else if (!bFirst) { + clear(this); + ThemeCheck.themeLoaded = true; + this._oCore.fireThemeChanged({theme: this._oCore.getConfiguration().getTheme()}); + if (bEmergencyExit) { + jQuery.sap.log.warning("ThemeCheck: max. check cycles reached."); + } + } else { + ThemeCheck.themeLoaded = true; + } + } + + + + + return ThemeCheck; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ThemeCheck.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ThemeCheck.js new file mode 100644 index 0000000..45d4d0d --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ThemeCheck.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','sap/ui/Device','sap/ui/base/Object','jquery.sap.script'],function(q,D,B){"use strict";sap.ui._maxThemeCheckCycles=100;var T=B.extend("sap.ui.core.ThemeCheck",{constructor:function(C){this._oCore=C;this._iCount=0;this._CUSTOMCSSCHECK=/\.sapUiThemeDesignerCustomCss/i;this._CUSTOMID="sap-ui-core-customcss";this._customCSSAdded=false;this._themeCheckedForCustom=null;this._mAdditionalLibCss={};},getInterface:function(){return this;},fireThemeChangedEvent:function(o,f){c(this);var u=sap.ui._maxThemeCheckCycles>0;if(u||f){d.apply(this,[true]);}else{T.themeLoaded=true;}if(!o&&!this._sThemeCheckId){this._oCore.fireThemeChanged({theme:this._oCore.getConfiguration().getTheme()});}}});T.themeLoaded=false;T.checkStyle=function(s,l){if(typeof(s)==="string"){s=q.sap.domById(s);}var S=q(s);try{var r=!s||!!((s.sheet&&s.sheet.cssRules.length>0)||!!(s.styleSheet&&s.styleSheet.cssText.length>0)||!!(s.innerHTML&&s.innerHTML.length>0));var f=S.attr("sap-ui-ready");f=!!(f==="true"||f==="false");if(l){q.sap.log.debug("ThemeCheck: Check styles '"+S.attr("id")+"': "+r+"/"+f+"/"+!!s);}return r||f;}catch(e){}if(l){q.sap.log.debug("ThemeCheck: Error during check styles '"+S.attr("id")+"': false/false/"+!!s);}return false;};function c(t){T.themeLoaded=false;if(t._sThemeCheckId){q.sap.clearDelayedCall(t._sThemeCheckId);t._sThemeCheckId=null;t._iCount=0;t._mAdditionalLibCss={};}}function a(t){var l=t._oCore.getLoadedLibraries();var s=t._oCore.getConfiguration().getTheme();var p=t._oCore._getThemePath("sap.ui.core",s)+"custom.css";var r=true;if(!!t._customCSSAdded&&t._themeCheckedForCustom===s){l[t._CUSTOMID]={};}function e(f){r=r&&T.checkStyle("sap-ui-theme-"+f,true);if(!!r){if(D.browser.msie&&D.browser.version<=9){var S=q.sap.domById("sap-ui-theme-"+f);var R=S&&S.sheet&&S.sheet.rules&&S.sheet.rules.length?S.sheet.rules.length:0;if(R===4095){var n=parseInt(q(S).attr("sap-ui-css-count"),10);if(isNaN(n)){n=1;}else{n+=1;}var A="ie9_"+n;var g=this.name+"-"+A;var L="sap-ui-theme-"+g;if(!t._mAdditionalLibCss[g]&&!q.sap.domById(L)){t._mAdditionalLibCss[g]={name:this.name};var o;if(f!==this.name){o=q.sap.domById("sap-ui-theme-"+this.name);}else{o=S;}var h=new URI(o.getAttribute("href"));var i=h.suffix();var F=h.filename();if(i.length>0){i="."+i;F=F.slice(0,-i.length);}h.filename(F+"_"+A+i);var H=h.toString();var j=document.createElement("link");j.type="text/css";j.rel="stylesheet";j.href=H;j.id=L;q(j).attr("sap-ui-css-count",n).load(function(){q(j).attr("sap-ui-ready","true");}).error(function(){q(j).attr("sap-ui-ready","false");});S.parentNode.insertBefore(j,S.nextSibling);}}}if(t._themeCheckedForCustom!=s){if(b(t,f)){q.sap.includeStyleSheet(p,t._CUSTOMID);t._customCSSAdded=true;q.sap.log.warning("ThemeCheck delivered custom CSS needs to be loaded, Theme not yet applied");t._themeCheckedForCustom=s;r=false;return false;}else{var k=q("LINK[id='"+t._CUSTOMID+"']");if(k.length>0){k.remove();q.sap.log.debug("Custom CSS removed");}t._customCSSAdded=false;}}}}q.each(l,e);q.each(t._mAdditionalLibCss,e);if(!r){q.sap.log.warning("ThemeCheck: Theme not yet applied.");}else{t._themeCheckedForCustom=s;}return r;}function b(t,l){var r=2,s=false,R=[];if(q.sap.domById("sap-ui-theme-"+l)){var e=q.sap.domById("sap-ui-theme-"+l);if(e.sheet){R=e.sheet.cssRules;}else if(e.styleSheet){R=e.styleSheet.rules;}}if(R.length==0){q.sap.log.warning("Custom check: Failed retrieving a CSS rule from stylesheet "+l);return false;}for(var i=0;(isap.ui._maxThemeCheckCycles;if(!a(this)&&!e){this._sThemeCheckId=q.sap.delayedCall(2,this,d);}else if(!f){c(this);T.themeLoaded=true;this._oCore.fireThemeChanged({theme:this._oCore.getConfiguration().getTheme()});if(e){q.sap.log.warning("ThemeCheck: max. check cycles reached.");}}else{T.themeLoaded=true;}}return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Title-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Title-dbg.js new file mode 100644 index 0000000..28e0ebf --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Title-dbg.js @@ -0,0 +1,67 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.core.Title. +sap.ui.define(['jquery.sap.global', './Element', './library'], + function(jQuery, Element, library) { + "use strict"; + + + + /** + * Constructor for a new Title. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * Represents a title element that can be used for aggregation with other controls + * @extends sap.ui.core.Element + * + * @author SAP SE + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.16.0 + * @alias sap.ui.core.Title + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var Title = Element.extend("sap.ui.core.Title", /** @lends sap.ui.core.Title.prototype */ { metadata : { + + library : "sap.ui.core", + properties : { + + /** + * Defines the title text + */ + text : {type : "string", group : "Appearance", defaultValue : null}, + + /** + * Defines the URL for icon display + */ + icon : {type : "sap.ui.core.URI", group : "Appearance", defaultValue : null}, + + /** + * Defines the level of the title. If set to auto the level of the title is chosen by the control rendering the title. + * + * Currently not all controls using the Title.control supporting this property. + */ + level : {type : "sap.ui.core.TitleLevel", group : "Appearance", defaultValue : sap.ui.core.TitleLevel.Auto}, + + /** + * If set the title is displayed emphasized. + * This feature is nor supported by all controls using the Title.control. + */ + emphasized : {type : "boolean", group : "Appearance", defaultValue : false} + } + }}); + + + + return Title; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/Title.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/Title.js new file mode 100644 index 0000000..8851172 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/Title.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Element','./library'],function(q,E,l){"use strict";var T=E.extend("sap.ui.core.Title",{metadata:{library:"sap.ui.core",properties:{text:{type:"string",group:"Appearance",defaultValue:null},icon:{type:"sap.ui.core.URI",group:"Appearance",defaultValue:null},level:{type:"sap.ui.core.TitleLevel",group:"Appearance",defaultValue:sap.ui.core.TitleLevel.Auto},emphasized:{type:"boolean",group:"Appearance",defaultValue:false}}}});return T;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/TooltipBase-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/TooltipBase-dbg.js new file mode 100644 index 0000000..e1af529 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/TooltipBase-dbg.js @@ -0,0 +1,482 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.core.TooltipBase. +sap.ui.define(['jquery.sap.global', './Control', './Popup', './library'], + function(jQuery, Control, Popup, library) { + "use strict"; + + + + /** + * Constructor for a new TooltipBase. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * Abstract class that can be extended in order to implement any extended tooltip. For example, RichTooltip Control is based on it. It provides the opening/closing behavior and the main "text" property. + * @extends sap.ui.core.Control + * @version 1.28.5 + * + * @constructor + * @public + * @alias sap.ui.core.TooltipBase + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var TooltipBase = Control.extend("sap.ui.core.TooltipBase", /** @lends sap.ui.core.TooltipBase.prototype */ { metadata : { + + "abstract" : true, + library : "sap.ui.core", + properties : { + + /** + * The text that is shown in the tooltip that extends the TooltipBase class, for example in RichTooltip. + */ + text : {type : "string", group : "Misc", defaultValue : ""}, + + /** + * Optional. Open Duration in milliseconds. + */ + openDuration : {type : "int", group : "Behavior", defaultValue : 200}, + + /** + * Optional. Close Duration in milliseconds. + */ + closeDuration : {type : "int", group : "Behavior", defaultValue : 200}, + + /** + * Optional. My position defines which position on the extended tooltip being positioned to align with the target control. + */ + myPosition : {type : "sap.ui.core.Dock", group : "Behavior", defaultValue : 'begin top'}, + + /** + * Optional. At position defines which position on the target control to align the positioned tooltip. + */ + atPosition : {type : "sap.ui.core.Dock", group : "Behavior", defaultValue : 'begin bottom'}, + + /** + * Optional. Offset adds these left-top values to the calculated position. + * Example: "10 3". + */ + offset : {type : "string", group : "Behavior", defaultValue : '10 3'}, + + /** + * Optional. Collision - when the positioned element overflows the window in some direction, move it to an alternative position. + */ + collision : {type : "sap.ui.core.Collision", group : "Behavior", defaultValue : 'flip'}, + + /** + * Opening delay of the tooltip in milliseconds + */ + openDelay : {type : "int", group : "Misc", defaultValue : 500}, + + /** + * Closing delay of the tooltip in milliseconds + */ + closeDelay : {type : "int", group : "Misc", defaultValue : 100} + }, + events : { + + /** + * This event is fired when the Tooltip has been closed + * @since 1.11.0 + */ + closed : {} + } + }}); + + + /** + * Return the popup to use but do not expose it to the outside. + * @type sap.ui.commons.Popup + * @return The popup to use + * @private + */ + TooltipBase.prototype._getPopup = jQuery.sap.getter((function() { + var oPopup = new Popup(); + oPopup.setShadow(true); + return oPopup; + }()) + ); + + /** + * When a control that has a Tooltip gets the focus, this method is called. + * @param {jQuery.EventObject} oEvent The event that occurred on the Control that has extended Tooltip. + * @private + */ + TooltipBase.prototype.onfocusin = function(oEvent) { + + var oSC = jQuery(oEvent.target).control(0); + if (oSC != null) { + var oDomRef = oSC.getFocusDomRef(); + this.sStoredTooltip = null; + if (oDomRef.title && oDomRef.title != "") { + this.sStoredTooltip = oDomRef.title; + oDomRef.title = ""; + } + + var oPopup = this._getPopup(); + if (!(oPopup.isOpen() && oPopup.getContent() == this)) { + // Update Tooltip or create a new span with texts. + sap.ui.getCore().getRenderManager().render(this, sap.ui.getCore().getStaticAreaRef(), true); + } + + // Attach accessibility info to the control oSC + var sValue = oDomRef.getAttribute("aria-describedby"); + var sIdsString = this.getId() + "-title " + this.getId() + "-txt"; + if (sValue == null || sValue == "" ) { + oDomRef.setAttribute("aria-describedby", sIdsString); + } else if (sValue.indexOf(sIdsString) == -1) { + oDomRef.setAttribute("aria-describedby", sValue + " " + sIdsString); + } + } + }; + + /** + * When a control that has a Tooltip looses the focus, this method is called. + * @param {jQuery.EventObject} oEvent The event that occurred on the extended Tooltip. + * @private + */ + TooltipBase.prototype.onfocusout = function(oEvent) { + var oSC = jQuery(oEvent.target).control(0); + if (oSC != null) { + + var oDomRef = oSC.getFocusDomRef(); + if (this.sStoredTooltip) { + oDomRef.title = this.sStoredTooltip; + } + + // Detach accessibility information from control oSC. + var sValue = oDomRef.getAttribute("aria-describedby"); + var sIdsString = this.getId() + "-title " + this.getId() + "-txt"; + if (sValue && sValue.indexOf(sIdsString) >= 0) { + if (jQuery.trim(sValue) == sIdsString) { + oDomRef.removeAttribute("aria-describedby"); + } else { + sValue = sValue.replace(sIdsString, ""); + oDomRef.setAttribute("aria-describedby", sValue); + } + } + } + if (TooltipBase.sOpenTimeout) { + jQuery.sap.clearDelayedCall(TooltipBase.sOpenTimeout); + TooltipBase.sOpenTimeout = undefined; + } + + // Avoid closing the popup when there is a move inside the control to another control or element (for example div) + this.sCloseNowTimeout = jQuery.sap.delayedCall(this.getCloseDelay(), this, "closePopup"); + }; + + /** + * Check if the parameter is a standard browser Tooltip. + * @return {boolean} - true if the Tooltip is a standard tooltip type of string. False if not a string or empty. + * @private + */ + TooltipBase.prototype.isStandardTooltip = function(oTooltip) { + return (typeof oTooltip === "string" && (jQuery.trim(oTooltip)) !== ""); + }; + + /** + * Handle the mouseover event of a Control that has a Tooltip. + * @param {jQuery.EventObject} oEvent - The event that occurred on the Control. + * @private + */ + TooltipBase.prototype.onmouseover = function(oEvent) { + + // The Element or Control that initiated the event. + var oEventSource = jQuery(oEvent.target).control(0); + //jQuery.sap.log.debug("MOUSE OVER " + oEventSource + " " + jQuery(oEvent.currentTarget).control(0)); + if ( oEventSource != null) { + + // If we move in the tooltip itself then do not close the tooltip. + if ( oEventSource === this) { + if (this.sCloseNowTimeout) { + jQuery.sap.clearDelayedCall(this.sCloseNowTimeout); + this.sCloseNowTimeout = null; + } + oEvent.stopPropagation(); + oEvent.preventDefault(); + return; + } + // The current Element or Control within the event bubbling phase. + var oCurrentElement = jQuery(oEvent.currentTarget).control(0); + // Cancel close event if we move from parent with extended tooltip to child without own tooltip + if ( oCurrentElement !== oEventSource && !this.isStandardTooltip(oEventSource.getTooltip())) { + if (this.sCloseNowTimeout) { + jQuery.sap.clearDelayedCall(this.sCloseNowTimeout); + this.sCloseNowTimeout = null; + oEvent.stopPropagation(); + oEvent.preventDefault(); + return; + } + } + + // Indicates the element being exited. + var oLeftElement = jQuery(oEvent.relatedTarget).control(0); + if (oLeftElement) { + + // Cancel close event if we move from child without own tooltip to the parent with rtt - current element has to have rtt. + if (oLeftElement.getParent()) { + if (oLeftElement.getParent() === oCurrentElement && oCurrentElement === oEventSource) { + // It is a child of the current element and has no tooltip + var oLeftElementTooltip = oLeftElement.getTooltip(); + if ( !this.isStandardTooltip(oLeftElementTooltip) && (!oLeftElementTooltip || !(oLeftElementTooltip instanceof TooltipBase))) { + if (this.sCloseNowTimeout) { + jQuery.sap.clearDelayedCall(this.sCloseNowTimeout); + this.sCloseNowTimeout = null; + oEvent.stopPropagation(); + oEvent.preventDefault(); + return; + } + } + } + } + } + + // Open the popup + if (this._currentControl === oEventSource || !this.isStandardTooltip(oEventSource.getTooltip())) { + // Set all standard tooltips to empty string + this.removeStandardTooltips(oEventSource); + // Open with delay 0,5 sec. + if (TooltipBase.sOpenTimeout) { + jQuery.sap.clearDelayedCall(TooltipBase.sOpenTimeout); + } + TooltipBase.sOpenTimeout = jQuery.sap.delayedCall(this.getOpenDelay(), this, "openPopup", [this._currentControl]); + // We need this for the scenario if the both a child and his parent have an RichTooltip + oEvent.stopPropagation(); + oEvent.preventDefault(); + } + } + }; + + /** + * Handle the mouseout event of a Control that has a Tooltip. + * @param {jQuery.EventObject} oEvent Event that occurred on the Control that has extended Tooltip. + * @private + */ + TooltipBase.prototype.onmouseout = function(oEvent) { + //jQuery.sap.log.debug("MOUSE OUT " + jQuery(oEvent.target).control(0) + " "+ jQuery(oEvent.currentTarget).control(0) ); + if (TooltipBase.sOpenTimeout) { + jQuery.sap.clearDelayedCall(TooltipBase.sOpenTimeout); + TooltipBase.sOpenTimeout = undefined; + } + // Avoid closing the popup when there is a move inside the control to another control or element (for example div) + if (!this.sCloseNowTimeout) { + this.sCloseNowTimeout = jQuery.sap.delayedCall(this.getCloseDelay(), this, "closePopup"); + } + this.restoreStandardTooltips(); + oEvent.stopPropagation(); + oEvent.preventDefault(); + }; + + /** + * Close the popup holding the content of the tooltip. + * Clears all delayed calls for closing this popup as those are not needed anymore. + * @private + */ + TooltipBase.prototype.closePopup = function() { + + var oPopup = this._getPopup(); + + if (this.sCloseNowTimeout) { + jQuery.sap.clearDelayedCall(this.sCloseNowTimeout); + } + this.sCloseNowTimeout = undefined; + + oPopup.attachClosed(this.handleClosed, this); + oPopup.close(); + //jQuery.sap.log.debug("CLOSE POPUP " + this.getId()); + this.restoreStandardTooltips(); + }; + + TooltipBase.prototype.handleClosed = function(){ + this._getPopup().detachClosed(jQuery.proxy(this.handleClosed, this)); + this.fireClosed(); + }; + + + /** + * Open the popup holding the content of the tooltip. + * @param {Object} oSC - the Control that has extended Tooltip. + * @private + */ + TooltipBase.prototype.openPopup = function(oSC) { + if (oSC.getTooltip() != null) { + + // Clear Delayed Call if exist + if (this.sCloseNowTimeout) { + jQuery.sap.clearDelayedCall(this.sCloseNowTimeout); + this.sCloseNowTimeout = null; + return; + } + + // If already opened with the needed content then return + var oPopup = this._getPopup(); + if (oPopup.isOpen() && oPopup.getContent() == this) { + return; + } + + // Tooltip will be displayed. Ensure the content is rendered. As this is no control, the popup will not take care of rendering. + sap.ui.getCore().getRenderManager().render(this, sap.ui.getCore().getStaticAreaRef(), true); + + // Open popup + var oDomRef = oSC.getDomRef(); + oPopup.setContent(this); + oPopup.setPosition(this.getMyPosition(), this.getAtPosition(), oDomRef, this.getOffset(), this.getCollision()); + oPopup.setDurations(this.getOpenDuration(), this.getCloseDuration()); + oPopup.open(); + this.removeStandardTooltips(this._currentControl); + } + }; + + /** + * Switch off the browser standard tooltips and store then in an array. + * @private + */ + TooltipBase.prototype.removeStandardTooltips = function() { + + var oDomRef = this._currentControl.getDomRef(); + if (!this.aStoredTooltips) { + this.aStoredTooltips = []; + } else { + return; + } + + var tooltip = ""; + while (oDomRef && !(oDomRef === document)) { + tooltip = oDomRef.title; + if ( tooltip ) { + this.aStoredTooltips.push({ domref : oDomRef, tooltip : tooltip }); + oDomRef.title = ""; + } + oDomRef = oDomRef.parentNode; + } + + // Do it for the specified elements under the root Dom ref. + if (this._currentControl.getTooltipDomRefs) { + // oDomRefs is jQuery Object that contains DOM nodes of the elements to remove the tooltips + var aDomRefs = this._currentControl.getTooltipDomRefs(); + for (var i = 0; i < aDomRefs.length; i++) { + oDomRef = aDomRefs[i]; + if (oDomRef) { + tooltip = oDomRef.title; + if (tooltip) { + this.aStoredTooltips.push({ domref : oDomRef, tooltip : tooltip }); + oDomRef.title = ""; + } + } + } + } + }; + + /** + * Restore the standard browser tooltips. + * @private + */ + TooltipBase.prototype.restoreStandardTooltips = function() { + + var oPopup = this._getPopup(); + var eState = oPopup.getOpenState(); + if (eState === sap.ui.core.OpenState.OPEN || eState === sap.ui.core.OpenState.OPENING) { + //jQuery.sap.log.debug(oPopup.getOpenState()); + return; + } + if (TooltipBase.sOpenTimeout) { + return; + } + if (this.aStoredTooltips) { + for (var i = 0; i < this.aStoredTooltips.length; i++) { + var oDomRef = this.aStoredTooltips[i].domref; + oDomRef.title = this.aStoredTooltips[i].tooltip; + } + } + this.aStoredTooltips = null; + }; + + /* Store reference to original setParent function */ + TooltipBase.prototype._setParent = TooltipBase.prototype.setParent; + + /** + * Defines the new parent of this TooltipBase using {@link sap.ui.core.Element#setParent}. + * Additionally closes the Tooltip. + * + * @param {sap.ui.core.Element} oParent The element that becomes this element's parent. + * @param {string} sAggregationName - The name of the parent element's aggregation. + * @private + */ + TooltipBase.prototype.setParent = function(oParent, sAggregationName) { + // As there is a new parent, close popup. + var _oPopup = this._getPopup(); + if (_oPopup && _oPopup.isOpen()) { + this.closePopup(); + } + this._setParent.apply(this, arguments); + }; + /** + * Handle the key down event Ctrl+i and ESCAPE. + * @param {jQuery.Event} oEvent - the event that occurred on the Parent of the Extended Tooltip. + * @private + */ + TooltipBase.prototype.onkeydown = function(oEvent) { + // Ctrl is pressed together with "i" - Open Rich tooltip. + if (oEvent.ctrlKey && oEvent.which == jQuery.sap.KeyCodes.I) { + // The Element or Control that initiated the event. + + var oEventSource = jQuery(oEvent.target).control(0); + if (oEventSource != null) { + // If the current control is the event source or event source does not have a standard tooltip + if (this._currentControl === oEventSource || !this.isStandardTooltip(oEventSource.getTooltip())) { + + // Set all standard tooltips to empty string + this.removeStandardTooltips(oEventSource); + + // Open extended tooltip + this.openPopup( this._currentControl); + + oEvent.preventDefault(); + oEvent.stopPropagation(); + } + } + } else if (oEvent.which == jQuery.sap.KeyCodes.ESCAPE) { + // If ESC is pressed then close the Rich Tooltip. + + if (TooltipBase.sOpenTimeout) { + jQuery.sap.clearDelayedCall(TooltipBase.sOpenTimeout); + TooltipBase.sOpenTimeout = undefined; + } + + + var bWasOpen = this.oPopup && this.oPopup.isOpen(); + this.closePopup(); + if (bWasOpen) { + // Only prevent event propagation when there actually was an open Popup + // that has now been closed + oEvent.preventDefault(); + oEvent.stopPropagation(); + } + + } + }; + + /** + * Closes the tooltip if open or clears the open timer. + * @private + */ + TooltipBase.prototype._closeOrPreventOpen = function() { + var oPopup = this._getPopup(); + if (oPopup.isOpen()) { + this.closePopup(); + } else if (TooltipBase.sOpenTimeout) { + jQuery.sap.clearDelayedCall(TooltipBase.sOpenTimeout); + TooltipBase.sOpenTimeout = undefined; + } + }; + + + return TooltipBase; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/TooltipBase.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/TooltipBase.js new file mode 100644 index 0000000..ce5b6c1 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/TooltipBase.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Control','./Popup','./library'],function(q,C,P,l){"use strict";var T=C.extend("sap.ui.core.TooltipBase",{metadata:{"abstract":true,library:"sap.ui.core",properties:{text:{type:"string",group:"Misc",defaultValue:""},openDuration:{type:"int",group:"Behavior",defaultValue:200},closeDuration:{type:"int",group:"Behavior",defaultValue:200},myPosition:{type:"sap.ui.core.Dock",group:"Behavior",defaultValue:'begin top'},atPosition:{type:"sap.ui.core.Dock",group:"Behavior",defaultValue:'begin bottom'},offset:{type:"string",group:"Behavior",defaultValue:'10 3'},collision:{type:"sap.ui.core.Collision",group:"Behavior",defaultValue:'flip'},openDelay:{type:"int",group:"Misc",defaultValue:500},closeDelay:{type:"int",group:"Misc",defaultValue:100}},events:{closed:{}}}});T.prototype._getPopup=q.sap.getter((function(){var p=new P();p.setShadow(true);return p;}()));T.prototype.onfocusin=function(e){var s=q(e.target).control(0);if(s!=null){var d=s.getFocusDomRef();this.sStoredTooltip=null;if(d.title&&d.title!=""){this.sStoredTooltip=d.title;d.title="";}var p=this._getPopup();if(!(p.isOpen()&&p.getContent()==this)){sap.ui.getCore().getRenderManager().render(this,sap.ui.getCore().getStaticAreaRef(),true);}var v=d.getAttribute("aria-describedby");var i=this.getId()+"-title "+this.getId()+"-txt";if(v==null||v==""){d.setAttribute("aria-describedby",i);}else if(v.indexOf(i)==-1){d.setAttribute("aria-describedby",v+" "+i);}}};T.prototype.onfocusout=function(e){var s=q(e.target).control(0);if(s!=null){var d=s.getFocusDomRef();if(this.sStoredTooltip){d.title=this.sStoredTooltip;}var v=d.getAttribute("aria-describedby");var i=this.getId()+"-title "+this.getId()+"-txt";if(v&&v.indexOf(i)>=0){if(q.trim(v)==i){d.removeAttribute("aria-describedby");}else{v=v.replace(i,"");d.setAttribute("aria-describedby",v);}}}if(T.sOpenTimeout){q.sap.clearDelayedCall(T.sOpenTimeout);T.sOpenTimeout=undefined;}this.sCloseNowTimeout=q.sap.delayedCall(this.getCloseDelay(),this,"closePopup");};T.prototype.isStandardTooltip=function(t){return(typeof t==="string"&&(q.trim(t))!=="");};T.prototype.onmouseover=function(e){var E=q(e.target).control(0);if(E!=null){if(E===this){if(this.sCloseNowTimeout){q.sap.clearDelayedCall(this.sCloseNowTimeout);this.sCloseNowTimeout=null;}e.stopPropagation();e.preventDefault();return;}var c=q(e.currentTarget).control(0);if(c!==E&&!this.isStandardTooltip(E.getTooltip())){if(this.sCloseNowTimeout){q.sap.clearDelayedCall(this.sCloseNowTimeout);this.sCloseNowTimeout=null;e.stopPropagation();e.preventDefault();return;}}var L=q(e.relatedTarget).control(0);if(L){if(L.getParent()){if(L.getParent()===c&&c===E){var o=L.getTooltip();if(!this.isStandardTooltip(o)&&(!o||!(o instanceof T))){if(this.sCloseNowTimeout){q.sap.clearDelayedCall(this.sCloseNowTimeout);this.sCloseNowTimeout=null;e.stopPropagation();e.preventDefault();return;}}}}}if(this._currentControl===E||!this.isStandardTooltip(E.getTooltip())){this.removeStandardTooltips(E);if(T.sOpenTimeout){q.sap.clearDelayedCall(T.sOpenTimeout);}T.sOpenTimeout=q.sap.delayedCall(this.getOpenDelay(),this,"openPopup",[this._currentControl]);e.stopPropagation();e.preventDefault();}}};T.prototype.onmouseout=function(e){if(T.sOpenTimeout){q.sap.clearDelayedCall(T.sOpenTimeout);T.sOpenTimeout=undefined;}if(!this.sCloseNowTimeout){this.sCloseNowTimeout=q.sap.delayedCall(this.getCloseDelay(),this,"closePopup");}this.restoreStandardTooltips();e.stopPropagation();e.preventDefault();};T.prototype.closePopup=function(){var p=this._getPopup();if(this.sCloseNowTimeout){q.sap.clearDelayedCall(this.sCloseNowTimeout);}this.sCloseNowTimeout=undefined;p.attachClosed(this.handleClosed,this);p.close();this.restoreStandardTooltips();};T.prototype.handleClosed=function(){this._getPopup().detachClosed(q.proxy(this.handleClosed,this));this.fireClosed();};T.prototype.openPopup=function(s){if(s.getTooltip()!=null){if(this.sCloseNowTimeout){q.sap.clearDelayedCall(this.sCloseNowTimeout);this.sCloseNowTimeout=null;return;}var p=this._getPopup();if(p.isOpen()&&p.getContent()==this){return;}sap.ui.getCore().getRenderManager().render(this,sap.ui.getCore().getStaticAreaRef(),true);var d=s.getDomRef();p.setContent(this);p.setPosition(this.getMyPosition(),this.getAtPosition(),d,this.getOffset(),this.getCollision());p.setDurations(this.getOpenDuration(),this.getCloseDuration());p.open();this.removeStandardTooltips(this._currentControl);}};T.prototype.removeStandardTooltips=function(){var d=this._currentControl.getDomRef();if(!this.aStoredTooltips){this.aStoredTooltips=[];}else{return;}var t="";while(d&&!(d===document)){t=d.title;if(t){this.aStoredTooltips.push({domref:d,tooltip:t});d.title="";}d=d.parentNode;}if(this._currentControl.getTooltipDomRefs){var D=this._currentControl.getTooltipDomRefs();for(var i=0;isId and + * settings. + * + * The set of allowed entries in the mSettings object depends on + * the concrete subclass and is described there. See {@link sap.ui.core.Component} + * for a general description of this argument. + * + * @param {string} + * [sId] optional id for the new control; generated automatically if + * no non-empty id is given Note: this can be omitted, no matter + * whether mSettings will be given or not! + * @param {object} + * [mSettings] optional map/JSON-object with initial settings for the + * new component instance + * @public + * + * @extends sap.ui.core.Component + * @abstract + * @author SAP SE + * @version 1.28.5 + * @alias sap.ui.core.UIComponent + * @since 1.9.2 + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var UIComponent = Component.extend("sap.ui.core.UIComponent", /** @lends sap.ui.core.UIComponent.prototype */ + + { + constructor : function(sId, mSettings) { + + try { + Component.apply(this, arguments); + } catch (e) { + this._destroyCreatedInstances(); + throw e; + } + + }, + + metadata : { + "abstract": true, + rootView : null, // the rootView to open (view name as string or view configuration object) + publicMethods: [ "render" ], + aggregations: { + /** + * The root Control of the UIComponent. + * + * The root control should be created inside the function {@link sap.ui.core.UIComponent#createContent}. + */ + "rootControl": { type: "sap.ui.core.Control", multiple: false, visibility: "hidden" } + }, + routing: { + } + //autoDestroy: false // TODO: destroy component when view should be destroyed (not implemented yet!) + } + + }, /* Metadata constructor */ UIComponentMetadata); + + /** + * Creates a new subclass of class sap.ui.core.UIComponent with name sClassName and enriches it with the information contained in oClassInfo. + * oClassInfo might contain the same kind of information as described in {@link sap.ui.core.Element.html#.extend}. + * + * @alias {sap.ui.core.UIComponent.extend} + * @public + * @param {string} sClassName name of the class to be created + * + * @param {object} [oClassInfo] object literal with information about the class + * + * @param {object} [oClassInfo.metadata] see {@link sap.ui.core.Element.html#.extend} for the values allowed in every extend. + * + * @param {object} [oClassInfo.metadata.routing] + * @since 1.16 + * If you are using a version before UI5 1.28 you may put the same + * An object containing he routing relevant configurations, routes, targets, config + * Example for a config:
    + *
    +	 * 
    +	 * metadata : {
    +	 *     "routing": {
    +	 *         "routes": {
    +	 *             "welcome": {
    +	 *                 // If the url has no hash eg: index.html or index.html# , this route will be matched.
    +	 *                 "pattern": "",
    +	 *                 // Displays the target called welcome specified in metadata.routing.targets.welcome.
    +	 *                 "target": "welcome"
    +	 *             }
    +	 *             "product": {
    +	 *                 "pattern": "Product/{id}",
    +	 *                 "target": "product"
    +	 *             }
    +	 *         }
    +	 *         // Default values for targets
    +	 *         "config": {
    +	 *             // For a detailed documentation of these parameters have a look at the sap.ui.core.routing.Targets documentation
    +	 *             "viewType": "XML",
    +	 *             "controlId": "App",
    +	 *             "controlAggregation": "pages",
    +	 *             "viewNamespace": "myApplication.namespace",
    +	 *             // If you are using the mobile library, you have to use a sap.m.Router, to get support for the controls App, SplitApp, NavContainer and SplitContainer.
    +	 *             "routerClass": "sap.m.routing.Router"
    +	 *             // What happens if no route matches the hash?
    +	 *             "bypassed": {
    +	 *                 // the not found target gets displayed
    +	 *                 "target": "notFound"
    +	 *             }
    +	 *         }
    +	 *         "targets": {
    +	 *             "welcome": {
    +	 *                 // Referenced by the route "welcome"
    +	 *                 "viewName": "Welcome",
    +	 *                 "viewLevel": 0
    +	 *             },
    +	 *             "product": {
    +	 *                 // Referenced by the route "Product"
    +	 *                 "viewName": "Product",
    +	 *                 "viewLevel": 1
    +	 *             }
    +	 *             "notFound": {
    +	 *                 // Referenced by the bypassed section of the config
    +	 *                 "viewName": "NotFound"
    +	 *             }
    +	 *         }
    +	 *     }
    +	 * }
    +	 * 
    +	 * 
    + * + * Later you can retrieve the Router with {@link #getRouter} to register on callbacks when routes have matched. You can also retrieve Targets with {@link #getTargets} to display views without changing the hash. + * + * @param {object} [oClassInfo.metadata.routing.routes] + * @since 1.16 + * An object containing the routes that should be added to the Router. See {@link sap.ui.core.routing.Route} for the allowed properties. + * + * @param {object} [oClassInfo.metadata.routing.targets] + * @since 1.28.1 + * An object containing the targets that will be available for the router and the Targets instance. + * Read {@link sap.ui.core.routing.Targets} for the allowed values. + * + * @param {object} [oClassInfo.metadata.routing.config] + * @since 1.16 + * An object containing default values used for routes and targets. + * See {@link sap.ui.core.routing.Router#constructor} and {@link sap.ui.core.routing.Targets} for mor documentation. + * + * @param {string|function} [oClassInfo.metadata.routing.config.routerClass] default: "sap.ui.core.routing.Router". + * @since 1.20 + * The namespace of the router that should be used. + * If you are using an own router extension, it has to be required before the contructor of the component is invoked. + * If you use "sap.m.routing.Router" the component will automatically create a {@link sap.m.routing.Targets} instance. + * If you pass a function it has to be a constructor function extending a router. + * + * @param {string|function} [oClassInfo.metadata.routing.config.targetsClass] + * @since 1.28.1 + * default: "sap.ui.core.routing.Targets". + * The namespace of the targets that should be used. + * If you are using an own Targets extension, it has to be required before the contructor of the component is invoked. + * If you define routes in your routing section, this parameter will be ignored and the Targets instance of the router will be taken see {@lint #sap.ui.core.routing.Router#getTargets}. + * + * + * @param {string} [oClassInfo.metadata.routing.config.rootView] + * By default the rootView will be set to the id of the view returned by the {@link #getRootView} function. + * You should not set this parameter if you create a view with the UIComponent. + * + * @param {function} [FNMetaImpl} constructor function for the metadata object. If not given, it defaults to {@link sap.ui.core.ElementMetadata}. + */ + + /** + * Initializes the Component instance after creation. + * + * Applications must not call this hook method directly, it is called by the + * framework while the constructor of an Component is executed. + * + * Subclasses of Component should override this hook to implement any necessary + * initialization. When overriding this function make sure to invoke the + * init function of the UIComponent as well! + * + * @protected + */ + UIComponent.prototype.init = function() { + + var that = this; + var oPreprocessors = {}; + + // when auto prefixing is enabled we add the prefix + if (this.getAutoPrefixId()) { + oPreprocessors.id = function(sId) { + return that.createId(sId); + }; + } + + // create the routing + var oMetadata = this.getMetadata(), + // extend the metadata config, so that the metadata object cannot be modified afterwards + oRoutingManifestEntry = oMetadata._getRoutingSection() || {}, + oRoutingConfig = oRoutingManifestEntry.config || {}, + vRoutes = oRoutingManifestEntry.routes; + + // create the router for the component instance + if (vRoutes) { + jQuery.sap.require("sap.ui.core.routing.Router"); + var fnRouterConstructor = getConstructorFunctionFor(oRoutingConfig.routerClass || sap.ui.core.routing.Router); + this._oRouter = new fnRouterConstructor(vRoutes, oRoutingConfig, this, oRoutingManifestEntry.targets); + this._oTargets = this._oRouter.getTargets(); + this._oViews = this._oRouter.getViews(); + } else if (oRoutingManifestEntry.targets) { + jQuery.sap.require("sap.ui.core.routing.Targets"); + jQuery.sap.require("sap.ui.core.routing.Views"); + this._oViews = new sap.ui.core.routing.Views({ + component: this + }); + var fnTargetsConstructor = getConstructorFunctionFor(oRoutingConfig.targetsClass || sap.ui.core.routing.Targets); + this._oTargets = new fnTargetsConstructor({ + targets: oRoutingManifestEntry.targets, + config: oRoutingConfig, + views: this._oViews + }); + } + + // create the content + this.runAsOwner(function() { + sap.ui.base.ManagedObject.runWithPreprocessors(function() { + that.setAggregation("rootControl", that.createContent()); + }, oPreprocessors); + }); + + // only for root "views" we automatically define the target parent + var oRootControl = this.getAggregation("rootControl"); + if (oRootControl instanceof View) { + if (oRoutingConfig.targetParent === undefined) { + oRoutingConfig.targetParent = oRootControl.getId(); + } + if (this._oTargets) { + this._oTargets._setRootViewId(oRootControl.getId()); + } + } + }; + + function getConstructorFunctionFor (vRoutingObjectConstructor) { + var fnConstructor; + if (typeof vRoutingObjectConstructor === "string") { + fnConstructor = jQuery.sap.getObject(vRoutingObjectConstructor); + if (!fnConstructor) { + jQuery.sap.log.error("The specified class for router or targets '" + vRoutingObjectConstructor + "' is undefined.", this); + } + } else { + fnConstructor = vRoutingObjectConstructor; + } + + return fnConstructor; + } + + /* + * Destruction of the UIComponent + */ + UIComponent.prototype.destroy = function() { + // destroy the router + this._destroyCreatedInstances(); + // make sure that the component is destroyed properly + Component.prototype.destroy.apply(this, arguments); + }; + + UIComponent.prototype._destroyCreatedInstances = function () { + // destroy the router + if (this._oRouter) { + this._oRouter.destroy(); + delete this._oRouter; + } + + if (this._oTargets) { + this._oTargets.destroy(); + this._oTargets = null; + } + + if (this._oViews) { + this._oViews.destroy(); + this._oViews = null; + } + }; + + /** + * Returns the reference to the router instance. The passed controller or view + * have to be created in the context of a UIComponent to return the router + * instance. Otherwise this function will return undefined. + * You may define the routerClass property in the config section of the routing to make the Component create your router extension. + * eg: + * routing: { + * config: { + * routerClass : myAppNamespace.MyRouterClass + * ... + * } + * ... + * @param {sap.ui.core.mvc.View|sap.ui.core.mvc.Controller} oControllerOrView either a view or controller + * @return {sap.ui.core.routing.Router} the router instance + * @since 1.16.1 + * @public + */ + UIComponent.getRouterFor = function(oControllerOrView) { + var oView = oControllerOrView; + if (oView instanceof sap.ui.core.mvc.Controller) { + oView = oView.getView(); + } + if (oView instanceof View) { + var oComponent = sap.ui.core.Component.getOwnerComponentFor(oView); + + if (oComponent) { + return oComponent.getRouter(); + } else { + return undefined; + } + } + }; + + /** + * Returns the reference to the router instance which has been created by + * the UIComponent once the routes in the routing metadata has been defined. + * @since 1.16.1 + * @return {sap.ui.core.routing.Router} the router instance + * @public + */ + UIComponent.prototype.getRouter = function() { + return this._oRouter; + }; + + + /** + * Returns the reference to the targets instance which has been created by + * the UIComponent once the targets in the routing metadata has been defined. + * If routes have been defined, it will be the targets instance created and used by the router. + * @since 1.28 + * @return {sap.ui.core.routing.Targets} the targets instance + * @public + */ + UIComponent.prototype.getTargets = function() { + return this._oTargets; + }; + + /** + * A method to be implemented by UIComponents, returning the flag whether to prefix + * the IDs of controls automatically or not if the controls are created inside + * the {@link sap.ui.core.UIComponent#createContent} function. By default this + * feature is not activated. + * + * You can overwrite this function and return true to activate the automatic + * prefixing. + * + * @since 1.15.1 + * @return {boolean} true, if the controls IDs should be prefixed automatically + * @protected + */ + UIComponent.prototype.getAutoPrefixId = function() { + return false; + }; + + /** + * Returns an Element by its id in the context of the Component + * + * @param {string} sId + * @return {sap.ui.core.Element} Element by its id + * @public + */ + UIComponent.prototype.byId = function(sId) { + return sap.ui.getCore().byId(this.createId(sId)); + }; + + /** + * Creates an id for an Element prefixed with the component id + * + * @param {string} sId + * @return {string} prefixed id + * @public + */ + UIComponent.prototype.createId = function(sId) { + if (!this.isPrefixedId(sId)) { + // components have 3 dashes as separator, views 2 and controls/elements 1 + sId = this.getId() + "---" + sId; + } + return sId; + }; + + /** + * Checks whether the given ID is already prefixed with this View's ID + * + * @param {string} potentially prefixed id + * @return whether the ID is already prefixed + */ + UIComponent.prototype.isPrefixedId = function(sId) { + return (sId && sId.indexOf(this.getId() + "---") === 0); + }; + + /** + * The method to create the Content (UI Control Tree) of the Component. + * This method has to be overwritten in the implementation of the component + * if the root view is not declared in the component metadata. + * + * @public + */ + UIComponent.prototype.createContent = function() { + var oRootView = this.getMetadata().getRootView(); + if (oRootView) { + return sap.ui.view(oRootView); + } + return null; + }; + + /** + * Renders the the root control of the UIComponent. + * + * @param {sap.ui.core.RenderManager} oRenderManager a RenderManager instance + * @public + */ + UIComponent.prototype.render = function(oRenderManager) { + var oControl = this.getAggregation("rootControl"); + if (oControl && oRenderManager) { + oRenderManager.renderControl(oControl); + } + }; + + /** + * Returns the reference to the UIArea of the container. + * + * @return {sap.ui.core.UIArea} reference to the UIArea of the container + * @public + */ + UIComponent.prototype.getUIArea = function() { + return (this.oContainer ? this.oContainer.getUIArea() : null); + }; + + /** + * @see sap.ui.base.EventProvider#getEventingParent + * @protected + */ + UIComponent.prototype.getEventingParent = function() { + return this.getUIArea(); + }; + + /** + * Sets the reference to the ComponentContainer - later required for the + * determination of the UIArea for the UIComponent. + * + * @param {sap.ui.core.ComponentContainer} oContainer reference to a ComponentContainer + * @return {sap.ui.core.UIComponent} reference to this instance to allow method chaining + * @public + */ + UIComponent.prototype.setContainer = function(oContainer) { + this.oContainer = oContainer; + return this; + }; + + /** + * Function is called when the rendering of the Component Container is started. + * + * Applications must not call this hook method directly, it is called from ComponentContainer. + * + * Subclasses of UIComponent override this hook to implement any necessary actions before the rendering. + * + * @protected + */ + UIComponent.prototype.onBeforeRendering = function() {}; + + /** + * Function is called when the rendering of the Component Container is completed. + * + * Applications must not call this hook method directly, it is called from ComponentContainer. + * + * Subclasses of UIComponent override this hook to implement any necessary actions after the rendering. + * + * @protected + */ + UIComponent.prototype.onAfterRendering = function() {}; + + + return UIComponent; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/UIComponent.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/UIComponent.js new file mode 100644 index 0000000..9e0343c --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/UIComponent.js @@ -0,0 +1,6 @@ +/* + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./Component','./UIComponentMetadata','./mvc/View'],function(q,C,U,V){"use strict";var a=C.extend("sap.ui.core.UIComponent",{constructor:function(i,s){try{C.apply(this,arguments);}catch(e){this._destroyCreatedInstances();throw e;}},metadata:{"abstract":true,rootView:null,publicMethods:["render"],aggregations:{"rootControl":{type:"sap.ui.core.Control",multiple:false,visibility:"hidden"}},routing:{}}},U);a.prototype.init=function(){var t=this;var p={};if(this.getAutoPrefixId()){p.id=function(i){return t.createId(i);};}var m=this.getMetadata(),r=m._getRoutingSection()||{},R=r.config||{},v=r.routes;if(v){q.sap.require("sap.ui.core.routing.Router");var f=g(R.routerClass||sap.ui.core.routing.Router);this._oRouter=new f(v,R,this,r.targets);this._oTargets=this._oRouter.getTargets();this._oViews=this._oRouter.getViews();}else if(r.targets){q.sap.require("sap.ui.core.routing.Targets");q.sap.require("sap.ui.core.routing.Views");this._oViews=new sap.ui.core.routing.Views({component:this});var T=g(R.targetsClass||sap.ui.core.routing.Targets);this._oTargets=new T({targets:r.targets,config:R,views:this._oViews});}this.runAsOwner(function(){sap.ui.base.ManagedObject.runWithPreprocessors(function(){t.setAggregation("rootControl",t.createContent());},p);});var o=this.getAggregation("rootControl");if(o instanceof V){if(R.targetParent===undefined){R.targetParent=o.getId();}if(this._oTargets){this._oTargets._setRootViewId(o.getId());}}};function g(r){var c;if(typeof r==="string"){c=q.sap.getObject(r);if(!c){q.sap.log.error("The specified class for router or targets '"+r+"' is undefined.",this);}}else{c=r;}return c;}a.prototype.destroy=function(){this._destroyCreatedInstances();C.prototype.destroy.apply(this,arguments);};a.prototype._destroyCreatedInstances=function(){if(this._oRouter){this._oRouter.destroy();delete this._oRouter;}if(this._oTargets){this._oTargets.destroy();this._oTargets=null;}if(this._oViews){this._oViews.destroy();this._oViews=null;}};a.getRouterFor=function(c){var v=c;if(v instanceof sap.ui.core.mvc.Controller){v=v.getView();}if(v instanceof V){var o=sap.ui.core.Component.getOwnerComponentFor(v);if(o){return o.getRouter();}else{return undefined;}}};a.prototype.getRouter=function(){return this._oRouter;};a.prototype.getTargets=function(){return this._oTargets;};a.prototype.getAutoPrefixId=function(){return false;};a.prototype.byId=function(i){return sap.ui.getCore().byId(this.createId(i));};a.prototype.createId=function(i){if(!this.isPrefixedId(i)){i=this.getId()+"---"+i;}return i;};a.prototype.isPrefixedId=function(i){return(i&&i.indexOf(this.getId()+"---")===0);};a.prototype.createContent=function(){var r=this.getMetadata().getRootView();if(r){return sap.ui.view(r);}return null;};a.prototype.render=function(r){var c=this.getAggregation("rootControl");if(c&&r){r.renderControl(c);}};a.prototype.getUIArea=function(){return(this.oContainer?this.oContainer.getUIArea():null);};a.prototype.getEventingParent=function(){return this.getUIArea();};a.prototype.setContainer=function(c){this.oContainer=c;return this;};a.prototype.onBeforeRendering=function(){};a.prototype.onAfterRendering=function(){};return a;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/UIComponentMetadata-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/UIComponentMetadata-dbg.js new file mode 100644 index 0000000..95dba85 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/UIComponentMetadata-dbg.js @@ -0,0 +1,155 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides class sap.ui.core.ComponentMetadata +sap.ui.define(['jquery.sap.global', './ComponentMetadata'], + function(jQuery, ComponentMetadata) { + "use strict"; + + + /** + * Creates a new metadata object for a UIComponent subclass. + * + * @param {string} sClassName fully qualified name of the class that is described by this metadata object + * @param {object} oStaticInfo static info to construct the metadata from + * + * @experimental Since 1.15.1. The Component concept is still under construction, so some implementation details can be changed in future. + * @class + * @author SAP SE + * @version 1.28.5 + * @since 1.15.1 + * @alias sap.ui.core.UIComponentMetadata + */ + var UIComponentMetadata = function(sClassName, oClassInfo) { + + // call super constructor + ComponentMetadata.apply(this, arguments); + + }; + + //chain the prototypes + UIComponentMetadata.prototype = jQuery.sap.newObject(ComponentMetadata.prototype); + + UIComponentMetadata.preprocessClassInfo = function(oClassInfo) { + // if the component is a string we convert this into a "_src" metadata entry + // the specific metadata object can decide to support this or gracefully ignore it + // basically the ComponentMetadata makes use of this feature + if (oClassInfo && typeof oClassInfo.metadata === "string") { + oClassInfo.metadata = { + _src: oClassInfo.metadata + }; + } + return oClassInfo; + }; + + UIComponentMetadata.prototype.applySettings = function(oClassInfo) { + + ComponentMetadata.prototype.applySettings.call(this, oClassInfo); + + // if the root view is a string we convert it into a view + // configuration object and assume that it is a XML view + var oUI5Manifest = this._oStaticInfo.manifest["sap.ui5"]; + if (oUI5Manifest && typeof oUI5Manifest.rootView === "string") { + oUI5Manifest.rootView = { + viewName: oUI5Manifest.rootView, + type: sap.ui.core.mvc.ViewType.XML + }; + } + + }; + + /** + * Returns the root view of the component. + * @param {boolean} [bDoNotMerge] true, to return only the local root view config + * @return {object} root view as configuration object or null ({@link sap.ui.view}) + * @protected + * @since 1.15.1 + * @experimental Since 1.15.1. Implementation might change. + * @deprecated Since 1.27.1. Please use the sap.ui.core.ComponentMetadata#getManifest + */ + UIComponentMetadata.prototype.getRootView = function(bDoNotMerge) { + return this._getAndMergeEntry(bDoNotMerge, "rootView", "getRootView"); + }; + + /** + * Returns the routing section. + * @return {object} routing section + * @private + */ + UIComponentMetadata.prototype._getRoutingSection = function(bDoNotMerge) { + return this._getAndMergeEntry(bDoNotMerge, "routing", "_getRoutingSection"); + }; + + + /** + * Returns the routing configuration. + * @return {object} routing configuration + * @private + * @since 1.16.1 + * @experimental Since 1.16.1. Implementation might change. + * @deprecated Since 1.27.1. Please use the sap.ui.core.ComponentMetadata#getManifest + */ + UIComponentMetadata.prototype.getRoutingConfig = function(bDoNotMerge) { + var oRoutingSection = this._getRoutingSection(bDoNotMerge); + return oRoutingSection && oRoutingSection.config; + }; + + /** + * Returns the array of routes. If not defined the array is undefined. + * @return {array} routes + * @private + * @since 1.16.1 + * @experimental Since 1.16.1. Implementation might change. + * @deprecated Since 1.27.1. Please use the sap.ui.core.ComponentMetadata#getManifest + */ + UIComponentMetadata.prototype.getRoutes = function(bDoNotMerge) { + var oRoutingSection = this._getRoutingSection(bDoNotMerge); + return oRoutingSection && oRoutingSection.routes; + }; + + + /** + * Returns the config entry and merges it if doNotMerge is false. + * @param bDoNotMerge true = merge with parent + * @param sEntry entry in the manifest + * @param sFunctionName getter function of the parent + * @returns {null|*} + * @private + */ + UIComponentMetadata.prototype._getAndMergeEntry = function(bDoNotMerge, sEntry, sFunctionName) { + var oParent, + oUI5Manifest = this.getManifestEntry("sap.ui5"), + mObject = jQuery.extend(true, {}, oUI5Manifest && oUI5Manifest[sEntry]); + + if (!bDoNotMerge && (oParent = this.getParent()) instanceof UIComponentMetadata) { + // merge the root view object if defined via parameter + mObject = jQuery.extend(true, {}, oParent[sFunctionName](bDoNotMerge), mObject); + } + + // in case of no root view is defined the object is empty + return jQuery.isEmptyObject(mObject) ? null : mObject; + }; + + /** + * Converts the legacy metadata into the new manifest format + * + * @private + */ + UIComponentMetadata.prototype._convertLegacyMetadata = function(oStaticInfo, oManifest) { + ComponentMetadata.prototype._convertLegacyMetadata.call(this, oStaticInfo, oManifest); + + // add the old information on component metadata to the manifest info + // if no manifest entry exists otherwise the metadata entry will be + // ignored by the converter + var oUI5Manifest = oManifest["sap.ui5"]; + oUI5Manifest["rootView"] = oUI5Manifest["rootView"] || oStaticInfo["rootView"]; + oUI5Manifest["routing"] = oUI5Manifest["routing"] || oStaticInfo["routing"]; + + }; + + return UIComponentMetadata; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/UIComponentMetadata.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/UIComponentMetadata.js new file mode 100644 index 0000000..07ee55c --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/UIComponentMetadata.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./ComponentMetadata'],function(q,C){"use strict";var U=function(c,o){C.apply(this,arguments);};U.prototype=q.sap.newObject(C.prototype);U.preprocessClassInfo=function(c){if(c&&typeof c.metadata==="string"){c.metadata={_src:c.metadata};}return c;};U.prototype.applySettings=function(c){C.prototype.applySettings.call(this,c);var u=this._oStaticInfo.manifest["sap.ui5"];if(u&&typeof u.rootView==="string"){u.rootView={viewName:u.rootView,type:sap.ui.core.mvc.ViewType.XML};}};U.prototype.getRootView=function(d){return this._getAndMergeEntry(d,"rootView","getRootView");};U.prototype._getRoutingSection=function(d){return this._getAndMergeEntry(d,"routing","_getRoutingSection");};U.prototype.getRoutingConfig=function(d){var r=this._getRoutingSection(d);return r&&r.config;};U.prototype.getRoutes=function(d){var r=this._getRoutingSection(d);return r&&r.routes;};U.prototype._getAndMergeEntry=function(d,e,f){var p,u=this.getManifestEntry("sap.ui5"),o=q.extend(true,{},u&&u[e]);if(!d&&(p=this.getParent())instanceof U){o=q.extend(true,{},p[f](d),o);}return q.isEmptyObject(o)?null:o;};U.prototype._convertLegacyMetadata=function(s,m){C.prototype._convertLegacyMetadata.call(this,s,m);var u=m["sap.ui5"];u["rootView"]=u["rootView"]||s["rootView"];u["routing"]=u["routing"]||s["routing"];};return U;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ValueStateSupport-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ValueStateSupport-dbg.js new file mode 100644 index 0000000..77ae903 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ValueStateSupport-dbg.js @@ -0,0 +1,125 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides helper class ValueStateSupport +sap.ui.define(['jquery.sap.global'], + function(jQuery) { + "use strict"; + + + /** + * Helper functionality for value state support. + * + * @author SAP SE + * @version 1.28.5 + * @public + * @namespace sap.ui.core.ValueStateSupport + */ + var ValueStateSupport = {}; + var mTexts = null; + + + var ensureTexts = function() { + if (!mTexts) { // initialize texts if required + mTexts = {}; + var rb = sap.ui.getCore().getLibraryResourceBundle("sap.ui.core"); + mTexts[sap.ui.core.ValueState.Error] = rb.getText("VALUE_STATE_ERROR"); + mTexts[sap.ui.core.ValueState.Warning] = rb.getText("VALUE_STATE_WARNING"); + mTexts[sap.ui.core.ValueState.Success] = rb.getText("VALUE_STATE_SUCCESS"); + } + }; + + + /** + * Appends a generic success, warning or error message to the given tooltip text if the given Element + * has a property "valueState" with one of these three states. + * + * @param {sap.ui.core.Element} oElement the Element of which the tooltip needs to be modified + * @param {string} sTooltipText the original tooltip text (may be null) + * @returns {string} the given text, with appended success/warning/error text, if appropriate + * + * @public + * @name sap.ui.core.ValueStateSupport.enrichTooltip + * @function + */ + ValueStateSupport.enrichTooltip = function(oElement, sTooltipText) { + jQuery.sap.assert(oElement instanceof sap.ui.core.Element, "oElement must be an Element"); + + if (!sTooltipText && oElement.getTooltip()) { + return undefined; // this means there is no tooltip text configured, but a tooltip object like a RichTooltip + } + + var sText = sap.ui.core.ValueStateSupport.getAdditionalText(oElement); + if (sText) { + return (sTooltipText ? sTooltipText + " - " : "") + sText; + } + + return sTooltipText; // when there is no value state + }; + + + /** + * Returns a generic success, warning or error message if the given Element + * has a property "valueState" with one of these three states or the given ValueState + * represents one of these states. + * + * @param {sap.ui.core.Element|sap.ui.core.ValueState} vValue the Element of which the valueState needs to be checked, or the ValueState explicitly + * @returns {string} the success/warning/error text, if appropriate; otherwise null + * + * @public + * @name sap.ui.core.ValueStateSupport.getAdditionalText + * @function + */ + ValueStateSupport.getAdditionalText = function(vValue) { + var sState = null; + + if (vValue.getValueState) { + sState = vValue.getValueState(); + } else if (sap.ui.core.ValueState[vValue]) { + sState = vValue; + } + + if (sState && (sState != sap.ui.core.ValueState.None)) { // only for one of the three interesting state, not for the default + ensureTexts(); + return mTexts[sState]; + } + + return null; + }; + + /** + * Returns a ValueState object based on the given integer value + * + * 0 : ValueState.None + * 1 : ValueState.Warning + * 2 : ValueState.Success + * 3 : ValueState.Error + * + * @param {int} iState the state as an integer + * @return {sap.ui.core.ValueState} the corresponding ValueState object + * @static + * @public + * @name sap.ui.core.ValueStateSupport.formatValueState + * @function + * @since 1.25.0 + */ + ValueStateSupport.formatValueState = function(iState) { + switch (iState) { + case 1: + return sap.ui.core.ValueState.Warning; + case 2: + return sap.ui.core.ValueState.Success; + case 3: + return sap.ui.core.ValueState.Error; + default: + return sap.ui.core.ValueState.None; + } + }; + + + return ValueStateSupport; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/ValueStateSupport.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/ValueStateSupport.js new file mode 100644 index 0000000..6731f5f --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/ValueStateSupport.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global'],function(q){"use strict";var V={};var t=null;var e=function(){if(!t){t={};var r=sap.ui.getCore().getLibraryResourceBundle("sap.ui.core");t[sap.ui.core.ValueState.Error]=r.getText("VALUE_STATE_ERROR");t[sap.ui.core.ValueState.Warning]=r.getText("VALUE_STATE_WARNING");t[sap.ui.core.ValueState.Success]=r.getText("VALUE_STATE_SUCCESS");}};V.enrichTooltip=function(E,T){if(!T&&E.getTooltip()){return undefined;}var s=sap.ui.core.ValueStateSupport.getAdditionalText(E);if(s){return(T?T+" - ":"")+s;}return T;};V.getAdditionalText=function(v){var s=null;if(v.getValueState){s=v.getValueState();}else if(sap.ui.core.ValueState[v]){s=v;}if(s&&(s!=sap.ui.core.ValueState.None)){e();return t[s];}return null;};V.formatValueState=function(s){switch(s){case 1:return sap.ui.core.ValueState.Warning;case 2:return sap.ui.core.ValueState.Success;case 3:return sap.ui.core.ValueState.Error;default:return sap.ui.core.ValueState.None;}};return V;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/VariantLayoutData-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/VariantLayoutData-dbg.js new file mode 100644 index 0000000..5ab6934 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/VariantLayoutData-dbg.js @@ -0,0 +1,47 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +// Provides control sap.ui.core.VariantLayoutData. +sap.ui.define(['jquery.sap.global', './LayoutData', './library'], + function(jQuery, LayoutData, library) { + "use strict"; + + + + /** + * Constructor for a new VariantLayoutData. + * + * @param {string} [sId] id for the new control, generated automatically if no id is given + * @param {object} [mSettings] initial settings for the new control + * + * @class + * Allows to add multiple LayoutData to one control in case that a easy switch of layouts (e.g. in a Form) is needed. + * @extends sap.ui.core.LayoutData + * @version 1.28.5 + * + * @constructor + * @public + * @since 1.9.2 + * @alias sap.ui.core.VariantLayoutData + * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel + */ + var VariantLayoutData = LayoutData.extend("sap.ui.core.VariantLayoutData", /** @lends sap.ui.core.VariantLayoutData.prototype */ { metadata : { + + library : "sap.ui.core", + aggregations : { + + /** + * Allows multiple LayoutData. + */ + multipleLayoutData : {type : "sap.ui.core.LayoutData", multiple : true, singularName : "multipleLayoutData"} + } + }}); + + + + return VariantLayoutData; + +}, /* bExport= */ true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/VariantLayoutData.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/VariantLayoutData.js new file mode 100644 index 0000000..e4cc288 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/VariantLayoutData.js @@ -0,0 +1,6 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ +sap.ui.define(['jquery.sap.global','./LayoutData','./library'],function(q,L,l){"use strict";var V=L.extend("sap.ui.core.VariantLayoutData",{metadata:{library:"sap.ui.core",aggregations:{multipleLayoutData:{type:"sap.ui.core.LayoutData",multiple:true,singularName:"multipleLayoutData"}}}});return V;},true); diff --git a/DVHMA-OpenUI5/www/resources/sap/ui/core/XMLTemplateProcessor-dbg.js b/DVHMA-OpenUI5/www/resources/sap/ui/core/XMLTemplateProcessor-dbg.js new file mode 100644 index 0000000..24f4f48 --- /dev/null +++ b/DVHMA-OpenUI5/www/resources/sap/ui/core/XMLTemplateProcessor-dbg.js @@ -0,0 +1,504 @@ +/*! + * SAP UI development toolkit for HTML5 (SAPUI5/OpenUI5) + * (c) Copyright 2009-2015 SAP SE or an SAP affiliate company. + * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. + */ + +/*global HTMLTemplateElement, DocumentFragment*/ + +sap.ui.define(['jquery.sap.global', './mvc/View'], + function(jQuery, View) { + "use strict"; + + + + + + function parseScalarType(sType, sValue, sName, oController) { + // check for a binding expression (string) + var oBindingInfo = sap.ui.base.ManagedObject.bindingParser(sValue, oController, true); + if ( oBindingInfo && typeof oBindingInfo === "object" ) { + return oBindingInfo; + } + + var vValue = sValue = oBindingInfo || sValue; // oBindingInfo could be an unescaped string + var oType = sap.ui.base.DataType.getType(sType); + if (oType) { + if (oType instanceof sap.ui.base.DataType) { + vValue = oType.parseValue(sValue); + } + // else keep original sValue (e.g. for enums) + } else { + throw new Error("Property " + sName + " has unknown type " + sType); + } + + // Note: to avoid double resolution of binding expressions, we have to escape string values once again + return typeof vValue === "string" ? sap.ui.base.ManagedObject.bindingParser.escape(vValue) : vValue; + } + + function localName(xmlNode) { + // localName for standard browsers, baseName for IE, nodeName in the absence of namespaces + return xmlNode.localName || xmlNode.baseName || xmlNode.nodeName; + } + + /** + * The XMLTemplateProcessor class is used to load and process Control trees in XML-declarative notation. + * + * @namespace + * @alias sap.ui.core.XMLTemplateProcessor + */ + var XMLTemplateProcessor = {}; + + + + /** API METHODS ***/ + + + /** + * Loads an XML template using the module loading mechanism and returns the root XML element of the XML document. + * + * @param {string} sTemplateName + * @param {string} [sExtension] + * @return {Element} an XML document root element + */ + XMLTemplateProcessor.loadTemplate = function(sTemplateName, sExtension) { + var sResourceName = jQuery.sap.getResourceName(sTemplateName, "." + (sExtension || "view") + ".xml"); + return jQuery.sap.loadResource(sResourceName).documentElement; // result is the document node + }; + + + /** + * Parses only the attributes of the XML root node (View!) and fills them into the given settings object. + * Children are parsed later on after the controller has been set. + * TODO cannot handle event handlers in the root node + * + * @param {Element} xmlNode the XML element representing the View + * @param {sap.ui.core.ManagedObject} oView the View to consider when parsing the attributes + * @param {object} mSettings the settings object which should be enriched with the suitable attributes from the XML node + * @return undefined + */ + XMLTemplateProcessor.parseViewAttributes = function(xmlNode, oView, mSettings) { + + var mAllProperties = oView.getMetadata().getAllProperties(); + for ( var i = 0; i < xmlNode.attributes.length; i++) { + var attr = xmlNode.attributes[i]; + if (attr.name === 'controllerName') { + oView._controllerName = attr.value; + } else if (attr.name === 'resourceBundleName') { + oView._resourceBundleName = attr.value; + } else if (attr.name === 'resourceBundleUrl') { + oView._resourceBundleUrl = attr.value; + } else if (attr.name === 'resourceBundleLocale') { + oView._resourceBundleLocale = attr.value; + } else if (attr.name === 'resourceBundleAlias') { + oView._resourceBundleAlias = attr.value; + } else if (attr.name === 'class') { + oView.addStyleClass(attr.value); + } else if (!mSettings[attr.name] && mAllProperties[attr.name]) { + mSettings[attr.name] = parseScalarType(mAllProperties[attr.name].type, attr.value, attr.name, oView._oContainingView.oController); + } + } + }; + + + /** + * Parses a complete XML template definition (full node hierarchy) + * + * @param {Element} xmlNode the XML element representing the View/Fragment + * @param {sap.ui.core.ManagedObject} oView the View/Fragment which corresponds to the parsed XML + * @return an array containing Controls and/or plain HTML element strings + */ + XMLTemplateProcessor.parseTemplate = function(xmlNode, oView) { + + var aResult = []; + var sCurrentName = oView.sViewName || oView._sFragmentName; // TODO: should Fragments and Views be separated here? + if (!sCurrentName) { + var oTopView = oView; + var iLoopCounter = 0; // Make sure there are not infinite loops + while (++iLoopCounter < 1000 && oTopView && oTopView !== oTopView._oContainingView) { + oTopView = oTopView._oContainingView; + } + sCurrentName = oTopView.sViewName; + } + + if (oView.isSubView()) { + parseNode(xmlNode, true); + } else { + parseChildren(xmlNode); + } + + return aResult; + + /** + * Parses an XML node that might represent a UI5 control or simple XHTML. + * XHTML will be added to the aResult array as a sequence of strings, + * UI5 controls will be instantiated and added as controls + * + * @param xmlNode the XML node to parse + * @param bRoot whether this node is the root node + * @return undefined but the aResult array is filled + */ + function parseNode(xmlNode, bRoot, bIgnoreToplevelTextNodes) { + + if ( xmlNode.nodeType === 1 /* ELEMENT_NODE */ ) { + + var sLocalName = localName(xmlNode); + if (xmlNode.namespaceURI === "http://www.w3.org/1999/xhtml" || xmlNode.namespaceURI === "http://www.w3.org/2000/svg") { + // write opening tag + aResult.push("<" + sLocalName + " "); + // write attributes + for (var i = 0; i < xmlNode.attributes.length; i++) { + var attr = xmlNode.attributes[i]; + var value = attr.value; + if (attr.name === "id") { + value = oView._oContainingView.createId(value); + } + aResult.push(attr.name + "=\"" + jQuery.sap.encodeHTML(value) + "\" "); + } + if ( bRoot === true ) { + aResult.push("data-sap-ui-preserve" + "=\"" + oView.getId() + "\" "); + } + aResult.push(">"); + + // write children + if (window.HTMLTemplateElement && xmlNode instanceof HTMLTemplateElement && xmlNode.content instanceof DocumentFragment) { + //