vzlogger/controller/script.js
2010-09-25 01:37:04 +02:00

105 lines
2.5 KiB
JavaScript

var backend = '../backend';
var controller = 'php/channel.php';
var entities;
var properties;
var channels;
$(document).ready(function() {
// get entities from backend
$.getJSON(backend + '/capabilities/definition/entity.json', function(data) {
entities = data.definition.entity;
for (var i in entities) {
$('select, [name=type]').append('<option value="' + entities[i].name + '">' + entities[i].de_name + '</option>');
}
});
// get properties from backend
$.getJSON(backend + '/capabilities/definition/property.json', function(data) {
properties = data.definition.property;
});
// get channels from controller
$.getJSON(controller, showChannels);
$('select').change(function(event) { showEntityForm(event.target.value); });
});
function showEntityForm(type) {
$('#properties').empty();
var type = getDefinition(entities, type);
for (var i in type.optional) {
var property = getDefinition(properties, type.optional[i]);
if (property) {
var input = getPropertyForm(property);
$('#properties').append('<tr><td><label for="' + property.name + '">' + property.de_name + ':</label></td><td>' + input + '</td></tr>')
}
}
}
function deleteChannel(uuid) {
$.get(controller, {operation: 'delete', uuid: uuid}, function(data) {
})
}
function addChannel() {
}
function addChannelBackend(channel, backendUrl) {
}
function addChannelController(uuid) {
}
function getDefinition(definition, type) {
for (var i in definition) {
if (definition[i].name == type) {
return definition[i];
}
}
}
function getPropertyForm(property) {
var input;
switch (property.type) {
case 'string':
case 'float':
case 'integer':
input = '<input type="text" name="' + property.name + '" maxlength="' + property.max + '" />';
break;
case 'text':
input = '<textarea name="' + property.name + '"></textarea>';
break;
case 'boolean':
input = '<input type="checkbox" name="' + property.name + '" value="true" />';
case 'multiple':
for (var k in property.options) {
options.push('<option>' + property.options[k] + '<\option>');
}
input = '<select name="' + property.name + '">' + options.join() + '</select>';
break;
default:
input = 'Error: unknown property type!';
}
return input;
}
function showChannels(data) {
channels = data;
for (var i in channels) {
$('#channels').append('<tr><td>' + i + '</td><td>' + channels[i].uuid + '</td><td>' + channels[i].type + '</td><td>' + channels[i].port + '</td><td>' + channels[i].value + '</td><td><input type="button" value="löschen" /></td></tr>');
}
}