‘use strict’;
/**
* @ngdoc service
* @name interceptcms.utilities
* @description
* # utilities
* Service in the interceptcms.
*/
var initInjector = angular.injector([‘ng’]);
var $http = initInjector.get(‘$http’);
angular.module(‘interceptcms’).service(‘utils’, function () {
var utilities = {
// PRESUBMIT OBJECT MODIFICATION
// REMOVE UNCHANGED PROPERTIES BEFORE UPDATE
// ONLY SUBMIT CHANGED PROPS
// OBJECTS PROPERTIES ARE COMPARED TO THE ORIGINAL OBJECT
// ONLY CHANGED VALUES ARE SUBMITTED TO THE DB
// VALUES THAT MATCH THE ORIGINAL OBJECT ARE STRIPPED BEFORE SUBMITTING
// ALLOWS US TO TRACK THE CHANGED PROPS IN THE SUBMITTED OBJ
compareObjectsKeepChanges: function (originalObj, editedObj){
for(var prop in editedObj) {
if (typeof originalObj[prop] === "object") {
if (this.jsonObj(originalObj[prop]) === this.jsonObj(editedObj[prop])) {
delete editedObj[prop];
}
} else {
if (editedObj[prop] === originalObj[prop]) {
delete editedObj[prop];
}
}
}
if (!this.isObject(editedObj)) {
return;
} else {
return editedObj;
}
},
// VERIFY THAT THERE IS OBJECT
isObject: function (newObj) {
return (Object.keys(newObj).length > 0);
},
// STRINGIFY OBJECT ARRAYS OR OBJECTS WITHIN AN OBJECT
jsonObj: function (obj) {
return JSON.stringify(obj);
},
// REMOVE PROPERTIES FROM OBJECT
stripObj: function (obj, propsToRemove) {
if (obj) {
for (var i = propsToRemove.length; i >= 0; i--) {
if (obj[propsToRemove[i]]) {
delete obj[propsToRemove[i]];
}
}
}
return obj;
},
getUrl: function(url) {
$http.get(url).success(function(obj) {
return obj;
}).error(function(err){
return err;
});
}
};
return utilities;
});