mirror of
https://github.com/fazo96/pbs.git
synced 2025-01-29 14:54:18 +01:00
implemented chained delays
This commit is contained in:
parent
fab54bf553
commit
e2bd775359
@ -47,6 +47,23 @@ class Pert
|
|||||||
@insertDay item.startDay
|
@insertDay item.startDay
|
||||||
return item.startDay
|
return item.startDay
|
||||||
|
|
||||||
|
calculateDelays: (item) =>
|
||||||
|
if !item.dependant? or item.dependant.length is 0 then return no
|
||||||
|
lowestFDelay = 0; fDelay = no; cDelay = no; lowestCDelay = 0
|
||||||
|
for j,i of item.dependant
|
||||||
|
x = @toActivity i
|
||||||
|
if x.permittedDelay > 0
|
||||||
|
if x.permittedDelay < lowestFDelay or fDelay is no
|
||||||
|
lowestFDelay = x.permittedDelay
|
||||||
|
fDelay = yes
|
||||||
|
if x.chainedDelay > 0
|
||||||
|
if x.chainedDelay < lowestCDelay or cDelay is no
|
||||||
|
lowestCDelay = x.chainedDelay
|
||||||
|
cDelay = yes
|
||||||
|
olDelay = item.chainedDelay
|
||||||
|
item.chainedDelay = lowestFDelay + lowestCDelay
|
||||||
|
return item.chainedDelay isnt olDelay
|
||||||
|
|
||||||
# Find out which activity has the highest id
|
# Find out which activity has the highest id
|
||||||
highestID: => return @maxa(@list.map (x) -> x.id)
|
highestID: => return @maxa(@list.map (x) -> x.id)
|
||||||
|
|
||||||
@ -62,9 +79,16 @@ class Pert
|
|||||||
|
|
||||||
calculate: (options,cb) ->
|
calculate: (options,cb) ->
|
||||||
h = @highestID()
|
h = @highestID()
|
||||||
@list.forEach (x) =>
|
for x,i in @list
|
||||||
@log '('+x.id+'/'+h+')'
|
@log '('+x.id+'/'+h+')'
|
||||||
@calculateEndDay x
|
@calculateEndDay x
|
||||||
|
finished = no; i = 0
|
||||||
|
while !finished
|
||||||
|
i++; finished = yes
|
||||||
|
for x,i in @list
|
||||||
|
if @calculateDelays x
|
||||||
|
finished = no
|
||||||
|
@log "Done calculating delays. Took", i, "iterations"
|
||||||
results = activities: @list, days: @days
|
results = activities: @list, days: @days
|
||||||
if options?.json
|
if options?.json
|
||||||
if cb? then cb(JSON.stringify results)
|
if cb? then cb(JSON.stringify results)
|
||||||
@ -72,4 +96,3 @@ class Pert
|
|||||||
else
|
else
|
||||||
if cb? then cb(results)
|
if cb? then cb(results)
|
||||||
results
|
results
|
||||||
if module? then module.exports = Pert
|
|
||||||
|
@ -54,6 +54,6 @@ span.github a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#tab {
|
#tab {
|
||||||
max-width: 40em;
|
max-width: 60em;
|
||||||
margin: 0 auto 0 auto;
|
margin: 0 auto 0 auto;
|
||||||
}
|
}
|
||||||
|
@ -4,15 +4,21 @@
|
|||||||
<td><b>ID</b></td>
|
<td><b>ID</b></td>
|
||||||
<td><b>Duration (days)</b></td>
|
<td><b>Duration (days)</b></td>
|
||||||
<td><b>Start Day</b></td>
|
<td><b>Start Day</b></td>
|
||||||
|
<td><b>Depends On</b></td>
|
||||||
|
<td><b>Dependent</b></td>
|
||||||
<td><b>End Day</b></td>
|
<td><b>End Day</b></td>
|
||||||
<td><b>Possible Delay</b></td>
|
<td><b>Free Delay</b></td>
|
||||||
|
<td><b>Chained Delay</b></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr ng-repeat="item in list">
|
<tr ng-repeat="item in list">
|
||||||
<td>{{$index + 1}}</td>
|
<td>{{$index + 1}}</td>
|
||||||
<td>{{item.id}}</td>
|
<td>{{item.id}}</td>
|
||||||
<td>{{item.duration}}</td>
|
<td>{{item.duration}}</td>
|
||||||
<td>{{item.startDay}}</td>
|
<td>{{item.startDay}}</td>
|
||||||
<td>{{item.endDay}} --- {{item.endDay + (item.permittedDelay || 0)}}</td>
|
<td>{{item.depends || "N/A"}}</td>
|
||||||
|
<td>{{item.dependent || "N/A"}}</td>
|
||||||
|
<td>{{item.endDay}} --- {{item.endDay + (item.permittedDelay || 0) + (item.chainedDelay || 0)}}</td>
|
||||||
<td>{{item.permittedDelay || 0}}</td>
|
<td>{{item.permittedDelay || 0}}</td>
|
||||||
|
<td>{{item.chainedDelay || 0}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
Loading…
Reference in New Issue
Block a user