Name

sn_flow_diagram.FlowDiagramLayoutGenerator

Description

Generates layout script to be used for app diagram builder layout, by combinging the flow diagram configuration script with the FlowDiagramConstants script include

Script

var FlowDiagramLayoutGenerator = Class.create();
FlowDiagramLayoutGenerator.prototype = {
  initialize: function() {},

  type: 'FlowDiagramLayoutGenerator'
};

// a script include class needs to be converted into an object in order to be returned
FlowDiagramLayoutGenerator.getObjValues = function(obj) {
  var res = {};
  var keys = Object.keys(obj);

  for (var i = 0; i < keys.length; i++) {
      var key = keys[i];
      res[key] = obj[key];
  }

  return res;
};

// converts a script include object class into a pure javascript string representation.
FlowDiagramLayoutGenerator.convertObjToString = function(obj, name) {
  var jsonObj = FlowDiagramLayoutGenerator.getObjValues(obj);
  var stringObj = JSON.stringify(jsonObj);

  var objDeclaration = 'var ' + name + ' = ' + stringObj + ';';

  return objDeclaration;
};

// generates a layout script that pre-defines the flow diagram constants script include
FlowDiagramLayoutGenerator.createLayoutScript = function(layoutScript, diagramConstants) {

  var constants = FlowDiagramLayoutGenerator.convertObjToString(diagramConstants, 'FlowDiagramConstants');
  // function name from sn_diagram_builder_configuration
  var diagramConfigurationFnName = 'getFlowDiagrammingLayout';

  var script = 'function flowDiagramLayoutGen($, go) {\n';
  script += constants + '\n';
  script += layoutScript + '\n';
  script += 'return ' + diagramConfigurationFnName + '($, go);\n';
  script += '}';

  return script;
};

Sys ID

037aeb14c35311105c68006c2840dd69

Offical Documentation

Official Docs: