Advertisement
Guest User

inv/apps/interface/js/L1Panel.js

a guest
Jul 27th, 2012
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //---------------------------------------------------------------------
  2. // inv.interface L1 Panel
  3. //---------------------------------------------------------------------
  4. // Copyright (C) 2007-2012 The NOC Project
  5. // See LICENSE for details
  6. //---------------------------------------------------------------------
  7. console.debug("Defining NOC.inv.interface.L1Panel");
  8.  
  9. Ext.define("NOC.inv.interface.L1Panel", {
  10.     extend: "Ext.panel.Panel",
  11.     uses: [],
  12.     title: "Physical",
  13.     closable: false,
  14.     layout: "fit",
  15.     rowClassField: "row_class",
  16.  
  17.     /*/ returns an array of selected records
  18.     var selectedBanners = grid.getSelectionModel().getSelections();
  19.  
  20.     Ext.iterate(selectedBanners, function(banner, index) {
  21.     // push the row indexes into your array
  22.     selectedRowIndexes.push(grid.getStore().indexOf(banner));
  23.     });
  24.     */
  25.  
  26.     initComponent: function() {
  27.         var me = this;
  28.  
  29.         Ext.apply(me, {
  30.             items: [
  31.                 {
  32.                     xtype: "gridpanel",
  33.                     border: false,                                                                                                                          
  34.                     autoScroll: true,                                                                                                                        
  35.                     stateful: true,                                                                                                                          
  36.                     stateId: "inv.interface-l1-grid",                                                                                                        
  37.                     store: me.store,                                                                                                                        
  38.                     columns: [                                                                                                                              
  39.                         {                                                                                                                                    
  40.                             xtype: "actioncolumn",                                                                                                          
  41.                             width: 25,                                                                                                                      
  42.                             items: [                                                                                                                        
  43.                                 {                                                                                                                            
  44.                                     tooltip: "Link/Unlink",                                                                                                  
  45.                                     scope: me,                                                                                                              
  46.                                     handler: me.onLink,                                                                                                      
  47.                                     disabled: !me.app.hasPermission("link"),                                                                                
  48.                                     getClass: function(col, meta, r) {                                                                                      
  49.                                         if(r.get("link")) {                                                                                                  
  50.                                             return "icon_disconnect";                                                                                        
  51.                                         } else {                                                                                                            
  52.                                             return "icon_connect";                                                                                          
  53.                                         }
  54.                                     }
  55.                                 }
  56.                             ]
  57.                         },
  58.                         {
  59.                             text: "Name",
  60.                             dataIndex: "name"
  61.                         },
  62.                         {
  63.                             text: "MAC",
  64.                             dataIndex: "mac"
  65.                         },
  66.                         {
  67.                             text: "LAG",
  68.                             dataIndex: "lag"
  69.                         },
  70.                         {
  71.                             text: "Link",
  72.                             dataIndex: "link",
  73.                             renderer: function(v) {
  74.                                 if(v) {
  75.                                     return v.label;
  76.                                 } else {
  77.                                     return "";
  78.                                 }
  79.                             }
  80.                         },
  81.                         {
  82.                             text: "Profile",
  83.                             dataIndex: "profile",
  84.                             renderer: NOC.render.ClickableLookup("profile"),
  85.                             onClick: me.onChangeProfile
  86.                         },
  87.                         {
  88.                             text: "Description",
  89.                             dataIndex: "description",
  90.                             flex: 1
  91.                         },
  92.                         {
  93.                             text: "ifIndex",
  94.                             dataIndex: "ifindex",
  95.                             hidden: true
  96.                         }
  97.                     ],
  98.                     viewConfig: {
  99.                         getRowClass: Ext.bind(me.getRowClass, me),
  100.                         listeners: {
  101.                             scope: me,
  102.                             cellclick: me.onCellClick
  103.                         }
  104.                     }
  105.                 }
  106.  
  107.  
  108.             ]
  109.         });
  110.         me.callParent();
  111.         /* test
  112.         var L1Grid = Ext.ComponentMgr.get("inv.interface-l1-grid");//GridName as specified in the gridPanel id
  113.         var gridrecords = L1Grid.getSelectionModel().getSelected();
  114.             if (gridrecords ==undefined){
  115.                 alert('no good');
  116.                 }
  117.             else{
  118.                 alert(gridrecords.id);
  119.                 }
  120.         var rowsIndexs = L1Grid.getStore().getAt(gridrecords[1]);
  121.             dockedItems: [{
  122.             xtype: 'toolbar',
  123.             dock: 'bottom',
  124.             ui: 'footer',
  125.             onClick: me.onChangesProfiles,
  126.             layout: {
  127.                 pack: 'center'
  128.             },
  129.             items: [{
  130.                 minWidth: 80,
  131.                 text: 'Change Profile'
  132.             },]
  133.         },]
  134.         */
  135.     },
  136.     // test
  137.     var L1Grid = Ext.ComponentMgr.get("inv.interface-l1-grid");//GridName as specified in the gridPanel id
  138.     var gridrecords = L1Grid.getSelectionModel().getSelected();
  139.         if (gridrecords ==undefined){
  140.             alert('no good');
  141.             }
  142.         else{
  143.             alert(gridrecords.id);
  144.             }
  145.     var rowsIndexs = L1Grid.getStore().getAt(gridrecords[1]);
  146.         dockedItems: [{
  147.         xtype: 'toolbar',
  148.         dock: 'bottom',
  149.         ui: 'footer',
  150.         onClick: me.onChangesProfiles,
  151.         layout: {
  152.             pack: 'center'
  153.         },
  154.         items: [{
  155.             minWidth: 80,
  156.             text: 'Change Profile'
  157.         },]
  158.     },]
  159.     //
  160.  
  161.     //
  162.     onLink: function(grid, rowIndex, colIndex) {
  163.         var me = this,
  164.             r = me.store.getAt(rowIndex),
  165.             link = r.get("link");
  166.         if(link) {
  167.             me.unlinkInterface(r.get("id"), r.get("name"));
  168.         } else {
  169.             me.linkInterface(r.get("id"), r.get("name"));
  170.         }
  171.     },
  172.     //
  173.     unlinkInterface: function(ifaceId, ifaceName) {
  174.         var me = this;
  175.         Ext.Msg.show({
  176.             title: "Unlink interface",
  177.             msg: Ext.String.format("Do you wish to unlink interface {0}?", ifaceName),
  178.             buttons: Ext.Msg.YESNO,
  179.             icon: Ext.window.MessageBox.QUESTION,
  180.             modal: true,
  181.             fn: function(button) {
  182.                 if (button == "yes") {
  183.                     Ext.Ajax.request({
  184.                         url: "/inv/interface/unlink/" + ifaceId + "/",
  185.                         method: "POST",
  186.                         scope: me,
  187.                         success: function(response) {
  188.                             var me = this,
  189.                                 data = Ext.decode(response.responseText);
  190.                             if(data.status) {
  191.                                 me.app.loadInterfaces();
  192.                             } else {
  193.                                 NOC.error(data.message);
  194.                             }
  195.                         }
  196.                     });
  197.                 }
  198.             }
  199.         });
  200.     },
  201.     //
  202.     linkInterface: function(ifaceId, ifaceName) {
  203.         var me = this;
  204.         Ext.create("NOC.inv.interface.LinkForm", {
  205.             title: Ext.String.format("Link {0} with", ifaceName),
  206.             app: me.app,
  207.             ifaceId: ifaceId
  208.         });
  209.     },
  210.     //
  211.     onCellClick: function(view, cell, cellIndex, record, row,
  212.                           rowIndex, e) {
  213.         var me = this;
  214.         if(e.target.tagName == "A") {
  215.             var header = view.panel.headerCt.getHeaderAtIndex(cellIndex);
  216.             if(header.onClick) {
  217.                 header.onClick.apply(me, [record]);
  218.             }
  219.         }
  220.     },
  221.     //
  222.     onChangeProfile: function(record) {
  223.         var me = this;
  224.         Ext.create("NOC.inv.interface.ChangeInterfaceProfileForm", {
  225.             app: me,
  226.             record: record
  227.         });
  228.     },
  229.  
  230.     // test
  231.     onChangesProfiles: function(rowIndex) {
  232.         var me = this;
  233.         Ext.create("NOC.inv.interface.ChangesInterfacesProfileForm", {
  234.             app: me,
  235.             record: rowIndex
  236.         });
  237.     },
  238.     //
  239.  
  240.     // Return Grid's row classes
  241.     getRowClass: function(record, index, params, store) {
  242.         var me = this;
  243.         if(me.rowClassField) {
  244.             var c = record.get(me.rowClassField);
  245.             if(c) {
  246.                 return c;
  247.             } else {
  248.                 return "";
  249.             }
  250.         } else {
  251.             return "";
  252.         }
  253.     }
  254. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement