@openui5/sap.m
Version:
OpenUI5 UI Library sap.m
91 lines (77 loc) • 3.73 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/unified/CalendarLegendRenderer', 'sap/ui/core/Renderer'],
function(CalendarLegendRenderer, Renderer) {
"use strict";
/**
* <code>PlanningCalendarLegend</code> renderer.
* @namespace
*/
var PlanningCalendarLegendRenderer = Renderer.extend(CalendarLegendRenderer);
/**
* Renders a header for the <code>items</code> list.
* @param {sap.ui.core.RenderManager} oRm the RenderManager that can be used for writing to the render output buffer
* @param {sap.ui.unified.CalendarLegend} oLeg an object representation of the legend that should be rendered
* @override
*/
PlanningCalendarLegendRenderer.renderItemsHeader = function(oRm, oLeg) {
var sItemsHeader = oLeg.getItemsHeader();
if (sItemsHeader && (oLeg.getItems().length || oLeg.getStandardItems().length)) {
this._renderItemsHeader(oRm, sItemsHeader);
}
};
/**
* Renders a header for the <code>appointmentItems</code> list.
* @param {sap.ui.core.RenderManager} oRm the RenderManager that can be used for writing to the render output buffer
* @param {sap.ui.unified.CalendarLegend} oLeg an object representation of the legend that should be rendered
*/
PlanningCalendarLegendRenderer.renderAppointmentsItemsHeader = function(oRm, oLeg) {
var sAppointmentItemsHeader = oLeg.getAppointmentItemsHeader();
if (sAppointmentItemsHeader && oLeg.getAppointmentItems().length) {
this._renderItemsHeader(oRm, sAppointmentItemsHeader);
} else if (oLeg.getAppointmentItems().length && (oLeg.getItems().length || oLeg.getStandardItems().length)) {
//the upper list has items, and the lower list too, but the second header is an empty string
//and we still need a delimiter
oRm.write("<hr>");
}
};
/**
* Renders the <code>items</code> list header.
* @param {sap.ui.core.RenderManager} oRm the RenderManager that can be used for writing to the render output buffer
* @param {string} sHeaderText Item's header text
* @private
*/
PlanningCalendarLegendRenderer._renderItemsHeader = function(oRm, sHeaderText) {
oRm.write("<div class='sapMPlanCalLegendHeader'>");
oRm.writeEscaped(sHeaderText);
oRm.write("</div><hr>");
};
/**
* Renders additional content after the <code>items</code> list - a second list for the <code>appointmentItems</code> with a header.
* @param {sap.ui.core.RenderManager} oRm the RenderManager that can be used for writing to the render output buffer
* @param {sap.ui.unified.CalendarLegend} oLeg an object representation of the legend that should be rendered
* @override
*/
PlanningCalendarLegendRenderer.renderAdditionalContent = function(oRm, oLeg) {
var aAppointmentItems = oLeg.getAppointmentItems(),
i,
sColumnWidth;
this.renderAppointmentsItemsHeader(oRm, oLeg);
oRm.write("<div");
oRm.addClass("sapUiUnifiedLegendItems");
oRm.writeClasses();
sColumnWidth = oLeg.getColumnWidth();
oRm.writeAttribute("style", "column-width:" + sColumnWidth + ";-moz-column-width:" + sColumnWidth + ";-webkit-column-width:" + sColumnWidth + ";");
oRm.writeStyles();
oRm.write(">");
// rendering special day and colors
for (i = 0; i < aAppointmentItems.length; i++) {
this.renderLegendItem(oRm, "sapUiCalLegDayType" + oLeg._getItemType(aAppointmentItems[i], aAppointmentItems).slice(4), aAppointmentItems[i], ["sapUiUnifiedLegendSquareColor", "sapMPlanCalLegendAppCircle"]);
}
oRm.write("</div>");
};
return PlanningCalendarLegendRenderer;
}, /* bExport= */ true);