doc/TaskJuggler/TimeSheetRecord.html in taskjuggler-0.0.8 vs doc/TaskJuggler/TimeSheetRecord.html in taskjuggler-0.0.9
- old
+ new
@@ -149,10 +149,12 @@
<li><a href="../TaskJuggler/AttributeBase.html">TaskJuggler::AttributeBase</a></li>
<li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
+
<li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
<li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
<li><a href="../TaskJuggler/BookingListAttribute.html">TaskJuggler::BookingListAttribute</a></li>
@@ -227,10 +229,12 @@
<li><a href="../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li>
<li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
+
<li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
<li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
<li><a href="../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li>
@@ -259,10 +263,12 @@
<li><a href="../TaskJuggler/LogicalExpression.html">TaskJuggler::LogicalExpression</a></li>
<li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
+
<li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
<li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
<li><a href="../TaskJuggler/LogicalOperation.html">TaskJuggler::LogicalOperation</a></li>
@@ -539,10 +545,12 @@
<li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
+
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
<li><a href="../TaskJuggler/XMLBlob.html">TaskJuggler::XMLBlob</a></li>
@@ -565,12 +573,10 @@
<li><a href="../RuntimeConfig.html">RuntimeConfig</a></li>
<li><a href="../String.html">String</a></li>
- <li><a href="../StringIO.html">StringIO</a></li>
-
</ul>
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
</div>
@@ -760,30 +766,30 @@
<div class="method-source-code"
id="new-source">
<pre>
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 26</span>
-26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">timeSheet</span>, <span class="ruby-identifier">task</span>)
-27: <span class="ruby-comment cmt"># This is a reference to a Task object for existing tasks or an ID as</span>
-28: <span class="ruby-comment cmt"># String for new tasks.</span>
-29: <span class="ruby-ivar">@task</span> = <span class="ruby-identifier">task</span>
-30: <span class="ruby-comment cmt"># Add the new TimeSheetRecord to the TimeSheet it belongs to.</span>
-31: (<span class="ruby-ivar">@timeSheet</span> = <span class="ruby-identifier">timeSheet</span>) <span class="ruby-operator"><<</span> <span class="ruby-keyword kw">self</span>
-32: <span class="ruby-comment cmt"># Work done will be measured in time slots.</span>
-33: <span class="ruby-ivar">@work</span> = <span class="ruby-keyword kw">nil</span>
-34: <span class="ruby-comment cmt"># Remaining work will be measured in time slots.</span>
-35: <span class="ruby-ivar">@remaining</span> = <span class="ruby-keyword kw">nil</span>
-36: <span class="ruby-ivar">@expectedEnd</span> = <span class="ruby-keyword kw">nil</span>
-37: <span class="ruby-comment cmt"># For new task, we also need to store the name.</span>
-38: <span class="ruby-ivar">@name</span> = <span class="ruby-keyword kw">nil</span>
-39: <span class="ruby-comment cmt"># Reference to the JournalEntry object that holds the status for this</span>
-40: <span class="ruby-comment cmt"># record.</span>
-41: <span class="ruby-ivar">@status</span> = <span class="ruby-keyword kw">nil</span>
-42: <span class="ruby-ivar">@priority</span> = <span class="ruby-value">0</span>
-43: <span class="ruby-ivar">@sourceFileInfo</span> = <span class="ruby-keyword kw">nil</span>
-44: <span class="ruby-keyword kw">end</span></pre>
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 27</span>
+27: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">timeSheet</span>, <span class="ruby-identifier">task</span>)
+28: <span class="ruby-comment cmt"># This is a reference to a Task object for existing tasks or an ID as</span>
+29: <span class="ruby-comment cmt"># String for new tasks.</span>
+30: <span class="ruby-ivar">@task</span> = <span class="ruby-identifier">task</span>
+31: <span class="ruby-comment cmt"># Add the new TimeSheetRecord to the TimeSheet it belongs to.</span>
+32: (<span class="ruby-ivar">@timeSheet</span> = <span class="ruby-identifier">timeSheet</span>) <span class="ruby-operator"><<</span> <span class="ruby-keyword kw">self</span>
+33: <span class="ruby-comment cmt"># Work done will be measured in time slots.</span>
+34: <span class="ruby-ivar">@work</span> = <span class="ruby-keyword kw">nil</span>
+35: <span class="ruby-comment cmt"># Remaining work will be measured in time slots.</span>
+36: <span class="ruby-ivar">@remaining</span> = <span class="ruby-keyword kw">nil</span>
+37: <span class="ruby-ivar">@expectedEnd</span> = <span class="ruby-keyword kw">nil</span>
+38: <span class="ruby-comment cmt"># For new task, we also need to store the name.</span>
+39: <span class="ruby-ivar">@name</span> = <span class="ruby-keyword kw">nil</span>
+40: <span class="ruby-comment cmt"># Reference to the JournalEntry object that holds the status for this</span>
+41: <span class="ruby-comment cmt"># record.</span>
+42: <span class="ruby-ivar">@status</span> = <span class="ruby-keyword kw">nil</span>
+43: <span class="ruby-ivar">@priority</span> = <span class="ruby-value">0</span>
+44: <span class="ruby-ivar">@sourceFileInfo</span> = <span class="ruby-keyword kw">nil</span>
+45: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -818,14 +824,14 @@
<div class="method-source-code"
id="actual-nd-source">
<pre>
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 223</span>
-223: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">actualEnd</span>
-224: <span class="ruby-ivar">@expectedEnd</span>
-225: <span class="ruby-keyword kw">end</span></pre>
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 224</span>
+224: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">actualEnd</span>
+225: <span class="ruby-ivar">@expectedEnd</span>
+226: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -854,15 +860,15 @@
<div class="method-source-code"
id="actual-emaining-source">
<pre>
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 207</span>
-207: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">actualRemaining</span>
-208: <span class="ruby-identifier">project</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">resource</span>.<span class="ruby-identifier">project</span>
-209: <span class="ruby-identifier">project</span>.<span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-ivar">@remaining</span> * <span class="ruby-identifier">project</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
-210: <span class="ruby-keyword kw">end</span></pre>
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 208</span>
+208: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">actualRemaining</span>
+209: <span class="ruby-identifier">project</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">resource</span>.<span class="ruby-identifier">project</span>
+210: <span class="ruby-identifier">project</span>.<span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-ivar">@remaining</span> * <span class="ruby-identifier">project</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
+211: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -891,14 +897,14 @@
<div class="method-source-code"
id="actual-ork-ercent-source">
<pre>
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 190</span>
-190: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">actualWorkPercent</span>
-191: (<span class="ruby-ivar">@work</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">totalGrossWorkingSlots</span>) * <span class="ruby-value">100.0</span>
-192: <span class="ruby-keyword kw">end</span></pre>
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 191</span>
+191: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">actualWorkPercent</span>
+192: (<span class="ruby-ivar">@work</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">totalGrossWorkingSlots</span>) * <span class="ruby-value">100.0</span>
+193: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -927,77 +933,77 @@
<div class="method-source-code"
id="check-source">
<pre>
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 59</span>
- 59: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">check</span>
- 60: <span class="ruby-identifier">scIdx</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">scenarioIdx</span>
- 61: <span class="ruby-identifier">taskId</span> = <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Task</span>) <span class="ruby-operator">?</span> <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">fullId</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@task</span>
- 62: <span class="ruby-comment cmt"># All TimeSheetRecords must have a 'work' attribute.</span>
- 63: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@work</span>.<span class="ruby-identifier">nil?</span>
- 64: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_no_work'</span>,
- 65: <span class="ruby-node">"The time sheet record for task #{taskId} must "</span> <span class="ruby-operator">+</span>
- 66: <span class="ruby-value str">"have a 'work' attribute to specify how much was done "</span> <span class="ruby-operator">+</span>
- 67: <span class="ruby-value str">"for this task during the reported period."</span>)
- 68: <span class="ruby-keyword kw">end</span>
- 69: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Task</span>)
- 70: <span class="ruby-comment cmt"># This is already known tasks.</span>
- 71: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@task</span>[<span class="ruby-value str">'effort'</span>, <span class="ruby-identifier">scIdx</span>] <span class="ruby-operator">></span> <span class="ruby-value">0</span>
- 72: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@remaining</span>
- 73: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_no_remaining'</span>,
- 74: <span class="ruby-node">"The time sheet record for task #{taskId} must "</span> <span class="ruby-operator">+</span>
- 75: <span class="ruby-value str">"have a 'remaining' attribute to specify how much "</span> <span class="ruby-operator">+</span>
- 76: <span class="ruby-value str">"effort is left for this task."</span>)
- 77: <span class="ruby-keyword kw">end</span>
- 78: <span class="ruby-keyword kw">else</span>
- 79: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@expectedEnd</span>
- 80: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_no_expected_end'</span>,
- 81: <span class="ruby-node">"The time sheet record for task #{taskId} must "</span> <span class="ruby-operator">+</span>
- 82: <span class="ruby-value str">"have an 'end' attribute to specify the expected end "</span> <span class="ruby-operator">+</span>
- 83: <span class="ruby-value str">"of this task."</span>)
- 84: <span class="ruby-keyword kw">end</span>
- 85: <span class="ruby-keyword kw">end</span>
- 86: <span class="ruby-keyword kw">else</span>
- 87: <span class="ruby-comment cmt"># This is for new tasks.</span>
- 88: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@remaining</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@expectedEnd</span>.<span class="ruby-identifier">nil?</span>
- 89: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_no_rem_or_end'</span>,
- 90: <span class="ruby-node">"New task #{taskId} requires either a 'remaining' or a "</span> <span class="ruby-operator">+</span>
- 91: <span class="ruby-value str">"'end' attribute."</span>)
- 92: <span class="ruby-keyword kw">end</span>
- 93: <span class="ruby-keyword kw">end</span>
- 94:
- 95: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@work</span> <span class="ruby-operator">>=</span> <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">daysToSlots</span>(<span class="ruby-value">1</span>) <span class="ruby-operator">&&</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">nil?</span>
- 96: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_no_status_work'</span>,
- 97: <span class="ruby-node">"You must specify a status for task #{taskId}."</span>)
- 98: <span class="ruby-keyword kw">end</span>
- 99:
-100: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@status</span>
-101: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">headline</span>.<span class="ruby-identifier">empty?</span>
-102: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_no_headline'</span>,
-103: <span class="ruby-value str">"You must provide a headline for the status of "</span> <span class="ruby-operator">+</span>
-104: <span class="ruby-node">"task #{@task.fullId}"</span>)
-105: <span class="ruby-keyword kw">end</span>
-106: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">summary</span> <span class="ruby-operator">&&</span>
-107: <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">summary</span>.<span class="ruby-identifier">richText</span>.<span class="ruby-identifier">inputText</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"A summary text\n"</span>
-108: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_default_summary'</span>,
-109: <span class="ruby-value str">"You must change the default summary text of the status "</span> <span class="ruby-operator">+</span>
-110: <span class="ruby-node">"for task #{taskId}."</span>)
-111: <span class="ruby-keyword kw">end</span>
-112: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">alertLevel</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">summary</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&&</span>
-113: <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">details</span>.<span class="ruby-identifier">nil?</span>
-114: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_alert1_more_details'</span>,
-115: <span class="ruby-node">"Task #{taskId} has an elevated alert level and must "</span> <span class="ruby-operator">+</span>
-116: <span class="ruby-value str">"have a summary or details section."</span>)
-117: <span class="ruby-keyword kw">end</span>
-118: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">alertLevel</span> <span class="ruby-operator">></span> <span class="ruby-value">1</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">details</span>.<span class="ruby-identifier">nil?</span>
-119: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_alert2_more_details'</span>,
-120: <span class="ruby-node">"Task #{taskId} has a high alert level and must have "</span> <span class="ruby-operator">+</span>
-121: <span class="ruby-value str">"a details section."</span>)
-122: <span class="ruby-keyword kw">end</span>
-123: <span class="ruby-keyword kw">end</span>
-124: <span class="ruby-keyword kw">end</span></pre>
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 60</span>
+ 60: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">check</span>
+ 61: <span class="ruby-identifier">scIdx</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">scenarioIdx</span>
+ 62: <span class="ruby-identifier">taskId</span> = <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Task</span>) <span class="ruby-operator">?</span> <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">fullId</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@task</span>
+ 63: <span class="ruby-comment cmt"># All TimeSheetRecords must have a 'work' attribute.</span>
+ 64: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@work</span>.<span class="ruby-identifier">nil?</span>
+ 65: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_no_work'</span>,
+ 66: <span class="ruby-node">"The time sheet record for task #{taskId} must "</span> <span class="ruby-operator">+</span>
+ 67: <span class="ruby-value str">"have a 'work' attribute to specify how much was done "</span> <span class="ruby-operator">+</span>
+ 68: <span class="ruby-value str">"for this task during the reported period."</span>)
+ 69: <span class="ruby-keyword kw">end</span>
+ 70: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Task</span>)
+ 71: <span class="ruby-comment cmt"># This is already known tasks.</span>
+ 72: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@task</span>[<span class="ruby-value str">'effort'</span>, <span class="ruby-identifier">scIdx</span>] <span class="ruby-operator">></span> <span class="ruby-value">0</span>
+ 73: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@remaining</span>
+ 74: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_no_remaining'</span>,
+ 75: <span class="ruby-node">"The time sheet record for task #{taskId} must "</span> <span class="ruby-operator">+</span>
+ 76: <span class="ruby-value str">"have a 'remaining' attribute to specify how much "</span> <span class="ruby-operator">+</span>
+ 77: <span class="ruby-value str">"effort is left for this task."</span>)
+ 78: <span class="ruby-keyword kw">end</span>
+ 79: <span class="ruby-keyword kw">else</span>
+ 80: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@expectedEnd</span>
+ 81: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_no_expected_end'</span>,
+ 82: <span class="ruby-node">"The time sheet record for task #{taskId} must "</span> <span class="ruby-operator">+</span>
+ 83: <span class="ruby-value str">"have an 'end' attribute to specify the expected end "</span> <span class="ruby-operator">+</span>
+ 84: <span class="ruby-value str">"of this task."</span>)
+ 85: <span class="ruby-keyword kw">end</span>
+ 86: <span class="ruby-keyword kw">end</span>
+ 87: <span class="ruby-keyword kw">else</span>
+ 88: <span class="ruby-comment cmt"># This is for new tasks.</span>
+ 89: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@remaining</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@expectedEnd</span>.<span class="ruby-identifier">nil?</span>
+ 90: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_no_rem_or_end'</span>,
+ 91: <span class="ruby-node">"New task #{taskId} requires either a 'remaining' or a "</span> <span class="ruby-operator">+</span>
+ 92: <span class="ruby-value str">"'end' attribute."</span>)
+ 93: <span class="ruby-keyword kw">end</span>
+ 94: <span class="ruby-keyword kw">end</span>
+ 95:
+ 96: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@work</span> <span class="ruby-operator">>=</span> <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">daysToSlots</span>(<span class="ruby-value">1</span>) <span class="ruby-operator">&&</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">nil?</span>
+ 97: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_no_status_work'</span>,
+ 98: <span class="ruby-node">"You must specify a status for task #{taskId}."</span>)
+ 99: <span class="ruby-keyword kw">end</span>
+100:
+101: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@status</span>
+102: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">headline</span>.<span class="ruby-identifier">empty?</span>
+103: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_no_headline'</span>,
+104: <span class="ruby-value str">"You must provide a headline for the status of "</span> <span class="ruby-operator">+</span>
+105: <span class="ruby-node">"task #{@task.fullId}"</span>)
+106: <span class="ruby-keyword kw">end</span>
+107: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">summary</span> <span class="ruby-operator">&&</span>
+108: <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">summary</span>.<span class="ruby-identifier">richText</span>.<span class="ruby-identifier">inputText</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"A summary text\n"</span>
+109: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_default_summary'</span>,
+110: <span class="ruby-value str">"You must change the default summary text of the status "</span> <span class="ruby-operator">+</span>
+111: <span class="ruby-node">"for task #{taskId}."</span>)
+112: <span class="ruby-keyword kw">end</span>
+113: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">alertLevel</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">summary</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&&</span>
+114: <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">details</span>.<span class="ruby-identifier">nil?</span>
+115: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_alert1_more_details'</span>,
+116: <span class="ruby-node">"Task #{taskId} has an elevated alert level and must "</span> <span class="ruby-operator">+</span>
+117: <span class="ruby-value str">"have a summary or details section."</span>)
+118: <span class="ruby-keyword kw">end</span>
+119: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">alertLevel</span> <span class="ruby-operator">></span> <span class="ruby-value">1</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@status</span>.<span class="ruby-identifier">details</span>.<span class="ruby-identifier">nil?</span>
+120: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'ts_alert2_more_details'</span>,
+121: <span class="ruby-node">"Task #{taskId} has a high alert level and must have "</span> <span class="ruby-operator">+</span>
+122: <span class="ruby-value str">"a details section."</span>)
+123: <span class="ruby-keyword kw">end</span>
+124: <span class="ruby-keyword kw">end</span>
+125: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1026,14 +1032,14 @@
<div class="method-source-code"
id="plan-nd-source">
<pre>
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 228</span>
-228: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">planEnd</span>
-229: <span class="ruby-ivar">@task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">scenarioIdx</span>]
-230: <span class="ruby-keyword kw">end</span></pre>
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 229</span>
+229: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">planEnd</span>
+230: <span class="ruby-ivar">@task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">scenarioIdx</span>]
+231: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1062,19 +1068,19 @@
<div class="method-source-code"
id="plan-emaining-source">
<pre>
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 213</span>
-213: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">planRemaining</span>
-214: <span class="ruby-identifier">resource</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">resource</span>
-215: <span class="ruby-identifier">project</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">project</span>
-216: <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">scenarioIdx</span>
-217: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">project</span>[<span class="ruby-value str">'now'</span>], <span class="ruby-keyword kw">true</span>)
-218: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-identifier">scenarioIdx</span>])
-219: <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-identifier">scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">resource</span>)
-220: <span class="ruby-keyword kw">end</span></pre>
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 214</span>
+214: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">planRemaining</span>
+215: <span class="ruby-identifier">resource</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">resource</span>
+216: <span class="ruby-identifier">project</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">project</span>
+217: <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">scenarioIdx</span>
+218: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">project</span>[<span class="ruby-value str">'now'</span>], <span class="ruby-keyword kw">true</span>)
+219: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-identifier">scenarioIdx</span>])
+220: <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-identifier">scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">resource</span>)
+221: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1103,21 +1109,21 @@
<div class="method-source-code"
id="plan-ork-ercent-source">
<pre>
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 195</span>
-195: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">planWorkPercent</span>
-196: <span class="ruby-identifier">resource</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">resource</span>
-197: <span class="ruby-identifier">project</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">project</span>
-198: <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">scenarioIdx</span>
-199: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>)
-200: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>)
-201: (<span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">resource</span>.<span class="ruby-identifier">getAllocatedSlots</span>(<span class="ruby-identifier">scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
-202: <span class="ruby-ivar">@task</span>).<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span>
-203: <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">totalGrossWorkingSlots</span>) * <span class="ruby-value">100.0</span>
-204: <span class="ruby-keyword kw">end</span></pre>
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 196</span>
+196: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">planWorkPercent</span>
+197: <span class="ruby-identifier">resource</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">resource</span>
+198: <span class="ruby-identifier">project</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">project</span>
+199: <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">scenarioIdx</span>
+200: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>)
+201: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>)
+202: (<span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">resource</span>.<span class="ruby-identifier">getAllocatedSlots</span>(<span class="ruby-identifier">scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
+203: <span class="ruby-ivar">@task</span>).<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span>
+204: <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">totalGrossWorkingSlots</span>) * <span class="ruby-value">100.0</span>
+205: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1144,14 +1150,14 @@
<div class="method-source-code"
id="task-d-source">
<pre>
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 185</span>
-185: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">taskId</span>
-186: <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Task</span>) <span class="ruby-operator">?</span> <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">fullId</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">task</span>
-187: <span class="ruby-keyword kw">end</span></pre>
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 186</span>
+186: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">taskId</span>
+187: <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Task</span>) <span class="ruby-operator">?</span> <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">fullId</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">task</span>
+188: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1178,69 +1184,69 @@
<div class="method-source-code"
id="warn-n-elta-source">
<pre>
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 126</span>
-126: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warnOnDelta</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>)
-127: <span class="ruby-comment cmt"># Ignore personal entries.</span>
-128: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@task</span>
-129:
-130: <span class="ruby-identifier">resource</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">resource</span>
-131: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
-132: <span class="ruby-comment cmt"># A resource has requested a new Task to be created.</span>
-133: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ts_res_new_task'</span>,
-134: <span class="ruby-node">"#{resource.name} is requesting a new task:\n"</span> <span class="ruby-operator">+</span>
-135: <span class="ruby-node">" ID: #{@task}\n"</span> <span class="ruby-operator">+</span>
-136: <span class="ruby-node">" Name: #{@name}\n"</span> <span class="ruby-operator">+</span>
-137: <span class="ruby-node">" Work: #{@timeSheet.slotsToDays(@work)}d "</span> <span class="ruby-operator">+</span>
-138: (<span class="ruby-ivar">@remaining</span> <span class="ruby-operator">?</span>
-139: <span class="ruby-node">"Remaining: #{@timeSheet.slotsToDays(@remaining)}d"</span> <span class="ruby-operator">:</span>
-140: <span class="ruby-node">"End: #{@end.to_s}"</span>))
-141: <span class="ruby-keyword kw">return</span>
-142: <span class="ruby-keyword kw">end</span>
-143:
-144: <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">scenarioIdx</span>
-145: <span class="ruby-identifier">project</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">project</span>
-146: <span class="ruby-identifier">plannedWork</span> = <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-identifier">scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
-147: <span class="ruby-identifier">resource</span>)
-148: <span class="ruby-comment cmt"># Convert the @work slots into a daily load.</span>
-149: <span class="ruby-identifier">work</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-ivar">@work</span> * <span class="ruby-identifier">project</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
-150:
-151: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">work</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">plannedWork</span>
-152: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ts_res_work_delta'</span>,
-153: <span class="ruby-node">"#{resource.name} worked "</span> <span class="ruby-operator">+</span>
-154: <span class="ruby-node">"#{work < plannedWork ? 'less' : 'more'} "</span> <span class="ruby-operator">+</span>
-155: <span class="ruby-node">"on #{@task.fullId}\n"</span> <span class="ruby-operator">+</span>
-156: <span class="ruby-node">"#{work}d instead of #{plannedWork}d"</span>)
-157: <span class="ruby-keyword kw">end</span>
-158: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@task</span>[<span class="ruby-value str">'effort'</span>, <span class="ruby-identifier">scenarioIdx</span>] <span class="ruby-operator">></span> <span class="ruby-value">0</span>
-159: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">endIdx</span>
-160: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-identifier">scenarioIdx</span>])
-161: <span class="ruby-identifier">remainingWork</span> = <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-identifier">scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
-162: <span class="ruby-identifier">resource</span>)
-163: <span class="ruby-comment cmt"># Convert the @remaining slots into a daily load.</span>
-164: <span class="ruby-identifier">remaining</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-ivar">@remaining</span> *
-165: <span class="ruby-identifier">project</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
-166: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">remaining</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">remainingWork</span>
-167: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ts_res_remain_delta'</span>,
-168: <span class="ruby-node">"#{resource.name} requests "</span> <span class="ruby-operator">+</span>
-169: <span class="ruby-node">"#{remaining < remainingWork ? 'less' : 'more'} "</span> <span class="ruby-operator">+</span>
-170: <span class="ruby-node">"remaining effort for task #{@task.fullId}\n"</span> <span class="ruby-operator">+</span>
-171: <span class="ruby-node">"#{remaining}d instead of #{remainingWork}d"</span>)
-172: <span class="ruby-keyword kw">end</span>
-173: <span class="ruby-keyword kw">else</span>
-174: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@expectedEnd</span> <span class="ruby-operator">!=</span> <span class="ruby-ivar">@task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-identifier">scenarioIdx</span>]
-175: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ts_res_end_delta'</span>,
-176: <span class="ruby-node">"#{resource.name} requests "</span> <span class="ruby-operator">+</span>
-177: <span class="ruby-node">"#{@expectedEnd < @task['end', scenarioIdx] ?
-178: 'earlier' : 'later'} end (#{@expectedEnd}) for task "</span> <span class="ruby-operator">+</span>
-179: <span class="ruby-node">"#{@task.fullId}. Planned end is "</span> <span class="ruby-operator">+</span>
-180: <span class="ruby-node">"#{@task['end', scenarioIdx]}."</span>)
-181: <span class="ruby-keyword kw">end</span>
-182: <span class="ruby-keyword kw">end</span>
-183: <span class="ruby-keyword kw">end</span></pre>
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 127</span>
+127: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warnOnDelta</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>)
+128: <span class="ruby-comment cmt"># Ignore personal entries.</span>
+129: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@task</span>
+130:
+131: <span class="ruby-identifier">resource</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">resource</span>
+132: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
+133: <span class="ruby-comment cmt"># A resource has requested a new Task to be created.</span>
+134: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ts_res_new_task'</span>,
+135: <span class="ruby-node">"#{resource.name} is requesting a new task:\n"</span> <span class="ruby-operator">+</span>
+136: <span class="ruby-node">" ID: #{@task}\n"</span> <span class="ruby-operator">+</span>
+137: <span class="ruby-node">" Name: #{@name}\n"</span> <span class="ruby-operator">+</span>
+138: <span class="ruby-node">" Work: #{@timeSheet.slotsToDays(@work)}d "</span> <span class="ruby-operator">+</span>
+139: (<span class="ruby-ivar">@remaining</span> <span class="ruby-operator">?</span>
+140: <span class="ruby-node">"Remaining: #{@timeSheet.slotsToDays(@remaining)}d"</span> <span class="ruby-operator">:</span>
+141: <span class="ruby-node">"End: #{@end.to_s}"</span>))
+142: <span class="ruby-keyword kw">return</span>
+143: <span class="ruby-keyword kw">end</span>
+144:
+145: <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">scenarioIdx</span>
+146: <span class="ruby-identifier">project</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">project</span>
+147: <span class="ruby-identifier">plannedWork</span> = <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-identifier">scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
+148: <span class="ruby-identifier">resource</span>)
+149: <span class="ruby-comment cmt"># Convert the @work slots into a daily load.</span>
+150: <span class="ruby-identifier">work</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-ivar">@work</span> * <span class="ruby-identifier">project</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
+151:
+152: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">work</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">plannedWork</span>
+153: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ts_res_work_delta'</span>,
+154: <span class="ruby-node">"#{resource.name} worked "</span> <span class="ruby-operator">+</span>
+155: <span class="ruby-node">"#{work < plannedWork ? 'less' : 'more'} "</span> <span class="ruby-operator">+</span>
+156: <span class="ruby-node">"on #{@task.fullId}\n"</span> <span class="ruby-operator">+</span>
+157: <span class="ruby-node">"#{work}d instead of #{plannedWork}d"</span>)
+158: <span class="ruby-keyword kw">end</span>
+159: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@task</span>[<span class="ruby-value str">'effort'</span>, <span class="ruby-identifier">scenarioIdx</span>] <span class="ruby-operator">></span> <span class="ruby-value">0</span>
+160: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">endIdx</span>
+161: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-identifier">scenarioIdx</span>])
+162: <span class="ruby-identifier">remainingWork</span> = <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-identifier">scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
+163: <span class="ruby-identifier">resource</span>)
+164: <span class="ruby-comment cmt"># Convert the @remaining slots into a daily load.</span>
+165: <span class="ruby-identifier">remaining</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-ivar">@remaining</span> *
+166: <span class="ruby-identifier">project</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
+167: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">remaining</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">remainingWork</span>
+168: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ts_res_remain_delta'</span>,
+169: <span class="ruby-node">"#{resource.name} requests "</span> <span class="ruby-operator">+</span>
+170: <span class="ruby-node">"#{remaining < remainingWork ? 'less' : 'more'} "</span> <span class="ruby-operator">+</span>
+171: <span class="ruby-node">"remaining effort for task #{@task.fullId}\n"</span> <span class="ruby-operator">+</span>
+172: <span class="ruby-node">"#{remaining}d instead of #{remainingWork}d"</span>)
+173: <span class="ruby-keyword kw">end</span>
+174: <span class="ruby-keyword kw">else</span>
+175: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@expectedEnd</span> <span class="ruby-operator">!=</span> <span class="ruby-ivar">@task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-identifier">scenarioIdx</span>]
+176: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ts_res_end_delta'</span>,
+177: <span class="ruby-node">"#{resource.name} requests "</span> <span class="ruby-operator">+</span>
+178: <span class="ruby-node">"#{@expectedEnd < @task['end', scenarioIdx] ?
+179: 'earlier' : 'later'} end (#{@expectedEnd}) for task "</span> <span class="ruby-operator">+</span>
+180: <span class="ruby-node">"#{@task.fullId}. Planned end is "</span> <span class="ruby-operator">+</span>
+181: <span class="ruby-node">"#{@task['end', scenarioIdx]}."</span>)
+182: <span class="ruby-keyword kw">end</span>
+183: <span class="ruby-keyword kw">end</span>
+184: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1271,19 +1277,19 @@
<div class="method-source-code"
id="work--source">
<pre>
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 49</span>
-49: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">work=</span>(<span class="ruby-identifier">value</span>)
-50: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
-51: <span class="ruby-ivar">@work</span> = <span class="ruby-identifier">value</span>
-52: <span class="ruby-keyword kw">else</span>
-53: <span class="ruby-comment cmt"># Must be percent value</span>
-54: <span class="ruby-ivar">@work</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">percentToSlots</span>(<span class="ruby-identifier">value</span>)
-55: <span class="ruby-keyword kw">end</span>
-56: <span class="ruby-keyword kw">end</span></pre>
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 50</span>
+50: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">work=</span>(<span class="ruby-identifier">value</span>)
+51: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
+52: <span class="ruby-ivar">@work</span> = <span class="ruby-identifier">value</span>
+53: <span class="ruby-keyword kw">else</span>
+54: <span class="ruby-comment cmt"># Must be percent value</span>
+55: <span class="ruby-ivar">@work</span> = <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">percentToSlots</span>(<span class="ruby-identifier">value</span>)
+56: <span class="ruby-keyword kw">end</span>
+57: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1316,14 +1322,14 @@
<div class="method-source-code"
id="error-source">
<pre>
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 234</span>
-234: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
-235: <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-ivar">@sourceFileInfo</span>)
-236: <span class="ruby-keyword kw">end</span></pre>
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 235</span>
+235: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
+236: <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-ivar">@sourceFileInfo</span>)
+237: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1350,13 +1356,13 @@
<div class="method-source-code"
id="warning-source">
<pre>
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 238</span>
-238: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
-239: <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-ivar">@sourceFileInfo</span>)
-240: <span class="ruby-keyword kw">end</span></pre>
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 239</span>
+239: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
+240: <span class="ruby-ivar">@timeSheet</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-ivar">@sourceFileInfo</span>)
+241: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>