import ngModule from './module'; import getMainRoute from 'core/lib/get-main-route'; config.$inject = ['$stateProvider', '$urlRouterProvider']; function config($stateProvider, $urlRouterProvider) { $urlRouterProvider .otherwise('/'); $stateProvider .state('layout', { abstract: true, template: '', }) .state('outLayout', { abstract: true, template: '', }) .state('login', { parent: 'outLayout', url: '/login?continue', description: 'Login', template: '' }) .state('recover-password', { parent: 'outLayout', url: '/recover-password', description: 'Recover password', template: '' }) .state('reset-password', { parent: 'outLayout', url: '/reset-password', description: 'Reset password', template: '' }) .state('home', { parent: 'layout', url: '/', description: 'Home', template: '' }); for (let file in window.routes) { let routeFile = window.routes[file]; let fileRoutes = routeFile.routes; let moduleName = routeFile.module; let validations = routeFile.validations || false; let mainModule = getMainRoute(fileRoutes); if (!mainModule) continue; for (let route of fileRoutes) { let configRoute = { url: route.url, template: `<${route.component} ${getParams(route)}>`, description: route.description, reloadOnSearch: false, resolve: { loader: loader(moduleName, validations) }, data: { moduleIndex: file, acl: route.acl } }; if (route.abstract) configRoute.abstract = true; if (!route.state.includes('.')) configRoute.parent = 'layout'; if (route.routeParams) configRoute.params = route.routeParams; $stateProvider.state(route.state, configRoute); } } function getParams(route) { let params = ''; let temporalParams = []; if (!route.params) return params; Object.keys(route.params).forEach(key => { temporalParams.push(`${key} = "${route.params[key]}"`); }); return temporalParams.join(' '); } function loader(moduleName) { load.$inject = ['vnModuleLoader']; function load(moduleLoader) { return moduleLoader.load(moduleName); } return load; } } ngModule.config(config);