// 待办角标: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);
})();