agentic-coding-demo/demo-04/main.js

120 lines
3.7 KiB
JavaScript

var DATA_STORE = {};
function populateTable() {
let file_list = document.getElementById('fileinput').files;
if (file_list.length > 0) {
let csv_file = file_list[0];
Papa.parse(csv_file, {
header: true,
complete: function(results) {
DATA_STORE['participants'] = results.data.filter(teilnehmer => teilnehmer["Familienname"] !== undefined);
DATA_STORE['groupnames'] = new Set(DATA_STORE['participants'].map(teilnehmer => teilnehmer["Gruppe"]));
const group_select = document.getElementById('groupname-select');
group_select.innerHTML = '';
var default_option = document.createElement('option');
default_option.text = "Choose Group...";
default_option.selected = true;
group_select.appendChild(default_option);
DATA_STORE['groupnames'].forEach(group => {
var option = document.createElement('option');
option.value = group;
option.text = group;
group_select.appendChild(option);
});
updateCaptions();
updateTable();
}
});
}
}
function updateTable(filter_group) {
const table_body = document.getElementById('table-body');
table_body.innerHTML = '';
DATA_STORE["participants"].forEach(teilnehmer => {
if (filter_group === undefined || (filter_group !== undefined && teilnehmer["Gruppe"] == filter_group)) {
var table_row = document.createElement('tr');
var name = document.createElement('td');
name.innerHTML = teilnehmer["Familienname"] + ", " + teilnehmer["Vorname"];
table_row.appendChild(name);
table_row.appendChild(document.createElement('td'));
table_body.appendChild(table_row);
}
},
false
);
}
function updateCaptions() {
let lvname = document.getElementById('lvname').value;
document.getElementById('list-caption').innerHTML = lvname;
document.getElementById('foot-title').innerHTML = lvname;
var groupname, subcaption;
if (document.getElementById('group_from_file').checked) {
groupname = document.getElementById('groupname-select').value;
} else {
groupname = document.getElementById('groupname').value;
}
let listdate = document.getElementById('date').value;
if (listdate != "") {
listdate = new Date(listdate);
subcaption = `${groupname}, ${listdate.toLocaleDateString('de-AT')}`;
} else {
subcaption = groupname;
}
document.getElementById('list-subcaption').innerHTML = subcaption;
document.getElementById('foot-group-date').innerHTML = subcaption;
}
document.getElementById('fileinput').addEventListener('change', populateTable);
document.querySelectorAll('input, select').forEach(
elem => elem.addEventListener('input', updateCaptions),
false
);
document.querySelectorAll('select').forEach(
elem => elem.addEventListener('input', () => {
updateCaptions();
updateTable(elem.value);
}),
false
);
document.getElementById('group_from_file').addEventListener('change', (evt) => {
const groupname_input = document.getElementById('groupname');
const groupname_select = document.getElementById('groupname-select');
if (evt.target.checked) {
groupname_input.disabled = true;
groupname_input.hidden = true;
groupname_select.disabled = false;
groupname_select.hidden = false;
} else {
groupname_input.disabled = false;
groupname_input.hidden = false;
groupname_select.hidden = true;
groupname_select.disabled = true;
updateTable();
}
});
document.getElementById('include_logo').addEventListener('change', (evt) => {
if (evt.target.checked) {
document.getElementById('logo').style['display'] = 'block';
} else {
document.getElementById('logo').style['display'] = 'none';
}
});
document.addEventListener("DOMContentLoaded", function() {
updateCaptions();
});