ardekantur-gantty 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -17,7 +17,15 @@ Rake::GemPackageTask.new(spec) do |pkg|
17
17
  pkg.gem_spec = spec
18
18
  end
19
19
 
20
+ desc "run rspec + rcov"
21
+ Spec::Rake::SpecTask.new("spec:rcov") do |t|
22
+ t.spec_files = FileList['spec/**/*_spec.rb']
23
+ t.rcov_opts = ['--exclude', "spec/,rcov.rb,rspec.rb,spec*,gems*"]
24
+ t.rcov = true
25
+ t.rcov_dir = 'doc/coverage'
26
+ end
27
+
20
28
  desc "install the gem locally"
21
29
  task :install => [:package] do
22
30
  sh %{sudo gem install pkg/#{GEM}-#{GEM_VERSION}}
23
- end
31
+ end
@@ -1,14 +1,27 @@
1
1
  $:.unshift File.expand_path(File.dirname(__FILE__))
2
2
 
3
3
  require 'rubygems'
4
+ require 'date'
4
5
  require 'nokogiri'
5
6
 
6
7
  module Gantty
7
8
 
9
+ PRIORITY = { :low => 0, :normal => 1, :medium => 1, :high => 2, 0 => :low, 1 => :normal, 2 => :high }
10
+ HARDNESS = { :rubber => "Rubber", :strong => "Strong" }
11
+ DEPENDS = { 1 => :add_starts_with, 2 => :add_starts_after, 3 => :add_finishes_with, 4 => :add_finishes_before }
12
+
13
+ def self.Task args
14
+ return Task.new(args)
15
+ end
16
+
8
17
  def self.Open file
9
18
  return GanttChart.new(file)
10
19
  end
11
20
 
21
+ def self.New
22
+ return GanttChart.new
23
+ end
24
+
12
25
  class GanttChart
13
26
 
14
27
  attr_accessor :resources, :tasks
@@ -23,45 +36,115 @@ module Gantty
23
36
  end
24
37
 
25
38
  def parse_gantt
39
+ depends = { 1 => [], 2 => [], 3 => [], 4 => [] }
26
40
  @gantt.xpath('//resource').each { |r| @resources << Resource.new(r) }
27
- @gantt.xpath('//task').each { |t| @tasks << Task.new(t) }
28
- @tasks.each { |task| @gantt.xpath("//allocation[@task-id=#{task.id}]").each { |alloc| task.coordinators += @resources.select { |r| r.id == alloc.attributes["resource-id"].to_i } } }
41
+ @gantt.xpath('//task').each do |t|
42
+ @tasks << Task.new(t)
43
+ t.children.select { |c| c.name == "depend" }.each do |dependency|
44
+ depends[dependency.attributes["type"].to_i] << [t.attributes["id"].to_i, dependency.attributes["id"].to_i]
45
+ end
46
+ end
47
+ @tasks.each do |task|
48
+ @gantt.xpath("//allocation[@task-id=#{task.id}]").each do |alloc|
49
+ task.coordinators += @resources.select { |r| r.id == alloc.attributes["resource-id"].to_i }
50
+ end
51
+ end
52
+
53
+ depends.each do |type,queue|
54
+ queue.each { |relation| task_by_id(relation.last).send(DEPENDS[type], task_by_id(relation.first)) }
55
+ end
29
56
  end
30
57
 
31
58
  def current_tasks date = Date.today
32
59
  @tasks.select { |t| t.start <= date and t.end >= date }
33
60
  end
61
+
62
+ private
63
+
64
+ def task_by_id id
65
+ @tasks.select { |t| t.id == id }.first
66
+ end
34
67
 
35
68
  end
36
69
 
37
70
  class Task
38
- attr_accessor :name, :start, :duration, :end, :percent_complete, :coordinators
71
+ attr_accessor :name, :start, :duration, :end, :percent_complete, :coordinators, :priority
72
+ attr_accessor :starts_with, :starts_after, :finishes_with, :finishes_before
73
+
39
74
  attr_reader :id
40
75
 
41
76
  def initialize t
42
- @name = t.attributes["name"]
43
- @start = Date.strptime(t.attributes["start"])
44
- @duration = t.attributes["duration"].to_i
45
- @end = @start + @duration
46
- @percent_complete = t.attributes["complete"]
47
- @coordinators = []
48
- @id = t.attributes["id"].to_i
77
+ @starts_with, @starts_after, @finishes_with, @finishes_before = [], [], [], []
78
+ if t.is_a? Hash
79
+ @name = t[:name]
80
+ elsif t.is_a? String
81
+ raise ArgumentError, "name cannot be blank" if t.length == 0
82
+ @name = t
83
+ else
84
+ @name = t.attributes["name"]
85
+ @start = Date.strptime(t.attributes["start"])
86
+ @duration = t.attributes["duration"].to_i
87
+ @priority = PRIORITY[t.attributes["priority"].to_i]
88
+ @end = @start + @duration
89
+ @percent_complete = t.attributes["complete"].to_i
90
+ @coordinators = []
91
+ @id = t.attributes["id"].to_i
92
+ end
49
93
  end
50
94
 
51
95
  def start= new_date
52
96
  raise ArgumentError, "expected a DateTime" unless new_date.is_a? Date
53
- raise ArgumentError, "start date cannot be past end date" unless new_date <= @end
97
+ raise ArgumentError, "start date cannot be past end date" if @end and new_date >= @end
54
98
  @start = new_date
55
- @duration = (@end - @start).to_i
99
+ @duration = (@end - @start).to_i if @end
56
100
  end
57
101
 
58
102
  def end= new_date
59
103
  raise ArgumentError, "expected a DateTime" unless new_date.is_a? Date
60
- raise ArgumentError, "end date cannot be before start date" unless new_date >= @start
104
+ raise ArgumentError, "end date cannot be before start date" if @start and new_date <= @start
61
105
  @end = new_date
62
- @duration = (@end - @start).to_i
106
+ @duration = (@end - @start).to_i if @start
63
107
  end
64
108
 
109
+ def duration= new_duration
110
+ raise ArgumentError, "expected a number of days" unless new_duration.is_a? Fixnum
111
+ raise ArgumentError, "expected a positive day count" if new_duration < 0
112
+ @start = Date.today unless @start
113
+ @duration = new_duration
114
+ @end = @start + new_duration
115
+ end
116
+
117
+ def percent_complete= new_percent
118
+ raise ArgumentError, "percent complete must be a number" unless new_percent.is_a? Fixnum
119
+ raise ArgumentError, "percent complete must be between 0 and 100" if new_percent < 0 or new_percent > 100
120
+ @percent_complete = new_percent
121
+ end
122
+
123
+ #
124
+ # If Task B has predecessor Task A with relationship Finish->Start, task_b.before.include? task_a
125
+ # <task id="#{task_a.id}"...><depend id="#{task_b.id}" type="2" difference="1" hardness="Rubber"/></task>
126
+ # Start-Start: 1 => #starts_with
127
+ # Finish-Start: 2 => #starts_after
128
+ # Finish-Finish: 3 => #finishes_with
129
+ # Start-Finish: 4 => #finishes_before
130
+ #
131
+
132
+ def add_starts_with t
133
+ @starts_with << t
134
+ end
135
+
136
+ def add_starts_after t
137
+ @starts_after << t
138
+ end
139
+
140
+ def add_finishes_with t
141
+ @finishes_with << t
142
+ end
143
+
144
+ def add_finishes_before t
145
+ @finishes_before << t
146
+ end
147
+
65
148
  end
66
149
 
67
150
  class Resource
@@ -11,15 +11,22 @@ describe "Gantty" do
11
11
  end
12
12
 
13
13
  it "should return a list of all tasks" do
14
- @gantt.tasks.size.should == 37
14
+ @gantt.tasks.size.should == 13
15
15
  end
16
16
 
17
17
  it "should return a list of all current tasks" do
18
- @gantt.current_tasks(Date.new(2008, 10, 18)).size.should == 9
18
+ @gantt.current_tasks(Date.new(2008, 10, 18)).size.should == 7
19
19
  end
20
20
 
21
21
  it "should include tasks starting today as current tasks for today" do
22
- @gantt.current_tasks(Date.new(2008, 11, 3)).size.should == 8
22
+ @gantt.current_tasks(Date.new(2008, 11, 3)).size.should == 4
23
23
  end
24
+
25
+ it "should be allowed to be created empty" do
26
+ lambda { @new_chart = Gantty::New() }.should_not raise_error
27
+ end
28
+
29
+ it "should return itself as correct XML"
30
+ it "should have a company name"
24
31
 
25
32
  end
@@ -17,5 +17,8 @@ describe "Resource" do
17
17
  it "should have a phone number" do
18
18
  @gantt.resources.first.phone.should == "555-555-0123"
19
19
  end
20
+
21
+ it "should return itself in correct XML"
22
+ it "should require a name"
20
23
 
21
24
  end
@@ -5,13 +5,19 @@ describe "Task" do
5
5
  before do
6
6
  @gantt = Gantty::Open GANTT_CHART
7
7
  @task = @gantt.tasks.first
8
- @team_task = @gantt.tasks.select { |t| t.id == 20 }.first
8
+ @team_task = @gantt.tasks.select { |t| t.id == 12 }.first
9
9
  end
10
10
 
11
11
  it "should have a name" do
12
12
  @task.name.should == "Project Planning"
13
13
  end
14
14
 
15
+ it "should provide a shortcut method for instantiating a Task with a name" do
16
+ task_name = "Chunky Bacon"
17
+ @t = Gantty::Task :name => task_name
18
+ @t.name.should == task_name
19
+ end
20
+
15
21
  it "should have a start date" do
16
22
  @task.start.month.should == 10
17
23
  @task.start.year.should == 2008
@@ -32,21 +38,123 @@ describe "Task" do
32
38
  end
33
39
 
34
40
  it "should not allow an end date that comes before the start date" do
35
- @task.start = Date.new(2008,10, 10)
36
- @task.duration.should == 165
41
+ lambda { @task.start = Date.new(2009, 10, 1) }.should raise_error
37
42
  end
38
43
 
39
44
  it "should not allow a start date that comes before the end date" do
40
- lambda { @task.end = Date.new(2008, 10, 10) }.should raise_error ArgumentError
45
+ lambda { @task.end = Date.new(2008, 10, 10) }.should raise_error
41
46
  end
42
47
 
43
48
  it "should change the duration to match a changed start date" do
44
- lambda { @task.start = Date.new(2009, 10, 1) }.should raise_error ArgumentError
49
+ @task.start = Date.new(2008,10, 10)
50
+ @task.duration.should == 165
45
51
  end
46
52
 
47
53
  it "should return an array of coordinators" do
48
54
  @team_task.coordinators.size.should == 2
49
- @team_task.coordinators.first.name.should == "Bob Beta"
55
+ @team_task.coordinators.should have(2).things
56
+ end
57
+
58
+ it "should return its priority" do
59
+ @task.priority.should == :high
60
+ end
61
+
62
+ it "should allow changing of its start date and end date" do
63
+ task = Gantty::Task.new :name => "Chunky Bacon"
64
+ task.start = Date.today
65
+ task.start.should == Date.today
66
+
67
+ task = Gantty::Task.new :name => "Chunky Bacon"
68
+ task.end = Date.today
69
+ task.end.should == Date.today
70
+ end
71
+
72
+ it "should require a name" do
73
+ lambda { task = Gantty::Task.new }.should raise_error
74
+ lambda { task = Gantty::Task.new "" }.should raise_error
75
+
76
+ lambda { task = Gantty::Task.new "This is the task name" }.should_not raise_error
77
+ lambda { task = Gantty::Task.new :name => "This is the task name" }.should_not raise_error
78
+ end
79
+
80
+ # Start-Start: 1 => #starts_with
81
+ # Finish-Start: 2 => #starts_after
82
+ # Finish-Finish: 3 => #finishes_with
83
+ # Start-Finish: 4 => #finishes_before
84
+
85
+ it "should return the Start-Start tasks of itself" do
86
+ @pred_task = @gantt.tasks.select { |t| t.id == 13 }.first
87
+ @pred_task.name.should == "Acceptance Test Plan"
88
+ @pred_task.starts_with.size.should == 1
89
+ @pred_task.starts_with.first.name.should == "Requirements Document"
90
+ end
91
+
92
+ it "should return the Finish-Start tasks of itself" do
93
+ @pred_task = @gantt.tasks.select { |t| t.id == 13 }.first
94
+ @pred_task.name.should == "Acceptance Test Plan"
95
+ @pred_task.starts_after.size.should == 1
96
+ @pred_task.starts_after.first.name.should == "Integration Test Plan"
50
97
  end
98
+
99
+ it "should return the Start-Finish tasks of itself" do
100
+ @pred_task = @gantt.tasks.select { |t| t.id == 14 }.first
101
+ @pred_task.name.should == "Design Document"
102
+ @pred_task.finishes_before.size.should == 1
103
+ @pred_task.finishes_before.first.name.should == "Acceptance Test Plan"
104
+ end
105
+
106
+ it "should return the percentage completed" do
107
+ @task.percent_complete.should == 13
108
+ end
109
+
110
+ it "should allow the percentage completed to be changed" do
111
+ @task.percent_complete = 90
112
+ @task.percent_complete.should == 90
113
+ end
114
+
115
+ it "should ensure the percentage completed is a number" do
116
+ lambda { task.percent_complete = "blah" }.should raise_error
117
+ end
118
+
119
+ it "should not allow the percentage to be above 100 or below 0" do
120
+ task = Gantty::Task.new :name => "Chunky Bacon"
121
+
122
+ lambda { task.percent_complete = -4 }.should raise_error
123
+ lambda { task.percent_complete = 9001 }.should raise_error
124
+ end
125
+
126
+ it "should allow the duration to be changed manually, changing the end date to compensate" do
127
+ @task.start = Date.new(2008, 10, 10)
128
+ @task.duration = 10
129
+ @task.end.should == Date.new(2008, 10, 20)
130
+
131
+ task = Gantty::Task :name => "Chunky Bacon"
132
+ task.start = Date.new(2008, 10, 10)
133
+ task.duration = 10
134
+ task.end.should == Date.new(2008, 10, 20)
135
+ end
136
+
137
+ it "should set the start date to today if the duration is set before the start date" do
138
+ duration = 10
139
+ task = Gantty::Task :name => "Chunky Bacon"
140
+ task.duration = duration
141
+ task.end.should == Date.today + duration
142
+ end
143
+
144
+ it "should make sure a user-set duration is a number" do
145
+ @t = Gantty::Task :name => "Chunky Bacon"
146
+ lambda { @t.duration = "infinity" }.should raise_error
147
+ end
148
+
149
+ it "should make sure a user-set duration is positive" do
150
+ @t = Gantty::Task :name => "Chunky Bacon"
151
+ lambda { @t.duration = -6 }.should raise_error
152
+ end
153
+
154
+ it "should return dependencies in correct XML"
155
+ it "should return itself in correct XML"
156
+ it "should make sure start and end dates are dates"
157
+ it "should attempt to parse dates from strings if necessary"
158
+ it "should return its color"
51
159
 
52
160
  end
@@ -1,7 +1,7 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <project name="ClementineGantt" company="" webLink="" view-date="2008-10-12" view-index="1" gantt-divider-location="652" resource-divider-location="301" version="2.0">
2
+ <project name="ClementineGantt" company="" webLink="" view-date="2008-08-17" view-index="0" gantt-divider-location="652" resource-divider-location="301" version="2.0">
3
3
  <description></description>
4
- <view zooming-state="default:4" id="gantt-chart"/>
4
+ <view zooming-state="default:7" id="gantt-chart"/>
5
5
  <view id="resource-table">
6
6
  <field id="0" name="Name" width="55" order="0"/>
7
7
  <field id="1" name="Default role" width="44" order="1"/>
@@ -31,53 +31,29 @@
31
31
  <taskproperty id="tpd8" name="coordinator" type="default" valuetype="text"/>
32
32
  <taskproperty id="tpd9" name="predecessorsr" type="default" valuetype="text"/>
33
33
  </taskproperties>
34
- <task id="0" name="Project Planning" color="#8cb6ce" meeting="false" start="2008-10-14" duration="161" complete="13" priority="1" expand="true">
35
- <task id="1" name="Research" color="#8cb6ce" meeting="false" start="2008-10-14" duration="13" complete="47" priority="1" expand="true">
36
- <task id="2" name="Existing Tech" color="#8cb6ce" meeting="false" start="2008-10-14" duration="6" complete="0" priority="1" expand="true"/>
37
- <task id="3" name="User testing" color="#8cb6ce" meeting="false" start="2008-10-14" duration="6" complete="0" priority="1" expand="true">
34
+ <task id="0" name="Project Planning" color="#8cb6ce" meeting="false" start="2008-10-14" duration="161" complete="13" priority="2" expand="true">
35
+ <task id="1" name="Research" color="#8cb6ce" meeting="false" start="2008-10-14" duration="6" complete="47" priority="1" expand="false">
36
+ <task id="2" name="Prior Art" color="#8cb6ce" meeting="false" start="2008-10-14" duration="6" complete="0" priority="1" expand="true"/>
37
+ <task id="3" name="Focus Groups" color="#8cb6ce" meeting="false" start="2008-10-14" duration="6" complete="0" priority="1" expand="true">
38
38
  <notes><![CDATA[investigate how to get this into the hands of a student in a game class during term 2 or 3]]></notes>
39
39
  </task>
40
- <task id="4" name="Hardware Driver Libs" color="#8cb6ce" meeting="false" start="2008-10-14" duration="6" complete="0" priority="1" expand="true"/>
41
- <task id="5" name="Gesture/Helper libs" color="#8cb6ce" meeting="false" start="2008-10-14" duration="6" complete="0" priority="1" expand="true"/>
40
+ <task id="4" name="Marketing / Branding" color="#8cb6ce" meeting="false" start="2008-10-14" duration="6" complete="0" priority="1" expand="true"/>
41
+ <task id="5" name="Logos / Graphical Design" color="#8cb6ce" meeting="false" start="2008-10-14" duration="6" complete="0" priority="1" expand="true"/>
42
42
  <task id="6" name="Wii Homebrew" color="#8cb6ce" meeting="false" start="2008-10-14" duration="6" complete="75" priority="1" expand="true"/>
43
- <task id="7" name="COM bridge between C++ and C#" color="#8cb6ce" meeting="false" start="2008-10-14" duration="13" complete="100" priority="1" expand="true"/>
44
- <task id="8" name="Google group/interproject communication" color="#8cb6ce" meeting="false" start="2008-10-14" duration="6" complete="100" priority="1" expand="true"/>
45
43
  </task>
46
- <task id="9" name="Formalization of Project" color="#8cb6ce" meeting="false" start="2008-10-22" duration="10" complete="42" priority="1" expand="true"/>
47
44
  <task id="10" name="Website" color="#8cb6ce" meeting="false" start="2008-11-03" duration="141" complete="8" priority="1" expand="true"/>
48
45
  </task>
49
- <task id="11" name="Project planning and design" color="#8cb6ce" meeting="false" start="2008-10-27" duration="102" complete="1" priority="1" expand="true">
50
- <task id="33" name="UML" color="#ff0033" meeting="false" start="2008-10-27" duration="7" complete="0" priority="1" expand="true">
51
- <task id="34" name="3D Wiimote Interface" color="#ff0033" meeting="false" start="2008-10-27" duration="7" complete="0" priority="1" expand="true"/>
52
- <task id="35" name="Spatial Interface" color="#ff0033" meeting="false" start="2008-10-27" duration="7" complete="0" priority="1" expand="true"/>
53
- <task id="36" name="3D input wiimote service providers" color="#ff0033" meeting="false" start="2008-10-27" duration="7" complete="0" priority="1" expand="true"/>
46
+ <task id="11" name="Project Design" color="#8cb6ce" meeting="false" start="2008-11-03" duration="107" complete="1" priority="1" expand="true">
47
+ <task id="12" name="Requirements Document" color="#ff3333" meeting="false" start="2008-11-03" duration="16" complete="7" priority="1" expand="true">
48
+ <depend id="13" type="1" difference="1" hardness="Strong"/>
54
49
  </task>
55
- <task id="12" name="Requirements Doc" color="#ff3333" meeting="false" start="2008-11-03" duration="16" complete="7" priority="1" expand="true"/>
56
- <task id="13" name="Acceptance Test Plan" color="#ff3333" meeting="false" start="2008-11-17" duration="12" complete="0" priority="1" expand="true"/>
57
- <task id="14" name="Design Document" color="#ff3333" meeting="false" start="2008-12-02" duration="45" complete="0" priority="1" expand="true"/>
58
- <task id="15" name="Integration Test Plan" color="#ff3333" meeting="false" start="2009-01-26" duration="11" complete="0" priority="1" expand="true"/>
50
+ <task id="13" name="Acceptance Test Plan" color="#ff3333" meeting="false" start="2009-02-06" duration="12" complete="0" priority="1" expand="true">
51
+ <depend id="14" type="4" difference="0" hardness="Strong"/>
59
52
  </task>
60
- <task id="16" name="Implementation" color="#8cb6ce" meeting="false" start="2009-01-01" duration="77" complete="0" priority="1" expand="true">
61
- <task id="17" name="Core" color="#00ff00" meeting="false" start="2009-01-01" duration="77" complete="0" priority="1" expand="true"/>
62
- <task id="18" name="Interfaces" color="#8cb6ce" meeting="false" start="2009-01-01" duration="52" complete="0" priority="1" expand="true">
63
- <task id="19" name="3D Interface" color="#00ff00" meeting="false" start="2009-01-01" duration="52" complete="0" priority="1" expand="true"/>
64
- <task id="20" name="Spatial Interface" color="#00ff00" meeting="false" start="2009-01-01" duration="52" complete="0" priority="1" expand="true"/>
65
- <task id="21" name="Accelerometer Interface" color="#00ff00" meeting="false" start="2009-01-01" duration="52" complete="0" priority="1" expand="true"/>
53
+ <task id="14" name="Design Document" color="#ff3333" meeting="false" start="2008-12-23" duration="45" complete="0" priority="1" expand="true"/>
54
+ <task id="15" name="Integration Test Plan" color="#ff3333" meeting="false" start="2009-01-26" duration="11" complete="0" priority="1" expand="true">
55
+ <depend id="13" type="2" difference="0" hardness="Strong"/>
66
56
  </task>
67
- <task id="22" name="Demos" color="#8cb6ce" meeting="false" start="2009-02-16" duration="31" complete="0" priority="1" expand="true">
68
- <task id="23" name="3D Demo" color="#00ff00" meeting="false" start="2009-02-16" duration="31" complete="0" priority="1" expand="true"/>
69
- <task id="24" name="Spatial Demo" color="#00ff00" meeting="false" start="2009-02-16" duration="31" complete="0" priority="1" expand="true"/>
70
- <task id="25" name="Tennis Demo" color="#00ff00" meeting="false" start="2009-02-16" duration="31" complete="0" priority="1" expand="true"/>
71
- </task>
72
- </task>
73
- <task id="26" name="Testing" color="#8cb6ce" meeting="false" start="2008-12-01" duration="142" complete="0" priority="1" expand="true">
74
- <task id="27" name="Writing acceptance Tests" color="#990099" meeting="false" start="2008-12-01" duration="31" complete="0" priority="1" expand="true"/>
75
- <task id="28" name="Perform test on new code" color="#990099" meeting="false" start="2009-01-01" duration="90" complete="0" priority="1" expand="true"/>
76
- <task id="29" name="Tests and bug fixes" color="#990099" meeting="false" start="2009-04-01" duration="21" complete="0" priority="1" expand="true"/>
77
- </task>
78
- <task id="30" name="Presentation Prep" color="#8cb6ce" meeting="false" start="2009-01-20" duration="103" complete="0" priority="1" expand="true">
79
- <task id="31" name="Initial presentations" color="#ffcc33" meeting="false" start="2009-01-20" duration="5" complete="0" priority="1" expand="true"/>
80
- <task id="32" name="Final Presentations" color="#ffcc33" meeting="false" start="2009-04-27" duration="6" complete="0" priority="1" expand="true"/>
81
57
  </task>
82
58
  </tasks>
83
59
  <resources>
@@ -91,26 +67,13 @@
91
67
  <allocation task-id="4" resource-id="7" function="Default:0" responsible="true" load="100.0"/>
92
68
  <allocation task-id="5" resource-id="9" function="Default:0" responsible="true" load="100.0"/>
93
69
  <allocation task-id="6" resource-id="9" function="Default:0" responsible="true" load="100.0"/>
94
- <allocation task-id="7" resource-id="6" function="Default:1" responsible="true" load="100.0"/>
95
- <allocation task-id="8" resource-id="7" function="Default:0" responsible="true" load="100.0"/>
96
- <allocation task-id="10" resource-id="9" function="Default:0" responsible="false" load="100.0"/>
97
70
  <allocation task-id="10" resource-id="7" function="Default:0" responsible="true" load="100.0"/>
98
- <allocation task-id="34" resource-id="9" function="Default:0" responsible="true" load="100.0"/>
99
- <allocation task-id="35" resource-id="7" function="Default:0" responsible="true" load="100.0"/>
100
- <allocation task-id="36" resource-id="6" function="Default:1" responsible="true" load="100.0"/>
71
+ <allocation task-id="10" resource-id="9" function="Default:0" responsible="false" load="100.0"/>
72
+ <allocation task-id="12" resource-id="7" function="Default:0" responsible="true" load="100.0"/>
101
73
  <allocation task-id="12" resource-id="6" function="Default:1" responsible="true" load="100.0"/>
102
74
  <allocation task-id="13" resource-id="7" function="Default:0" responsible="true" load="100.0"/>
103
75
  <allocation task-id="14" resource-id="6" function="Default:1" responsible="true" load="100.0"/>
104
76
  <allocation task-id="15" resource-id="7" function="Default:0" responsible="true" load="100.0"/>
105
- <allocation task-id="17" resource-id="9" function="Default:0" responsible="false" load="100.0"/>
106
- <allocation task-id="17" resource-id="7" function="Default:0" responsible="false" load="100.0"/>
107
- <allocation task-id="17" resource-id="6" function="Default:1" responsible="true" load="100.0"/>
108
- <allocation task-id="17" resource-id="8" function="Default:0" responsible="false" load="100.0"/>
109
- <allocation task-id="19" resource-id="8" function="Default:0" responsible="true" load="100.0"/>
110
- <allocation task-id="20" resource-id="7" function="Default:0" responsible="true" load="100.0"/>
111
- <allocation task-id="20" resource-id="6" function="Default:1" responsible="true" load="100.0"/>
112
- <allocation task-id="21" resource-id="7" function="Default:0" responsible="true" load="100.0"/>
113
- <allocation task-id="23" resource-id="9" function="Default:0" responsible="true" load="100.0"/>
114
77
  </allocations>
115
78
  <vacations/>
116
79
  <taskdisplaycolumns>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ardekantur-gantty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ardekantur
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-31 00:00:00 -07:00
12
+ date: 2008-11-20 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency