sict_csic/static/js/layoutreporte.js

306 lines
8.6 KiB
JavaScript

import {
validarContentInput,
limpiarFormulario,
notify,
lastDayOfMonth,
isFrecuenciaAbsoluta,
numFrmt,
valorSemaforo,
generalStylesSignField,
uploadPictureToWeb,
validarContentTextArea,
deshabilitarInput,
camposObligatorios,
currentDate
} from "./functions.js";
const colorSiVacio = "#f48c06";
const colorNoVacio = "#03071e";
const idInicioTrim = "inicioTrim";
const idFinTrim = "finTrim";
const inicioX = document.getElementById("inicioTrim");
const finX = document.getElementById("finTrim");
(() => {
validarContentInput(idInicioTrim, colorSiVacio, colorNoVacio);
validarContentInput(idFinTrim, colorSiVacio, colorNoVacio);
})();
// validación de textarea
(() => {
validarContentTextArea('infosoporte', colorSiVacio, colorNoVacio);
})();
let inputs = document.getElementsByTagName("input");
for (let i of inputs) {
validarContentInput(i.id, colorSiVacio, colorNoVacio);
}
let validarInicioDate = (() => {
inicioX.addEventListener("change", () => {
let dateIni = String(inicioX.value).split("-");
let monthIni = parseInt(dateIni[1]);
let yearIni = parseInt(dateIni[0]);
if (monthIni == 1 || monthIni == 4 || monthIni == 7 || monthIni == 10) {
let frmDate;
switch (monthIni) {
case 1:
frmDate = `${yearIni}-03-${lastDayOfMonth(yearIni, 3)}`;
break;
case 4:
frmDate = `${yearIni}-06-${lastDayOfMonth(yearIni, 6)}`;
break;
case 7:
frmDate = `${yearIni}-09-${lastDayOfMonth(yearIni, 9)}`;
break;
case 10:
frmDate = `${yearIni}-12-${lastDayOfMonth(yearIni, 12)}`;
break;
}
inicioX.value = `${yearIni}-${numFrmt(monthIni)}-01`;
finX.value = frmDate;
finX.style.border = `2px solid ${colorNoVacio}`;
} else {
notify(
"warning",
"Los trimestres deben iniciar en:" +
"\n" +
"1) enero" +
"\n" +
"4) abril" +
"\n" +
"7) julio" +
"\n" +
"10) octubre",
5000
);
inicioX.value = "";
finX.value = "";
finX.style.border = `3px solid ${colorSiVacio}`;
}
});
})();
let validarFinDate = (() => {
finX.addEventListener("change", () => {
let dateFin = String(finX.value).split("-");
let monthfin = parseInt(dateFin[1]);
let yearFin = parseInt(dateFin[0]);
if (monthfin == 3 || monthfin == 6 || monthfin == 9 || monthfin == 12) {
let frmDate;
switch (monthfin) {
case 3:
frmDate = `${yearFin}-01-01`;
break;
case 6:
frmDate = `${yearFin}-04-01`;
break;
case 9:
frmDate = `${yearFin}-07-01`;
break;
case 12:
frmDate = `${yearFin}-10-01`;
break;
}
inicioX.value = frmDate;
finX.value = `${yearFin}-${numFrmt(monthfin)}-${lastDayOfMonth(
yearFin,
monthfin
)}`;
inicioX.style.border = `2px solid ${colorNoVacio}`;
} else {
notify(
"warning",
"Los trimestres deben finalizar en:" +
"\n" +
"3) marzo" +
"\n" +
"6) junio" +
"\n" +
"9) septiembre" +
"\n" +
"12) diciembre",
5000
);
inicioX.value = "";
finX.value = "";
inicioX.style.border = `3px solid ${colorSiVacio}`;
}
});
})();
let btnLimpiarFormulario = (() => {
let btnLimpiar = document.getElementById("btnLimpiar");
btnLimpiar.addEventListener("click", () => {
limpiarFormulario(colorSiVacio);
});
})();
for (let o of inputs) {
// cambiar a ternaria
if (o.id.includes("varA_")) {
let n = Number(o.id.replace("varA_", ""));
let varAinput = `varA_${n}`;
let varBinput = `varB_${n}`;
let semaforo = `semaforo_${n}`;
let idCirculo = `circle_${n}`;
let amarillo_li = `amarillo_li_${n}`;
let amarillo_ls = `amarillo_ls_${n}`;
let signo = `signo_${n}`;
let idUnidadDeMedida = `unidadMedida_${n}`;
let idTable = `table_${n}`;
let idMeta = `index_meta_${n}`;
let rowRojo = `critico_${n}`;
let rowAmarillo = `riesgo_${n}`;
let rowVerde = `aceptable_${n}`;
valorSemaforo(
varAinput,
varBinput,
semaforo,
idCirculo,
amarillo_li,
amarillo_ls,
signo,
rowRojo,
rowAmarillo,
rowVerde
);
}
}
let btnImprimir = (() => {
let btnPrint = document.getElementById('btnPrint');
btnPrint.addEventListener('click', () => {
let r = 0;
let inputTags = document.getElementsByTagName("input");
let fieldSoporte = document.getElementById("infosoporte");
for (let i = 0; i < inputTags.length; i++) {
if (inputTags[i].value == '' && inputTags[i].disabled == false && inputTags[i].getAttribute('type') != 'file') {
r += 1;
}
}
if (fieldSoporte.value.length == 0) {
r += 1;
}
if (r > 0) {
let mensaje;
if (r == 1) {
mensaje = "El campo con borde naranja es obligatorio";
} else {
mensaje = `Los ${r} campos marcados con borde naranja son obligatorios`;
}
notify('warning', mensaje, 5000);
} else {
window.print();
}
})
})();
(() => {
let crDate = document.getElementById("currentDate");
crDate.innerText = currentDate();
})();
(function() {
// http://stackoverflow.com/questions/4083351/what-does-jquery-fn-mean
var $ = function(elem) {
if (!(this instanceof $)) {
return new $(elem);
}
this.el = document.getElementById(elem);
};
window.$ = $;
$.prototype = {
onChange: function(callback) {
this.el.addEventListener("change", callback);
return this;
},
};
})();
(() => {
generalStylesSignField(
"squareSignFielRepresentante",
"imgSignRepresentante",
"fileUploadRepresentante"
);
generalStylesSignField(
"squareSignFielSubCentroSCT",
"imgSignSubCentroSCT",
"fileUploadSubCentroSCT"
);
// generalStylesSignField('userActionsDos', 'imgPrimeDos', 'fileUploadDos');
uploadPictureToWeb(
"squareSignFielRepresentante",
"fileUploadRepresentante",
"imgSignRepresentante"
);
uploadPictureToWeb(
"squareSignFielSubCentroSCT",
"fileUploadSubCentroSCT",
"imgSignSubCentroSCT"
);
// uploadPictureToWeb('userActions', 'fileUpload', 'imgPrime');
// uploadPictureToWeb('userActionsDos', 'fileUploadDos', 'imgPrimeDos');
})();
// bloqueo de los campos sin variable de cálculo
(() => {
if (parseInt(nIndicadores) > 0) {
let nI = parseInt(nIndicadores);
let e = 1;
for (; e <= nI; e++) {
let varA = document.getElementById(`varA${e}Strong`);
let inputA = `varA_${e}`;
let varB = document.getElementById(`varB${e}Strong`);
let inputB = `varB_${e}`;
let idUnidadDeMedida = `unidadMedida_${e}`;
let idCirculo = `circle_${e}`
let idTable = `table_${e}`;
let idMeta = `index_meta_${e}`;
`${varA.textContent}`.replace('\n', '').trim().length <= 1 ? deshabilitarInput(inputA) : varA;
`${varB.textContent}`.replace('\n', '').trim().length <= 1 ? deshabilitarInput(inputB) : varB;
isFrecuenciaAbsoluta(idUnidadDeMedida, idCirculo, idTable, idMeta);
validarContentInput(inputA, colorSiVacio, colorNoVacio)
validarContentInput(inputB, colorSiVacio, colorNoVacio)
}
notify("success", `${camposObligatorios()}`, 7000)
} else {
notify("warning", "No se han cargado los indicadores de la Aldea Inteligente.", 7000)
}
})()
// idea de descargar la página web:
// https://www.youtube.com/watch?v=C8jxInLM9nM&ab_channel=PrettyPrinted
// grillado de galeria
// https://codepen.io/eHtmlu/pen/BaodGVp