forked from Simnation/Main
244 lines
No EOL
7.5 KiB
JavaScript
244 lines
No EOL
7.5 KiB
JavaScript
class Employees{
|
|
constructor(){
|
|
this.name = "employees";
|
|
}
|
|
static allowEdit(){
|
|
return userrights.has("employees.edit");
|
|
}
|
|
static allowAddNew(){
|
|
return false;
|
|
}
|
|
|
|
static allowSuspend(){
|
|
return userrights.has("employees.suspend")
|
|
}
|
|
static allowViewEmployeeEntries(){
|
|
return userrights.has("employeesentries.view")
|
|
}
|
|
static allowEditEmployeeEntries(){
|
|
return userrights.has("employeesentries.edit")
|
|
}
|
|
static allowDeleteEmployeeEntries(){
|
|
return userrights.has("employeesentries.delete")
|
|
}
|
|
static allowFinishEmployeeEntries(){
|
|
return userrights.has("employeesentries.finish")
|
|
}
|
|
static allowViewUserTrainings(){
|
|
return userrights.has("trainingsemployees.view")
|
|
}
|
|
|
|
|
|
static GetExtraForView(data){
|
|
let retval = {
|
|
top:"",
|
|
bottom:""
|
|
}
|
|
|
|
let suspendedText = getTranslation("suspend");
|
|
let suspended_new = 1;
|
|
if(data.extraData.is_suspended !== undefined && data.extraData.is_suspended.length > 0 && data.extraData.is_suspended[0].is_suspended == true){
|
|
suspendedText = getTranslation("unsuspend");
|
|
suspended_new = 0;
|
|
}
|
|
|
|
let buttons = ``;
|
|
if(this.allowSuspend()){
|
|
buttons += `<button type="button" class="btn btn-sm
|
|
|
|
btn-warning" onclick="changeDataInColumn('employees','is_suspended','${data.id}','${suspended_new}')">${suspendedText}</button>`;
|
|
//buttons += `<button type="button" class="btn btn-sm btn-warning" onclick="EmployeeSuspend('employees','${data.id}','${suspended_new}')">${suspendedText}</button>`;
|
|
}
|
|
if(this.allowEditEmployeeEntries()){
|
|
buttons += `<button type="button" class="btn btn-sm btn-primary" onclick="loadPage('employeesentry.add',-1,'false',{data:{employee_id:'${data.id}'}})">${getTranslation("fileentry.add")}</button>`;
|
|
}
|
|
if(this.allowViewUserTrainings()){
|
|
buttons += `<button type="button" class="btn btn-sm btn-primary" onclick="loadPage('employeestraining.dataload','${data.id}')">${getTranslation("employeestraining.dataload")}</button>`;
|
|
}
|
|
|
|
retval.bottom += `
|
|
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 pt-6">
|
|
${buttons}
|
|
</div>
|
|
`;
|
|
|
|
if(this.allowViewEmployeeEntries() && data.extraData.file_entries !== undefined){
|
|
|
|
let entryTypes = System.getEmployeeEntryTypes();
|
|
|
|
retval.bottom += `
|
|
<div class="collapse collapse-arrow border border-base-300 bg-base-100 rounded-box mt-4">
|
|
<input type="checkbox" />
|
|
<div class="collapse-title text-xl font-medium">
|
|
${getTranslation("employees_file")}
|
|
</div>
|
|
<div class="collapse-content">
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-4 pt-6">`;
|
|
|
|
for(let i=0;i<data.extraData.file_entries.length;i++){
|
|
let row = data.extraData.file_entries[i];
|
|
|
|
let bgColor = entryTypes[row.type_of_entry].color ?? "ghost";
|
|
let type_name = entryTypes[row.type_of_entry].name ?? "";
|
|
|
|
let badges = ``;
|
|
|
|
badges += `<div class="badge badge-${bgColor} gap-2">${type_name}</div>`;
|
|
|
|
if(row.closed){
|
|
badges += `<div class="badge badge-success gap-2">${getTranslation("entry_finished")}</div>`;
|
|
}
|
|
|
|
let buttons = ``;
|
|
if(!row.closed && this.allowFinishEmployeeEntries()){
|
|
buttons += `<button onclick="changeDataInColumn('employeesentry', 'closed', '${row.id}', 1)" class="btn btn-sm btn-primary">${getTranslation("finish_file_entry")}</button>`;
|
|
}
|
|
if(this.allowDeleteEmployeeEntries()){
|
|
buttons += `<button onclick="Form.openDeleteModal('${row.id}','employeesentry')" class="btn btn-sm btn-error">${getTranslation("delete")}</button>`;
|
|
}
|
|
|
|
|
|
|
|
let temp = `
|
|
<div class="card w-full bg-neutral text-neutral-content">
|
|
<div class="card-body">
|
|
<h2 class="card-title uppercase font-bold">${System.buildEmployeeName(row.creator)} - ${System.formatTimestamp(row.creationdate)}</h2>
|
|
<h2 class="card-title uppercase font-bold">${badges}</h2>
|
|
|
|
<p class="border border-current rounded-xl p-1 break-all">${row.content.replace(/\n/g,"<br>")}</p>
|
|
<p></p>
|
|
<div class="card-actions justify-start">
|
|
${buttons}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
`;
|
|
|
|
|
|
|
|
if( i % 2 === 0){
|
|
temp += `<div></div>`
|
|
}
|
|
else{
|
|
temp = `<div></div>` + temp
|
|
}
|
|
|
|
retval.bottom += temp;
|
|
}
|
|
|
|
retval.bottom += `
|
|
</div>
|
|
</div>
|
|
</div>`;
|
|
}
|
|
|
|
|
|
return retval;
|
|
}
|
|
|
|
static GetEdit(data={}){
|
|
let serviceno = null;
|
|
if(data !== null){
|
|
if(data.extraData.serviceno !== undefined && data.extraData.serviceno !== null && data.extraData.serviceno.length > 0){
|
|
serviceno = data.extraData.serviceno[0].serviceno ?? System.getServiceNo(data.identifier ?? data.citizenid)
|
|
}
|
|
else{
|
|
serviceno = System.getServiceNo(data.identifier ?? data.citizenid);
|
|
}
|
|
}
|
|
|
|
return {
|
|
"serviceno": {
|
|
"val" : serviceno ?? ""
|
|
,"type" : "text"
|
|
,isRow:true
|
|
,hideInEdit:false
|
|
},
|
|
"firstname": {
|
|
"val" : data.firstname ?? System.getFirstName(data.charinfo ?? "")
|
|
,"type" : "text"
|
|
,hideInEdit:true
|
|
},
|
|
"lastname": {
|
|
"val" : data.lastname ?? System.getLastName(data.charinfo ?? "")
|
|
,"type" : "text"
|
|
,"mandatory":true
|
|
,hideInEdit:true
|
|
}
|
|
,"rank": {
|
|
"val" : data.job_grade ?? System.getJobGrade(data.job)
|
|
,"type" : "dropdown"
|
|
,"mandatory":true
|
|
,isRow:true
|
|
,options:System.getRankOptions()
|
|
,hideInEdit:true
|
|
}
|
|
}
|
|
}
|
|
|
|
static GetColumns(){
|
|
return ["serviceno","name","rank_name","state","id"]
|
|
}
|
|
|
|
static TableDataCreate(row, key){
|
|
if(key == "id"){
|
|
return `
|
|
<td>
|
|
${Form.getViewButtonIcon(row[key], this.name + ".view")}
|
|
${Form.getEditButtonIcon(row[key], this.name + ".edit", this.allowEdit())}
|
|
</td>`;
|
|
}
|
|
else if(key == "serviceno"){
|
|
return `
|
|
<td>
|
|
${row[key] ?? System.getServiceNo(row.id)}
|
|
</td>`;
|
|
}
|
|
else if(key == "name"){
|
|
return `
|
|
<td>
|
|
${System.buildEmployeeName(row[key])}
|
|
</td>`;
|
|
}
|
|
else if(key == "state"){
|
|
if(row[key] != ""){
|
|
return `
|
|
<td>
|
|
<div class="badge badge-warning font-bold">${getTranslation("state_" + row[key])}</div>
|
|
</td>`;
|
|
}
|
|
else{
|
|
return `<td></td>`
|
|
}
|
|
|
|
}
|
|
else if(key == "rank_name"){
|
|
let grade = -9999
|
|
|
|
try {
|
|
|
|
if(typeof JSON.parse(row[key]) == "number"){
|
|
grade = row[key]
|
|
}
|
|
}
|
|
catch (e) {
|
|
grade = row[key]
|
|
}
|
|
|
|
if(grade == -9999){
|
|
grade = System.getJobGrade(row[key]);
|
|
}
|
|
|
|
|
|
|
|
return `
|
|
<td>
|
|
${System.getLabelByRank(grade)}
|
|
</td>
|
|
`;
|
|
}
|
|
else {
|
|
return `<td>${row[key]}</td>`;
|
|
}
|
|
}
|
|
} |