'use strict';
const modules = require('../module');
const util = require('./util');
const getTracerName = () =>{
return document.getElementById("tracerName-2D").value;
}
const getNumRows = () => {
var row_field = document.getElementById('numRows-2D');
return row_field.value;
}
const getNumColumns = () => {
var column_field = document.getElementById('numColumns-2D');
return column_field.value;
}
const fauxData = (r, c) => {
var D = [];
for (var i = 0; i < r; i++) {
D.push([]);
for (var j = 0; j < c; j++) {
D[i].push(Math.floor(Math.random()* 10 + 1));
}
}
return D;
}
const tableToInputFields = (numRows, numColumns) => {
var table = document.querySelector('.mtbl-table');
for(var i = 0; i < numRows; i++){
for(var j = 0; j < numColumns; j++){
var elem = document.createElement('input');
elem.type = 'Text';
elem.value = Math.floor(Math.random() * 10 + 1);
elem.classList.add('mtbl-col','inputField');
table.childNodes[i].childNodes[j].innerHTML = '';
table.childNodes[i].childNodes[j].appendChild(elem);
}
}
}
const generateJS = (logger, tracer, tracerName) => {
if(!logger) return;
logger.clear();
var table = document.querySelector('.mtbl-table');
var numRows = table.childNodes.length;
var numColumns = table.childNodes[0].childNodes.length;
logger.print('Copy and paste this code in your data.js file!');
logger.print('');
if(numRows > 1) {
logger.print('let myTable = [');
}
var line = 'let myTable = [';
var i;
var j;
var comma = ',';
var currVal;
var nors;
for(i = 0; i < numRows; i++){
if(numRows > 1){
line = '[';
}
for(j = 0; j < numColumns-1; j++){
currVal = table.childNodes[i].childNodes[j].childNodes[0].value;
nors = Number(currVal);
if(isNaN(nors)){
currVal = "'" + currVal + "'";
}
line += currVal + ',';
}
if(i === numRows - 1){comma = '';}
currVal = table.childNodes[i].childNodes[j++].childNodes[0].value;
nors = Number(currVal);
if(isNaN(nors)){
currVal = "'" + currVal + "'";
}
line += currVal + ']' + comma;
logger.print(line);
}
if(numRows > 1){
logger.print(']');
}
logger.print("let myTableTracer = new "+ tracer +" ('"+tracerName+"')");
logger.print('myTableTracer._setData (myTable)');
util.enabledHightlighting();
}
const mousescroll = (e) =>{
var colmElem = document.querySelector('.mtbl-col');
var delta = (e.wheelDelta !== undefined && e.wheelDelta) ||
(e.detail !== undefined && -e.detail);
var inputFields = document.getElementsByClassName("inputField");
for (var i = 0; i < inputFields.length; i++) {
inputFields[i].style.width = (parseFloat(colmElem.style.fontSize) * 2.5) + "px";
}
}
const setup = () => {
var button_2DMatrix = document.getElementById("button-2DMatrix");
var logger;
var arr2DTracer;
button_2DMatrix.addEventListener('click',function(){
util.clearModules();
arr2DTracer = new modules.Array2DTracer();
var arrElem = document.querySelector('.module_wrapper');
arrElem.addEventListener("mousewheel", mousescroll, false);
arrElem.addEventListener("DOMMouseScroll", mousescroll, false);
logger = new modules.LogTracer('Generated Javascript');
var numRows = getNumRows();
var numColumns = getNumColumns();
var data = fauxData(numRows, numColumns);
arr2DTracer.setData(data);
tableToInputFields(numRows, numColumns);
util.positionModules();
arr2DTracer.refresh();
},false);
var button_JS = document.getElementById('button-generateJS-2D');
button_JS.addEventListener('click',function(){
generateJS(logger, 'Array2DTracer', getTracerName());
},false);
}
module.exports = {
setup,
mousescroll,
fauxData,
tableToInputFields,
generateJS
};