const path = require('path');
const {ipcRenderer} = require('electron');

// https://stackoverflow.com/a/26227660
var appDataFolder = process.env.APPDATA || (process.platform == 'darwin' ? process.env.HOME + '/Library/Application Support' : process.env.HOME + "/.config")
var configFolder = path.join(appDataFolder, "FreeDATA");
var configPath = path.join(configFolder, 'config.json')
const config = require(configPath);


// WINDOW LISTENER
window.addEventListener('DOMContentLoaded', () => {
    document.getElementById('enable_filter_info').addEventListener('click', () => {
        if (document.getElementById('enable_filter_info').checked){
            display_class("table-info", true)
        } else {
            display_class("table-info", false)
        }
    })

    document.getElementById('enable_filter_debug').addEventListener('click', () => {
        if (document.getElementById('enable_filter_debug').checked){
            display_class("table-debug", true)
        } else {
            display_class("table-debug", false)
        }
    })

    document.getElementById('enable_filter_warning').addEventListener('click', () => {
        if (document.getElementById('enable_filter_warning').checked){
            display_class("table-warning", true)
        } else {
            display_class("table-warning", false)
        }
    })

    document.getElementById('enable_filter_error').addEventListener('click', () => {
        if (document.getElementById('enable_filter_error').checked){
            display_class("table-danger", true)
        } else {
            display_class("table-danger", false)
        }
    })
})


function display_class(class_name, state){
    var collection = document.getElementsByClassName(class_name);
    console.log(collection)
    for (let i = 0; i < collection.length; i++) {
        if (state == true){
            collection[i].style.display = "table-row";
        } else {
            collection[i].style.display = "None";
        }

    }
}

ipcRenderer.on('action-update-log', (event, arg) => {

    var entry = arg.entry
   
   // remove ANSI characters from string, caused by color logging  
   // https://stackoverflow.com/a/29497680
   entry = entry.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,'')


    var tbl = document.getElementById("log");
    var row = document.createElement("tr");

    var timestamp = document.createElement("td");
    var timestampText = document.createElement('span');

    //datetime = new Date();
    //timestampText.innerText = datetime.toISOString();
    timestampText.innerText = entry.slice(0, 19);
    timestamp.appendChild(timestampText);

    var type = document.createElement("td");
    var typeText = document.createElement('span');
    // typeText.innerText = entry.slice(10, 30).match(/[\[](.*)[^\]]/g);
    console.log(entry.match(/\[[^\]]+\]/g))

    try{
        typeText.innerText = entry.match(/\[[^\]]+\]/g)[0];
    } catch(e){
        typeText.innerText = '-'
    }


//    let res = str.match(/[\[](.*)[^\]]/g);

    type.appendChild(typeText);

    var area = document.createElement("td");
    var areaText = document.createElement('span');
    //areaText.innerText = entry.slice(10, 50).match(/[\] \[](.*)[^\]]/g);
    //areaText.innerText = entry.match(/\[[^\]]+\]/g)[1];

    try{
        areaText.innerText = entry.match(/\[[^\]]+\]/g)[1];
    } catch(e){
        areaText.innerText = '-'
    }
    area.appendChild(areaText);
    
    var logEntry = document.createElement("td");
    var logEntryText = document.createElement('span');
    try{logEntryText.innerText = entry.split("]")[2];
    } catch(e){
        logEntryText.innerText = "-";
    }
    logEntry.appendChild(logEntryText);

    row.appendChild(timestamp);
    row.appendChild(type);
    row.appendChild(area);
    row.appendChild(logEntry);

    //row.classList.add("table-blablubb");
/*
    if (logEntryText.innerText.includes('ALSA lib pcm')) {
        row.classList.add("table-secondary");
    }
  */
    if (typeText.innerText.includes('info')) {
        row.classList.add("table-info");
    }
    if (typeText.innerText.includes('debug')) {
        row.classList.add("table-secondary");
    }

    if (typeText.innerText.includes('warning')) {
        row.classList.add("table-warning");
    }  
    
    if (typeText.innerText.includes('error')) {
        row.classList.add("table-danger");
    }


    if (document.getElementById('enable_filter_info').checked) {
        row.style.display = "table-row"
        display_class("table-info", true)
    } else {
        row.style.display = "None"
        display_class("table-info", false)

    }
    if (document.getElementById('enable_filter_debug').checked) {
        row.style.display = "table-row"
        display_class("table-secondary", true)
    } else {
        row.style.display = "None"
        display_class("table-secondary", false)

    }
    if (document.getElementById('enable_filter_warning').checked) {
        row.style.display = "table-row"
        display_class("table-warning", true)
    } else {
        row.style.display = "None"
        display_class("table-warning", false)

    }
    if (document.getElementById('enable_filter_error').checked) {
        row.style.display = "table-row"
        display_class("table-danger", true)
    } else {
        row.style.display = "None"
        display_class("table-danger", false)

    }






    tbl.appendChild(row);




    
    // scroll to bottom of page
    // https://stackoverflow.com/a/11715670
    window.scrollTo(0,document.body.scrollHeight);
    

})
