class RegVehicle_Damage{
constructor(){
this.name = "regvehicle_damage";
}
static GetCustomDestination(data, dest){
return (data.vehicle_id ?? "" != "" ? "regvehicle.view" : "regvehicle.overview");
}
static GetCustomDestID(data, destID){
return data.vehicle_id ?? destID;
}
static allowView(){
return userrights.has("regvehicles.view");
}
static allowAddNew(){
return true;
}
static allowEdit(){
return userrights.has("regvehicles.edit");
}
static allowDelete(){
return userrights.has("regvehicles.edit");
}
static GetColumns(){
return ["plate","veh_type","veh_model","owner","mot","state","id"]
}
static GetEdit(data={}){
let retval = {
"vehicle_id": {
"val" : data.vehicle_id ?? -1
,"type" : "hidden"
,"mandatory":true
}
}
let fields = this.GetPossibleDamageFields();
for(const element of fields){
retval[element] = {
"val" : data[element] ?? "0"
,"type" : "hidden"
,"mandatory":false
}
}
return retval;
}
static GetPossibleDamageFields(){
return [
"exhaust_system"
,"front_bumper"
,"front_grill"
,"bonnet"
,"roof"
,"front_right_mudguard"
,"front_left_mudguard"
,"right_rear_panel"
,"left_rear_panel"
,"left_under_trim"
,"right_under_trim"
,"rear_panel"
,"rear_bumper"
,"front_left_headlight"
,"front_right_headlight"
,"right_rear_light"
,"left_rear_light"
,"right_window_01"
,"right_window_02"
,"right_window_03"
,"left_window_01"
,"left_window_02"
,"left_window_03"
,"rear_window"
,"windscreen"
,"right_door_01"
,"right_door_02"
,"left_door_01"
,"left_door_02"
,"right_front_tyre"
,"right_rear_tyre"
,"left_front_tyre"
,"left_rear_tyre"
,"right_front_rim"
,"right_rear_rim"
,"left_front_rim"
,"left_rear_rim"
];
}
static CreateCustom(data){
let html = Form.BackEditBtn("regvehicle.view", "",-1, false, data.data.vehicle_id);
html += `
`;
let i=0;
for(const row of data.data.data){
let buttons = "";
let badges = "";
if(row.repaired != true){
buttons += `
`;
}
else{
badges += `
${getTranslation("repaired")}
`;
}
let contentHTML = ``;
if(row.content.replace(/ /g,"") !== ""){
contentHTML = `
${row.content.replace(/\n/g,"
")}
`;
}
let temp = `
${System.buildEmployeeName(row.creator)} - ${System.formatTimestamp(row.createddate)}
${contentHTML}
${badges}
${RegVehicle_Damage.GetVehicleInteractiveModel(row, true, 1)}
${buttons}
`;
if( i % 2 === 0){
temp += `
`
}
else{
temp = `
` + temp
}
html += temp;
i++;
}
html += `
`;
document.getElementById("currentpage-content").innerHTML = html;
Form.initViewModeTopButtons();
}
static GetExtraForEdit(data){
let retval = {
top:"",
bottom:""
}
retval.bottom = `
${this.GetVehicleInteractiveModel(data, false, 3)}
`;
return retval;
}
static HighlightSiblings(sender, isHightlight) {
let css_class = sender.classList[0];
let sharedObjects = Array.from(document.querySelectorAll("." + css_class));
sharedObjects.forEach((element) => {
if (element != sender) {
Array.from(element.querySelectorAll(".vehicledmg-clickable")).forEach((child) => {
if (isHightlight) {
if (!child.classList.contains("vehicledmg-highlighted")) {
child.classList.add("vehicledmg-highlighted");
}
} else {
if (child.classList.contains("vehicledmg-highlighted")) {
child.classList.remove("vehicledmg-highlighted");
}
}
});
}
});
}
static DamageClick(sender) {
let css_class = sender.classList[0];
let is_active = sender.getAttribute("data-is-selected") ?? "false";
let fieldId = `input-${css_class}`
let inputEl = document.getElementById(fieldId);
if(inputEl){
let sharedObjects = Array.from(document.querySelectorAll("." + css_class));
sharedObjects.forEach((element) => {
Array.from(element.querySelectorAll(".vehicledmg-clickable")).forEach((child) => {
if (is_active != "true") {
if (!child.classList.contains("vehicledmg-is_selected")) {
child.classList.add("vehicledmg-is_selected");
element.setAttribute("data-is-selected", "true");
}
} else {
if (child.classList.contains("vehicledmg-is_selected")) {
child.classList.remove("vehicledmg-is_selected");
element.setAttribute("data-is-selected", "false");
}
}
});
});
if (is_active != "true") {
inputEl.value = 1;
}
else{
inputEl.value = 0;
}
Form.validate();
}
else{
console.log("no field found for " + fieldId);
}
}
static DamageClick3(data, readOnly = false, colspan = 3){
let css_class = sender.classList[0];
let is_active = sender.getAttribute("data-is-selected") ?? "false";
let fieldId = `input-${css_class}`
let inputEl = document.getElementById(fieldId);
if(inputEl){
let sharedObjects = Array.from(document.querySelectorAll("." + css_class));
sharedObjects.forEach((element) => {
Array.from(element.querySelectorAll(".vehicledmg-clickable")).forEach((child) => {
if (is_active != "true") {
if (!child.classList.contains("vehicledmg-is_selected")) {
child.classList.add("vehicledmg-is_selected");
element.setAttribute("data-is-selected", "true");
}
} else {
if (child.classList.contains("vehicledmg-is_selected")) {
child.classList.remove("vehicledmg-is_selected");
element.setAttribute("data-is-selected", "false");
}
}
});
});
if (is_active != "true") {
inputEl.value = 1;
}
else{
inputEl.value = 0;
}
Form.validate();
}
else{
console.log("no field found for " + fieldId);
}
}
static GetVehicleInteractiveModel(data, readOnly = false, colspan = 3){
let javaScriptFunctions = ``;
let javaScriptFunctionSingleData = ``;
let activeClasses = {}
let possibleFields = this.GetPossibleDamageFields();
if(!readOnly){
javaScriptFunctions = ` onmouseenter="RegVehicle_Damage.HighlightSiblings(this, true)" onmouseout="RegVehicle_Damage.HighlightSiblings(this, false);" onclick="RegVehicle_Damage.DamageClick(this);"`
javaScriptFunctionSingleData = ` onclick="RegVehicle_Damage.DamageClick(this);"`
for (const element of possibleFields) {
activeClasses[element] = (1 * (data[element] ?? "0") == 1 ? "vehicledmg-clickable vehicledmg-is_selected" : "vehicledmg-clickable")
}
}
else{
for (const element of possibleFields) {
activeClasses[element] = (1 * (data[element] ?? "0") == 1 ? "vehicledmg-is_selected" : "");
}
}
return `
`;
}
}