APIs

Show:
  1. var flexygo;
  2. (function (flexygo) {
  3. var ui;
  4. (function (ui) {
  5. var wc;
  6. (function (wc) {
  7. class FlxGipeControllerElement extends HTMLElement {
  8. constructor() {
  9. //If a constructor is defined, is REQUIRED call the super constructor
  10. super();
  11. /**
  12. * Set if element has been connected to DOM
  13. * @property connected {boolean}
  14. */
  15. this.connected = false;
  16. }
  17. /**
  18. * Array of observed attributes. REQUIRED
  19. * @property observedAttributes {Array}
  20. */
  21. static get observedAttributes() {
  22. return [];
  23. }
  24. /**
  25. * Fires when element is attached to DOM
  26. * @method connectedCallback
  27. */
  28. connectedCallback() {
  29. this.connected = true;
  30. flexygo.events.on(this, "gipe", "all", this.onEventReceived);
  31. this.init();
  32. }
  33. /**
  34. * Fires when element is dettached to DOM
  35. * @method disconnectedCallback
  36. */
  37. disconnectedCallback() {
  38. flexygo.events.off(this, "gipe", "all", this.onEventReceived);
  39. }
  40. /**
  41. * Fires when the attribute value of the element is changed.
  42. * @method attributeChangedCallback
  43. */
  44. attributeChangedCallback(attrName, oldVal, newVal) {
  45. let needInit = false;
  46. if (this.connected && needInit) {
  47. this.init();
  48. }
  49. }
  50. /**
  51. * Init the webcomponent. REQUIRED.
  52. * @method init
  53. */
  54. init() {
  55. this.render();
  56. }
  57. /**
  58. * Refresh the webcomponent. REQUIRED.
  59. * @method refresh
  60. */
  61. refresh() {
  62. this.render();
  63. }
  64. /**
  65. * Render HTML data.
  66. * @method render
  67. */
  68. render() {
  69. $(this).html('<i title="Workflow in progress..." class="fa fa-refresh icon-spin hide" />');
  70. }
  71. /**
  72. * Fires when a GIPE class event is receibed
  73. * @method onEventReceibed
  74. */
  75. onEventReceived(e) {
  76. switch (e.type) {
  77. case "askparams":
  78. this.askParams(e);
  79. break;
  80. case "askentity":
  81. this.askEntity(e);
  82. break;
  83. case "askyesno":
  84. this.askYesNo(e);
  85. break;
  86. case "jsreturn":
  87. this.jsReturn(e);
  88. break;
  89. case "start":
  90. $('flx-gipecontroller i').removeClass('hide').addClass('zoomInOut');
  91. break;
  92. case "finish":
  93. $('flx-gipecontroller i').addClass('hide').removeClass('zoomInOut');
  94. if (JSON.parse(e.sender).refresh) {
  95. $('flx-module').each((i, itm) => { if (itm.refresh) {
  96. itm.refresh();
  97. } });
  98. }
  99. break;
  100. default:
  101. break;
  102. }
  103. }
  104. /**
  105. * Shows the process params page an return its result
  106. * @method askParams
  107. */
  108. jsReturn(paramsEvent) {
  109. let ret = JSON.parse(paramsEvent.sender);
  110. if (ret && ret.processHelper && ret.processHelper.JSCode) {
  111. flexygo.utils.execDynamicCode.call(this, ret.processHelper.JSCode);
  112. }
  113. }
  114. /**
  115. * Shows the process params page an return its result
  116. * @method askParams
  117. */
  118. askParams(paramsEvent) {
  119. var processparampage = 'syspage-processparams-default';
  120. let data = JSON.parse(paramsEvent.sender);
  121. //Temporal hack
  122. if (data.targetId.toLowerCase() === 'current') {
  123. data.targetId = 'popup800x600';
  124. }
  125. var histObj = {
  126. navigateFun: 'openProcessParams',
  127. targetid: data.targetId,
  128. objectname: data.objectName,
  129. objectwhere: data.objectWhere,
  130. defaults: null,
  131. processname: data.processName
  132. };
  133. let defaults = null; ///OJO!!!!!!!
  134. var pageContainer = flexygo.targets.createContainer(histObj, false, null);
  135. //if (triggerElement && !triggerElement.closest('.pageContainer').is(pageContainer)) {
  136. // pageContainer.data('opener', triggerElement.closest('.pageContainer'));
  137. //}
  138. flexygo.ajax.post('~/api/Page', 'GetPageByName', { "PageName": processparampage }, (ret) => {
  139. ret.pageHistory = histObj;
  140. flexygo.nav.openPageReturn(ret, data.objectName, data.objectWhere, defaults, pageContainer, null, data.processName);
  141. let selected = false;
  142. flexygo.events.on(this, "module", "loaded", (loadedEvent) => {
  143. let module = loadedEvent.sender;
  144. if (module.moduleName.toLowerCase() === 'sysmod-edit-processparams') {
  145. flexygo.events.off(this, "module", "loaded");
  146. let btn = pageContainer.find("button[data-type='runprocess']");
  147. if (btn.length < 1) {
  148. flexygo.msg.error(flexygo.localization.translate('flxgipe.errornorunprocessbuttonfound'), null, flexygo.localization.translate('flxgipe.dialogerrortitle'));
  149. return;
  150. }
  151. btn.removeAttr("onclick");
  152. btn.off("click").on("click", (e) => {
  153. let module = pageContainer.find('flx-module');
  154. if (module.find('form').valid()) {
  155. let props = module.find('[property]');
  156. let params = new Array();
  157. if (props.length > 0) {
  158. for (var i = 0; i < props.length; i++) {
  159. let prop = $(props[i])[0];
  160. let edit = module.find('flx-edit:first')[0];
  161. if (!edit.data[prop.property].DetachedFromDB) {
  162. params.push({ 'key': prop.property, 'value': prop.getValue() });
  163. }
  164. }
  165. var postParams = {
  166. execId: paramsEvent.masterIdentity,
  167. stepId: paramsEvent.detailIdentity,
  168. ProcessParams: params
  169. };
  170. flexygo.ajax.post('~/api/Gipe', 'setWorkflowStepParams', postParams, (ret) => {
  171. module.closest(".ui-dialog").remove();
  172. });
  173. }
  174. else {
  175. flexygo.msg.error(flexygo.localization.translate('flxmodule.noparams'));
  176. }
  177. }
  178. else {
  179. flexygo.msg.warning(flexygo.localization.translate('flxmodule.requiredreport'));
  180. }
  181. });
  182. }
  183. });
  184. flexygo.events.on(this, "dialog", "closed", (loadedEvent) => {
  185. flexygo.events.off(this, "dialog", "closed");
  186. if (!selected) {
  187. var postParams = {
  188. execId: paramsEvent.masterIdentity,
  189. stepId: paramsEvent.detailIdentity
  190. };
  191. flexygo.ajax.post('~/api/Gipe', 'abortExecution', postParams, (ret) => {
  192. });
  193. }
  194. });
  195. });
  196. }
  197. /**
  198. * Shows the object search default page to ask for a entity
  199. * @method askParams
  200. */
  201. askEntity(paramsEvent) {
  202. let data = JSON.parse(paramsEvent.sender);
  203. let selected = false;
  204. flexygo.events.on(this, "entity", "selected", (e) => {
  205. flexygo.events.off(this, "entity", "selected");
  206. var postEntity = {
  207. execId: paramsEvent.masterIdentity,
  208. stepId: paramsEvent.detailIdentity,
  209. objectName: e.masterIdentity,
  210. objectWhere: e.detailIdentity
  211. };
  212. $(document).find('flx-search[objectname="' + data.objectName + '"]').closest(".ui-dialog").remove();
  213. flexygo.ajax.post('~/api/Gipe', 'setWorkflowStepEntity', postEntity, (ret) => {
  214. });
  215. });
  216. flexygo.nav.openPage('search', data.objectName, null, null, 'popup800x600');
  217. flexygo.events.on(this, "dialog", "closed", (loadedEvent) => {
  218. flexygo.events.off(this, "entity", "selected");
  219. flexygo.events.off(this, "dialog", "closed");
  220. if (!selected) {
  221. var postParams = {
  222. execId: paramsEvent.masterIdentity,
  223. stepId: paramsEvent.detailIdentity
  224. };
  225. flexygo.ajax.post('~/api/Gipe', 'abortExecution', postParams, (ret) => {
  226. });
  227. }
  228. });
  229. }
  230. /**
  231. * Shows a dialog of yes/no response
  232. * @method askYesNo
  233. */
  234. askYesNo(paramsEvent) {
  235. let data = JSON.parse(paramsEvent.sender);
  236. flexygo.msg.question(data.title, data.message, (response) => {
  237. var postResponse = {
  238. execId: paramsEvent.masterIdentity,
  239. stepId: paramsEvent.detailIdentity,
  240. userResponse: response
  241. };
  242. flexygo.ajax.post('~/api/Gipe', 'setWorkflowStepResponse', postResponse, (ret) => {
  243. });
  244. });
  245. }
  246. }
  247. wc.FlxGipeControllerElement = FlxGipeControllerElement;
  248. })(wc = ui.wc || (ui.wc = {}));
  249. })(ui = flexygo.ui || (flexygo.ui = {}));
  250. })(flexygo || (flexygo = {}));
  251. window.customElements.define("flx-gipecontroller", flexygo.ui.wc.FlxGipeControllerElement);
  252. //# sourceMappingURL=flx-gipecontroller.js.map