/[jquery]/tag_complete/tag_complete.js
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /tag_complete/tag_complete.js

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 48 by dpavlin, Fri Aug 18 23:10:48 2006 UTC revision 51 by dpavlin, Sat Aug 19 10:50:49 2006 UTC
# Line 7  Line 7 
7  var _tag = {  var _tag = {
8          name: new Array(),          name: new Array(),
9          obj: new Array(),          obj: new Array(),
10          selected_obj: new Array(),          selected: new Array(),
11    
12            current: null,          // current selected suggestion
13    
14          select: function( tag ) {          select: function( tag ) {
15    
16                  $.log.info('filter '+tag);                  $.log.info('filter '+tag);
17    
                 _tag.selected_obj = Array();  
18                  var j = 0;                  var j = 0;
19                  var tag_len = tag.length;                  var tag_len = tag.length;
20                  var suggest = '<ul>';                  var suggest = '';
21    
22                  for(var i = 0; i < _tag.name.length; i++) {                  for(var i = 0; i < _tag.name.length; i++) {
23                          var t = _tag.name[i];                          var t = _tag.name[i];
# Line 25  var _tag = { Line 26  var _tag = {
26    
27                                  jQuery.className.add( _tag.obj[i], 'selected' );                                  jQuery.className.add( _tag.obj[i], 'selected' );
28    
29                                  suggest += '<li>' + t + '</li> ';                                  suggest += '<a href="#" onclick="javascript:return _tag.add_tag(\'' + t + '\',' + i + ')">' + t + '</a> ';
30                                  _tag.selected_obj[j] = _tag.obj[i];                                  _tag.selected[j++] = {
31                                  j++;                                          i: i,
32                                            obj: _tag.obj[i],
33                                    }
34                          }                          }
35                  }                  }
36    
                 suggest += '</ul>';  
   
37                  $('#suggest').html( suggest );                  $('#suggest').html( suggest );
38                  if (j > 0) {                  if (j > 0) {
39                          $('#suggest li:nth(0)').addClass('selected');                          $('#suggest a:nth(0)').addClass('selected');
40                          _tag.current = 0;                          _tag.current = 0;
41                  }                  }
42    
43          },          },
44    
45          clean_selected: function() {          clean_selected: function() {
46                  for(var i = 0; i < _tag.selected_obj.length; i++) {                  for(var i = 0; i < _tag.selected.length; i++) {
47                          jQuery.className.remove( _tag.selected_obj[i], 'selected' );                          jQuery.className.remove( _tag.selected[i].obj, 'selected' );
48                  }                  }
49    
50                  var c = _tag.current;                  var c = _tag.current;
# Line 63  var _tag = { Line 64  var _tag = {
64                          return true;                          return true;
65                  }                  }
66    
67                  var s = $('#suggest li:nth('+c+')').html();                  var s = $('#suggest a:nth('+c+')').html();
68                  if (s == null) {                  if (s == null) {
69                          $.log.debug('no suggest, return true');                          $.log.debug('no suggest, return true');
70                          return true;                          return true;
71                  }                  }
72    
73                  _tag.add_tag( s );                  var i = _tag.selected[c].i;
74                  _tag.clean_selected();                  $.log.debug('take_suggested '+i+':'+s);
75                    _tag.add_tag( s, i );
76                  return false;                  return false;
77          },          },
78    
79          add_tag: function( t ) {          add_tag: function( t, i ) {
80                  $.log.info('add: '+t);                  $.log.info('add '+i+': '+t);
81                    _tag.focus();
82                    jQuery.className.add( _tag.obj[i], 'entered' );
83                    _tag.clean_selected();
84                  $('#tags').val(                  $('#tags').val(
85                          $('#tags').val().replace(                          $('#tags').val().replace(
86                                  /[^ ]*$/, t + ' '                                  /[^ ]*$/, t + ' '
87                          )                          )
88                  );                  );
                 _tag.focus();  
89                  return false;                  return false;
90          },          },
91    
# Line 93  var _tag = { Line 97  var _tag = {
97                  }                  }
98                  var to = c + where;                  var to = c + where;
99                  $.log.info('move_suggested('+where+') '+c+' -> '+to);                  $.log.info('move_suggested('+where+') '+c+' -> '+to);
100                  if (to < 0 || to >= _tag.selected_obj.length) {                  if (to < 0 || to >= _tag.selected.length) {
101                          $.log.error('move to invalid element '+to);                          $.log.error('move to invalid element '+to);
102                          return;                          return;
103                  }                  }
104                  var s = '#suggest li:nth('+c+')';                  var s = '#suggest a:nth('+c+')';
105                  $( s ).removeClass('selected');                  $( s ).removeClass('selected');
106                  $.log.debug('remove selected from '+s);                  $.log.debug('remove selected from '+s);
107                  s = '#suggest li:nth('+to+')';                  s = '#suggest a:nth('+to+')';
108                  $( s ).addClass('selected');                  $( s ).addClass('selected');
109                  $.log.debug('add selected to '+s);                  $.log.debug('add selected to '+s);
110                  _tag.current = to;                  _tag.current = to;
# Line 123  $(document).ready( function() { Line 127  $(document).ready( function() {
127                  _tag.name[i] = n;                  _tag.name[i] = n;
128                  _tag.obj[i] = this;                  _tag.obj[i] = this;
129                  this.onclick = function() {                  this.onclick = function() {
130                          return _tag.add_tag( n );                          return _tag.add_tag( n, i );
131                  }                  }
132          });          });
133          $.log.info( 'found ' + _tag.name.length + ' tags' );          $.log.info( 'found ' + _tag.name.length + ' tags' );
# Line 160  $(document).ready( function() { Line 164  $(document).ready( function() {
164    
165                  _tag.select(t);                  _tag.select(t);
166    
167                  $.log.info('selected ' + _tag.selected_obj.length + ' tags');                  $.log.info('selected ' + _tag.selected.length + ' tags');
168    
169                  return true;                  return true;
170          }).submit( function() {          }).submit( function() {

Legend:
Removed from v.48  
changed lines
  Added in v.51

  ViewVC Help
Powered by ViewVC 1.1.26