@openui5/sap.m
Version:
OpenUI5 UI Library sap.m
149 lines (119 loc) • 3.94 kB
JavaScript
/*!
* UI development toolkit for HTML5 (OpenUI5)
* (c) Copyright 2009-2022 SAP SE or an SAP affiliate company.
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
*/
sap.ui.define(["sap/ui/core/library"],
function(coreLibrary) {
"use strict";
// shortcut for sap.ui.core.ValueState
var ValueState = coreLibrary.ValueState;
/**
* ProgressIndicator renderer.
* @namespace
*/
var ProgressIndicatorRenderer = {};
/**
* 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
*/
ProgressIndicatorRenderer.render = function(oRm, oControl) {
var fPercentValue = oControl.getPercentValue(),
iWidthControl = oControl.getWidth(),
iHeightControl = oControl.getHeight(),
sPercentValueClassName = oControl._getCSSClassByPercentValue(fPercentValue),
sTextValue = oControl.getDisplayValue(),
bShowText = oControl.getShowValue(),
sState = oControl.getState(),
sTextDirectionLowerCase = oControl.getTextDirection().toLowerCase(),
sControlId = oControl.getId();
// PI container
oRm.write("<div");
oRm.writeControlData(oControl);
oRm.addClass("sapMPI");
oRm.addClass(sPercentValueClassName);
oRm.addStyle("width", iWidthControl);
if (iHeightControl) {
oRm.addStyle("height", iHeightControl);
}
if (oControl.getEnabled()) {
oRm.writeAttribute('tabIndex', '-1');
} else {
oRm.addClass("sapMPIBarDisabled");
}
if (oControl.getDisplayOnly()) {
oRm.addClass("sapMPIDisplayOnly");
}
oRm.writeClasses();
oRm.writeStyles();
oRm.writeAccessibilityState(oControl, {
role: "progressbar",
valuemin: 0,
valuenow: fPercentValue,
valuemax: 100,
valuetext: oControl._getAriaValueText({
sText: sTextValue,
fPercent: fPercentValue
})
});
if (oControl.getTooltip_AsString()) {
oRm.writeAttributeEscaped("title", oControl.getTooltip_AsString());
}
oRm.write(">");
// PI progress bar
oRm.write("<div");
oRm.addClass("sapMPIBar");
switch (sState) {
case ValueState.Warning:
oRm.addClass("sapMPIBarCritical");
break;
case ValueState.Error:
oRm.addClass("sapMPIBarNegative");
break;
case ValueState.Success:
oRm.addClass("sapMPIBarPositive");
break;
case ValueState.Information:
oRm.addClass("sapMPIBarInformation");
break;
default:
oRm.addClass("sapMPIBarNeutral");
break;
}
oRm.writeClasses();
oRm.writeAttribute("id", sControlId + "-bar");
oRm.writeAttribute("style", "flex-basis:" + fPercentValue + "%");
oRm.write(">");
// PI text in progress bar
ProgressIndicatorRenderer._renderDisplayText(oRm, sTextDirectionLowerCase, "Left", sControlId);
if (bShowText) {
oRm.writeEscaped(sTextValue);
}
oRm.write("</span>");
oRm.write("</div>"); // div element pi bar
// PI remaining bar div
oRm.write("<div");
oRm.addClass("sapMPIBarRemaining");
oRm.writeAttribute("id", sControlId + "-remainingBar");
oRm.writeClasses();
oRm.write(">");
// PI text in remaining bar
ProgressIndicatorRenderer._renderDisplayText(oRm, sTextDirectionLowerCase, "Right", sControlId);
if (bShowText) {
oRm.writeEscaped(sTextValue);
}
oRm.write("</span>");
oRm.write("</div>"); // PI Remaining bar div end
oRm.write("</div>"); // PI container end
};
ProgressIndicatorRenderer._renderDisplayText = function(oRm, sTextDirectionLowerCase, sTextAlign, oControlId){
oRm.write("<span class='sapMPIText sapMPIText" + sTextAlign + "' id='" + oControlId + "-text" + sTextAlign + "'");
if (sTextDirectionLowerCase !== "inherit") {
oRm.writeAttribute("dir", sTextDirectionLowerCase);
}
oRm.write('>');
};
return ProgressIndicatorRenderer;
}, /* bExport= */ true);