89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| $(document).on('turbolinks:load', function() {
 | |
|   var $modal = $('.modal.admin-replace-mirror-modal');
 | |
|   if ($modal.length > 0) {
 | |
|     var $form = $modal.find('form.admin-replace-mirror-form');
 | |
|     var $mirrorIdInput = $modal.find('.modal-body input[name="mirror_id"]');
 | |
|     var $mirrorSelect = $modal.find('.new-mirror-select');
 | |
| 
 | |
|     var setMirror = function(id, name){
 | |
|       $mirrorIdInput.val(id);
 | |
|       $form.find('.mirror-id-container').html(id);
 | |
|       $form.find('.mirror-name-container').html(name);
 | |
|     }
 | |
| 
 | |
|     $form.validate({
 | |
|       errorElement: 'span',
 | |
|       errorClass: 'danger text-danger',
 | |
|       rules: {
 | |
|         new_mirror_id: {
 | |
|           required: true
 | |
|         },
 | |
|       },
 | |
|       messages: {
 | |
|         new_mirror_id: {
 | |
|           required: '请选择新镜像'
 | |
|         }
 | |
|       }
 | |
|     });
 | |
| 
 | |
|     // modal ready fire
 | |
|     $modal.on('show.bs.modal', function (event) {
 | |
|       var $link = $(event.relatedTarget);
 | |
| 
 | |
|       var mirrorId = $link.data('id');
 | |
|       var mirrorName = $link.data('name');
 | |
| 
 | |
|       setMirror(mirrorId, mirrorName);
 | |
|       $mirrorSelect.select2('val', ' ');
 | |
|     });
 | |
|     $modal.on('hide.bs.modal', function () {
 | |
|       setMirror('', '');
 | |
|       $mirrorSelect.select2('val', ' ');
 | |
|       $('#new_mirror_id-error').remove();
 | |
|     });
 | |
| 
 | |
|     $mirrorSelect.select2({
 | |
|       theme: 'bootstrap4',
 | |
|       placeholder: '输入要合并的镜像名',
 | |
|       minimumInputLength: 1,
 | |
|       ajax: {
 | |
|         url: '/admins/mirror_repositories/for_select',
 | |
|         dataType: 'json',
 | |
|         data: function(params){
 | |
|           return { keyword: params.term };
 | |
|         },
 | |
|         processResults: function(data){
 | |
|           return { results: data.mirrors }
 | |
|         }
 | |
|       },
 | |
|       templateResult: function (item) {
 | |
|         if(!item.id || item.id === '') return item.text;
 | |
|         return item.name;
 | |
|       },
 | |
|       templateSelection: function(item){
 | |
|         if (item.id) {
 | |
|           $('#new_mirror_id-error').remove();
 | |
|           $('#new_mirror_id').val(item.id);
 | |
|         }
 | |
|         return item.name || item.text;
 | |
|       }
 | |
|     });
 | |
| 
 | |
|     $modal.on('click', '.submit-btn', function(){
 | |
|       $form.find('.error').html('');
 | |
| 
 | |
|       if ($form.valid()) {
 | |
|         var url = $form.data('url');
 | |
| 
 | |
|         $.ajax({
 | |
|           method: 'POST',
 | |
|           dataType: 'script',
 | |
|           url: url,
 | |
|           data: $form.serialize(),
 | |
|         }).done(function(){
 | |
|           $modal.modal('hide');
 | |
|         });
 | |
|       }
 | |
|     });
 | |
|   }
 | |
| }); |