diff --git a/index.html b/index.html index 2037740..ea9a334 100644 --- a/index.html +++ b/index.html @@ -624,6 +624,7 @@

+ diff --git a/scripts/main.js b/scripts/main.js index 373838f..d90ed20 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -105,8 +105,9 @@ function onFileImported(e) { const text = e.target.result; const regexTotalEnergies = /^\d+-.+-.+\.csv$/; - - if (csvFile.files[0].name.includes("Enedis")) { + if (csvFile.files[0].name.includes("historique_conso")) { + parser = enedisBokupParser; + } else if (csvFile.files[0].name.includes("Enedis")) { parser = enedisParser; } else if (csvFile.files[0].name.match(regexTotalEnergies)) { parser = totalParser; diff --git a/scripts/parsers/enedisBokupParser.js b/scripts/parsers/enedisBokupParser.js new file mode 100644 index 0000000..806678f --- /dev/null +++ b/scripts/parsers/enedisBokupParser.js @@ -0,0 +1,54 @@ +var enedisBokupParser = { + parseCSV: function (csv) { + const result = []; + + const lines = csv.split("\n"); + + //Les données débutent à partir de la 3ème ligne + for (let i = 3; i < lines.length; i++) { + const currentline = lines[i].split(";"); + result.push(currentline); + } + return result; + }, + loadData: function (rows) { + let data = []; + + rows.reverse().forEach(row => { + if (row.length > 1) { + const [date, time] = row[0].replace(/\+0.:00/g, "").split("T"); + const value = `${Number(row[2].slice(1,-1).replace(',','.')) * 1000}`; + + let formattedDate = date.replace(/-/g, "/"); + + let [hours, minutes, seconds] = time.split(':'); + + if (hours == "00" && minutes == "00") { + hours = "24"; + let isoDate = new Date(date); + isoDate.setDate(isoDate.getDate() - 1); + formattedDate = isoDate.toISOString().split("T")[0].replace(/-/g, "/"); + } + const formattedTime = `${hours}:${minutes}:00`; + + const day = data.find(d => d.date === formattedDate); + if (day) { + //On vérifie si on n'a pas de doublons. Cela ne s'est pas produit chez ENEDIS. + if (!day.hours.some(hour => hour[0] == formattedTime)) { + day.hours.push([formattedTime, value]); + } + } else { + let newDay = {}; + newDay.date = formattedDate; + newDay.hours = []; + newDay.hours.push([formattedTime, value]); + data.push(newDay); + } + } + }); + + return data; + } +}; + +