Name
sn_ppt_export.GeneratePPTProcessorHelper
Description
Content-Generation The purpose of this script include is to provide the helper methods for generation operation. Warning Customers should not modify this file.
Script
var GeneratePPTProcessorHelper = Class.create();
GeneratePPTProcessorHelper.prototype = {
initialize: function(baseTable, baseRecordSysID, templateRecordSysID) {
if (global.JSUtil.nil(baseTable) || global.JSUtil.nil(baseTable) || global.JSUtil.nil(baseTable))
throw new Error(gs.getMessage("Initialisation failed. For more information, check log records."));
GeneratePPTProcessorHelper.BASE_TABLE = baseTable;
GeneratePPTProcessorHelper.BASE_RECORD_SYS_ID = baseRecordSysID;
GeneratePPTProcessorHelper.TEMPLATE_RECORD_SYS_ID = templateRecordSysID;
GeneratePPTProcessorHelper.pptGeneratorUtil = new GeneratePPTUtil(templateRecordSysID);
this.data = GeneratePPTProcessorHelper.pptGeneratorUtil.getParsedDataJSONString();
this.formatters = GeneratePPTProcessorHelper.pptGeneratorUtil.getFormatterMappings();
this.stepParserObject = {
'steps': []
};
this.slideDataTracker = {};
this.directChildTable = {};
this.baseOrder = 1;
},
runCleanupStage: function() {
var stepSlideObject = {};
var stepActionObject = {};
var stepMethodCallObject = {};
for (i in this.data["pptJson"]["slideObjectArray"]) {
var tempSlide1 = this.data["pptJson"]["slideObjectArray"][i];
stepSlideObject = {
'slideNumber': tempSlide1["slideNumber"],
'actions': []
};
for (j in this.data["pptJson"]["slideObjectArray"][i]["shapeObjectArray"]) {
var checkRoadmpapFlag = false;
var checkChartFlag = false;
var checkRepeatSlideFlag = false;
var tempShapeObject1 = this.data["pptJson"]["slideObjectArray"][i]["shapeObjectArray"][j];
if (tempShapeObject1["shapeName"] == "PICTURE" && tempShapeObject1.hasOwnProperty("href")) {
var tempHrefMap1 = GeneratePPTProcessorHelper.pptGeneratorUtil.getMapFromHyperlink(tempShapeObject1["href"]);
if (tempHrefMap1.hasOwnProperty('distinctionFlag') && tempHrefMap1["distinctionFlag"] === "roadmap") {
if (!checkRoadmpapFlag) {
stepActionObject = {
'actionName': 'roadmap',
'methodCalls': []
};
checkRoadmpapFlag = true;
}
stepMethodCallObject = {
'methodName': 'deleteShape',
'parameterJSON': JSON.stringify({
'slideNumber': tempSlide1['slideNumber'],
'shapeID': tempShapeObject1['shapeID']
})
};
stepActionObject['methodCalls'].push(stepMethodCallObject);
} else if (tempHrefMap1.hasOwnProperty('distinctionFlag') && tempHrefMap1["distinctionFlag"] === "chart") {
if (!checkChartFlag) {
stepActionObject = {
'actionName': 'chart',
'methodCalls': []
};
checkChartFlag = true;
}
stepMethodCallObject = {
'methodName': 'deleteShape',
'parameterJSON': JSON.stringify({
'slideNumber': tempSlide1['slideNumber'],
'shapeID': tempShapeObject1['shapeID']
})
};
stepActionObject['methodCalls'].push(stepMethodCallObject);
}
} else if (tempShapeObject1["shapeName"] == "TEXTBOX" && tempShapeObject1.hasOwnProperty("href")) {
var hrefMap = GeneratePPTProcessorHelper.pptGeneratorUtil.getMapFromHyperlink(tempShapeObject1["href"]);
if (hrefMap.hasOwnProperty('distinctionFlag') && hrefMap["distinctionFlag"] === "repeatslidecontent") {
if (!checkRepeatSlideFlag) {
stepActionObject = {
'actionName': 'repeat_slide',
'methodCalls': []
};
checkRepeatSlideFlag = true;
}
stepMethodCallObject = {
'methodName': 'deleteShape',
'parameterJSON': JSON.stringify({
'slideNumber': tempSlide1['slideNumber'],
'shapeID': tempShapeObject1['shapeID']
})
};
stepActionObject['methodCalls'].push(stepMethodCallObject);
}
}
if (checkRoadmpapFlag || checkChartFlag || checkRepeatSlideFlag)
stepSlideObject["actions"].push(stepActionObject);
}
this.stepParserObject["steps"].push(stepSlideObject);
}
},
runRepeatSlideStage: function() {
for (var i = 0; i < this.data["pptJson"]["slideObjectArray"].length; i++) {
var slide = this.data["pptJson"]["slideObjectArray"][i];
if (!this.slideDataTracker.hasOwnProperty(slide["slideNumber"]))
this.slideDataTracker[slide["slideNumber"]] = 1;
var found = false;
for (var stepSlideIndex = 0; stepSlideIndex < this.stepParserObject["steps"].length; stepSlideIndex++) {
if (this.stepParserObject["steps"][stepSlideIndex]["slideNumber"] === slide["slideNumber"]) {
found = true;
stepSlideObject = this.stepParserObject["steps"][stepSlideIndex];
break;
}
}
if (!found) {
stepSlideObject = {
'slideNumber': slide["slideNumber"],
'actions': []
};
this.stepParserObject["steps"].push(stepSlideObject);
}
for (j in this.data["pptJson"]["slideObjectArray"][i]["shapeObjectArray"]) {
var shapeObject = this.data["pptJson"]["slideObjectArray"][i]["shapeObjectArray"][j];
if (shapeObject["shapeName"] == "TEXTBOX") {
var hrefMap = GeneratePPTProcessorHelper.pptGeneratorUtil.getMapFromHyperlink(shapeObject["href"]);
if (hrefMap.hasOwnProperty('distinctionFlag') && hrefMap["distinctionFlag"] === "repeatslidecontent") {
if (!this.directChildTable.hasOwnProperty(slide["slideNumber"]))
this.directChildTable[slide["slideNumber"]] = {};
stepActionObject = {
'actionName': 'repeat_slide',
'methodCalls': []
};
var repeaterTableOrderBy = '';
var repeaterTableOrderByDesc = false;
if (hrefMap.hasOwnProperty("orderByColumnName") && hrefMap["orderByColumnName"]!=''){
repeaterTableOrderBy = hrefMap["orderByColumnName"];
}
if (hrefMap.hasOwnProperty("orderByDesc") && hrefMap["orderByDesc"] != 'false'){
repeaterTableOrderByDesc = true;
}
var relatedGlideRecords = GeneratePPTProcessorHelper.pptGeneratorUtil.getRelatedListGlideRecord(GeneratePPTProcessorHelper.BASE_TABLE, hrefMap["Table"], GeneratePPTProcessorHelper.BASE_RECORD_SYS_ID, hrefMap["filterQuery"], {'orderByColumnName':repeaterTableOrderBy,'orderByDesc':repeaterTableOrderByDesc});
limit = relatedGlideRecords.getRowCount();
maximumSlideToAdd = hrefMap["maximumSlides"] > limit ? limit : hrefMap["maximumSlides"];
maximumSlideToAdd--;
if (maximumSlideToAdd < 0)
maximumSlideToAdd = 0;
this.directChildTable[slide["slideNumber"]]['tableName'] = hrefMap["Table"];
if(relatedGlideRecords.hasNext())
relatedGlideRecords.next();
this.directChildTable[slide["slideNumber"]]['repeaterTableOrderBy'] = repeaterTableOrderBy;
this.directChildTable[slide["slideNumber"]]['repeaterTableOrderByDesc'] = repeaterTableOrderByDesc;
this.directChildTable[slide["slideNumber"]]['sysID'] = relatedGlideRecords.isValidRecord() ? relatedGlideRecords.getValue("sys_id") : '';
slide["totalShapes"] = slide["totalShapes"] - 1;
this.data["pptJson"]["slideObjectArray"][i]["shapeObjectArray"].splice(j, 1);
for (var repeat = 0; repeat < maximumSlideToAdd; repeat++) {
stepMethodCallObject = {
'methodName': 'copyContent',
'parameterJSON': JSON.stringify({
'slideNumber': slide['slideNumber'],
'order': parseInt(slide['slideNumber']) + repeat
})
};
stepActionObject['methodCalls'].push(stepMethodCallObject);
this.data["pptJson"]["totalSlides"] = this.data["pptJson"]["totalSlides"] + 1;
var newSlide = JSON.parse(JSON.stringify(slide));
newSlide["slideNumber"] = newSlide["slideNumber"] + repeat + 1;
this.data["pptJson"]["slideObjectArray"].splice(parseInt(i) + 1, 0, newSlide);
this.slideDataTracker[newSlide["slideNumber"]] = this.slideDataTracker[slide["slideNumber"]] + repeat + 1;
relatedGlideRecords.next();
if (!this.directChildTable.hasOwnProperty(newSlide["slideNumber"]))
this.directChildTable[newSlide["slideNumber"]] = {};
this.directChildTable[newSlide["slideNumber"]]['tableName'] = hrefMap["Table"];
this.directChildTable[newSlide["slideNumber"]]['repeaterTableOrderBy'] = repeaterTableOrderBy;
this.directChildTable[newSlide["slideNumber"]]['repeaterTableOrderByDesc'] = repeaterTableOrderByDesc;
this.directChildTable[newSlide["slideNumber"]]['sysID'] = relatedGlideRecords.getValue('sys_id');
}
for (var slideCount = parseInt(i) + maximumSlideToAdd + 1; slideCount < this.data["pptJson"]["slideObjectArray"].length; slideCount++) {
this.data["pptJson"]["slideObjectArray"][slideCount]["slideNumber"] = this.data["pptJson"]["slideObjectArray"][slideCount]["slideNumber"] + maximumSlideToAdd;
}
stepSlideObject["actions"].push(stepActionObject);
}
}
}
}
},
runFinalStage: function() {
var hrefMap;
for (i in this.data["pptJson"]["slideObjectArray"]) {
var slide = this.data["pptJson"]["slideObjectArray"][i];
var found = false;
for (var stepSlideIndex = 0; stepSlideIndex < this.stepParserObject["steps"].length; stepSlideIndex++) {
if (this.stepParserObject["steps"][stepSlideIndex]["slideNumber"] === slide["slideNumber"]) {
found = true;
stepSlideObject = this.stepParserObject["steps"][stepSlideIndex];
}
}
if (!found) {
stepSlideObject = {
'slideNumber': slide["slideNumber"],
'actions': []
};
this.stepParserObject["steps"].push(stepSlideObject);
}
for (j in this.data["pptJson"]["slideObjectArray"][i]["shapeObjectArray"]) {
var shapeObject = this.data["pptJson"]["slideObjectArray"][i]["shapeObjectArray"][j];
if (shapeObject["shapeName"] == "TABLE") {
var tableHelper = new PPTGenTableUtil(this.directChildTable, this.slideDataTracker);
tableHelper.runFinalStageForTable(shapeObject, slide, i, this.data, stepSlideObject);
} else if (shapeObject["shapeName"] == "TEXTBOX") {
var textHelper = new PPTGenTextUtil(this.directChildTable, this.slideDataTracker);
textHelper.runFinalStageForTextBox(shapeObject, slide);
} else if (shapeObject["shapeName"] == "PICTURE") {
var roadMapHelper = new PPTGenRoadMapUtil(this.directChildTable, this.slideDataTracker);
roadMapHelper.runFinalStageForRoadMap(shapeObject, slide, stepSlideObject);
}
}
}
},
runAllStage: function() {
try {
this.runCleanupStage();
this.runRepeatSlideStage();
this.runFinalStage();
} catch (e) {
gs.info("LOG: GeneratePPTProcessorHelper "+e.message);
throw new Error(gs.getMessage("Error completing the operation. Check system logs for more information."));
}
},
getDataJSONString: function() {
return JSON.stringify(this.data);
},
getStepJSONString: function() {
return JSON.stringify(this.stepParserObject);
},
type: 'GeneratePPTProcessorHelper'
};
Sys ID
745b465253710110b595ddeeff7b1221