omrežni calculator 0.0.1 sigma

Samo za preljubo slo-smeh občestvo in našega inžInirskega siromaka.

HTML

<div class="flex">
<div class="input">
Poišči optimalne dogovorjene moči: <select id="isciMinimum" onchange="go2it();">
  <option value="true">DA</option>
  <option value="false">NE</option>
</select><br /><br />
Cene po blokih:<br />
<ul>
<li>Blok 1 - <input id="blok1" value="3,61324">€</li>
<li>Blok 2 - <input id="blok2" value="0,88240">€</li>
<li>Blok 3 - <input id="blok3" value="0,19137">€</li>
<li>Blok 4 - <input id="blok4" value="0,01316">€</li>
<li>Blok 5 - <input id="blok5" value="0,0">€</li>
</ul>
Dogovorjene moči po blokih:<br />
<ul class="mali">
  <li>Blok 1 - <input id="moc1" value="2">kW</li>
  <li>Blok 2 - <input id="moc2" value="2">kW</li>
  <li>Blok 3 - <input id="moc3" value="2">kW</li>
  <li>Blok 4 - <input id="moc4" value="2">kW</li>
  <li>Blok 5 - <input id="moc5" value="2">kW</li>
</ul>
<input type="file" />
</div>
<div class="output"></div>
</div>

CSS

* {
  box-sizing: border-box;
}
input[type="file"] {
  max-width: 180px;
}
ul input {
  width: 60px;
}
ul.mali input {
  width: 30px;
}
.flex {
  display: flex;
  flex-flow: row;
  flex-wrap: wrap;
  
}
.output {
  border: 1px dotted #000;
  padding: 6px;
  min-width: 200px; 
}
.output table, tr, td {
  border: 1px solid #000;
  border-collapse: collapse;
  padding: 4px;
}
.input {
  max-width: 200px;
}
.siromaque {
  font-weight: bold;
  font-size: 1.2em;
}

JavaScript

function valOf(e) {
	var el = document.getElementById(e);
  if (!el) return false;
  if (el.value == "true") return true;
  if (el.value == "false") return false;
  return el.value;
}
const fileInput = document.querySelector("input[type=file]");
const output = document.querySelector(".output");
var fileContent = '';
var moci = [[],[],[],[],[]];
var presezki = [0,0,0,0,0];
var cene = [3.61324,0.88240,0.19137,0.01316,0]
var dogovorjeneMoci = [2,2,2,2,2];
var redniZneski = [0,0,0,0,0,0,0,0,0,0,0,0];
var zneskiPresezkov = [0,0,0,0,0,0,0,0,0,0,0,0];
var optimalneMoci = [[],[],[],[],[],[],[],[],[],[],[],[]];
var optimalniZneski = [];
var optimalniPresezki = [];
// preveri v mojelektro csv če štimajo polja
const poljeMesec = 4;
const poljeMoc = 9;
const poljeBlok = 13;

var isciMinimum = true;

var trenutniMesec = 0;
fileInput.addEventListener("change", async () => {
  const [file] = fileInput.files;
  if (file) {
   	fileContent = await file.text();
    go2it();
  }  
});
function go2it() {
		if (fileContent.length < 10) return;
		isciMinimum = valOf('isciMinimum');
    redniZneski = [0,0,0,0,0,0,0,0,0,0,0,0];
		zneskiPresezkov = [0,0,0,0,0,0,0,0,0,0,0,0];
		optimalneMoci = [[],[],[],[],[],[],[],[],[],[],[],[]];
		optimalniZneski = [];
		optimalniPresezki = [];
    trenutniMesec = 0;
  	var mm = 1;
    while (mm < 6) {
    	cene[mm-1] = parseFloat(valOf('blok'+mm).replace(',','.'));
      if (!isciMinimum) dogovorjeneMoci[mm-1] = parseFloat(valOf('moc'+mm).replace(',','.'));
    	mm++;
    }
   
    var lines = fileContent.split('\n');
    var mesec = -1;
    var moc = -1;
    var blok = -1;
    var line = []
    var first = true;
    var k = 0;
    for (var l in lines) {

    	if (first) {
      	first = false;
        continue;
      }
      if (lines[l].length < 10) continue;
    	line = lines[l].split(',');
    	mesec = parseInt(line[poljeMesec]);
      moc = parseFloat(line[poljeMoc]);
      blok = parseInt(line[poljeBlok]);
    	if (trenutniMesec != mesec) {
    ...