/*
*
* Copyright 2016 RIFT.IO Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import React from 'react';
import {
Router, Route, hashHistory, IndexRoute
}
from 'react-router';
import SkyquakeContainer from 'widgets/skyquake_container/skyquakeContainer.jsx';
export default function(config, context) {
let routes = [];
let index = null;
let components = null;
if (config && config.routes) {
routes = buildRoutes(config.routes)
function buildRoutes(routes) {
return routes.map(function(route, index) {
let routeConfig = {};
if (route.route && route.component) {
// ES6 modules need to specify default
let path = route.route;
if(route.path && route.path.replace(' ', '') != '') {
path = route.path
}
routeConfig = {
path: path,
name: route.label,
getComponent: function(location, cb) {
require.ensure([], (require) => {
cb(null, context(route.component).default)
})
}
}
if(route.routes && (route.routes.length > 0)){
routeConfig.childRoutes = buildRoutes(route.routes)
}
} else {
console.error('Route not properly configured. Check that both path and component are specified');
}
return routeConfig;
});
}
routes.push({
path: '/login',
name: 'Login',
component: require('../login/login.jsx').default
});
routes.push({
path:'*',
name: 'Dashboard',
getComponent: function(loc, cb) {
cb(null, context(config.dashboard).default);
}
});
if (config.dashboard) {
// ES6 modules need to specify default
index =