1/** 2 * S�lecteur multiple 3 */ 4var AKMultiSelector = function () { 5 var title=''; 6 var prefix=''; 7 var leftList=null; 8 var rightList=null; 9 var okAction=null; 10 var defaultAction=null; 11 var output=null; 12 var parent = null; 13 14 this.init = function(options) { 15 this.title = options.title; 16 this.prefix = options.prefix; 17 this.okAction = options.okAction; 18 this.defaultAction = options.defaultAction; 19 this.parent = options.parent; 20 this._createContent(); 21 }; 22 23 this._createContent = function() { 24 var content = ''; 25 content +='<div class="modal fade" data-toggle="modal" role="dialog" aria-hidden="true" id="'+this.prefix+'_window">'; 26 content +='<div class="modal-dialog">'; 27 content +='<div class="modal-content">'; 28 content +=' <div class="modal-header">'; 29 content +=' <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>'; 30 content +=' <h4>'+ this.title+'</h4>'; 31 content +=' </div>'; 32 content +=' <div class="modal-body">'; 33 content +=' <table border="0" cellspacing="5" cellpading=""><tr>'; 34 content +=' <td>'; 35 content +=' <select multiple="multiple" style="height:300px; width:200px" id="'+this.prefix+'_left">'; 36 content +=' </select>'; 37 content +=' </td>'; 38 content +=' <td width="10px;"></td>'; 39 content +=' <td style="vertical-align:middle">'; 40 content +=' <button class="btn btn-default" id="'+this.prefix+'_btn_left"><i class="icon-arrow-left"></i></button><br/>'; 41 content +=' <button class="btn btn-default" id="'+this.prefix+'_btn_right"><i class="icon-arrow-right"></i></button>'; 42 content +=' </td>'; 43 content +=' <td width="10px;"></td>'; 44 content +=' <td>'; 45 content +=' <select multiple="multiple" style="height:300px; width:200px" id="'+this.prefix+'_right">'; 46 content +=' </select>'; 47 content +=' </td>'; 48 content +=' <td width="10px;"></td>'; 49 content +=' <td style="vertical-align:middle">'; 50 content +=' <button class="btn btn-default" id="'+this.prefix+'_btn_up"><i class="icon-arrow-up"></i></button><br/>'; 51 content +=' <button class="btn btn-default" id="'+this.prefix+'_btn_down"><i class="icon-arrow-down"></i></button>'; 52 content +=' </td>'; 53 content +=' </tr></table>'; 54 content +=' </div>'; 55 content +=' <div class="modal-footer">'; 56 content +=' <a href="#" class="btn btn-primary" id="'+this.prefix+'_btn_ok">'+ keywords['aktable.ok']+'</a>'; 57 if (this.defaultAction != null) { 58 content +=' <a href="#" class="btn btn-info" id="'+this.prefix+'_btn_default">'+ keywords['aktable.default.value']+'</a>'; 59 } 60 content +=' <a href="#" class="btn btn-default" id="'+this.prefix+'_btn_cancel">'+ keywords['aktable.cancel']+'</a>'; 61 content +=' </div>'; 62 content +=' </div>'; 63 content +=' </div>'; 64 content +='</div>'; 65 $(document.body).append(content); 66 67 var parent = this; 68 69 $('#' + parent.prefix + '_btn_left').click(function() { 70 parent._rightToLeft(); 71 }); 72 $('#' + parent.prefix + '_btn_right').click(function() { 73 parent._leftToRight(); 74 }); 75 $('#' + parent.prefix + '_btn_up').click(function() { 76 parent._up(); 77 }); 78 $('#' + parent.prefix + '_btn_down').click(function() { 79 parent._down(); 80 }); 81 82 $('#' + parent.prefix + '_btn_ok').click(function() { 83 parent.okAction(parent.parent); 84 $('#' + parent.prefix + '_window').modal('hide'); 85 }); 86 if (parent.defaultAction != null) { 87 $('#' + parent.prefix + '_btn_default').click(function() { 88 parent.defaultAction(parent.parent); 89 $('#' + parent.prefix + '_window').modal('hide'); 90 }); 91 } 92 $('#' + parent.prefix + '_btn_cancel').click(function() { 93 $('#' + parent.prefix + '_window').modal('hide'); 94 }); 95 96 }; 97 98 this.open = function(leftList,rightList) { 99 var parent = this; 100 // Efface les contenus des sélections 101 $('#' + this.prefix + '_left').find('option').remove(); 102 $('#' + this.prefix + '_right').find('option').remove(); 103 104 var content = ''; 105 106 $.each(leftList, function (key, currentElement) { 107 content +='<option value="'+ currentElement.key +'">'+ currentElement.value +'</option>'; 108 });
109 110 $('#' + this.prefix + '_left').html(content); 111 // Ajoute le double clic sur les options 112 $('#' + this.prefix + '_left').find('option').each(function(){ 113 $(this).dblclick( function () { 114 parent._leftToRight(); 115 }); 116 }); 117 118 119 content = ''; 120 $.each(rightList, function (key, currentElement) { 121 content +='<option value="'+ currentElement.key +'">'+ currentElement.value +'</option>'; 122 }); 123 124 $('#' + this.prefix + '_right').html(content); 125 // Ajoute le double clic sur les options 126 $('#' + this.prefix + '_right').find('option').each(function(){ 127 $(this).dblclick( function () { 128 parent._rightToLeft(); 129 }); 130 }); 131 132 $('#' + this.prefix + '_window').modal('show'); 133 }; 134 135 this._leftToRight = function() { 136 var parent = this; 137 $('#' + this.prefix +'_left option:selected').each(function(){ 138 $('#' + parent.prefix +'_right').append('<option value="'+ $(this).val() +'">'+ $(this).text() +'</option>'); 139 $('#' + parent.prefix +'_right option:last').dblclick( function () { 140 parent._rightToLeft(); 141 }); 142 $(this).remove(); 143 }); 144 }; 145 146 this._rightToLeft = function() { 147 var parent = this; 148 $('#' + this.prefix +'_right option:selected').each(function(){ 149 $('#' + parent.prefix +'_left').append('<option value="'+ $(this).val() +'">'+ $(this).text() +'</option>'); 150 $('#' + parent.prefix +'_left option:last').dblclick( function () { 151 parent._leftToRight(); 152 }); 153 $(this).remove(); 154 }); 155 }; 156 157 this._up = function() { 158 var selectId = '#' + this.prefix +'_right'; 159 $(selectId + ' option:selected').each( function() { 160 var newPos = $(selectId + ' option').index(this) - 1; 161 if (newPos > -1) { 162 $(selectId + ' option').eq(newPos).before("<option value='"+$(this).val()+"' selected='selected'>"+$(this).text()+"</option>"); 163 $(this).remove(); 164 } 165 }); 166 }; 167 168 this._down = function() { 169 var selectId = '#' + this.prefix +'_right'; 170 var countOptions = $(selectId + ' option').size(); 171 $(selectId + ' option:selected').each( function() { 172 var newPos = $(selectId + ' option').index(this) + 1; 173 if (newPos < countOptions) { 174 $(selectId + ' option').eq(newPos).after("<option value='"+$(this).val()+"' selected='selected'>"+$(this).text()+"</option>"); 175 $(this).remove(); 176 } 177 }); 178 }; 179 180 181 this.getSelection = function() { 182 var result = []; 183 $('#' + this.prefix +'_right option').each( function() { 184 result.push($(this).val()); 185 }); 186 return result; 187 }; 188 189};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.