vue-django
Version:
个人实验项目, 本框架的目标是借鉴并超越django admin的自动化思想, 实现UI前端的极简快速定制开发
65 lines (61 loc) • 1.8 kB
JavaScript
/**
* Created by denishuang on 2018/4/1.
*/
/*
{exam:'paper,score',
school:['clazz','student']
course:null
}
*/
export function genMenusFromApps(apps, menus, modelPermissions) {
if (!menus) {
menus = Object.keys(apps)
} else if (typeof menus == 'object') {
menus = Object.keys(menus)
}
let others = {}
let menuItems = {}
menus.forEach((a) => {
let app = apps[a]
let models = menus[a]
if (!models) {
models = Object.keys(app.models)
}
if (typeof models == 'string') {
models = models.split(',')
}
let subItems = []
if(app.home_page) {
subItems.push({url: `/${a}/index/`, ...app.home_page})
}
models.forEach((m) => {
let menu = m
let model = app.models[m]
if (typeof m == 'string') {
let mn = `${a}.${m}`
let hidden = model.hidden
if (hidden === undefined && modelPermissions) {
hidden = (mn in modelPermissions) ? false : true
}
menu = {name: model.verbose_name, icon: model.icon || 'file', url: `/${a}/${m}/`, hidden}
}
if (model.menu) {
others[model.menu] = others[model.menu] || []
others[model.menu].push(menu)
} else {
subItems.push(menu)
}
})
let name =app.verbose_name
let hidden = !subItems.find(a => !a.hidden) || app.hidden
menuItems[name]={name , items: subItems, icon: app.icon || 'file', hidden}
})
for(var k in others) {
menuItems[k]={name:k, items: others[k]}
}
return menuItems
}
let menus = {
items: []
}
export default menus