39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
const MODULES = {
|
|
announcements: { key: "announcements", title: "公告", desc: "查看班级重要通知", group: "class", icon: "告" },
|
|
schedule: { key: "schedule", title: "排期", desc: "课程、活动与截止日", group: "class", icon: "日" },
|
|
directory: { key: "directory", title: "成员名录", desc: "查找同学与班委", group: "class", icon: "友" },
|
|
fund: { key: "fund", title: "班费", desc: "查看公开收支账本", group: "class", icon: "账" },
|
|
votes: { key: "votes", title: "投票", desc: "参与班级决策", group: "class", icon: "选" },
|
|
timeline: { key: "timeline", title: "班级动态", desc: "分享近况与评论互动", group: "interact", icon: "动" }
|
|
};
|
|
|
|
const MINI_PROGRAM_MODULE_KEYS = Object.keys(MODULES);
|
|
|
|
function enabledSet(enabledModules) {
|
|
const source = Array.isArray(enabledModules) ? enabledModules : MINI_PROGRAM_MODULE_KEYS;
|
|
return new Set(source.filter((key) => MINI_PROGRAM_MODULE_KEYS.includes(key)));
|
|
}
|
|
|
|
function isModuleEnabled(key, enabledModules) {
|
|
return enabledSet(enabledModules).has(key);
|
|
}
|
|
|
|
function visibleModules(group, enabledModules) {
|
|
const enabled = enabledSet(enabledModules);
|
|
return MINI_PROGRAM_MODULE_KEYS
|
|
.map((key) => MODULES[key])
|
|
.filter((item) => item.group === group && enabled.has(item.key));
|
|
}
|
|
|
|
function getModule(key) {
|
|
return MODULES[key] || null;
|
|
}
|
|
|
|
module.exports = {
|
|
MODULES,
|
|
MINI_PROGRAM_MODULE_KEYS,
|
|
getModule,
|
|
isModuleEnabled,
|
|
visibleModules
|
|
};
|