-
Notifications
You must be signed in to change notification settings - Fork 0
/
ComponentSelectPrograms
74 lines (67 loc) · 1.95 KB
/
ComponentSelectPrograms
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import Ember from 'ember';
export default Ember.Component.extend({
tagName: '',
eventBusService: Ember.inject.service('event-bus'),
recognitionService: Ember.inject.service('business/recognition'),
i18n: Ember.inject.service('i18n'),
defaultValue: '',
fetchingData: false,
validators: {
programValidator: {
'presence': {
message: 'commons.validation_errors.required'
}
},
},
onFetchDataChange: Ember.observer('fetchingData', function () {
if (this.get('fetchingData') && this.get('on-fetch')) {
this.get('on-fetch')({done: false});
} else if (!this.get('fetchingData') && this.get('on-fetch')) {
this.get('on-fetch')({done: true});
}
}),
programChannel: Ember.computed('channel', function () {
return `${this.get('channel')}_program`;
}),
onFetchedPrograms: Ember.observer('programs', function onFetchedPrograms () {
let selectedProgramId = null;
if (this.get('programs').length) {
selectedProgramId = this.get('programs')[0].id;
this.set('defaultValue', this.get('programs')[0].name);
this.selectedProgram();
this.set('isSelectDisabled', false);
} else {
this.set('defaultValue', this.get('i18n').t('analytics.gorecognition.components.programs.label.empty_select'));
this.set('isSelectDisabled', true);
}
this.get('on-select')(selectedProgramId);
}),
selectedProgram () {
this.get('eventBusService').triggerMessage(this.get('programChannel'), {
type: 'setValue',
content: this.get('programs')[0].id
});
},
getPrograms () {
this.set('isLoadingPrograms', true);
this.get('recognitionService').findAllWithPagination()
.then((data = []) => {
this.set('programs', window._.orderBy(data, ['name'], ['asc']));
})
.catch(() => {
this.set('programs', []);
})
.finally(() => {
this.set('isLoadingPrograms', false);
});
},
init () {
this._super(...arguments);
this.getPrograms();
},
actions: {
setProgramValue (programId) {
this.get('on-select')(programId);
},
}
});