source: gs3-extensions/overlay-notes/trunk/src/main-ingest.js@ 26826

Last change on this file since 26826 was 26826, checked in by davidb, 11 years ago

Javascript and CSS files that provide overlay/photo notes. Originally developed for the Pei Jones collection

File size: 8.5 KB
Line 
1function checkLoop(pid, serverFunction, callback)
2{
3 var startLoop = function()
4 {
5 var loopCallback =
6 {
7 success:function(response)
8 {
9 var checkText = response.responseText;
10 if(checkText == null || checkText == "")
11 {
12 console.log("There was an error getting the XML to check the status of " + serverFunction);
13 }
14 else
15 {
16 var checkCodeStart = checkText.indexOf("code=\"") + 6;
17 var checkCodeEnd = checkText.indexOf("\"", checkCodeStart);
18 var code = checkText.substring(checkCodeStart, checkCodeEnd);
19
20 if(code == 11 || code == 1) //11 is COMPLETED, 1 is success
21 {
22 callback();
23 }
24 else if(code == 12 || code == 3) //12 is HALTED, 3 is ERROR
25 {
26 console.log("There was an error on the server, could not check status of " + serverFunction);
27 }
28 else
29 {
30 setTimeout(startLoop, 1000);
31 }
32 }
33 },
34 failed:function()
35 {
36 console.log("There was a problem checking the status of " + serverFunction)
37 }
38 }
39 YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=g&rt=s&ro=1&s=" + serverFunction + "&s1.pid=" + pid, loopCallback);
40 }
41 startLoop();
42}
43
44function buildFunction(collection)
45{
46 var buildCallback =
47 {
48 success:function(response)
49 {
50 var buildText = response.responseText;
51 if(buildText == null || buildText == "")
52 {
53 console.log("There was an error getting the xml response from the building request");
54 }
55 else
56 {
57 var buildPIDStart = buildText.indexOf("pid=\"") + 5;
58 var buildPIDEnd = buildText.indexOf("\"", buildPIDStart);
59 var buildPID = buildText.substring(buildPIDStart, buildPIDEnd);
60
61 checkLoop(buildPID, "BuildCollection", function()
62 {
63 var activateCallback =
64 {
65 success: function(response)
66 {
67 var activateText = response.responseText;
68 if(activateText == null || activateText == "")
69 {
70 console.log("There was an error getting the xml response from the activating request");
71 }
72 else
73 {
74 var activatePIDStart = activateText.indexOf("pid=\"") + 5;
75 var activatePIDEnd = activateText.indexOf("\"", activatePIDStart);
76 var activatePID = activateText.substring(activatePIDStart, activatePIDEnd);
77
78 checkLoop(activatePID, "ActivateCollection", function()
79 {
80 var updateCallback =
81 {
82 success: function(response){document.getElementById("buildStatusBar").style.visibility = "hidden";},
83 failed: function(reponse){ alert("Failed in saveFunction() to re-read config files"); document.getElementById("buildStatusBar").style.visibility = "hidden";}
84 };
85 YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=s&sa=c", updateCallback);
86 });
87 }
88 },
89 failed: function(response)
90 {
91 document.getElementById("buildStatusBar").style.visibility = "hidden";
92 console.log("Failed to get response from activate collection request");
93 }
94 }
95 YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=g&rt=r&ro=1&s=ActivateCollection&s1.collection=" + collection, activateCallback);
96 });
97 }
98 },
99 failed: function(){console.log("Failed to get build collection response"); document.getElementById("buildStatusBar").style.visibility = "hidden";}
100 }
101
102 YAHOO.util.Connect.asyncRequest("GET", gs.xsltParams.library_name + "?a=g&rt=r&ro=1&s=BuildCollection&s1.collection=" + collection, buildCallback);
103 showBuildingMessage();
104}
105
106function saveAndBuildCollection(col)
107{
108 for(var j = 0; j < gs.toDeleteArray.keys.length; j++)
109 {
110 var current = gs.toDeleteArray[gs.toDeleteArray.keys[j]];
111 if(current == null){continue;}
112 var metaToDelete = ["user", "text", "tags"];
113 for(var l = 0; l < metaToDelete.length; l++)
114 {
115 var deleteArchivesURL = "cgi-bin/metadata-server.pl?\
116a=remove-archives-metadata&\
117c=" + gs.cgiParams.c + "&\
118site="+gs.xsltParams.site_name+"&\
119d=" + gs.cgiParams.d + "&\
120metaname=gstext." + metaToDelete[l] + "&\
121metavalue=" + ((l == 0) ? (current.user.name) : (current[metaToDelete[l]]));
122
123 var deleteIndexURL = "cgi-bin/metadata-server.pl?\
124a=remove-metadata&\
125c=" + gs.cgiParams.c + "&\
126site="+gs.xsltParams.site_name+"&\
127d=" + gs.cgiParams.d + "&\
128metaname=gstext." + metaToDelete[l] + "&\
129metavalue=" + ((l == 0) ? (current.user.name) : (current[metaToDelete[l]]));
130
131 var deleteImportURL = "cgi-bin/metadata-server.pl?\
132a=remove-import-metadata&\
133c=" + gs.cgiParams.c + "&\
134site="+gs.xsltParams.site_name+"&\
135d=" + gs.cgiParams.d + "&\
136metaname=gstext." + metaToDelete[l] + "&\
137metavalue=" + ((l == 0) ? (current.user.name) : (current[metaToDelete[l]]));
138 var deleteArchivesCallback =
139 {
140 success:function(){},
141 failed: function(){alert("Failed to save text annotations archives metadata");}
142 }
143 YAHOO.util.Connect.asyncRequest("GET", deleteArchivesURL, deleteArchivesCallback);
144
145 var deleteIndexCallback =
146 {
147 success:function(){},
148 failed: function(){alert("Failed to save text annotations index metadata");}
149 }
150 YAHOO.util.Connect.asyncRequest("GET", deleteIndexURL, deleteIndexCallback);
151
152 var deleteImportCallback =
153 {
154 success:function(){},
155 failed: function(){alert("Failed to save text annotations import metadata");}
156 }
157 YAHOO.util.Connect.asyncRequest("GET", deleteImportURL, deleteImportCallback);
158 }
159 }
160 gs.toDeleteArray = new Array();
161 gs.toDeleteArray.keys = new Array();
162
163 if(gs.annotationArray.keys.length > 0)
164 {
165 var json = "[";
166 for(var i = 0; i < gs.annotationArray.keys.length; i++)
167 {
168 var current = gs.annotationArray[gs.annotationArray.keys[i]];
169 if(current == null){continue;}
170 var metaToAdd = ["user", "text", "tags"];
171
172 for(var j = 0; j < metaToAdd.length; j++)
173 {
174 if(metaToAdd[j] == "user")
175 {
176 json += '{"docid":"' + gs.cgiParams.d + '", "metaname":"gstext.' + metaToAdd[j] + '", "metavalue":"' + current.user.name + '"}';
177 }
178 else
179 {
180 json += '{"docid":"' + gs.cgiParams.d + '", "metaname":"gstext.' + metaToAdd[j] + '", "metavalue":"' + current[metaToAdd[j]] + '"}';
181 }
182
183 if(j != (metaToAdd.length - 1) || i != (gs.annotationArray.keys.length - 1))
184 {
185 json += ',';
186 }
187 }
188 }
189 json += "]";
190
191 var saveArchivesURL = "cgi-bin/metadata-server.pl?a=set-archives-metadata-array&c=" + gs.cgiParams.c + "&site="+gs.xsltParams.site_name+"&collect=" + gs.cgiParams.c + "&json=" + json;
192 var saveIndexURL = "cgi-bin/metadata-server.pl?a=set-metadata-array&c=" + gs.cgiParams.c + "&site="+gs.xsltParams.site_name+"&collect=" + gs.cgiParams.c + "&json=" + json;
193 var saveImportURL = "cgi-bin/metadata-server.pl?a=set-import-metadata-array&c=" + gs.cgiParams.c + "&site="+gs.xsltParams.site_name+"&collect=" + gs.cgiParams.c + "&json=" + json;
194
195 var saveArchivesCallback =
196 {
197 success:function(){console.log("Away to build"); buildFunction(gs.cgiParams.c);},
198 failed: function(){alert("Failed to save text annotations index metadata");}
199 }
200 YAHOO.util.Connect.asyncRequest("GET", saveArchivesURL, saveArchivesCallback);
201
202 var saveIndexCallback =
203 {
204 success:function(){},
205 failed: function(){alert("Failed to save text annotations import metadata");}
206 }
207 YAHOO.util.Connect.asyncRequest("GET", saveIndexURL, saveIndexCallback);
208
209 var saveImportCallback =
210 {
211 success:function(){},
212 failed: function(){alert("Failed to save text annotations import metadata");}
213 }
214 YAHOO.util.Connect.asyncRequest("GET", saveImportURL, saveImportCallback);
215 }
216
217 gs.annotationArray = new Array();
218 gs.annotationArray.keys = new Array();
219}
220
221function showRebuildOption()
222{
223 var buildStatusBar = document.getElementById("buildStatusBar");
224 buildStatusBar.style.visibility = "visible";
225
226 var buildMessage = document.getElementById("buildMessage");
227 buildMessage.innerHTML = 'Please rebuild to index annotations (make annotations searchable): <span id="rebuildButton" style="cursor:pointer; padding:2px;" class="ui-state-default ui-corner-all">Rebuild</span>';
228
229 var rebuildButton = document.getElementById("rebuildButton");
230 rebuildButton.onclick = function(){saveAndBuildCollection("pj-flat");}
231}
232
233function showBuildingMessage()
234{
235 var buildStatusBar = document.getElementById("buildStatusBar");
236 buildStatusBar.style.visibility = "visible";
237
238 var buildMessage = document.getElementById("buildMessage");
239 buildMessage.innerHTML = '<img src="' + gs.imageURLs.loading + '"/> Reindexing ...';
240}
241
Note: See TracBrowser for help on using the repository browser.