tag_field 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b21a97904ca53b94cfc82b72a5c6f05563c88224
4
- data.tar.gz: cf427a8504c8eb300be6865f263311b125f66a03
3
+ metadata.gz: b67a8f20f5f0e5d663956206da40ee56c7977bcd
4
+ data.tar.gz: f30e52de9d73a35ab7119133a3a00794c5b8eb39
5
5
  SHA512:
6
- metadata.gz: 0a6c12346a0d7f2c3b601cf4ddaa09f57b5b07e914d8ad5c5e88be782bfa1cd73104e1f8b2d23ed0c413141bb21b7cb21f53727c2d5c0b05680dcfd0d3688577
7
- data.tar.gz: c1f717f19998f19f6aaf9327c07bab41466e65aa2699b6d292efeea810e499808bea748f895ab96ad4a4dadfcf202812464107b95f54c45cd6a5c85ca8420a2d
6
+ metadata.gz: 28f440ca982c0fb0fea8ad59848a909b8e815c1a4a82bdfb069104483cebbc17d9a21edad6e5c5f08783f4aa9db58ecc5e66bf08da45288f65abf5e7168d86cb
7
+ data.tar.gz: cd0d19bf293865ec06232b815001b6220f8f51f9b9776f1998f83240748bc7b59a535a84cef791dec83a287c90894e7cd9370d7179e91723d743737e1dac5b5b
@@ -0,0 +1,107 @@
1
+ $('document').ready(function() {
2
+ $("textarea[data-is-tag-field], input[data-is-tag-field]").tagField()
3
+ })
4
+
5
+ (function( $ ){
6
+
7
+ $.fn.tagField = function(options) {
8
+ var settings = $.extend( {
9
+ 'remote' : '/tickers/search',
10
+ 'searchFieldClass' : 'ticker search'
11
+ }, options);
12
+
13
+ function fieldDisplay(item) {
14
+ var selectString;
15
+ if (item.private) {
16
+ selectString = item.symbol
17
+ } else {
18
+ selectString = "[" + item.symbol + "] " + item.name
19
+ }
20
+ return selectString
21
+ }
22
+
23
+
24
+ this.each(function() {
25
+ var originalField = $(this)
26
+
27
+ var originalValue = originalField.val()
28
+
29
+
30
+ originalField.addClass('original')
31
+
32
+
33
+ originalField.wrap(function() {
34
+ return '<div class="ticker-canvas '+ settings['searchFieldClass']+'" />';
35
+ });
36
+ var canvas = originalField.closest('.ticker-canvas')
37
+ originalField.hide()
38
+ originalField.after("<input class='string optional ticker search' type='text'>")
39
+ var ghostSearch = originalField.next('input.ticker.search')
40
+ ghostSearch
41
+ .css("outline", "none")
42
+ .css("border", "none")
43
+ .css("width", "auto")
44
+
45
+ var originalValues = originalValue.split(', ')
46
+ window.test = originalValues
47
+ for (value in originalValues) {
48
+
49
+ if (originalValues[value] != "" && (typeof originalValues[value]) == "string" )
50
+ ghostSearch.before("<span class='label label-info'><div class='value'>" + originalValues[value] + "</div><a href='#' class='delete'>x</a></span>")
51
+ }
52
+
53
+
54
+
55
+ ghostSearch.keydown(function(e){
56
+ if (e.keyCode == 8 && ghostSearch.val() == "") {
57
+ ghostSearch.siblings('.label').last().remove()
58
+ originalField.val( originalField.siblings('.label').map(function() {
59
+ return $(this).find('.value').html()
60
+ }).get().join(', ') )
61
+ }
62
+
63
+ if (e.keyCode == 13) {
64
+ e.preventDefault()
65
+ }
66
+ })
67
+
68
+ $('.ticker-canvas a.delete').live('click', function(e) {
69
+ $(this).closest('span').remove()
70
+ originalField.val( originalField.siblings('.label').map(function(){
71
+ return $(this).find('.value').html()
72
+ }).get().join(', ') )
73
+ })
74
+
75
+ ghostSearch.autocomplete({
76
+ minLength: 1,
77
+ source: function(request, response) {
78
+ lastXhr = $.getJSON(settings['remote'], request, function(data, status, xhr) {
79
+ if (xhr === lastXhr)
80
+ response(data);
81
+ })
82
+ },
83
+ select: function(event, ui) {
84
+ if ( -1 == $.inArray(ui.item.symbol, originalField.val().split(', ')) ) {
85
+ ghostSearch.before("<span class='label label-info'><div class='value'>" + fieldDisplay(ui.item) + "</div><a href='#' class='delete'>x</a></span>")
86
+ var originalFieldValues = []
87
+ originalField.siblings('.label').each(function(index, sibling){
88
+ var siblingVal = $(this).find('.value').html()
89
+ if ( -1 == $.inArray(siblingVal, originalFieldValues) ) {
90
+ originalFieldValues.push(siblingVal)
91
+ }
92
+ })
93
+ originalField.val( originalFieldValues.join(', ') )
94
+ }
95
+ ghostSearch.val('')
96
+ return false;
97
+ }
98
+ }).data('autocomplete')._renderItem = function( ul, item ) {
99
+ return $( "<li></li>" )
100
+ .data("item.autocomplete", item )
101
+ .append( "<a href='#'>" + fieldDisplay(item) + "</a>" )
102
+ .appendTo( ul );
103
+ };
104
+ });
105
+
106
+ };
107
+ })( jQuery );
@@ -1,3 +1,3 @@
1
1
  module TagField
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tag_field
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Jaeger
@@ -45,6 +45,7 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
+ - app/assets/javascripts/tag_field/tagField.js
48
49
  - lib/tag_field/version.rb
49
50
  - lib/tag_field.rb
50
51
  - lib/tasks/tag_field_tasks.rake