APIs

Show:
var flexygo;
(function (flexygo) {
    var nav;
    (function (nav) {
        class FilterHistoryValue {
        }
        nav.FilterHistoryValue = FilterHistoryValue;
        class ModuleFilterHistory {
        }
        nav.ModuleFilterHistory = ModuleFilterHistory;
        class FlexygoHistory {
        }
        nav.FlexygoHistory = FlexygoHistory;
        /**
         * Opens the default object page
         * @method openPage
         * @param {string} pagetypeid - Type of the page
         * @param {string} objectname - Name of the collection or entity
         * @param {string} objectwhere - Where of the collection or entity
         * @param {string} defaults - Defaults to be added to the page
         * @param {string} targetid - Target to open the window
         * @param {boolean} excludeHist - True to not store in history
         * @param {JQuery} triggerElement - Relative element to open the page
         * @param {boolean} isClone -
         * @param {flexygo.nav.FlexygoHistory} previousHist - Previous page history
        */
        function openPage(pagetypeid, objectname, objectwhere, defaults, targetid, excludeHist, triggerElement, isClone, previousHist) {
            if (typeof event != 'undefined') {
                event.preventDefault();
            }
            if (flexygo.utils.isSizeMobile() && targetid.indexOf('modal') != 0) {
                targetid = "current";
            }
            else if (flexygo.utils.isSizeMobile() && targetid.indexOf('modal') == 0) {
                targetid = "modal";
            }
            if (typeof defaults == 'object') {
                defaults = JSON.stringify(defaults);
            }
            if (!isClone) {
                isClone = false;
            }
            if (triggerElement) {
                triggerElement = getRealTarget(triggerElement);
            }
            if (targetid == 'opener') {
                targetid = getCurrentOpener(triggerElement);
            }
            var histObj = {
                targetid: targetid,
                navigateFun: 'openpage',
                objectname: objectname,
                objectwhere: objectwhere,
                defaults: defaults,
                pagetypeid: pagetypeid,
                filtersValues: (previousHist && previousHist.filtersValues) ? previousHist.filtersValues : null
            };
            if (targetid && targetid.indexOf('new') == 0) {
                flexygo.targets.openNewWindow(histObj, targetid);
            }
            else {
                if (objectwhere == 'NOWHERE') {
                    flexygo.msg.error("Can't find object where.");
                    return;
                }
                let ev = {
                    class: "page",
                    type: "loading",
                    sender: histObj,
                    masterIdentity: objectname,
                    detailIdentity: objectwhere
                };
                flexygo.events.trigger(ev);
                flexygo.ajax.post('~/api/Page', 'GetPageByObject', { "StrType": pagetypeid, "ObjectName": objectname, "ObjectWhere": objectwhere, "IsClone": isClone }, (ret) => {
                    histObj.pagename = ret.PageName;
                    var pageContainer = flexygo.targets.createContainer(histObj, excludeHist, triggerElement);
                    var editObj = flexygo.history.get(pageContainer);
                    if (editObj.targetid.indexOf('main') == 0 || (editObj.targetid.indexOf('current') == 0 && pageContainer.is('#realMain'))) {
                        editObj.pagename = ret.PageName;
                        flexygo.history.replace(editObj, pageContainer);
                    }
                    ret.pageHistory = histObj;
                    openPageReturn(ret, objectname, objectwhere, defaults, pageContainer, null, null, isClone);
                    if (pagetypeid != 'edit' || (objectwhere && objectwhere != '')) {
                        flexygo.history.historyLog.add(ret.IconCssClass, ret.Descrip, histObj);
                    }
                }, (error) => {
                    flexygo.exceptions.httpShow(error);
                });
            }
        }
        nav.openPage = openPage;
        /**
        * Navigate to default page
        * @method goHome
        * @param {boolean} [excludeHist=false] - True to not store in history
         */
        function goHome(excludeHist = false) {
            if (flexygo.profiles.startuppage && flexygo.profiles.startuppage != '') {
                flexygo.nav.openPageName(flexygo.profiles.startuppage, null, null, null, 'current', excludeHist, null);
            }
        }
        nav.goHome = goHome;
        /**
         * Opens a page by its name
         * @method openPageName
         * @param {string} pagename - Identifier of the page
         * @param {string} objectname - Name of the collection or entity
         * @param {string} objectwhere - Where of the collection or entity
         * @param {string} defaults - Defaults to be added to the page
         * @param {string} targetid - Target to open the window
         * @param {boolean} excludeHist - True to not store in history
         * @param {JQuery} triggerElement - Relative element to open the page
         * @param {boolean} isClone -
        * @param {flexygo.nav.FlexygoHistory} previousHist - Previous page history
        */
        function openPageName(pagename, objectname, objectwhere, defaults, targetid, excludeHist, triggerElement, isClone, previousHist) {
            if (typeof event != 'undefined') {
                event.preventDefault();
            }
            if (flexygo.utils.isSizeMobile() && targetid.indexOf('modal') != 0) {
                targetid = "current";
            }
            else if (flexygo.utils.isSizeMobile() && targetid.indexOf('modal') == 0) {
                targetid = "modal";
            }
            if (triggerElement) {
                triggerElement = getRealTarget(triggerElement);
            }
            if (targetid == 'opener') {
                targetid = getCurrentOpener(triggerElement);
            }
            var histObj = {
                navigateFun: 'openpagename',
                targetid: targetid,
                objectname: objectname,
                objectwhere: objectwhere,
                defaults: defaults,
                pagename: pagename,
                filtersValues: (previousHist && previousHist.filtersValues) ? previousHist.filtersValues : null
            };
            if (targetid && targetid.indexOf('new') == 0) {
                flexygo.targets.openNewWindow(histObj, targetid);
            }
            else {
                if (objectwhere == 'NOWHERE') {
                    flexygo.msg.error("Can't find object where.");
                    return;
                }
                let ev = {
                    class: "page",
                    type: "loading",
                    sender: histObj,
                    masterIdentity: objectname,
                    detailIdentity: objectwhere
                };
                flexygo.events.trigger(ev);
                flexygo.ajax.post('~/api/Page', 'GetPageByName', { "PageName": pagename, "ObjectName": objectname, "ObjectWhere": objectwhere }, (ret) => {
                    if (!histObj.pagetypeid) {
                        histObj.pagetypeid = ret.StrType;
                    }
                    var pageContainer = flexygo.targets.createContainer(histObj, excludeHist, triggerElement);
                    ret.pageHistory = histObj;
                    openPageReturn(ret, objectname, objectwhere, defaults, pageContainer, null, null, isClone);
                    flexygo.history.historyLog.add(ret.IconCssClass, ret.Descrip, histObj);
                }, (error) => {
                    flexygo.exceptions.httpShow(error);
                });
            }
        }
        nav.openPageName = openPageName;
        /**
        * Executes a process, opening its param page if required
        * @method execProcess
        * @param {string} processname - Identifier of the process
        * @param {string} objectname - Name of the collection or entity
        * @param {string} objectwhere - Where of the collection or entity
        * @param {string} defaults - Defaults to be added to the process
        * @param {any} processparams - Array of process parameters
        * @param {string} targetid - Target to open the window
        * @param {boolean} excludeHist - True to not store in history
        * @param {JQuery} triggerElement - Relative element to open the page
        * @param {function} callBack - callback to be called after execute
        * @param {boolean} showprogress - false to hide progress indicator
       */
        function execProcess(processname, objectname, objectwhere, defaults, processparams, targetid, excludeHist, triggerElement, callBack, showProgress) {
            if (typeof event != 'undefined') {
                event.preventDefault();
            }
            var proc = new flexygo.Process(processname, objectname, objectwhere);
            proc.read();
            let target;
            if (typeof (showProgress) == typeof (true)) {
                proc.showProgress = showProgress;
            }
            if (triggerElement) {
                triggerElement = getRealTarget(triggerElement);
                proc.module = triggerElement.closest('flx-module')[0];
            }
            //if target has been passed use that one if not use process target
            if (targetid == null) {
                target = proc.config.TargetId;
            }
            else {
                target = targetid;
            }
            //If process is not a workflow, and has params and params have not be passed use openprocessparams window
            if ((!proc.config.IsWorkflow) && proc.config.HasParams && processparams == null) {
                if (!flexygo.utils.isSizeMobile) {
                    excludeHist = true;
                }
                flexygo.nav.openProcessParams(processname, objectname, objectwhere, defaults, target, excludeHist, triggerElement);
            }
            else {
                if (!processparams && defaults) {
                    let jsonDefaults = JSON.parse(flexygo.utils.parser.replaceAll(defaults, "'", '"'));
                    let paramsDefaults = [];
                    for (let key in jsonDefaults) {
                        let jsonValue = {};
                        jsonValue["Key"] = key;
                        jsonValue["Value"] = jsonDefaults[key];
                        paramsDefaults.push(jsonValue);
                    }
                    processparams = paramsDefaults;
                }
                if (typeof proc.config.ConfirmText != 'undefined' && proc.config.ConfirmText && proc.config.ConfirmText != '') {
                    let resultCallback = (result) => {
                        if (result) {
                            proc.run(processparams, callBack, target, excludeHist, triggerElement);
                        }
                    };
                    flexygo.msg.confirm(proc.config.ConfirmText, resultCallback);
                }
                else {
                    proc.run(processparams, callBack, target, excludeHist, triggerElement);
                }
            }
        }
        nav.execProcess = execProcess;
        function openPageReturn(pageConf, objectname, objectwhere, defaults, pageContainer, reportname, processname, isClone, reportwhere) {
            pageContainer.html(flexygo.utils.loadingMsg());
            //pageContainer.trigger('pageloaded', pageConf);
            if (pageConf) {
                var bodyClass = '';
                if (pageConf.BodyCssClass) {
                    bodyClass = pageConf.BodyCssClass;
                }
                if (flexygo.debug && flexygo.debug.isDevelopMode && flexygo.debug.isDevelopMode()) {
                    bodyClass += ' develop';
                }
                if (pageContainer.is('#realMain')) {
                    $('body').attr('class', bodyClass);
                    resizeMain();
                }
                pageContainer.attr('pageName', pageConf.PageName);
                //else {
                //    pageContainer.attr('class', 'pageContainer ' + bodyClass);
                //}
                if (pageConf.Descrip.includes("{{") && !flexygo.utils.isBlank(reportname)) {
                    pageConf.Descrip = reportname;
                }
                pageContainer.closest('.flx-dialog,.flx-dialog-modal').find("span.ui-dialog-title").text(pageConf.Descrip);
                pageContainer.html(pageConf.LayoutTemplate);
                // Add page script 
                if (pageConf.Script && pageConf.Script != '') {
                    pageContainer.append('<script name="custom-script">' + pageConf.Script + '</script>');
                }
                // Add page Styles
                if (pageConf.Style && pageConf.Style != '') {
                    pageContainer.append('<style name="custom-style">' + pageConf.Style + '</style>');
                }
                var modules = flexygo.utils.sortObject(pageConf.Modules, 'Order');
                for (let i = 0; i < modules.length; i++) {
                    let mod = modules[i];
                    var cont = pageContainer.find('.' + mod.LayoutPositionId);
                    if (cont.length == 0) {
                        cont = pageContainer;
                    }
                    let container = $('<flx-module></flx-module>');
                    container.html(mod.ContainerTemplate).attr('modulename', mod.ModuleName).attr('type', mod.WebComponent.split(' ')[0]).addClass(mod.ContainerClass);
                    if (flexygo.utils.isSizeMobile() && modules.length == 1) {
                        container.find('.cntHeader').hide();
                    }
                    cont.append(container);
                    var componentString = mod.WebComponent;
                    if (mod.Params) {
                        componentString += ' ' + mod.Params;
                    }
                    /*var mode = 'edit';
                    if (reportname) { mode= 'report'; }
                    if (proccid) { mode= 'process'; }*/
                    //console.log("openpageret", mod.ModuleName, mod.ObjectDefaults);
                    let ctrl = container[0];
                    ctrl.componentString = componentString;
                    ctrl.isClone = isClone;
                    ctrl.objectname = objectname;
                    ctrl.objectwhere = objectwhere;
                    //ctrl.mode = mode;
                    ctrl.reportname = reportname;
                    ctrl.reportwhere = reportwhere;
                    ctrl.processname = processname;
                    ctrl.moduleName = mod.ModuleName;
                    ctrl.moduleTitle = mod.Title;
                    ctrl.icon = mod.IconClass;
                    if (mod.HeaderClass && mod.HeaderClass != '') {
                        ctrl.headerClass = mod.HeaderClass;
                    }
                    if (mod.ModuleClass && mod.ModuleClass != '') {
                        ctrl.moduleClass = mod.ModuleClass;
                    }
                    ctrl.canCollapse = mod.CanCollapse;
                    ctrl.canEnlarge = mod.CanEnlarge;
                    ctrl.canRefresh = mod.CanRefresh;
                    //ctrl.canClose = true;
                    ctrl.canConfig = true;
                    ctrl.JSAfterLoad = mod.JSAfterLoad;
                    ctrl.objectdefaults = mod.ObjectDefaults;
                    if (ctrl.objectdefaults) {
                        for (let key in ctrl.objectdefaults) {
                            if (ctrl.objectdefaults[key] != null && ctrl.objectdefaults[key].toString().indexOf('/Date(') != -1) {
                                ctrl.objectdefaults[key] = moment(moment.utc(ctrl.objectdefaults[key]).toDate()).format('YYYY-MM-DDTHH:mm:ss');
                            }
                        }
                    }
                    ctrl.moduleConfig = mod;
                    ctrl.ManualInit = mod.ManualInit;
                    if (mod.InitHidden) {
                        container.attr('init', 'false').hide();
                    }
                    else {
                        ctrl.init();
                    }
                }
                let ev = {
                    class: "page",
                    type: "loaded",
                    sender: pageConf,
                    masterIdentity: pageConf.PageName
                };
                flexygo.events.trigger(ev);
            }
        }
        nav.openPageReturn = openPageReturn;
        /**
       * Opens the parameter process page
       * @method openProcessParams
       * @param {string} processname - Process Identifier
       * @param {string} objectname - Name of the collection or entity
       * @param {string} objectwhere - Where of the collection or entity
       * @param {string} defaults - Defaults to be added to the process
       * @param {string} targetid - Target to open the window
       * @param {boolean} excludeHist - True to not store in history
       * @param {JQuery} triggerElement - Relative element to open the page
      */
        function openProcessParams(processname, objectname, objectwhere, defaults, targetid, excludeHist, triggerElement) {
            //process param page is currenty syspage-processparams-default
            flexygo.nav.openProcessParamsPage('syspage-processparams-default', processname, objectname, objectwhere, defaults, targetid, excludeHist, triggerElement);
        }
        nav.openProcessParams = openProcessParams;
        /**
         * Opens the parameter process page
         * @method openProcessParamsPage
         * @param {string} pagename - Desired page name
         * @param {string} processname - Process Identifier
         * @param {string} objectname - Name of the collection or entity
         * @param {string} objectwhere - Where of the collection or entity
         * @param {string} defaults - Defaults to be added to the process
         * @param {string} targetid - Target to open the window
         * @param {boolean} excludeHist - True to not store in history
         * @param {JQuery} triggerElement - Relative element to open the page
        */
        function openProcessParamsPage(pagename, processname, objectname, objectwhere, defaults, targetid, excludeHist, triggerElement) {
            if (typeof event != 'undefined') {
                event.preventDefault();
            }
            if (flexygo.utils.isSizeMobile() && targetid.indexOf('modal') != 0) {
                targetid = "current";
            }
            else if (flexygo.utils.isSizeMobile() && targetid.indexOf('modal') == 0) {
                targetid = "modal";
            }
            if (triggerElement) {
                triggerElement = getRealTarget(triggerElement);
            }
            if (targetid == 'opener') {
                targetid = getCurrentOpener(triggerElement);
            }
            var histObj = {
                navigateFun: 'openProcessParams',
                targetid: targetid,
                objectname: objectname,
                objectwhere: objectwhere,
                defaults: defaults,
                processname: processname
            };
            if (targetid && targetid.indexOf('new') == 0) {
                flexygo.targets.openNewWindow(histObj, targetid);
            }
            else {
                var pageContainer = flexygo.targets.createContainer(histObj, excludeHist, triggerElement);
                if (triggerElement && !triggerElement.closest('.pageContainer').is(pageContainer)) {
                    pageContainer.data('opener', triggerElement.closest('.pageContainer'));
                }
                flexygo.ajax.post('~/api/Page', 'GetPageByName', { "PageName": pagename }, (ret) => {
                    ret.pageHistory = histObj;
                    openPageReturn(ret, objectname, objectwhere, defaults, pageContainer, null, processname);
                });
            }
        }
        nav.openProcessParamsPage = openProcessParamsPage;
        /**
        * Opens the parameter report page
        * @method openReportsParams
        * @param {string} report - Identifier of the report
        * @param {string} reportwhere - Filter of the report
        * @param {string} objectname - Name of the collection or entity
        * @param {string} objectwhere - Where of the collection or entity
        * @param {string} defaults - Defaults to be added to the process
        * @param {string} targetid - Target to open the window
        * @param {boolean} excludeHist - True to not store in history
        * @param {JQuery} triggerElement - Relative element to open the page
       */
        function openReportsParams(reportname, reportwhere, objectname, objectwhere, defaults, targetid, excludeHist, triggerElement) {
            //report params page is currenty syspage-reportparams-default
            flexygo.nav.openReportsParamsPage('syspage-reportparams-default', reportname, reportwhere, objectname, objectwhere, defaults, targetid, excludeHist, triggerElement);
        }
        nav.openReportsParams = openReportsParams;
        /**
         * Opens the parameter report page
         * @method openReportsParamsPage
         * @param {string} pagename - Desired page name
         * @param {string} report - Identifier of the report
         * @param {string} reportwhere - Filter of the report
         * @param {string} objectname - Name of the collection or entity
         * @param {string} objectwhere - Where of the collection or entity
         * @param {string} defaults - Defaults to be added to the process
         * @param {string} targetid - Target to open the window
         * @param {boolean} excludeHist - True to not store in history
         * @param {JQuery} triggerElement - Relative element to open the page
        */
        function openReportsParamsPage(pagename, reportname, reportwhere, objectname, objectwhere, defaults, targetid, excludeHist, triggerElement) {
            if (typeof event != 'undefined') {
                event.preventDefault();
            }
            if (flexygo.utils.isSizeMobile() && targetid.indexOf('modal') != 0) {
                targetid = "current";
            }
            else if (flexygo.utils.isSizeMobile() && targetid.indexOf('modal') == 0) {
                targetid = "modal";
            }
            if (triggerElement) {
                triggerElement = getRealTarget(triggerElement);
            }
            if (targetid == 'opener') {
                targetid = getCurrentOpener(triggerElement);
            }
            var histObj = {
                navigateFun: 'openReportsParams',
                targetid: targetid,
                objectname: objectname,
                objectwhere: objectwhere,
                defaults: defaults,
                reportname: reportname,
                reportwhere: reportwhere
            };
            if (targetid && targetid.indexOf('new') == 0) {
                flexygo.targets.openNewWindow(histObj, targetid);
            }
            else {
                var pageContainer = flexygo.targets.createContainer(histObj, excludeHist, triggerElement);
                flexygo.ajax.post('~/api/Page', 'GetPageByName', { "PageName": pagename }, (ret) => {
                    ret.pageHistory = histObj;
                    openPageReturn(ret, objectname, objectwhere, defaults, pageContainer, reportname, null, null, reportwhere);
                });
            }
        }
        nav.openReportsParamsPage = openReportsParamsPage;
        /**
         * Opens the report page
         * @method viewReport
         * @param {string} reportname - Identifier of the report
         * @param {string} reportwhere - filter of the report
         * @param {string} objectname - Name of the collection or entity
         * @param {string} objectwhere - Where of the collection or entity
         * @param {string} defaults - Defaults to be added to the process
         * @param {any} params - Array of key/value pararameters
         * @param {string} targetid - Target to open the window
         * @param {boolean} excludeHist - True to not store in history
         * @param {JQuery} triggerElement - Relative element to open the page
        */
        function viewReport(reportname, reportwhere, objectname, objectwhere, defaults, params, targetid, excludeHist) {
            if (typeof event != 'undefined') {
                event.preventDefault();
            }
            var callParams;
            callParams = 'ObjectName=' + objectname + '&ObjectWhere=' + objectwhere + '&ReportName=' + reportname;
            //came from param form
            if (params)
                callParams += '&Params=' + JSON.stringify(params);
            //report definition has a report where
            if (reportwhere)
                callParams += '&Filter=' + reportwhere;
            //put it all into one encoded id
            callParams = 'id=' + flexygo.history.Base64.encode(callParams);
            flexygo.nav.openURL('~/forms/Reports.aspx', callParams);
        }
        nav.viewReport = viewReport;
        /**
         * Opens an URL
         * @method openURL
         * @param {string} url - URL identifier
         * @param {string} params - parameters to add to the URL
         * @param {string} targetid - Target to open the window
        */
        function openURL(url, params, targetid) {
            if (typeof event != 'undefined') {
                event.preventDefault();
            }
            var n = Math.floor((Math.random() * 4) + 1);
            url = flexygo.utils.resolveUrl(url);
            if (params && params != '') {
                if (params.indexOf('?')) {
                    url += '?' + params;
                }
                else {
                    url += '&' + params;
                }
            }
            if (flexygo.utils.isAgentMobile()) {
                return window.open(url);
            }
            else {
                let p = window.open('');
                if (!p) {
                    flexygo.msg.warning('navigation.popupwarning');
                }
                else {
                    p.document.write('<htm><body style="background:url(' + flexygo.utils.resolveUrl('~/img/loading' + n + '.gif') + ') no-repeat;background-size:cover"></body></html>');
                    p.document.location.href = url;
                    return p;
                }
            }
        }
        nav.openURL = openURL;
        /**
        * Opens an edit table Page
        * @method openEditTable
        * @param {string} tablename - Name of the table
        * @param {string} targetid - Target to open the window
        * @param {string} tabledescrip - Description of the table
        * @param {boolean} excludeHist - True to not store in history
        * @param {JQuery} triggerElement - Relative element to open the page
       */
        function openEditTable(tablename, targetid, tabledescrip, excludeHist, triggerElement) {
            if (typeof event != 'undefined') {
                event.preventDefault();
            }
            if (flexygo.utils.isSizeMobile() && targetid.indexOf('modal') != 0) {
                targetid = "current";
            }
            else if (flexygo.utils.isSizeMobile() && targetid.indexOf('modal') == 0) {
                targetid = "modal";
            }
            if (triggerElement) {
                triggerElement = getRealTarget(triggerElement);
            }
            if (targetid == 'opener') {
                targetid = getCurrentOpener(triggerElement);
            }
            var histObj = {
                tablename: tablename,
                targetid: targetid,
                navigateFun: 'openedittable',
                tabledescrip: tabledescrip
            };
            if (targetid && targetid.indexOf('new') == 0) {
                flexygo.targets.openNewWindow(histObj, targetid);
            }
            else {
                var pageContainer = flexygo.targets.createContainer(histObj, excludeHist, triggerElement);
                var navString = '';
                navString += '<div class="col-9 col-m-6 col-s-12">';
                navString += '<flx-container type="emptyCnt">';
                navString += '<span class="sectitle"><i class="f-icon icon-new-email"> </i>' + tabledescrip + '</span>';
                navString += '</flx-container>';
                navString += '</div>';
                navString += '<div class="col-3 col-m-6 col-s-12">';
                navString += '<flx-container type="emptyCnt">';
                navString += '<flx-genericsearch gridId="master1" ></flx-editgrid>';
                navString += '</flx-container>';
                navString += '</div>';
                navString += '<div class="col-12">';
                navString += '<flx-container type="emptyCnt">';
                navString += '<flx-editgrid id="master1" tablename="' + tablename + '"></flx-editgrid>';
                navString += '</flx-container>';
                navString += '</div>';
                pageContainer.html(navString);
                let mCtl = $('#mainFooterMenu')[0];
                mCtl.init();
                mCtl.hide();
                mCtl.clear();
                let wcMaster = $('#master1')[0];
                mCtl.addItem('flx-icon icon-trash', 'Borrar todo', () => { wcMaster.deleteAll(); });
                mCtl.addItem('flx-icon icon-edit', 'Editar', () => { wcMaster.editAll(); });
                mCtl.addItem('flx-icon icon-remove', 'Deshacer Edición', () => { wcMaster.uneditAll(); });
                mCtl.addItem('flx-icon icon-save', 'Guardar todo', () => { wcMaster.saveAll(); });
                flexygo.history.historyLog.add('flx-icon icon-properties-settings', tablename, histObj);
            }
        }
        nav.openEditTable = openEditTable;
        /**
        * Opens a help page
        * @method openHelpId
        * @param {string} helpid - Identifier of the help page
        * @param {string} targetid - Target to open the window
        * @param {boolean} excludeHist - True to not store in history
        * @param {JQuery} triggerElement - Relative element to open the page
       */
        function openHelpId(helpid, targetid, excludeHist, triggerElement) {
            if (typeof event != 'undefined') {
                event.preventDefault();
            }
            if (flexygo.utils.isSizeMobile() && targetid.indexOf('modal') != 0) {
                targetid = "current";
            }
            else if (flexygo.utils.isSizeMobile() && targetid.indexOf('modal') == 0) {
                targetid = "modal";
            }
            if (triggerElement) {
                triggerElement = getRealTarget(triggerElement);
            }
            if (targetid == 'opener') {
                targetid = getCurrentOpener(triggerElement);
            }
            var histObj = {
                targetid: targetid,
                navigateFun: 'openhelpid',
                helpid: helpid
            };
            if (targetid && targetid.indexOf('new') == 0) {
                flexygo.targets.openNewWindow(histObj, targetid);
            }
            else {
                var pageContainer = flexygo.targets.createContainer(histObj, excludeHist, triggerElement);
                flexygo.ajax.post('~/api/Page', 'GetHelpById', { "HelpId": helpid }, (ret) => {
                    if (ret) {
                        ret.pageHistory = histObj;
                        flexygo.history.historyLog.add('flx-icon icon-help-2', ret.Title, histObj);
                        pageContainer.html(ret.HTMLText);
                        pageContainer.prepend('<div class="develop-only help-button help-fixed"><button class="btn btn-default" onclick="flexygo.nav.openPage(\'edit\',\'sysHelp\',\'(HelpId=\\\'' + helpid + '\\\')\',null,\'current\',false,$(this))"><i class="flx-icon icon-pencil"></i> </button></div>');
                        //$(document).trigger('helpLoaded', [helpid, pageContainer]);
                        var ev = {
                            class: "page",
                            type: "loaded",
                            sender: ret,
                            masterIdentity: helpid
                        };
                        flexygo.events.trigger(ev);
                    }
                });
            }
        }
        nav.openHelpId = openHelpId;
        /**
       * Gets help content
       * @method GetHelpContent
       * @param {string} helpid - Identifier of the help page
       * @returns {string} - Help content
      */
        function getHelpContent(helpid) {
            let retHtml = '';
            if (helpid) {
                flexygo.ajax.syncPost('~/api/Page', 'GetHelpById', { "HelpId": helpid }, (ret) => {
                    if (ret) {
                        retHtml = ret.HTMLText;
                    }
                });
            }
            return retHtml;
        }
        nav.getHelpContent = getHelpContent;
        /**
     * Attaches Object Menu to button
     * @method getObjectMenu
     * @param {string} objectname - objectName
     * @param {string} objectwhere - object where
     * @param {string} defaults - object defaults
     * @param {string} btn - button
    */
        function getObjectMenu(objectname, objectwhere, defaults, btn, coord, options) {
            var cntMenu = $('flx-contextmenu')[0];
            if (!cntMenu.hideMenu(btn)) {
                let proc = new flexygo.obj.Entity(objectname, objectwhere).processes(options);
                //Clear not Show in Menu items
                if (proc.ObjectLink && Object.keys(proc.ObjectLink.ChildNodes).length > 0) {
                    for (let key in proc.ObjectLink.ChildNodes) {
                        if (!proc.ObjectLink.ChildNodes[key].ShowInMenu) {
                            delete proc.ObjectLink.ChildNodes[key];
                        }
                    }
                }
                if (defaults) {
                    //Set defaults to action nodes.
                    if (proc.ActionNode && Object.keys(proc.ActionNode.ChildNodes).length > 0) {
                        for (let itm in proc.ActionNode.ChildNodes) {
                            proc.ActionNode.ChildNodes[itm].ObjectDefaults = defaults;
                        }
                    }
                    //Set defaults to process nodes.
                    if (proc.ProcessLink && Object.keys(proc.ProcessLink.ChildNodes).length > 0) {
                        for (let itm in proc.ProcessLink.ChildNodes) {
                            proc.ProcessLink.ChildNodes[itm].ObjectDefaults = defaults;
                        }
                    }
                    //Set defaults to report nodes.
                    if (proc.ReportLink && Object.keys(proc.ReportLink.ChildNodes).length > 0) {
                        for (let itm in proc.ReportLink.ChildNodes) {
                            proc.ReportLink.ChildNodes[itm].ObjectDefaults = defaults;
                        }
                    }
                }
                cntMenu.showObjectMenu(proc, btn, coord);
            }
        }
        nav.getObjectMenu = getObjectMenu;
        function getRealTarget(elm) {
            if (elm.closest('flx-contextmenu').length > 0) {
                elm = elm.closest('flx-contextmenu')[0].parent;
            }
            return elm;
        }
        nav.getRealTarget = getRealTarget;
        function getCurrentOpener(triggerElement) {
            let opener = '';
            if (triggerElement && triggerElement.closest('.pageContainer').length > 0) {
                let context = triggerElement.closest('.pageContainer').data('context');
                if (context && context.opener) {
                    return 'opener|' + context.opener;
                }
            }
            return 'main';
        }
        nav.getCurrentOpener = getCurrentOpener;
        /**
         * Close flexygo popup or modal page
         * @method closePage
         * @param {JQuery} elm - Element inside page to close
        */
        function closePage(elm) {
            if (!elm.is) {
                elm = $(elm);
            }
            if (elm.is('.ui-dialog')) {
                elm.remove();
            }
            else {
                elm.closest(".ui-dialog").remove();
            }
        }
        nav.closePage = closePage;
        /**
         * Close all flexygo popup or modal page
         * @method closeAllPages
        */
        function closeAllPages() {
            $('.ui-dialog').remove();
        }
        nav.closeAllPages = closeAllPages;
        //MOBILE NAV BAR UTILS
        function toggleMobileMenu() {
            flexygo.nav.toggleFlxnav($('#mainMenu'));
            $('#mainMenu').attr('mode', 'nav');
            if ($('#mainNav').is(':visible')) {
                flexygo.nav.toggleFlxnav($('#mainNav'));
            }
        }
        nav.toggleMobileMenu = toggleMobileMenu;
        function toggleMobileNav() {
            flexygo.nav.toggleFlxnav($('#mainNav'));
            if ($('#mainMenu').is(':visible')) {
                flexygo.nav.toggleFlxnav($('#mainMenu'));
            }
        }
        nav.toggleMobileNav = toggleMobileNav;
        function toggleNavBar() {
            $('#miniButton i').toggleClass('flipped');
            flexygo.nav.toggleFlxnav($('#mainNav'));
        }
        nav.toggleNavBar = toggleNavBar;
        function hideNavBar() {
            let menuNav = $('#mainNav');
            if (menuNav.is(':visible')) {
                $('#miniButton i').toggleClass('flipped');
                flexygo.nav.toggleFlxnav(menuNav);
            }
        }
        nav.hideNavBar = hideNavBar;
        function toggleFlxnav(menuNav) {
            let isOpen;
            if (menuNav.is(':visible')) {
                menuNav.attr('minimized', 'True');
                isOpen = false;
            }
            else {
                menuNav.attr('minimized', 'false');
                isOpen = true;
            }
            menuNav.animate({
                'min-width': 'toggle',
                'width': 'toggle',
            }, 250);
            let ev = {
                class: "navbar",
                type: "toggled",
                sender: { isOpen: isOpen },
            };
            flexygo.events.trigger(ev);
        }
        nav.toggleFlxnav = toggleFlxnav;
    })(nav = flexygo.nav || (flexygo.nav = {}));
})(flexygo || (flexygo = {}));
//# sourceMappingURL=navigation.js.map