Dns.js 4.63 KB
Ext.define('App.controller.Dns', {
    extend : 'Ext.app.Controller',
    
    init : function() {
    	this.control({
            'toolbar button[action=add]' : {
                click : this.newDns
            },
            'toolbar button[action=delete]' : {
                click : this.delDns
            },
            
            'toolbar button[action=save]' : {
                click : this.saveDns
            },
            
            'toolbar button[action=load]': {
            	click : this.loadDns
            },
            
            'mvvm-DnsView': {
                selectionchange: this.gridSelectionChange,
                viewready: this.onViewReady,
                select: this.onRowSelect
            },
            'mvvm-DnsView': {
                edit: this.onRowEdit,
                beforeedit: this.onRowBeforeEdit
            } 
        });
    },
    
    saveDns:function(btn) {
    	
    
    	 var grid = btn.up('gridpanel');
    	 var store = grid.getStore();
    	 
    	 var records = [];
   		
	        store.each(function(r){
	                 records.push({
	            		  id: r.get("id"),
	       	            ip: r.get("ip")
	            	 });
	          });
	            
	        	
	             var data=Ext.util.JSON.encode(records);
	               
	                 Ext.Ajax.request({
	               	  method: "POST",
	                     url: 'api/dns/update',
	                     headers: {
	                         'Accept': 'application/json',
	                         'Content-Type': 'application/json'
	                     },
	                     params: data,
	                     success: function(response, opts) {
	                    	 
	                    	 var Ok = Ext.JSON.decode(response.responseText);
	                    	 if (Ok) { 
	                    		 Ext.Msg.alert('Success', 'Сохранение выполнено успешно');
	                    	 }else {
	                    		 Ext.Msg.alert('Failure', 'Ошибка сохранения');
	                    	 }
	                    	 
	                     }, failure: function(response, opts) {
	                    	 
	                    	  Ext.Msg.alert('Failure', 'Ошибка сохранения');
	                     }
	                });
    	 
    	 
    	 
    	 
    	 
    	 
    	 
    	 
    	 
    	 
    	 
    	 

        //fires create, update and delete request when calling sync and commit changes in the store when autoSync=false
    	/* 
        store.sync({
            success : function(batch, eOpts){
                Ext.Msg.alert('Status', 'Changes saved successfully.');
            },
            failure : function(record, eOpts){
                Ext.Msg.alert('Status', 'Request failed.');
            }
        });
    	*/
    	
    },
    
    loadDns:function(btn) {
    
    	 var grid = btn.up('gridpanel');
    	 var store = grid.getStore();
    	 store.load();
    	
    },
    
    onRowEdit:function(editor, context, eOpts) { 
  	 
    },
    
    onRowBeforeEdit:function() {
    	
    	
    },
    
    

    newDns : function(btn) {

 
    	 var grid = btn.up('gridpanel');
    	 var store = grid.getStore();
    	 var rowEditing=grid.getPlugin('modelDnsEditPlagin');
        

          rowEditing.cancelEdit();
    	
   	  	  var records = grid.getStore().getRange();
    	
	         var r = Ext.create('App.model.Dns', {
	            id: records.length,
	            ip: '8.8.8.8',
	        });
	         store.insert(0, r);
        
	         
	         var records = [];
	     		
	        store.each(function(r){
	                 records.push({
	            		  id: r.get("id"),
	       	            ip: r.get("ip")
	            	 });
	          });
           		
	     rowEditing.startEdit(0, 0);

    },
    
    delDns:function(btn) { 

    
    	var grid = btn.up('gridpanel');
    	var store=grid.getStore();

 
    	 var selectedRows = grid.getSelectionModel().getSelection();
         
    	   if(selectedRows.length) {
        	
        	 store.remove(selectedRows);
         } else {
             Ext.Msg.alert('Статус', 'Выберите запись');
         }
    },

    gridSelectionChange:function(selModel, selections, eOpts) {
    	
    	/*
    	var grid = selModel.view.ownerCt;
    	 var btnDelete=grid.down('button[itemId=deleteDnsButton]');
    	 
    	 btnDelete.setDisabled(false);
    	
    			console.log(selections[0].data);
            	var json=Ext.util.JSON.encode(selections[0].data);
             	console.log(json);
        */
    },
    onViewReady:function() {
    },
   
    onRowSelect: function(selModel, record, index, opts) {
    	
    	
    }

});