Label: Defined based on a time period

Principle:

Label changes mainly according to a period. This can be populated via indexes or item lines or the built-in period division functionality.

Script:

var transformSiteLabel = function(strSite){
	if(strSite != null){
		strSite = strSite.toUpperCase();
		if(strSite.length > 3)
			return strSite.substr(0, 3);
		return strSite;	
	} 
	return "";
};
var getDateSplit = function(strDate){
	var result = [];
	var res = strDate.split("/");
	
	if(res.length == 3){
		var year = res[2];
		if(res[2].length == 4)
			year = res[2].substr(2,2);
		result.push(res[1]);
		result.push(year);
	}
	return result;
};
var getMonthYear = function(strDate){
	var res = getDateSplit(strDate);
	if(res.length == 2)
		return res[0] + "."+ res[1];
	return "";
};
var getMonthYearPeriod = function(strDateStart, strDateEnd){
	var resStart = getDateSplit(strDateStart);
	var resEnd = getDateSplit(strDateEnd);
	if(resStart.length == 2 && resEnd.length == 2)
	{
		if(resStart[0] == resEnd[0])
			return resStart[0] + "." + resEnd[1];
		else
			return resStart[0] + "-"+ resEnd[0] + "." + resEnd[1];
	}
	return "";
};
var addToMonth = function(month, nbInc){
	var res = parseInt(month);
	if(res > 0){
		res += nbInc;
		if(res > 12)
			res = res % 12;
		var resStr = res + "";
		if(resStr.length > 1)
			return resStr;
		else 
			return "0" + resStr;
	}
	return "00";
}
var sortDate = function(pDates){
	var dates = [];
	for(var i=0;i < pDates.length;i++){
		var pDate = pDates[i];
		var pSlipDate = getDateSplit(pDate);
		var found = false;
		for(var j=0;j < dates.length;j++){
			var jSplitDate = getDateSplit(dates[j]);
			if((pSlipDate[1] < jSplitDate[1]) || (pSlipDate[1] == jSplitDate[1] && pSlipDate[0] < jSplitDate[0]))
			{
				dates.splice(j,0,pDate);
				found = true;
				break;
			}
		}
		if(!found)
			dates.push(pDate);
	}
	return dates;
}
/**
* pParameters : List des indexInfos sans les groupes
**/
var getSiteLabel = function(pParameters){
	var textSite = "";
	if(IS_ARTICLE){
		var articleLine = getArticleLine(pParameters, "ARTICLES_INDEX", ID_UNIT);
		if(articleLine != null && articleLine.indexInfos != null){
			var siteInfo = getIndexFromArticleLine(articleLine, "SITE_ARTICLES_INDEX");
			if(siteInfo != null)
				textSite = transformSiteLabel(getTextFromIndexInfo(siteInfo));
		}
		if(textSite == ""){
			var siteGeneralIndex = getFirstIndexFromID(pParameters, "SITE_INDEX");
			if(siteGeneralIndex != null)
				return transformSiteLabel(getTextFromIndexInfo(siteGeneralIndex));
		}else
			return textSite;
	}else{
		var articleLines = getArticleLines(pParameters, "ARTICLES_INDEX");
		if(articleLines != null && articleLines.length > 0){
			var sites = [];
			for(var i=0;i < articleLines.length;i++){
				var siteInfo = getIndexFromArticleLine(articleLines[i], "SITE_ARTICLES_INDEX");
				if(siteInfo != null){
					textSite = transformSiteLabel(getTextFromIndexInfo(siteInfo));
					if(textSite != "" && sites.indexOf(textSite) == -1)
						sites.push(textSite);
				}
			}
			if(sites.length > 2)
				return "ALL";
			else{
				textSite = "";
				for(var i=0;i < sites.length;i++){
					textSite += sites[i];
					if(i + 1 < sites.length)
						textSite += " ";
				}
			}
		}else{
			var siteGeneralIndex = getFirstIndexFromID(pParameters, "SITE_INDEX");
			if(siteGeneralIndex != null)
				return transformSiteLabel(getTextFromIndexInfo(siteGeneralIndex));
		}
	}
	return textSite;
};
var getDateLabel = function(pParameters){
	var textDate = "";
	if(IS_ARTICLE){
		var articleLine = getArticleLine(pParameters, "ARTICLES_INDEX", ID_UNIT);
		if(articleLine != null && articleLine.indexInfos != null && articleLine.indexInfos.length > 0){
			var dateInfo = getIndexFromArticleLine(articleLine, "DATE_ARTICLES_INDEX");
			if(dateInfo != null)
				textDate = getMonthYear(getTextFromIndexInfo(dateInfo));
		}
		if(textDate == ""){
			var dateGeneralIndex = getFirstIndexFromID(pParameters,"DATE_INDEX");
			if(dateGeneralIndex != null)
				return getMonthYear(getTextFromIndexInfo(dateGeneralIndex));
		}else
			return textDate;
	}else if(IS_REPARTITION && DATE_START_PERIOD_DIVISION != "" && ID_GENERATION_DIVISION > 0){
		var dateSplit = getDateSplit(DATE_START_PERIOD_DIVISION);
		if(dateSplit.length == 2){
			var month = addToMonth(dateSplit[0], ID_GENERATION_DIVISION-1);
			return month + "." + dateSplit[1];
		}
	}else{
		var articleLines = getArticleLines(pParameters, "ARTICLES_INDEX");
		if(articleLines != null && articleLines.length > 0){
			var dates = [];
			for(var i=0;i < articleLines.length;i++){
				var dateInfo = getIndexFromArticleLine(articleLines[i], "DATE_ARTICLES_INDEX");
				if(dateInfo != null){
					textDate = getTextFromIndexInfo(dateInfo);
					if(textDate != "" && dates.indexOf(textDate) == -1)
						dates.push(textDate);
				}
			}
			if(dates.length > 1)
			{
				var sortedDates = sortDate(dates);
				return getMonthYearPeriod(sortedDates[0], sortedDates[sortedDates.length-1]);
			}
			else if(dates.length > 0)
				return getMonthYear(dates[0]);
		}
		
		var dateStartPeriodIndex = getFirstIndexFromID(pParameters,"DEBUT_PERIODE_INDEX");
		var dateEndPeriodIndex = getFirstIndexFromID(pParameters,"FIN_PERIODE_INDEX");
		if(dateStartPeriodIndex != null && dateEndPeriodIndex != null){
			var textStartDate = getTextFromIndexInfo(dateStartPeriodIndex);
			var textEndDate = getTextFromIndexInfo(dateEndPeriodIndex);
			if(textStartDate != "" && textEndDate !=  "")
				return getMonthYearPeriod(textStartDate, textEndDate);
		}
		var dateGeneralIndex = getFirstIndexFromID(pParameters,"DATE_INDEX");
		if(dateGeneralIndex != null)
			return getMonthYear(getTextFromIndexInfo(dateGeneralIndex));
	}
	return textDate;
};
return getSiteLabel(pParameters) + " " + THIRDPART + " " + getDateLabel(pParameters);