var Resource = React.createClass({
componentDidMount: function () {
},
handleParameterChange: function(event) {
var text = $("#"+event.target.id).text();
// Pressed return
if(event.which == 13) {
$("#"+event.target.id).blur();
$("#"+event.target.id).text(text);
}
},
handleUpdateParameters: function() {
var resource = this.props.resource;
delete resource["parameters"];
if(resource.continuous != undefined) {
if(resource.continuous.x != undefined) {
var number = parseFloat($("#"+this.props.resource.rid+"_parameter_x").attr("v"));
if(!isNaN(number))
resource.continuous.x = number;
}
if(resource.continuous.y != undefined) {
var number = parseFloat($("#"+this.props.resource.rid+"_parameter_y").attr("v"));
if(!isNaN(number))
resource.continuous.y = number;
}
}
if(resource.discrete != undefined) {
if(resource.discrete.x != undefined) {
var value = $("#"+this.props.resource.rid+"_parameter_x").attr("v");
value = value || $("#"+this.props.resource.rid+"_parameter_x").attr("value");
var number = parseFloat(value);
if(!isNaN(number))
resource.discrete.x = number;
else if(value.length > 0)
resource.discrete.x = value;
}
if(resource.discrete.y != undefined) {
var value = $("#"+this.props.resource.rid+"_parameter_y").attr("v");
value = value || $("#"+this.props.resource.rid+"_parameter_y").attr("value");
var number = parseFloat(value);
if(!isNaN(number))
resource.discrete.y = number;
else if(value.length > 0)
resource.discrete.y = value;
}
}
if(resource.proximity_range != undefined) {
var number = parseFloat($("#"+this.props.resource.rid+"_parameter_proximity").attr("v"));
if(!isNaN(number))
resource.proximity_range = number;
else
$("#"+this.props.resource.rid+"_parameter_proximity").val(resource.proximity_range);
}
this.props.updateResource(resource);
},
handleContinousPressed: function() {
var resource = this.props.resource;
delete resource["discrete"];
delete resource["proximity"];
delete resource["parameters"];
resource.continuous = {
x: this.props.room.x/2,
y: this.props.room.y/2
};
this.props.updateResource(resource);
},
handleDiscretePressed: function() {
var resource = this.props.resource;
delete resource["parameters"];
delete resource["continuous"];
delete resource["proximity"];
resource.discrete = {
x: 0,
y: 0
};
this.props.updateResource(resource);
},
handleProximityPressed: function() {
var resource = this.props.resource;
delete resource["parameters"];
delete resource["continuous"];
delete resource["discrete"];
resource.proximity = {};
this.props.updateResource(resource);
},
handleDisablePressed: function() {
var resource = this.props.resource;
delete resource["continuous"];
delete resource["discrete"];
delete resource["parameters"];
this.props.updateResource(resource);
},
handleDeletePressed: function() {
this.props.removeResource(this.props.resource);
},
handleStaticPressed: function() {
var resource = this.props.resource;
delete resource["parameters"];
if(resource.type == "STATIC")
return;
resource.type = "STATIC";
resource.proximity_range = 1;
delete resource["proximity"];
delete resource["parameters"];
this.props.updateResource(resource);
},
handleDynamicPressed: function() {
var resource = this.props.resource;
delete resource["parameters"];
if(resource.type == "DYNAMIC")
return;
resource.type = "DYNAMIC";
delete resource["proximity_range"];
this.props.updateResource(resource);
},
handleAddKey: function() {
var key = this.refs.key.getDOMNode().value.trim();
var value = this.refs.value.getDOMNode().value.trim();
this.refs.key.getDOMNode().value = "";
this.refs.value.getDOMNode().value = "";
var resource = this.props.resource;
resource.parameters = [];
resource.parameters.push({key: key, value: value});
this.props.updateResource(resource);
},
handleKeyEnterPressed: function(event) {
// Pressed return
if(event.which == 13) {
this.handleAddKey();
}
},
handleModifyKey: function(name, _key, _value) {
var key, value, prev_key = undefined;
var resource = this.props.resource;
switch(name) {
case "key":
key = _value;
prev_key = _key;
value = resource.parameters[prev_key];
break;
case "value":
prev_key = _key;
key = _key;
value = _value;
break;
}
/*
if(key == "") {
$("#" + event.target.id.substring(0, event.target.id.length - 1) + "k").focus();
return;
}
if(value == "") {
$("#" + event.target.id.substring(0, event.target.id.length - 1) + "v").focus();
return;
}
*/
resource.parameters = [];
resource.parameters.push({key: prev_key, delete: true});
resource.parameters.push({key: key, value: value});
this.props.updateResource(resource);
},
handleDeleteKey: function(event) {
var key = event.target.id;
var resource = this.props.resource;
resource.parameters = [];
resource.parameters.push({key: key, delete: true});
this.props.updateResource(resource);
},
render: function () {
var self = this;
var parameters = [];
if(this.props.resource.continuous != undefined ) {
if(this.props.resource.continuous.x != undefined) {
parameters.push({key: "x", value: parseFloat(this.props.resource.continuous.x).toFixed(2)});
}
if(this.props.resource.continuous.y != undefined) {
parameters.push({key: "y", value: parseFloat(this.props.resource.continuous.y).toFixed(2)});
}
}
if(this.props.resource.discrete != undefined ) {
if(this.props.resource.discrete.x != undefined) {
var value = this.props.resource.discrete.x;
if(!isNaN(parseInt(value))) {
// Reduce precision
value = parseInt(value);
}
parameters.push({key: "x", value: value});
}
if(this.props.resource.discrete.y != undefined) {
var value = this.props.resource.discrete.y;
if(!isNaN(parseInt(value))) {
// Reduce precision
value = parseInt(value);
}
parameters.push({key: "y", value: value});
}
}
if(this.props.resource.proximity_range != undefined) {
parameters.push({key: "proximity", value: parseFloat(this.props.resource.proximity_range).toFixed(2)});
}
var parameterRows = parameters.map(function (parameter, index) {
return(
{parameter.key} |
|
);
});
var parameterTable =
Variable |
Value |
{parameterRows}
;
if(parameterRows.length == 0)
parameterTable = [];
var keyValueRows = [];
if(this.props.resource.parameters != undefined) {
keyValueRows = Object.keys(this.props.resource.parameters).map(function (key, index) {
return (
|
|
);
});
}
var type = "";
if(this.props.resource.type == "STATIC") {
type = S;
}
else if(this.props.resource.type == "DYNAMIC") {
type = D;
}
var trackingSystem = "";
if(this.props.resource.continuous != undefined) {
trackingSystem = ;
}
else if(this.props.resource.discrete != undefined) {
trackingSystem = ;
}
else if(this.props.resource.proximity != undefined) {
trackingSystem = ;
}
else {
trackingSystem = ;
}
var model = "";
switch(this.props.resource.model) {
case "IMAC":
model = "icon-iMac";
break;
case "IPHONE":
model = "icon-iPhone";
break;
case "IPAD":
model = "icon-iPad";
break;
case "IBEACON":
model = "icon-iBeacon";
break;
case "ADISPLAY":
model = "icon-aDisplay";
break;
case "TTABLE":
model = "icon-tTable";
break;
case "OTHER":
model = "icon-other";
break;
}
var proximity = {};
if(this.props.resource.type == "DYNAMIC")
proximity = Proximity;
return(
{this.props.resource.rid}
|
);
}
});