(function () { 'use strict'; var streamApp = angular.module('streamApp'); streamApp.directive('dropCrudDirectiveV2', ['groupsService', 'streamService', 'FileUploader', 'apiProxy', '$window', DropCrudDirective]); function DropCrudDirective(groupsService, streamService, FileUploader, apiProxy, $window) { return { restrict: 'E', scope: { prompt: '=', callback: '=', timeline: '=', link: '@', nc: '@' }, templateUrl: 'App/Directives/dropCrudDirective/dropCrudDirectiveV2.html?v=4.1.0c', link: function (scope, element, attrs, tabsCtrl) { scope.model = function () { this.dropId = 0; }; scope.crud = { hour: '', minute: '', content: '', drop: '', date: new Date(), dateType: 0, images: [] }; let timelineIds = []; refreshUploader(); scope.viewers = []; scope.groupsSelected = []; scope.timelineIds = []; scope.refreshTags = function () { groupsService.getGroups().then(function (data) { scope.groups = data.data.activeTags; scope.updateGroups(); }); }; scope.refreshTags(); scope.$watch('link', function () { if (scope.link) { scope.refreshTags(); } }); scope.show = false; scope.showExample = function () { scope.show = true; }; scope.hide = function () { scope.show = false; }; function refreshUploader() { scope.uploader = new FileUploader({ url: apiProxy.getBaseUrl() + '/api/images', formData: [scope.model], headers: apiProxy.getAuthHeader(), name: 'edit-uploader' }); } function finishUploading(uploader, dropId) { uploader.onCompleteAll = function () { scope.cleanupUploader(uploader); streamService.uploadPop(dropId); }; } scope.updateGroups = () => { scope.groupsSelected = scope.groups.filter(g => g.selected); } scope.addDrop = function () { if (scope.timeline) { timelineIds.push(scope.timeline.Id); } $('.upload').show(); if (!scope.sending) { scope.sending = true; let promptId = scope.prompt ? scope.prompt.promptId : 0; streamService.addDrop(scope.crud.content, scope.crud.date || new Date(), scope.crud.dateType, scope.groups.filter(f => f.selected).map(s => s.tagId), promptId, timelineIds ) .then(function (response) { scope.sending = false; $('.upload').hide(); const dropId = scope.model.dropId = response.data.dropId; finishUploading(scope.uploader, dropId); streamService.uploadPush(dropId); if (scope.uploader.queue.length > 0) { scope.uploader.uploadAll(); scope.callback(scope.crud.content, dropId); } else { streamService.getMemory(dropId) .then(function () { scope.endEdit(scope.uploader); setTimeout(function () { streamService.uploadPop(dropId); }, 500) }); } }).catch(response => { scope.sending = false; $('.upload').hide(); scope.error = response.data; }); } }; scope.cancel = function () { $('.upload').hide(); scope.crud.images = []; scope.cleanupUploader(scope.uploader); if (scope.nc) { $window.history.back(); } else { scope.callback(); } }; scope.cleanupUploader = function (uploaderLocal) { uploaderLocal.cancelAll(); if (uploaderLocal.queue.length) { uploaderLocal.clearQueue(); } }; scope.endEdit = function (uploaderLocal) { $('.upload').hide(); scope.crud.images = []; scope.cleanupUploader(uploaderLocal); scope.callback(scope.crud.content, scope.model.dropId); }; } }; }; })();