cronapp-framework-js
Version:
Javascript library for CronApp's projects
127 lines (109 loc) • 4.12 kB
JavaScript
(function($app) {
angular.module('upload.services', []).service('UploadService', function($http, $compile, $modal, Upload) {
var body = $('body');
var $scope = angular.element(body.get(0)).scope();
this.ensureProps = data => {
!data.filter || (data.filter = data.filter.replace(/\s/g, ''));
return data;
};
this.upload = function(data) {
let treatedProps = this.ensureProps(data);
$modal.open({
templateUrl : 'node_modules/cronapp-framework-js/components/upload/upload.html',
controller : 'UploadController',
resolve : {
data : function() {
return treatedProps;
}
}
});
}.bind(this);
});
function strFormat(str) {
var args = [].slice.call(arguments, 1),
i = 0;
return str.replace(/%s/g, function() {
return args[i++];
});
}
angular.module('custom.controllers').controller('UploadController',
function($scope, $http, $translate, $stateParams, $location, $http, $modalInstance, data) {
app.registerEventsCronapi($scope, $translate);
// save state params into scope
$scope.params = $stateParams;
$scope.$http = $http;
// Query string params
var queryStringParams = $location.search();
for (var key in queryStringParams) {
if (queryStringParams.hasOwnProperty(key)) {
$scope.params[key] = queryStringParams[key];
}
}
$scope.files = [];
$scope.uploading = false;
$scope.uploaded = true;
$scope.progress = 0;
$scope.data = data;
$scope.message = $translate.instant('Upload.oneFile');
if (data.multiple == "true") {
$scope.message = $translate.instant('Upload.multipleFile');
}
if (data.description) {
$scope.message = data.description;
}
$scope.safeApply = safeApply;
$scope.uploadFile = function(files) {
var pageScope = $scope.data.scope;
var uploadUrl = 'api/cronapi/upload/'+data.id;
var formData = new FormData();
if (files.length == 0) {
this.Notification.error(strFormat($translate.instant('Upload.errorValidation'), data.maxSize, data.filter));
} else {
for (var i=0;i<files.length;i++) {
formData.append("file", files[i]);
console.log(files[i].$valid);
}
var _u = JSON.parse(localStorage.getItem('_u'));
let headerValues = window.isUsingCookie() ? {
'Content-Type' : undefined
} : {
'Content-Type' : undefined,
'X-AUTH-TOKEN' : (_u ?_u.token : '')
};
this.$promise = $http({
method: 'POST',
url: (window.hostApp || "") + uploadUrl,
data: formData,
headers: headerValues,
onProgress: function(event) {
this.safeApply(function() {
if (event.lengthComputable) {
var complete = (event.loaded / event.total * 100 | 0);
$scope.progress = complete;
}
$scope.uploading = true;
console.log(complete);
});
}.bind(this)
}).then(function(data, status, headers, config) {
pageScope.cronapi.evalInContext(JSON.stringify(data)).then((result) => {
$scope.uploaded = true;
$scope.uploading = false;
$scope.close();
});
}.bind(this)).catch(function(data, status, errorThrown) {
let error = data.error;
if (data && data.data) {
error = data.data.error;
}
this.Notification.error(error);
$scope.uploading = false;
$scope.close();
}.bind(this));
}
}.bind($scope);
$scope.close = function() {
$modalInstance.dismiss('cancel');
};
});
}(app));