2
I need help printing a result through the code below:
Expected result: e5f6abb0c4b74c20a92195375bef2434 | 1 | 2020-04-01 - c7aead0f41f90cf4eace601998bd78c4 | 1 | 2020-04-02
(error) Result obtained: e5f6abb0c4b74c20a92195375bef2434 | 1 | 2020-04-01 - c7aead0f41f90cf4eace601998bd78c4 | 2 | 2020-04-01,2020-04-02
$array_cods = "e5f6abb0c4b74c20a92195375bef2434|c7aead0f41f90cf4eace601998bd78c4";
$array_dias = "2020-01-15,2020-01-20,2020-01-22,2020-01-27,2020-01-29,2020-02-03,2020-02-05,2020-02-10,2020-02-12,2020-02-17,2020-02-19,2020-02-24,2020-02-26,2020-03-02,2020-03-04,2020-03-09,2020-03-11,2020-03-16,2020-03-18,2020-03-23,2020-03-25,2020-03-30,2020-04-01,2020-04-06,2020-04-08,2020-04-13,2020-04-15,2020-04-20|2020-04-02,2020-04-07,2020-04-08,2020-04-09,2020-04-14,2020-04-15,2020-04-16,2020-04-21";
$array_datas = "2020-04-01,2020-04-02"
var allcods = "<?php echo $array_cods; ?>";
var cods = allcods.split('|');
var alldias = "<?php echo $array_dias; ?>";
var diasa = alldias.split('|');
var diasb = String(alldias.split('|'));
var alldatas = "<?php echo $array_datas; ?>";
var datas = alldatas.split(',');
for(var i=0; i<cods.length; i++) { //--- Sempre será executado pela quantidade de cods
executar();
}
function executar() {
for(var i=0; i<cods.length; i++) {
var dias = diasb.split(',');
var arr = dias.some(dias => datas.includes(dias));
var b = String(dias);
var c = String(datas);
var a = b.indexOf(parseInt(c));
if (arr == true) {
console.log(cods+" | "+datas.length+" | "+c);
break;
} else {
console.log(cods+" | Não");
break;
}
}
}
The Cód. c7aead0f41f90cf4eace601998bd78c4 cannot get 2, because it does not have the date 2020-04-01
See an example of the error using the dates 2020-04-01 to 2020-04-13
In Cód. c7aead0f41f90cf4eace601998bd78c4 should be 4
Sorry, the code is full of tests and tests
Example in Jsfiddle
The code below is very scrambled and full of tests, but it’s working:
function calcDayAtes() { //----- Somar dias do Atestado
//var idnClient = document.getElementById("idClient").value;
var dtInicat = document.getElementById('dtinicat').value;
var dtTerat = document.getElementById('dtterat').value;
var resultados = "2020-01-15,2020-01-20,2020-01-22,2020-01-27,2020-01-29,2020-02-03,2020-02-05,2020-02-10,2020-02-12,2020-02-17,2020-02-19,2020-02-24,2020-02-26,2020-03-02,2020-03-04,2020-03-09,2020-03-11,2020-03-16,2020-03-18,2020-03-23,2020-03-25,2020-03-30,2020-04-01,2020-04-06,2020-04-08,2020-04-13,2020-04-15,2020-04-20|2020-04-02,2020-04-07,2020-04-08,2020-04-09,2020-04-14,2020-04-15,2020-04-16,2020-04-21";
var results = resultados.split('|');
var nwdtInicat = dtInicat.split('/').reverse().join('-');
var nwdtTerat = dtTerat.split('/').reverse().join('-');
var pinic = nwdtInicat.split("-");
var iano = pinic[0];
var imes = pinic[1] - 1;
var idia = pinic[2];
var newInicial = new Date(iano, imes, idia);
var pterm = nwdtTerat.split("-");
var tano = pterm[0];
var tmes = pterm[1] - 1;
var tdia = pterm[2];
var newFinal = new Date(tano, tmes, tdia);
var milissegundos_por_dia = 1000 * 60 * 60 * 24;
var data_inicial = new Date(newInicial.getTime() - 0 * milissegundos_por_dia);
var data_final = new Date(newFinal.getTime() + 1 * milissegundos_por_dia);
//alert(data_inicial);
if ((dtInicat) && (dtTerat)) {
//console.log(data_inicial);
//console.log(data_final);
//if (nwdtInicat > nwdtTerat) { msgErro("default|Conflito nas datas! <br> A data inicial não pode ser maior que a data final!|1"); return false; }
//$('.box-ates-ben').load("data/boss/servAbnAtesCab.php?idben="+idnClient+"&atestado=novo&dta="+nwdtInicat+"&dtb="+nwdtTerat);
//----- Início: Calcula datas da Semana
var dateStart = data_inicial; //new Date(nwdtInicat+" 00:00:00");
var dateEnd = data_final; //new Date(nwdtTerat+" 00:00:00");
var dateRange = rangeDate(dateStart, dateEnd);
var weeks = "1,3|2,3,4";
var week = weeks.split('|');
var codstur = "e5f6abb0c4b74c20a92195375bef2434|c7aead0f41f90cf4eace601998bd78c4";
var codtur = codstur.split('|');
//alert(weeks);
for (var i = 0; i < week.length; i++) {
var wekg = String(week[i].split(','));
var codturg = String(codtur[i].split(','));
var dias = String(results[i].split(','));
const dateFiltered = filterDateByDays(dateRange, wekg);
//const dateFiltered = filterDateByDays(dateRange, wekg);
valDates = dateFiltered.map(value => value.toLocaleDateString("pt-br").split('/').reverse().join('-'));
var arrayall = String(codturg + '_' + valDates + '|' + dias);
//var arraydta = Array(codw[0]+'_'+valDates);
//var arraydtb = arraydta.split(',');
//alert(valDates);
execVal(arrayall);
//console.log(arrayall);
//break;
}
function filterDateByDays(range, days) {
if (!Array.isArray(days)) {
days = wekg;
}
return range.filter(value => days.includes(value.getDay()));
}
function rangeDate(dateStart, dateEnd) {
var dates = [];
while (dateStart < dateEnd) {
dates.push(new Date(dateStart.getTime()));
dateStart.setDate(dateStart.getDate() + 1);
}
return dates;
}
//----- Final: Calcula datas da Semana
/*
//----- Início: Pegar CODTUR
var valores = "<?php echo $array_results; ?>";
var resCod = valores.split('|');
var cods = String(resCod);
var codt = cods.split('_');
for (var i = 0; i < codt.length; i++) {
var codg = codt[i].split('_');
var codh = String(codg);
var codi = codh.substring(codh.lastIndexOf(',') + 1);
var caracteres = codi.length;
//if (caracteres > 10) { console.log(codi); }
}
//----- Início: Pegar CODTUR
*/
function execVal(arrayall) {
var diasa = arrayall.split('|');
var diasb = diasa[1];
var dias = diasb.split(',');
var diasx = String(diasb.split(','));
var cods = arrayall.split('_');
var codtur = cods[0];
var codta = diasa[0];
var codtb = codta.split('_');
var codtc = codtb[1];
var datasa = String(codtc.split(','));
var datas = codtc.split(',');
//var datasb = String(codtc.split(','));
//var datasx = datasb.split(',');
//var o = datas.map(Object);
//var o = Object.parse(datas);
//typeof(editableObj.datas);
//var nwdatas = new Object(datas);
//console.log(datas);
for (var i = 0; i < cods.length; i++) {
//var dias = results[i].split(',');
//var codturg = String(codtur[i].split(','));
//var caracteres = datas.length;
//var arr = dias.some(dias => datas.includes(dias));
var arr = dias.filter(dias => datas.includes(dias))
var b = String(dias);
var c = String(datas);
var a = b.indexOf(parseInt(c));
//var arr = datas.indexOf(angular(results[i]);
//if (datas.includes(datas) in results[i]) {
//var verif = (dias.indexOf(datas) != -1);
//if (verif === true) {
//if (datas.length in dias === true) {
//if (arr == true) {
if (arr.length > 0) {
//console.log(codtur + " | " + datas.length + " | " + c);
console.log(codtur+" | "+arr.length+" | "+String(arr));
//Alert(codtur+" | "+datas.length+" | "+c);
//alert(datas.length);
//if (caracteres > 10) { }
break;
} else {
//if (arr == false) {
console.log(codtur + " | Não");
//Alert(codtur+" | Não");
//console.log('Não');
//alert(datas);
break;
}
}
}
}
}
<?php
$all_weeks = "1,3|2,3,4";
$array_codtur = "e5f6abb0c4b74c20a92195375bef2434|c7aead0f41f90cf4eace601998bd78c4";
$array_results_dias = "2020-01-15,2020-01-20,2020-01-22,2020-01-27,2020-01-29,2020-02-03,2020-02-05,2020-02-10,2020-02-12,2020-02-17,2020-02-19,2020-02-24,2020-02-26,2020-03-02,2020-03-04,2020-03-09,2020-03-11,2020-03-16,2020-03-18,2020-03-23,2020-03-25,2020-03-30,2020-04-01,2020-04-06,2020-04-08,2020-04-13,2020-04-15,2020-04-20|2020-04-02,2020-04-07,2020-04-08,2020-04-09,2020-04-14,2020-04-15,2020-04-16,2020-04-21";
?>
Entre com uma data inicial e final:
<br><br>
<label>Data inicial
<input type='text' name='dtinicat' value="01/04/2020" id='dtinicat'placeholder='00/00/0000' maxlength='16' style='width:120px;'>
</label>
<label>Data final
<input type='text' name='dtterat' value="02/04/2020" id='dtterat'placeholder='00/00/0000' maxlength='16' style='width:120px;'>
</label>
<br><br>
<input type='button' value='Executar' onclick='calcDayAtes();' style='width:80px;height:30px'>
<br><br> OBS: As datas vão ser comparadas com os dias da semana. "1,3|2,3,4"
If you do not mount an example working with all the code there is no way to help. For example, in the piece of code you have placed the variable
arr
, where it comes from? Can’t enternder like this.. has already debugged and tried to figure out what’s wrong?– Ricardo Pontual
Corrected @Ricardopunctual - Complete and messy code, because I’m still stirring a lot and didn’t have time to clean: [https://jsfiddle.net/brendowsilas/a3vq79mb/30/]
– nouvo
In the "Show code snippet" is working... put the date there "procês" see
– nouvo