Skip to content

Auto generate tracers #203

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 21 commits into from
Jul 6, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file removed algorithm/scratch_paper/code.js
Empty file.
69 changes: 68 additions & 1 deletion css/stylesheet.css
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,7 @@ nav h3 {

nav,
section,
.sandbox_container,
.viewer_container,
.editor_container {
position: absolute;
Expand All @@ -249,6 +250,11 @@ section {
right: 50%;
}

.sandbox_container{
left: 50%;
z-index: 100;
}

.editor_container {
left: 50%;
}
Expand All @@ -258,6 +264,10 @@ section {
border: none;
}

.hide{
display: none;
}

.tab_container {
top: 30px;
background: #242424;
Expand Down Expand Up @@ -332,6 +342,7 @@ section {
border-bottom: none;
}

.close_bar,
.files_bar {
height: 30px;
border-bottom: 1px solid #505050;
Expand Down Expand Up @@ -376,6 +387,11 @@ section {
box-shadow: inset 16px 0 16px -16px rgba(0, 0, 0, .6), inset -16px 0 16px -16px rgba(0, 0, 0, .6);
}

.close_bar {
width: 100%;
background-color: #3f3f3f;
}

.explanation_container {
border: none;
top: 30px;
Expand Down Expand Up @@ -657,4 +673,55 @@ input[type=number]::-webkit-outer-spin-button {
top: 30px;
left: 0;
}
}
}

.buttonContainer {
width: 75px;
height: 25px;
display: block;
position: relative;
z-index: 100;
background-color: white;
}

.inputField {
width: 25px;
border: 0;
}

.sb-button {
border: 1px solid #515151;
height: 25px;
margin: 0 auto;
}

.auto-gen {
top: 30px;
height: 100%;
width: 100%;
text-align: center;
background-color: #262626;
align-items: center;
}

.inputs {
display: inline-block;
border: 0;
background-color: #505050;
height: 25px;
width: 75px;
}

.grid {
width: 50%;
height: 50%;
float: left;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}

.fields {
margin-top: 5px;
margin-bottom: 5px;
}
7 changes: 7 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ <h3>
</h3>
</button>
<div class="top-menu-buttons">
<div class="btn" id="btn_generate">
<div class="wrapper">
<i class='fa fa-pencil' aria-hidden='true'></i>
<span class="btn-text">Generate</span>
</div>
</div>

<div class="btn" id="btn_share">
<div class="wrapper">
<i class="fa fa-share" aria-hidden="true"></i> Share <input type="text" class="collapse" id="shared">
Expand Down
45 changes: 45 additions & 0 deletions js/create/array1d.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
'use strict';

const array2D = require('./array2d');
const modules = require('../module');
const util = require('./util');

const getTracerName = () =>{
return document.getElementById("tracerName-1D").value;
}

const getNumColumns = () => {
var column_field = document.getElementById('numColumns-1D');
return column_field.value;
};

const setup = () => {
var button_1DMatrix = document.getElementById("button-1DMatrix");
var logger;
var arr1DTracer;
button_1DMatrix.addEventListener('click',function(){
util.clearModules();
arr1DTracer = new modules.Array1DTracer();
var arrElem = document.querySelector('.module_wrapper');
arrElem.addEventListener("mousewheel", array2D.mousescroll, false);
arrElem.addEventListener("DOMMouseScroll", array2D.mousescroll, false);
logger = new modules.LogTracer('Generated Javascript');

var numColumns = getNumColumns();
var data = array2D.fauxData(1,numColumns)[0];

arr1DTracer.setData(data);
array2D.tableToInputFields(1, numColumns);
util.positionModules();
arr1DTracer.refresh();
},false);
var button_JS = document.getElementById('button-generateJS-1D');
button_JS.addEventListener('click',function(){
array2D.generateJS(logger, 'Array1DTracer',getTracerName());
},false);
};


module.exports = {
setup
};
128 changes: 128 additions & 0 deletions js/create/array2d.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
'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 = 'Number';
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('');

logger.print('let myTable = [');

var line = '';
var i;
var j;
var comma = ',';
for(i = 0; i < numRows; i++){
line = '[';
for(j = 0; j < numColumns-1; j++){
line += table.childNodes[i].childNodes[j].childNodes[0].value + ',';
}
if(i === numRows - 1){comma = '';}
line += table.childNodes[i].childNodes[j++].childNodes[0].value + ']' + comma;
logger.print(line);
}
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
};
93 changes: 93 additions & 0 deletions js/create/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
'use strict';

const modules = require('../module');
const array2d = require('./array2d');
const array1d = require('./array1d');
const util = require('./util');
const Server = require('../server');
const DOM = require('../dom');

const {
getPath
} = require('../server/helpers');

const closeCreate = () => {
const $btnClose = $('#btn_close');

$btnClose.click(() => {
$('.sandbox_container').remove();
util.clearModules();
reloadAlgorithm();
});
};

const reloadAlgorithm = () => {
const {
category,
algorithm,
file
} = getPath();

Server.loadAlgorithm(category, algorithm).then((data) => {
DOM.showAlgorithm(category, algorithm, data);
});
};

const createHTML = () => {
$('.workspace').append("<div class='sandbox_container'>\
<section class='close_bar'>\
<div class='btn' id='btn_close'>\
<div class='wrapper'>\
<i class='fa fa-times' aria-hidden='true'></i>\
</div>\
</div>\
</section>\
<section class='auto-gen'>\
<div class='grid' id='array1D-gen'>\
<div> array1DTracer </div>\
<i class='fa fa-ellipsis-h fa-5x' aria-hidden='true'></i>\
<div class='fields'>\
# of Columns: <input class='inputs'id='numColumns-1D' type='number' value='5'>\
</div>\
<div class='fields'>\
Tracer Name: <input class='inputs'id='tracerName-1D' type='text' value='default'>\
</div>\
<button class='sb-button' id='button-1DMatrix'>Create 1DMatrix</button>\
<button class='sb-button' id='button-generateJS-1D'>Generate Javascript</button>\
</div>\
<div class='grid' id='array2D-gen'>\
<div> array2DTracer </div>\
<i class='fa fa-th fa-5x' aria-hidden='true'></i>\
<div class='fields'>\
# of Rows: <input class='inputs'id='numRows-2D' type='number' value='5'>\
</div>\
<div class='fields'>\
# of Columns: <input class='inputs'id='numColumns-2D' type='number' value='5'>\
</div>\
<div class='fields'>\
Tracer Name: <input class='inputs'id='tracerName-2D' type='text' value='default'>\
</div>\
<button class='sb-button' id='button-2DMatrix'>Create 2DMatrix</button>\
<button class='sb-button' id='button-generateJS-2D'>Generate Javascript</button>\
</div>\
<div class='grid' id='chart-gen'></div>\
<div class='grid' id='graph-gen'></div>\
</section>\
</div>");
};

const init = () => {

var check = $('.sandbox_container');
if(!check.length){
util.clearModules();
createHTML();
array2d.setup();
array1d.setup();
closeCreate();
}
};

module.exports = {
init
};
Loading
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy