annotate gis_gui/lib/blocks.js @ 63:7f008e782563

add gui files to product via FileSystemSite
author casties
date Fri, 05 Nov 2010 18:52:55 +0100
parents
children 2f477270cc0c
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(){},
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
8 error : function(){},
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
9 }
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
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
14 return (typeof arguments[0] != "undefined");
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
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
17 /*
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
18 * guiBlocks base
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
19 */
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
20 function guiBlocks(container) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
21 // list of blocks
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
22 this.blocks = [];
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
23 this.containerElement = container;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
24 return this;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
25 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
26 //var guiBlocks = new Object();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
27
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
28 /*
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
29 * Block base class
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
30 */
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
31 guiBlocks.Block = function(id, element) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
32 this.id = id; // the blocks html id
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
33 this.element = element; // the html dom element
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
34 this.storeId = null; // the id in online storage
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
35 this.params = new Object(); // parameters to store
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
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
39 // create a new block and add it to the current workspaces stack
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
40 guiBlocks.prototype.addBlock = function(url, baseId, params, whenDone) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
41 // old version compatibility
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
42 if (typeof(params) == "function") {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
43 whenDone = params;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
44 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
45 // add title to url
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
46 var newblock = $("<div>Block loading...</div>");
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
47 var newid=baseId+"_"+randomString();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
48 var container = this.containerElement;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
49 console.debug("addblock newid="+newid);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
50 newblock.hide();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
51 newblock.load(url, function() {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
52 // after load function
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
53 console.debug("addblock after load block");
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
54 console.debug(container);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
55 $(this).find(".block").attr("id",newid);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
56 $(this).appendTo(container);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
57 // chain done function
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
58 if (typeof(whenDone) == "function") {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
59 // chain whenDone
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
60 whenDone();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
61 } else {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
62 // default after load function
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
63 $(this).fadeIn();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
64 };
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
65
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
66 });
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
67 // create new Block object
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
68 var block = new guiBlocks.Block(newid, newblock);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
69 // add parameters
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
70 if (typeof(params) != "object") {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
71 // create new params
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
72 params = {"id": newid};
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
73 } else if (typeof(params.id) == "undefined") {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
74 // must be new block (with params)
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
75 params.id = newid;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
76 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
77 block.params = params;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
78 // add to list of blocks
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
79 this.blocks.push(block);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
80 return block;
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
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
83 guiBlocks.prototype.getBlock = function(id) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
84 for (b in this.blocks) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
85 if (b.id == id) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
86 return b;
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 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
89 return null;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
90 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
91
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 guiBlocks.prototype.getStoreItem = function(tag,type,item) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
94 // get item from online storage
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
95 jQuery.get();
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
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
99 guiBlocks.prototype.loadListOfItems = function(storeTag,storeType,callback) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
100 // loads list of id and type objects and executes callback function
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
101 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
102 jQuery.getJSON(url,callback);
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
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
105
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
106 guiBlocks.Block.prototype.storeBlock = function(storeTag) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
107 var storeType = this.params.type;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
108 var storeItem = this.params.id;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
109 var url = "../db/RESTjson/db/public/gui_objects/"+escape(storeTag)+"/"+storeType+"/"+storeItem;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
110 var ds = JSON.stringify(this.params);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
111 jQuery.ajax({
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
112 type: "PUT",
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
113 url: url,
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
114 data: ds,
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
115 success: function(msg){
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
116 console.debug("PUT success msg=",msg);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
117 this.storeId = storeItem;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
118 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
119 });
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
120 };
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
121
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
122
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 // collapse the block so that only its titlebar is visible
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
125 function foldBlock(segment){
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
126 if (! segment) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
127 return;
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 if(segment.hasClass("folded")){
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
130 //if the segment is collapsed
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
131 segment.removeClass("folded");
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
132 segment.find(".body").slideDown();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
133 } else{
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
134 //if the segment is expanded
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
135 segment.addClass("folded");
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
136 segment.find(".body").slideUp();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
137 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
138 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
139
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
140 function switchSubscreens(container, id1, id2) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
141 var oldScreen = container.find("#"+id1);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
142 var newScreen = container.find("#"+id2);
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 oldScreen.fadeOut();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
145 newScreen.fadeIn();
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
146 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
147
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
148 function guiBlocks_init() {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
149 // initialize collapsed windows
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
150 $("div.block.folded").each(function(e){
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
151 $(this).find(".body").slideUp();
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
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
154 // TitleBar Click
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
155 $("div.block div.titlebar h1").live("click", function(e) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
156 var segment = $(this).parents().filter("div.block");
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
157 foldBlock(segment);
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
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
160 // TitleBar Close
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
161 $("div.block div.titlebar div.close_button").live("click", function(e){
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
162 segment = $(this).parents().filter("div.block");
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
163 segment.fadeOut(function(){ segment.remove()});
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
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
166 };
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
167
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
168
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
169 function randomString() {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
170 var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
171 var string_length = 8;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
172 var randomstring = '';
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
173 for (var i=0; i<string_length; i++) {
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
174 var rnum = Math.floor(Math.random() * chars.length);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
175 randomstring += chars.substring(rnum,rnum+1);
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
176 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
177 return randomstring;
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
178 }
7f008e782563 add gui files to product via FileSystemSite
casties
parents:
diff changeset
179