JSFiddle - React, Tailwind, and code Playground
by jrab227
HTML
<script src="documentcloud.github.io/underscore/underscore-min.js"></script>
<div ng-app="application">
<div ng-controller="myCtr1">
</div>
</div>
JavaScript
angular.module('application', [])
.factory('Diskshelf', function() {
function Diskshelf(params) {
this.params = params
this.disks = 0
_.extend(this.params, params)
return
}
Diskshelf.prototype.addDisk = function(success, error) {
if (this.disks < params.diskLimit) {
this.disks += 1
success()
return this;
}
error()
return this;
}
return Diskshelf
})
.factory('Node', function() {
function Node(params) {
this.params = params
this.diskshelves = [];
return;
}
Node.prototype.addDiskshelf = function(diskshelf, success, error) {
if (this.diskshelves.length < params.diskshelfLimit) {
this.diskshelves.push(diskshelve);
success()
return this;
}
error()
return this;
}
Node.prototype.addDisk = function(success, error) {
this.diskshelves = _.reduce(this.diskshelves, function(diskshelves, diskshelf) {
if (!diskshelves.alreadyAddedDisk) {
diskshelf.addDisk(function() {
diskshelves.alreadyAddedDisk = true
})
}
diskshelves.push(diskshelf)
return diskshelves
}, [])
if (!this.diskshelves.alreadyAddedDisk) {
error()
return this;
}
success()
return this;
}
return Node
})
.controller('myCtr1', ['$scope', 'Node', 'Diskshelf', function($scope, Node, Diskshelf) {
var diskshelf1 = new Diskshelf({
diskLimit: 2
})
var diskshelf2 = new Diskshelf({
diskLimit: 4
})
var node1 = new Node({
diskshelfLimit: 2
})
node1.addDiskshelf(diskshelf1, function success() {
return
}, function error() {
return
})
.addDiskshelf(diskshelf2, function success() {
return
}, function error() {
return
})
.addDisk(function success() {
return
}, function error() {
...