diff --git a/.gitignore b/.gitignore
index 2694b20..61354a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -52,13 +52,13 @@ xcuserdata
########################
# Keep out icons local #
########################
-Android/res/drawable-hdpi/icon.png
-Android/res/drawable-ldpi/icon.png
-Android/res/drawable-mdpi/icon.png
-Android/res/drawable-xhdpi/icon.png
-Android/res/drawable/icon.png
-iOS/Arbiter/Resources/icons/icon.png
-iOS/Arbiter/Resources/icons/icon@2x.png
-iOS/Arbiter/Resources/icons/icon-72.png
-iOS/Arbiter/Resources/icons/icon-72@2x.png
-iOS/www/src/img/logo.png
+/Android/res/drawable-hdpi/icon.png
+/Android/res/drawable-ldpi/icon.png
+/Android/res/drawable-mdpi/icon.png
+/Android/res/drawable-xhdpi/icon.png
+/Android/res/drawable/icon.png
+/iOS/Arbiter/Resources/icons/icon.png
+/iOS/Arbiter/Resources/icons/icon@2x.png
+/iOS/Arbiter/Resources/icons/icon-72.png
+/iOS/Arbiter/Resources/icons/icon-72@2x.png
+/iOS/www/src/img/logo.png
diff --git a/Android/.settings/org.eclipse.jdt.core.prefs b/Android/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b080d2d
--- /dev/null
+++ b/Android/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/Android/LatestBuilds/Arbiter_13Jan3_1041am.apk b/Android/LatestBuilds/Arbiter_13Jan3_1041am.apk
deleted file mode 100644
index a63de8a..0000000
Binary files a/Android/LatestBuilds/Arbiter_13Jan3_1041am.apk and /dev/null differ
diff --git a/iOS/www/src/index.html b/iOS/www/src/index.html
index 8d81205..731e943 100644
--- a/iOS/www/src/index.html
+++ b/iOS/www/src/index.html
@@ -305,6 +305,7 @@
Map
@@ -312,7 +313,7 @@ Map
diff --git a/iOS/www/src/js/Arbiter.js b/iOS/www/src/js/Arbiter.js
index ee6f135..de55d35 100644
--- a/iOS/www/src/js/Arbiter.js
+++ b/iOS/www/src/js/Arbiter.js
@@ -815,7 +815,7 @@ var Arbiter = {
var attributeSql = "id integer primary key, fid text, " + layer.geomName + " text not null";
for(var i = 0; i < layer.attributes.length; i++){
- attributeSql += ", " + layer.attributes[i] + " " + layer.attributeTypes[i].type;
+ attributeSql += ", '" + layer.attributes[i] + "' " + layer.attributeTypes[i].type;
if(layer.attributeTypes[i].notnull)
attributeSql += " not null";
}
@@ -869,10 +869,10 @@ var Arbiter = {
insertProjectsServer: function(serverId, serverName, success){
console.log("insertProjectsServer: " + serverId + ", " + serverName, success);
- var insertServerSql = "INSERT INTO servers (server_id) VALUES (" + serverId + ");";
+ var insertServerSql = "INSERT INTO servers (server_id) VALUES (?);";
console.log(insertServerSql);
- Cordova.transaction(Arbiter.currentProject.variablesDatabase, insertServerSql, [], function(tx, res){
+ Cordova.transaction(Arbiter.currentProject.variablesDatabase, insertServerSql, [serverId], function(tx, res){
success(serverId, serverName);
}, Arbiter.error);
},
@@ -942,7 +942,7 @@ var Arbiter = {
console.log("Add project " + Arbiter.squote(Arbiter.currentProject.name) + " to projects table...");
//Add the project name to the projects table in globle.db
- Cordova.transaction(Arbiter.globalDatabase, "INSERT INTO projects (name) VALUES (" + Arbiter.squote(Arbiter.currentProject.name) + ");", [], function(tx, res){
+ Cordova.transaction(Arbiter.globalDatabase, "INSERT INTO projects (name) VALUES (?);", [Arbiter.currentProject.name], function(tx, res){
Arbiter.currentProject.variablesDatabase = Cordova.openDatabase("Arbiter/Projects/" + Arbiter.currentProject.name + "/variables", "1.0", "Variable Database", 1000000);
Arbiter.currentProject.dataDatabase = Cordova.openDatabase("Arbiter/Projects/" + Arbiter.currentProject.name + "/data", "1.0", "Data Database", 1000000);
@@ -1244,7 +1244,7 @@ var Arbiter = {
}, function(e){ console.log("Error reading tileIds - " + e); });
//open the editor tab. a hack to avoid the jumping feature bug
- $("#editorTab").click();
+ Arbiter.ToggleEditorMenu();
}
},
@@ -1574,13 +1574,6 @@ var Arbiter = {
Arbiter.OpenAttributesMenu();
} else {
Arbiter.CloseAttributesMenu();
- /*
- if(attributeTab) {
- if(selectedFeature) {
- Arbiter.newWFSLayer.unselected(selectedFeature);
- }
- }
- */
}
},
@@ -1957,6 +1950,7 @@ var Arbiter = {
li += "";
+
Arbiter.radioNumber++;
//add the data from local storage
@@ -1984,14 +1978,15 @@ var Arbiter = {
}
}
}
+ Arbiter.radioNumber = 1;
},
setLayerAttributeInfo: function(serverList, layername, f_table_name){
console.log("layername: " + layername + ", f_table_name: " + f_table_name, serverList);
// get the geometry name, type, and srs of the layer
- var geomColumnsSql = "SELECT * FROM geometry_columns where f_table_name='" + f_table_name + "';";
+ var geomColumnsSql = "SELECT * FROM geometry_columns where f_table_name=?;";
- Cordova.transaction(Arbiter.currentProject.dataDatabase, geomColumnsSql, [], function(tx, res) {
+ Cordova.transaction(Arbiter.currentProject.dataDatabase, geomColumnsSql, [f_table_name], function(tx, res) {
var geomName;
//var server = Arbiter.currentProject.serverList[serverName];
var serverLayer = serverList.layers[layername];
@@ -2095,8 +2090,9 @@ var Arbiter = {
Cordova.transaction(Arbiter.currentProject.variablesDatabase, "DELETE FROM layers WHERE layername=?;", [layername], function(tx, res){
var server = Arbiter.currentProject.serverList[servername];
var layer = server.layers[layername];
+ //TODO: check all statements for end ;
Cordova.transaction(Arbiter.currentProject.dataDatabase, "DELETE FROM geometry_columns WHERE f_table_name=?", [layer.featureType], function(tx, res){
- Cordova.transaction(Arbiter.currentProject.dataDatabase, "DROP TABLE " + layer.featureType, [], function(tx, res){
+ Cordova.transaction(Arbiter.currentProject.dataDatabase, "DROP TABLE " + layer.featureType + ";", [], function(tx, res){
console.log("before_delete: success! " + servername + ", " + layername);
//TODO: why is destroy not working?
@@ -3166,7 +3162,7 @@ var Arbiter = {
readLayerFromDb: function(tableName, layerName, geomName, srsName){
var layer = map.getLayersByName(layerName + "-wfs")[0];
console.log("readLayerFromDb: " + tableName + ", " + layerName + ", " + geomName + ", " + srsName);
- Cordova.transaction(Arbiter.currentProject.dataDatabase, "SELECT * FROM " + tableName, [], function(tx, res){
+ Cordova.transaction(Arbiter.currentProject.dataDatabase, "SELECT * FROM " + tableName + ";", [], function(tx, res){
for(var i = 0; i < res.rows.length;i++){
var row = res.rows.item(i);
@@ -3191,7 +3187,7 @@ var Arbiter = {
}
//after the transaction is complete, check to see which features are dirty
- Cordova.transaction(Arbiter.currentProject.variablesDatabase, "SELECT * FROM dirty_table where f_table_name='" + tableName + "';", [], function(tx, res){
+ Cordova.transaction(Arbiter.currentProject.variablesDatabase, "SELECT * FROM dirty_table where f_table_name=?;", [tableName], function(tx, res){
for(var i = 0; i < res.rows.length;i++){
var feature = layer.getFeatureByFid(res.rows.item(i).fid);
feature.modified = true;
@@ -3548,7 +3544,8 @@ var Arbiter = {
var protocol = selectedFeature.layer.protocol;
Arbiter.insertFeaturesIntoTable([selectedFeature], protocol.featureType, protocol.geometryName, protocol.srsName, true);
- Arbiter.ToggleAttributeMenu();
+ //this should go back in when the feature selection bug is fixed
+ //Arbiter.ToggleAttributeMenu();
}else{
$("#saveAttributesFailed").fadeIn(1000, function(){
$(this).fadeOut(3000);
@@ -3728,7 +3725,7 @@ var Arbiter = {
//Arbiter.deleteLayerCount++;
Arbiter.deleteLayer(meta.serverName, meta.nickname);
}else{
- Cordova.transaction(Arbiter.currentProject.dataDatabase, "DELETE FROM " + featureType, [], function(tx, res) {
+ Cordova.transaction(Arbiter.currentProject.dataDatabase, "DELETE FROM '" + featureType + "';", [], function(tx, res) {
// pull everything down
wfsLayer.destroyFeatures();
console.log("pull after delete");
@@ -3764,9 +3761,13 @@ var Arbiter = {
var newWFSLayer = new OpenLayers.Layer.Vector(meta.nickname + "-wfs", {
strategies : strategies,
projection : new OpenLayers.Projection(meta.srsName),
- protocol : protocol,
- styleMap: styleMap
+ protocol : protocol
});
+
+ if (serverLayer.geometryType === "Point") {
+ alert('setting stylemap for: ' + meta.nickname);
+ newWFSLayer.styleMap = styleMap;
+ }
newWFSLayer.attributeTypes = {};
@@ -3818,17 +3819,18 @@ var Arbiter = {
}
});
- var poiInBounds;
+ var featureInBounds;
newWFSLayer.events.register("beforefeatureadded", null, function(event) {
//if in bounds
- if(Arbiter.currentProject.aoi.contains(event.feature.geometry.x, event.feature.geometry.y)) {
- poiInBounds = true;
+ // if(Arbiter.currentProject.aoi.contains(event.feature.geometry.x, event.feature.geometry.y)) {
+ if(Arbiter.currentProject.aoi.intersectsBounds(event.feature.geometry.getBounds())) {
+ featureInBounds = true;
return true;
}
//if out of bounds
- console.log('Feature is out of bounds');
- poiInBounds = false;
+ console.log('Feature is out of bounds:', event.feature);
+ featureInBounds = false;
return false;
});
@@ -3836,7 +3838,7 @@ var Arbiter = {
var selectControl = new OpenLayers.Control.SelectFeature( newWFSLayer, OpenLayers.Handler.Point);
addFeatureControl.events.register("featureadded", null, function(event) {
- if(poiInBounds == false) {
+ if(featureInBounds == false) {
return false;
}
// populate the features attributes object
diff --git a/iOS/www/src/js/Cordova.js b/iOS/www/src/js/Cordova.js
index d95009a..5dc2232 100644
--- a/iOS/www/src/js/Cordova.js
+++ b/iOS/www/src/js/Cordova.js
@@ -153,13 +153,13 @@ var Cordova = {
if(_success)
_success(tx, res);
}, function(tx, err){
- Arbiter.error("Cordova.transaction: sql execution failed!!!", tx, err);
+ Arbiter.error("Cordova.transaction: sql execution failed!", tx, err, _sql, _variables);
if(_error){
_error(tx, err);
}
});
}, function(err, err2){
- Arbiter.error("Transaction failed!!!", err, err2);
+ Arbiter.error("Transaction failed!", err, err2, _sql, _variable);
}, function(){
// do nothing
});
diff --git a/iOS/www/src/js/TileUtil.js b/iOS/www/src/js/TileUtil.js
index 5bdbdb9..ea605cd 100644
--- a/iOS/www/src/js/TileUtil.js
+++ b/iOS/www/src/js/TileUtil.js
@@ -1172,6 +1172,25 @@ dumpTableRows: function(database, tableName){
});
},
+
+dumpTableAttributes: function(database, tableName){
+ console.log("---- TileUtil.dumpTableAttributes");
+
+ // get the attributes of the layer
+ var sql = "PRAGMA table_info (" + tableName + ");";
+
+ Cordova.transaction(Arbiter.currentProject.dataDatabase, sql, [], function(tx, res) {
+ var str = 'attribute count: ' + res.rows.length + '\n';
+ for (var i=0; i