ac67713170444232267f4c9414a894c05d23420c
[MojoFacets.git] / templates / all_checkboxes.html.ep
1 <span id=column_selection>
2 <a id="all"  href="#">all</a>
3 <a id="toggle" href="#">toggle</a>
4 <a id="none" href="#">none</a>
5
6 <label for=filter_regex>
7 <input  type=text name=filter_regex title="enter regex to filter values" placeholder="regex">
8 <a id="included" href="#" style="display:none">included</a>
9 <a id="excluded" href="#" style="display:none">excluded</a>
10 </label>
11 </span>
12
13
14 <script type="text/javascript">
15
16 $(document).ready( function(){
17
18 $('a#all').click( function(){
19     $("input[type='checkbox']:not([disabled='disabled'])").attr('checked', true);
20          $('#checked-count').text( $('#facet-count').text() );
21 });
22
23 $('a#none').click( function(){
24     $("input[type='checkbox']:not([disabled='disabled'])").attr('checked', false);
25         $('#checked-count').text( 0 );
26 });
27
28 $('a#toggle').click( function(){
29         var count = 0;
30     $("input[type='checkbox']:not([disabled='disabled'])").each( function() {
31                 this.checked = ! this.checked;
32                 if ( this.checked ) count++;
33         });
34         $('#checked-count').text( count );
35 });
36
37 function update_checked_count(full) {
38         var count = $('#checked-count');
39         var nr = -1;
40         if ( full ) {
41                 nr = $("label input[type='checkbox']:checked").length;
42         } else {
43                 nr = parseInt( count.text() );
44                 if ( this.checked ) {
45                         nr++;
46                 } else {
47                         nr--;
48                 }
49         }
50         count.text( nr );
51 }
52
53 $("input[type='checkbox']").bind( 'click', update_checked_count );
54
55 var toggle_checkbox = function() {
56                 this.checked = ! this.checked;
57 };
58
59 $('a#included').click( function(){
60     $("label.included input[type='checkbox']:not([disabled='disabled'])").each( toggle_checkbox );
61         update_checked_count(1);
62 });
63
64 $('a#excluded').click( function(){
65     $("label.excluded input[type='checkbox']:not([disabled='disabled'])").each( toggle_checkbox );
66         update_checked_count(1);
67 });
68
69
70 // regex for column names
71
72 var filter_regex = function(user_regex) {
73
74         if ( user_regex == '' ) return false;
75
76         var r = new RegExp( user_regex,'i');
77         var included = 0;
78         var excluded = 0;
79     $("input[type='checkbox']:not([disabled='disabled'])").each( function(i,element){
80                 if ( r.test( this.value ) ) {
81                         $(this).parent().removeClass('excluded').addClass('included');
82                         included++;
83                 } else {
84                         $(this).parent().removeClass('included').addClass('excluded');
85                         excluded++;
86                 }
87         });
88
89         $('a#included').text(included).show();
90         $('a#excluded').text(excluded).show();
91
92         console.debug('filter_regex',included,excluded);
93 };
94
95 $('input[name=filter_regex]')
96 .focusout( function(e) { filter_regex( this.value ) } )
97 .keypress( function(e) {
98         // disable enter
99         var code = e.keyCode ? e.keyCode : e.which;
100         //console.debug('key code',code);
101         if ( code == 13 ) {
102                 filter_regex( this.value );
103                 return false;
104         } else {
105                 return true;
106         }
107 });
108
109
110 update_checked_count(1);
111
112 }); // document.ready
113
114 </script>
115