v30: куратор может выбрать филиал и работать как ответственный
This commit is contained in:
parent
73b66a2f37
commit
ef39f491d6
27
index.html
27
index.html
@ -118,6 +118,9 @@ td{border-bottom:1px solid var(--gray-200)}tr:hover td{background:var(--cyan-50)
|
||||
<div class="brand"><span>ИИ-Агент</span> ПБ</div>
|
||||
<div class="right">
|
||||
<span class="user-info" id="userLabel"></span>
|
||||
<select id="branchFilter" onchange="setFilter(this.value)" style="padding:6px 10px;border:1px solid var(--gray-200);border-radius:6px;font-size:12px;display:none">
|
||||
<option value="">Все филиалы и регионы</option>
|
||||
</select>
|
||||
<div style="position:relative">
|
||||
<button class="notif-btn" onclick="toggleNotif()">🔔<span class="badge-count" id="notifCount">0</span></button>
|
||||
<div class="notif-drop" id="notifDrop"></div>
|
||||
@ -173,7 +176,7 @@ var users={
|
||||
"east@telecom.kz":{name:"Отв. Восточный регион",branch:6,role:"region",region:4},
|
||||
"west@telecom.kz":{name:"Отв. Западный регион",branch:8,role:"region",region:5}
|
||||
};
|
||||
var curUser=null,curMonth=5;
|
||||
var curUser=null,curMonth=5,curFilter=null; // curFilter: null=all, {type:"branch",id:N} or {type:"region",id:N}
|
||||
|
||||
// Load events
|
||||
var events=null;
|
||||
@ -190,12 +193,30 @@ function saveEvents(){localStorage.setItem("samruk_ev",JSON.stringify(events))}
|
||||
function addLog(action,eventId,detail){var l=JSON.parse(localStorage.getItem("samruk_log")||"[]");l.push({ts:new Date().toISOString(),user:curUser.name,role:curUser.role,action:action,eid:eventId,detail:detail||""});if(l.length>500)l=l.slice(-500);localStorage.setItem("samruk_log",JSON.stringify(l))}
|
||||
function getLog(){return JSON.parse(localStorage.getItem("samruk_log")||"[]")}
|
||||
|
||||
function getMy(){if(!curUser||!events)return[];if(curUser.role==="admin"||curUser.role==="curator")return events;if(curUser.role==="region")return events.filter(function(e){return branchRegion[e.b]===curUser.region});return events.filter(function(e){return e.b===curUser.branch})}
|
||||
function getMy(){if(!curUser||!events)return[];var list;if(curUser.role==="admin"||curUser.role==="curator"){list=events}else if(curUser.role==="region"){list=events.filter(function(e){return branchRegion[e.b]===curUser.region})}else{list=events.filter(function(e){return e.b===curUser.branch})}
|
||||
// Apply curator's filter
|
||||
if(curFilter&&(curUser.role==="curator"||curUser.role==="admin")){
|
||||
if(curFilter.type==="branch")list=list.filter(function(e){return e.b===curFilter.id})
|
||||
else if(curFilter.type==="region")list=list.filter(function(e){return branchRegion[e.b]===curFilter.id})
|
||||
}
|
||||
return list}
|
||||
|
||||
function setFilter(val){
|
||||
if(!val){curFilter=null}else{var p=val.split("_");curFilter={type:p[0],id:parseInt(p[1])}}
|
||||
renderAll()}
|
||||
|
||||
// Auth
|
||||
function doLogin(e){e.preventDefault();var em=document.getElementById("loginEmail").value.trim().toLowerCase();if(users[em]){ curUser={email:em,name:users[em].name,branch:users[em].branch,role:users[em].role,region:users[em].region};localStorage.setItem("samruk_u",JSON.stringify(curUser));addLog("вошёл");showApp()}else{document.getElementById("loginErr").style.display="block"}return false}
|
||||
function doLogout(){addLog("вышел");localStorage.removeItem("samruk_u");curUser=null;document.getElementById("loginScreen").style.display="flex";document.getElementById("app").style.display="none"}
|
||||
function showApp(){document.getElementById("loginScreen").style.display="none";document.getElementById("app").style.display="block";var label=curUser.name+" · "+(curUser.role==="curator"||curUser.role==="admin"?"Все регионы":curUser.role==="region"?regions[curUser.region]:branches[curUser.branch]);document.getElementById("userLabel").innerHTML="<strong>"+label+"</strong>";renderAll()}
|
||||
function showApp(){document.getElementById("loginScreen").style.display="none";document.getElementById("app").style.display="block";var label=curUser.name+" · "+(curUser.role==="curator"||curUser.role==="admin"?"Все регионы":curUser.role==="region"?regions[curUser.region]:branches[curUser.branch]);document.getElementById("userLabel").innerHTML="<strong>"+label+"</strong>";
|
||||
// Populate branch filter for curator/admin
|
||||
var sel=document.getElementById("branchFilter");
|
||||
if(curUser.role==="curator"||curUser.role==="admin"){
|
||||
sel.style.display="inline-block";sel.innerHTML='<option value="">Все филиалы и регионы</option>';
|
||||
regions.forEach(function(r,ri){sel.innerHTML+='<optgroup label="'+r+'"></optgroup>';branches.forEach(function(b,bi){if(branchRegion[bi]===ri)sel.innerHTML+='<option value="b_'+bi+'"> '+b+'</option>'})});
|
||||
sel.value=curFilter?(curFilter.type+"_"+curFilter.id):"";
|
||||
}else{sel.style.display="none"}
|
||||
renderAll()}
|
||||
|
||||
// Notifs
|
||||
function notifsUpdate(){
|
||||
|
||||
Loading…
Reference in New Issue
Block a user