UNPKG

graojs

Version:

graoJS - A full stack MVC NodeJS framework

161 lines (145 loc) 4.57 kB
graoJS = angular.module('graoJS', ['ngResource', 'ui.bootstrap', 'ui.select2']); graoJS.factory('fileService', function() { var files = []; return files; }) graoJS.directive('fileModel', ['$parse', 'fileService', function ($parse, fileService) { return { restrict: 'A', link: function(scope, element) { element.bind('change', function(){ scope.$apply(function(){ if (element[0].files != undefined) { fileService.push(element[0].files[0]); } }); }); } }; }]) graoJS.service('fileUpload', ['$http', function ($http) { this.uploadFileToUrl = function(file, uploadUrl){ var fd = new FormData(); fd.append('file', file); return $http.post(uploadUrl, fd, { transformRequest: angular.identity, headers: {'Content-Type': undefined} }); } }]); function clearObject(obj){ for (var o in obj) { if (isNaN(parseInt(o))) { clearObject(obj[o]); if(typeof obj[o] == 'string') obj[o] = ''; else if(typeof obj[o] == 'number' || typeof obj[o] == 'boolean') obj[o] = null; else if(obj[o] instanceof Array) obj[o] = new Array(); } } } function uniqueTrue(field, newItem, itemArray){ if(newItem[field] == true) { if(itemArray.length > 0) { for(var item in itemArray) { if(itemArray[item] != newItem) itemArray[item][field] = false; } } } } function validate(alert, errorObject, responseData, pathsIgnore){ if(!pathsIgnore) pathsIgnore = new Array(); function jumpPath(errorObject, paths, value) { var newPath = paths[0]; paths.shift(); if(!errorObject[newPath]) errorObject[newPath] = {}; if(paths.length == 0) errorObject[newPath] = value; else jumpPath(errorObject[newPath], paths, value); } clearObject(errorObject); var errors = responseData.data; if(responseData.event && responseData.event.status == false) { var countErrors = 0; var isFieldErros = false; var allMessages = ''; if(errors) { for(var iField in errors){ if(errors[iField].path) { isFieldErros = true; if(!(pathsIgnore.indexOf(errors[iField].path) >= 0)) { if(errors[iField].message) allMessages += ", "+iField+": "+errors[iField].message; else allMessages += ", "+iField+": "+errors[iField]; countErrors++; if(errors[iField].path.indexOf('.') != -1) jumpPath(errorObject, errors[iField].path.split('.'), errors[iField].message); else if(typeof errorObject[errors[iField].path] != 'object') // else ? errorObject[errors[iField].path] = errors[iField].message; } } } } if(countErrors > 0 || !isFieldErros) { alert.show = true; alert.style = responseData.event.style; alert.message = responseData.event.message+allMessages; return false; } else { return true; } } else if(responseData.event && responseData.event.status == true && responseData.event.message) { // else ? alert.show = true; alert.style = responseData.event.style; alert.message = responseData.event.message; return true; } else if(responseData.event.status == true) { return true; } else { return false; } } var DataList = function() { var self = this; this.data = []; this.filter = null; this.sort = { field: '_id', type: '-'}; this.page = { skip: 0, limit: 10, current: 1 }; this.status = { totality: 0, filtered: 0, listing: 0 }; this.toParams = function(){ for(var k in this.filter) { if(this.filter[k] == null || this.filter[k] == "") delete this.filter[k]; } return { filter: JSON.stringify(this.filter), sort: JSON.stringify(this.sort), page: JSON.stringify(this.page), status: JSON.stringify(this.status) }; } this.sortClass = function(fieldName){ if(this.sort.field == fieldName && this.sort.type == '') return 'sorting_asc'; else if(this.sort.field == fieldName && this.sort.type == '-') return 'sorting_desc'; else return 'sorting'; } this.sortBy = function(fieldName){ this.sort.field = fieldName; this.sort.type = (this.sort.type == '-') ? '' : '-'; } this.reset = function(){ this.filter = null; this.sort = { field: '_id', type: '-'}; this.page = { skip: 0, limit: 10, current: 1 }; } }