Author: glen                         Date: Wed Aug  2 08:21:50 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- new logic
- add check for future timetrackings

---- Files affected:
SOURCES:
   eventum-timetracking-advanced-logic.patch (1.2 -> 1.3) 

---- Diffs:

================================================================
Index: SOURCES/eventum-timetracking-advanced-logic.patch
diff -u SOURCES/eventum-timetracking-advanced-logic.patch:1.2 
SOURCES/eventum-timetracking-advanced-logic.patch:1.3
--- SOURCES/eventum-timetracking-advanced-logic.patch:1.2       Tue Jul 18 
00:46:56 2006
+++ SOURCES/eventum-timetracking-advanced-logic.patch   Wed Aug  2 10:21:45 2006
@@ -27,81 +27,109 @@
  }
  
  function padDateValue(str)
---- eventum-20060717/templates/add_time_tracking.tpl.html~     2006-07-18 
01:36:29.901601912 +0300
-+++ eventum-20060717/templates/add_time_tracking.tpl.html      2006-07-18 
01:37:24.232815764 +0300
-@@ -51,6 +51,65 @@
+--- eventum-20060717/templates/add_time_tracking.tpl.html      2006-07-18 
01:37:24.232815764 +0300
++++ eventum-20060725/templates/add_time_tracking.tpl.html      2006-08-02 
10:54:00.044804730 +0300
+@@ -28,6 +28,24 @@
+ {literal}
+ <script language="JavaScript">
+ <!--
++
++/**
++ * Make javascript Date() object from datetime form selection.
++ *
++ * @param     Object  f               Form object.
++ * @param     String  name    Form element prefix for date.
++ */
++function makeDate(f, name) {
++      var d = new Date();
++      d.setFullYear(f.elements[name + '[Year]'].value);
++      d.setMonth(f.elements[name + '[Month]'].value - 1);
++      d.setDate(f.elements[name + '[Day]'].value);
++      d.setHours(f.elements[name + '[Hour]'].value);
++      d.setMinutes(f.elements[name + '[Minute]'].value);
++      d.setSeconds(0);
++      return d;
++}
++
+ function validateTimeForm(f)
+ {
+     if (isWhitespace(f.summary.value)) {
+@@ -49,7 +67,68 @@
+         alert('{/literal}{t}Please select a valid date of 
work.{/t}{literal}');
+         return false;
      }
-     return true;
- }
+-    return true;
++
++      var now = new Date();
++      var d1 = makeDate(f, 'date');
++      if (d1 > now) {
++              alert('{/literal}{t}Start time in the future.{/t}{literal}');
++              return false;
++      }
++      var d2 = makeDate(f, 'date2');
++      if (d2 > now) {
++              alert('{/literal}{t}End time in the future.{/t}{literal}');
++              return false;
++      }
++      return true;
++}
 +
++/**
++ * @param     Object  f               Form object
++ * @param     Integer type    The type of update occouring.
++ *                                                    0 = Duration was 
updated.
++ *                                                    1 = Start time was 
updated.
++ *                                                    2 = End time was 
updated.
++ *                                                    11 = Start time refresh 
icon was clicked.
++ *                                                    12 = End time refresh 
icon was clicked.
++ */
 +function calcDateDiff(f, type)
 +{
-+      /*
-+      Logic:
-+      if duration is filled
-+      - if start time is modified, the end time is calculated
-+      - if end time is modified, the start time is calculated
-+
-+      if duration is empty then duration is calculated when you change either
-+      start or end time.
-+
-+      clicking refresh icon on either times will make that time current date 
and
-+      recalculate duration
-+
-+      */
 +      var duration = f.elements['time_spent'].value;
++      // enforce 5 minute granuality.
 +      duration = Math.floor(duration / 5) * 5;
 +
-+      var d1 = new Date();
-+      d1.setFullYear(f.elements['date[Year]'].value);
-+      d1.setMonth(f.elements['date[Month]'].value - 1);
-+      d1.setDate(f.elements['date[Day]'].value);
-+      d1.setHours(f.elements['date[Hour]'].value);
-+      d1.setMinutes(f.elements['date[Minute]'].value);
-+      d1.setSeconds(0);
-+
-+      var d2 = new Date();
-+      d2.setFullYear(f.elements['date2[Year]'].value);
-+      d2.setMonth(f.elements['date2[Month]'].value - 1);
-+      d2.setDate(f.elements['date2[Day]'].value);
-+      d2.setHours(f.elements['date2[Hour]'].value);
-+      d2.setMinutes(f.elements['date2[Minute]'].value);
-+      d2.setSeconds(0);
++      var d1 = makeDate(f, 'date');
++      var d2 = makeDate(f, 'date2');
 +
 +      var minute = 1000 * 60;
-+      /* decide which time user changed */
-+      if (duration && type != 3) {
-+              // user changed start time or filled duration
-+              if (type == 1 || type == 0) {
-+                      d2.setTime(d1.getTime() + duration * minute)
-+
-+              // user changed end time
-+              } else if (type == 2) {
-+                      d1.setTime(d2.getTime() - duration * minute)
-+              }
-+      } else if (type) {
-+              duration = (d2.getTime() - d1.getTime()) / minute
++      /*
++      - if time is adjusted, duration is calculated,
++      - if duration is adjusted, the end time is adjusted,
++      - clicking refresh icon on either icons will make that time current date
++        and recalculate duration.
++      */
++
++      if (type == 0) { // duration
++              d1.setTime(d2.getTime() - duration * minute);
++      } else if (type == 1) { // start time
++              duration = (d2.getTime() - d1.getTime()) / minute;
++      } else if (type == 2) { // end time
++              duration = (d2.getTime() - d1.getTime()) / minute;
++      } else if (type == 11) { // refresh start time
++              d2.setTime(d1.getTime() + duration * minute);
++      } else if (type == 12) { // refresh end time
++              d1.setTime(d2.getTime() - duration * minute);
 +      }
 +
 +      /* refill form after calculation */
 +      updateTimeFields(f.name, 'date[Year]', 'date[Month]', 'date[Day]', 
'date[Hour]', 'date[Minute]', d1)
 +      updateTimeFields(f.name, 'date2[Year]', 'date2[Month]', 'date2[Day]', 
'date2[Hour]', 'date2[Minute]', d2)
 +
++      duration = parseInt(duration);
 +      if (duration > 0) {
-+              f.elements['time_spent'].value = parseInt(duration);
++              f.elements['time_spent'].value = duration;
 +      }
 +
-+}
+ }
  //-->
  </script>
- {/literal}
-@@ -82,19 +141,31 @@
+@@ -82,18 +161,30 @@
                    {include file="error_icon.tpl.html" field="category"}
                  </td>
                </tr>
--              <tr>
 +
-+              <tr>
+               <tr>
                  <td bgcolor="{$internal_color}" class="default_white" 
width="190" nowrap><b>{t}Time Spent{/t}:</b></td>
 -                <td bgcolor="{$light_color}" width="100%"><input 
class="default" type="text" size="5" name="time_spent" class="default"> <span 
class="default">({t}in minutes{/t})</span>{include file="error_icon.tpl.html" 
field="time_spent"}</td>
 +                <td bgcolor="{$light_color}" width="100%"><input 
class="default" type="text" size="5" name="time_spent" class="default" 
onChange="calcDateDiff(this.form, 0)"> <span class="default">({t}in 
minutes{/t})</span>{include file="error_icon.tpl.html" field="time_spent"}</td>
@@ -112,13 +140,12 @@
 +                <td bgcolor="{$light_color}" width="100%">
 +                  {html_select_date start_year='-1' day_value_format='%02d' 
field_array='date' prefix='' all_extra=' class="default" 
onChange="calcDateDiff(this.form, 1)"'}&nbsp;
 +                  {html_select_time minute_interval=5 field_array='date' 
prefix='' all_extra=' class="default" onChange="calcDateDiff(this.form, 1)"' 
display_seconds=false}
-+                  <a href="javascript:void(null);" 
onClick="javascript:updateTimeFields('add_time_form', 'date[Year]', 
'date[Month]', 'date[Day]', 'date[Hour]', 
'date[Minute]');calcDateDiff(getForm('add_time_form'), 3)"><img 
src="images/icons/refresh.gif" border="0"></a>
++                  <a href="javascript:void(null);" 
onClick="javascript:updateTimeFields('add_time_form', 'date[Year]', 
'date[Month]', 'date[Day]', 'date[Hour]', 
'date[Minute]');calcDateDiff(getForm('add_time_form'), 11)"><img 
src="images/icons/refresh.gif" border="0"></a>
 +                </td>
                </tr>
--              <tr>
--                <td bgcolor="{$internal_color}" class="default_white" 
width="190" nowrap><b>{t}Date of Work{/t}:</b></td>
 +
-+              <tr>
+               <tr>
+-                <td bgcolor="{$internal_color}" class="default_white" 
width="190" nowrap><b>{t}Date of Work{/t}:</b></td>
 +                <td bgcolor="{$internal_color}" class="default_white" 
width="190" nowrap><b>Work ended:</b></td>
                  <td bgcolor="{$light_color}" width="100%">
 -                  {html_select_date start_year='-1' day_value_format='%02d' 
field_array='date' prefix='' all_extra=' class="default"'}&nbsp;
@@ -126,16 +153,14 @@
 -                  <a href="javascript:void(null);" 
onClick="javascript:updateTimeFields('add_time_form', 'date[Year]', 
'date[Month]', 'date[Day]', 'date[Hour]', 'date[Minute]');"><img 
src="images/icons/refresh.gif" border="0"></a>
 +                  {html_select_date start_year='-1' day_value_format='%02d' 
field_array='date2' prefix='' all_extra=' class="default" 
onChange="calcDateDiff(this.form, 2)"'}&nbsp;
 +                  {html_select_time minute_interval=5 field_array='date2' 
prefix='' all_extra=' class="default" onChange="calcDateDiff(this.form, 2)"' 
display_seconds=false}
-+                  <a href="javascript:void(null);" 
onClick="javascript:updateTimeFields('add_time_form', 'date2[Year]', 
'date2[Month]', 'date2[Day]', 'date2[Hour]', 'date2[Minute]'); 
calcDateDiff(getForm('add_time_form'), 3)"><img src="images/icons/refresh.gif" 
border="0"></a>
++                  <a href="javascript:void(null);" 
onClick="javascript:updateTimeFields('add_time_form', 'date2[Year]', 
'date2[Month]', 'date2[Day]', 'date2[Hour]', 'date2[Minute]'); 
calcDateDiff(getForm('add_time_form'), 12)"><img src="images/icons/refresh.gif" 
border="0"></a>
                  </td>
                </tr>
--              <tr>
 +
-+              <tr>
+               <tr>
                  <td colspan="2" bgcolor="{$internal_color}" align="center" 
width="100%" nowrap>
                    <input type="submit" value="Add Time Entry" class="button">
-                 </td>
-@@ -182,6 +182,7 @@
+@@ -111,6 +202,7 @@
  <script language="JavaScript">
  <!--
  updateTimeFields('add_time_form', 'date[Year]', 'date[Month]', 'date[Day]', 
'date[Hour]', 'date[Minute]');
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/SOURCES/eventum-timetracking-advanced-logic.patch?r1=1.2&r2=1.3&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to