source: extensions/GrumPluginClasses/js/ui.tagSelector.min.js @ 8961

Last change on this file since 8961 was 8961, checked in by grum, 13 years ago

release 3.4.0
fix bug:1984, bug:2109
js file are minified, remove packed files

  • Property svn:executable set to *
File size: 18.0 KB
Line 
1/* file: ui.tagSelector.js - v1.0.0 | minified on 2011/01/27 with http://jscompress.com/ */
2(function($)
3{var publicMethods={init:function(opt)
4{return this.each(function()
5{var $this=$(this),data=$this.data('options'),objects=$this.data('objects'),properties=$this.data('properties'),options={ignoreCase:true,serverUrl:'plugins/GrumPluginClasses/gpc_ajax.php',serverCallDelay:250,listMaxWidth:0,listMaxHeight:0,maximumTagLoaded:0,textStart:'Start to type text...',textFound:'%s tags found',textDisplay:'display only %s tags',mode:'public',filter:'affected',inputNumCar:5,add:null,remove:null,popup:null,load:null};$this.data('options',options);if(!properties)
6{$this.data('properties',{initialized:false,selectorVisible:false,totalTags:0,tags:[],cache:[],timerHandle:null,isValid:true});properties=$this.data('properties');}
7if(!objects)
8{objects={container:$('<div/>',{'class':'ui-tag-selector-input',css:{width:'100%'}}).bind('click.tagSelector',function()
9{objects.input.focus();}),selectedTagList:$('<ul/>',{html:'','class':'ui-tag-selector-selected-tag-list'}),input:$('<input>',{type:"text",value:''}).bind('focusout.tagSelector',function()
10{privateMethods.lostFocus($this);}).bind('focus.tagSelector',function()
11{privateMethods.getFocus($this);}).bind('keypress.tagSelector',function()
12{privateMethods.setTimerHandle($this);}),selectorList:$('<div/>',{html:"",'class':'ui-tag-selector-list',css:{display:'none',position:'absolute',zIndex:9999}}).bind('mouseleave.tagSelector',function()
13{privateMethods.displaySelector($this,false);}),tagList:$('<ul/>',{css:{listStyle:'none',padding:'0px',margin:'0px',overflow:"auto"}}),textArea:$('<div/>',{html:'','class':'ui-tag-selector-text'})};$this.html('').append(objects.container.append(objects.selectedTagList.append($('<li/>').append(objects.input)))).append(objects.selectorList.append(objects.tagList).append(objects.textArea));$this.data('objects',objects);}
14privateMethods.setOptions($this,opt);});},destroy:function()
15{return this.each(function()
16{var $this=$(this),objects=$this.data('objects');objects.selectedTagList.children().unbind();objects.input.unbind().remove();objects.container.unbind().remove();objects.selectorList.unbind().remove();objects.tagList.remove();$this.unbind('.categorySelector').css({width:'',height:''});});},options:function(value)
17{return this.each(function()
18{privateMethods.setOptions($(this),value);});},ignoreCase:function(value)
19{if(value!=null)
20{return this.each(function()
21{privateMethods.setIgnoreCase($(this),value);});}
22else
23{var options=this.data('options');if(options)
24{return(options.ignoreCase);}
25else
26{return(true);}}},inputNumCar:function(value)
27{if(value!=null)
28{return this.each(function()
29{privateMethods.setInputNumCar($(this),value);});}
30else
31{var options=this.data('options');if(options)
32{return(options.inputNumCar);}
33else
34{return(true);}}},maximumTagLoaded:function(value)
35{if(value!=null)
36{return this.each(function()
37{privateMethods.setMaximumTagLoaded($(this),value);});}
38else
39{var options=this.data('options');if(options)
40{return(options.maximumTagLoaded);}
41else
42{return(0);}}},listMaxWidth:function(value)
43{if(value!=null)
44{return this.each(function()
45{privateMethods.setListMaxWidth($(this),value);});}
46else
47{var options=this.data('options');if(options)
48{return(options.listMaxWidth);}
49else
50{return(0);}}},listMaxHeight:function(value)
51{if(value!=null)
52{return this.each(function()
53{privateMethods.setListMaxHeight($(this),value);});}
54else
55{var options=this.data('options');if(options)
56{return(options.listMaxHeight);}
57else
58{return(0);}}},serverCallDelay:function(value)
59{if(value!=null)
60{return this.each(function()
61{privateMethods.setServerCallDelay($(this),value);});}
62else
63{var options=this.data('options');if(options)
64{return(options.serverCallDelay);}
65else
66{return(0);}}},serverUrl:function(value)
67{if(value!=null)
68{return this.each(function()
69{privateMethods.setServerUrl($(this),value);});}
70else
71{var options=this.data('options');if(options)
72{return(options.serverUrl);}
73else
74{return('');}}},textStart:function(value)
75{if(value!=null)
76{return this.each(function()
77{privateMethods.setTextStart($(this),value);});}
78else
79{var options=this.data('options');if(options)
80{return(options.textStart);}
81else
82{return('');}}},textFound:function(value)
83{if(value!=null)
84{return this.each(function()
85{privateMethods.setTextFound($(this),value);});}
86else
87{var options=this.data('options');if(options)
88{return(options.textFound);}
89else
90{return('');}}},textDisplay:function(value)
91{if(value!=null)
92{return this.each(function()
93{privateMethods.setTextDisplay($(this),value);});}
94else
95{var options=this.data('options');if(options)
96{return(options.textDisplay);}
97else
98{return('');}}},filter:function(value)
99{if(value!=null)
100{return this.each(function()
101{privateMethods.setFilter($(this),value);});}
102else
103{var options=this.data('options');if(options)
104{return(options.filter);}
105else
106{return(true);}}},mode:function(value)
107{if(value!=null)
108{return this.each(function()
109{privateMethods.setMode($(this),value);});}
110else
111{var options=this.data('options');if(options)
112{return(options.mode);}
113else
114{return(true);}}},value:function(value)
115{if(value!=null)
116{return this.each(function()
117{privateMethods.setValue($(this),value);});}
118else
119{var properties=this.data('properties');return(properties.tags);}},isValid:function(value)
120{if(value!=null)
121{return this.each(function()
122{privateMethods.setIsValid($(this),value);});}
123else
124{var properties=this.data('properties');return(properties.isValid);}},load:function(value)
125{if(value&&$.isFunction(value))
126{return this.each(function()
127{privateMethods.setEventLoad($(this),value);});}
128else
129{privateMethods.load(this);}},popup:function(value)
130{if(value&&$.isFunction(value))
131{return this.each(function()
132{privateMethods.setEventPopup($(this),value);});}
133else
134{var options=this.data('options');if(options)
135{return(options.popup);}
136else
137{return(null);}}},add:function(value)
138{if(value&&$.isFunction(value))
139{return this.each(function()
140{privateMethods.setEventAdd($(this),value);});}
141else
142{var options=this.data('options');if(options)
143{return(options.add);}
144else
145{return(null);}}},remove:function(value)
146{if(value&&$.isFunction(value))
147{return this.each(function()
148{privateMethods.setEventRemove($(this),value);});}
149else
150{var options=this.data('options');if(options)
151{return(options.remove);}
152else
153{return(null);}}},numberOfTags:function()
154{var properties=this.data('properties');if(properties)
155{return(properties.tags.length);}
156else
157{return(null);}}};var privateMethods={setOptions:function(object,value)
158{var properties=object.data('properties'),options=object.data('options');if(!$.isPlainObject(value))return(false);properties.initialized=false;privateMethods.setIgnoreCase(object,(value.ignoreCase!=null)?value.ignoreCase:options.ignoreCase);privateMethods.setInputNumCar(object,(value.inputNumCar!=null)?value.inputNumCar:options.inputNumCar);privateMethods.setValue(object,(value.value!=null)?value.value:[]);privateMethods.setMaximumTagLoaded(object,(value.maximumTagLoaded!=null)?value.maximumTagLoaded:options.maximumTagLoaded);privateMethods.setTextStart(object,(value.textStart!=null)?value.textStart:options.textStart);privateMethods.setTextFound(object,(value.textFound!=null)?value.textFound:options.textFound);privateMethods.setTextDisplay(object,(value.textDisplay!=null)?value.textDisplay:options.textDisplay);privateMethods.setListMaxWidth(object,(value.listMaxWidth!=null)?value.listMaxWidth:options.listMaxWidth);privateMethods.setListMaxHeight(object,(value.listMaxHeight!=null)?value.listMaxHeight:options.listMaxHeight);privateMethods.setServerCallDelay(object,(value.serverCallDelay!=null)?value.serverCallDelay:options.serverCallDelay);privateMethods.setServerUrl(object,(value.serverUrl!=null)?value.serverUrl:options.serverUrl);privateMethods.setMode(object,(value.mode!=null)?value.mode:options.mode);privateMethods.setFilter(object,(value.filter!=null)?value.filter:options.filter);privateMethods.setEventPopup(object,(value.popup!=null)?value.popup:options.popup);privateMethods.setEventAdd(object,(value.add!=null)?value.add:options.add);privateMethods.setEventRemove(object,(value.remove!=null)?value.remove:options.remove);privateMethods.setEventLoad(object,(value.load!=null)?value.load:options.load);if(options.autoLoad)privateMethods.load(object);properties.initialized=true;},setIsValid:function(object,value)
159{var objects=object.data('objects'),properties=object.data('properties');if(properties.isValid!=value)
160{properties.isValid=value;if(properties.isValid)
161{objects.container.removeClass('ui-error');objects.input.removeClass('ui-error');}
162else
163{objects.container.addClass('ui-error');objects.input.addClass('ui-error');}}
164return(properties.isValid);},setIgnoreCase:function(object,value)
165{var options=object.data('options'),properties=object.data('properties');if((!properties.initialized||options.ignoreCase!=value)&&(value==true||value==false))
166{options.ignoreCase=value;}
167return(options.ignoreCase);},setInputNumCar:function(object,value)
168{var options=object.data('options'),objects=object.data('objects'),properties=object.data('properties');if((!properties.initialized||options.inputNumCar!=value)&&value>0)
169{options.inputNumCar=value;objects.input.attr('size',options.inputNumCar);}
170return(options.inputNumCar);},setMaximumTagLoaded:function(object,value)
171{var options=object.data('options'),properties=object.data('properties');if((!properties.initialized||options.setMaximumTagLoaded!=value)&&value>=0)
172{options.maximumTagLoaded=value;}
173return(options.maximumTagLoaded);},setTextStart:function(object,value)
174{var options=object.data('options'),properties=object.data('properties');if(!properties.initialized||options.textStart!=value)
175{options.textStart=value;}
176return(options.textStart);},setTextFound:function(object,value)
177{var options=object.data('options'),properties=object.data('properties');if(!properties.initialized||options.textFound!=value)
178{options.textFound=value;}
179return(options.textFound);},setTextDisplay:function(object,value)
180{var options=object.data('options'),properties=object.data('properties');if(!properties.initialized||options.textDisplay!=value)
181{options.textDisplay=value;}
182return(options.textDisplay);},setListMaxWidth:function(object,value)
183{var options=object.data('options'),properties=object.data('properties'),objects=object.data('objects');if((!properties.initialized||options.listMaxWidth!=value)&&value>=0)
184{options.listMaxWidth=value;if(options.listMaxWidth>0)
185{objects.selectorList.css('max-width',options.listMaxWidth+'px');}
186else
187{objects.selectorList.css('max-width','');}}
188return(options.listMaxWidth);},setListMaxHeight:function(object,value)
189{var options=object.data('options'),properties=object.data('properties'),objects=object.data('objects');if((!properties.initialized||options.listMaxHeight!=value)&&value>=0)
190{options.listMaxHeight=value;if(options.listMaxHeight>0)
191{objects.tagList.css('max-height',options.listMaxHeight+'px');}
192else
193{objects.tagList.css('max-height','');}}
194return(options.listMaxHeight);},setServerCallDelay:function(object,value)
195{var options=object.data('options'),properties=object.data('properties');if((!properties.initialized||options.serverCallDelay!=value)&&value>0)
196{options.serverCallDelay=value;}
197return(options.serverCallDelay);},setServerUrl:function(object,value)
198{var options=object.data('options'),properties=object.data('properties');if(!properties.initialized||options.serverUrl!=value)
199{options.serverUrl=value;if(options.autoLoad&&properties.initialized)privateMethods.load(object);}
200return(options.serverUrl);},setMode:function(object,value)
201{var options=object.data('options'),properties=object.data('properties');if((!properties.initialized||options.mode!=value)&&(value=='admin'||value=='public'))
202{options.mode=value;}
203return(options.mode);},setFilter:function(object,value)
204{var options=object.data('options'),properties=object.data('properties');if((!properties.initialized||options.filter!=value)&&(value=='all'||value=='affected'))
205{options.filter=value;}
206return(options.filter);},setValue:function(object,value)
207{var properties=object.data('properties'),objects=object.data('objects');if(value=='clear')
208{properties.tags=[];objects.selectedTagList.children('.ui-tag-selector-selected-tag').remove();privateMethods.cacheClear(object);objects.input.val('');}
209else
210{if(!$.isArray(value))
211{value=[value];}
212for(var i=0;i<value.length;i++)
213{if(value[i].id!=null&&value[i].name!=null)
214{if(privateMethods.removeTag(object,value[i].id)==-1)privateMethods.addTag(object,value[i].id,value[i].name);}
215else
216{privateMethods.removeTag(object,value[i]);}}}
217return(null);},displaySelector:function(object,value)
218{var options=object.data('options'),properties=object.data('properties'),objects=object.data('objects'),popup=false;if(properties.selectorVisible!=value)popup=true;;properties.selectorVisible=value;if(properties.selectorVisible)
219{if(properties.cache.length>0)
220{objects.tagList.css('display','block');if(properties.cache.length<properties.totalTags)
221{objects.textArea.html(options.textFound.replace('%s',properties.totalTags)+', '+
222options.textDisplay.replace('%s',properties.cache.length)).css('display','block');}
223else
224{objects.textArea.html(options.textFound.replace('%s',properties.cache.length)).css('display','block');}}
225else if(options.textStart!='')
226{objects.tagList.css('display','none');objects.textArea.html(options.textStart).css('display','block');}
227else
228{objects.textArea.html('').css('display','none');}
229objects.selectorList.css({display:'block','min-width':objects.selectorList.parent().css('width')});}
230else
231{objects.selectorList.css('display','none');}
232if(options.popup&&popup)object.trigger('tagSelectorPopup',[properties.selectorVisible]);return(properties.selectorVisible);},load:function(object)
233{var options=object.data('options'),properties=object.data('properties'),objects=object.data('objects');privateMethods.clearTimerHandle(object);if(objects.input.val()=='')
234{privateMethods.cacheClear(object);privateMethods.displaySelector(object,true);return(false);}
235$.ajax({type:"POST",url:options.serverUrl,data:{ajaxfct:options.mode+'.tagSelector.get',filter:options.filter,maxTags:options.maximumTagLoaded,ignoreCase:options.ignoreCase,letters:objects.input.val()},async:true,success:function(msg)
236{list=$.parseJSON(msg);properties.totalTags=list.totalNbTags;privateMethods.cacheClear(object);privateMethods.cacheAddItems(object,list.tags);if(options.load)object.trigger('tagSelectorLoad');privateMethods.displaySelector(object,true);},error:function(msg)
237{objects.selectorList.html('Error ! '+msg);}});},cacheClear:function(object)
238{var objects=object.data('objects'),properties=object.data('properties');objects.tagList.children().unbind().remove();properties.cache=[];},cacheAddItems:function(object,listItems)
239{var options=object.data('options'),properties=object.data('properties'),objects=object.data('objects');for(var i=0;i<listItems.length;i++)
240{properties.cache.push({id:listItems[i].id,name:listItems[i].name});if(options.ignoreCase)
241{var re=new RegExp('(.*)('+objects.input.val()+')(.*)','i');}
242else
243{var re=new RegExp('(.*)('+objects.input.val()+')(.*)');}
244tmpResult=re.exec(listItems[i].name);if(tmpResult!=null)
245{tmpResult=tmpResult[1]+'<span class="ui-tag-selector-highlight">'+tmpResult[2]+'</span>'+tmpResult[3];}
246else
247{tmpResult=listItems[i].name;}
248var li=$('<li/>',{html:tmpResult,value:listItems[i].id,'class':'ui-tag-selector-list-item'}).bind('mousedown.tagSelector',{object:object},function(event)
249{privateMethods.addTag(event.data.object,$(this).attr('value'),$(this).text());});objects.tagList.append(li);}},addTag:function(object,id,name)
250{var options=object.data('options'),properties=object.data('properties'),objects=object.data('objects');if(privateMethods.findTagById(object,id)==-1)
251{properties.tags.push({id:id,name:name});var li=$('<li/>',{value:id,html:name,'class':'ui-tag-selector-selected-tag'}).prepend($('<span/>',{html:'x'}).bind('click.tagSelector',{object:object},function(event)
252{privateMethods.removeTag(event.data.object,$(this).parent().attr('value'));}));objects.input.val('').parent().before(li);if(options.add)object.trigger('tagSelectorAdd',id);}},removeTag:function(object,id)
253{var options=object.data('options'),properties=object.data('properties'),objects=object.data('objects');var index=privateMethods.findTagById(object,id);if(index>-1)
254{properties.tags.splice(index,1);objects.selectedTagList.children('[value='+id+']').remove();if(options.remove)object.trigger('tagSelectorRemove',id);}
255return(index);},findTagById:function(object,value)
256{var properties=object.data('properties');for(var i=0;i<properties.tags.length;i++)
257{if(properties.tags[i].id==value)return(i);}
258return(-1);},getFocus:function(object)
259{privateMethods.displaySelector(object,true);},lostFocus:function(object)
260{privateMethods.displaySelector(object,false);},setEventPopup:function(object,value)
261{var options=object.data('options');options.popup=value;object.unbind('tagSelectorPopup');if(value)object.bind('tagSelectorPopup',options.popup);return(options.popup);},setEventAdd:function(object,value)
262{var options=object.data('options');options.add=value;object.unbind('tagSelectorAdd');if(value)object.bind('tagSelectorAdd',options.add);return(options.add);},setEventRemove:function(object,value)
263{var options=object.data('options');options.remove=value;object.unbind('tagSelectorRemove');if(value)object.bind('tagSelectorRemove',options.remove);return(options.remove);},setEventLoad:function(object,value)
264{var options=object.data('options');options.load=value;object.unbind('categorySelectorLoad');if(value)object.bind('tagSelectorLoad',options.load);return(options.load);},clearTimerHandle:function(object)
265{var properties=object.data('properties');if(properties.timerHandle!=null)
266{window.clearInterval(properties.timerHandle);properties.timerHandle=null;}},setTimerHandle:function(object)
267{var properties=object.data('properties'),options=object.data('options');privateMethods.clearTimerHandle(object);properties.timerHandle=window.setInterval(function(){privateMethods.load(object);},options.serverCallDelay);},};$.fn.tagSelector=function(method)
268{if(publicMethods[method])
269{return publicMethods[method].apply(this,Array.prototype.slice.call(arguments,1));}
270else if(typeof method==='object'||!method)
271{return publicMethods.init.apply(this,arguments);}
272else
273{$.error('Method '+method+' does not exist on jQuery.tagSelector');}}})(jQuery);
Note: See TracBrowser for help on using the repository browser.