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);