X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=skyquake%2Fframework%2Fwidgets%2Fskyquake_container%2FskyquakeRouter.jsx;fp=skyquake%2Fframework%2Fwidgets%2Fskyquake_container%2FskyquakeRouter.jsx;h=fc3231d3a85d12e504855f85c544717d69ab0749;hb=e29efc315df33d546237e270470916e26df391d6;hp=0000000000000000000000000000000000000000;hpb=9c5e457509ba5a1822c316635c6308874e61b4b9;p=osm%2FUI.git diff --git a/skyquake/framework/widgets/skyquake_container/skyquakeRouter.jsx b/skyquake/framework/widgets/skyquake_container/skyquakeRouter.jsx new file mode 100644 index 000000000..fc3231d3a --- /dev/null +++ b/skyquake/framework/widgets/skyquake_container/skyquakeRouter.jsx @@ -0,0 +1,106 @@ +/* + * + * 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 = ; + } else { + index = DefaultDashboard + } + + const rootRoute = { + component: SkyquakeContainer, + path: '/', + name: 'Dashboard', + indexRoute: { + component: (config.dashboard) ? context(config.dashboard).default : DefaultDashboard + }, + childRoutes: routes + } + + return(( + + + )) + } else { + console.error('There are no routes configured in the config.json file'); + } +} + +//When no default dashboard is specified in the plugin_config.json, use this component. +class DefaultDashboard extends React.Component { + constructor(props) { + super(props) + } + render() { + let html; + html =
This is a default dashboard page component
; + return html; + } +}