mirror of https://github.com/rancher/ui.git
84 lines
1.9 KiB
JavaScript
84 lines
1.9 KiB
JavaScript
import Ember from 'ember';
|
|
|
|
export default Ember.Component.extend({
|
|
instance: null,
|
|
availableDrivers: null,
|
|
errors: null,
|
|
|
|
disksArray: Ember.computed.alias('instance.disks'),
|
|
|
|
didInitAttrs() {
|
|
var defaultDriver = this.get('availableDrivers').objectAt(0);
|
|
|
|
var disks = (this.get('instance.disks')||[]).slice();
|
|
disks.forEach((disk) => {
|
|
if ( !Ember.get(disk, 'driver') )
|
|
{
|
|
Ember.set(disk, 'driver', defaultDriver);
|
|
}
|
|
});
|
|
|
|
this.set('instance.disks', disks);
|
|
},
|
|
|
|
driverChoices: function() {
|
|
return this.get('availableDrivers').map((name) => {
|
|
return {label: name, value: name};
|
|
});
|
|
}.property('availableDrivers.[]'),
|
|
|
|
disksChanged: function() {
|
|
var errors = [];
|
|
|
|
this.get('instance.disks').forEach((disk) => {
|
|
var name = (Ember.get(disk,'name')||'').trim().toLowerCase();
|
|
Ember.set(disk, 'name', name);
|
|
|
|
if ( name.match(/([^a-z0-9._-])/) )
|
|
{
|
|
errors.push(`Disk name "${name}" contains invalid character(s). Names can only contain a-z, 0-9, dot, dash, and underscore.`);
|
|
}
|
|
else if ( !name )
|
|
{
|
|
errors.push('A name is required for each disk.');
|
|
}
|
|
});
|
|
|
|
if ( errors.length )
|
|
{
|
|
this.set('errors', errors);
|
|
}
|
|
else
|
|
{
|
|
this.set('errors', null);
|
|
}
|
|
}.observes('instance.disks.@each.name'),
|
|
|
|
hasRoot: function() {
|
|
return this.get('instance.disks').filterBy('root',true).length > 0;
|
|
}.property('instance.disks.@each.root'),
|
|
|
|
actions: {
|
|
addRootDisk() {
|
|
this.get('instance.disks').unshiftObject({
|
|
name: 'root',
|
|
root: true,
|
|
driver: this.get('availableDrivers').objectAt(0)
|
|
});
|
|
},
|
|
|
|
addDisk() {
|
|
this.get('instance.disks').pushObject({
|
|
name: '',
|
|
root: false,
|
|
size: '40g',
|
|
driver: this.get('availableDrivers').objectAt(0)
|
|
});
|
|
},
|
|
|
|
removeDisk(obj) {
|
|
this.get('instance.disks').removeObject(obj);
|
|
},
|
|
},
|
|
});
|