mirror of https://github.com/rancher/ui.git
108 lines
2.2 KiB
JavaScript
108 lines
2.2 KiB
JavaScript
import Ember from 'ember';
|
|
|
|
export default Ember.Component.extend({
|
|
// Inputs
|
|
initialMap: null,
|
|
nameLabel: 'Pair',
|
|
keyLabel: 'Key',
|
|
valueLabel: 'Value',
|
|
keyPlaceholder: 'Key',
|
|
valuePlaceholder: 'Value',
|
|
|
|
ary: null,
|
|
|
|
actions: {
|
|
add() {
|
|
this.get('ary').pushObject(Ember.Object.create({key: '', value: ''}));
|
|
Ember.run.next(() => {
|
|
if ( this._state !== 'destroying' )
|
|
{
|
|
this.$('INPUT.key').last()[0].focus();
|
|
}
|
|
});
|
|
},
|
|
|
|
remove(obj) {
|
|
this.get('ary').removeObject(obj);
|
|
},
|
|
|
|
pastedLabels(str, target) {
|
|
var ary = this.get('ary');
|
|
str = str.trim();
|
|
if ( str.indexOf('=') === -1 )
|
|
{
|
|
// Just pasting a key
|
|
$(target).val(str);
|
|
return;
|
|
}
|
|
|
|
var lines = str.split(/\r?\n/);
|
|
lines.forEach((line) => {
|
|
line = line.trim();
|
|
if ( !line )
|
|
{
|
|
return;
|
|
}
|
|
|
|
var idx = line.indexOf('=');
|
|
var key = '';
|
|
var val = '';
|
|
if ( idx > 0 )
|
|
{
|
|
key = line.substr(0,idx).trim();
|
|
val = line.substr(idx+1).trim();
|
|
}
|
|
else
|
|
{
|
|
key = line.trim();
|
|
val = '';
|
|
}
|
|
|
|
var existing = ary.filterBy('key',key)[0];
|
|
if ( existing )
|
|
{
|
|
Ember.set(existing,'value',val);
|
|
}
|
|
else
|
|
{
|
|
ary.pushObject(Ember.Object.create({key: key, value: val}));
|
|
}
|
|
});
|
|
|
|
// Clean up empty user entries
|
|
var toRemove = [];
|
|
ary.forEach((item) => {
|
|
if ( !item.get('key') && !item.get('value') )
|
|
{
|
|
toRemove.push(item);
|
|
}
|
|
});
|
|
|
|
ary.removeObjects(toRemove);
|
|
},
|
|
},
|
|
|
|
didInitAttrs() {
|
|
var ary = [];
|
|
var map = this.get('initialMap')||{};
|
|
Object.keys(map).forEach((key) => {
|
|
ary.push(Ember.Object.create({key: key, value: map[key]}));
|
|
});
|
|
|
|
this.set('ary', ary);
|
|
},
|
|
|
|
asMap: function() {
|
|
var out = {};
|
|
this.get('ary').forEach((row) => {
|
|
out[row.get('key')] = row.get('value');
|
|
});
|
|
|
|
return out;
|
|
}.property('ary.@each.{key,value}'),
|
|
|
|
changed: function() {
|
|
this.sendAction('changed', this.get('asMap'));
|
|
}.observes('asMap'),
|
|
});
|