UNPKG

vue-django

Version:

个人实验项目, 本框架的目标是借鉴并超越django admin的自动化思想, 实现UI前端的极简快速定制开发

65 lines (61 loc) 1.8 kB
/** * 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