You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
219 lines
5.5 KiB
219 lines
5.5 KiB
//
|
|
//
|
|
// mit jedem Paket eine eindeutige ID generieren.
|
|
// (ein Teil generiert der Server ein anderer die Anwendung)
|
|
//
|
|
|
|
|
|
var sessionID = "";
|
|
var randomID = "";
|
|
var request_running = 0;
|
|
|
|
function serverinout_getRand(min, max) {
|
|
return Math.floor(Math.random() * (max - min) + min);
|
|
};
|
|
|
|
function serverinout(request, callback) {
|
|
|
|
//
|
|
// generate random ID
|
|
if (randomID == "") {
|
|
randomID = serverinout_getRand(10000000, 99999999);
|
|
}
|
|
|
|
request.sid = sessionID;
|
|
request.rid = randomID;
|
|
|
|
// e.preventDefault();
|
|
senddata = JSON.stringify(request);
|
|
// debug('serverinout: send request:' + senddata);
|
|
$.ajax({
|
|
type: "POST",
|
|
// url: '/modelbahn/serverinout.php',
|
|
url: '/cgi-bin/modelbahn-cgi',
|
|
data: senddata,
|
|
success: function(response)
|
|
{
|
|
var jsonData = {};
|
|
// ENABLE LATER try {
|
|
jsonData = JSON.parse(response);
|
|
if (jsonData.success == "1")
|
|
{
|
|
var serverstatus = document.getElementById("infoserverstatus");
|
|
serverstatus.innerHTML = "connected";
|
|
callback(jsonData);
|
|
}
|
|
else
|
|
{
|
|
var serverstatus = document.getElementById("infoserverstatus");
|
|
serverstatus.innerHTML = "-trying-";
|
|
}
|
|
// ENABLE LATER } catch(err) {
|
|
// ENABLE LATER var serverstatus = document.getElementById("infoserverstatus");
|
|
// ENABLE LATER serverstatus.innerHTML = "-error-";
|
|
// ENABLE LATER }
|
|
},
|
|
error: function(error) {
|
|
var serverstatus = document.getElementById("infoserverstatus");
|
|
serverstatus.innerHTML = "ajax error";
|
|
}
|
|
});
|
|
};
|
|
|
|
|
|
function serverinout_Power(onoff) {
|
|
var request = {};
|
|
|
|
if (onoff) request = {command: "poweron"};
|
|
else request = {command: "poweroff"};
|
|
serverinout (request, serverinout_defaultCallback);
|
|
}
|
|
|
|
|
|
function serverinout_addTrack(tracks) {
|
|
var request = { command: "addrailway", rail: tracks };
|
|
|
|
serverinout (request, serverinout_defaultCallback);
|
|
};
|
|
|
|
|
|
function serverinout_delTrack(tracks) {
|
|
var request = { command: "delrailway", rail: tracks };
|
|
|
|
serverinout (request, serverinout_defaultCallback);
|
|
};
|
|
|
|
|
|
function serverinout_Save(data) {
|
|
var request = { command: "save" };
|
|
|
|
serverinout (request, serverinout_defaultCallback);
|
|
};
|
|
|
|
|
|
function serverinout_defaultCallback(data) {
|
|
// if (data.changes) if (data.changes.length > 0) debug ("From Server :" + JSON.stringify(data));
|
|
if (data.info) {
|
|
}
|
|
if (data.sid && data.rid) {
|
|
//
|
|
// valid data from server
|
|
if (data.rid == randomID && data.sid == sessionID) {
|
|
//
|
|
// loop through all the changes
|
|
if (data.changes) {
|
|
for (var i = 0; i < data.changes.length; i++) {
|
|
//
|
|
// infoline
|
|
if (data.changes[i].infoline) {
|
|
var text = document.getElementById("infoline");
|
|
text.innerHTML = data.changes[i].infoline;
|
|
}
|
|
|
|
//
|
|
// railway changes
|
|
if (data.changes[i].track) {
|
|
trackSetup(data.changes[i].track);
|
|
}
|
|
if (data.changes[i].railway) {
|
|
trackAddElement(data.changes[i].railway);
|
|
}
|
|
|
|
//
|
|
// Interface changes
|
|
if (data.changes[i].interfaces) {
|
|
for (var j = 0; j < data.changes[i].interfaces.length; j++) {
|
|
interface_Update(data.changes[i].interfaces[j]);
|
|
}
|
|
}
|
|
if (data.changes[i].interface) {
|
|
interface_Update(data.changes[i].interface);
|
|
}
|
|
if (data.changes[i].interfacedelete) {
|
|
interface_Delete(data.changes[i].interfacedelete);
|
|
}
|
|
|
|
//
|
|
// Locomotives changes
|
|
if (data.changes[i].locomotives) {
|
|
for (var j = 0; j < data.changes[i].locomotives.length; j++) {
|
|
locomotive_Update(data.changes[i].locomotives[j]);
|
|
}
|
|
}
|
|
if (data.changes[i].locomotive) {
|
|
locomotive_Update(data.changes[i].locomotive);
|
|
}
|
|
if (data.changes[i].locomotivedelete) {
|
|
locomotive_Delete(data.changes[i].locomotivedelete);
|
|
}
|
|
|
|
//
|
|
// Turnout changes
|
|
if (data.changes[i].turnouts) {
|
|
for (var j = 0; j < data.changes[i].turnouts.length; j++) {
|
|
turnout_Update(data.changes[i].turnouts[j]);
|
|
}
|
|
}
|
|
if (data.changes[i].turnout) {
|
|
turnout_Update(data.changes[i].turnout);
|
|
}
|
|
if (data.changes[i].turnoutdelete) {
|
|
turnout_Delete(data.changes[i].turnoutdelete);
|
|
}
|
|
|
|
//
|
|
// Sensor changes
|
|
if (data.changes[i].sensors) {
|
|
for (var j = 0; j < data.changes[i].sensors.length; j++) {
|
|
sensor_Update(data.changes[i].sensors[j]);
|
|
}
|
|
}
|
|
if (data.changes[i].sensor) {
|
|
sensor_Update(data.changes[i].sensor);
|
|
}
|
|
if (data.changes[i].sensordelete) {
|
|
sensor_Delete(data.changes[i].sensordelete);
|
|
}
|
|
}
|
|
trackDraw();
|
|
}
|
|
}
|
|
//
|
|
// new session?
|
|
else if (data.rid == randomID && data.sid > 0) {
|
|
// we got a new sessionID --> request track data
|
|
if (sessionID == 0) {
|
|
debug ("setup session ID");
|
|
sessionID = data.sid;
|
|
serverinout( {command: "getall" }, serverinout_defaultCallback);
|
|
}
|
|
}
|
|
else {
|
|
debug ("ERROR: serverinout_defaultCallback");
|
|
}
|
|
}
|
|
else {
|
|
debug ("ERROR: serverinout_defaultCallback no data.sid && data.rid");
|
|
}
|
|
};
|
|
|
|
|
|
//
|
|
// starte timeout timer fuer Updates on 1/sec
|
|
function serverinout_AutoUpdateCallback(data) {
|
|
serverinout_defaultCallback(data);
|
|
request_running = 0;
|
|
};
|
|
|
|
|
|
function serverinout_AutoUpdate() {
|
|
// debug ("serverinout_AutoUpdate");
|
|
if (request_running == 0) {
|
|
request_running = 0;
|
|
serverinout({}, serverinout_defaultCallback);
|
|
}
|
|
setTimeout(function() { serverinout_AutoUpdate() },1000);
|
|
}
|
|
|
|
|