smart_tag 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/smart_tag/version.rb
CHANGED
@@ -1 +1,4 @@
|
|
1
|
-
(function(
|
1
|
+
(function(g){g(document).ready(function(){function h(d){function j(a,c){for(var b=a.length-1;0<=b;b--)if(a[b]==c)return!0;return!1}function f(a){a=a.replace(/\ +/g,"");a=a.replace(/[ ]/g,"");return a.replace(/[\r\n]/g,"")}function m(a){for(var c=[],b=a.length-1;0<=b;b--){var d=f(g(a[b]).text());j(c,d)||c.push(d)}return c}function n(a,c){j(a,f(c.text()))&&c.attr("selected",!0)}function h(a,c){j(a,f(c.text()))||c.attr("selected",!1)}function q(a,c){for(var b=d.children("option"),e=b.length-1;0<=e;e--)c(a,
|
2
|
+
g(b[e]))}var p=m(d.children("option")),k=m(d.children("option:selected")),e=g('<ul class="'+d.attr("id")+'_smart_tag"></ul>');d.before(e);e.css({"margin-left":"0px",width:"488px"});e.tagit({availableTags:p,afterTagAdded:function(a,c){var b=c.tagLabel;p=m(d.children("option"));if(j(p,b))q(e.tagit("assignedTags"),n);else{var f=d.attr("controller");if(f){var h=d.attr("action")?d.attr("action"):"create",l=d.attr("param")?d.attr("param"):"title",h="/"+(d.attr("controllers")?d.attr("controllers"):f+"s")+
|
3
|
+
"/"+h,k={};k[f+"["+l+"]"]=b;g.ajax({url:h,dataType:"json",type:"POST",data:k,success:function(a){a?d.prepend('<option selected="selected" value="'+a.id+'">'+b+"</option>"):console.log("josn is null")}})}else console.log("select's controller param is null")}},afterTagRemoved:function(){q(e.tagit("assignedTags"),h)}});for(var l=k.length-1;0<=l;l--)e.tagit("createTag",k[l]);d.change(function(){for(var a=m(d.children("option:selected")),c=e.tagit("assignedTags"),b=a.length-1;0<=b;b--)j(c,a[b])||e.tagit("createTag",
|
4
|
+
a[b]);for(b=c.length-1;0<=b;b--)j(a,c[b])||e.tagit("removeTagByLabel",c[b])})}for(var n=g(".smart_tag"),f=n.length-1;0<=f;f--)h(g(n[f]))})})(window.jQuery);
|
@@ -140,14 +140,18 @@
|
|
140
140
|
this.options.autocomplete.source = function(search, showChoices) {
|
141
141
|
var filter = search.term.toLowerCase();
|
142
142
|
var choices = $.grep(this.options.availableTags, function(element) {
|
143
|
+
//console.log(element.toLowerCase().indexOf(filter));
|
143
144
|
// match all
|
144
|
-
return (element.toLowerCase().indexOf(filter)
|
145
|
+
return (element.toLowerCase().indexOf(filter) >= 0);
|
145
146
|
});
|
146
147
|
if (!this.options.allowDuplicates) {
|
147
148
|
choices = this._subtractArray(choices, this.assignedTags());
|
148
149
|
}
|
150
|
+
choices.sort(function(a, b) {
|
151
|
+
return a.toLowerCase().indexOf(filter) - b.toLowerCase().indexOf(filter);
|
152
|
+
});
|
149
153
|
|
150
|
-
showChoices(choices
|
154
|
+
showChoices(choices);
|
151
155
|
};
|
152
156
|
}
|
153
157
|
|
@@ -1 +1,16 @@
|
|
1
|
-
(function(
|
1
|
+
(function(b){b.widget("ui.tagit",{options:{allowDuplicates:!1,caseSensitive:!0,fieldName:"tags",placeholderText:null,readOnly:!1,removeConfirmation:!1,tagLimit:null,availableTags:[],autocomplete:{},showAutocompleteOnFocus:!1,allowSpaces:!1,singleField:!1,singleFieldDelimiter:",",singleFieldNode:null,animate:!0,tabIndex:null,beforeTagAdded:null,afterTagAdded:null,beforeTagRemoved:null,afterTagRemoved:null,onTagClicked:null,onTagLimitExceeded:null,onTagAdded:null,onTagRemoved:null,tagSource:null},_create:function(){var a=
|
2
|
+
this;this.element.is("input")?(this.tagList=b("<ul></ul>").insertAfter(this.element),this.options.singleField=!0,this.options.singleFieldNode=this.element,this.element.css("display","none")):this.tagList=this.element.find("ul, ol").andSelf().last();this.tagInput=b('<input type="text" />').addClass("ui-widget-content");this.options.readOnly&&this.tagInput.attr("disabled","disabled");this.options.tabIndex&&this.tagInput.attr("tabindex",this.options.tabIndex);this.options.placeholderText&&this.tagInput.attr("placeholder",
|
3
|
+
this.options.placeholderText);this.options.autocomplete.source||(this.options.autocomplete.source=function(a,d){var c=a.term.toLowerCase(),e=b.grep(this.options.availableTags,function(a){return 0<=a.toLowerCase().indexOf(c)});this.options.allowDuplicates||(e=this._subtractArray(e,this.assignedTags()));e.sort(function(a,b){return a.toLowerCase().indexOf(c)-b.toLowerCase().indexOf(c)});d(e)});this.options.showAutocompleteOnFocus&&(this.tagInput.focus(function(){a._showAutocomplete()}),"undefined"===
|
4
|
+
typeof this.options.autocomplete.minLength&&(this.options.autocomplete.minLength=0));b.isFunction(this.options.autocomplete.source)&&(this.options.autocomplete.source=b.proxy(this.options.autocomplete.source,this));b.isFunction(this.options.tagSource)&&(this.options.tagSource=b.proxy(this.options.tagSource,this));this.tagList.addClass("tagit").addClass("ui-widget ui-widget-content ui-corner-all").append(b('<li class="tagit-new"></li>').append(this.tagInput)).click(function(d){var c=b(d.target);c.hasClass("tagit-label")?
|
5
|
+
(c=c.closest(".tagit-choice"),c.hasClass("removed")||a._trigger("onTagClicked",d,{tag:c,tagLabel:a.tagLabel(c)})):a.tagInput.focus()});var c=!1;if(this.options.singleField)if(this.options.singleFieldNode){var d=b(this.options.singleFieldNode),e=d.val().split(this.options.singleFieldDelimiter);d.val("");b.each(e,function(b,d){a.createTag(d,null,!0);c=!0})}else this.options.singleFieldNode=b('<input type="hidden" style="display:none;" value="" name="'+this.options.fieldName+'" />'),this.tagList.after(this.options.singleFieldNode);
|
6
|
+
c||this.tagList.children("li").each(function(){b(this).hasClass("tagit-new")||(a.createTag(b(this).text(),b(this).attr("class"),!0),b(this).remove())});this.tagInput.keydown(function(c){if(c.which==b.ui.keyCode.BACKSPACE&&""===a.tagInput.val()){var d=a._lastTag();!a.options.removeConfirmation||d.hasClass("remove")?a.removeTag(d):a.options.removeConfirmation&&d.addClass("remove ui-state-highlight")}else a.options.removeConfirmation&&a._lastTag().removeClass("remove ui-state-highlight");if(c.which===
|
7
|
+
b.ui.keyCode.COMMA||c.which===b.ui.keyCode.ENTER||c.which==b.ui.keyCode.TAB&&""!==a.tagInput.val()||c.which==b.ui.keyCode.SPACE&&!0!==a.options.allowSpaces&&('"'!=b.trim(a.tagInput.val()).replace(/^s*/,"").charAt(0)||'"'==b.trim(a.tagInput.val()).charAt(0)&&'"'==b.trim(a.tagInput.val()).charAt(b.trim(a.tagInput.val()).length-1)&&0!==b.trim(a.tagInput.val()).length-1))c.which===b.ui.keyCode.ENTER&&""===a.tagInput.val()||c.preventDefault(),a.tagInput.data("autocomplete-open")||a.createTag(a._cleanedInput())}).blur(function(){a.tagInput.data("autocomplete-open")||
|
8
|
+
a.createTag(a._cleanedInput())});if(this.options.availableTags||this.options.tagSource||this.options.autocomplete.source)d={select:function(b,c){a.createTag(c.item.value);return!1}},b.extend(d,this.options.autocomplete),d.source=this.options.tagSource||d.source,this.tagInput.autocomplete(d).bind("autocompleteopen",function(){a.tagInput.data("autocomplete-open",!0)}).bind("autocompleteclose",function(){a.tagInput.data("autocomplete-open",!1)})},_cleanedInput:function(){return b.trim(this.tagInput.val().replace(/^"(.*)"$/,
|
9
|
+
"$1"))},_lastTag:function(){return this.tagList.find(".tagit-choice:last:not(.removed)")},_tags:function(){return this.tagList.find(".tagit-choice:not(.removed)")},assignedTags:function(){var a=this,c=[];this.options.singleField?(c=b(this.options.singleFieldNode).val().split(this.options.singleFieldDelimiter),""===c[0]&&(c=[])):this._tags().each(function(){c.push(a.tagLabel(this))});return c},_updateSingleTagsField:function(a){b(this.options.singleFieldNode).val(a.join(this.options.singleFieldDelimiter)).trigger("change")},
|
10
|
+
_subtractArray:function(a,c){for(var d=[],e=0;e<a.length;e++)-1==b.inArray(a[e],c)&&d.push(a[e]);return d},tagLabel:function(a){return this.options.singleField?b(a).find(".tagit-label:first").text():b(a).find("input:first").val()},_showAutocomplete:function(){this.tagInput.autocomplete("search","")},_findTagByLabel:function(a){var c=this,d=null;this._tags().each(function(){if(c._formatStr(a)==c._formatStr(c.tagLabel(this)))return d=b(this),!1});return d},_isNew:function(a){return!this._findTagByLabel(a)},
|
11
|
+
_formatStr:function(a){return this.options.caseSensitive?a:b.trim(a.toLowerCase())},_effectExists:function(a){return Boolean(b.effects&&(b.effects[a]||b.effects.effect&&b.effects.effect[a]))},createTag:function(a,c,d){var e=this;a=b.trim(a);this.options.preprocessTag&&(a=this.options.preprocessTag(a));if(""===a)return!1;if(!this.options.allowDuplicates&&!this._isNew(a))return a=this._findTagByLabel(a),!1!==this._trigger("onTagExists",null,{existingTag:a,duringInitialization:d})&&this._effectExists("highlight")&&
|
12
|
+
a.effect("highlight"),!1;if(this.options.tagLimit&&this._tags().length>=this.options.tagLimit)return this._trigger("onTagLimitExceeded",null,{duringInitialization:d}),!1;var g=b(this.options.onTagClicked?'<a class="tagit-label"></a>':'<span class="tagit-label"></span>').text(a),f=b("<li></li>").addClass("tagit-choice ui-widget-content ui-state-default ui-corner-all").addClass(c).append(g);this.options.readOnly?f.addClass("tagit-choice-read-only"):(f.addClass("tagit-choice-editable"),c=b("<span></span>").addClass("ui-icon ui-icon-close"),
|
13
|
+
c=b('<a><span class="text-icon">\u00d7</span></a>').addClass("tagit-close").append(c).click(function(){e.removeTag(f)}),f.append(c));this.options.singleField||(g=g.html(),f.append('<input type="hidden" style="display:none;" value="'+g+'" name="'+this.options.fieldName+'" />'));!1!==this._trigger("beforeTagAdded",null,{tag:f,tagLabel:this.tagLabel(f),duringInitialization:d})&&(this.options.singleField&&(g=this.assignedTags(),g.push(a),this._updateSingleTagsField(g)),this._trigger("onTagAdded",null,
|
14
|
+
f),this.tagInput.val(""),this.tagInput.parent().before(f),this._trigger("afterTagAdded",null,{tag:f,tagLabel:this.tagLabel(f),duringInitialization:d}),this.options.showAutocompleteOnFocus&&!d&&setTimeout(function(){e._showAutocomplete()},0))},removeTag:function(a,c){c="undefined"===typeof c?this.options.animate:c;a=b(a);this._trigger("onTagRemoved",null,a);if(!1!==this._trigger("beforeTagRemoved",null,{tag:a,tagLabel:this.tagLabel(a)})){if(this.options.singleField){var d=this.assignedTags(),e=this.tagLabel(a),
|
15
|
+
d=b.grep(d,function(a){return a!=e});this._updateSingleTagsField(d)}if(c){a.addClass("removed");var d=this._effectExists("blind")?["blind",{direction:"horizontal"},"fast"]:["fast"],g=this;d.push(function(){a.remove();g._trigger("afterTagRemoved",null,{tag:a,tagLabel:g.tagLabel(a)})});a.fadeOut("fast").hide.apply(a,d).dequeue()}else a.remove(),this._trigger("afterTagRemoved",null,{tag:a,tagLabel:this.tagLabel(a)})}},removeTagByLabel:function(a,b){var d=this._findTagByLabel(a);if(!d)throw"No such tag exists with the name '"+
|
16
|
+
a+"'";this.removeTag(d,b)},removeAll:function(){var a=this;this._tags().each(function(b,d){a.removeTag(d,!1)})}})})(jQuery);
|