1// Einsatzgebiet zum Start definieren 2var einsatzGebiet = 1; // 1: EFH, 2: MFH, 3: Gewerbe, 4: Landwirtschaft 3 4// Variable, die angibt, ob die Ãnderungen durch die Spinner-Manipulation zustande kommen sind. 5var spinner_manipulation = 0; 6 7// Manuelle Ãnderung der Speicherauslegung oder nicht 8var speicherauslegung_change = 0; 9 10// EFH (Einfamilienhaus) 11var app_efh_stromverbrauch = { value: 4000, initial: 4000, min: 1000, max: 8000, step: 500, unit: 'kWh/a', txtId: '#slider_value_efh_stromverbrauch', sliderId: '#slider_range_efh_stromverbrauch' }; 12var app_efh_elektroauto = { value: 0, initial: 0, min: 0, max: 20000, step: 5000, unit: 'km/a', txtId: '#slider_value_efh_strecke_auto', sliderId: '#slider_range_efh_strecke_auto' }; 13var app_efh_ladezeit_auto = { value: 1, initial: 1, min: 1, max: 2, step: 1, toggleId: '#toggle_efh_ladezeit_auto', checkId: '#check_ladezeit_auto', sliderId: '' }; // sliderId muss leer bleiben 14var app_efh_solares_laden_auto = { value: 1, initial: 1, min: 1, max: 2, step: 1, toggleId: '#toggle_efh_solares_laden_auto', checkId: '#check_solares_laden_auto', sliderId: '' }; // sliderId muss leer bleiben 15var app_efh_waermepumpe = { value: 0, initial: 0, min: 0, max: 6000, step: 1000, unit: 'kWh/a', txtId: '#slider_value_efh_stromverbrauch_waermepumpe', sliderId: '#slider_range_efh_stromverbrauch_waermepumpe' }; 16var app_efh_pv = { value: 10, initial: 10, min: 2, max: 30, step: 1, unit: 'kW', txtId: '#slider_value_efh_pv_leistung', sliderId: '#slider_range_efh_pv_leistung' }; 17 18// MGL (Mehrfamilienhaus, Gewerbe und Landwirtschaft) 19var app_mgl_stromverbrauch = { value: 50000, initial: 50000, min: 10000, max: 100000, step: 5000, unit: 'kWh/a', txtId: '#slider_value_mgl_stromverbrauch', sliderId: '#slider_range_mgl_stromverbrauch' }; 20var app_mgl_elektroautoladepunkte = { value: 0, initial: 0, min: 0, max: 10, step: 1, unit: '', txtId: '#slider_value_mgl_elektroautoladepunkte', sliderId: '#slider_range_mgl_elektroautoladepunkte' }; 21var app_mgl_pv = { value: 50, initial: 50, min: 10, max: 100, step: 5, unit: 'kW', txtId: '#slider_value_mgl_pv_leistung', sliderId: '#slider_range_mgl_pv_leistung' }; 22 23// Alle Bereiche 24var app_all_dachausrichtung = { value: 0, initial: 0, min: -90, max: 90, step: 45, unit: '°', txtId: '#slider_value_all_dachausrichtung', sliderId: '#slider_range_all_dachausrichtung' }; 25var app_all_dachneigung = { value: 30, initial: 30, min: 15, max: 45, step: 15, unit: '°', txtId: '#slider_value_all_dachneigung', sliderId: '#slider_range_all_dachneigung' }; 26var app_all_produktempfehlung = { value: 0, initial: 0, min: 0, max: 5, step: 1, unit: 'kWh', txtId: '#slider_value_all_produktempfehlung', sliderId: '#slider_range_all_produktempfehlung' }; 27 28// Maximalwert der Speicherkapazität der Produktempfehlung je nach einsatzGebiet 29var max_Anzeige_efh = 30; // kWh 30var max_Anzeige_mgl = 100; // kWh 31var max_Anzeige = (einsatzGebiet == 1) ? max_Anzeige_efh : max_Anzeige_mgl; 32 33// Schrittweite der Speicherkapazität je nach einsatzGebiet 34var E_bat_step_efh = 2; // kWh 35var E_bat_step_mgl = 5; // kWh 36 37var empfohleneKapazitaet = null; 38 39// MGL-Tabelle für den Stromverbrauch in Abhängigkeit von der Anzahl der Elektroautoladepunkte 40var E_ea_tab = 41 [ 42 [0, 0], 43 [1, 1845.422], 44 [2, 3763.901], 45 [3, 6553.016], 46 [4, 9312.614], 47 [5, 11156.965], 48 [6, 13739.082], 49 [7, 16575.072], 50 [8, 19351.813], 51 [9, 22284.125], 52 [10, 24815.239] 53 ]; 54 55// Tabelle für die PV-Erzeugung je nach Dachausrichtung und -neigung 56var E_pvs_tab = 57 [ 58 [-90, 15, 886.721], 59 [-90, 30, 860.388], 60 [-90, 45, 820.268], 61 [-45, 15, 948.647], 62 [-45, 30, 967.287], 63 [-45, 45, 950.241], 64 [0, 15, 969.221], 65 [0, 30, 999.982], 66 [0, 45, 986.416], 67 [45, 15, 939.752], 68 [45, 30, 950.744], 69 [45, 45, 928.03], 70 [90, 15, 874.419], 71 [90, 30, 838.166], 72 [90, 45, 792.793] 73 ]; 74 75// Tabelle mit Dimensionierungsempfehlungen je nach Einsatzgebiet 76var Dim_grenzen = 77 [ 78 [1.5, 1, 0.5], // EFH 79 [1.5, 1, 0.5], // MFH 80 [1, 0.75, 0.6], // Gewerbe 81 [1.25, 1, 0.5], // Landwirtschaft 82 ]; 83// 1. Spalte: Begrenzung durch Gesamtstromverbrauch in kWh pro 1000 kWh/a, 84// 2. Spalte: Begrenzung durch PV-Leistung in in kWh pro kWp, 85// 3. Spalte: Min. erforderliche PV-Leistung, damit Speicher empfohlen wird in kWp pro 1000 kWh/a 86 87 88// EFH-Vektoren 89vec_efh_stromverbrauch = []; 90for (let i = 0; i <= (app_efh_stromverbrauch.max - app_efh_stromverbrauch.min) / app_efh_stromverbrauch.step; i++) { vec_efh_stromverbrauch[i] = app_efh_stromverbrauch.min + i * app_efh_stromverbrauch.step; } 91vec_efh_elektroauto = []; 92for (let i = 0; i <= (app_efh_elektroauto.max - app_efh_elektroauto.min) / app_efh_elektroauto.step; i++) { vec_efh_elektroauto[i] = app_efh_elektroauto.min + i * app_efh_elektroauto.step; } 93vec_efh_ladezeit_auto = []; 94for (let i = 0; i <= (app_efh_ladezeit_auto.max - app_efh_ladezeit_auto.min) / app_efh_ladezeit_auto.step; i++) { vec_efh_ladezeit_auto[i] = app_efh_ladezeit_auto.min + i * app_efh_ladezeit_auto.step; } 95vec_efh_solares_laden_auto = []; 96for (let i = 0; i <= (app_efh_solares_laden_auto.max - app_efh_solares_laden_auto.min) / app_efh_solares_laden_auto.step; i++) { vec_efh_solares_laden_auto[i] = app_efh_solares_laden_auto.min + i * app_efh_solares_laden_auto.step; } 97vec_efh_waermepumpe = []; 98for (let i = 0; i <= (app_efh_waermepumpe.max - app_efh_waermepumpe.min) / app_efh_waermepumpe.step;
98 i++) { vec_efh_waermepumpe[i] = app_efh_waermepumpe.min + i * app_efh_waermepumpe.step; } 99vec_efh_pv = []; 100for (let i = 0; i <= (app_efh_pv.max - app_efh_pv.min) / app_efh_pv.step; i++) { vec_efh_pv[i] = app_efh_pv.min + i * app_efh_pv.step; } 101vec_efh_bat = []; // Vektor der Speicherkapazität ergibt sich aus der Parameter in der Ergebnistabelle 102for (let i = 0; i <= (max_Anzeige_efh - 0) / E_bat_step_efh; i++) { vec_efh_bat[i] = 0 + i * E_bat_step_efh; } 103 104// MGL-Vektoren 105vec_mgl_stromverbrauch = []; 106for (let i = 0; i <= (app_mgl_stromverbrauch.max - app_mgl_stromverbrauch.min) / app_mgl_stromverbrauch.step; i++) { vec_mgl_stromverbrauch[i] = app_mgl_stromverbrauch.min + i * app_mgl_stromverbrauch.step; } 107vec_mgl_elektroautoladepunkte = []; 108for (let i = 0; i <= (app_mgl_elektroautoladepunkte.max - app_mgl_elektroautoladepunkte.min) / app_mgl_elektroautoladepunkte.step; i++) { vec_mgl_elektroautoladepunkte[i] = app_mgl_elektroautoladepunkte.min + i * app_mgl_elektroautoladepunkte.step; } 109vec_mgl_pv = []; 110for (let i = 0; i <= (app_mgl_pv.max - app_mgl_pv.min) / app_mgl_pv.step;
110 i++) { vec_mgl_pv[i] = app_mgl_pv.min + i * app_mgl_pv.step; } 111vec_mgl_bat = []; // Vektor der Speicherkapazität ergibt sich aus der Parameter in der Ergebnistabelle 112for (let i = 0; i <= (max_Anzeige_mgl - 0) / E_bat_step_mgl; i++) { vec_mgl_bat[i] = 0 + i * E_bat_step_mgl; } 113vec_mgl_einsatzgebiet = []; // Vektor der MGL-Einsatzgebiete ergibt sich aus der Parameter in der Ergebnistabelle 114for (let i = 0; i <= (4 - 2) / 1; i++) { vec_mgl_einsatzgebiet[i] = 2 + i * 1; } 115 116// EFH- und MGL-Vektoren (alle Bereiche) 117vec_all_dachausrichtung = []; 118for (let i = 0; i <= (app_all_dachausrichtung.max - app_all_dachausrichtung.min) / app_all_dachausrichtung.step; i++) { vec_all_dachausrichtung[i] = app_all_dachausrichtung.min + i * app_all_dachausrichtung.step; } 119vec_all_dachneigung = []; 120for (let i = 0; i <= (app_all_dachneigung.max - app_all_dachneigung.min) / app_all_dachneigung.step; i++) { vec_all_dachneigung[i] = app_all_dachneigung.min + i * app_all_dachneigung.step; } 121vec_all_produktempfehlung = []; 122for (let i = 0; i <= (app_all_produktempfehlung.max - app_all_produktempfehlung.min) / app_all_produktempfehlung.step; i++) { vec_all_produktempfehlung[i] = app_all_produktempfehlung.min + i * app_all_produktempfehlung.step; } 123 124var kapazitaetProduktempfehlung = []; 125var kapazitaetProduktempfehlungExtended = []; 126 127function getKapazitaetProduktempfehlung() { 128 129 var s = 0; 130 131 max_Anzeige = (einsatzGebiet == 1) ? max_Anzeige_efh : max_Anzeige_mgl; 132 133 kapazitaetProduktempfehlung = []; 134 135 // Array Anzeigewerte (nutzbareBatteriekapazitaet) 136 for (i = 0; i < produktliste.length; i++) { 137 if (produktliste[i][6] <= max_Anzeige) { 138 kapazitaetProduktempfehlung[s] = produktliste[i][6]; 139 if (i < produktliste.length - 1) { 140 if (produktliste[i][6] == produktliste[i + 1][6]) { 141 i++; 142 } 143 } 144 s++; 145 } 146 } 147 148 // console.log('getKapazitaetProduktempfehlung'); 149 // console.log(kapazitaetProduktempfehlung); 150 // 151 // console.log('productlist'); 152 // console.log(produktliste); 153 154} 155 156/** 157 * Empfohlene Kapazität setzen 158 * Hald: angepasst 159 * @param idx_kapazitaetProduktempfehlung 160 */ 161function setKapazitaetProduktempfehlung(idx_kapazitaetProduktempfehlung){ 162 empfohleneKapazitaet = kapazitaetProduktempfehlung[idx_kapazitaetProduktempfehlung] 163 164 // console.log('setKapazitaetProduktempfehlung'); 165 // console.log(idx_kapazitaetProduktempfehlung); 166 // console.log(empfohleneKapazitaet); 167 //$('#slider_range_all_produktempfehlung').slider('value', idx_kapazitaetProduktempfehlung); 168} 169 170function loadData(znr_1, znr_2, einsatzGebiet) { 171 172 var data = null; 173 var params = { 174 index1: znr_1, 175 index2: znr_2, 176 einsatzGebiet: einsatzGebiet 177 }; 178 $.ajax({
179 type: "POST", 180 url: dataUrl, 181 async: false, 182 data: params, 183 184 success: function (result) { 185 data = result; 186 187 } 188 }); 189 return data; 190} 191 192 193 194function formatNumber(val,round) { 195 if (val) { 196 var val2 = toFloat(val.toFixed(round)); 197 //console.log(val2); 198 return val2.toLocaleString('de-DE'); 199 } 200 return null; 201} 202function toFloat(string) { 203 if (string) { 204 string = string.replace(/,/, '.'); 205 return parseFloat(string); 206 } 207 return null; 208} 209 210function berechneDatenSpeicherauslegung(speicherauslegung,input,stromPreis,eegVerguetung) { 211 //console.log('berechneDatenSpeicherauslegung'); 212 213 // Einsatzgebiet, wird bei der Ermittlung der Kapazitäten verwendet 214 einsatzGebiet = parseInt(input[0]); 215 216 // Kapazitäten setzen 217 getKapazitaetProduktempfehlung(); 218 219 // Der Regler Speicherauslegung wurde geändert 220 speicherauslegung_change = 1; 221 app_all_produktempfehlung.value = kapazitaetProduktempfehlung.indexOf(toFloat(speicherauslegung)); 222 //app_all_produktempfehlung.value = 4; 223 224 //console.log('speicherauslegung'); 225 //console.log(app_all_produktempfehlung.value); 226 227 var res = berechneDatenIntern(input,stromPreis,eegVerguetung); 228 return res; 229} 230 231function berechneDaten(input,stromPreis,eegVerguetung) { 232 // Der Regler Speicherauslegung wurde nicht geändert 233 speicherauslegung_change = 0; 234 235 return berechneDatenIntern(input,stromPreis,eegVerguetung); 236} 237 238function berechneDatenIntern(input,stromPreis,eegVerguetung) { 239 240 241 // Einsatzgebiet, wird bei der Ermittlung der Kapazitäten verwendet 242 einsatzGebiet = parseInt(input[0]); 243 244 // Kapazitäten setzen 245 getKapazitaetProduktempfehlung(); 246 //input = [ 1, 2, 0, 15, 4500, 0, 1, 1, 0 ]; 247 //input = [ 1, 10, 0, 15, 4000, 0, 1, 1, 0 ]; 248 249 // console.log('preis'); 250 // console.log(stromPreis); 251 // console.log(eegVerguetung); 252 253 //p_ac2g = 0.08; 254 //p_g2ac = 0.3; 255 256 257 //console.log(input); 258 //console.log(eegVerguetung); 259 260 var numStromPreis = toFloat(stromPreis); 261 var numEeg = toFloat(eegVerguetung); 262 // console.log(numStromPreis); 263 // console.log(numEeg); 264 265 // EEG Vergütung in â¬/kWh 266 p_ac2g = numEeg/100; 267 // Strombezugspreis in â¬/kWh 268 p_g2ac = numStromPreis/100; 269 270 // console.log('strompreis'); 271 // console.log(p_g2ac); 272 // console.log('vergütung'); 273 // console.log(p_ac2g); 274 // 275 // console.log('input'); 276 277 278 279 //console.log(input); 280 if (einsatzGebiet == 1) { 281 if (input[5] == null) { 282 input[5] = 0; 283 } 284 if (input[6] == null) { 285 input[6] = 1; 286 } 287 if (input[7] == null) { 288 input[7] = 1; 289 } 290 if (input[8] == null) { 291 input[8] = 0; 292 } 293 294 // EFH 295 /* 296 Aufbau Inputvalues aus dem Formular 297 var inputValues = [ 298 Typ (1), 299 Photovoltaikleistung , 300 Dachausrichtung , 301 Dachneigung, 302 Stromverbrauch, 303 Zurückgelegte Strecke des Elektroautos, 304 Ladezeit des Elektroautos (1-tagsüber,2-abends) , 305 Solares Laden des Elektroautos (1-nein,2-ja), 306 Stromverbrauch der Wärmepumpe ]; 307 */ 308 // Objekte mit den Ãbergabewerten befüllen, werden für die Berechnung benötigt 309 app_efh_pv.value = parseInt(input[1]); 310 app_all_dachausrichtung.value = parseInt(input[2]); 311 app_all_dachneigung.value = parseInt(input[3]); 312 app_efh_stromverbrauch.value = parseInt(input[4]); 313 app_efh_elektroauto.value = parseInt(input[5]); 314 app_efh_ladezeit_auto.value = parseInt(input[6]); 315 app_efh_solares_laden_auto.value = parseInt(input[7]); 316 app_efh_waermepumpe.value = parseInt(input[8]); 317 318 } 319 else { 320 // MGL 321 /* 322 Aufbau Inputvalues aus dem Formular 323 var inputValues = [ 324 Typ (2-4), 325 Photovoltaikleistung , 326 Dachausrichtung , 327 Dachneigung, 328 Stromverbrauch, 329 Anzahl der Elektroautoladepunkte 330 ];*/ 331 app_mgl_pv.value = parseInt(input[1]); 332 app_all_dachausrichtung.value = parseInt(input[2]); 333 app_all_dachneigung.value = parseInt(input[3]); 334 app_mgl_stromverbrauch.value = parseInt(input[4]); 335 app_mgl_elektroautoladepunkte.value = parseInt(input[5]); 336 } 337 338 for (var i = 0;i<input.length;i++) { 339 input[i] = parseInt(input[i]); 340 } 341 342 //console.log(input); 343 344 //[E, idx_bat] = produktempfehlung(input, ''); 345 var resultProduktempfehlung = produktempfehlung(input, ''); 346 347 //console.log(resultProduktempfehlung); 348 349 350 E = resultProduktempfehlung[0];
351 idx_bat = resultProduktempfehlung[1]; 352 353 354 355 // console.log('erg'); 356 // console.log(app_mgl_pv); 357 // console.log('idx_bat'); 358 // console.log(idx_bat); 359 360 // Speichertypen ermitteln 361 362 //console.log(produktliste); 363 //console.log(idx_bat); 364 365 row_bat = produktliste[idx_bat]; 366 367 //console.log(row_bat); 368 // console.log(produktliste); 369 // console.log('produktliste'); 370 // console.log(row_bat); 371 372 373 s1Kaskade = row_bat[12]; 374 s2Kaskade = row_bat[13]; 375 s3Kaskade = row_bat[14]; 376 s4Kaskade = row_bat[15]; 377 s5Kaskade = row_bat[16]; 378 s7Kaskade = row_bat[18]; 379 vartaLinkKaskade = row_bat[27]; 380 381 //console.log('s1Kaskade ' + s1Kaskade); 382 // console.log('s2Kaskade ' + s2Kaskade); 383 // console.log('s3Kaskade ' + s3Kaskade); 384 // console.log('s4Kaskade ' + s4Kaskade); 385 // console.log('s5Kaskade ' + s5Kaskade); 386 // 387 388 389 390 391 // Erklärung des Ergebnisses 392 /** 393 C_save: 2053.1988032639997 - Kosteneinsparung durch Netzeinspeisung und vermiedenen Netzbezug 394 EM_pvbsv: 6.2 - Vermiedene CO2-Emissionen 395 E_ac2bs: 2525.5545392 - Batterieladung 396 E_ac2g: 9164.2350408 - Netzeinspeisung 397 E_bs2ac: 2090.24158 - Batterieentladung 398 E_g2ac: 2599.8 - Netzbezug 399 E_g2ac_save: 4400.200000000001 - Vermiedener Strombezug aus dem Netz 400 E_l: 7000 - Energie elektrische Verbraucher ??? 401 E_pvs: 13999.748 - Energie PV-System ??? 402 E_pvs2l: 2309.95842 - Direktverbrauch/Direktversorgung 403 F_solar: 2993 - Solarelektrisch zurückgelegte Strecke des Elektroautos 404 a: 63 - Autarkiegrad 405 a_bs2ac: 30 - Batterieentladung 406 a_g2ac: 37 - Netzbezug 407 a_pvbs2ea: 59.86 - PV-Batteriesystem zu Elektroauto 408 a_pvs2l: 33 - Direktversorgung 409 e: 35 - Eigenverbrauchsanteil 410 e_ac2bs: 18 - Batterieladung 411 e_ac2g: 65 - Netzeinspeisung 412 e_pvs2l: 17 - Direktverbrauch 413 414 */ 415 416 var kapView = empfohleneKapazitaet; 417 if (speicherauslegung_change == 1) { 418 kapView = null; 419 } 420 421 capacityNotSupported = 0; 422 // console.log('kapView'); 423 424 425 if (storageSystemSet == 'pulseNeo6') { 426 427 var kapCheck = kapView; 428 429 if (!kapCheck ) 430 kapCheck = $('#storageLayout').val(); 431 432 // console.log('hier'); 433 // console.log(kapView); 434 // console.log(storageSystemSet); 435 // console.log(kapCheck); 436 437 if (kapCheck > 35.4) { 438 s1Kaskade = 0; 439 s2Kaskade = 0; 440 s3Kaskade = 0; 441 s4Kaskade = 0; 442 s5Kaskade = 0; 443 s7Kaskade = 0; 444 vartaLinkKaskade = 0; 445 capacityNotSupported = 1; 446 } 447 } 448 449 var monthValues = { 450 M_pvs2l: E.M_pvs2l, 451 M_ac2bs: E.M_ac2bs, 452 M_bs2ac: E.M_bs2ac, 453 M_ac2g: E.M_ac2g, 454 M_g2ac: E.M_g2ac, 455 M_pvs: E.M_pvs, 456 M_l: E.M_l 457 }; 458 459 var dataValues = [ 460 { 461 name: "DataValueSpeicherauslegung", 462 value: formatNumber(kapView,1) 463 }, 464 { 465 name: "DataValueJährlicheErsparnis", 466 value: formatNumber(E.C_save,0) + " â¬/" + lblyear 467 }, 468 { 469 name: "DataValueErsparnisNetzbezug", 470 value: formatNumber(E.E_g2ac_save,0) + " kWh/" + lblyear 471 }, 472 { 473 name: "DataValueCO2Ersparnis", 474 value: formatNumber(E.EM_pvbsv,1) + " t/" + lblyear 475 }, 476 { 477 name: "DataValueGrueneKm", 478 value: formatNumber(E.F_solar,0) + " km/" + lblyear 479 } 480 ]; 481 482 var result = { 483 monthData: monthValues, 484 productData: [ 485 486 { 487 name: "ProductVartaPulse3", 488 value: s1Kaskade 489 }, 490 { 491 name: "ProductVartaPulse6", 492 value: s2Kaskade 493 }, 494 { 495 name: "ProductVartaElement6", 496 value: s3Kaskade 497 }, 498 { 499 name: "ProductVartaElement9", 500 value: s4Kaskade 501 }, 502 { 503 name: "ProductVartaElement12", 504 value: s5Kaskade 505 }, 506 { 507 name: "ProductVartaElement18", 508 value: s7Kaskade 509 }, 510 { 511 name: "ProductVartaLink", 512 value: vartaLinkKaskade 513 }, 514 { 515 name: "CapacityNotSupported", 516 value: capacityNotSupported 517 } 518 ], 519 dataValues: dataValues, 520 chartData: [ 521 { 522 chart: "ChartEigenverbrauchsanteil", 523 total: "" + formatNumber(E.e,0) + "%", 524 data: { 525 labels: [lbl_direct_consumption + " " + formatNumber(E.e_pvs2l,0) + " % (" + formatNumber(E.E_pvs2l,0) + " kWh/"+ lblyear + ")", lbl_battery_charge + " " + formatNumber(E.e_ac2bs,0) + " % (" + formatNumber(E.E_ac2bs,0) + " kWh/"+ lblyear + ")", lbl_grid_feed + " " + formatNumber(E.e_ac2g,0) + " % (" + formatNumber(E.E_ac2g,0) + " kWh/"+ lblyear + ")"], 526 datasets: [ 527 { 528 label: "Dataset", 529 data: [formatNumber(E.e_pvs2l,0), formatNumber(E.e_ac2bs,0), formatNumber(E.e_ac2g,0) ], 530 backgroundColor: [ "rgba(255, 235, 153, 1)", "rgba(255, 204, 1, 1)", "rgba(186, 186, 186, 1)" ] 531 } 532 ] 533 } 534 }, 535 { 536 chart: "ChartAutarkiegrad", 537 total: "" + formatNumber(E.a,0) + "%", 538 data: { 539 labels: [lbl_direct_supply + " " + formatNumber(E.a_pvs2l,0) + " % (" + formatNumber(E.E_pvs2l,0) + " kWh/"+ lblyear + ")", lbl_battery_discharge + " " + formatNumber(E.a_bs2ac,0) + " % (" + formatNumber(E.E_bs2ac,0) + " kWh/"+ lblyear + ")", lbl_grid_consumption + " " + formatNumber(E.a_g2ac,0) + " % (" + formatNumber(E.E_g2ac,0) + " kWh/"+ lblyear + ")"], 540 datasets: [ 541 { 542 label: "Dataset", 543 data: [formatNumber(E.a_pvs2l,0), formatNumber(E.a_bs2ac,0), formatNumber(E.a_g2ac,0) ], 544 backgroundColor: [ "rgba(127, 160, 197, 1)", "rgba(0, 66, 139, 1)", "rgba(186, 186, 186, 1)" ] 545 } 546 ] 547 } 548 } 549 ] 550 } 551 552 var res = { 553 success: true, 554 message: '', 555 result: result 556 } 557 558 //console.log(E); 559 //console.log(res); 560 561 return res; 562} 563 564 565function createPdf() { 566 document.getElementById('calculator').action = createPdfUrl; 567 document.getElementById('calculator').submit(); 568} 569function sendForm() { 570 document.getElementById('calculator').action = sendUrl; 571 //document.getElementById('calculator').submit(); 572}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.