frPollEditorModal.js
2.76 KB
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import '../common/directives/imageUploader';
angular.module('footyroom')
.directive('frPollEditorModal', function () {
return {
templateUrl: '/views/ng/poll/pollEditorModal.html?2',
scope: {
pollId: '@',
dismiss: '=',
close: '=',
},
controllerAs: 'ctrl',
bindToController: true,
controller: ['$http', '$uibModal', function ($http, $uibModal) {
var ctrl = this;
var isSaving;
ctrl.$onInit = $onInit;
ctrl.submit = submit;
ctrl.addChoice = addChoice;
ctrl.removeChoice = removeChoice;
ctrl.chooseImage = chooseImage;
function $onInit() {
if (ctrl.pollId) {
fetchPoll();
} else {
ctrl.poll = {
choices: [{}, {}],
};
}
}
function submit() {
if (isSaving) {
return;
}
isSaving = true;
save()
.then(function (response) {
if (response.data.id) {
ctrl.poll.id = response.data.id;
}
ctrl.close(ctrl.poll);
})
.catch(function (response) {
ctrl.errors = response.data.errors;
})
.finally(function () {
isSaving = false;
});
}
function fetchPoll() {
$http.get('/polls/' + ctrl.pollId)
.then(function (response) {
ctrl.poll = response.data;
});
}
function save() {
if (ctrl.pollId) {
return update();
}
return create();
}
function create() {
return $http.post('/polls', {
choices: ctrl.poll.choices,
});
}
function update() {
return $http.put('/polls/' + ctrl.pollId, {
choices: ctrl.poll.choices,
});
}
function addChoice() {
ctrl.poll.choices.push({});
}
function removeChoice(index) {
ctrl.poll.choices.splice(index, 1);
}
function chooseImage(choice) {
$uibModal.open({
template: '<image-uploader></image-uploader>',
})
.result.then(function (imageUrl) {
choice.image = imageUrl;
});
}
}],
};
});