annotate gis_gui/lib/blocks.js @ 248:fcb7876178d1

Reload-Button
author fknauft
date Fri, 16 Sep 2011 10:59:10 +0200
parents 825a92d0ab10
children d6c7bedf4370
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
1 /*
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
2 * fallback for console.log calls
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
3 */
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
4 if (typeof(console) == 'undefined') {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
5 console = {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
6 log : function(){},
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
7 debug : function(){},
65
2f477270cc0c adding layers to maps works now
casties
parents: 63
diff changeset
8 error : function(){}
2f477270cc0c adding layers to maps works now
casties
parents: 63
diff changeset
9 };
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
10 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
11
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
12 function defined(x) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
13 // returns if x is defined
68
49fb47bbe2e6 saving and loading maps
casties
parents: 65
diff changeset
14 return (typeof arguments[0] !== "undefined");
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
15 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
16
72
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
17 function randomString() {
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
18 var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
19 var string_length = 8;
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
20 var randomstring = '';
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
21 for (var i=0; i<string_length; i++) {
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
22 var rnum = Math.floor(Math.random() * chars.length);
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
23 randomstring += chars.substring(rnum,rnum+1);
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
24 }
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
25 return randomstring;
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
26 }
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
27
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
28
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
29 /*
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
30 * guiBlocks base
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
31 */
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
32 function guiBlocks(container) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
33 // list of blocks
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
34 this.blocks = [];
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
35 this.containerElement = container;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
36 return this;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
37 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
38 //var guiBlocks = new Object();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
39
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
40 /*
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
41 * Block base class
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
42 */
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
43 guiBlocks.Block = function(id, element) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
44 this.id = id; // the blocks html id
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
45 this.element = element; // the html dom element
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
46 this.storeId = null; // the id in online storage
65
2f477270cc0c adding layers to maps works now
casties
parents: 63
diff changeset
47 this.params = {}; // parameters to store
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
48 return this;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
49 };
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
50
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
51 // create a new block and add it to the current workspaces stack
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
52 guiBlocks.prototype.addBlock = function(url, baseId, params, whenDone) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
53 // add title to url
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
54 var newblock = $("<div>Block loading...</div>");
68
49fb47bbe2e6 saving and loading maps
casties
parents: 65
diff changeset
55 var newid = baseId+"_"+randomString();
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
56 var container = this.containerElement;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
57 console.debug("addblock newid="+newid);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
58 newblock.hide();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
59 newblock.load(url, function() {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
60 // after load function
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
61 console.debug("addblock after load block");
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
62 console.debug(container);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
63 $(this).find(".block").attr("id",newid);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
64 $(this).appendTo(container);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
65 // chain done function
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
66 if (typeof(whenDone) == "function") {
72
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
67 // chain whenDone (should we add parameters?)
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
68 whenDone.apply(this);
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
69 } else {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
70 // default after load function
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
71 $(this).fadeIn();
65
2f477270cc0c adding layers to maps works now
casties
parents: 63
diff changeset
72 }
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
73
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
74 });
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
75 // create new Block object
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
76 var block = new guiBlocks.Block(newid, newblock);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
77 // add parameters
68
49fb47bbe2e6 saving and loading maps
casties
parents: 65
diff changeset
78 if (params == null) {
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
79 // create new params
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
80 params = {"id": newid};
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
81 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
82 block.params = params;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
83 // add to list of blocks
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
84 this.blocks.push(block);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
85 return block;
65
2f477270cc0c adding layers to maps works now
casties
parents: 63
diff changeset
86 };
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
87
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
88 guiBlocks.prototype.getBlock = function(id) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
89 for (b in this.blocks) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
90 if (b.id == id) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
91 return b;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
92 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
93 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
94 return null;
65
2f477270cc0c adding layers to maps works now
casties
parents: 63
diff changeset
95 };
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
96
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
97 /*
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
98 guiBlocks.prototype.getStoreItem = function(tag,type,item) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
99 // get item from online storage
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
100 jQuery.get();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
101 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
102 */
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
103
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
104 guiBlocks.prototype.loadListOfItems = function(storeTag,storeType,callback) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
105 // loads list of id and type objects and executes callback function
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
106 var url = "../db/RESTjson/db/public/gui_objects/"+escape(storeTag)+"/"+storeType+"?recursive=true";
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
107 jQuery.getJSON(url,callback);
65
2f477270cc0c adding layers to maps works now
casties
parents: 63
diff changeset
108 };
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
109
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
110
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
111 guiBlocks.Block.prototype.storeBlock = function(storeTag) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
112 var storeType = this.params.type;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
113 var storeItem = this.params.id;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
114 var url = "../db/RESTjson/db/public/gui_objects/"+escape(storeTag)+"/"+storeType+"/"+storeItem;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
115 var ds = JSON.stringify(this.params);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
116 jQuery.ajax({
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
117 type: "PUT",
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
118 url: url,
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
119 data: ds,
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
120 success: function(msg){
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
121 console.debug("PUT success msg=",msg);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
122 this.storeId = storeItem;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
123 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
124 });
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
125 };
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
126
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
127
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
128
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
129 // collapse the block so that only its titlebar is visible
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
130 function foldBlock(segment){
72
825a92d0ab10 fixed potential closure problem
casties
parents: 68
diff changeset
131 if (segment == null) {
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
132 return;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
133 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
134 if(segment.hasClass("folded")){
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
135 //if the segment is collapsed
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
136 segment.removeClass("folded");
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
137 segment.find(".body").slideDown();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
138 } else{
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
139 //if the segment is expanded
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
140 segment.addClass("folded");
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
141 segment.find(".body").slideUp();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
142 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
143 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
144
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
145 function switchSubscreens(container, id1, id2) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
146 var oldScreen = container.find("#"+id1);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
147 var newScreen = container.find("#"+id2);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
148
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
149 oldScreen.fadeOut();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
150 newScreen.fadeIn();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
151 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
152
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
153 function guiBlocks_init() {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
154 // initialize collapsed windows
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
155 $("div.block.folded").each(function(e){
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
156 $(this).find(".body").slideUp();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
157 });
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
158
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
159 // TitleBar Click
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
160 $("div.block div.titlebar h1").live("click", function(e) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
161 var segment = $(this).parents().filter("div.block");
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
162 foldBlock(segment);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
163 });
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
164
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
165 // TitleBar Close
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
166 $("div.block div.titlebar div.close_button").live("click", function(e){
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
167 segment = $(this).parents().filter("div.block");
65
2f477270cc0c adding layers to maps works now
casties
parents: 63
diff changeset
168 segment.fadeOut(function(){ segment.remove();});
63
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
169 });
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
170
248
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
171 // TitleBar Reload
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
172 $("div.block div.titlebar div.reload_button").live("click", function(e){
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
173 segment = $(this).parents().filter("div.block");
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
174 console.debug("guiBlocks_init().live(reload) segment[0].id="+ segment[0].id);
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
175 //FJK: funktioniert leider noch nicht!
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
176 // var blockid=$(this).parents().firstElementChild.id;
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
177 // var mapblock=getBlock(blockid);
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
178 // var params=mapblock.readMapParams();
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
179 // var be = mapblock.element;
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
180 //var mapblock = $(be).find(".map_box");
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
181 // console.debug("guiBlocks_init().live(reload) params="+ new String(params));
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
182 // mapblock.updateMap(be,params);
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
183 });
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
184
65
2f477270cc0c adding layers to maps works now
casties
parents: 63
diff changeset
185 }
248
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
186
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
187 function getBlock(id){
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
188 for (b in this.blocks) {
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
189 if (b.id == id) {
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
190 return b;
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
191 }
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
192 }
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
193 return null;
fcb7876178d1 Reload-Button
fknauft
parents: 72
diff changeset
194 }