(function () { 'use strict'; var streamApp = angular.module('streamApp'); streamApp.directive('dropEditDirective', ['groupsService' , 'streamService', 'FileUploader', 'apiProxy', DropCrudDirective]); function DropCrudDirective( groupsService, streamService, FileUploader, apiProxy) { return { restrict: 'E', scope: { crud: '=', isvisible: '=', stream: '=' }, templateUrl: 'App/Directives/dropEditDirective/dropEditDirective.html?v=6.0.0c', link: function (scope, element, attrs, tabsCtrl) { //start uploader scope.model = function () { this.dropId = scope.crud.drop; }; scope.uploading = []; scope.tagsSelected = []; scope.$watch('isvisible', function () { if (scope.isvisible) { scope.refreshTags(); refreshUploader(); /*gtag('event', 'edit_moment');*/ } }); function refreshUploader() { const uploader = scope.uploaderEdit = new FileUploader({ url: apiProxy.getBaseUrl() + '/api/images', formData: [scope.model], headers: apiProxy.getAuthHeader(), name: 'edit-uploader' }); uploader.onCompleteAll = function () { scope.uploading.pop(); scope.cleanupUploader(uploader); scope.refresh(scope.model.dropId); }; } scope.updateDrop = function () { $('.upload').show(); if (!scope.sending) { scope.sending = true; streamService.updateDrop(scope.crud.content, scope.crud.date, scope.crud.dateType, scope.groupsSelected.map(s => s.tagId), scope.crud.drop, scope.crud.movies.filter(m => !m.removed).map(m => m.id), scope.crud.images.filter(i => !i.removed).map(i => i.id)) .then(function (data) { scope.sending = false; scope.isvisible = false; $('.upload').hide(); scope.model.dropId = scope.crud.drop; if (scope.uploaderEdit.queue.length > 0) { scope.uploading.push(true); scope.uploaderEdit.uploadAll(scope.crud.drop); } else { scope.refresh(scope.crud.drop); scope.endEdit(scope.uploaderEdit); } }).catch(response => scope.endEdit(scope.uploaderEdit)); } }; scope.refreshTags = function () { groupsService.getTags().then(function (data) { scope.groups = data.data.activeTags; if (scope.crud.drop) { streamService.updateDropTags(scope.crud.drop).then(function (data) { var d = data.data; if (d) { $.each(d.tags, function (i, v) { let n = scope.groups.find(s => s.tagId === v.tagId); n.selected = true; }); scope.groupsSelected = scope.groups.filter(f => f.selected); } }); } }); }; scope.addGroup = function (group) { scope.groupsSelected = scope.groups.filter(f => f.selected); }; scope.deleteDrop = function () { streamService.deleteDrop(scope.crud.drop) .then(function (data) { if (scope.stream) { const index = scope.stream.findIndex(moment => moment.drop === scope.crud.drop); if (index >= 0) { scope.stream.splice(index, 1); } } scope.isvisible = false; scope.endEdit(scope.uploaderEdit); }); }; scope.cancel = function (dropId) { scope.refresh(dropId); scope.isvisible = false; scope.endEdit(scope.uploaderEdit); }; scope.remove = function (visual) { visual.removed = true; }; scope.restore = function (visual) { visual.removed = false; }; scope.cleanupUploader = function (uploaderLocal) { uploaderLocal.cancelAll(); if (uploaderLocal.queue.length) { uploaderLocal.clearQueue(); } }; scope.refresh = function (dropId) { if (scope.stream) { const index = scope.stream.findIndex(moment => moment.drop === dropId); if (index >= 0) { streamService.getMemory(dropId).then(crud => scope.stream[index] = crud); } } else if (scope.callback) { scope.callback(); } }; scope.endEdit = function (uploaderLocal) { $('.upload').hide(); scope.cleanupUploader(uploaderLocal); }; } }; }; })();