53 lines
2.2 KiB
JavaScript
53 lines
2.2 KiB
JavaScript
// 待办角标:1 分钟定时刷新 + 点击打开待办列表
|
||
// 由 HTML shell 自动加载(configuredServer.get_js_files 收集 wwwroot 下 .js,在 bricks.js 之后引入)
|
||
// 列表与详情的界面全部由后端 dspy 返回 bricks widget 描述渲染:
|
||
// /pipeline-sdlc/api/my_todos_popup.dspy → 待办列表弹窗
|
||
// /pipeline-sdlc/api/todo_detail.dspy → 待办详情(正文 MdWidget + VScrollPanel 滚动 + 操作按钮)
|
||
(function(){
|
||
if (typeof bricks === 'undefined') return;
|
||
|
||
window.refreshTodo = function(){
|
||
fetch('/pipeline-sdlc/api/project_human_count.dspy')
|
||
.then(function(r){ return r.json(); })
|
||
.then(function(d){
|
||
var n = (d && d.count) || 0;
|
||
var b = bricks.getWidgetById && bricks.getWidgetById('todo_badge', bricks.app);
|
||
if (b && b.text_w) {
|
||
b.text_w.set_text(n > 0 ? ('🔔 待办 ' + n) : '🔔 待办');
|
||
}
|
||
});
|
||
};
|
||
|
||
window.openMyTodos = function(){
|
||
// 已打开则先关掉,避免叠加多个列表弹窗
|
||
var old = bricks.getWidgetById && bricks.getWidgetById('my_todos_pw', bricks.app);
|
||
if (old && old.destroy) { old.destroy(); }
|
||
return fetch('/pipeline-sdlc/api/my_todos_popup.dspy')
|
||
.then(function(r){ return r.json(); })
|
||
.then(function(desc){
|
||
if (!desc) { return; }
|
||
if (desc.error || desc.success === false) {
|
||
var m = new bricks.Message({title:'打开失败', message: desc.error || '无法加载待办'});
|
||
m.open();
|
||
return;
|
||
}
|
||
return bricks.widgetBuild(desc, bricks.app);
|
||
})
|
||
.catch(function(e){
|
||
var m2 = new bricks.Message({title:'打开失败', message:'网络错误:' + e});
|
||
m2.open();
|
||
});
|
||
};
|
||
|
||
// 等 app 初始化完成后启动定时刷新(.js 在 app.run 之前加载,故轮询等 app 就绪)
|
||
function _start(){
|
||
if (bricks.app && bricks.getWidgetById){
|
||
setInterval(function(){ window.refreshTodo(); }, 60000);
|
||
setTimeout(function(){ window.refreshTodo(); }, 800);
|
||
} else {
|
||
setTimeout(_start, 300);
|
||
}
|
||
}
|
||
setTimeout(_start, 300);
|
||
})();
|