Take the 2-minute tour ×
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

I've got some constructors and a factory class that I would like to use in an Angular project. I would like to know how I can convert these to usable Angular services for my project.

Process Constructor

/**
 * A constructor for Process objects
 *
 * @param {Object} options An object with an integer processId and an array of roles containing
 *                         roles
 *
 * @return {Process} A new Process object
 */
function Process (options) {

    if ( typeof options.processId !== 'number' ) {
        throw 'Process ID is not a number';
    }

    if ( typeof options.roles !== 'object' || typeof options.roles.length === 'undefined' ) {
        throw 'Roles is not an array';
    }

    if ( options.roles.length === 0 ) {
        throw 'No roles passed';
    }

    this.processId = options.processId;
    this.roles     = options.roles;
    return this;

}

This is pretty straight forward. A bit of input checking then return the object.


Role Constructor

/**
 * A constructor for Role objects
 *
 * @param {Integer} processId An integer representing this role's parent process ID
 * @param {Integer} number    What number to assign the roleName attribute
 *
 * @return {Object Role} A brand new Role object
 */
function Role (processId, number) {

    // typecast
    processId = +processId;
    number    = +number;

    if ( !!isNaN(processId) || !!isNaN(number) ) {
        throw 'Both processId and number need to be numbers';
    }

    this.roleName  = 'role' + number;
    this.startDate = rand(0, new Date().getTime());
    this.endDate   = rand(this.startDate, new Date().getTime());
    this.href      = '/v1/transactions/' + processId + '/roles/' + this.roleName;
    return this;

}

Again, pretty straightforward. Some input validation, and then throw some data in and return the object.


Factory to create Process and Role objects

/**
 * A factory class to make some randomly generated processes
 * Based on http://addyosmani.com/resources/essentialjsdesignpatterns/book/#factorypatternjavascript
 *
 * @return {Object Process} A new Process object with random data
 */
function processFactory () {}

/**
 * Returns a random 12 digit integer
 * @return {Integer} 12 digit integer
 */
processFactory.prototype.makeId = function () {
    return Math.round(Math.random() * Math.pow(10, 12));
};

/**
 * Makes a new process with random info
 * 
 * @param  {Integer} numberOfRoles The amount of roles to put into the process
 * 
 * @return {Object Process} A new Process object
 */
processFactory.prototype.makeProcess = function(numberOfRoles) {

    var i = 1;

    if ( typeof numberOfRoles === 'undefined' ) {
        numberOfRoles = Math.round(Math.random() * 10);
    }

    this.processId = processFactory.makeId();
    this.roles     = [];

    while ( numberOfRoles-- ) {
        i++;
        this.roles.push(new Role(this.processId, i));
    }

    return new Process(this);

};

var processFactory = new processFactory();

And here's the factory to build me some Processes and Roles for them. I'm not even sure if this is the best way to make a factory in Vanilla JS!


I want to be able to instantiate multiple processes and controllers.

share|improve this question
    
Based on this jsbin I think that at least my processFactory could be in an Angular service. –  Martin May 1 '14 at 20:29
    
The Angular Developer Guide for Services would be a good place to start. –  Greg Burghardt May 13 '14 at 15:29

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.