Commit bc64d680 authored by Katie Frey's avatar Katie Frey

blank node, some spacing fixes

parent dde0a7b5
# coding: utf-8
import json
infile = "export.json.txt"
outfile = "mission"
########
json_file= open(infile,"r")
data = json.load(json_file)
#print data
content = data["children"][0]["children"]
#function from https://stackoverflow.com/a/54109459
def delete_keys_from_dict(d, to_delete):
if isinstance(to_delete, str):
to_delete = [to_delete]
if isinstance(d, dict):
for single_to_delete in set(to_delete):
if single_to_delete in d:
del d[single_to_delete]
for k, v in d.items():
delete_keys_from_dict(v, to_delete)
elif isinstance(d, list):
for i in d:
delete_keys_from_dict(i, to_delete)
return d
nonotes = delete_keys_from_dict(content,"note")
with open(outfile+".json", "wb") as out:
json.dump(nonotes, out)
\ No newline at end of file
......@@ -17,6 +17,7 @@ notes = "no"
json_file= open(infile,"r")
data = json.load(json_file)
#print data
content = data["children"][0]["children"]
......
......@@ -5,6 +5,8 @@ function renderTree(j){
treeJSON = d3.json(j, function(error, treeData) {
var nodenames = {};
//console.log(treeData);
$("#undobutton").unbind();
$("#redobutton").unbind();
......@@ -20,13 +22,18 @@ treeJSON = d3.json(j, function(error, treeData) {
//if i'm sending an actual json string instead of a file....
if(typeof treeData == 'undefined') {
//console.log(j);
treeData = j;
try {
for (var i = 0; i < j["children"].length; i++) {
if (j["children"][i]["name"] == "orphans") {
orphans = j.children[i]["children"];
if (j["children"][i]["name"] == "recycle") {
recycle = j.children[i]["children"];
}
else if (j["children"][i]["name"] == "orphans") {
recycle = j.children[i]["children"];
} else if (j["children"][i]["name"] == "branch") {
treeData = j.children[i]["children"];
......@@ -40,15 +47,15 @@ treeJSON = d3.json(j, function(error, treeData) {
}
} else {
//otherwise it is a file, and add in the orphan node
var orphans = {};
orphans["name"] = "orphans";
//otherwise it is a file, and add in the recycle node
var recycle = {};
recycle["name"] = "recycle";
orig = JSON.parse(JSON.stringify(treeData));
}
var treeDataExtend = {};
treeDataExtend["name"] = "root";
treeDataExtend["children"] = [orphans, treeData];
treeDataExtend["children"] = [recycle, treeData];
treeData = treeDataExtend;
......@@ -120,7 +127,7 @@ treeJSON = d3.json(j, function(error, treeData) {
});
}
// Sort the tree initially incase the JSON isn't in a sorted order.
sortTree();
//sortTree();
// TODO: Pan function, can be better implemented.
......@@ -237,7 +244,7 @@ treeJSON = d3.json(j, function(error, treeData) {
// it's important that we suppress the mouseover event on the node being dragged. Otherwise it will absorb the mouseover event and the underlying node will not detect it d3.select(this).attr('pointer-events', 'none');
})
.on("drag", function(d) {
if(d.name == "orphans"){
if(d.name == "recycle"){
return;
}
if (d == root) {
......@@ -489,7 +496,8 @@ treeJSON = d3.json(j, function(error, treeData) {
//tree = tree.size([newHeight, viewerWidth]);
var newHeight = ((Math.max(...levelWidth))*30);
var newHeight = ((Math.max(...levelWidth))*48);
//console.log("new Height "+newHeight);
tree = tree.size([newHeight, viewerWidth]);
// Compute the new tree layout.
......@@ -498,7 +506,13 @@ treeJSON = d3.json(j, function(error, treeData) {
// Set widths between levels based on maxLabelLength.
nodes.forEach(function(d) {
d.y = (d.depth * (maxLabelLength * 7) + 7); //maxLabelLength * 10px
//console.log("d.depth "+d.depth);
d.y = (d.depth * (maxLabelLength * 7) + 10); //maxLabelLength * 10px
//console.log("d.y "+d.y);
//if (d.y < 100){
// d.y = 100;
//}
//console.log("new d.y "+d.y);
// alternatively to keep a fixed scale one can set a fixed depth per level
// Normalize for fixed-depth by commenting out below line
// d.y = (d.depth * 500); //500px per level.
......@@ -897,7 +911,7 @@ treeJSON = d3.json(j, function(error, treeData) {
// Make sure that the node being added to is expanded so user can see added node is correctly moved
expand(selectedNode);
//collapse(selectedNode.children);
sortTree();
//sortTree();
}
addNode = function(nodename,errorElement){
......@@ -912,11 +926,11 @@ treeJSON = d3.json(j, function(error, treeData) {
nodenames[nodename] = 1;
var newNode = {};
newNode["name"] = nodename;
newNode["x0"] = orphans["x0"];
newNode["y0"] = orphans["y0"];
newNode["x0"] = recycle["x0"];
newNode["y0"] = recycle["y0"];
newNode.children = [];
appendNode(orphans,newNode);
update(orphans);
appendNode(recycle,newNode);
update(recycle);
centerNode(newNode);
}
......
......@@ -246,8 +246,43 @@
});
$('#saveopts').on('change', function() {
$("#blankspace").on("click", function(){
var rootname = prompt("Name your root node:");
var isvalid = /^\w+( \w+)*$/.test(rootname);
if (rootname == null){
alert("Blank workspace not created.");
}
//if the user clicks "OK" and the save name is valid...
else if (isvalid == true){
var treeDataExtend = {
"name": "root",
"children": [{
"name": "branch",
"children": {
"name": rootname
}
}, {
"name": "recycle",
"children": {
"name": "recycle"
}
}]
};
renderTree(treeDataExtend);
$("#treeoptions").show();
$("#closeleft").show();
}
});
$('#saveopts').on('change', function() {
$('#opts').val("blank");
var newData = $(this).val();
......@@ -255,16 +290,16 @@
//load orignial Container elements
var loadData = sortsaves[loadNum]["rootBranch"];
var loadOrphans = sortsaves[loadNum]["rootOrphans"];
var loadRecycle = sortsaves[loadNum]["rootRecycle"];
var loadOrig = sortsaves[loadNum]["rootOrig"];
orphans = JSON.parse(loadOrphans);
recycle = JSON.parse(loadRecycle);
branch = JSON.parse(loadData);
orig = JSON.parse(loadOrig);
var treeDataExtend = {};
treeDataExtend["name"] = "root";
treeDataExtend["children"] = [orphans, branch, orig];
treeDataExtend["children"] = [recycle, branch, orig];
renderTree(treeDataExtend);
......@@ -330,13 +365,13 @@ function savestuff(saveName,sortsaves){
for (var i = 0; i < root["children"].length; i++) {
delete root["children"][i]["parent"]
if (root["children"][i]["name"] == "orphans") {
if (root["children"][i]["name"] == "recycle") {
orphans = {};
orphans["name"] = "orphans";
orphans["children"] = root["children"][i]
recycle = {};
recycle["name"] = "recycle";
recycle["children"] = root["children"][i]
orphan1 = JSON.stringify(orphans, getCircularReplacer());
orphan1 = JSON.stringify(recycle, getCircularReplacer());
} else {
......@@ -354,18 +389,18 @@ function savestuff(saveName,sortsaves){
var rootBranch = root1.replace(/_children/gm,'children').replace(/,"children":null/gm,'').replace(/,"depth":\d*/gm,"").replace(/,"x":\d*.\d*,"y":\d*/gm,"").replace(/,"x0":\d*.\d*,"y0":\d*/gm,"").replace(/,"id":\d*/gm,"");
var rootOrphans = orphan1.replace(/_children/gm,'children').replace(/,"children":null/gm,'').replace(/,"depth":\d*/gm,"").replace(/,"x":\d*.\d*,"y":\d*/gm,"").replace(/,"x0":\d*.\d*,"y0":\d*/gm,"").replace(/,"id":\d*/gm,"");
var rootRecycle = orphan1.replace(/_children/gm,'children').replace(/,"children":null/gm,'').replace(/,"depth":\d*/gm,"").replace(/,"x":\d*.\d*,"y":\d*/gm,"").replace(/,"x0":\d*.\d*,"y0":\d*/gm,"").replace(/,"id":\d*/gm,"");
var rootOrig = JSON.stringify(orig1);
function NewBranchEntry(rootBranch,rootOrphans,rootOrig,saveName){
function NewBranchEntry(rootBranch,rootRecycle,rootOrig,saveName){
this.rootBranch = rootBranch;
this.rootOrphans = rootOrphans;
this.rootRecycle = rootRecycle;
this.rootOrig = rootOrig;
this.saveName = saveName;
}
var newBranch = new NewBranchEntry(rootBranch,rootOrphans,rootOrig,saveName);
var newBranch = new NewBranchEntry(rootBranch,rootRecycle,rootOrig,saveName);
storenewsave(newBranch,sortsaves);
}
......@@ -400,11 +435,11 @@ function downloadString() {
for (var i = 0; i < root["children"].length; i++) {
delete root["children"][i]["parent"]
if (root["children"][i]["name"] == "orphans") {
if (root["children"][i]["name"] == "recycle") {
orphans = {};
orphans["name"] = "orphans";
orphans["children"] = root["children"][i]
recycle = {};
recycle["name"] = "recycle";
recycle["children"] = root["children"][i]
} else {
......@@ -424,8 +459,8 @@ function downloadString() {
"children": [
{"name": "branch",
"children" : branch["children"]},
{"name": "orphans",
"children": orphans["children"]},
{"name": "recycle",
"children": recycle["children"]},
{"name":"orig",
"children":orig1["children"]}
]
......
{"branch":{"name":"Interstellar medium","children":[{"name":"Astrophysical masers","children":[{"name":"Hydroxyl masers"},{"name":"Megamasers"},{"name":"Silicon monoxide masers"},{"name":"Water masers"}]},{"name":"Intercloud medium"},{"name":"Interstellar absorption","children":[{"name":"Diffuse interstellar bands"},{"name":"Interstellar dust extinction"},{"name":"Interstellar line absorption"}]},{"name":"Interstellar atomic gas"},{"name":"Interstellar clouds","children":[{"name":"Dark interstellar clouds","children":[{"name":"Bok globules"},{"name":"Cometary globules"},{"name":"Infrared dark clouds"}]},{"name":"Dense interstellar clouds"},{"name":"Diffuse interstellar clouds"},{"name":"Evaporating gaseous globules"},{"name":"High-velocity clouds","children":[{"name":"Magellanic Stream"}]},{"name":"Interstellar dust","children":[{"name":"Carbonaceous grains"},{"name":"Polycyclic aromatic hydrocarbons"},{"name":"Silicate grains"},{"name":"Very small grains"}]},{"name":"Molecular clouds","children":[{"name":"Collapsing clouds"},{"name":"Diffuse molecular clouds"},{"name":"Giant molecular clouds"},{"name":"Infrared dark clouds"},{"name":"Photodissociation regions"}]},{"name":"Neutral hydrogen clouds"},{"name":"Plasma clouds"}]},{"name":"Interstellar dynamics"},{"name":"Interstellar emissions","children":[{"name":"Dust continuum emission"},{"name":"Interstellar cyclotron emission"},{"name":"Interstellar line emission","children":[{"name":"CO line emission"},{"name":"H I line emission"}]},{"name":"Interstellar masers"},{"name":"Interstellar synchrotron emission"},{"name":"Interstellar thermal emission"},{"name":"Radio continuum emission"}]},{"name":"Interstellar filaments"},{"name":"Interstellar magnetic fields"},{"name":"Interstellar molecules"},{"name":"Interstellar plasma"},{"name":"Interstellar radiation field"},{"name":"Interstellar scattering","children":[{"name":"Interstellar dust extinction"}]},{"name":"Nebulae","children":[{"name":"Bipolar nebulae"},{"name":"Bright nebulae"},{"name":"Cometary nebulae"},{"name":"Compact nebulae"},{"name":"Dark interstellar clouds","children":[{"name":"Bok globules"},{"name":"Cometary globules"},{"name":"Infrared dark clouds"}]},{"name":"Diffuse nebulae"},{"name":"Dust nebulae"},{"name":"Emission nebulae","children":[{"name":"H II regions","children":[{"name":"Bok globules"},{"name":"Compact H II region"}]},{"name":"Planetary nebulae","children":[{"name":"Planetary nebulae nuclei"}]}]},{"name":"Filamentary nebulae"},{"name":"Gaseous nebulae"},{"name":"H I regions","children":[{"name":"HI shells"}]},{"name":"Pre-solar nebulae"},{"name":"Protoplanetary nebulae"},{"name":"Reflection nebulae"},{"name":"Ring nebulae"},{"name":"Supernova remnants"}]},{"name":"Protostars","children":[{"name":"Bok globules"},{"name":"Cocoon stars"},{"name":"Cometary nebulae"},{"name":"Protoplanetary disks","children":[{"name":"Planetesimals"},{"name":"Proplyds"}]},{"name":"Young stellar objects","children":[{"name":"FU Orionis stars"},{"name":"Herbig Ae/Be stars"},{"name":"Herbig-Haro objects"},{"name":"T Tauri stars","children":[{"name":"Classical T Tauri stars"},{"name":"Weak-line T Tauri stars"}]}]}]},{"name":"Stellar bridges"},{"name":"Stellar wind bubbles","children":[{"name":"Heliosphere","children":[{"name":"Heliopause"},{"name":"Heliosheath"},{"name":"Stellar bow shocks"},{"name":"Termination shock"}]}]},{"name":"Stellar-interstellar interactions","children":[{"name":"Astrospheres"},{"name":"Interstellar medium wind"},{"name":"Stellar jets"},{"name":"Stellar winds"}]},{"name":"Superbubbles"},{"name":"Supernova remnants"},{"name":"Tidal tails"}]},"orphans":{"name":"orphans","children":[{"name":"Interstellar phases","children":[{"name":"Cold neutral medium"},{"name":"Hot ionized medium"},{"name":"Molecular gas"},{"name":"Warm ionized medium"},{"name":"Warm neutral medium"}]}]},"orig":{"name":"Interstellar medium","children":[{"name":"Astrophysical masers","children":[{"name":"Hydroxyl masers"},{"name":"Megamasers"},{"name":"Silicon monoxide masers"},{"name":"Water masers"}]},{"name":"Intercloud medium"},{"name":"Interstellar absorption","children":[{"name":"Diffuse interstellar bands"},{"name":"Interstellar dust extinction"},{"name":"Interstellar line absorption"}]},{"name":"Interstellar atomic gas"},{"name":"Interstellar clouds","children":[{"name":"Dark interstellar clouds","children":[{"name":"Bok globules"},{"name":"Cometary globules"},{"name":"Infrared dark clouds"}]},{"name":"Dense interstellar clouds"},{"name":"Diffuse interstellar clouds"},{"name":"Evaporating gaseous globules"},{"name":"High-velocity clouds","children":[{"name":"Magellanic Stream"}]},{"name":"Interstellar dust","children":[{"name":"Carbonaceous grains"},{"name":"Polycyclic aromatic hydrocarbons"},{"name":"Silicate grains"},{"name":"Very small grains"}]},{"name":"Molecular clouds","children":[{"name":"Collapsing clouds"},{"name":"Diffuse molecular clouds"},{"name":"Giant molecular clouds"},{"name":"Infrared dark clouds"},{"name":"Photodissociation regions"}]},{"name":"Neutral hydrogen clouds"},{"name":"Plasma clouds"}]},{"name":"Interstellar dynamics"},{"name":"Interstellar emissions","children":[{"name":"Dust continuum emission"},{"name":"Interstellar cyclotron emission"},{"name":"Interstellar line emission","children":[{"name":"CO line emission"},{"name":"H I line emission"}]},{"name":"Interstellar masers"},{"name":"Interstellar synchrotron emission"},{"name":"Interstellar thermal emission"},{"name":"Radio continuum emission"}]},{"name":"Interstellar filaments"},{"name":"Interstellar magnetic fields"},{"name":"Interstellar molecules"},{"name":"Interstellar phases","children":[{"name":"Cold neutral medium"},{"name":"Hot ionized medium"},{"name":"Molecular gas"},{"name":"Warm ionized medium"},{"name":"Warm neutral medium"}]},{"name":"Interstellar plasma"},{"name":"Interstellar radiation field"},{"name":"Interstellar scattering","children":[{"name":"Interstellar dust extinction"}]},{"name":"Nebulae","children":[{"name":"Bipolar nebulae"},{"name":"Bright nebulae"},{"name":"Cometary nebulae"},{"name":"Compact nebulae"},{"name":"Dark interstellar clouds","children":[{"name":"Bok globules"},{"name":"Cometary globules"},{"name":"Infrared dark clouds"}]},{"name":"Diffuse nebulae"},{"name":"Dust nebulae"},{"name":"Emission nebulae","children":[{"name":"H II regions","children":[{"name":"Bok globules"},{"name":"Compact H II region"}]},{"name":"Planetary nebulae","children":[{"name":"Planetary nebulae nuclei"}]}]},{"name":"Filamentary nebulae"},{"name":"Gaseous nebulae"},{"name":"H I regions","children":[{"name":"HI shells"}]},{"name":"Pre-solar nebulae"},{"name":"Protoplanetary nebulae"},{"name":"Reflection nebulae"},{"name":"Ring nebulae"},{"name":"Supernova remnants"}]},{"name":"Protostars","children":[{"name":"Bok globules"},{"name":"Cocoon stars"},{"name":"Cometary nebulae"},{"name":"Protoplanetary disks","children":[{"name":"Planetesimals"},{"name":"Proplyds"}]},{"name":"Young stellar objects","children":[{"name":"FU Orionis stars"},{"name":"Herbig Ae/Be stars"},{"name":"Herbig-Haro objects"},{"name":"T Tauri stars","children":[{"name":"Classical T Tauri stars"},{"name":"Weak-line T Tauri stars"}]}]}]},{"name":"Stellar bridges"},{"name":"Stellar wind bubbles","children":[{"name":"Heliosphere","children":[{"name":"Heliopause"},{"name":"Heliosheath"},{"name":"Stellar bow shocks"},{"name":"Termination shock"}]}]},{"name":"Stellar-interstellar interactions","children":[{"name":"Astrospheres"},{"name":"Interstellar medium wind"},{"name":"Stellar jets"},{"name":"Stellar winds"}]},{"name":"Superbubbles"},{"name":"Supernova remnants"},{"name":"Tidal tails"}]}}
\ No newline at end of file
{
"name": "Solar physics",
"children": [{
"name": "CNO anomaly"
}, {
"name": "Helioseismology",
"children": [{
"name": "Helioseismic pulsations"
}, {
"name": "Solar cycle",
"children": [{
"name": "Active sun"
}, {
"name": "Quiet sun"
}, {
"name": "Solar dynamo"
}, {
"name": "Sunspot cycle"
}]
}, {
"name": "Solar magnetic fields",
"children": [{
"name": "Solar dynamo"
}, {
"name": "Solar magnetic bright points"
}, {
"name": "Solar magnetic flux emergence"
}, {
"name": "Solar magnetic reconnection"
}]
}]
}, {
"name": "Solar activity",
"children": [{
"name": "Solar active regions",
"children": [{
"name": "Ephemeral active regions"
}, {
"name": "Solar active region filaments"
}, {
"name": "Solar active region magnetic fields"
}, {
"name": "Solar active region velocity fields"
}, {
"name": "Sunspots",
"children": [{
"name": "Delta sunspots"
}, {
"name": "Ephemeral active regions"
}, {
"name": "Maunder minimum"
}, {
"name": "Sunspot flow"
}, {
"name": "Sunspot groups",
"children": [{
"name": "Bipolar sunspot groups"
}]
}, {
"name": "Sunspot number"
}, {
"name": "Wilson effect"
}]
}]
}, {
"name": "Solar filaments",
"children": [{
"name": "Quiescent solar prominence"
}, {
"name": "Solar active region filaments"
}, {
"name": "Solar filament eruptions"
}]
}, {
"name": "Solar flares",
"children": [{
"name": "Solar flare spectra"
}, {
"name": "Solar radio flares"
}, {
"name": "Solar white-light flares"
}, {
"name": "Solar x-ray flares"
}]
}, {
"name": "Solar magnetic bright points"
}, {
"name": "Solar prominences",
"children": [{
"name": "Quiescent solar prominence"
}]
}, {
"name": "Solar storm",
"children": [{
"name": "Solar coronal mass ejections"
}, {
"name": "Solar energetic particles"
}, {
"name": "Solar flares",
"children": [{
"name": "Solar flare spectra"
}, {
"name": "Solar radio flares"
}, {
"name": "Solar white-light flares"
}, {
"name": "Solar x-ray flares"
}]
}]
}]
}, {
"name": "Solar atmosphere",
"children": [{
"name": "Solar chromosphere",
"children": [{
"name": "Active solar chromosphere"
}, {
"name": "Alfven waves"
}, {
"name": "Ellerman Bombs"
}, {
"name": "Plages"
}, {
"name": "Quiet solar chromosphere"
}, {
"name": "Solar chromospheric heating"
}, {
"name": "Solar spicules",
"children": [{
"name": "Solar fibrils"
}, {
"name": "Solar macrospicules"
}, {
"name": "Solar mottles"
}]
}, {
"name": "Solar transition region"
}]
}, {
"name": "Solar corona",
"children": [{
"name": "Active solar corona"
}, {
"name": "Quiet solar corona"
}, {
"name": "Solar coronal heating"
}, {
"name": "Solar coronal holes"
}, {
"name": "Solar coronal lines"
}, {
"name": "Solar coronal loops"
}, {
"name": "Solar coronal plumes"
}, {
"name": "Solar coronal radio emission"
}, {
"name": "Solar coronal seismology"
}, {
"name": "Solar coronal streamers"
}, {
"name": "Solar coronal transients"
}, {
"name": "Solar coronal waves"
}, {
"name": "Solar E coronal region"
}, {
"name": "Solar F coronal region"
}, {
"name": "Solar K coronal region"
}, {
"name": "Solar M coronal region"
}, {
"name": "Solar transition region"
}]
}, {
"name": "Solar photosphere",
"children": [{
"name": "Solar granules"
}]
}]
}, {
"name": "Solar electromagnetic emission",
"children": [{
"name": "Solar extreme ultraviolet emission"
}, {
"name": "Solar gamma-ray emission"
}, {
"name": "Solar radio emission"
}, {
"name": "Solar ultraviolet emission"
}, {
"name": "Solar X-ray emission"
}]
}, {
"name": "Solar evolution",
"children": [{
"name": "Solar nebulae"
}]
}, {
"name": "Solar faculae"
}, {
"name": "Solar flares",
"children": [{
"name": "Solar flare spectra"
}, {
"name": "Solar radio flares"
}, {
"name": "Solar white-light flares"
}, {
"name": "Solar x-ray flares"
}]
}, {
"name": "Solar granulation",
"children": [{
"name": "Mesogranulation"
}, {
"name": "Supergranulation"
}]
}, {
"name": "Solar interior",
"children": [{
"name": "Helioseismic pulsations"
}, {
"name": "Solar convective zone"
}, {
"name": "Solar core"
}, {
"name": "Solar differential rotation"
}, {
"name": "Solar meridional circulation"
}, {
"name": "Solar radiative zone"
}]
}, {
"name": "Solar magnetic fields",
"children": [{
"name": "Solar dynamo"
}, {
"name": "Solar magnetic bright points"
}, {
"name": "Solar magnetic flux emergence"
}, {
"name": "Solar magnetic reconnection"
}]
}, {
"name": "Solar mass"
}, {
"name": "Solar motion",
"children": [{
"name": "Antapex"
}, {
"name": "Apex"
}, {
"name": "Solar atmospheric motions"
}]
}, {
"name": "Solar oscillations",
"children": [{
"name": "Helioseismic pulsations"
}]
}, {
"name": "Solar particle emission",
"children": [{
"name": "Solar coronal mass ejection shocks"
}, {
"name": "Solar energetic particles"
}, {
"name": "Solar neutrons"
}]
}, {
"name": "Solar radiation",
"children": [{
"name": "Diffuse radiation"
}]
}, {
"name": "Solar radius"
}, {
"name": "Solar rotation",
"children": [{
"name": "Solar differential rotation"
}]
}, {
"name": "Solar spectral irradiance"
}, {
"name": "Solar surface"
}, {
"name": "Solar wind",
"children": [{
"name": "Fast solar wind"
}, {
"name": "Heliopause"
}, {
"name": "Slow solar wind"
}]
}, {
"name": "Sunspots",
"children": [{
"name": "Delta sunspots"
}, {
"name": "Ephemeral active regions"
}, {
"name": "Maunder minimum"
}, {
"name": "Sunspot flow"
}, {
"name": "Sunspot groups",
"children": [{
"name": "Bipolar sunspot groups"
}]
}, {
"name": "Sunspot number"
}, {
"name": "Wilson effect"
}]
}]
}
\ No newline at end of file
......@@ -68,8 +68,9 @@
</select>
<br/>OR<br/>
Load a previous export:<br/>
<input type="file" accept=".json" value="Load" id="browsebutton"/>
<input type="button" value="Load" id="loadbutton">
<input type="file" accept=".json" value="Load" id="browsebutton"/> <input type="button" value="Load" id="loadbutton">
<br/>OR<br/>
<input value="Start with a blank workspace" type=button id="blankspace"/>
<div id="treeoptions">
<hr>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment