Name
sn_ppt_export.PPTGenTableUtil
Description
No description available
Script
var PPTGenTableUtil = Class.create();
PPTGenTableUtil.prototype = {
initialize: function(directChildTable, slideDataTracker) {
this.directChildTable = directChildTable;
this.slideDataTracker = slideDataTracker;
},
runFinalStageForTable: function(shapeObject, slide, i, data, stepSlideObject) {
var orderByColumnName = '';
var orderByDesc = false;
var directChildOrderByColumnName = '';
var directChildOrderByDesc = false;
var tableObject = JSON.parse(shapeObject["map"]["tableObject"]);
tableObject["slideNumber"] = slide["slideNumber"];
var finalTableObject = JSON.parse(JSON.stringify(tableObject));
var cells = tableObject["cells"];
var tableGlideRecordSysId = '';
var thirdLevelGlideRecordSysId = '';
for (cellCount in cells) {
var cell = cells[cellCount];
if (cell.hasOwnProperty("tokens")) {
var tokens = cell["tokens"];
flag = false;
maxRowToAdd = 0;
for (tokenNumber in tokens) {
var token = tokens[tokenNumber];
var hrefMap = GeneratePPTProcessorHelper.pptGeneratorUtil.getMapFromHyperlink(token["href"]);
if (hrefMap["distinctionFlag"] === "related" && hrefMap["relatedTo"] === "base" && !hrefMap.hasOwnProperty("repeaterTable")) {
if (hrefMap.hasOwnProperty("orderByColumnName") && hrefMap["orderByColumnName"] != '' && cell["column"] === 0) {
orderByColumnName = hrefMap["orderByColumnName"];
}
if (hrefMap.hasOwnProperty("orderByDesc") && hrefMap["orderByDesc"] != 'false' && cell["column"] === 0) {
orderByDesc = true;
}
if (!gs.nil(tableGlideRecordSysId)) {
//check before performing explicit glide query - in case of remote table
var tableGlideRecord = new GlideRecord(hrefMap["childTable"]);
if (!GeneratePPTProcessorHelper.pptGeneratorUtil.isRemoteTable(hrefMap["childTable"]))
tableGlideRecord.addQuery('sys_id', tableGlideRecordSysId);
else {
var remoteTableQueryObj = GeneratePPTProcessorHelper.pptGeneratorUtil.getRemoteTableCachedQuery(tableGlideRecordSysId);
tableGlideRecord = GeneratePPTProcessorHelper.pptGeneratorUtil.getRelatedListGlideRecord(remoteTableQueryObj["parentTable"],remoteTableQueryObj["childTable"],remoteTableQueryObj["parentRecordSysID"],remoteTableQueryObj["encodedFilter"],remoteTableQueryObj["orderByObj"]);
}
tableGlideRecord.query();
} else {
var tableGlideRecord = GeneratePPTProcessorHelper.pptGeneratorUtil.getRelatedListGlideRecord(GeneratePPTProcessorHelper.BASE_TABLE, hrefMap["childTable"], GeneratePPTProcessorHelper.BASE_RECORD_SYS_ID, hrefMap["filterQuery"], {
'orderByColumnName': orderByColumnName,
'orderByDesc': orderByDesc
});
}
limit = tableGlideRecord.getRowCount();
maxRowToAdd = hrefMap["maximumRows"] > limit ? limit : hrefMap["maximumRows"];
maxRowToAdd--; //one row is already present
if (maxRowToAdd < 0)
maxRowToAdd = 0;
if (maxRowToAdd !== 0)
flag = true;
for (key in finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["map"]) {
if (tableGlideRecord.hasNext()) {
tableGlideRecord.next();
tableGlideRecordSysId = tableGlideRecord.getValue('sys_id');
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["map"][key] = GeneratePPTProcessorHelper.pptGeneratorUtil.getFieldValue(tableGlideRecord, key.split(".")[1]);
if (GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[tableGlideRecord.getTableName()] && GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[tableGlideRecord.getTableName()][key.split(".")[1]]) {
var cellFormatter = GeneratePPTProcessorHelper.pptGeneratorUtil.getMatchedCellFormatter(tableGlideRecord.getTableName(), key.split(".")[1], tableGlideRecord.getValue("sys_id"));
if (cellFormatter && Object.keys(cellFormatter).length > 0) {
var styleObject = JSON.parse(cellFormatter["style"]);
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["color"] = styleObject["color"] ? styleObject["color"] : '';
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["shape"] = styleObject["shape"] ? styleObject["shape"] : '';
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["backgroundColor"] = styleObject["backgroundColor"] ? styleObject["backgroundColor"] : '';
}
}
} else
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["map"][key] = '';
}
} else if (hrefMap["distinctionFlag"] === "related" && hrefMap["relatedTo"] === "base" && hrefMap.hasOwnProperty("repeaterTable") && hrefMap["repeaterTable"] === "true") {
for (key in finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["map"])
var repeaterTableOrderByObj = {
'orderByColumnName': this.directChildTable[slide["slideNumber"]]['repeaterTableOrderBy'],
'orderByDesc': this.directChildTable[slide["slideNumber"]]['repeaterTableOrderByDesc']
};
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["map"][key] = GeneratePPTProcessorHelper.pptGeneratorUtil.getRelatedListData(GeneratePPTProcessorHelper.BASE_TABLE, key.split(".")[0], GeneratePPTProcessorHelper.BASE_RECORD_SYS_ID, key.split(".")[1], this.slideDataTracker[slide["slideNumber"]], '', repeaterTableOrderByObj);
var relatedTableRecord = GeneratePPTProcessorHelper.pptGeneratorUtil.getRelatedRecordForRelatedList(GeneratePPTProcessorHelper.BASE_TABLE, key.split(".")[0], GeneratePPTProcessorHelper.BASE_RECORD_SYS_ID, key.split(".")[1], this.slideDataTracker[slide["slideNumber"]], '', repeaterTableOrderByObj);
if (relatedTableRecord.next()) {
if (GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[relatedTableRecord.getTableName()] && GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[relatedTableRecord.getTableName()][key.split(".")[1]]) {
var cellFormatter = GeneratePPTProcessorHelper.pptGeneratorUtil.getMatchedCellFormatter(relatedTableRecord.getTableName(), key.split(".")[1], relatedTableRecord.getValue("sys_id"));
if (cellFormatter && Object.keys(cellFormatter).length > 0) {
var styleObject = JSON.parse(cellFormatter["style"]);
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["color"] = styleObject["color"] ? styleObject["color"] : '';
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["shape"] = styleObject["shape"] ? styleObject["shape"] : '';
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["backgroundColor"] = styleObject["backgroundColor"] ? styleObject["backgroundColor"] : '';
}
}
}
} else if (hrefMap["distinctionFlag"] === "related" && hrefMap["relatedTo"] === "direct_child") {
if (hrefMap.hasOwnProperty("orderByColumnName") && hrefMap["orderByColumnName"] != '' && cell["column"] === 0) {
directChildOrderByColumnName = hrefMap["orderByColumnName"];
}
if (hrefMap.hasOwnProperty("orderByDesc") && hrefMap["orderByDesc"] != '' && cell["column"] === 0) {
directChildOrderByDesc = true;
}
if (!gs.nil(thirdLevelGlideRecordSysId)) {
//check before performing explicit glide query - in case of remote table
var thirdLevelGlideRecord = new GlideRecord(hrefMap["childTable"]);
if (!GeneratePPTProcessorHelper.pptGeneratorUtil.isRemoteTable(hrefMap["childTable"]))
thirdLevelGlideRecord.addQuery('sys_id', thirdLevelGlideRecordSysId);
else {
var remoteTableQueryObj = GeneratePPTProcessorHelper.pptGeneratorUtil.getRemoteTableCachedQuery(thirdLevelGlideRecordSysId);
thirdLevelGlideRecord = GeneratePPTProcessorHelper.pptGeneratorUtil.getRelatedListGlideRecord(remoteTableQueryObj["parentTable"],remoteTableQueryObj["childTable"],remoteTableQueryObj["parentRecordSysID"],remoteTableQueryObj["encodedFilter"],remoteTableQueryObj["orderByObj"]);
}
thirdLevelGlideRecord.query();
} else {
var thirdLevelGlideRecord = GeneratePPTProcessorHelper.pptGeneratorUtil.getRelatedListGlideRecord(this.directChildTable[slide["slideNumber"]]['tableName'], hrefMap["childTable"], this.directChildTable[slide["slideNumber"]]['sysID'], hrefMap["filterQuery"], {
'orderByColumnName': directChildOrderByColumnName,
'orderByDesc': directChildOrderByDesc
});
}
limit = thirdLevelGlideRecord.getRowCount();
maxRowToAdd = hrefMap["maximumRows"] > limit ? limit : hrefMap["maximumRows"];
maxRowToAdd--; //one row is already present
if (maxRowToAdd < 0)
maxRowToAdd = 0;
if (maxRowToAdd !== 0)
flag = true;
for (key in finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["map"]) {
if (thirdLevelGlideRecord.hasNext()) {
thirdLevelGlideRecord.next();
thirdLevelGlideRecordSysId = thirdLevelGlideRecord.getValue('sys_id');
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["map"][key] = GeneratePPTProcessorHelper.pptGeneratorUtil.getFieldValue(thirdLevelGlideRecord, key.split(".")[1]);
if (GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[thirdLevelGlideRecord.getTableName()] && GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[thirdLevelGlideRecord.getTableName()][key.split(".")[1]]) {
var cellFormatter = GeneratePPTProcessorHelper.pptGeneratorUtil.getMatchedCellFormatter(thirdLevelGlideRecord.getTableName(), key.split(".")[1], thirdLevelGlideRecord.getValue("sys_id"));
if (cellFormatter && Object.keys(cellFormatter).length > 0) {
var styleObject = JSON.parse(cellFormatter["style"]);
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["color"] = styleObject["color"] ? styleObject["color"] : '';
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["shape"] = styleObject["shape"] ? styleObject["shape"] : '';
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["backgroundColor"] = styleObject["backgroundColor"] ? styleObject["backgroundColor"] : '';
}
}
} else
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["map"][key] = '';
}
} else if (hrefMap["distinctionFlag"] === "base") {
for (key in finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["map"]) {
var field = (key.split(".").length > 2) ? key.substring(key.indexOf(".") + 1, key.length) : key.split(".")[1];
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["map"][key] = GeneratePPTProcessorHelper.pptGeneratorUtil.getBaseRecordData(GeneratePPTProcessorHelper.BASE_TABLE, GeneratePPTProcessorHelper.BASE_RECORD_SYS_ID, field, 1);
if (GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[GeneratePPTProcessorHelper.BASE_TABLE] && GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[GeneratePPTProcessorHelper.BASE_TABLE][field]) {
var cellFormatter = GeneratePPTProcessorHelper.pptGeneratorUtil.getMatchedCellFormatter(GeneratePPTProcessorHelper.BASE_TABLE, field, GeneratePPTProcessorHelper.BASE_RECORD_SYS_ID);
if (cellFormatter && Object.keys(cellFormatter).length > 0) {
var styleObject = JSON.parse(cellFormatter["style"]);
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["color"] = styleObject["color"] ? styleObject["color"] : '';
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["shape"] = styleObject["shape"] ? styleObject["shape"] : '';
finalTableObject["cells"][cellCount]["tokens"][tokenNumber]["backgroundColor"] = styleObject["backgroundColor"] ? styleObject["backgroundColor"] : '';
}
}
}
}
}
if (cell["column"] === 0 && flag) {
this.fillTable(finalTableObject, maxRowToAdd, hrefMap, tableGlideRecord, thirdLevelGlideRecord, cells, cell);
stepActionObject = {
'actionName': 'table',
'methodCalls': []
};
stepMethodCallObject = {
'methodName': 'addTable',
'parameterJSON': JSON.stringify(finalTableObject)
};
stepActionObject['methodCalls'].push(stepMethodCallObject);
stepSlideObject["actions"].push(stepActionObject);
}
}
}
data["pptJson"]["slideObjectArray"][i]["shapeObjectArray"][j]["map"]["tableObject"] = JSON.stringify(finalTableObject);
},
fillTable: function(finalTableObject, maxRowToAdd, hrefMap, tableGlideRecord, thirdLevelGlideRecord, cells, cell) {
finalTableObject["totalRowCount"] = finalTableObject["totalRowCount"] + maxRowToAdd;
finalTableObject["rowsToAddCount"] = maxRowToAdd;
finalTableObject["columnsToAddCount"] = finalTableObject["totalColumnCount"];
var rowOrder = 1;
for (var u = cell["row"] + 1; u < finalTableObject["totalRowCount"]; u++) {
rowOrder++;
if (hrefMap["distinctionFlag"] === "related" && hrefMap["relatedTo"] === "base")
tableGlideRecord.next();
else if (hrefMap["distinctionFlag"] === "related" && hrefMap["relatedTo"] === "direct_child")
thirdLevelGlideRecord.next();
for (var v = 0; v < finalTableObject["totalColumnCount"]; v++) {
var cellObject = JSON.parse(JSON.stringify(cells[(finalTableObject["columnsToAddCount"] * cell["row"]) + (v)]));
cellObject["row"] = u;
cellObject["column"] = v;
cellObject["copyFromCell"] = cell["row"] + "#" + v;
cellObject["editCell"] = false;
if (cellObject.hasOwnProperty("tokens")) {
for (tokenNumber in cellObject["tokens"]) {
hrefMap = GeneratePPTProcessorHelper.pptGeneratorUtil.getMapFromHyperlink(cellObject["tokens"][tokenNumber]["href"]);
if (hrefMap["distinctionFlag"] === "related" && hrefMap["relatedTo"] === "base") {
for (key in cellObject["tokens"][tokenNumber]["map"]) {
cellObject["tokens"][tokenNumber]["map"][key] = GeneratePPTProcessorHelper.pptGeneratorUtil.getFieldValue(tableGlideRecord, key.split(".")[1]);
if (GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[tableGlideRecord.getTableName()] && GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[tableGlideRecord.getTableName()][key.split(".")[1]]) {
var cellFormatter = GeneratePPTProcessorHelper.pptGeneratorUtil.getMatchedCellFormatter(tableGlideRecord.getTableName(), key.split(".")[1], tableGlideRecord.getValue("sys_id"));
if (cellFormatter && Object.keys(cellFormatter).length > 0) {
var styleObject = JSON.parse(cellFormatter["style"]);
cellObject["tokens"][tokenNumber]["color"] = styleObject["color"] ? styleObject["color"] : '';
cellObject["tokens"][tokenNumber]["shape"] = styleObject["shape"] ? styleObject["shape"] : '';
cellObject["tokens"][tokenNumber]["backgroundColor"] = styleObject["backgroundColor"] ? styleObject["backgroundColor"] : '';
}
}
}
} else if (hrefMap["distinctionFlag"] === "related" && hrefMap["relatedTo"] === "direct_child") {
for (key in cellObject["tokens"][tokenNumber]["map"]) {
cellObject["tokens"][tokenNumber]["map"][key] = GeneratePPTProcessorHelper.pptGeneratorUtil.getFieldValue(thirdLevelGlideRecord, key.split(".")[1]);
if (GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[thirdLevelGlideRecord.getTableName()] && GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[thirdLevelGlideRecord.getTableName()][key.split(".")[1]]) {
var cellFormatter = GeneratePPTProcessorHelper.pptGeneratorUtil.getMatchedCellFormatter(thirdLevelGlideRecord.getTableName(), key.split(".")[1], thirdLevelGlideRecord.getValue("sys_id"));
if (cellFormatter && Object.keys(cellFormatter).length > 0) {
var styleObject = JSON.parse(cellFormatter["style"]);
cellObject["tokens"][tokenNumber]["color"] = styleObject["color"] ? styleObject["color"] : '';
cellObject["tokens"][tokenNumber]["shape"] = styleObject["shape"] ? styleObject["shape"] : '';
cellObject["tokens"][tokenNumber]["backgroundColor"] = styleObject["backgroundColor"] ? styleObject["backgroundColor"] : '';
}
}
}
} else if (hrefMap["distinctionFlag"] === "base") {
for (key in cellObject["tokens"][tokenNumber]["map"]) {
var field = (key.split(".").length > 2) ? key.substring(key.indexOf(".") + 1, key.length) : key.split(".")[1];
cellObject["tokens"][tokenNumber]["map"][key] = GeneratePPTProcessorHelper.pptGeneratorUtil.getBaseRecordData(GeneratePPTProcessorHelper.BASE_TABLE, GeneratePPTProcessorHelper.BASE_RECORD_SYS_ID, field, 1);
if (GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[GeneratePPTProcessorHelper.BASE_TABLE] && GeneratePPTProcessorHelper.pptGeneratorUtil.formatters[GeneratePPTProcessorHelper.BASE_TABLE][field]) {
var cellFormatter = GeneratePPTProcessorHelper.pptGeneratorUtil.getMatchedCellFormatter(GeneratePPTProcessorHelper.BASE_TABLE, field, GeneratePPTProcessorHelper.BASE_RECORD_SYS_ID);
if (cellFormatter && Object.keys(cellFormatter).length > 0) {
var styleObject = JSON.parse(cellFormatter["style"]);
cellObject["tokens"][tokenNumber]["color"] = styleObject["color"] ? styleObject["color"] : '';
cellObject["tokens"][tokenNumber]["shape"] = styleObject["shape"] ? styleObject["shape"] : '';
cellObject["tokens"][tokenNumber]["backgroundColor"] = styleObject["backgroundColor"] ? styleObject["backgroundColor"] : '';
}
}
}
}
}
}
finalTableObject["cells"].push(cellObject);
}
}
},
type: 'PPTGenTableUtil'
};
Sys ID
e598e0cc77821110ffca78847a5a9950