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

Offical Documentation

Official Docs: