##// END OF EJS Templates
quick_repo_menu changed from mouseclick to popup
marcink -
r2088:382df4e6 beta
parent child Browse files
Show More
@@ -1,731 +1,726 b''
1 1 /**
2 2 RhodeCode JS Files
3 3 **/
4 4
5 5 if (typeof console == "undefined" || typeof console.log == "undefined"){
6 6 console = { log: function() {} }
7 7 }
8 8
9 9
10 10 var str_repeat = function(i, m) {
11 11 for (var o = []; m > 0; o[--m] = i);
12 12 return o.join('');
13 13 };
14 14
15 15 /**
16 16 * INJECT .format function into String
17 17 * Usage: "My name is {0} {1}".format("Johny","Bravo")
18 18 * Return "My name is Johny Bravo"
19 19 * Inspired by https://gist.github.com/1049426
20 20 */
21 21 String.prototype.format = function() {
22 22
23 23 function format() {
24 24 var str = this;
25 25 var len = arguments.length+1;
26 26 var safe = undefined;
27 27 var arg = undefined;
28 28
29 29 // For each {0} {1} {n...} replace with the argument in that position. If
30 30 // the argument is an object or an array it will be stringified to JSON.
31 31 for (var i=0; i < len; arg = arguments[i++]) {
32 32 safe = typeof arg === 'object' ? JSON.stringify(arg) : arg;
33 33 str = str.replace(RegExp('\\{'+(i-1)+'\\}', 'g'), safe);
34 34 }
35 35 return str;
36 36 }
37 37
38 38 // Save a reference of what may already exist under the property native.
39 39 // Allows for doing something like: if("".format.native) { /* use native */ }
40 40 format.native = String.prototype.format;
41 41
42 42 // Replace the prototype property
43 43 return format;
44 44
45 45 }();
46 46
47 47
48 48 /**
49 49 * SmartColorGenerator
50 50 *
51 51 *usage::
52 52 * var CG = new ColorGenerator();
53 53 * var col = CG.getColor(key); //returns array of RGB
54 54 * 'rgb({0})'.format(col.join(',')
55 55 *
56 56 * @returns {ColorGenerator}
57 57 */
58 58 var ColorGenerator = function(){
59 59 this.GOLDEN_RATIO = 0.618033988749895;
60 60 this.CURRENT_RATIO = 0.22717784590367374 // this can be random
61 61 this.HSV_1 = 0.75;//saturation
62 62 this.HSV_2 = 0.95;
63 63 this.color;
64 64 this.cacheColorMap = {};
65 65 };
66 66
67 67 ColorGenerator.prototype = {
68 68 getColor:function(key){
69 69 if(this.cacheColorMap[key] !== undefined){
70 70 return this.cacheColorMap[key];
71 71 }
72 72 else{
73 73 this.cacheColorMap[key] = this.generateColor();
74 74 return this.cacheColorMap[key];
75 75 }
76 76 },
77 77 _hsvToRgb:function(h,s,v){
78 78 if (s == 0.0)
79 79 return [v, v, v];
80 80 i = parseInt(h * 6.0)
81 81 f = (h * 6.0) - i
82 82 p = v * (1.0 - s)
83 83 q = v * (1.0 - s * f)
84 84 t = v * (1.0 - s * (1.0 - f))
85 85 i = i % 6
86 86 if (i == 0)
87 87 return [v, t, p]
88 88 if (i == 1)
89 89 return [q, v, p]
90 90 if (i == 2)
91 91 return [p, v, t]
92 92 if (i == 3)
93 93 return [p, q, v]
94 94 if (i == 4)
95 95 return [t, p, v]
96 96 if (i == 5)
97 97 return [v, p, q]
98 98 },
99 99 generateColor:function(){
100 100 this.CURRENT_RATIO = this.CURRENT_RATIO+this.GOLDEN_RATIO;
101 101 this.CURRENT_RATIO = this.CURRENT_RATIO %= 1;
102 102 HSV_tuple = [this.CURRENT_RATIO, this.HSV_1, this.HSV_2]
103 103 RGB_tuple = this._hsvToRgb(HSV_tuple[0],HSV_tuple[1],HSV_tuple[2]);
104 104 function toRgb(v){
105 105 return ""+parseInt(v*256)
106 106 }
107 107 return [toRgb(RGB_tuple[0]),toRgb(RGB_tuple[1]),toRgb(RGB_tuple[2])];
108 108
109 109 }
110 110 }
111 111
112 112
113 113
114 114
115 115
116 116 /**
117 117 * GLOBAL YUI Shortcuts
118 118 */
119 119 var YUC = YAHOO.util.Connect;
120 120 var YUD = YAHOO.util.Dom;
121 121 var YUE = YAHOO.util.Event;
122 122 var YUQ = YAHOO.util.Selector.query;
123 123
124 124 // defines if push state is enabled for this browser ?
125 125 var push_state_enabled = Boolean(
126 126 window.history && window.history.pushState && window.history.replaceState
127 127 && !( /* disable for versions of iOS before version 4.3 (8F190) */
128 128 (/ Mobile\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i).test(navigator.userAgent)
129 129 /* disable for the mercury iOS browser, or at least older versions of the webkit engine */
130 130 || (/AppleWebKit\/5([0-2]|3[0-2])/i).test(navigator.userAgent)
131 131 )
132 132 );
133 133
134 134 var _run_callbacks = function(callbacks){
135 135 if (callbacks !== undefined){
136 136 var _l = callbacks.length;
137 137 for (var i=0;i<_l;i++){
138 138 var func = callbacks[i];
139 139 if(typeof(func)=='function'){
140 140 try{
141 141 func();
142 142 }catch (err){};
143 143 }
144 144 }
145 145 }
146 146 }
147 147
148 148 /**
149 149 * Partial Ajax Implementation
150 150 *
151 151 * @param url: defines url to make partial request
152 152 * @param container: defines id of container to input partial result
153 153 * @param s_call: success callback function that takes o as arg
154 154 * o.tId
155 155 * o.status
156 156 * o.statusText
157 157 * o.getResponseHeader[ ]
158 158 * o.getAllResponseHeaders
159 159 * o.responseText
160 160 * o.responseXML
161 161 * o.argument
162 162 * @param f_call: failure callback
163 163 * @param args arguments
164 164 */
165 165 function ypjax(url,container,s_call,f_call,args){
166 166 var method='GET';
167 167 if(args===undefined){
168 168 args=null;
169 169 }
170 170
171 171 // Set special header for partial ajax == HTTP_X_PARTIAL_XHR
172 172 YUC.initHeader('X-PARTIAL-XHR',true);
173 173
174 174 // wrapper of passed callback
175 175 var s_wrapper = (function(o){
176 176 return function(o){
177 177 YUD.get(container).innerHTML=o.responseText;
178 178 YUD.setStyle(container,'opacity','1.0');
179 179 //execute the given original callback
180 180 if (s_call !== undefined){
181 181 s_call(o);
182 182 }
183 183 }
184 184 })()
185 185 YUD.setStyle(container,'opacity','0.3');
186 186 YUC.asyncRequest(method,url,{
187 187 success:s_wrapper,
188 188 failure:function(o){
189 189 console.log(o);
190 190 YUD.get(container).innerHTML='ERROR';
191 191 YUD.setStyle(container,'opacity','1.0');
192 192 YUD.setStyle(container,'color','red');
193 193 }
194 194 },args);
195 195
196 196 };
197 197
198 198 /**
199 199 * tooltip activate
200 200 */
201 201 var tooltip_activate = function(){
202 202 function toolTipsId(){
203 203 var ids = [];
204 204 var tts = YUQ('.tooltip');
205 205 for (var i = 0; i < tts.length; i++) {
206 206 // if element doesn't not have and id
207 207 // autogenerate one for tooltip
208 208 if (!tts[i].id){
209 209 tts[i].id='tt'+((i*100)+tts.length);
210 210 }
211 211 ids.push(tts[i].id);
212 212 }
213 213 return ids
214 214 };
215 215 var myToolTips = new YAHOO.widget.Tooltip("tooltip", {
216 216 context: [[toolTipsId()],"tl","bl",null,[0,5]],
217 217 monitorresize:false,
218 218 xyoffset :[0,0],
219 219 autodismissdelay:300000,
220 220 hidedelay:5,
221 221 showdelay:20,
222 222 });
223 223 };
224 224
225 225 /**
226 226 * show more
227 227 */
228 228 var show_more_event = function(){
229 229 YUE.on(YUD.getElementsByClassName('show_more'),'click',function(e){
230 230 var el = e.target;
231 231 YUD.setStyle(YUD.get(el.id.substring(1)),'display','');
232 232 YUD.setStyle(el.parentNode,'display','none');
233 233 });
234 234 };
235 235
236 236
237 237 /**
238 238 * Quick filter widget
239 239 *
240 240 * @param target: filter input target
241 241 * @param nodes: list of nodes in html we want to filter.
242 242 * @param display_element function that takes current node from nodes and
243 243 * does hide or show based on the node
244 244 *
245 245 */
246 246 var q_filter = function(target,nodes,display_element){
247 247
248 248 var nodes = nodes;
249 249 var q_filter_field = YUD.get(target);
250 250 var F = YAHOO.namespace(target);
251 251
252 252 YUE.on(q_filter_field,'click',function(){
253 253 q_filter_field.value = '';
254 254 });
255 255
256 256 YUE.on(q_filter_field,'keyup',function(e){
257 257 clearTimeout(F.filterTimeout);
258 258 F.filterTimeout = setTimeout(F.updateFilter,600);
259 259 });
260 260
261 261 F.filterTimeout = null;
262 262
263 263 var show_node = function(node){
264 264 YUD.setStyle(node,'display','')
265 265 }
266 266 var hide_node = function(node){
267 267 YUD.setStyle(node,'display','none');
268 268 }
269 269
270 270 F.updateFilter = function() {
271 271 // Reset timeout
272 272 F.filterTimeout = null;
273 273
274 274 var obsolete = [];
275 275
276 276 var req = q_filter_field.value.toLowerCase();
277 277
278 278 var l = nodes.length;
279 279 var i;
280 280 var showing = 0;
281 281
282 282 for (i=0;i<l;i++ ){
283 283 var n = nodes[i];
284 284 var target_element = display_element(n)
285 285 if(req && n.innerHTML.toLowerCase().indexOf(req) == -1){
286 286 hide_node(target_element);
287 287 }
288 288 else{
289 289 show_node(target_element);
290 290 showing+=1;
291 291 }
292 292 }
293 293
294 294 // if repo_count is set update the number
295 295 var cnt = YUD.get('repo_count');
296 296 if(cnt){
297 297 YUD.get('repo_count').innerHTML = showing;
298 298 }
299 299
300 300 }
301 301 };
302 302
303 303 var ajaxPOST = function(url,postData,success) {
304 304 var sUrl = url;
305 305 var callback = {
306 306 success: success,
307 307 failure: function (o) {
308 308 alert("error");
309 309 },
310 310 };
311 311 var postData = postData;
312 312 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
313 313 };
314 314
315 315
316 316 /** comments **/
317 317 var removeInlineForm = function(form) {
318 318 form.parentNode.removeChild(form);
319 319 };
320 320
321 321 var tableTr = function(cls,body){
322 322 var form = document.createElement('tr');
323 323 YUD.addClass(form, cls);
324 324 form.innerHTML = '<td class="lineno-inline new-inline"></td>'+
325 325 '<td class="lineno-inline old-inline"></td>'+
326 326 '<td>{0}</td>'.format(body);
327 327 return form;
328 328 };
329 329
330 330 var createInlineForm = function(parent_tr, f_path, line) {
331 331 var tmpl = YUD.get('comment-inline-form-template').innerHTML;
332 332 tmpl = tmpl.format(f_path, line);
333 333 var form = tableTr('comment-form-inline',tmpl)
334 334
335 335 // create event for hide button
336 336 form = new YAHOO.util.Element(form);
337 337 var form_hide_button = new YAHOO.util.Element(form.getElementsByClassName('hide-inline-form')[0]);
338 338 form_hide_button.on('click', function(e) {
339 339 var newtr = e.currentTarget.parentNode.parentNode.parentNode.parentNode.parentNode;
340 340 removeInlineForm(newtr);
341 341 YUD.removeClass(parent_tr, 'form-open');
342 342 });
343 343 return form
344 344 };
345 345 var injectInlineForm = function(tr){
346 346 if(YUD.hasClass(tr,'form-open') || YUD.hasClass(tr,'context') || YUD.hasClass(tr,'no-comment')){
347 347 return
348 348 }
349 349 YUD.addClass(tr,'form-open');
350 350 var node = tr.parentNode.parentNode.parentNode.getElementsByClassName('full_f_path')[0];
351 351 var f_path = YUD.getAttribute(node,'path');
352 352 var lineno = getLineNo(tr);
353 353 var form = createInlineForm(tr, f_path, lineno);
354 354 var target_tr = tr;
355 355 if(YUD.hasClass(YUD.getNextSibling(tr),'inline-comments')){
356 356 target_tr = YUD.getNextSibling(tr);
357 357 }
358 358 YUD.insertAfter(form,target_tr);
359 359 YUD.get('text_'+lineno).focus();
360 360 tooltip_activate();
361 361 };
362 362
363 363 var createInlineAddButton = function(tr,label){
364 364 var html = '<div class="add-comment"><span class="ui-btn">{0}</span></div>'.format(label);
365 365
366 366 var add = new YAHOO.util.Element(tableTr('inline-comments-button',html));
367 367 add.on('click', function(e) {
368 368 injectInlineForm(tr);
369 369 });
370 370 return add;
371 371 };
372 372
373 373 var getLineNo = function(tr) {
374 374 var line;
375 375 var o = tr.children[0].id.split('_');
376 376 var n = tr.children[1].id.split('_');
377 377
378 378 if (n.length >= 2) {
379 379 line = n[n.length-1];
380 380 } else if (o.length >= 2) {
381 381 line = o[o.length-1];
382 382 }
383 383
384 384 return line
385 385 };
386 386
387 387
388 388 var fileBrowserListeners = function(current_url, node_list_url, url_base,
389 389 truncated_lbl, nomatch_lbl){
390 390 var current_url_branch = +"?branch=__BRANCH__";
391 391 var url = url_base;
392 392 var node_url = node_list_url;
393 393
394 394 YUE.on('stay_at_branch','click',function(e){
395 395 if(e.target.checked){
396 396 var uri = current_url_branch;
397 397 uri = uri.replace('__BRANCH__',e.target.value);
398 398 window.location = uri;
399 399 }
400 400 else{
401 401 window.location = current_url;
402 402 }
403 403 })
404 404
405 405 var n_filter = YUD.get('node_filter');
406 406 var F = YAHOO.namespace('node_filter');
407 407
408 408 F.filterTimeout = null;
409 409 var nodes = null;
410 410
411 411 F.initFilter = function(){
412 412 YUD.setStyle('node_filter_box_loading','display','');
413 413 YUD.setStyle('search_activate_id','display','none');
414 414 YUD.setStyle('add_node_id','display','none');
415 415 YUC.initHeader('X-PARTIAL-XHR',true);
416 416 YUC.asyncRequest('GET',url,{
417 417 success:function(o){
418 418 nodes = JSON.parse(o.responseText);
419 419 YUD.setStyle('node_filter_box_loading','display','none');
420 420 YUD.setStyle('node_filter_box','display','');
421 421 n_filter.focus();
422 422 if(YUD.hasClass(n_filter,'init')){
423 423 n_filter.value = '';
424 424 YUD.removeClass(n_filter,'init');
425 425 }
426 426 },
427 427 failure:function(o){
428 428 console.log('failed to load');
429 429 }
430 430 },null);
431 431 }
432 432
433 433 F.updateFilter = function(e) {
434 434
435 435 return function(){
436 436 // Reset timeout
437 437 F.filterTimeout = null;
438 438 var query = e.target.value.toLowerCase();
439 439 var match = [];
440 440 var matches = 0;
441 441 var matches_max = 20;
442 442 if (query != ""){
443 443 for(var i=0;i<nodes.length;i++){
444 444
445 445 var pos = nodes[i].name.toLowerCase().indexOf(query)
446 446 if(query && pos != -1){
447 447
448 448 matches++
449 449 //show only certain amount to not kill browser
450 450 if (matches > matches_max){
451 451 break;
452 452 }
453 453
454 454 var n = nodes[i].name;
455 455 var t = nodes[i].type;
456 456 var n_hl = n.substring(0,pos)
457 457 +"<b>{0}</b>".format(n.substring(pos,pos+query.length))
458 458 +n.substring(pos+query.length)
459 459 match.push('<tr><td><a class="browser-{0}" href="{1}">{2}</a></td><td colspan="5"></td></tr>'.format(t,node_url.replace('__FPATH__',n),n_hl));
460 460 }
461 461 if(match.length >= matches_max){
462 462 match.push('<tr><td>{0}</td><td colspan="5"></td></tr>'.format(truncated_lbl));
463 463 }
464 464
465 465 }
466 466 }
467 467 if(query != ""){
468 468 YUD.setStyle('tbody','display','none');
469 469 YUD.setStyle('tbody_filtered','display','');
470 470
471 471 if (match.length==0){
472 472 match.push('<tr><td>{0}</td><td colspan="5"></td></tr>'.format(nomatch_lbl));
473 473 }
474 474
475 475 YUD.get('tbody_filtered').innerHTML = match.join("");
476 476 }
477 477 else{
478 478 YUD.setStyle('tbody','display','');
479 479 YUD.setStyle('tbody_filtered','display','none');
480 480 }
481 481
482 482 }
483 483 };
484 484
485 485 YUE.on(YUD.get('filter_activate'),'click',function(){
486 486 F.initFilter();
487 487 })
488 488 YUE.on(n_filter,'click',function(){
489 489 if(YUD.hasClass(n_filter,'init')){
490 490 n_filter.value = '';
491 491 YUD.removeClass(n_filter,'init');
492 492 }
493 493 });
494 494 YUE.on(n_filter,'keyup',function(e){
495 495 clearTimeout(F.filterTimeout);
496 496 F.filterTimeout = setTimeout(F.updateFilter(e),600);
497 497 });
498 498 };
499 499
500 500
501 501 var initCodeMirror = function(textAreadId,resetUrl){
502 502 var myCodeMirror = CodeMirror.fromTextArea(YUD.get(textAreadId),{
503 503 mode: "null",
504 504 lineNumbers:true
505 505 });
506 506 YUE.on('reset','click',function(e){
507 507 window.location=resetUrl
508 508 });
509 509
510 510 YUE.on('file_enable','click',function(){
511 511 YUD.setStyle('editor_container','display','');
512 512 YUD.setStyle('upload_file_container','display','none');
513 513 YUD.setStyle('filename_container','display','');
514 514 });
515 515
516 516 YUE.on('upload_file_enable','click',function(){
517 517 YUD.setStyle('editor_container','display','none');
518 518 YUD.setStyle('upload_file_container','display','');
519 519 YUD.setStyle('filename_container','display','none');
520 520 });
521 521 };
522 522
523 523
524 524
525 525 var getIdentNode = function(n){
526 526 //iterate thru nodes untill matched interesting node !
527 527
528 528 if (typeof n == 'undefined'){
529 529 return -1
530 530 }
531 531
532 532 if(typeof n.id != "undefined" && n.id.match('L[0-9]+')){
533 533 return n
534 534 }
535 535 else{
536 536 return getIdentNode(n.parentNode);
537 537 }
538 538 };
539 539
540 540 var getSelectionLink = function(selection_link_label) {
541 541 return function(){
542 542 //get selection from start/to nodes
543 543 if (typeof window.getSelection != "undefined") {
544 544 s = window.getSelection();
545 545
546 546 from = getIdentNode(s.anchorNode);
547 547 till = getIdentNode(s.focusNode);
548 548
549 549 f_int = parseInt(from.id.replace('L',''));
550 550 t_int = parseInt(till.id.replace('L',''));
551 551
552 552 if (f_int > t_int){
553 553 //highlight from bottom
554 554 offset = -35;
555 555 ranges = [t_int,f_int];
556 556
557 557 }
558 558 else{
559 559 //highligth from top
560 560 offset = 35;
561 561 ranges = [f_int,t_int];
562 562 }
563 563
564 564 if (ranges[0] != ranges[1]){
565 565 if(YUD.get('linktt') == null){
566 566 hl_div = document.createElement('div');
567 567 hl_div.id = 'linktt';
568 568 }
569 569 anchor = '#L'+ranges[0]+'-'+ranges[1];
570 570 hl_div.innerHTML = '';
571 571 l = document.createElement('a');
572 572 l.href = location.href.substring(0,location.href.indexOf('#'))+anchor;
573 573 l.innerHTML = selection_link_label;
574 574 hl_div.appendChild(l);
575 575
576 576 YUD.get('body').appendChild(hl_div);
577 577
578 578 xy = YUD.getXY(till.id);
579 579
580 580 YUD.addClass('linktt','yui-tt');
581 581 YUD.setStyle('linktt','top',xy[1]+offset+'px');
582 582 YUD.setStyle('linktt','left',xy[0]+'px');
583 583 YUD.setStyle('linktt','visibility','visible');
584 584 }
585 585 else{
586 586 YUD.setStyle('linktt','visibility','hidden');
587 587 }
588 588 }
589 589 }
590 590 };
591 591
592 592 var deleteNotification = function(url, notification_id,callbacks){
593 593 var callback = {
594 594 success:function(o){
595 595 var obj = YUD.get(String("notification_"+notification_id));
596 596 if(obj.parentNode !== undefined){
597 597 obj.parentNode.removeChild(obj);
598 598 }
599 599 _run_callbacks(callbacks);
600 600 },
601 601 failure:function(o){
602 602 alert("error");
603 603 },
604 604 };
605 605 var postData = '_method=delete';
606 606 var sUrl = url.replace('__NOTIFICATION_ID__',notification_id);
607 607 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl,
608 608 callback, postData);
609 609 };
610 610
611 611
612 612 /**
613 613 * QUICK REPO MENU
614 614 */
615 615 var quick_repo_menu = function(){
616 YUE.on(YUQ('.quick_repo_menu'),'click',function(e){
617 //close all opened ones before !
618 var actives = YUQ('.quick_repo_menu.active');
619 for(var i=0;i<actives.length;i++){
620 var el = actives[i];
621 if(el != e.currentTarget){
622 YUD.removeClass(el,'active');
623 YUD.addClass(el.firstElementChild.firstElementChild,'hidden');
624 }
625 }
626 var menu = e.currentTarget.firstElementChild.firstElementChild;
627 if(YUD.hasClass(menu,'hidden')){
628 YUD.addClass(e.currentTarget,'active');
629 YUD.removeClass(menu,'hidden');
630 }else{
631 YUD.removeClass(e.currentTarget,'active');
632 YUD.addClass(menu,'hidden');
633 }
634 })
616 YUE.on(YUQ('.quick_repo_menu'),'mouseenter',function(e){
617 var menu = e.currentTarget.firstElementChild.firstElementChild;
618 if(YUD.hasClass(menu,'hidden')){
619 YUD.replaceClass(e.currentTarget,'hidden', 'active');
620 YUD.replaceClass(menu, 'hidden', 'active');
621 }
622 })
623 YUE.on(YUQ('.quick_repo_menu'),'mouseleave',function(e){
624 var menu = e.currentTarget.firstElementChild.firstElementChild;
625 if(YUD.hasClass(menu,'active')){
626 YUD.replaceClass(e.currentTarget, 'active', 'hidden');
627 YUD.replaceClass(menu, 'active', 'hidden');
628 }
629 })
635 630 };
636 631
637 632
638 633 /**
639 634 * TABLE SORTING
640 635 */
641 636
642 637 // returns a node from given html;
643 638 var fromHTML = function(html){
644 639 var _html = document.createElement('element');
645 640 _html.innerHTML = html;
646 641 return _html;
647 642 }
648 643 var get_rev = function(node){
649 644 var n = node.firstElementChild.firstElementChild;
650 645
651 646 if (n===null){
652 647 return -1
653 648 }
654 649 else{
655 650 out = n.firstElementChild.innerHTML.split(':')[0].replace('r','');
656 651 return parseInt(out);
657 652 }
658 653 }
659 654
660 655 var get_name = function(node){
661 656 var name = node.firstElementChild.children[2].innerHTML;
662 657 return name
663 658 }
664 659 var get_group_name = function(node){
665 660 var name = node.firstElementChild.children[1].innerHTML;
666 661 return name
667 662 }
668 663 var get_date = function(node){
669 664 var date_ = node.firstElementChild.innerHTML;
670 665 return date_
671 666 }
672 667
673 668 var revisionSort = function(a, b, desc, field) {
674 669
675 670 var a_ = fromHTML(a.getData(field));
676 671 var b_ = fromHTML(b.getData(field));
677 672
678 673 // extract revisions from string nodes
679 674 a_ = get_rev(a_)
680 675 b_ = get_rev(b_)
681 676
682 677 var comp = YAHOO.util.Sort.compare;
683 678 var compState = comp(a_, b_, desc);
684 679 return compState;
685 680 };
686 681 var ageSort = function(a, b, desc, field) {
687 682 var a_ = a.getData(field);
688 683 var b_ = b.getData(field);
689 684
690 685 var comp = YAHOO.util.Sort.compare;
691 686 var compState = comp(a_, b_, desc);
692 687 return compState;
693 688 };
694 689
695 690 var nameSort = function(a, b, desc, field) {
696 691 var a_ = fromHTML(a.getData(field));
697 692 var b_ = fromHTML(b.getData(field));
698 693
699 694 // extract name from table
700 695 a_ = get_name(a_)
701 696 b_ = get_name(b_)
702 697
703 698 var comp = YAHOO.util.Sort.compare;
704 699 var compState = comp(a_, b_, desc);
705 700 return compState;
706 701 };
707 702
708 703 var groupNameSort = function(a, b, desc, field) {
709 704 var a_ = fromHTML(a.getData(field));
710 705 var b_ = fromHTML(b.getData(field));
711 706
712 707 // extract name from table
713 708 a_ = get_group_name(a_)
714 709 b_ = get_group_name(b_)
715 710
716 711 var comp = YAHOO.util.Sort.compare;
717 712 var compState = comp(a_, b_, desc);
718 713 return compState;
719 714 };
720 715 var dateSort = function(a, b, desc, field) {
721 716 var a_ = fromHTML(a.getData(field));
722 717 var b_ = fromHTML(b.getData(field));
723 718
724 719 // extract name from table
725 720 a_ = get_date(a_)
726 721 b_ = get_date(b_)
727 722
728 723 var comp = YAHOO.util.Sort.compare;
729 724 var compState = comp(a_, b_, desc);
730 725 return compState;
731 726 }; No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now