1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
---|
2 | <html lang="en"> |
---|
3 | <!-- |
---|
4 | |
---|
5 | FILES |
---|
6 | ===== |
---|
7 | |
---|
8 | /usr/home/fplod/locean/hal/src/data/locean_tablerefsabsbibsort.begin.layout sur aedon.locean-ipsl.upmc.fr |
---|
9 | |
---|
10 | EVOLUTIONS |
---|
11 | ========== |
---|
12 | |
---|
13 | $Id$ |
---|
14 | |
---|
15 | $URL$ |
---|
16 | |
---|
17 | - fplod 20120627T154718Z cratos (Linux) |
---|
18 | |
---|
19 | * add phybiocar column |
---|
20 | * try to reduce width of page to solve print pb |
---|
21 | |
---|
22 | - fplod 20120419 |
---|
23 | |
---|
24 | * remove link to main page (desastrous effect on sort) |
---|
25 | now in end.layout |
---|
26 | |
---|
27 | - fplod 20120406 |
---|
28 | |
---|
29 | * remove DOI/URL column (they are in journal column) |
---|
30 | * remove css media print |
---|
31 | * add a link to the main page |
---|
32 | |
---|
33 | - fplod 20100616T072219Z aedon.locean-ipsl.upmc.fr (Darwin) |
---|
34 | |
---|
35 | * add meta robots |
---|
36 | |
---|
37 | - fplod 2009-09-04T15:17:15Z aedon.locean-ipsl.upmc.fr (Darwin) |
---|
38 | |
---|
39 | * change media print to see year, journal, page,vol and so on on printed |
---|
40 | version |
---|
41 | |
---|
42 | - fplod 2009-08-21T07:10:53Z aedon.locean-ipsl.upmc.fr (Darwin) |
---|
43 | |
---|
44 | * add loceanaffectation column |
---|
45 | * sort by year descendant |
---|
46 | |
---|
47 | - fplod 2009-03-04T10:13:46Z aedon.locean-ipsl.upmc.fr (Darwin) |
---|
48 | |
---|
49 | * creation from http://www.markschenk.com/tools/jabref/filterfiles/tablerefsabsbibsort/v2/ |
---|
50 | |
---|
51 | * adaptation for LOCEAN (add team column) |
---|
52 | * add some little help |
---|
53 | |
---|
54 | --> |
---|
55 | <head> |
---|
56 | <title>JabRef References output for LOCEAN</title> |
---|
57 | <meta http-equiv="Content-Type" content="text/html; charset=\encoding"> |
---|
58 | <meta name="robots" content="noindex,nofollow,noarchive"> |
---|
59 | |
---|
60 | <script type="text/javascript"> |
---|
61 | <!-- |
---|
62 | // QuickSearch script for JabRef HTML export |
---|
63 | // Version: 2.0 |
---|
64 | // |
---|
65 | // Copyright (c) 2006-2008, Mark Schenk |
---|
66 | // |
---|
67 | // This software is distributed under a Creative Commons Attribution 3.0 License |
---|
68 | // http://creativecommons.org/licenses/by/3.0/ |
---|
69 | |
---|
70 | // Some features: |
---|
71 | // + optionally searches Abstracts and Reviews |
---|
72 | // + allows RegExp searches |
---|
73 | // e.g. to search for entries between 1980 and 1989, type: 198[0-9] |
---|
74 | // e.g. for any entry ending with 'symmetry', type: symmetry$ |
---|
75 | // e.g. for all reftypes that are books: ^book$, or ^article$ |
---|
76 | // e.g. for entries by either John or Doe, type john|doe |
---|
77 | // + easy toggling of Abstract/Review/BibTeX |
---|
78 | |
---|
79 | // Search settings |
---|
80 | var searchAbstract = true; |
---|
81 | var searchReview = true; |
---|
82 | |
---|
83 | // Speed optimisation introduced some esoteric problems with certain RegExp searches |
---|
84 | // e.g. if the previous search is 200[-7] and the next search is 200[4-7] then the search doesn't work properly until the next 'keyup' |
---|
85 | // hence the searchOpt can be turned off for RegExp adepts |
---|
86 | var searchOpt = true; |
---|
87 | |
---|
88 | if (window.addEventListener) { |
---|
89 | window.addEventListener("load",initSearch,false); } |
---|
90 | else if (window.attachEvent) { |
---|
91 | window.attachEvent("onload", initSearch); } |
---|
92 | |
---|
93 | function initSearch() { |
---|
94 | // basic object detection |
---|
95 | if(!document.getElementById || !document.getElementsByTagName) { return; } |
---|
96 | if (!document.getElementById('qstable')||!document.getElementById('qs')) { return; } |
---|
97 | |
---|
98 | // find QS table and appropriate rows |
---|
99 | searchTable = document.getElementById('qstable'); |
---|
100 | var allRows = searchTable.getElementsByTagName('tbody')[0].getElementsByTagName('tr'); |
---|
101 | |
---|
102 | // split all rows into entryRows and infoRows (e.g. abstract, review, bibtex) |
---|
103 | entryRows = new Array(); |
---|
104 | infoRows = new Array(); absRows = new Array(); revRows = new Array(); |
---|
105 | |
---|
106 | for (var i=0, k=0, j=0; i<allRows.length;i++) { |
---|
107 | if (allRows[i].className.match(/entry/)) { |
---|
108 | entryRows[j++] = allRows[i]; |
---|
109 | } else { |
---|
110 | infoRows[k++] = allRows[i]; |
---|
111 | // check for abstract/review |
---|
112 | if (allRows[i].className.match(/abstract/)) { |
---|
113 | absRows.push(allRows[i]); |
---|
114 | } else if (allRows[i].className.match(/review/)) { |
---|
115 | revRows.push(allRows[i]); |
---|
116 | } |
---|
117 | } |
---|
118 | } |
---|
119 | |
---|
120 | //number of entries and rows |
---|
121 | numRows = allRows.length; |
---|
122 | numEntries = entryRows.length; |
---|
123 | numInfo = infoRows.length; |
---|
124 | numAbs = absRows.length; |
---|
125 | numRev = revRows.length; |
---|
126 | |
---|
127 | //find the query field |
---|
128 | qsfield = document.getElementById('qsfield'); |
---|
129 | |
---|
130 | // previous search term; used for speed optimisation |
---|
131 | prevSearch = ''; |
---|
132 | |
---|
133 | //find statistics location |
---|
134 | stats = document.getElementById('stat'); |
---|
135 | setStatistics(-1); |
---|
136 | |
---|
137 | // creates the appropriate search settings |
---|
138 | createQSettingsDialog(); |
---|
139 | |
---|
140 | // shows the searchfield |
---|
141 | document.getElementById('qs').style.display = 'block'; |
---|
142 | document.getElementById('qsfield').onkeyup = testEvent; |
---|
143 | } |
---|
144 | |
---|
145 | function quickSearch(tInput){ |
---|
146 | |
---|
147 | if (tInput.value.length == 0) { |
---|
148 | showAll(); |
---|
149 | setStatistics(-1); |
---|
150 | qsfield.className = ''; |
---|
151 | return; |
---|
152 | } else { |
---|
153 | // only search for valid RegExp |
---|
154 | try { |
---|
155 | var searchText = new RegExp(tInput.value,"i") |
---|
156 | closeAllInfo(); |
---|
157 | qsfield.className = ''; |
---|
158 | } |
---|
159 | catch(err) { |
---|
160 | prevSearch = tInput.value; |
---|
161 | qsfield.className = 'invalidsearch'; |
---|
162 | return; |
---|
163 | } |
---|
164 | } |
---|
165 | |
---|
166 | // count number of hits |
---|
167 | var hits = 0; |
---|
168 | |
---|
169 | // start looping through all entry rows |
---|
170 | for (var i = 0; cRow = entryRows[i]; i++){ |
---|
171 | |
---|
172 | // only show search the cells if it isn't already hidden OR if the search term is getting shorter, then search all |
---|
173 | // some further optimisation is possible: if the search string is getting shorter, and the row is already visible, skip it. Then be careful with hits! |
---|
174 | if(!searchOpt || cRow.className.indexOf('noshow')==-1 || tInput.value.length <= prevSearch.length){ |
---|
175 | var found = false; |
---|
176 | |
---|
177 | var inCells = cRow.getElementsByTagName('td'); |
---|
178 | var numCols = inCells.length; |
---|
179 | |
---|
180 | for (var j=0; j<numCols; j++) { |
---|
181 | cCell = inCells[j]; |
---|
182 | var t = cCell.innerText?cCell.innerText:getTextContent(cCell); |
---|
183 | if (t.search(searchText) != -1){ |
---|
184 | found=true; |
---|
185 | break; |
---|
186 | } |
---|
187 | } |
---|
188 | |
---|
189 | // look for further hits in Abstract and Review |
---|
190 | if(!found) { |
---|
191 | var articleid = cRow.id; |
---|
192 | if(searchAbstract && (abs = document.getElementById('abs_'+articleid))) { |
---|
193 | if (getTextContent(abs).search(searchText) != -1){ found=true; } |
---|
194 | } |
---|
195 | if(searchReview && (rev = document.getElementById('rev_'+articleid))) { |
---|
196 | if (getTextContent(rev).search(searchText) != -1){ found=true; } |
---|
197 | } |
---|
198 | } |
---|
199 | |
---|
200 | if(found) { |
---|
201 | cRow.className = 'entry show'; |
---|
202 | hits++; |
---|
203 | } else { |
---|
204 | cRow.className = 'entry noshow'; |
---|
205 | } |
---|
206 | } |
---|
207 | } |
---|
208 | |
---|
209 | // update statistics |
---|
210 | setStatistics(hits) |
---|
211 | |
---|
212 | // set previous search value |
---|
213 | prevSearch = tInput.value; |
---|
214 | } |
---|
215 | |
---|
216 | function toggleInfo(articleid,info) { |
---|
217 | |
---|
218 | var entry = document.getElementById(articleid); |
---|
219 | var abs = document.getElementById('abs_'+articleid); |
---|
220 | var rev = document.getElementById('rev_'+articleid); |
---|
221 | var bib = document.getElementById('bib_'+articleid); |
---|
222 | |
---|
223 | // Get the abstracts/reviews/bibtext in the right location |
---|
224 | // in unsorted tables this is always the case, but in sorted tables it is necessary. |
---|
225 | // Start moving in reverse order, so we get: entry, abstract,review,bibtex |
---|
226 | if (searchTable.className.indexOf('sortable') != -1) { |
---|
227 | if(bib) { entry.parentNode.insertBefore(bib,entry.nextSibling); } |
---|
228 | if(rev) { entry.parentNode.insertBefore(rev,entry.nextSibling); } |
---|
229 | if(abs) { entry.parentNode.insertBefore(abs,entry.nextSibling); } |
---|
230 | } |
---|
231 | |
---|
232 | if (abs && info == 'abstract') { |
---|
233 | if(abs.className.indexOf('abstract') != -1) { |
---|
234 | abs.className.indexOf('noshow') == -1?abs.className = 'abstract noshow':abs.className = 'abstract'; |
---|
235 | } |
---|
236 | } else if (rev && info == 'review') { |
---|
237 | if(rev.className.indexOf('review') != -1) { |
---|
238 | rev.className.indexOf('noshow') == -1?rev.className = 'review noshow':rev.className = 'review'; |
---|
239 | } |
---|
240 | } else if (bib && info == 'bibtex') { |
---|
241 | if(bib.className.indexOf('bibtex') != -1) { |
---|
242 | bib.className.indexOf('noshow') == -1?bib.className = 'bibtex noshow':bib.className = 'bibtex'; |
---|
243 | } |
---|
244 | } else { |
---|
245 | return; |
---|
246 | } |
---|
247 | |
---|
248 | // check if one or the other is available |
---|
249 | var revshow = false; |
---|
250 | var absshow = false; |
---|
251 | var bibshow = false; |
---|
252 | (abs && abs.className.indexOf('noshow') == -1)? absshow = true: absshow = false; |
---|
253 | (rev && rev.className.indexOf('noshow') == -1)? revshow = true: revshow = false; |
---|
254 | (bib && bib.className == 'bibtex')? bibshow = true: bibshow = false; |
---|
255 | |
---|
256 | // highlight original entry |
---|
257 | if(entry) { |
---|
258 | if (revshow || absshow || bibshow) { |
---|
259 | entry.className = 'entry highlight show'; |
---|
260 | } else { |
---|
261 | entry.className = 'entry show'; |
---|
262 | } |
---|
263 | } |
---|
264 | |
---|
265 | // When there's a combination of abstract/review/bibtex showing, need to add class for correct styling |
---|
266 | if(absshow) { |
---|
267 | (revshow||bibshow)?abs.className = 'abstract nextshow':abs.className = 'abstract'; |
---|
268 | } |
---|
269 | if (revshow) { |
---|
270 | bibshow?rev.className = 'review nextshow': rev.className = 'review'; |
---|
271 | } |
---|
272 | |
---|
273 | } |
---|
274 | |
---|
275 | function setStatistics (hits) { |
---|
276 | if(hits < 0) { hits=numEntries; } |
---|
277 | if(stats) { stats.firstChild.data = hits + '/' + numEntries} |
---|
278 | } |
---|
279 | |
---|
280 | function getTextContent(node) { |
---|
281 | // Function written by Arve Bersvendsen |
---|
282 | // http://www.virtuelvis.com |
---|
283 | |
---|
284 | if (node.nodeType == 3) { |
---|
285 | return node.nodeValue; |
---|
286 | } // text node |
---|
287 | if (node.nodeType == 1) { // element node |
---|
288 | var text = []; |
---|
289 | for (var chld = node.firstChild;chld;chld=chld.nextSibling) { |
---|
290 | text.push(getTextContent(chld)); |
---|
291 | } |
---|
292 | return text.join(""); |
---|
293 | } return ""; // some other node, won't contain text nodes. |
---|
294 | } |
---|
295 | |
---|
296 | function showAll(){ |
---|
297 | // first close all abstracts, reviews, etc. |
---|
298 | closeAllInfo(); |
---|
299 | |
---|
300 | for (var i = 0; i < numEntries; i++){ |
---|
301 | entryRows[i].className = 'entry show'; |
---|
302 | } |
---|
303 | } |
---|
304 | |
---|
305 | function closeAllInfo(){ |
---|
306 | for (var i=0; i < numInfo; i++){ |
---|
307 | if (infoRows[i].className.indexOf('noshow') ==-1) { |
---|
308 | infoRows[i].className = infoRows[i].className + ' noshow'; |
---|
309 | } |
---|
310 | } |
---|
311 | } |
---|
312 | |
---|
313 | function testEvent(e){ |
---|
314 | if (!e) var e = window.event; |
---|
315 | quickSearch(this); |
---|
316 | } |
---|
317 | |
---|
318 | function clearQS() { |
---|
319 | qsfield.value = ''; |
---|
320 | quickSearch(qsfield); |
---|
321 | } |
---|
322 | |
---|
323 | function redoQS(){ |
---|
324 | showAll(); |
---|
325 | quickSearch(qsfield); |
---|
326 | } |
---|
327 | |
---|
328 | // Create Search Settings |
---|
329 | |
---|
330 | function toggleQSettingsDialog() { |
---|
331 | |
---|
332 | var qssettings = document.getElementById('qssettings'); |
---|
333 | |
---|
334 | if(qssettings.className.indexOf('active')==-1) { |
---|
335 | qssettings.className = 'active'; |
---|
336 | |
---|
337 | if(absCheckBox && searchAbstract == true) { absCheckBox.checked = 'checked'; } |
---|
338 | if(revCheckBox && searchReview == true) { revCheckBox.checked = 'checked'; } |
---|
339 | |
---|
340 | } else { |
---|
341 | qssettings.className= ''; |
---|
342 | } |
---|
343 | } |
---|
344 | |
---|
345 | function createQSettingsDialog(){ |
---|
346 | var qssettingslist = document.getElementById('qssettings').getElementsByTagName('ul')[0]; |
---|
347 | |
---|
348 | if(numAbs!=0) { |
---|
349 | var x = document.createElement('input'); |
---|
350 | x.id = "searchAbs"; |
---|
351 | x.type = "checkbox"; |
---|
352 | x.onclick = toggleQSetting; |
---|
353 | var y = qssettingslist.appendChild(document.createElement('li')).appendChild(document.createElement('label')); |
---|
354 | y.appendChild(x); |
---|
355 | y.appendChild(document.createTextNode('search abstracts')); |
---|
356 | } |
---|
357 | if(numRev!=0) { |
---|
358 | var x = document.createElement('input'); |
---|
359 | x.id = "searchRev"; |
---|
360 | x.type = "checkbox"; |
---|
361 | x.onclick = toggleQSetting; |
---|
362 | var y = qssettingslist.appendChild(document.createElement('li')).appendChild(document.createElement('label')); |
---|
363 | y.appendChild(x); |
---|
364 | y.appendChild(document.createTextNode('search reviews')); |
---|
365 | } |
---|
366 | |
---|
367 | // global variables |
---|
368 | absCheckBox = document.getElementById('searchAbs'); |
---|
369 | revCheckBox = document.getElementById('searchRev'); |
---|
370 | |
---|
371 | // show search settings |
---|
372 | if(absCheckBox||revCheckBox) { |
---|
373 | document.getElementById('qssettings').style.display = 'block'; |
---|
374 | } |
---|
375 | } |
---|
376 | |
---|
377 | function toggleQSetting() { |
---|
378 | if(this.id=='searchAbs') { searchAbstract = !searchAbstract; } |
---|
379 | if(this.id=='searchRev') { searchReview = !searchReview; } |
---|
380 | redoQS() |
---|
381 | } |
---|
382 | --> |
---|
383 | </script> |
---|
384 | <script type="text/javascript"> |
---|
385 | <!-- |
---|
386 | // Sort Table Script |
---|
387 | // Version: 1.1 |
---|
388 | // |
---|
389 | // Copyright (c) 2006-2008, Mark Schenk |
---|
390 | // |
---|
391 | // This software is distributed under a Creative Commons Attribution 3.0 License |
---|
392 | // http://creativecommons.org/licenses/by/3.0/ |
---|
393 | |
---|
394 | // NB: slow as molasses in FireFox, especially when sorting columns with a lot of text. |
---|
395 | // An optimization is implemented which makes speed bearable, toggled by the following variable |
---|
396 | var SORT_SPEED_OPT = true; |
---|
397 | // a bit of browser preference: Opera does not need optimization |
---|
398 | if(window.opera) { SORT_SPEED_OPT=false; } |
---|
399 | // the optimization has one limitation on the functionality: when sorting search |
---|
400 | // results, the expanded info, e.g. bibtex/review, is collapsed. In the non-optimized |
---|
401 | // version they remain visible. |
---|
402 | |
---|
403 | |
---|
404 | if (window.addEventListener) { |
---|
405 | window.addEventListener("load",initSortTable,false) } |
---|
406 | else if (window.attachEvent) { |
---|
407 | window.attachEvent("onload", initSortTable); } |
---|
408 | |
---|
409 | function initSortTable() { |
---|
410 | var alltables = document.getElementsByTagName('table'); |
---|
411 | for(i=0;i<alltables.length;i++) { |
---|
412 | var currentTable = alltables[i]; |
---|
413 | if(currentTable.className.indexOf('sortable') !=-1) { |
---|
414 | var thead = currentTable.getElementsByTagName('thead')[0]; |
---|
415 | thead.title = 'Click on any column header to sort'; |
---|
416 | for (var i=0;cell = thead.getElementsByTagName('th')[i];i++) { |
---|
417 | cell.onclick = function () { resortTable(this); }; |
---|
418 | // make it possible to have a default sort column |
---|
419 | if(cell.className.indexOf('sort')!=-1) { |
---|
420 | resortTable(cell) |
---|
421 | } |
---|
422 | } |
---|
423 | } |
---|
424 | } |
---|
425 | } |
---|
426 | |
---|
427 | var SORT_COLUMN_INDEX |
---|
428 | |
---|
429 | function resortTable(td) { |
---|
430 | var column = td.cellIndex; |
---|
431 | var table = getParent(td,'TABLE'); |
---|
432 | |
---|
433 | var allRows = table.getElementsByTagName('tbody')[0].getElementsByTagName('tr'); |
---|
434 | var newRows = new Array(); |
---|
435 | |
---|
436 | for (var i=0, k=0; i<allRows.length;i++) { |
---|
437 | |
---|
438 | var rowclass = allRows[i].className; |
---|
439 | |
---|
440 | if (rowclass.indexOf('entry') != -1) { |
---|
441 | newRows[k++] = allRows[i]; |
---|
442 | } |
---|
443 | |
---|
444 | if (SORT_SPEED_OPT) { |
---|
445 | // remove highlight class |
---|
446 | allRows[i].className = rowclass.replace(/highlight/,''); |
---|
447 | // close information |
---|
448 | if(rowclass.indexOf('entry') == -1 && rowclass.indexOf('noshow') == -1) { allRows[i].className = rowclass + ' noshow';} |
---|
449 | } |
---|
450 | } |
---|
451 | |
---|
452 | |
---|
453 | // If other sort functions are deemed necessary (e.g. for |
---|
454 | // dates and currencies) they can be added. |
---|
455 | var sortfn = ts_sort_firstchild_caseinsensitive; |
---|
456 | SORT_COLUMN_INDEX = column; |
---|
457 | newRows.sort(sortfn); |
---|
458 | |
---|
459 | // create a container for showing sort arrow |
---|
460 | var arrow = td.getElementsByTagName('span')[0]; |
---|
461 | if (!arrow) { var arrow = td.appendChild(document.createElement('span'));} |
---|
462 | |
---|
463 | if (td.className) { |
---|
464 | if (td.className.indexOf('sort_asc') !=-1) { |
---|
465 | td.className = td.className.replace(/_asc/,"_des"); |
---|
466 | newRows.reverse(); |
---|
467 | arrow.innerHTML = '⇑'; |
---|
468 | } else if (td.className.indexOf('sort_des') !=-1) { |
---|
469 | td.className = td.className.replace(/_des/,"_asc"); |
---|
470 | arrow.innerHTML = '⇓'; |
---|
471 | } else { |
---|
472 | td.className += ' sort_asc'; |
---|
473 | arrow.innerHTML = '⇓'; |
---|
474 | } |
---|
475 | } else { |
---|
476 | td.className += 'sort_asc'; |
---|
477 | arrow.innerHTML = '⇓'; |
---|
478 | } |
---|
479 | |
---|
480 | // Remove the classnames and up/down arrows for the other headers |
---|
481 | var ths = table.getElementsByTagName('thead')[0].getElementsByTagName('th'); |
---|
482 | for (var i=0; i<ths.length; i++) { |
---|
483 | if(ths[i]!=td && ths[i].className.indexOf('sort_')!=-1) { |
---|
484 | // argh, moronic JabRef thinks (backslash)w is an output field!! |
---|
485 | //ths[i].className = ths[i].className.replace(/sort_(backslash)w{3}/,""); |
---|
486 | ths[i].className = ths[i].className.replace(/sort_asc/,""); |
---|
487 | ths[i].className = ths[i].className.replace(/sort_des/,""); |
---|
488 | |
---|
489 | // remove span |
---|
490 | var arrow = ths[i].getElementsByTagName('span')[0]; |
---|
491 | if (arrow) { ths[i].removeChild(arrow); } |
---|
492 | } |
---|
493 | } |
---|
494 | |
---|
495 | // We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones |
---|
496 | for (i=0;i<newRows.length;i++) { |
---|
497 | table.getElementsByTagName('tbody')[0].appendChild(newRows[i]); |
---|
498 | |
---|
499 | if(!SORT_SPEED_OPT){ |
---|
500 | // moving additional information, e.g. bibtex/abstract to right locations |
---|
501 | // this allows to sort, even with abstract/review/etc. still open |
---|
502 | var articleid = newRows[i].id; |
---|
503 | |
---|
504 | var entry = document.getElementById(articleid); |
---|
505 | var abs = document.getElementById('abs_'+articleid); |
---|
506 | var rev = document.getElementById('rev_'+articleid); |
---|
507 | var bib = document.getElementById('bib_'+articleid); |
---|
508 | |
---|
509 | var tbody = table.getElementsByTagName('tbody')[0]; |
---|
510 | // mind the order of adding the entries |
---|
511 | if(abs) { tbody.appendChild(abs); } |
---|
512 | if(rev) { tbody.appendChild(rev); } |
---|
513 | if(bib) { tbody.appendChild(bib); } |
---|
514 | } |
---|
515 | } |
---|
516 | } |
---|
517 | |
---|
518 | function ts_sort_firstchild_caseinsensitive(a,b) { |
---|
519 | // only search in .firstChild of the cells. Speeds things up tremendously in FF |
---|
520 | // problem is that it won't find all the text in a cell if the firstChild is an element |
---|
521 | // or if there are other elements in the cell. Risky fix, but the speed boost is worth it. |
---|
522 | var acell = a.cells[SORT_COLUMN_INDEX]; |
---|
523 | var bcell = b.cells[SORT_COLUMN_INDEX]; |
---|
524 | |
---|
525 | acell.firstChild? aa = getTextContent(acell.firstChild).toLowerCase():aa = ""; |
---|
526 | bcell.firstChild? bb = getTextContent(bcell.firstChild).toLowerCase():bb = ""; |
---|
527 | |
---|
528 | if (aa==bb) return 0; |
---|
529 | if (aa<bb) return -1; |
---|
530 | return 1; |
---|
531 | } |
---|
532 | |
---|
533 | function ts_sort_caseinsensitive(a,b) { |
---|
534 | aa = getTextContent(a.cells[SORT_COLUMN_INDEX]).toLowerCase(); |
---|
535 | bb = getTextContent(b.cells[SORT_COLUMN_INDEX]).toLowerCase(); |
---|
536 | if (aa==bb) return 0; |
---|
537 | if (aa<bb) return -1; |
---|
538 | return 1; |
---|
539 | } |
---|
540 | |
---|
541 | function ts_sort_default(a,b) { |
---|
542 | aa = getTextContent(a.cells[SORT_COLUMN_INDEX]); |
---|
543 | bb = getTextContent(b.cells[SORT_COLUMN_INDEX]); |
---|
544 | if (aa==bb) return 0; |
---|
545 | if (aa<bb) return -1; |
---|
546 | return 1; |
---|
547 | } |
---|
548 | |
---|
549 | function getParent(el, pTagName) { |
---|
550 | if (el == null) { |
---|
551 | return null; |
---|
552 | } else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) { |
---|
553 | return el; |
---|
554 | } else { |
---|
555 | return getParent(el.parentNode, pTagName); |
---|
556 | } |
---|
557 | } |
---|
558 | --> |
---|
559 | </script> |
---|
560 | <style type="text/css"> |
---|
561 | body { background-color: white; font-family: "Trebuchet MS", Arial, sans-serif; font-size: 12px; line-height: 1.2; padding: 1em; color: #2E2E2E; } |
---|
562 | |
---|
563 | #qs { width: auto; border-style: solid; border-color: gray; border-width: 1px 1px 0px 1px; padding: 0.5em 0.5em; display:none; position:relative; } |
---|
564 | #qs form { padding: 0px; margin: 0px; } |
---|
565 | #qs form p { padding: 0px; margin: 0px; } |
---|
566 | #qs p.help { font-weight:normal;} |
---|
567 | |
---|
568 | .invalidsearch { background-color: red; } |
---|
569 | |
---|
570 | table { border: 1px gray solid; width: 100%; empty-cells: show; } |
---|
571 | th, td { border: 1px gray solid; padding: 0.5em; vertical-align: top; } |
---|
572 | td { text-align: left; vertical-align: top; } |
---|
573 | th { background-color: #EFEFEF; } |
---|
574 | |
---|
575 | td a { color: navy; text-decoration: none; } |
---|
576 | td a:hover { text-decoration: underline; } |
---|
577 | |
---|
578 | tr.noshow { display: none;} |
---|
579 | |
---|
580 | tr.highlight td { background-color: #F1F1F1; border-top: 2px black solid; font-weight: bold; } |
---|
581 | tr.abstract td, tr.review td, tr.bibtex td { background-color: #F1F1F1; border-bottom: 2px black solid; } |
---|
582 | tr.nextshow td { border-bottom: 1px gray solid; } |
---|
583 | |
---|
584 | tr.bibtex pre { width: 100%; overflow: auto;} |
---|
585 | |
---|
586 | p.infolinks { margin: 0.5em 0em 0em 0em; padding: 0px; } |
---|
587 | |
---|
588 | |
---|
589 | #qssettings { padding: 0.5em; position: absolute; top: 0.2em; right: 0.2em; border: 1px gray solid; background-color: white; display: none; } |
---|
590 | #qssettings p { font-weight: bold; cursor: pointer; } |
---|
591 | #qssettings p.help { font-weight:normal;} |
---|
592 | #qssettings ul { display: none; list-style-type: none; padding-left: 0; margin: 0; } |
---|
593 | #qssettings.active ul { display: block; } |
---|
594 | |
---|
595 | |
---|
596 | th.sort_asc, th.sort_des { border: 2px black solid; } |
---|
597 | </style> |
---|
598 | </head> |
---|
599 | <body> |
---|
600 | |
---|
601 | <div id="qs"> |
---|
602 | <form action=""> |
---|
603 | <p>QuickSearch: <input type="text" name="qsfield" id="qsfield" autocomplete="off" title="Allows plain text as well as RegExp searches" /><input type="button" onclick="clearQS()" value="clear" /> Number of matching entries: <span id="stat">0</span>.</p> |
---|
604 | <p class="help"> |
---|
605 | allows RegExp searches |
---|
606 | <ul> |
---|
607 | <li><p class="help"> e.g. to search for entries between 1980 and 1989, type: <code>198[0-9]</code></p></li> |
---|
608 | <li><p class="help"> e.g. for any entry ending with 'symmetry', type: <code>symmetry$</code></p></li> |
---|
609 | <li><p class="help"> e.g. for all reftypes that are books: <code>^book$</code>, or <code>^article$</code></p></li> |
---|
610 | <li><p class="help">e.g. for entries by either John or Doe, type <code>john|doe</code></p></li> |
---|
611 | </ul> |
---|
612 | </p> |
---|
613 | |
---|
614 | <div id="qssettings"> |
---|
615 | <p onclick="toggleQSettingsDialog()">Search Settings</p> |
---|
616 | <ul></ul> |
---|
617 | <p class="help">optionally searches Abstracts and Reviews</p> |
---|
618 | </div> |
---|
619 | </form> |
---|
620 | </div> |
---|
621 | <table id="qstable" class="sortable" summary="LOCEAN bibliography" border="1"> |
---|
622 | <thead> |
---|
623 | <tr> |
---|
624 | <th width=".5%">Author</th> |
---|
625 | <th width=".5%">Team</th> |
---|
626 | <th width="0.5%">AERES Team</th> |
---|
627 | <th width=".5%">PHYBIOCAR theme</th> |
---|
628 | <th width=".5%">Organization</th> |
---|
629 | <th width=".5%">Title</th> |
---|
630 | <th class="sort_asc" width=".5%">Year</th> |
---|
631 | <th width=".5%">Journal/Proceedings;<br/> DOI/URL</th> |
---|
632 | <th width=".5%">Reftype</th> |
---|
633 | <th width=".5%">AERES Type</th> |
---|
634 | </tr> |
---|
635 | </thead> |
---|
636 | <tbody> |
---|