Bladeren bron

initial support for scripts.

loading and saving works, not wired up to the editor yet.
Lucas Stadler 12 jaren geleden
bovenliggende
commit
86cf6d152e
4 gewijzigde bestanden met toevoegingen van 53 en 0 verwijderingen
  1. 2 0
      js/pixl/.gitignore
  2. 1 0
      js/pixl/package.json
  3. 23 0
      js/pixl/public/trixl.html
  4. 27 0
      js/pixl/server.js

+ 2 - 0
js/pixl/.gitignore

@ -1,5 +1,7 @@
1 1
/node_modules
2 2
3
/data
4
3 5
public/glmatrix.js
4 6
public/three.js
5 7
public/three.flycontrols.js

+ 1 - 0
js/pixl/package.json

@ -4,6 +4,7 @@
4 4
	"version": "0.0.0-alpha",
5 5
	"dependencies": {
6 6
		"express": "3.x",
7
		"body": "4.4.2",
7 8
		"ws": "0.4.31"
8 9
	}
9 10
}

+ 23 - 0
js/pixl/public/trixl.html

@ -587,5 +587,28 @@
587 587
			}
588 588
		});
589 589
	</script>
590
	<script>
591
		trixl.script = {};
592
593
		trixl.script.load = function(name) {
594
			var xhr = new XMLHttpRequest();
595
			xhr.open('GET', '/script/' + name);
596
			xhr.onreadystatechange = function(ev) {
597
				if (xhr.readyState == 4) {
598
					var scriptEl = document.createElement('script');
599
					scriptEl.textContent = xhr.responseText;
600
601
					document.body.appendChild(scriptEl);
602
				}
603
			}
604
			xhr.send();
605
		};
606
607
		trixl.script.save = function(name, script) {
608
			var xhr = new XMLHttpRequest();
609
			xhr.open('POST', '/script/' + name);
610
			xhr.send(script);
611
		}
612
	</script>
590 613
</body>
591 614
</html>

+ 27 - 0
js/pixl/server.js

@ -1,6 +1,7 @@
1 1
var ws = require('ws');
2 2
var http = require('http');
3 3
var express = require('express');
4
var processBody = require('body');
4 5
var fs = require('fs');
5 6
var path = require('path');
6 7
@ -65,6 +66,32 @@ app.get('/load/:name', function(req, res) {
65 66
	})
66 67
});
67 68
69
app.get('/script/:name', function(req, res) {
70
  var file = req.params.name + '.js';
71
  var dir = './public';
72
  if (!fs.existsSync(path.join(dir, file))) {
73
    dir = './data/scripts';
74
  }
75
  res.sendfile(file, {root: dir});
76
});
77
78
app.post('/script/:name', function(req, res) {
79
  processBody(req, function(err, body) {
80
    if (err) {
81
      res.send(JSON.stringify({status: "error", error: err}));
82
    }
83
84
    fs.writeFile(path.join('./data/scripts/', req.params.name + '.js'), body, function(err) {
85
    if (err) {
86
      res.statusCode = 404;
87
      res.send(JSON.stringify({status: "error", error: err}));
88
    } else {
89
      res.send(JSON.stringify({status: "ok"}));
90
    }
91
  });
92
  });
93
});
94
68 95
var server = http.createServer(app);
69 96
server.listen(8001);
70 97