Mercurial > hg > ChinaGisRestApi
annotate gis_gui/blocks/layer.js @ 264:52b1247140b7
Multilayer for Europeana4D
author | fknauft |
---|---|
date | Wed, 25 Jan 2012 19:33:19 +0100 |
parents | d6c7bedf4370 |
children | 4ade9b80b563 |
rev | line source |
---|---|
63 | 1 |
2 guiBlocks.prototype.addLayerBlock = function(url, baseId, params) { | |
3 if (typeof(params) == "string") { | |
68 | 4 // then its the table name |
196 | 5 params = {"type": "layer", "table": params, "color_field":"red","geometry_field":"point"}; |
63 | 6 } |
7 var block = this.addBlock(url, baseId, params, function() { | |
8 // function after add block finished | |
9 var id = block.id; | |
10 var be = block.element; | |
11 block.type = "layer"; | |
12 var tablename = params.table; | |
13 console.debug("in layerblock after block load!"); | |
14 $(be).find(".layer_name").val(block.params.name); | |
15 $(be).find(".layer_position_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", | |
16 function() { | |
17 $(this).find("option:first").before('<option>Default</option>'); | |
18 if (!params.position_field) { | |
19 params.position_field = "Default"; | |
20 } | |
21 $(this).find("option").filter(function(){return $(this).text() == params.position_field;}).attr("selected","true"); | |
22 }); | |
249 | 23 |
24 $(be).find(".layer_geom_select").attr("element","<select id='geom'><option selected>point</option><option>poly</option><option>line</option></select>"); | |
25 params.geometry_field = "point"; | |
26 | |
27 $(be).find(".layer_sort_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", | |
63 | 28 function() { |
29 $(this).find("option:first").before('<option>Default</option>'); | |
249 | 30 if (!params.position_field) { |
31 params.position_field = "Default"; | |
32 } | |
33 $(this).find("option").filter(function(){return $(this).text() == params.position_field;}).attr("selected","true"); | |
34 }); | |
35 | |
36 $(be).find(".layer_line_checkbox").attr("checked", params.connect_line); | |
37 | |
38 $(be).find(".layer_label_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", | |
39 function() { | |
40 $(this).find("option:first").before('<option>None</option>'); | |
63 | 41 if (!params.label_field) { |
249 | 42 params.label_field = "None"; |
63 | 43 } |
44 $(this).find("option").filter(function(){return $(this).text() == params.label_field;}).attr("selected","true"); | |
45 }); | |
249 | 46 |
47 $(be).find(".layer_color_select").attr("element","<select id='color'><option selected>red</option><option>blue</option><option>black</option><option>green</option><option>violett</option></select>"); | |
48 params.color_field = "red"; | |
49 | |
63 | 50 $(be).find(".layer_size_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", |
51 function() { | |
249 | 52 $(this).find("option:first").before('<option>None</option>'); |
63 | 53 if (!params.size_field) { |
249 | 54 params.size_field = "None"; |
63 | 55 } |
56 $(this).find("option").filter(function(){return $(this).text() == params.size_field;}).attr("selected","true"); | |
57 }); | |
140 | 58 |
63 | 59 $(be).find(".layer_shape_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", |
60 function() { | |
249 | 61 $(this).find("option:first").before('<option>None</option>'); |
63 | 62 if (!params.shape_field) { |
249 | 63 params.shape_field = "None"; |
63 | 64 } |
65 $(this).find("option").filter(function(){return $(this).text() == params.shape_field;}).attr("selected","true"); | |
66 }); | |
67 // show block | |
68 $(be).fadeIn(); | |
69 | |
70 // save map params in block.param -- too early | |
71 //params = block.readLayerParams(); | |
72 | |
73 // load map | |
201 | 74 console.debug("params:", params); |
63 | 75 block.updateLayer(be,params); |
76 | |
77 // update button | |
78 $(be).find(".layer_update_button").click(function() { | |
79 console.debug("layer update"); | |
80 params = block.readLayerParams(); | |
81 block.updateLayer(be,params); | |
82 }); | |
83 // save button | |
84 $(be).find(".layer_save_button").click(function() { | |
85 console.debug("layer save. this=",this," block=",block); | |
86 params = block.readLayerParams(be,params); | |
87 block.storeBlock("test1"); | |
88 }); | |
89 // open table button | |
90 $(be).find(".layer_open_table_button").click(function() { | |
91 console.debug("layer open table. this=",this," block=",block); | |
92 var tblblock = blocks.addTableBlock("blocks/table.html?table="+escape(params.table),"table", params.table); | |
93 }); | |
94 // create map button | |
95 $(be).find(".map_create_button").click(function() { | |
96 console.debug("layer create map. this=",this," block=",block); | |
264 | 97 params = block.readLayerParams(be,params); |
68 | 98 var mapblock = blocks.addMapBlock("blocks/map.html?layer="+escape(params.name),"map",null,params); |
63 | 99 }); |
253
d6c7bedf4370
New reload button active in upper right corner of block
fknauft
parents:
251
diff
changeset
|
100 // reload button (upper right corner of Block) |
d6c7bedf4370
New reload button active in upper right corner of block
fknauft
parents:
251
diff
changeset
|
101 $(be).find(".reload_button").click(function () { |
d6c7bedf4370
New reload button active in upper right corner of block
fknauft
parents:
251
diff
changeset
|
102 console.debug("layer update"); |
d6c7bedf4370
New reload button active in upper right corner of block
fknauft
parents:
251
diff
changeset
|
103 params = block.readLayerParams(); |
d6c7bedf4370
New reload button active in upper right corner of block
fknauft
parents:
251
diff
changeset
|
104 block.updateLayer(be,params); |
d6c7bedf4370
New reload button active in upper right corner of block
fknauft
parents:
251
diff
changeset
|
105 }); |
63 | 106 |
107 }); | |
108 }; | |
109 | |
110 guiBlocks.Block.prototype.readLayerParams = function(elem,params) { | |
111 // read layer parameters from html element and store in param | |
68 | 112 if (elem == null) { |
63 | 113 elem = this.element; |
114 } | |
111 | 115 if (params == null) { |
63 | 116 params = this.params; |
117 } | |
251 | 118 params.id = $(elem).find(".layer_name").val(); |
63 | 119 params.name = $(elem).find(".layer_name").val(); |
120 params.position_field = $(elem).find(".layer_position_select").val(); | |
249 | 121 params.geometry_field = $(elem).find(".layer_geom_select").val(); |
122 params.sort_field = $(elem).find(".layer_sort_select").val(); | |
123 params.connect_line = $(elem).find(".layer_line_checkbox").attr("checked"); | |
63 | 124 params.label_field = $(elem).find(".layer_label_select").val(); |
125 params.size_field = $(elem).find(".layer_size_select").val(); | |
126 params.color_field = $(elem).find(".layer_color_select").val(); | |
127 params.shape_field = $(elem).find(".layer_shape_select").val(); | |
128 return params; | |
129 }; | |
130 | |
131 guiBlocks.Block.prototype.updateLayer = function(elem,params) { | |
132 // update and draw the google map | |
133 var le = $(elem).find(".map_box").get(0); | |
134 var paramstr = "format=KML_URL"; | |
135 if (params.position_field && params.position_field != "Default") { | |
136 paramstr += "&gis_id_field="+params.position_field; | |
137 } | |
117 | 138 if (params.color_field!="None"){ |
103 | 139 paramstr += "&color_field="+params.color_field; |
140 } | |
123 | 141 if (params.geometry_field!="None"){ |
117 | 142 paramstr += "&geometry_field="+params.geometry_field; |
143 } | |
249 | 144 if (params.sort_field!="None"){ |
145 paramstr += "&sort_field="+params.sort_field; | |
146 } | |
63 | 147 if (params.connect_line) { |
148 paramstr += "&connect_line="+params.connect_line; | |
149 } | |
150 var layerurl = "../db/RESTdb/db/public/" + escape(params.table) + "?" + paramstr; | |
245 | 151 console.debug("layerurl: ",layerurl); |
63 | 152 jQuery.get(layerurl, function(data, textStatus, XMLHttpRequest) { |
153 // function after load kml url finished | |
154 console.debug("kml url loaded! this=", this, " data=", data, " ("+typeof(data)+")"); | |
155 if (typeof(data) == "string") { | |
156 var kmlURL = data; | |
157 } else { | |
158 // what to do? | |
159 return; | |
160 } | |
68 | 161 if (google != null) { |
63 | 162 var latlng = new google.maps.LatLng(29, 116); |
163 var mapOpts = { | |
231 | 164 zoom: 2, |
63 | 165 center: latlng, |
166 mapTypeId: google.maps.MapTypeId.TERRAIN | |
167 }; | |
168 var map = new google.maps.Map(le, mapOpts); | |
169 console.debug("new google map=",map," on el=",le); | |
170 | |
171 //geocoder = new google.maps.Geocoder(); | |
194 | 172 var newMarker=new google.maps.KmlLayer(kmlURL,{ suppressInfoWindows: true, map: map}); |
173 | |
174 google.maps.event.addListener(newMarker, 'click', function(kmlEvent) { | |
175 var text = kmlEvent.featureData.description; | |
176 showInContentWindow(text); | |
177 }); | |
178 | |
179 function showInContentWindow(text) { | |
226 | 180 var orig_obj=$(elem).find(".mapping_info").html(); |
205 | 181 $(elem).find(".mapping_info").html(text); |
226 | 182 $(elem).find(".mapping_info").one("click",function(){$(elem).find(".mapping_info").html(orig_obj);}); |
194 | 183 } |
184 | |
63 | 185 console.debug("new marker layer=",newMarker); |
194 | 186 //newMarker.setMap(map); |
63 | 187 } |
188 }); | |
189 | |
190 }; | |
191 |