butiran-✗

ta-bu-ta read-param 2

· 3 mins read · edit

result

26c12.html

<div id="container"><div>

<script src="26b39.js"></script>
<script src="26b41.js"></script>
<script src="26b43.js"></script>
<script src="26b10.js"></script>
<script src="26b12.js"></script>

<script>
// Define global variables
let vecA = null, vecB = null, resu = null;

// Instantiate containers, output textarea, and buttons
const cnt = getContainer("container");
const inTxa = createTextarea("text-input");
const outTxa = createTextarea("text-output");
const btnDiv = createDiv("button-container");
const cvBtn = createButton("cv-button", "Clear vars");
const ciBtn = createButton("ci-button", "Clear input");
const coBtn = createButton("co-button", "Clear output");
const deBtn = createButton("de-button", "Default");
const rpBtn = createButton("rp-button", "Read params");
const adBtn = createButton("mu-button", "Add vectors");
const dtBtn = createButton("mu-button", "Dot vectors");

// Append textarea to container
cnt.append(inTxa);
cnt.append(btnDiv);
cnt.append(outTxa);
btnDiv.append(cvBtn);
btnDiv.append(ciBtn);
btnDiv.append(coBtn);
btnDiv.append(deBtn);
btnDiv.append(rpBtn);
btnDiv.append(adBtn);
btnDiv.append(dtBtn);

// Change elements flex value
changeElementsFlex(
  ["text-input", "3"],
  ["button-container", "3"] , 
  ["text-output", "3"],
);

// Bind consolex output to textarea and set EOL character
consolex.setOutput(outTxa);
consolex.setEOL("");

// Set onclick event to each button
ciBtn.addEventListener("click", () => {
  clearTextarea("text-input");
});
coBtn.addEventListener("click", () => {
  clearTextarea("text-output");
});
deBtn.addEventListener("click", () => {
  inTxa.value = "# params"; 
  inTxa.value += "\n" + "VECA 1,3,6";
  inTxa.value += "\n" + "VECB 1,-2,1";
});
rpBtn.addEventListener("click", () => {
  let key, line;
  
  key = "VECA";
  line = readLineFromTextarea("text-input", key);
  console.log(line);
  if(line == null) {
    outTxa.value += key + "=" + resu + "\n";
  } else {
    vecA = convertLineToParams(line, "array-float");
    outTxa.value += key + "=" + vecA + "\n";
  }

  key = "VECB";
  line = readLineFromTextarea("text-input", key);
  console.log(line);
  if(line == null) {
    outTxa.value += key + "=" + resu + "\n";
  } else {
    vecB = convertLineToParams(line, "array-float");
    outTxa.value += key + "=" + vecB + "\n";
  }
});
cvBtn.addEventListener("click", () => {
  vecA = null;
  vecB = null;
  resu = null;
});
adBtn.addEventListener("click", () => {
  if(vecA == null || vecB == null) {
    outTxa.value += "RESU=" + resu + "\n";
    return;
  }
  resu = [0, 0, 0];
  resu[0] = vecA[0] + vecB[0];
  resu[1] = vecA[1] + vecB[1];
  resu[2] = vecA[2] + vecB[2];
  outTxa.value += "RESU=" + resu + "\n";
});
dtBtn.addEventListener("click", () => {
  if(vecA == null || vecB == null) {
    outTxa.value += "RESU=" + resu + "\n";
    return;
  }
  resu = 0;
  resu += vecA[0] * vecB[0];
  resu += vecA[1] * vecB[1];
  resu += vecA[2] * vecB[2];
  outTxa.value += "RESU=" + resu + "\n";
});
</script>

26c12.js

/**
 * 26c12.js
 * Helper functions for butiran-x/26c12 note.
 *
 * Author: Sparisoma Viridi (https://github.com/dudung)
 * Created: 2026-03-03
 *
 * Exports:
 * - convertLineToParams(id, key)
 */


 /**
 * Converts a line (string) read from a textarea element into parameter value(s).
 *
 * @param {string} line - The line to convert.
 * @param {"string" | "int" | "float" | "array-float"} type - The expected parameter type.
 * @returns {string | number | number[]} The parsed parameter value(s) based on the specified type.
 *
 * @example
 * const value = convertLineToParams("10.5 20.3", "array-float");
 */
function convertLineToParams(line, type="string") {
  let param = null;
  if(type == "int") {
    param = parseInt(line);
  } else if(type == "float") {
    param = parseFloat(line);
  } else if(type == "array-float") {
    param = [];
    let arr = line.split(",");
    for(a of arr) {
      param.push(parseFloat(a));          
    }
  } else {
    param = line;
  }
  return param;
}


// marker: 26c12.js
(() => {
  console.log("[marker] 26c12.js loaded");
})();