diff --git a/Makefile b/Makefile index c1e3ff6..91f1e2b 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -LIB = unitJS +LIB = unitJS WTK WEBAPP = index.html style.css main.js ROOT = $(PREFIX)/var/www diff --git a/guix.scm b/guix.scm index dc3e95d..4d7d263 100644 --- a/guix.scm +++ b/guix.scm @@ -7,7 +7,8 @@ (let ((%source-dir (dirname (current-filename))) (SJW (load "/home/Bureau/sjw/SJW.scm")) - (UnitJS (load "/home/Bureau/unitJS/guix.scm"))) + (UnitJS (load "/home/Bureau/unitJS/guix.scm")) + (WTK (load "/home/Bureau/WTK/guix.scm"))) (package (name "etoiles") (version "devel") @@ -19,7 +20,8 @@ (native-inputs (list SJW - UnitJS)) + UnitJS + WTK)) (arguments `(#:make-flags ,#~(list (string-append "PREFIX=" #$output)) diff --git a/index.html b/index.html index b04b833..25e078f 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,7 @@
- + +
+
diff --git a/js/Grid.js b/js/Grid.js index a98bd23..120ad97 100644 --- a/js/Grid.js +++ b/js/Grid.js @@ -1,6 +1,10 @@ +import * as File from WTK.File; +import * as Async from UnitJS.Async; +import compose from UnitJS.Fun; import * as Dom from UnitJS.Dom; import {color, tool} from Toolbox; + var grid = { element: null, data: null @@ -22,6 +26,8 @@ function init(size, elementId) { grid.element.addEventListener('mouseleave', function() { down = false; }); + document.getElementById('load').addEventListener('click', load); + document.getElementById('save').addEventListener('click', save); } function emptyGrid(size) { @@ -88,3 +94,30 @@ function paint(i0, j0) { queue.shift(); } } + +function load() { + Async.run( + Async.bind( + File.pick({accept: 'text/json,.json'}), + function(input) { + return File.load(input.files[0]); + }, + Async.map(compose(setGridData, JSON.parse)) + ) + ); +} + +function setGridData(data) { + if(data != undefined) { + for(var row = 0; row < grid.element.children.length; row++) { + for(var column = 0; column < grid.element.children[row].children.length; column++) { + grid.data[row][column] = data[row][column]; + grid.element.children[row].children[column].className = data[row][column]; + } + } + } +} + +function save() { + File.save('data:text/json,' + JSON.stringify(grid.data), "grid.json"); +}