APIs

Show:
var flexygo;
(function (flexygo) {
    var ui;
    (function (ui) {
        var wc;
        (function (wc) {
            class FlxGipeControllerElement extends HTMLElement {
                constructor() {
                    //If a constructor is defined, is REQUIRED call the super constructor
                    super();
                    /**
                    * Set if element has been connected to DOM
                    * @property connected {boolean}
                    */
                    this.connected = false;
                }
                /**
                * Array of observed attributes. REQUIRED
                * @property observedAttributes {Array}
                */
                static get observedAttributes() {
                    return [];
                }
                /**
                * Fires when element is attached to DOM
                * @method connectedCallback
                */
                connectedCallback() {
                    this.connected = true;
                    flexygo.events.on(this, "gipe", "all", this.onEventReceived);
                    this.init();
                }
                /**
                * Fires when element is dettached to DOM
                * @method disconnectedCallback
                */
                disconnectedCallback() {
                    flexygo.events.off(this, "gipe", "all", this.onEventReceived);
                }
                /**
                * Fires when the attribute value of the element is changed.
                * @method attributeChangedCallback
                */
                attributeChangedCallback(attrName, oldVal, newVal) {
                    let needInit = false;
                    if (this.connected && needInit) {
                        this.init();
                    }
                }
                /**
                * Init the webcomponent. REQUIRED.
                * @method init
                */
                init() {
                    this.render();
                }
                /**
                * Refresh the webcomponent. REQUIRED.
                * @method refresh
                */
                refresh() {
                    this.render();
                }
                /**
                * Render HTML data.
                * @method render
                */
                render() {
                    $(this).html('<i title="Workflow in progress..." class="fa fa-refresh icon-spin hide" />');
                }
                /**
                * Fires when a GIPE class event is receibed
                * @method onEventReceibed
                */
                onEventReceived(e) {
                    switch (e.type) {
                        case "askparams":
                            this.askParams(e);
                            break;
                        case "askentity":
                            this.askEntity(e);
                            break;
                        case "askyesno":
                            this.askYesNo(e);
                            break;
                        case "jsreturn":
                            this.jsReturn(e);
                            break;
                        case "start":
                            $('flx-gipecontroller i').removeClass('hide').addClass('zoomInOut');
                            break;
                        case "finish":
                            $('flx-gipecontroller i').addClass('hide').removeClass('zoomInOut');
                            if (JSON.parse(e.sender).refresh) {
                                $('flx-module').each((i, itm) => { if (itm.refresh) {
                                    itm.refresh();
                                } });
                            }
                            break;
                        default:
                            break;
                    }
                }
                /**
             * Shows the process params page an return its result
             * @method askParams
             */
                jsReturn(paramsEvent) {
                    let ret = JSON.parse(paramsEvent.sender);
                    if (ret && ret.processHelper && ret.processHelper.JSCode) {
                        flexygo.utils.execDynamicCode.call(this, ret.processHelper.JSCode);
                    }
                }
                /**
                * Shows the process params page an return its result
                * @method askParams
                */
                askParams(paramsEvent) {
                    var processparampage = 'syspage-processparams-default';
                    let data = JSON.parse(paramsEvent.sender);
                    //Temporal hack
                    if (data.targetId.toLowerCase() === 'current') {
                        data.targetId = 'popup800x600';
                    }
                    var histObj = {
                        navigateFun: 'openProcessParams',
                        targetid: data.targetId,
                        objectname: data.objectName,
                        objectwhere: data.objectWhere,
                        defaults: null,
                        processname: data.processName
                    };
                    let defaults = null; ///OJO!!!!!!!
                    var pageContainer = flexygo.targets.createContainer(histObj, false, null);
                    //if (triggerElement && !triggerElement.closest('.pageContainer').is(pageContainer)) {
                    //    pageContainer.data('opener', triggerElement.closest('.pageContainer'));
                    //}
                    flexygo.ajax.post('~/api/Page', 'GetPageByName', { "PageName": processparampage }, (ret) => {
                        ret.pageHistory = histObj;
                        flexygo.nav.openPageReturn(ret, data.objectName, data.objectWhere, defaults, pageContainer, null, data.processName);
                        let selected = false;
                        flexygo.events.on(this, "module", "loaded", (loadedEvent) => {
                            let module = loadedEvent.sender;
                            if (module.moduleName.toLowerCase() === 'sysmod-edit-processparams') {
                                flexygo.events.off(this, "module", "loaded");
                                let btn = pageContainer.find("button[data-type='runprocess']");
                                if (btn.length < 1) {
                                    flexygo.msg.error(flexygo.localization.translate('flxgipe.errornorunprocessbuttonfound'), null, flexygo.localization.translate('flxgipe.dialogerrortitle'));
                                    return;
                                }
                                btn.removeAttr("onclick");
                                btn.off("click").on("click", (e) => {
                                    let module = pageContainer.find('flx-module');
                                    if (module.find('form').valid()) {
                                        let props = module.find('[property]');
                                        let params = new Array();
                                        if (props.length > 0) {
                                            for (var i = 0; i < props.length; i++) {
                                                let prop = $(props[i])[0];
                                                let edit = module.find('flx-edit:first')[0];
                                                if (!edit.data[prop.property].DetachedFromDB) {
                                                    params.push({ 'key': prop.property, 'value': prop.getValue() });
                                                }
                                            }
                                            var postParams = {
                                                execId: paramsEvent.masterIdentity,
                                                stepId: paramsEvent.detailIdentity,
                                                ProcessParams: params
                                            };
                                            flexygo.ajax.post('~/api/Gipe', 'setWorkflowStepParams', postParams, (ret) => {
                                                module.closest(".ui-dialog").remove();
                                            });
                                        }
                                        else {
                                            flexygo.msg.error(flexygo.localization.translate('flxmodule.noparams'));
                                        }
                                    }
                                    else {
                                        flexygo.msg.warning(flexygo.localization.translate('flxmodule.requiredreport'));
                                    }
                                });
                            }
                        });
                        flexygo.events.on(this, "dialog", "closed", (loadedEvent) => {
                            flexygo.events.off(this, "dialog", "closed");
                            if (!selected) {
                                var postParams = {
                                    execId: paramsEvent.masterIdentity,
                                    stepId: paramsEvent.detailIdentity
                                };
                                flexygo.ajax.post('~/api/Gipe', 'abortExecution', postParams, (ret) => {
                                });
                            }
                        });
                    });
                }
                /**
                * Shows the object search default page to ask for a entity
                * @method askParams
                */
                askEntity(paramsEvent) {
                    let data = JSON.parse(paramsEvent.sender);
                    let selected = false;
                    flexygo.events.on(this, "entity", "selected", (e) => {
                        flexygo.events.off(this, "entity", "selected");
                        var postEntity = {
                            execId: paramsEvent.masterIdentity,
                            stepId: paramsEvent.detailIdentity,
                            objectName: e.masterIdentity,
                            objectWhere: e.detailIdentity
                        };
                        $(document).find('flx-search[objectname="' + data.objectName + '"]').closest(".ui-dialog").remove();
                        flexygo.ajax.post('~/api/Gipe', 'setWorkflowStepEntity', postEntity, (ret) => {
                        });
                    });
                    flexygo.nav.openPage('search', data.objectName, null, null, 'popup800x600');
                    flexygo.events.on(this, "dialog", "closed", (loadedEvent) => {
                        flexygo.events.off(this, "entity", "selected");
                        flexygo.events.off(this, "dialog", "closed");
                        if (!selected) {
                            var postParams = {
                                execId: paramsEvent.masterIdentity,
                                stepId: paramsEvent.detailIdentity
                            };
                            flexygo.ajax.post('~/api/Gipe', 'abortExecution', postParams, (ret) => {
                            });
                        }
                    });
                }
                /**
               * Shows a dialog of yes/no response
               * @method askYesNo
               */
                askYesNo(paramsEvent) {
                    let data = JSON.parse(paramsEvent.sender);
                    flexygo.msg.question(data.title, data.message, (response) => {
                        var postResponse = {
                            execId: paramsEvent.masterIdentity,
                            stepId: paramsEvent.detailIdentity,
                            userResponse: response
                        };
                        flexygo.ajax.post('~/api/Gipe', 'setWorkflowStepResponse', postResponse, (ret) => {
                        });
                    });
                }
            }
            wc.FlxGipeControllerElement = FlxGipeControllerElement;
        })(wc = ui.wc || (ui.wc = {}));
    })(ui = flexygo.ui || (flexygo.ui = {}));
})(flexygo || (flexygo = {}));
window.customElements.define("flx-gipecontroller", flexygo.ui.wc.FlxGipeControllerElement);
//# sourceMappingURL=flx-gipecontroller.js.map