import { datasetGesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15 } from "#lib/Berechnungen/BedarfsausweisWohnen/datasetGesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15.js";
import { funktionDoppelteInterpolation } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionDoppelteInterpolation.js";


export function funktionGesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15(LueftungsAnlage: string, LuftDichtheit: string, LueftungBedarfsgefuehrt: string, suchSpalte: number, datenZeile: number): any | null {

    if (suchSpalte < 0.2) { suchSpalte = 0.2; }
    if (suchSpalte > 0.8) { suchSpalte = 0.8; }
    if (datenZeile < 0) { datenZeile = 0; }
    if (datenZeile > 0.8) { datenZeile = 0.8; }

    const filteredData = datasetGesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15.filter(item => 
        item.LueftungsAnlage === LueftungsAnlage &&
        item.LuftDichtheit === LuftDichtheit &&
        item.LueftungBedarfsgefuehrt === LueftungBedarfsgefuehrt,
    );

const dataBox = filteredData.reduce((acc: { SuchSpalte: (string | number)[], DatenSpalte: number[], DatenZeile: number[] }[], item) => {
    const existingEntry = acc.find(entry => entry.SuchSpalte[0] === item.AdurchV);
    if (existingEntry) {
        existingEntry.DatenSpalte.push(item.n0);
        existingEntry.DatenZeile.push(item.nt);

    } else {
        acc.push({
            SuchSpalte: [item.AdurchV],
            DatenSpalte: [item.n0],
            DatenZeile: [item.nt],
        });
    }
    return acc;
}, []);

const dataZeile = filteredData.reduce((acc: { SuchSpalte: (string | number)[], DatenSpalte: number[], DatenZeile: number[] }[], item) => {
    const existingEntry = acc.find(entry => entry.SuchSpalte[0] === item.AdurchV);
    if (existingEntry) {
        existingEntry.DatenSpalte.push(item.n0);
        existingEntry.DatenZeile.push(item.nt);

    } else {
        acc.push({
            SuchSpalte: [item.AdurchV],
            DatenSpalte: [item.n0],
            DatenZeile: [item.nt],
        });
    }
    return acc;
}, []);


const GesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15 = funktionDoppelteInterpolation(suchSpalte, datenZeile, dataZeile, dataBox);

return {
    GesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15,
    dataBox,
    dataZeile
}

}

const result = funktionGesamtluftWechselKorrekturfaktorNettoVolumen1500T14T15("Zu-/Abluftanlage", "Kategorie I - mit geplanter Dichtheitsprüfung", "bedarfsgeführt", 0, 0.000001);
console.log(result);