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: '', }) .result.then(function (imageUrl) { choice.image = imageUrl; }); } }], }; });