Name

sn_ppt_export.ExportToPPTMetaData

Description

No description available

Script

var ExportToPPTMetaData = Class.create();
ExportToPPTMetaData.prototype = {
  initialize: function() {
  },
  
  getDataTypesSupported: function() {
  	var dataTypesSupported = GeneratePPTConstants.DEFAULT_DATA_TYPES;
  	var powerpointComponentsGr = new GlideRecord(GeneratePPTConstants.POWERPOINT_COMPONENTS_TABLE);
  	powerpointComponentsGr.query();
  	
  	while(powerpointComponentsGr.next()){
          dataTypesSupported.push({
              value: powerpointComponentsGr.getValue('sys_id'),
              name: powerpointComponentsGr.getDisplayValue('name')
          });
  	}
  	
  	return dataTypesSupported;
  },
  
  getReportObjects: function() {
  	var reportObjectsArr = [];
  	var gr = new GlideRecordSecure(GeneratePPTConstants.REPORT_TYPE_TABLENAME);
  	gr.query();
  	
  	while(gr.next()) {
          var reportObject = {};
          reportObject['sys_id'] = gr.getValue('sys_id');
          reportObject['report_name'] = gr.getValue('name');
  		reportObject['main_table'] = gr.getValue('main_table');
  		reportObjectsArr.push(reportObject);
  	}
  	
  	return reportObjectsArr;
  },
  
  getReportTypeHirearchy: function(reportTypeSysId) {
  	var reportTypeHirearchy = {};
  	var gr = new GlideRecordSecure(GeneratePPTConstants.REPORT_TYPE_TABLENAME);
  	gr.get(reportTypeSysId.toString());
  	var mainTable = gr.getValue('main_table');
  	var mainTableDisplayValue = this._getDisplayValueOfTable(mainTable);
  	
  	reportTypeHirearchy.main_table = {};
  	reportTypeHirearchy.scriptedElements =[];
  	reportTypeHirearchy.main_table.name = mainTable;
  	reportTypeHirearchy.main_table.display_name = mainTableDisplayValue;
  	reportTypeHirearchy.main_table.related_tables =[];
  	reportTypeHirearchy.main_table.columns = this.getColumnsForTable(mainTable).columns;
  	reportTypeHirearchy.main_table.reference_columns = this.getColumnsForTable(mainTable).referenceColumnObject;
  	
  	var relatedTableGr = new GlideRecordSecure(GeneratePPTConstants.RELATED_TYPE_TABLENAME);
  	relatedTableGr.addQuery('report_type',reportTypeSysId);
  	relatedTableGr.addNullQuery('parent_table');
  	relatedTableGr.query();
  	
  	while(relatedTableGr.next()){
  		reportTypeHirearchy.main_table.related_tables.push(this.createRelatedTableObject(relatedTableGr));
  	}
  	
  	var scriptedElementGr = new GlideRecord('sn_ppt_export_ppt_scripted_element');
  	scriptedElementGr.addQuery('report_type',reportTypeSysId);
  	scriptedElementGr.query();
  	
  	while(scriptedElementGr.next()) {
  		reportTypeHirearchy.scriptedElements.push(this.createScriptedElementsObject(scriptedElementGr));
  	}
  	
  	
  	return reportTypeHirearchy;
  	
  },
  
  createScriptedElementsObject: function(scriptedElementGr) {
      var scriptedElementObject = {};
      scriptedElementObject.name = scriptedElementGr.getDisplayValue('name');
  	scriptedElementObject.sys_id = scriptedElementGr.getValue('sys_id');
  	scriptedElementObject.type = scriptedElementGr.getDisplayValue('type');
  	scriptedElementObject.type_sys_id = scriptedElementGr.getValue('type');
  	
  	return scriptedElementObject;
  	
  },
  
  createRelatedTableObject: function(relatedTableGr) {
  	var relatedTable = relatedTableGr.getValue('table');
  	var relatedTableDisplayValue = this._getDisplayValueOfTable(relatedTable);
  	var relatedtableObject = {};
  	relatedtableObject.name = relatedTable;
  	relatedtableObject.display_name = relatedTableDisplayValue;
  	relatedtableObject.columns = this.getColumnsForTable(relatedTable).columns;
  	relatedtableObject.reference_columns = this.getColumnsForTable(relatedTable).referenceColumnObject;
  	relatedtableObject.related_tables = [];
  	
  	var rtGr = new GlideRecordSecure(GeneratePPTConstants.RELATED_TYPE_TABLENAME);
  	rtGr.addQuery('parent_table',relatedTableGr.getValue('sys_id'));
  	rtGr.query();
  	
  	while(rtGr.next()){
  		relatedtableObject.related_tables.push(this.createRelatedTableObject(rtGr));
  	}
  	
  	return relatedtableObject;
  	
  },
  
  getColumnsForTable: function(table) {
  	var tables = new GlideTableHierarchy(table).getTables().toString();
  	var columns =[];
  	var referenceColumnObject = {};
  	
  	var grDictionary = new GlideRecord('sys_dictionary');
  	grDictionary.addQuery('name','IN',tables);
      grDictionary.query();
  	
  	while(grDictionary.next()){
  		var internalType = grDictionary.getValue('internal_type');
  		if(internalType != 'collection') {
  			if(internalType == 'reference') {
  				columns.push({"id": grDictionary.getValue('element'), "text": grDictionary.getValue('column_label')});
  				referenceColumnObject[grDictionary.getValue('element')] = grDictionary.getValue('reference');
  			} else if(internalType == 'GUID') {
  				if(grDictionary.getValue('name') == table)//skipping sys_id field of extended table
  					columns.push({"id": grDictionary.getValue('element'), "text": grDictionary.getValue('column_label')});
  			} else 
  				columns.push({"id": grDictionary.getValue('element'), "text": grDictionary.getValue('column_label')});
  		}
  	}
  	
  	return {'columns': columns, 'referenceColumnObject': referenceColumnObject};
  	
  },
  
  getColumnsForReferenceTable: function(table) {
  	var tables = new GlideTableHierarchy(table).getTables().toString();
  	var columns =[];
  	var referenceColumnObject = {};
  	
  	var grDictionary = new GlideRecord('sys_dictionary');
  	grDictionary.addQuery('name','IN',tables);
      grDictionary.query();
  	
  	while(grDictionary.next()) {
  		var internalType = grDictionary.getValue('internal_type');
  		if(internalType != 'collection') {
  			if(internalType == 'GUID') {
  				if(grDictionary.getValue('name') == table)//skipping sys_id field of extended table
  					columns.push({"id": grDictionary.getValue('element'), "text": grDictionary.getValue('column_label')});
  			} else
  				columns.push({"id": grDictionary.getValue('element'), "text": grDictionary.getValue('column_label')});
  		}
  			
  	}
  	return columns;
  	
  },
  
  getMaxNumberArray: function() {
  	var actualLimit = GeneratePPTConstants.MAX_NUMBER_ARRAY_LIMIT;
  	var maxNumberArray = [];
  	for(var i=1; i<=actualLimit; i++) {
  		var keyValueObj = {};
  		keyValueObj["key"] = i.toString();
  		keyValueObj["value"] = i;
  		maxNumberArray.push(keyValueObj);
  	}
  	return maxNumberArray;
  },
  
  _getDisplayValueOfTable: function(tableName) {
  	var displayName = '';
  	var dbo = new GlideRecord('sys_db_object');
  	dbo.addQuery('name', tableName);
  	dbo.query();
  	if(dbo.next()){
  		displayName = dbo.getValue('label');
  	}
  	return displayName;
  },

  type: 'ExportToPPTMetaData'
};

Sys ID

9f675d7477120110c974206acd5a9962

Offical Documentation

Official Docs: