/// <reference path="../../app.js" /> /// <reference path="../enums.js" /> commonModule.factory('appTabRouteProvider', ['$log', 'enums', 'constants', function ($log, enums, constants) { 'use strict'; $log.debug('appTabRouteProvider.ctor()...'); var i; var reportDynamicRoutes = []; var getTabRouteUrl = function (tab) { if (tab.tabType === enums.tabType.worklist) { tab.state = 'dashboard' return '/dashboard/compare'; } else if (tab.tabType === enums.tabType.registration) { return '/'; } else if (tab.tabType === enums.tabType.report) { var availableTab = _.find(reportDynamicRoutes, function (route) { return route.tabId === tab.tabId; }); if (availableTab) { return '/{0}/{1}'.format(availableTab.routeViewName, tab.tabId); } availableTab = _.find(reportDynamicRoutes, function (route) { return route.isWorking === false; }); if (availableTab) { availableTab.tabId = tab.tabId; availableTab.isWorking = true; tab.state = availableTab.routeState; tab.route = availableTab; return '/{0}/{1}'.format(availableTab.routeViewName, tab.tabId); } $log.error('Registration met the ceiling!'); return '/'; } else if (tab.tabType === enums.tabType.clientSetting) { tab.state = 'progress'; return '/progress'; } else if (tab.tabType === enums.tabType.selfServiceSetting) { tab.state = 'ris.selfservicesetting' return '/selfservicesetting'; } else { $log.error(tab.tabType + ' is not supported!'); return '/'; } }; var tabCeiling = constants.tabCeiling - 1; var registrationDynamicRoutes = []; for (i = 1; i <= tabCeiling; i++) { registrationDynamicRoutes.push({ routeState: 'ris.registration{0}'.format(i), routeViewName: 'registration{0}'.format(i), isWorking: false, tabId: '' }); }; for (i = 1; i <= tabCeiling; i++) { reportDynamicRoutes.push({ routeState: 'ris.report{0}'.format(i), routeViewName: 'report{0}'.format(i), isWorking: false, tabId: '' }); }; return { getTabRouteUrl: getTabRouteUrl, registrationDynamicRoutes: registrationDynamicRoutes, reportDynamicRoutes: reportDynamicRoutes }; } ]);