AngularJS – Utilities

‘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;

});

Leave a Reply

Your email address will not be published. Required fields are marked *