Mercurial > hg > ChinaGisRestApi
diff gis_gui/blocks/layer.js @ 63:7f008e782563
add gui files to product via FileSystemSite
author | casties |
---|---|
date | Fri, 05 Nov 2010 18:52:55 +0100 |
parents | |
children | 49fb47bbe2e6 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gis_gui/blocks/layer.js Fri Nov 05 18:52:55 2010 +0100 @@ -0,0 +1,147 @@ + +guiBlocks.prototype.addLayerBlock = function(url, baseId, params) { + if (typeof(params) == "string") { + // then its table name + params = {"type": "layer", "table": params}; + } + var block = this.addBlock(url, baseId, params, function() { + // function after add block finished + var id = block.id; + var be = block.element; + block.type = "layer"; + var tablename = params.table; + console.debug("in layerblock after block load!"); + $(be).find(".layer_name").val(block.params.name); + $(be).find(".layer_position_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", + function() { + $(this).find("option:first").before('<option>Default</option>'); + if (!params.position_field) { + params.position_field = "Default"; + } + $(this).find("option").filter(function(){return $(this).text() == params.position_field;}).attr("selected","true"); + }); + $(be).find(".layer_label_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", + function() { + $(this).find("option:first").before('<option>Default</option>'); + if (!params.label_field) { + params.label_field = "Default"; + } + $(this).find("option").filter(function(){return $(this).text() == params.label_field;}).attr("selected","true"); + }); + $(be).find(".layer_size_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", + function() { + $(this).find("option:first").before('<option>Default</option>'); + if (!params.size_field) { + params.size_field = "Default"; + } + $(this).find("option").filter(function(){return $(this).text() == params.size_field;}).attr("selected","true"); + }); + $(be).find(".layer_color_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", + function() { + $(this).find("option:first").before('<option>Default</option>'); + if (!params.color_field) { + params.color_field = "Default"; + } + $(this).find("option").filter(function(){return $(this).text() == params.color_field;}).attr("selected","true"); + }); + $(be).find(".layer_shape_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", + function() { + $(this).find("option:first").before('<option>Default</option>'); + if (!params.shape_field) { + params.shape_field = "Default"; + } + $(this).find("option").filter(function(){return $(this).text() == params.shape_field;}).attr("selected","true"); + }); + $(be).find(".layer_line_checkbox").attr("checked", params.connect_line); + // show block + $(be).fadeIn(); + + // save map params in block.param -- too early + //params = block.readLayerParams(); + + // load map + block.updateLayer(be,params); + + // update button + $(be).find(".layer_update_button").click(function() { + console.debug("layer update"); + params = block.readLayerParams(); + block.updateLayer(be,params); + }); + // save button + $(be).find(".layer_save_button").click(function() { + console.debug("layer save. this=",this," block=",block); + params = block.readLayerParams(be,params); + block.storeBlock("test1"); + }); + // open table button + $(be).find(".layer_open_table_button").click(function() { + console.debug("layer open table. this=",this," block=",block); + var tblblock = blocks.addTableBlock("blocks/table.html?table="+escape(params.table),"table", params.table); + }); + // create map button + $(be).find(".map_create_button").click(function() { + console.debug("layer create map. this=",this," block=",block); + var mapblock = blocks.addMapBlock("blocks/map.html?layer="+escape(params.name),"map",params); + }); + + }); +}; + +guiBlocks.Block.prototype.readLayerParams = function(elem,params) { + // read layer parameters from html element and store in param + if (typeof(elem) == 'undefined') { + elem = this.element; + } + if (typeof(param) == 'undefined') { + params = this.params; + } + params.name = $(elem).find(".layer_name").val(); + params.position_field = $(elem).find(".layer_position_select").val(); + params.label_field = $(elem).find(".layer_label_select").val(); + params.size_field = $(elem).find(".layer_size_select").val(); + params.color_field = $(elem).find(".layer_color_select").val(); + params.shape_field = $(elem).find(".layer_shape_select").val(); + params.connect_line = $(elem).find(".layer_line_checkbox").attr("checked"); + return params; +}; + +guiBlocks.Block.prototype.updateLayer = function(elem,params) { + // update and draw the google map + var le = $(elem).find(".map_box").get(0); + var paramstr = "format=KML_URL"; + if (params.position_field && params.position_field != "Default") { + paramstr += "&gis_id_field="+params.position_field; + } + if (params.connect_line) { + paramstr += "&connect_line="+params.connect_line; + } + var layerurl = "../db/RESTdb/db/public/" + escape(params.table) + "?" + paramstr; + jQuery.get(layerurl, function(data, textStatus, XMLHttpRequest) { + // function after load kml url finished + console.debug("kml url loaded! this=", this, " data=", data, " ("+typeof(data)+")"); + if (typeof(data) == "string") { + var kmlURL = data; + } else { + // what to do? + return; + } + if (typeof(google) != "undefined") { + var latlng = new google.maps.LatLng(29, 116); + var mapOpts = { + zoom: 5, + center: latlng, + mapTypeId: google.maps.MapTypeId.TERRAIN + }; + var map = new google.maps.Map(le, mapOpts); + console.debug("new google map=",map," on el=",le); + + //geocoder = new google.maps.Geocoder(); + var newMarker=new google.maps.KmlLayer(kmlURL); + console.debug("new marker layer=",newMarker); + newMarker.setMap(map); + } + }); + +}; +