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 });
|
|
23 $(be).find(".layer_label_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *",
|
|
24 function() {
|
|
25 $(this).find("option:first").before('<option>Default</option>');
|
|
26 if (!params.label_field) {
|
|
27 params.label_field = "Default";
|
|
28 }
|
|
29 $(this).find("option").filter(function(){return $(this).text() == params.label_field;}).attr("selected","true");
|
|
30 });
|
|
31 $(be).find(".layer_size_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *",
|
|
32 function() {
|
|
33 $(this).find("option:first").before('<option>Default</option>');
|
|
34 if (!params.size_field) {
|
|
35 params.size_field = "Default";
|
|
36 }
|
|
37 $(this).find("option").filter(function(){return $(this).text() == params.size_field;}).attr("selected","true");
|
|
38 });
|
140
|
39
|
149
|
40 $(be).find(".layer_geom_select").attr("element","<select id='geom'><option selected>point</option><option>poly</option><option>line</option></select>");
|
200
|
41 params.geometry_field = "point";
|
|
42
|
149
|
43 $(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>");
|
200
|
44 params.color_field = "red";
|
|
45
|
63
|
46 $(be).find(".layer_shape_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *",
|
|
47 function() {
|
|
48 $(this).find("option:first").before('<option>Default</option>');
|
|
49 if (!params.shape_field) {
|
|
50 params.shape_field = "Default";
|
|
51 }
|
|
52 $(this).find("option").filter(function(){return $(this).text() == params.shape_field;}).attr("selected","true");
|
|
53 });
|
|
54 $(be).find(".layer_line_checkbox").attr("checked", params.connect_line);
|
|
55 // show block
|
|
56 $(be).fadeIn();
|
|
57
|
|
58 // save map params in block.param -- too early
|
|
59 //params = block.readLayerParams();
|
|
60
|
|
61 // load map
|
201
|
62 console.debug("params:", params);
|
63
|
63 block.updateLayer(be,params);
|
|
64
|
|
65 // update button
|
|
66 $(be).find(".layer_update_button").click(function() {
|
|
67 console.debug("layer update");
|
|
68 params = block.readLayerParams();
|
|
69 block.updateLayer(be,params);
|
|
70 });
|
|
71 // save button
|
|
72 $(be).find(".layer_save_button").click(function() {
|
|
73 console.debug("layer save. this=",this," block=",block);
|
|
74 params = block.readLayerParams(be,params);
|
|
75 block.storeBlock("test1");
|
|
76 });
|
|
77 // open table button
|
|
78 $(be).find(".layer_open_table_button").click(function() {
|
|
79 console.debug("layer open table. this=",this," block=",block);
|
|
80 var tblblock = blocks.addTableBlock("blocks/table.html?table="+escape(params.table),"table", params.table);
|
|
81 });
|
|
82 // create map button
|
|
83 $(be).find(".map_create_button").click(function() {
|
|
84 console.debug("layer create map. this=",this," block=",block);
|
68
|
85 var mapblock = blocks.addMapBlock("blocks/map.html?layer="+escape(params.name),"map",null,params);
|
63
|
86 });
|
|
87
|
|
88 });
|
|
89 };
|
|
90
|
|
91 guiBlocks.Block.prototype.readLayerParams = function(elem,params) {
|
|
92 // read layer parameters from html element and store in param
|
68
|
93 if (elem == null) {
|
63
|
94 elem = this.element;
|
|
95 }
|
111
|
96 if (params == null) {
|
63
|
97 params = this.params;
|
|
98 }
|
|
99 params.name = $(elem).find(".layer_name").val();
|
|
100 params.position_field = $(elem).find(".layer_position_select").val();
|
|
101 params.label_field = $(elem).find(".layer_label_select").val();
|
|
102 params.size_field = $(elem).find(".layer_size_select").val();
|
|
103 params.color_field = $(elem).find(".layer_color_select").val();
|
132
|
104 params.geometry_field = $(elem).find(".layer_geom_select").val();
|
63
|
105 params.shape_field = $(elem).find(".layer_shape_select").val();
|
|
106 params.connect_line = $(elem).find(".layer_line_checkbox").attr("checked");
|
|
107 return params;
|
|
108 };
|
|
109
|
|
110 guiBlocks.Block.prototype.updateLayer = function(elem,params) {
|
|
111 // update and draw the google map
|
|
112 var le = $(elem).find(".map_box").get(0);
|
|
113 var paramstr = "format=KML_URL";
|
|
114 if (params.position_field && params.position_field != "Default") {
|
|
115 paramstr += "&gis_id_field="+params.position_field;
|
|
116 }
|
117
|
117 if (params.color_field!="None"){
|
103
|
118 paramstr += "&color_field="+params.color_field;
|
|
119 }
|
123
|
120 if (params.geometry_field!="None"){
|
117
|
121 paramstr += "&geometry_field="+params.geometry_field;
|
|
122 }
|
63
|
123 if (params.connect_line) {
|
|
124 paramstr += "&connect_line="+params.connect_line;
|
|
125 }
|
|
126 var layerurl = "../db/RESTdb/db/public/" + escape(params.table) + "?" + paramstr;
|
231
|
127 //alert(layerurl);
|
63
|
128 jQuery.get(layerurl, function(data, textStatus, XMLHttpRequest) {
|
|
129 // function after load kml url finished
|
|
130 console.debug("kml url loaded! this=", this, " data=", data, " ("+typeof(data)+")");
|
|
131 if (typeof(data) == "string") {
|
|
132 var kmlURL = data;
|
|
133 } else {
|
|
134 // what to do?
|
|
135 return;
|
|
136 }
|
68
|
137 if (google != null) {
|
63
|
138 var latlng = new google.maps.LatLng(29, 116);
|
|
139 var mapOpts = {
|
231
|
140 zoom: 2,
|
63
|
141 center: latlng,
|
|
142 mapTypeId: google.maps.MapTypeId.TERRAIN
|
|
143 };
|
|
144 var map = new google.maps.Map(le, mapOpts);
|
|
145 console.debug("new google map=",map," on el=",le);
|
|
146
|
|
147 //geocoder = new google.maps.Geocoder();
|
194
|
148 var newMarker=new google.maps.KmlLayer(kmlURL,{ suppressInfoWindows: true, map: map});
|
|
149
|
|
150 google.maps.event.addListener(newMarker, 'click', function(kmlEvent) {
|
|
151 var text = kmlEvent.featureData.description;
|
|
152 showInContentWindow(text);
|
|
153 });
|
|
154
|
|
155 function showInContentWindow(text) {
|
226
|
156 var orig_obj=$(elem).find(".mapping_info").html();
|
205
|
157 $(elem).find(".mapping_info").html(text);
|
226
|
158 $(elem).find(".mapping_info").one("click",function(){$(elem).find(".mapping_info").html(orig_obj);});
|
194
|
159 }
|
|
160
|
63
|
161 console.debug("new marker layer=",newMarker);
|
194
|
162 //newMarker.setMap(map);
|
63
|
163 }
|
|
164 });
|
|
165
|
|
166 };
|
|
167
|