UNPKG

acha-framework

Version:

is a modular framework on both client (angular.js) and server (node.js) side, it provides security, orm, ioc, obfuscation and ...

125 lines 4.12 kB
(function ($, angular, underscore, window, document, undefined) { 'use strict'; angular.module('frontend.directives').factory('filePickerService', [ 'apiService', function (apiService) { return function (path, files, data, callbacks) { }; } ]).directive('filePicker', [ 'translateService', 'filePickerService', function (translateService, filePickerService) { return { restrict: 'E', replace: true, scope: { tag: '<?', disabled: '=?', visible: '=?', cssClass: '=?', backend: '=?', backendData: '=?', backendKey: '=?', maxSize: '=?', accept: '=?', pattern: '=?', multiple: '=?', preview: '=?', onSuccess: '<?', onError: '<?', onProgress: '<?', model: '=?' }, templateUrl: '/templates/framework/directives/file-picker/template.html', link: function (scope, element, attr) { scope.vm = { uploading: false, uploadPercent: 0 }; scope.vm.init = function () { if (angular.isUndefined(scope.disabled)) { scope.disabled = false; } if (angular.isUndefined(scope.multiple)) { scope.multiple = false; } if (angular.isUndefined(scope.preview)) { scope.preview = true; } if (angular.isUndefined(scope.visible)) { scope.visible = true; } if (angular.isUndefined(scope.cssClass)) { scope.cssClass = ''; } if (angular.isUndefined(scope.pattern)) { scope.pattern = ''; } if (angular.isUndefined(scope.accept)) { scope.accept = ''; } if (angular.isUndefined(scope.backendKey)) { scope.backendKey = '$uploadedFiles'; } if (angular.isUndefined(scope.model)) { scope.model = []; } if (angular.isUndefined(scope.maxSize)) { scope.maxSize = '20MB'; } scope.vm.bind(); }; scope.vm.onSelect = function ($files) { var files = {}; files[scope.backendKey] = $files; if (scope.backend) { scope.vm.uploading = true; scope.vm.uploadPercent = 0; filePickerService(scope.backend, files, scope.backendData, { onSuccess: function (op) { scope.vm.uploading = false; if (scope.onSuccess) { scope.onSuccess(op, scope.tag); } }, onError: function (err) { scope.vm.uploading = false; if (scope.onError) { scope.onError(err, scope.tag); } }, onProgress: function (percent, fileName, file) { scope.vm.uploadPercent = percent; if (scope.onProgress) { scope.onProgress(percent, fileName, file, scope.tag); } } }); } }; scope.vm.remove = function (item) { if (scope.disabled) return; scope.model.del(item); }; scope.vm.onChange = function ($files, $file, $newFiles, $duplicateFiles, $invalidFiles, $event) { scope.model = $files; }; scope.vm.bind = function () { }; scope.vm.getText = function () { if (!scope.model || !scope.model.length) { return translateService('general.noFileSelected'); } if (!scope.multiple) { return scope.model[0].name; } return scope.model.pluck('name').join(', '); }; scope.vm.init(); } }; } ]); }(jQuery, angular, _, window, document));