Code coverage report for lib\PinPad.js

Statements: 22.86% (8 / 35)      Branches: 0% (0 / 16)      Functions: 0% (0 / 4)      Lines: 22.86% (8 / 35)      Ignored: none     

All files » lib/ » PinPad.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66        1 1 1   1               1                                               1                                   1             1
/*jslint node: true */
/*jshint laxbreak: true */
'use strict';
 
var PinPadViewer = require('./PinPadViewer');
var PinPadModel = require('./PinPadModel');
var d3 = require('d3');
 
var PinPad = function(opts) {
    var pinPad = this;
    pinPad.model = new PinPadModel(opts.ordering);
    pinPad.viewer = new PinPadViewer(opts.options, opts.toPin, pinPad);
    pinPad.dispatcher = d3.dispatch
        ('add', 'duplication', 'remove', 'unknown', 'incomplete');
};
 
PinPad.prototype.addElement = function(element) {
    var pinPad = this;
    if (element.category && element.id && element.sections
        && (element.sections.length !== 0)) {
        var result = pinPad.model.addElement(element);
        if (result.error) {
            pinPad.dispatcher.duplication({element: element});
        } else {
            var elInfo = {
                elem: element,
                elIndex: result.elIndex,
                allElements: pinPad.model.categories[result.catIndex].elements
            };
            pinPad.viewer.addElement(elInfo, result.catIndex);
            pinPad.dispatcher.add({
                category: element.category,
                element: element
            });
        }
    } else {
        pinPad.dispatcher.incomplete({element: element});
    }
};
 
PinPad.prototype.removeElement = function(elId) {
    var pinPad = this;
    var result = pinPad.model.removeElement(elId);
    if (result.error) {
        pinPad.dispatcher.unknown({element: elId});
    } else {
        pinPad.viewer.removeElement(result.catIndex, result.elIndex);
        pinPad.dispatcher.remove({element: result.element});
        if ((pinPad.model.categories.length === 0)
            || (pinPad.model.categories.length === result.catIndex)) {
            pinPad.dispatcher.remove({category: result.category});
        } else if (pinPad.model.categories[result.catIndex].title
            !== result.category) {
            pinPad.dispatcher.remove({category: result.category});
        }
    }
};
 
PinPad.prototype.removeCategory = function(catTitle) {
    var pinPad = this;
    var result = pinPad.model.removeCategory(catTitle);
    pinPad.viewer.removeCategory(result.catIndex);
    pinPad.dispatcher.remove({category: catTitle});
};
 
module.exports = PinPad;