Skip to content

Commit

Permalink
renamed schedule to available
Browse files Browse the repository at this point in the history
  • Loading branch information
Bill Scheidel committed Jul 9, 2013
1 parent 14649ee commit cde886c
Show file tree
Hide file tree
Showing 11 changed files with 73 additions and 97 deletions.
40 changes: 20 additions & 20 deletions schedule.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,14 @@ schedule = function(later) {
});
};
schedule.resources = function() {
var id = resourcesId, sched = resourcesSched, isNotReservable = resourcesIsNotReservable;
var id = resourcesId, available = resourcesAvailable, isNotReservable = resourcesIsNotReservable;
function resources(data) {
var items = [], fid = schedule.functor(id), fsched = schedule.functor(sched), freserve = schedule.functor(isNotReservable);
var items = [], fid = schedule.functor(id), favailable = schedule.functor(available), freserve = schedule.functor(isNotReservable);
for (var i = 0, len = data.length; i < len; i++) {
var resource = data[i], rId = fid.call(this, resource, i), rSched = fsched.call(this, resource, i), rReserve = freserve.call(this, resource, i);
var resource = data[i], rId = fid.call(this, resource, i), rAvailable = favailable.call(this, resource, i), rReserve = freserve.call(this, resource, i);
items.push({
id: rId,
schedule: rSched,
available: rAvailable,
isNotReservable: rReserve
});
}
Expand All @@ -99,9 +99,9 @@ schedule = function(later) {
id = _;
return resources;
};
resources.schedule = function(_) {
if (!arguments.length) return sched;
sched = _;
resources.available = function(_) {
if (!arguments.length) return available;
available = _;
return resources;
};
resources.isNotReservable = function(_) {
Expand All @@ -114,21 +114,21 @@ schedule = function(later) {
function resourcesId(d) {
return d.id;
}
function resourcesSched(d) {
return d.schedule;
function resourcesAvailable(d) {
return d.available;
}
function resourcesIsNotReservable(d) {
return d.isNotReservable || false;
}
schedule.tasks = function() {
var id = tasksId, duration = tasksDuration, sched = tasksSched, resources = tasksResources, dependsOn = tasksDependsOn, minSchedule = tasksMinSchedule, priority = tasksPriority;
var id = tasksId, duration = tasksDuration, available = tasksAvailable, resources = tasksResources, dependsOn = tasksDependsOn, minSchedule = tasksMinSchedule, priority = tasksPriority;
function tasks(data) {
var items = [], fid = schedule.functor(id), fduration = schedule.functor(duration), fsched = schedule.functor(sched), fresources = schedule.functor(resources), fdependsOn = schedule.functor(dependsOn), fminschedule = schedule.functor(minSchedule), fpriority = schedule.functor(priority);
var items = [], fid = schedule.functor(id), fduration = schedule.functor(duration), favailable = schedule.functor(available), fresources = schedule.functor(resources), fdependsOn = schedule.functor(dependsOn), fminschedule = schedule.functor(minSchedule), fpriority = schedule.functor(priority);
for (var i = 0, len = data.length; i < len; i++) {
var task = data[i], item = {
id: fid.call(this, task, i),
duration: fduration.call(this, task, i),
schedule: fsched.call(this, task, i),
available: favailable.call(this, task, i),
resources: fresources.call(this, task, i),
dependsOn: fdependsOn.call(this, task, i),
minSchedule: fminschedule.call(this, task, i),
Expand All @@ -148,9 +148,9 @@ schedule = function(later) {
duration = _;
return tasks;
};
tasks.schedule = function(_) {
if (!arguments.length) return sched;
sched = _;
tasks.available = function(_) {
if (!arguments.length) return available;
available = _;
return tasks;
};
tasks.resources = function(_) {
Expand Down Expand Up @@ -181,8 +181,8 @@ schedule = function(later) {
function tasksDuration(d) {
return d.duration;
}
function tasksSched(d) {
return d.schedule;
function tasksAvailable(d) {
return d.available;
}
function tasksResources(d) {
return d.resources;
Expand Down Expand Up @@ -343,7 +343,7 @@ schedule = function(later) {
return map;
}
function addResourceToMap(map, def, start) {
var sched = JSON.parse(JSON.stringify(def.schedule || defaultSched)), nextFn = schedule.memoizedRangeFn(later.schedule(sched).nextRange);
var sched = JSON.parse(JSON.stringify(def.available || defaultSched)), nextFn = schedule.memoizedRangeFn(later.schedule(sched).nextRange);
map[def.id] = {
schedule: sched,
next: nextFn,
Expand Down Expand Up @@ -497,7 +497,7 @@ schedule = function(later) {
id: prefix + arr[i]
} : {
id: prefix + arr[i].id,
schedule: arr[i].schedule,
available: arr[i].available,
isNotReservable: arr[i].isNotReservable
};
if (!rMap[def.id]) {
Expand Down Expand Up @@ -536,7 +536,7 @@ schedule = function(later) {
resMgr.addResource(taskGraph.resources, "", startDate);
resMgr.addResource([ {
id: "_proj",
schedule: sched
available: sched
} ], "", startDate);
resMgr.addResource(tasks, "_task", startDate);
forwardPass(taskGraph.roots);
Expand Down
2 changes: 1 addition & 1 deletion src/core/create.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ schedule.create = function(tasks, resources, sched, startDate) {
// schedule and all task schedules to the resource manager (these will
// be treated as resources to calculate valid reservations with)
resMgr.addResource(taskGraph.resources, '', startDate);
resMgr.addResource([{id: '_proj', schedule: sched}], '', startDate);
resMgr.addResource([{id: '_proj', available: sched}], '', startDate);
resMgr.addResource(tasks, '_task', startDate);

forwardPass(taskGraph.roots);
Expand Down
4 changes: 2 additions & 2 deletions src/core/resource-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ schedule.resourceManager = function(resourceDefinitions, startDate) {
* Adds a resource to the resource map.
*/
function addResourceToMap(map, def, start) {
var sched = JSON.parse(JSON.stringify(def.schedule || defaultSched)),
var sched = JSON.parse(JSON.stringify(def.available || defaultSched)),
nextFn = schedule.memoizedRangeFn(later.schedule(sched).nextRange);

map[def.id] = { schedule: sched, next: nextFn, nextAvail: nextFn(start) };
Expand Down Expand Up @@ -266,7 +266,7 @@ schedule.resourceManager = function(resourceDefinitions, startDate) {
for(var i = 0, len = arr.length; i < len; i++) {
var def = typeof arr[i] !== 'object' ?
{ id: prefix + arr[i] } :
{ id: prefix + arr[i].id, schedule: arr[i].schedule, isNotReservable: arr[i].isNotReservable };
{ id: prefix + arr[i].id, available: arr[i].available, isNotReservable: arr[i].isNotReservable };

if(!rMap[def.id]) {
addResourceToMap(rMap, def, start);
Expand Down
18 changes: 9 additions & 9 deletions src/core/resources.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

schedule.resources = function() {
var id = resourcesId,
sched = resourcesSched,
available = resourcesAvailable,
isNotReservable = resourcesIsNotReservable;

/**
Expand All @@ -21,16 +21,16 @@ schedule.resources = function() {
function resources(data) {
var items = [],
fid = schedule.functor(id),
fsched = schedule.functor(sched),
favailable = schedule.functor(available),
freserve = schedule.functor(isNotReservable);

for(var i = 0, len = data.length; i < len; i++) {
var resource = data[i],
rId = fid.call(this, resource, i),
rSched = fsched.call(this, resource, i),
rAvailable = favailable.call(this, resource, i),
rReserve = freserve.call(this, resource, i);

items.push({id: rId, schedule: rSched, isNotReservable: rReserve});
items.push({id: rId, available: rAvailable, isNotReservable: rReserve});
}

return items;
Expand All @@ -52,9 +52,9 @@ schedule.resources = function() {
* schedule must be a valid Later.js schedule. Sets the value to the argument
* passed in, returns current value if no arguments are passed in.
*/
resources.schedule = function(_) {
if (!arguments.length) return sched;
sched = _;
resources.available = function(_) {
if (!arguments.length) return available;
available = _;
return resources;
};

Expand Down Expand Up @@ -82,8 +82,8 @@ function resourcesId(d) {
/**
* The default schedule function.
*/
function resourcesSched(d) {
return d.schedule;
function resourcesAvailable(d) {
return d.available;
}

/**
Expand Down
16 changes: 8 additions & 8 deletions src/core/tasks.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
schedule.tasks = function() {
var id = tasksId,
duration = tasksDuration,
sched = tasksSched,
available = tasksAvailable,
resources = tasksResources,
dependsOn = tasksDependsOn,
minSchedule = tasksMinSchedule,
Expand All @@ -25,7 +25,7 @@ schedule.tasks = function() {
var items = [],
fid = schedule.functor(id),
fduration = schedule.functor(duration),
fsched = schedule.functor(sched),
favailable = schedule.functor(available),
fresources = schedule.functor(resources),
fdependsOn = schedule.functor(dependsOn),
fminschedule = schedule.functor(minSchedule),
Expand All @@ -36,7 +36,7 @@ schedule.tasks = function() {
item = {
id: fid.call(this, task, i),
duration: fduration.call(this, task, i),
schedule: fsched.call(this, task, i),
available: favailable.call(this, task, i),
resources: fresources.call(this, task, i),
dependsOn: fdependsOn.call(this, task, i),
minSchedule: fminschedule.call(this, task, i),
Expand Down Expand Up @@ -76,9 +76,9 @@ schedule.tasks = function() {
* schedule must be a valid Later.js schedule. Sets the value to the argument
* passed in, returns current value if no arguments are passed in.
*/
tasks.schedule = function(_) {
if (!arguments.length) return sched;
sched = _;
tasks.available = function(_) {
if (!arguments.length) return available;
available = _;
return tasks;
};

Expand Down Expand Up @@ -146,8 +146,8 @@ function tasksDuration(d) {
/**
* The default schedule function.
*/
function tasksSched(d) {
return d.schedule;
function tasksAvailable(d) {
return d.available;
}

/**
Expand Down
12 changes: 6 additions & 6 deletions test/core/resource-manager-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ describe('Resource Manager', function() {

// resource setup
var resources = [
{id: 'A', schedule: {schedules: [{h_a: [8], h_b: [16]}]}},
{id: 'B', schedule: {schedules: [{h_a: [10], h_b: [14]}]}},
{id: 'C', schedule: {schedules: [{h_a: [8], h_b: [12]}]}},
{id: 'D', schedule: {schedules: [{h_a: [18], h_b: [20]}]}},
{id: 'E', schedule: {schedules: [{h_a: [12], h_b: [14]}]}},
{id: 'A', available: {schedules: [{h_a: [8], h_b: [16]}]}},
{id: 'B', available: {schedules: [{h_a: [10], h_b: [14]}]}},
{id: 'C', available: {schedules: [{h_a: [8], h_b: [12]}]}},
{id: 'D', available: {schedules: [{h_a: [18], h_b: [20]}]}},
{id: 'E', available: {schedules: [{h_a: [12], h_b: [14]}]}},

// resource definition for the project schedule
{id: '_proj', schedule: {schedules: [{h_a: [6], h_b: [20]}]}, isNotReservable: true}
{id: '_proj', available: {schedules: [{h_a: [6], h_b: [20]}]}, isNotReservable: true}
],
startDate = new Date(2013, 2, 21);

Expand Down
34 changes: 17 additions & 17 deletions test/core/resources-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ describe('Resources', function() {
});

it('should support a custom schedule function', function() {
should.exist(schedule.resources().schedule);
should.exist(schedule.resources().available);
});

it('should support a custom isNotReservable function', function() {
Expand All @@ -18,11 +18,11 @@ describe('Resources', function() {

it('should return resources in a list using defaults', function() {
var sched = later.parse.recur().after('8:00').time().before('17:00').time(),
resources = [ {id: 1, schedule: sched}, {id: 2, schedule: sched}, {id: 3, schedule: sched} ],
resources = [ {id: 1, available: sched}, {id: 2, available: sched}, {id: 3, available: sched} ],
expected = [
{id: 1, schedule: sched, isNotReservable: false},
{id: 2, schedule: sched, isNotReservable: false},
{id: 3, schedule: sched, isNotReservable: false}
{id: 1, available: sched, isNotReservable: false},
{id: 2, available: sched, isNotReservable: false},
{id: 3, available: sched, isNotReservable: false}
],
actual = schedule.resources()(resources);

Expand All @@ -31,11 +31,11 @@ describe('Resources', function() {

it('should return resources in a list using a custom id function', function() {
var sched = later.parse.recur().after('8:00').time().before('17:00').time(),
resources = [ {foo: 1, schedule: sched}, {foo: 2, schedule: sched}, {foo: 3, schedule: sched} ],
resources = [ {foo: 1, available: sched}, {foo: 2, available: sched}, {foo: 3, available: sched} ],
expected = [
{id: 1, schedule: sched, isNotReservable: false},
{id: 2, schedule: sched, isNotReservable: false},
{id: 3, schedule: sched, isNotReservable: false}
{id: 1, available: sched, isNotReservable: false},
{id: 2, available: sched, isNotReservable: false},
{id: 3, available: sched, isNotReservable: false}
],
actual = schedule.resources().id(function(d){return d.foo;})(resources);

Expand All @@ -46,22 +46,22 @@ describe('Resources', function() {
var sched = later.parse.recur().after('8:00').time().before('17:00').time(),
resources = [ {id: 1, foo: sched}, {id: 2, foo: sched}, {id: 3, foo: sched} ],
expected = [
{id: 1, schedule: sched, isNotReservable: false},
{id: 2, schedule: sched, isNotReservable: false},
{id: 3, schedule: sched, isNotReservable: false}
{id: 1, available: sched, isNotReservable: false},
{id: 2, available: sched, isNotReservable: false},
{id: 3, available: sched, isNotReservable: false}
],
actual = schedule.resources().schedule(function(d){return d.foo;})(resources);
actual = schedule.resources().available(function(d){return d.foo;})(resources);

actual.should.eql(expected);
});

it('should return resources in a list using a custom reservable function', function() {
var sched = later.parse.recur().after('8:00').time().before('17:00').time(),
resources = [ {id: 1, schedule: sched}, {id: 2, schedule: sched}, {id: 3, schedule: sched} ],
resources = [ {id: 1, available: sched}, {id: 2, available: sched}, {id: 3, available: sched} ],
expected = [
{id: 1, schedule: sched, isNotReservable: true},
{id: 2, schedule: sched, isNotReservable: true},
{id: 3, schedule: sched, isNotReservable: true}
{id: 1, available: sched, isNotReservable: true},
{id: 2, available: sched, isNotReservable: true},
{id: 3, available: sched, isNotReservable: true}
],
actual = schedule.resources().isNotReservable(true)(resources);

Expand Down
8 changes: 4 additions & 4 deletions test/core/schedule-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ describe('Schedule', function() {

it('should only schedule tasks when available', function() {
var tasks = [
{id: 'A', duration: 120, schedule: {schedules: [{h_a: [12]}]}}
{id: 'A', duration: 120, available: {schedules: [{h_a: [12]}]}}
],
startDate = new Date(2013, 2, 21, 0, 0, 0);

Expand All @@ -291,7 +291,7 @@ describe('Schedule', function() {

it('should fail to schedule tasks that will never be available', function() {
var tasks = [
{id: 'A', duration: 120, schedule: {schedules: [{fd_b: [100]}]}}
{id: 'A', duration: 120, available: {schedules: [{fd_b: [100]}]}}
],
startDate = new Date(2013, 2, 21, 0, 0, 0);

Expand All @@ -303,7 +303,7 @@ describe('Schedule', function() {

it('should fail to schedule tasks with an invalid schedule', function() {
var tasks = [
{id: 'A', duration: 120, schedule:
{id: 'A', duration: 120, available:
{
schedules: [{h: [5,6]}],
exceptions: [{h: [5,6]}]
Expand All @@ -320,7 +320,7 @@ describe('Schedule', function() {

it('should work if project schedule is null', function() {
var tasks = [
{id: 'A', duration: 120, schedule: {schedules: [{h_a: [12]}]}}
{id: 'A', duration: 120, available: {schedules: [{h_a: [12]}]}}
],
startDate = new Date(2013, 2, 21, 0, 0, 0);

Expand Down
Loading

0 comments on commit cde886c

Please sign in to comment.