Merge branch 'master' of mjesec.ffzg.hr:/git/MojoFacets
[MojoFacets.git] / templates / all_checkboxes.html.ep
index d18fb32..4fcbeff 100644 (file)
@@ -1,9 +1,115 @@
+<span id=column_selection>
+<a id="all"  href="#">all</a>
+<a id="toggle" href="#">toggle</a>
+<a id="none" href="#">none</a>
+
+<label for=filter_regex>
+<input  type=text name=filter_regex title="enter regex to filter values" placeholder="regex">
+<a id="included" href="#" style="display:none">included</a>
+<a id="excluded" href="#" style="display:none">excluded</a>
+</label>
+</span>
+
+
 <script type="text/javascript">
-function all_checkboxes(checked) {
-    $("input[type='checkbox']:not([disabled='disabled'])").attr('checked', checked);
+
+$(document).ready( function(){
+
+$('a#all').click( function(){
+    $("input[type='checkbox']:not([disabled='disabled'])").attr('checked', true);
+        $('#checked-count').text( $('#facet-count').text() );
+});
+
+$('a#none').click( function(){
+    $("input[type='checkbox']:not([disabled='disabled'])").attr('checked', false);
+       $('#checked-count').text( 0 );
+});
+
+$('a#toggle').click( function(){
+       var count = 0;
+    $("input[type='checkbox']:not([disabled='disabled'])").each( function() {
+               this.checked = ! this.checked;
+               if ( this.checked ) count++;
+       });
+       $('#checked-count').text( count );
+});
+
+function update_checked_count(full) {
+       var count = $('#checked-count');
+       var nr = -1;
+       if ( full ) {
+               nr = $("label input[type='checkbox']:checked").length;
+       } else {
+               nr = parseInt( count.text() );
+               if ( this.checked ) {
+                       nr++;
+               } else {
+                       nr--;
+               }
+       }
+       count.text( nr );
 }
-</script>
 
-<a href="#" onClick="all_checkboxes(true); return false;">all</a>
-<a href="#" onClick="all_checkboxes(false); return false;">none</a>
+$("input[type='checkbox']").bind( 'click', update_checked_count );
+
+var toggle_checkbox = function() {
+               this.checked = ! this.checked;
+};
+
+$('a#included').click( function(){
+    $("label.included input[type='checkbox']:not([disabled='disabled'])").each( toggle_checkbox );
+       update_checked_count(1);
+});
+
+$('a#excluded').click( function(){
+    $("label.excluded input[type='checkbox']:not([disabled='disabled'])").each( toggle_checkbox );
+       update_checked_count(1);
+});
+
+
+// regex for column names
+
+var apply_regex = function(e) {
+       var user_regex = this.value;
+       console.debug( this, e, user_regex );
+
+       if ( user_regex == '' ) return false;
+
+       var r = new RegExp( user_regex,'i');
+       var included = 0;
+       var excluded = 0;
+    $("input[type='checkbox']:not([disabled='disabled'])").each( function(i,element){
+               if ( r.test( v ) ) {
+                       $(this).parent().removeClass('excluded').addClass('included');
+                       included++;
+               } else {
+                       $(this).parent().removeClass('included').addClass('excluded');
+                       excluded++;
+               }
+       });
+
+       $('a#included').text(included).show();
+       $('a#excluded').text(excluded).show();
+       return false;
+};
+
+$('input[name=filter_regex]')
+.focusout( apply_regex )
+.keypress( function(e) {
+       // disable enter
+       var code = e.keyCode ? e.keyCode : e.which;
+       //console.debug('key code',code);
+       if ( code == 13 ) {
+               return apply_regex(e);
+       } else {
+               return true;
+       }
+});
+
+
+update_checked_count(1);
+
+}); // document.ready
+
+</script>