extensions/net.sf.basedb.varsearch/trunk/resources/options.js

Code
Comments
Other
Rev Date Author Line
6157 02 Mar 21 nicklas 1 var VarSearchOptions = function()
6157 02 Mar 21 nicklas 2 {
6157 02 Mar 21 nicklas 3   var options = {};
6157 02 Mar 21 nicklas 4   
6157 02 Mar 21 nicklas 5   // Page initialization
6157 02 Mar 21 nicklas 6   options.initPage = function()
6157 02 Mar 21 nicklas 7   {
6176 19 Mar 21 nicklas 8     var frm = document.forms['options'];
6176 19 Mar 21 nicklas 9     
6176 19 Mar 21 nicklas 10     // Initialise checkboxes and sort order list
6176 19 Mar 21 nicklas 11     var visible = frm.visibleColumns.value.split(',');
6176 19 Mar 21 nicklas 12     for (var i = 0; i < visible.length; i++)
6176 19 Mar 21 nicklas 13     {
6176 19 Mar 21 nicklas 14       var colId = visible[i];
6176 19 Mar 21 nicklas 15       if (frm[colId])
6176 19 Mar 21 nicklas 16       {
6176 19 Mar 21 nicklas 17         frm[colId].checked = true;
6176 19 Mar 21 nicklas 18         frm.sortOrder[frm.sortOrder.length] = new Option(frm[colId].parentNode.textContent, colId);
6176 19 Mar 21 nicklas 19       }
6176 19 Mar 21 nicklas 20     }
6176 19 Mar 21 nicklas 21     
6176 19 Mar 21 nicklas 22     // Add event handlers
6176 19 Mar 21 nicklas 23     for (var i = 0; i < frm.elements.length; i++)
6176 19 Mar 21 nicklas 24     {
6176 19 Mar 21 nicklas 25       if (frm[i].type == 'checkbox') Events.addEventHandler(frm[i], 'change', options.toggleColumn);;
6176 19 Mar 21 nicklas 26     }
6176 19 Mar 21 nicklas 27
6176 19 Mar 21 nicklas 28     Events.addEventHandler('sortOrder', 'dblclick', options.hideColumn);
6176 19 Mar 21 nicklas 29     Buttons.addClickHandler('moveUp', options.moveVisibleUpOrDown);
6176 19 Mar 21 nicklas 30     Buttons.addClickHandler('moveDown', options.moveVisibleUpOrDown);
6176 19 Mar 21 nicklas 31
6157 02 Mar 21 nicklas 32     Buttons.addClickHandler('close', App.closeWindow);
6157 02 Mar 21 nicklas 33     Buttons.addClickHandler('btnOk', options.saveOptions);
6157 02 Mar 21 nicklas 34   }
6157 02 Mar 21 nicklas 35   
6157 02 Mar 21 nicklas 36   options.saveOptions = function()
6157 02 Mar 21 nicklas 37   {
6157 02 Mar 21 nicklas 38     // At least one option should be selected
6157 02 Mar 21 nicklas 39     var frm = document.forms['options'];
6157 02 Mar 21 nicklas 40     var visible = [];
6176 19 Mar 21 nicklas 41     for (var i = 0; i < frm.sortOrder.length; i++)
6157 02 Mar 21 nicklas 42     {
6176 19 Mar 21 nicklas 43       visible[visible.length] = frm.sortOrder[i].value;
6157 02 Mar 21 nicklas 44     }
6157 02 Mar 21 nicklas 45     
6157 02 Mar 21 nicklas 46     if (visible.length == 0)
6157 02 Mar 21 nicklas 47     {
6176 19 Mar 21 nicklas 48       Forms.showNotification('LINKS', 'At least one column must be selected');
6157 02 Mar 21 nicklas 49       return;
6157 02 Mar 21 nicklas 50     }
6157 02 Mar 21 nicklas 51
6157 02 Mar 21 nicklas 52     frm.visibleColumns.value = visible.join(',');
6157 02 Mar 21 nicklas 53     frm.submit();
6157 02 Mar 21 nicklas 54   }
6157 02 Mar 21 nicklas 55
6176 19 Mar 21 nicklas 56   options.toggleColumn = function(event)
6176 19 Mar 21 nicklas 57   {
6176 19 Mar 21 nicklas 58     var checkbox = event.currentTarget;
6176 19 Mar 21 nicklas 59     var frm = document.forms['options'];
6176 19 Mar 21 nicklas 60     if (checkbox.checked)
6176 19 Mar 21 nicklas 61     {
6176 19 Mar 21 nicklas 62       var option = new Option(checkbox.parentNode.textContent, checkbox.id, true, true);
6176 19 Mar 21 nicklas 63       var atIndex = frm.sortOrder.length;
6176 19 Mar 21 nicklas 64       for (var i = atIndex-1; i>=0; i--)
6176 19 Mar 21 nicklas 65       {
6176 19 Mar 21 nicklas 66         if (frm.sortOrder[i].selected) 
6176 19 Mar 21 nicklas 67         {
6176 19 Mar 21 nicklas 68           atIndex = i+1;
6176 19 Mar 21 nicklas 69           break;
6176 19 Mar 21 nicklas 70         }
6176 19 Mar 21 nicklas 71       }
6176 19 Mar 21 nicklas 72       
6176 19 Mar 21 nicklas 73       if (atIndex == 0) atIndex = frm.sortOrder.length;
6176 19 Mar 21 nicklas 74       Forms.addListOption(frm.sortOrder, atIndex, option);
6176 19 Mar 21 nicklas 75     }
6176 19 Mar 21 nicklas 76     else
6176 19 Mar 21 nicklas 77     {
6176 19 Mar 21 nicklas 78       for (var i = 0; i < frm.sortOrder.length; i++)
6176 19 Mar 21 nicklas 79       {
6176 19 Mar 21 nicklas 80         if (frm.sortOrder[i].value == checkbox.id)
6176 19 Mar 21 nicklas 81         {
6176 19 Mar 21 nicklas 82           sortOrder[i] = null;
6176 19 Mar 21 nicklas 83           break;
6176 19 Mar 21 nicklas 84         }
6176 19 Mar 21 nicklas 85       }
6176 19 Mar 21 nicklas 86     }
6176 19 Mar 21 nicklas 87   }
6176 19 Mar 21 nicklas 88   
6176 19 Mar 21 nicklas 89   options.moveVisibleUpOrDown = function(event)
6176 19 Mar 21 nicklas 90   {
6176 19 Mar 21 nicklas 91     var moveDown = Data.int(event.currentTarget, 'down');
6176 19 Mar 21 nicklas 92     Forms.moveListOptions('sortOrder', moveDown);
6176 19 Mar 21 nicklas 93   }
6176 19 Mar 21 nicklas 94   
6176 19 Mar 21 nicklas 95   options.hideColumn = function()
6176 19 Mar 21 nicklas 96   {
6176 19 Mar 21 nicklas 97
6176 19 Mar 21 nicklas 98     var frm = document.forms['options'];
6176 19 Mar 21 nicklas 99     for (var i = 0; i < frm.sortOrder.length; i++)
6176 19 Mar 21 nicklas 100     {
6176 19 Mar 21 nicklas 101       var option = frm.sortOrder[i];
6176 19 Mar 21 nicklas 102       if (option.selected)
6176 19 Mar 21 nicklas 103       {
6176 19 Mar 21 nicklas 104         frm.sortOrder[i] = null;
6176 19 Mar 21 nicklas 105         frm[option.value].checked = false;
6176 19 Mar 21 nicklas 106         i--;
6176 19 Mar 21 nicklas 107       }
6176 19 Mar 21 nicklas 108     }
6176 19 Mar 21 nicklas 109   }
6176 19 Mar 21 nicklas 110
6157 02 Mar 21 nicklas 111   return options;
6157 02 Mar 21 nicklas 112 }();
6157 02 Mar 21 nicklas 113
6157 02 Mar 21 nicklas 114 Doc.onLoad(VarSearchOptions.initPage);
6157 02 Mar 21 nicklas 115