app-tab-route-provider.js 2.53 KB
Newer Older
eddie.woo's avatar
eddie.woo committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
/// <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
    };
}
]);