> Dominik Csapak <d.csa...@proxmox.com> hat am 11. Juni 2019 um 16:58 
> geschrieben:
> 
> 
> high level looks ok, some comments inline
> 
> On 6/11/19 2:04 PM, Tim Marx wrote:
> > Signed-off-by: Tim Marx <t.m...@proxmox.com>
> > ---
> >   Makefile                |   1 +
> >   form/NetworkSelector.js | 121 
> > ++++++++++++++++++++++++++++++++++++++++++++++++
> >   2 files changed, 122 insertions(+)
> >   create mode 100644 form/NetworkSelector.js
> > 
> > diff --git a/Makefile b/Makefile
> > index b9dc8b9..d12a4da 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -34,6 +34,7 @@ JSSRC=                                    \
> >     form/ComboGrid.js               \
> >     form/RRDTypeSelector.js         \
> >     form/BondModeSelector.js        \
> > +   form/NetworkSelector.js         \
> >     button/Button.js                \
> >     button/HelpButton.js            \
> >     grid/ObjectGrid.js              \
> > diff --git a/form/NetworkSelector.js b/form/NetworkSelector.js
> > new file mode 100644
> > index 0000000..fa512e7
> > --- /dev/null
> > +++ b/form/NetworkSelector.js
> > @@ -0,0 +1,121 @@
> > +Ext.define('Proxmox.form.NetworkSelectorController', {
> > +    extend: 'Ext.app.ViewController',
> > +    alias: 'controller.proxmoxNetworkSelectorController',
> > +
> > +    init: function(view) {
> > +   var me = this;
> > +
> > +   if (!view.nodename) {
> > +       throw "missing custom view config: nodename";
> > +   }
> > +   view.getStore().getProxy().setUrl('/api2/json/nodes/'+ view.nodename + 
> > '/network');
> > +    }
> > +});
> 
> any reason why you define it outside of the NetworkSelector (like we do 
> everywhere else with xclass: 'Ext.app.ViewController' ?)
> 

Not a specific one, it's just a little bit more readable for me.

> > +
> > +Ext.define('Proxmox.data.NetworkSelector', {
> > +    extend: 'Ext.data.Model',
> > +    fields: [
> > +   {name: 'active'},
> > +   {name: 'cidr'},
> > +   {name: 'cidr6'},
> > +   {name: 'comments'},
> > +   {name: 'iface'},
> > +   {name: 'slaves'},
> > +   {name: 'type'}
> > +    ]
> > +});
> > +
> > +Ext.define('Proxmox.form.NetworkSelector', {
> > +    extend: 'Proxmox.form.ComboGrid',
> > +    alias: 'widget.proxmoxNetworkSelector',
> > +
> > +    nodename: 'localhost',
> > +    controller: 'proxmoxNetworkSelectorController',
> > +    setNodename: function(nodename) {
> > +   this.nodename = nodename;
> > +   var networkSelectorStore = this.getStore();
> > +   networkSelectorStore.removeAll();
> > +   // because of manual local copy of data for ip4/6
> > +   this.getPicker().refresh();
> > +   if (networkSelectorStore && typeof networkSelectorStore.getProxy === 
> > 'function') {
> > +       networkSelectorStore.getProxy().setUrl('/api2/json/nodes/'+ 
> > nodename + '/network');
> > +       networkSelectorStore.load();
> > +   }
> > +    },
> > +    // set default value to empty array, else it inits it with
> > +    // null and after the store load it is an empty array,
> > +    // triggering dirtychange
> > +    value: [],
> > +    valueField: 'cidr',
> > +    displayField: 'cidr',
> > +    store: {
> > +   autoLoad: true,
> > +   model: 'Proxmox.data.NetworkSelector',
> > +   proxy: {
> > +       type: 'proxmox'
> > +   },
> > +   sorters: [
> > +       {
> > +           property : 'iface',
> > +           direction: 'ASC'
> > +       }
> > +   ],
> > +   filters: [
> > +         function(item) {
> > +           return item.data.cidr;
> we should not ignore interfaces with ipv6 only
> 

Had a convert logic in place already, but than switched to copy each record if 
they have both defined. The convert got lost on the way. Will send a v4 with 
the adaptions.

> > +       }
> > +   ],
> > +   listeners: {
> > +       load: function(records, successfull) {
> 
> this signature is wrong, the load event has function(store, records, 
> success,...)
> 
> it works by accident since the this is the store, the store has an 
> 'each' method  if there are no records it does not call your function

Yeah you right, I somehow mixed the load function and load event from the ext 
docs. Thanks for that^^

> 
> > +           var store = this;
> > +           if(successfull) {
> > +               records.each(function(record) {
> > +                   if(record.data.cidr && record.data.cidr6) {
> > +                       var tempcopy = record.copy(null);
> > +                       tempcopy.data.cidr = tempcopy.data.cidr6;
> > +                       tempcopy.data.comment = tempcopy.data.comments6;
> > +                       store.add(tempcopy);
> > +                   }
> > +               });
> > +           }
> > +       }
> > +   }
> > +    },
> > +    listConfig: {
> > +   width: 600,
> > +   columns: [
> > +       {
> > +           header: gettext('Interface'),
> > +           sortable: true,
> > +           flex:1,
> > +           dataIndex: 'iface'
> > +       },
> > +       {
> > +           header: gettext('Active'),
> > +           sortable: true,
> > +           flex:1,
> > +           dataIndex: 'active'
> > +       },
> > +       {
> > +
> > +           header: gettext('CIDR'),
> > +           dataIndex: 'cidr',
> > +           sortable: true,
> > +           hideable: false,
> > +           flex:1
> > +       },
> 
> same here regarding ignoring ipv6 only, if we have an interface with 
> ipv6 only, it does not show up better would be probably a 'calculated 
> field' that returns
> cidr || cidr6
> and show that

same as above
> 
> > +       {
> > +           header: gettext('Type'),
> > +           sortable: true,
> > +           flex:1,
> > +           dataIndex: 'type'
> > +       },
> > +       {
> > +           header: gettext('Comment'),
> > +           sortable: true,
> > +           flex:1,
> > +           dataIndex: 'comments'
> > +       }
> > +   ]
> > +    }
> > +});
> > 
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to