UNPKG

@openui5/sap.ui.core

Version:

OpenUI5 Core Library sap.ui.core

189 lines (156 loc) 5 kB
/*! * OpenUI5 * (c) Copyright 2009-2021 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([ './Control', './theming/Parameters', "./LocalBusyIndicatorRenderer", './library' // ensure loading of types ], function(Control, Parameters, LocalBusyIndicatorRenderer) { "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.87.1 * * @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'} } }, renderer: LocalBusyIndicatorRenderer }); 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 = fnAnimate.bind(this); }; LocalBusyIndicator.prototype.exit = function() { clearTimeout(this._delayedCallId); delete this._delayedCallId; }; LocalBusyIndicator.prototype.onThemeChanged = function(oEvent) { if (this.getDomRef()) { this.invalidate(); } }; LocalBusyIndicator.prototype.onAfterRendering = function() { var w = parseInt(this.getWidth()); var h = parseInt(this.getHeight()); 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 = setTimeout(this._animateProxy, 0); }; 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 = setTimeout(this._animateProxy, 1200); } }; return LocalBusyIndicator; });