Files
Maison/PacoMouseCYD/Platformio/SD/js/loco.js
2026-02-13 08:49:53 +01:00

184 lines
5.6 KiB
JavaScript

changelanguage();
// Check for Web Browser API support.
if (window.File && window.FileReader && window.FileList && window.Blob) {
} else {
alert("File APIs are not fully supported in this browser.");
}
function saveTextAsFile()
{
var textToSave = document.getElementById("inputTextToSave").value;
var textToSaveAsBlob = new Blob([textToSave], {type:"text/plain"});
var textToSaveAsURL = window.URL.createObjectURL(textToSaveAsBlob);
var fileNameToSaveAs = document.getElementById("inputFileNameToSaveAs").value;
fileNameToSaveAs = fileNameToSaveAs + ".csv";
var downloadLink = document.createElement("a");
downloadLink.download = fileNameToSaveAs;
downloadLink.innerHTML = "Download File";
downloadLink.href = textToSaveAsURL;
downloadLink.onclick = destroyClickedElement;
downloadLink.style.display = "none";
document.body.appendChild(downloadLink);
downloadLink.click();
}
function destroyClickedElement(event)
{
document.body.removeChild(event.target);
}
function parseCSV()
{
var iconName;
var funcName;
var iconSel;
var textToSave = document.getElementById("inputTextToSave");
var textCSV = textToSave.value;
var lines = textCSV.split("\n");
var information = lines[1].split(";");
var field = document.getElementById("NameLoco");
field.value = information[0];
field = document.getElementById("NumImage");
field.value = information[1];
field = document.getElementById("SpeedMax");
field.value = information[2];
for (let i = 0; i < 29; i++) {
iconName = "iconID" + information[3 + i];
funcName = "F" + i;
iconSel = document.getElementById(funcName);
iconSel.className = iconName;
}
var imgSrc = document.getElementById("imageToShow");
imgSrc.src = "image/" + information[1] + ".bmp";
}
function loadFileAsText()
{
var fileToLoad = document.getElementById("fileToLoad").files[0];
var loco = document.getElementById("NumLoco");
var locoFileName = fileToLoad.name.split(".");
loco.value = locoFileName[0];
var fileReader = new FileReader();
fileReader.onload = function(fileLoadedEvent)
{
var textFromFileLoaded = fileLoadedEvent.target.result;
document.getElementById("inputTextToSave").value = textFromFileLoaded;
};
fileReader.onloadend = function(progressEvent)
{
parseCSV();
}
fileReader.readAsText(fileToLoad, "UTF-8");
hideInstrucctions();
}
function loadFileAsImage()
{
var imgSrc = document.getElementById("imageToShow");
var imgNum = document.getElementById("NumImage");
var fileToLoad = document.getElementById("imageToLoad").files[0];
var imgFileName = fileToLoad.name.split(".");
imgNum.value = imgFileName[0];
imgSrc.src = "image/" + imgFileName[0] + ".bmp";
hideInstrucctions();
}
function changeImageLoco()
{
var imgNum = document.getElementById("NumImage");
var imgSrc = document.getElementById("imageToShow");
imgSrc.src = "image/" + imgNum.value + ".bmp";
}
function changelanguage()
{
const languageSelect = document.getElementById('language-select');
elements = document.querySelectorAll(`span[lang]`);
for (let element of elements) {
element.style.display = 'none';
}
var x = languageSelect.selectedIndex;
if (x==0) {elements = document.querySelectorAll(`span[lang="en"]`);}
if (x==1) {elements = document.querySelectorAll(`span[lang="es"]`);}
if (x==2) {elements = document.querySelectorAll(`span[lang="de"]`);}
if (x==3) {elements = document.querySelectorAll(`span[lang="ca"]`); }
for (let i = 0; i < elements.length; i++) {
elements[i].style.display = 'inline-block';
}
};
function selectIcon(value)
{
var allIcon = document.getElementById('iconAll');
allIcon.style.display = 'block';
var funcNum = document.getElementById('NumFunc');
funcNum.value = value;
var iconFunc = document.getElementById('Fx');
const iconText = "F" + value;
iconFunc.innerHTML = iconText;
}
function updateIcon(value)
{
var funcNum = document.getElementById('NumFunc');
const iconName = "iconID" + value;
const funcName = "F" + funcNum.value;
var iconSel = document.getElementById(funcName);
iconSel.className = iconName;
var allIcon = document.getElementById('iconAll');
allIcon.style.display = 'none';
hideInstrucctions();
}
function hideInstrucctions()
{
var showIns = document.getElementById('instruc');
showIns.style.display = 'none';
}
function createTextCSV()
{
var fileNameToSaveAs = document.getElementById("inputFileNameToSaveAs")
var textToSave = document.getElementById("inputTextToSave");
var textCSV = "Name;Image;Vmax;F0;F1;F2;F3;F4;F5;F6;F7;F8;F9;F10;F11;F12;F13;F14;F15;F16;F17;F18;F19;F20;F21;F22;F23;F24;F25;F26;F27;F28\n";
var loco = document.getElementById("NumLoco");
var field = document.getElementById("NameLoco");
var funcName;
var iconSel;
if (loco.value != "") {
textCSV = textCSV + field.value;
field = document.getElementById("NumImage");
if (field.value == "")
field.value = "0";
textCSV = textCSV + ";" + field.value;
field = document.getElementById("SpeedMax");
if (field.value == "")
field.value = "100";
textCSV = textCSV + ";" + field.value ;
for (let i = 0; i < 29; i++) {
funcName = "F" + i;
iconSel = document.getElementById(funcName).className.split("iconID");
iconSel = iconSel[1];
textCSV = textCSV + ";" + iconSel ;
}
textCSV = textCSV + "\n"
textToSave.value = textCSV;
fileNameToSaveAs.value = loco.value;
saveTextAsFile();
field = document.getElementById('instruc');
field.style.display = 'block';
}
}