Added lots of web interface related stuff for external plugin

This commit is contained in:
Daniel Vestøl committed 2018-06-06 21:33:08 +02:00
1 parent 17b5967b0f
commit 034db54152
4 files changed
+66 -33

No files matched your search

+8 -3
View File
@@ -83,10 +83,15 @@ app.set('views', path.join(__dirname, 'static'));
app.set('view engine', 'html');
app.engine('html', ejs.renderFile);
var routes = require("./routes.js");
routes(app);
// give ejs access to some interesting information
app.use(function(req, res, next){
res.locals.res = res;
res.locals.req = req;
res.locals.masterPlugins = masterPlugins;
next();
});
require("./routes.js")(app);
// Set folder to serve static content from (the website)
app.use(express.static('static'));
// mod downloads
+8 -8
View File
@@ -1,9 +1,9 @@
<title>Clusterio</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script src="external/jquery.js"></script>
<script src="external/jquery-ui.js"></script>
<script src="external/canvasjs.js"></script>
<script src="external/moment.min.js"></script>
<script src="external/mousetrap.min.js"></script>
<script src="main.js"></script>
<link href="external/css/Roboto.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/style.css">
<script src="/external/jquery.js"></script>
<script src="/external/jquery-ui.js"></script>
<script src="/external/canvasjs.js"></script>
<script src="/external/moment.min.js"></script>
<script src="/external/mousetrap.min.js"></script>
<script src="/main.js"></script>
<link href="/external/css/Roboto.css" rel="stylesheet">
+43 -20
View File
@@ -49,6 +49,24 @@ debugTools = {
}
}
let cachedInstanceNames = {};
async function getInstanceName(instanceID){
let instance = cachedInstanceNames[instanceID];
if(!instance){
let slaves = await getJSON("/api/slaves");
try {
for(id in slaves){
cachedInstanceNames[id] = slaves[id].instanceName;
}
} catch(e){
console.log("Error while looking for instance name!");
console.log(e);
}
return cachedInstanceNames[instanceID] || instanceID;
} else {
return cachedInstanceNames[instanceID];
}
}
var g = {}
contents = {
"iron-plate":100,
@@ -65,22 +83,27 @@ function djb2(str){
}
// callback(err, json)
function getJSON(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status == 200) {
callback(null, xhr.response);
} else {
callback(status);
}
};
// triggers if connection is refused
xhr.onerror = function(e){
callback(e);
};
xhr.send();
return new Promise((resolve, reject) => {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status == 200) {
if(callback) callback(null, xhr.response);
resolve(xhr.response);
} else {
if(callback) callback(status);
resolve(status);
}
};
// triggers if connection is refused
xhr.onerror = function(e){
if(callback) callback(e);
reject(e);
};
xhr.send();
});
};
// callback(err, json)
function postJSON(url, data, callback) {
@@ -89,12 +112,12 @@ function postJSON(url, data, callback) {
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status == 200) {
var status = xhr.status;
if (status == 200) {
callback(null, xhr.response);
} else {
} else {
callback(status);
}
}
};
// triggers if connection is refused
xhr.onerror = function(e){
+7 -2
View File
@@ -8,10 +8,15 @@
<a href="/"><div id="storage-menu" class="button-black menuItem">
<p>Storage</p>
</div></a>
<a href="nodes"><div id="slaves-menu" class="button-black menuItem">
<a href="/nodes"><div id="slaves-menu" class="button-black menuItem">
<p>Slaves</p>
</div></a>
<a href="settings"><div id="settings-menu" class="button-black menuItem">
<%# Very ugly ejs code to hide the Players button if the playerManager plugin isn`t installed %>
<% adsdf = "none"; masterPlugins.forEach(plug => {if(plug.pluginConfig.name == "playerManager"){ adsdf = "block" }}); %>
<a href="/playerManager" style="display:<%= adsdf %>"><div id="playerManager-menu" class="button-black menuItem">
<p>Players</p>
</div></a>
<a href="/settings"><div id="settings-menu" class="button-black menuItem">
<p>Settings</p>
</div></a>
</div>