@openui5/sap.m
Version:
OpenUI5 UI Library sap.m
110 lines (85 loc) • 2.66 kB
JavaScript
/*!
* OpenUI5
* (c) Copyright 2009-2023 SAP SE or an SAP affiliate company.
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
*/
/**
* SemanticPage base classes
*
* @namespace
* @name sap.m.semantic
*/
// Provides class sap.m.semantic.SegmentedContainer
sap.ui.define(['sap/m/semantic/Segment', 'sap/ui/base/Object', "sap/base/Log"], function(Segment, BaseObject, Log) {
"use strict";
/**
* Constructor for an sap.m.semantic.SegmentedContainer.
*
* @class text
* @version 1.117.4
* @private
* @since 1.30.0
* @alias sap.m.semantic.SegmentedContainer
*/
var SegmentedContainer = BaseObject.extend("sap.m.semantic.SegmentedContainer", {
constructor : function(oContainer, sContainerAggregationName) {
if (!oContainer) {
Log.error("missing argumment: constructor expects a container reference", this);
return;
}
this._oContainer = oContainer;
sContainerAggregationName || (sContainerAggregationName = "content");
this._sContainerAggregationName = sContainerAggregationName;
this._aSegments = [];
},
getInterface: function() {
return this; // no facade
}
});
SegmentedContainer.prototype.addSection = function (options) {
if (!options || !options.sTag) {
Log.error("missing argumment: section options expected", this);
return;
}
if (options.aContent) {
var aContent = options.aContent;
var iLength = aContent.length;
for (var i = 0; i < iLength; i++) {
this._oContainer.addAggregation(this._sContainerAggregationName, aContent[i]);
}
}
var oSegment = new Segment(aContent, this._oContainer, this._sContainerAggregationName, options.fnSortFunction);
oSegment.sTag = options.sTag;
var aSegments = this._aSegments;
oSegment.getStartIndex = function () {
var iStartIndex = 0;
var iSectionIndex = aSegments.indexOf(this);
if (iSectionIndex > 0) {
var iPreviousSectionIndex = iSectionIndex - 1;
while (iPreviousSectionIndex >= 0) {
iStartIndex += aSegments[iPreviousSectionIndex].getContent().length;
iPreviousSectionIndex--;
}
}
return iStartIndex;
};
this._aSegments.push(oSegment);
};
SegmentedContainer.prototype.getSection = function (sTag) {
var aSegment;
this._aSegments.forEach(function(aSection) {
if (aSection.sTag === sTag) {
aSegment = aSection;
}
});
return aSegment;
};
SegmentedContainer.prototype.destroy = function (bSuppressInvalidate) {
this._oContainer.destroy(bSuppressInvalidate);
this.aSegments = null;
};
SegmentedContainer.prototype.getContainer = function () {
return this._oContainer;
};
return SegmentedContainer;
});