Merge b03539ab95
into 7f2596f4ab
commit
94141fe29b
|
@ -24,34 +24,43 @@
|
||||||
$urlRouterProvider.otherwise('/dashboard');
|
$urlRouterProvider.otherwise('/dashboard');
|
||||||
|
|
||||||
baSidebarServiceProvider.addStaticItem({
|
baSidebarServiceProvider.addStaticItem({
|
||||||
|
name: 'pages',
|
||||||
title: 'Pages',
|
title: 'Pages',
|
||||||
icon: 'ion-document',
|
icon: 'ion-document',
|
||||||
subMenu: [{
|
subMenu: [{
|
||||||
|
name: 'pages.signIn',
|
||||||
title: 'Sign In',
|
title: 'Sign In',
|
||||||
fixedHref: 'auth.html',
|
fixedHref: 'auth.html',
|
||||||
blank: true
|
blank: true
|
||||||
}, {
|
}, {
|
||||||
|
name: 'pages.signUp',
|
||||||
title: 'Sign Up',
|
title: 'Sign Up',
|
||||||
fixedHref: 'reg.html',
|
fixedHref: 'reg.html',
|
||||||
blank: true
|
blank: true
|
||||||
}, {
|
}, {
|
||||||
|
name: 'pages.userProfile',
|
||||||
title: 'User Profile',
|
title: 'User Profile',
|
||||||
stateRef: 'profile'
|
stateRef: 'profile'
|
||||||
}, {
|
}, {
|
||||||
|
name: 'pages.page404',
|
||||||
title: '404 Page',
|
title: '404 Page',
|
||||||
fixedHref: '404.html',
|
fixedHref: '404.html',
|
||||||
blank: true
|
blank: true
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
baSidebarServiceProvider.addStaticItem({
|
baSidebarServiceProvider.addStaticItem({
|
||||||
|
name: 'menuLevel1',
|
||||||
title: 'Menu Level 1',
|
title: 'Menu Level 1',
|
||||||
icon: 'ion-ios-more',
|
icon: 'ion-ios-more',
|
||||||
subMenu: [{
|
subMenu: [{
|
||||||
|
name: 'menuLevel1.menuLevel1.1',
|
||||||
title: 'Menu Level 1.1',
|
title: 'Menu Level 1.1',
|
||||||
disabled: true
|
disabled: true
|
||||||
}, {
|
}, {
|
||||||
|
name: 'menuLevel1.menuLevel1.2',
|
||||||
title: 'Menu Level 1.2',
|
title: 'Menu Level 1.2',
|
||||||
subMenu: [{
|
subMenu: [{
|
||||||
|
name: 'menuLevel1.menuLevel1.2.1',
|
||||||
title: 'Menu Level 1.2.1',
|
title: 'Menu Level 1.2.1',
|
||||||
disabled: true
|
disabled: true
|
||||||
}]
|
}]
|
||||||
|
|
|
@ -13,26 +13,51 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
/** @ngInject */
|
/** @ngInject */
|
||||||
this.$get = function($state, layoutSizes) {
|
this.$get = function ($state, layoutSizes, baSidebarModel) {
|
||||||
return new _factory();
|
return new _factory();
|
||||||
|
|
||||||
function _factory() {
|
function _factory() {
|
||||||
var isMenuCollapsed = shouldMenuBeCollapsed();
|
var isMenuCollapsed = shouldMenuBeCollapsed();
|
||||||
|
|
||||||
this.getMenuItems = function() {
|
this.getMenuItems = function () {
|
||||||
var states = defineMenuItemStates();
|
var menuItems = baSidebarModel.getMenuItems();
|
||||||
var menuItems = states.filter(function(item) {
|
if (!menuItems) {
|
||||||
return item.level == 0;
|
menuItems = createMenu();
|
||||||
});
|
baSidebarModel.setMenuItems(menuItems);
|
||||||
|
}
|
||||||
|
return menuItems;
|
||||||
|
};
|
||||||
|
|
||||||
menuItems.forEach(function(item) {
|
this.addMenuItem = function (item) {
|
||||||
var children = states.filter(function(child) {
|
var menuItems = baSidebarModel.getMenuItems();
|
||||||
return child.level == 1 && child.name.indexOf(item.name) === 0;
|
var parent = null;
|
||||||
});
|
_findParent(menuItems, item);
|
||||||
item.subMenu = children.length ? children : null;
|
if (parent) {
|
||||||
});
|
_addToSubMenu(item);
|
||||||
|
} else {
|
||||||
|
menuItems.push(item);
|
||||||
|
}
|
||||||
|
|
||||||
return menuItems.concat(staticMenuItems);
|
baSidebarModel.setMenuItems(menuItems);
|
||||||
|
|
||||||
|
function _findParent(parents, item) {
|
||||||
|
parent = parents
|
||||||
|
.filter(function (p) {
|
||||||
|
return item.name.indexOf(p.name) === 0;
|
||||||
|
})
|
||||||
|
.pop();
|
||||||
|
if (parent && parent.subMenu) {
|
||||||
|
_findParent(parent.subMenu, item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _addToSubMenu(item) {
|
||||||
|
if (parent.subMenu) {
|
||||||
|
parent.subMenu.push(item);
|
||||||
|
} else {
|
||||||
|
parent.subMenu = [item];
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
this.shouldMenuBeCollapsed = shouldMenuBeCollapsed;
|
this.shouldMenuBeCollapsed = shouldMenuBeCollapsed;
|
||||||
|
@ -63,6 +88,32 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function createMenu() {
|
||||||
|
var parentLevel = 0;
|
||||||
|
var states = defineMenuItemStates();
|
||||||
|
var parents = states.filter(function(item) {
|
||||||
|
return item.level == parentLevel;
|
||||||
|
});
|
||||||
|
|
||||||
|
_bindMenuItems(parents, ++parentLevel);
|
||||||
|
return parents.concat(staticMenuItems);
|
||||||
|
|
||||||
|
function _bindMenuItems(parents, childLevel) {
|
||||||
|
var child = states.filter(function (item) {
|
||||||
|
return item.level == childLevel;
|
||||||
|
});
|
||||||
|
if (child.length) {
|
||||||
|
parents.forEach(function (p) {
|
||||||
|
var children = child.filter(function (c) {
|
||||||
|
return c.name.indexOf(p.name) === 0;
|
||||||
|
});
|
||||||
|
p.subMenu = children.length ? children : null;
|
||||||
|
});
|
||||||
|
_bindMenuItems(child, ++childLevel)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function defineMenuItemStates() {
|
function defineMenuItemStates() {
|
||||||
return $state.get()
|
return $state.get()
|
||||||
.filter(function(s) {
|
.filter(function(s) {
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module('BlurAdmin.theme.components')
|
||||||
|
.factory('baSidebarModel', baSidebarModel);
|
||||||
|
|
||||||
|
/** @ngInject */
|
||||||
|
function baSidebarModel() {
|
||||||
|
var menuItems = null;
|
||||||
|
|
||||||
|
function getMenuItems() {
|
||||||
|
return menuItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setMenuItems(items) {
|
||||||
|
menuItems = items;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
getMenuItems: getMenuItems,
|
||||||
|
setMenuItems: setMenuItems
|
||||||
|
};
|
||||||
|
}
|
||||||
|
})();
|
Loading…
Reference in New Issue