X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FUI.git;a=blobdiff_plain;f=skyquake%2Fframework%2Fwidgets%2Fskyquake_nav%2FskyquakeNav.jsx;h=1aaaf4d454ce4dfcf341859d9d6424b036c48d9e;hp=a61ee541b6bf9d952af32a120bf5d13f3fbc6586;hb=a81c177c80a2428371b00015fbc9e3837f33fea8;hpb=2279bd2b93eb7cf73526ee3cc1ae299f4bcfe48e
diff --git a/skyquake/framework/widgets/skyquake_nav/skyquakeNav.jsx b/skyquake/framework/widgets/skyquake_nav/skyquakeNav.jsx
index a61ee541b..1aaaf4d45 100644
--- a/skyquake/framework/widgets/skyquake_nav/skyquakeNav.jsx
+++ b/skyquake/framework/widgets/skyquake_nav/skyquakeNav.jsx
@@ -25,6 +25,7 @@ import 'style/common.scss';
import './skyquakeNav.scss';
import SelectOption from '../form_controls/selectOption.jsx';
import {FormSection} from '../form_controls/formControls.jsx';
+import SkyquakeRBAC from 'widgets/skyquake_rbac/skyquakeRBAC.jsx';
//Temporary, until api server is on same port as webserver
var rw = require('utils/rw.js');
@@ -63,21 +64,28 @@ class SelectProject extends React.Component {
render() {
let props = this.props;
let currentValue = JSON.stringify(props.currentProject);
- let projects = this.props.projects.map((p,i) => {
+ let projects = this.props.projects && this.props.projects.map((p,i) => {
return {
label: p.name,
value: p.name
}
});
+ let hasProjects = (this.props.projects && (this.props.projects.length > 0))
return (
- Project:
-
+ {
+ hasProjects ? 'Project:' : 'No Projects Assigned'
+ }
+ {
+ hasProjects ?
+
+ : null
+ }
)
}
@@ -96,12 +104,16 @@ class UserNav extends React.Component {
}
render() {
let props = this.props;
+ let userProfileLink = '';
+ this.props.nav['user_management'] && this.props.nav['user_management'].routes.map((r) => {
+ if(r.unique) {
+ userProfileLink = returnLinkItem(r, props.currentUser)
+ }
+ })
return (
@@ -205,12 +217,12 @@ export function buildNavListItem (k, link, index) {
* @param {object} link Routing information from nav object.
* @return {object} component returns a react component that links to a new route.
*/
-export function returnLinkItem(link) {
+export function returnLinkItem(link, label) {
let ref;
let route = link.route;
if(link.isExternal) {
ref = (
- {link.label}
+ {label || link.label}
)
} else {
if(link.path && link.path.replace(' ', '') != '') {
@@ -225,8 +237,8 @@ export function returnLinkItem(link) {
}
}
ref = (
-
- {link.label}
+
+ {label || link.label}
)
}
@@ -245,17 +257,31 @@ export function buildNav(nav, currentPlugin, props) {
let navList = [];
let navListHTML = [];
let secondaryNav = [];
+ let adminNav = [];
let self = this;
self.hasSubNav = {};
let secondaryNavHTML = (
{secondaryNav}
+
+ currentUser={props.currentUser}
+ nav={nav} />
)
for (let k in nav) {
@@ -285,17 +311,26 @@ export function buildNav(nav, currentPlugin, props) {
NavList = nav[k].routes.map(buildNavListItem.bind(self, k));
navItem.priority = nav[k].priority;
navItem.order = nav[k].order;
- navItem.html = (
-
+ if(nav[k].admin_link) {
+ adminNav.push((
+
-
+ {dashboardLink}
+
+ ))
+ } else {
+ navItem.html = (
+
{dashboardLink} {self.hasSubNav[k] ? : ''}
-
+
);
navList.push(navItem)
+ }
+
}
}
//Sorts nav items by order and returns only the markup