comparison 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
comparison
equal deleted inserted replaced
62:3905385c8854 63:7f008e782563
1
2 guiBlocks.prototype.addLayerBlock = function(url, baseId, params) {
3 if (typeof(params) == "string") {
4 // then its table name
5 params = {"type": "layer", "table": params};
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 });
39 $(be).find(".layer_color_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *",
40 function() {
41 $(this).find("option:first").before('<option>Default</option>');
42 if (!params.color_field) {
43 params.color_field = "Default";
44 }
45 $(this).find("option").filter(function(){return $(this).text() == params.color_field;}).attr("selected","true");
46 });
47 $(be).find(".layer_shape_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *",
48 function() {
49 $(this).find("option:first").before('<option>Default</option>');
50 if (!params.shape_field) {
51 params.shape_field = "Default";
52 }
53 $(this).find("option").filter(function(){return $(this).text() == params.shape_field;}).attr("selected","true");
54 });
55 $(be).find(".layer_line_checkbox").attr("checked", params.connect_line);
56 // show block
57 $(be).fadeIn();
58
59 // save map params in block.param -- too early
60 //params = block.readLayerParams();
61
62 // load map
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);
85 var mapblock = blocks.addMapBlock("blocks/map.html?layer="+escape(params.name),"map",params);
86 });
87
88 });
89 };
90
91 guiBlocks.Block.prototype.readLayerParams = function(elem,params) {
92 // read layer parameters from html element and store in param
93 if (typeof(elem) == 'undefined') {
94 elem = this.element;
95 }
96 if (typeof(param) == 'undefined') {
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();
104 params.shape_field = $(elem).find(".layer_shape_select").val();
105 params.connect_line = $(elem).find(".layer_line_checkbox").attr("checked");
106 return params;
107 };
108
109 guiBlocks.Block.prototype.updateLayer = function(elem,params) {
110 // update and draw the google map
111 var le = $(elem).find(".map_box").get(0);
112 var paramstr = "format=KML_URL";
113 if (params.position_field && params.position_field != "Default") {
114 paramstr += "&gis_id_field="+params.position_field;
115 }
116 if (params.connect_line) {
117 paramstr += "&connect_line="+params.connect_line;
118 }
119 var layerurl = "../db/RESTdb/db/public/" + escape(params.table) + "?" + paramstr;
120 jQuery.get(layerurl, function(data, textStatus, XMLHttpRequest) {
121 // function after load kml url finished
122 console.debug("kml url loaded! this=", this, " data=", data, " ("+typeof(data)+")");
123 if (typeof(data) == "string") {
124 var kmlURL = data;
125 } else {
126 // what to do?
127 return;
128 }
129 if (typeof(google) != "undefined") {
130 var latlng = new google.maps.LatLng(29, 116);
131 var mapOpts = {
132 zoom: 5,
133 center: latlng,
134 mapTypeId: google.maps.MapTypeId.TERRAIN
135 };
136 var map = new google.maps.Map(le, mapOpts);
137 console.debug("new google map=",map," on el=",le);
138
139 //geocoder = new google.maps.Geocoder();
140 var newMarker=new google.maps.KmlLayer(kmlURL);
141 console.debug("new marker layer=",newMarker);
142 newMarker.setMap(map);
143 }
144 });
145
146 };
147