forked from Simnation/Main
167 lines
No EOL
7.6 KiB
JavaScript
167 lines
No EOL
7.6 KiB
JavaScript
class Dashboard{
|
|
constructor(){
|
|
this.name = "dashboard";
|
|
}
|
|
|
|
static isCustom(){
|
|
return true;
|
|
}
|
|
|
|
static CreateCustom(data){
|
|
|
|
let controlCenterBg = "";
|
|
if(data.data.control_centre == ""){
|
|
controlCenterBg = "error"
|
|
data.data.control_centre = getTranslation("no_control_centre");
|
|
}
|
|
else{
|
|
data.data.control_centre = System.buildEmployeeName(data.data.control_centre)
|
|
}
|
|
|
|
let possibleStats = [];
|
|
let stats = [];
|
|
|
|
|
|
if(currentSystem == "police"){
|
|
|
|
|
|
|
|
let entries_per_file = 0;
|
|
if(data.data.info[0].files > 0 && data.data.info[0].fileentry){
|
|
entries_per_file = data.data.info[0].fileentry/data.data.info[0].files;
|
|
}
|
|
|
|
|
|
possibleStats = [
|
|
[
|
|
{name:"files.overview", navItem: "files", text : data.data.info[0].files, goto:"files.overview", "gotoAllowed":userrights.has("files.view")},
|
|
{name:"fileentry.overview", navItem: "files", text : data.data.info[0].fileentry},
|
|
{name:"avg_files_entry", navItem: "files", text : "Ø " + (entries_per_file).toFixed(2) },
|
|
],
|
|
[
|
|
{name:"control_centre", navItem: "controlcentre", text : data.data.control_centre, bg:controlCenterBg, goto:"controlcentre.dataload", "gotoAllowed":userrights.has("controlcentre.view")},
|
|
{name:"employees.overview", navItem: "employees", text : data.data.info[0].employees, goto:"employees.overview","gotoAllowed":userrights.has("employees.view")},
|
|
{name:"count_employees_available", navItem: "employees", text : data.data.info[0].employees_available},
|
|
],
|
|
[
|
|
{name:"regvehicle.overview", navItem: "regvehicle", text : data.data.info[0].regvehicle, goto:"regvehicle.overview","gotoAllowed":userrights.has("regvehicles.view")},
|
|
{name:"regweapons.overview", navItem: "regweapons", forceHide: useWeaponRegister, text : data.data.info[0].regweapons, goto:"regweapons.overview","gotoAllowed":userrights.has("regweapons.view")},
|
|
{name:"investigation.overview", navItem: "investigation", text : data.data.info[0].investigation, goto:"investigation.overview","gotoAllowed":userrights.has("investigation.view")},
|
|
{name:"investigation.overview", navItem: "investigation", "nameextra":getTranslation("state_open"), text : data.data.info[0].investigation_open},
|
|
],
|
|
[
|
|
{name:"active_manhunt", navItem: "manhunt", text : data.data.info[0].manhunt_files + data.data.info[0].manhunt_regvehicle + data.data.info[0].manhunt_regweapons, bg:"warning", goto: "manhunt.dataload","gotoAllowed":userrights.has("manhunt.view")},
|
|
{name:"files.overview", navItem: "files", "nameextra":getTranslation("tag_is_wanted"), text : data.data.info[0].manhunt_files, bg:"warning", goto: "manhunt.dataload","gotoAllowed":userrights.has("manhunt.view")},
|
|
{name:"regvehicle.overview", navItem: "regvehicle", "nameextra":getTranslation("tag_is_wanted"), text : data.data.info[0].manhunt_regvehicle, bg:"warning", goto: "manhunt.dataload","gotoAllowed":userrights.has("manhunt.view")},
|
|
{name:"regweapons.overview", navItem: "regweapons", forceHide: useWeaponRegister, "nameextra":getTranslation("tag_is_wanted"), text : data.data.info[0].manhunt_regweapons, bg:"warning", goto: "manhunt.dataload","gotoAllowed":userrights.has("manhunt.view")},
|
|
]
|
|
];
|
|
}
|
|
else if(currentSystem == "medic"){
|
|
let entries_per_file = 0;
|
|
if(data.data.info[0].files > 0 && data.data.info[0].fileentry){
|
|
entries_per_file = data.data.info[0].fileentry/data.data.info[0].files;
|
|
}
|
|
|
|
possibleStats = [
|
|
[
|
|
{name:"files.overview", navItem: "files", text : data.data.info[0].files, goto:"files.overview", "gotoAllowed":userrights.has("files.view")},
|
|
{name:"fileentry.overview", navItem: "files", text : data.data.info[0].fileentry},
|
|
{name:"avg_files_entry", navItem: "files", text : "Ø " + (entries_per_file).toFixed(2) },
|
|
],
|
|
[
|
|
{name:"control_centre", navItem: "controlcentre", text : data.data.control_centre, bg:controlCenterBg, goto:"controlcentre.dataload", "gotoAllowed":userrights.has("controlcentre.view")},
|
|
{name:"employees.overview", navItem: "employees", text : data.data.info[0].employees, goto:"employees.overview","gotoAllowed":userrights.has("employees.view")},
|
|
{name:"count_employees_available", navItem: "employees", text : data.data.info[0].employees_available},
|
|
],
|
|
];
|
|
}
|
|
else{
|
|
possibleStats = [
|
|
[
|
|
{name:"control_centre", navItem: "controlcentre", text : data.data.control_centre, bg:controlCenterBg, goto:"controlcentre.dataload", "gotoAllowed":userrights.has("controlcentre.view")},
|
|
{name:"employees.overview", navItem: "employees", text : data.data.info[0].employees, goto:"employees.overview","gotoAllowed":userrights.has("employees.view")},
|
|
{name:"count_employees_available", navItem: "employees", text : data.data.info[0].employees_available},
|
|
]
|
|
]
|
|
}
|
|
|
|
|
|
|
|
for(let i=0; i<possibleStats.length; i++){
|
|
|
|
stats[i] = [];
|
|
|
|
for(let j=0; j<possibleStats[i].length; j++){
|
|
let statEl = possibleStats[i][j];
|
|
let display = false;
|
|
|
|
if(statEl.navItem == undefined || statEl.navItem == null){
|
|
display = true;
|
|
}
|
|
else{
|
|
let navItem = document.getElementById("menuItem-li-" + statEl.navItem);
|
|
let forceHide = statEl.forceHide;
|
|
|
|
if(navItem !== null && forceHide != true){
|
|
display = true;
|
|
}
|
|
}
|
|
|
|
if(display){
|
|
stats[i].push(statEl);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
let statsHTML = ``;
|
|
for(let i=0; i<stats.length; i++){
|
|
if (stats[i].length == 0) {
|
|
continue;
|
|
}
|
|
|
|
statsHTML += `<div class="grid pt-8 md:grid-cols-${stats[i].length} grid-cols-1 gap-6">`
|
|
|
|
for(let j=0; j<stats[i].length; j++){
|
|
let btn = ``;
|
|
let bgClasses = "";
|
|
let txtclasses = null;
|
|
let txtExtra = "";
|
|
|
|
if(stats[i][j].goto !== undefined && stats[i][j].goto !== null && stats[i][j].goto != ""){
|
|
let allowed = stats[i][j].gotoAllowed ?? true
|
|
|
|
if(allowed){
|
|
btn = `<button class="btn btn-xs" onclick="loadPage('${stats[i][j].goto}',-1)">${getTranslation("goto")} ${getTranslation(stats[i][j].goto)}</button>`
|
|
}
|
|
|
|
|
|
}
|
|
if(stats[i][j].nameextra !== undefined && stats[i][j].nameextra !== null && stats[i][j].nameextra != ""){
|
|
txtExtra = ` (${stats[i][j].nameextra})`
|
|
}
|
|
|
|
if(stats[i][j].bg !== undefined && stats[i][j].bg !== null && stats[i][j].bg != ""){
|
|
bgClasses = `bg-${stats[i][j].bg}`
|
|
txtclasses = `text-${stats[i][j].bg}-content`
|
|
}
|
|
|
|
let textclass2="text-primary"
|
|
textclass2 = "";
|
|
|
|
statsHTML += `
|
|
<div class="stats shadow ${bgClasses}">
|
|
<div class="stat">
|
|
<div class="stat-title ${txtclasses}">${getTranslation(stats[i][j].name)}${txtExtra}</div>
|
|
<div class="stat-value ${txtclasses ?? textclass2}">${stats[i][j].text}</div>
|
|
<div class="stat-actions">${btn}</div>
|
|
</div>
|
|
</div>
|
|
`
|
|
}
|
|
statsHTML += `</div>`
|
|
}
|
|
document.getElementById("currentpage-content").innerHTML = statsHTML;
|
|
}
|
|
} |