Introduction
Introduction Statistics Contact Development Disclaimer Help
jquery.table.coffee - warvox - VoIP based wardialing tool, forked from rapid7/w…
git clone git://jay.scot/warvox
Log
Files
Refs
README
---
jquery.table.coffee (8790B)
---
1 # table plugin
2 #
3 # Adds sorting and other dynamic functions to tables.
4 jQuery ($) ->
5 $.table =
6 defaults:
7 searchable: true
8 searchInputHint: 'Search'
9 sortableClass: 'sortable'
10 setFilteringDelay: false
11 datatableOptions:
12 "bStateSave": true
13 "oLanguage":
14 "sSearch": ""
15 "sProcessing": "Loading..."
16 "fnDrawCallback": ->
17 $.table.controlBar.buttons.enable()
18 "sDom": '<"control-bar"f><"list-table-header clearfix"l>t<"list-…
19 "sPaginationType": "full_numbers"
20 "fnInitComplete": (oSettings, json) ->
21 # if old search term saved, display it
22 searchTerm = getParameterByName 'search'
23 # FIX ME
24 $searchBox = $('#search', $(this).parents().eq(3))
25
26 if searchTerm
27 $searchBox.val searchTerm
28 $searchBox.focus()
29
30 # insert the cancel button to the left of the search box
31 $searchBox.before('<a class="cancel-search" href="#"></a>')
32 $a = $('.cancel-search')
33 table = this
34 searchTerm = $searchBox.val()
35 searchBox = $searchBox.eq(0)
36 $a.hide() if (!searchTerm || searchTerm.length < 1)
37
38 $a.click (e) -> # called when red X is clicked
39 $(this).hide()
40 table.fnFilter ''
41 $(searchBox).blur() # blur to trigger filler text
42 e.preventDefault() # Other control code can be fo…
43 # bind to fnFilter() calls
44 # do this by saving fnFilter to fnFilterOld & overriding
45 table['fnFilterOld'] = table.fnFilter
46 table.fnFilter = (str) ->
47 $a = jQuery('.cancel-search')
48 if str && str.length > 0
49 $a.show()
50 else
51 $a.hide()
52 table.fnFilterOld(str)
53
54 window.setTimeout ( =>
55 this.fnFilter(searchTerm)
56 ), 0
57
58 $('.button a.search').click() if searchTerm
59
60 analysisTabOptions:
61 "aLengthMenu": [[10, 50, 100, 250, 500, -1], [10, 50, 100, …
62 "iDisplayLength": 10
63 "bProcessing": true
64 "bServerSide": true
65 "bSortMulti": false
66
67 checkboxes:
68 bind: ->
69 # TODO: This and any other 'table.list' selectors that appear in…
70 # code will trigger all sortable tables visible on the page.
71 $("table.list thead tr th input[type='checkbox']").live 'click',…
72 $checkboxes = $("input[type='checkbox']", "table.list tbody tr…
73 if $(this).attr 'checked'
74 $checkboxes.attr 'checked', true
75 else
76 $checkboxes.attr 'checked', false
77
78 controlBar:
79 buttons:
80 # Disables/enables buttons based on number of checkboxes selecte…
81 # and the class name.
82 enable: ->
83 numChecked = $("tbody tr td input[type='checkbox']", "table.li…
84 disable = ($button) ->
85 $button.addClass 'disabled'
86 $button.children('input').attr 'disabled', 'disabled'
87 enable = ($button) ->
88 $button.removeClass 'disabled'
89 $button.children('input').removeAttr 'disabled'
90
91 switch numChecked
92 when 0
93 disable $('.btn.single', '.control-bar')
94 disable $('.btn.multiple','.control-bar')
95 disable $('.btn.any', '.control-bar')
96 when 1
97 enable $('.btn.single', '.control-bar')
98 disable $('.btn.multiple','.control-bar')
99 enable $('.btn.any', '.control-bar')
100 else
101 disable $('.btn.single', '.control-bar')
102 enable $('.btn.multiple','.control-bar')
103 enable $('.btn.any', '.control-bar')
104
105 show:
106 bind: ->
107 # Show button
108 $showButton = $('span.button a.show', '.control-bar')
109 if $showButton.length
110 $showButton.click (e) ->
111 unless $showButton.parent('span').hasClass 'disabled'
112 $("table.list tbody tr td input[type='checkbox']").fil…
113 hostHref = $("table.list tbody tr td input[type='check…
114 .filter(':checked')
115 .parents('tr')
116 .children('td:nth-child(2)')
117 .children('a')
118 .attr('href')
119 window.location = hostHref
120 e.preventDefault()
121
122 edit:
123 bind: ->
124 # Settings button
125 $editButton = $('span.button a.edit', '.control-bar')
126 if $editButton.length
127 $editButton.click (e) ->
128 unless $editButton.parent('span').hasClass 'disabled'
129 $("table.list tbody tr td input[type='checkbox']").fil…
130 hostHref = $("table.list tbody tr td input[type='check…
131 .filter(':checked')
132 .parents('tr')
133 .children('td:nth-child(2)')
134 .children('span.settings-url')
135 .html()
136 window.location = hostHref
137 e.preventDefault()
138
139 bind: (options) ->
140 # Move the buttons into the control bar.
141 $('.control-bar').prepend($('.control-bar-items').html())
142 $('.control-bar-items').remove()
143
144 # Move the control bar to a new location, if specified.
145 if !!options.controlBarLocation
146 $('.control-bar').appendTo(options.controlBarLocation)
147
148 this.enable()
149 this.show.bind()
150 this.edit.bind()
151
152 bind: (options) ->
153 this.buttons.bind(options)
154 # Redraw the buttons with each checkbox click.
155 $("input[type='checkbox']", "table.list").live 'click', (e) =>
156 this.buttons.enable()
157
158 searchField:
159 # Add an input hint to the search field.
160 addInputHint: (options, $table) ->
161 if options.searchable
162 # if the searchbar is in a control bar, expand selector scope …
163 searchScope = $table.parents().eq(3) if !!options.controlBarLo…
164 searchScope ||= $table.parents().eq(2) # otherwise limit scop…
165 $searchInput = $('.dataTables_filter input', searchScope)
166 # We'll need this id set for the checkbox functions.
167 $searchInput.attr 'id', 'search'
168 $searchInput.attr 'placeholder', options.searchInputHint
169 # $searchInput.inputHint()
170
171 bind: ($table, options) ->
172 $tbody = $table.children('tbody')
173 dataTable = null
174 # Turn the table into a DataTable.
175 if $table.hasClass options.sortableClass
176 # Don't mess with the search input if there's no control bar.
177 unless $('.control-bar-items').length
178 options.datatableOptions["sDom"] = '<"list-table-header clearf…
179
180 datatableOptions = options.datatableOptions
181 # If we're loading under the Analysis tab, then load the standard
182 # Analysis tab options.
183 if options.analysisTab
184 $.extend(datatableOptions, options.analysisTabOptions)
185 options.setFilteringDelay = true
186 options.controlBarLocation = $('.analysis-control-bar')
187
188 dataTable = $table.dataTable(datatableOptions)
189 $table.data('dataTableObject', dataTable)
190 dataTable.fnSetFilteringDelay(500) if options.setFilteringDelay
191
192 # If we're loading under the Analysis tab, then load the standar…
193 if options.analysisTab
194 # Gray out the table during loads.
195 $("##{$table.attr('id')}_processing").watch 'visibility', ->
196 if $(this).css('visibility') == 'visible'
197 $table.css opacity: 0.6
198 else
199 $table.css opacity: 1
200
201 # Checking a host_ids checkbox should also check the invisible…
202 $table.find('tbody tr td input[type=checkbox].hosts').live 'ch…
203 $(this).siblings('input[type=checkbox]').attr('checked', $(t…
204
205 this.checkboxes.bind()
206 this.controlBar.bind(options)
207 # Add an input hint to the search field.
208 this.searchField.addInputHint(options, $table)
209 # Keep width at 100%.
210 $table.css('width', '100%')
211
212 $.fn.table = (options) ->
213 settings = $.extend true, {}, $.table.defaults, options
214 $table = $(this)
215 return this.each -> $.table.bind($table, settings)
You are viewing proxied material from jay.scot. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.