summaryrefslogtreecommitdiff
path: root/demos/time-tracker
diff options
context:
space:
mode:
Diffstat (limited to 'demos/time-tracker')
-rw-r--r--demos/time-tracker/protected/App_Data/MySQL4/time-tracker-mysql.sql1
-rw-r--r--demos/time-tracker/protected/application.xml5
-rw-r--r--demos/time-tracker/protected/pages/TimeTracker/MainLayout.tpl5
-rw-r--r--demos/time-tracker/protected/pages/TimeTracker/ReportProject.page46
-rw-r--r--demos/time-tracker/protected/pages/TimeTracker/ReportResource.page119
-rw-r--r--demos/time-tracker/themes/TimeTracker/clock.gifbin0 -> 2500 bytes
-rw-r--r--demos/time-tracker/themes/TimeTracker/project.css2
-rw-r--r--demos/time-tracker/themes/TimeTracker/report.css156
-rw-r--r--demos/time-tracker/themes/TimeTracker/site.css17
-rw-r--r--demos/time-tracker/themes/TimeTracker/sync.gifbin2721 -> 0 bytes
-rw-r--r--demos/time-tracker/themes/clock.pngbin0 -> 128984 bytes
11 files changed, 281 insertions, 70 deletions
diff --git a/demos/time-tracker/protected/App_Data/MySQL4/time-tracker-mysql.sql b/demos/time-tracker/protected/App_Data/MySQL4/time-tracker-mysql.sql
index 89de378a..bb120fc4 100644
--- a/demos/time-tracker/protected/App_Data/MySQL4/time-tracker-mysql.sql
+++ b/demos/time-tracker/protected/App_Data/MySQL4/time-tracker-mysql.sql
@@ -65,6 +65,7 @@ CREATE TABLE project (
`Name` varchar(255) NOT NULL,
Description varchar(255) default NULL,
CreationDate datetime NOT NULL,
+ CompletionDate datetime NOT NULL,
Disabled tinyint(1) NOT NULL default '0',
EstimateDuration float(10,2) NOT NULL default '0.00',
CreatorID varchar(50) NOT NULL,
diff --git a/demos/time-tracker/protected/application.xml b/demos/time-tracker/protected/application.xml
index 2bf705ef..80ad5ded 100644
--- a/demos/time-tracker/protected/application.xml
+++ b/demos/time-tracker/protected/application.xml
@@ -13,11 +13,10 @@
</paths>
<modules>
-<!--
+<!--
<module id="cache" class="System.Caching.TMemCache" />
--->
-
+-->
<module id="sqlmap" class="TSQLMap"
EnableConfigCache="true"
configFile="Application.App_Data.sqlite-sqlmap" />
diff --git a/demos/time-tracker/protected/pages/TimeTracker/MainLayout.tpl b/demos/time-tracker/protected/pages/TimeTracker/MainLayout.tpl
index 915b2fb3..ad33217b 100644
--- a/demos/time-tracker/protected/pages/TimeTracker/MainLayout.tpl
+++ b/demos/time-tracker/protected/pages/TimeTracker/MainLayout.tpl
@@ -36,5 +36,10 @@
</com:TForm>
+<div class="copyrights">
+Copyright &copy; 2005-2006 <a href="http://www.pradosoft.com">PradoSoft</a>.
+<span class="note"><a href="http://www.famfamfam.com/lab/icons/silk/">Silk icons</a> by Mark James.</span>
+</div>
+
</body>
</html> \ No newline at end of file
diff --git a/demos/time-tracker/protected/pages/TimeTracker/ReportProject.page b/demos/time-tracker/protected/pages/TimeTracker/ReportProject.page
index 5f961da4..fcf6101b 100644
--- a/demos/time-tracker/protected/pages/TimeTracker/ReportProject.page
+++ b/demos/time-tracker/protected/pages/TimeTracker/ReportProject.page
@@ -7,8 +7,16 @@
<com:TView>
<com:TLabel ForControl="projectList"
Text="Select a project. Use ctrl+click to select multiple projects at once: "/>
+ <span class="required">*</span><br />
<com:TListBox ID="projectList" CssClass="projects" SelectionMode="Multiple" />
- <com:TButton Text="Generate Report" OnClick="generateReport_Clicked"/>
+ <com:TRequiredFieldValidator
+ Style="display:block"
+ ControlToValidate="projectList"
+ ErrorMessage="Please select at least one project."
+ ControlCssClass="required-input" />
+ <div class="buttons">
+ <com:TButton Text="Generate Report" OnClick="generateReport_Clicked"/>
+ </div>
</com:TView>
<com:TView>
<com:TRepeater ID="projects" onItemCreated="project_itemCreated" EnableViewState="false">
@@ -16,16 +24,16 @@
<!-- project -->
<table class="project">
<tr>
- <th>Project Name</th>
- <th>Est. Hours</th>
- <th>Actual Hours</th>
- <th>Est. Completion</th>
+ <th class="name">Project Name</th>
+ <th class="est-hour">Est. Hours</th>
+ <th class="hours">Actual Hours</th>
+ <th class="completion">Est. Completion</th>
</tr>
<tr>
- <td><%# h($this->DataItem->ProjectName) %></td>
- <td><%# h($this->DataItem->EstimateHours) %></td>
- <td><%# h($this->DataItem->ActualHours) %></td>
- <td>
+ <td class="name"><%# h($this->DataItem->ProjectName) %></td>
+ <td class="est-hour"><%# h($this->DataItem->EstimateHours) %></td>
+ <td class="hours"><%# h($this->DataItem->ActualHours) %></td>
+ <td class="completion">
<com:System.I18N.TDateFormat
Pattern="dd/MM/yyyy"
Value=<%# $this->DataItem->EstimateCompletion %> />
@@ -34,24 +42,24 @@
<com:TRepeater ID="category" onItemCreated="Page.category_itemCreated" EnableViewState="false">
<prop:HeaderTemplate>
- <tr><td></td><td colspan="2">
+ <tr><td class="left-filler">&nbsp;</td><td colspan="2" class="sub-table">
</prop:HeaderTemplate>
<prop:FooterTemplate>
- </tr></td><td></td>
+ </td><td class="right-filler">&nbsp;</td></tr>
</prop:FooterTemplate>
<prop:ItemTemplate>
<!-- category -->
<table class="category">
<tr>
- <th>Category</th>
- <th>Est. Hours</th>
- <th>Actual Hours</th>
+ <th class="category">Category</th>
+ <th class="est-hour">Est. Hours</th>
+ <th class="hours">Actual Hours</th>
</tr>
<tr>
- <td><%# h($this->DataItem->CategoryName) %></td>
- <td><%# h($this->DataItem->EstimateHours) %></td>
- <td><%# h($this->DataItem->ActualHours) %></td>
+ <td class="category"><%# h($this->DataItem->CategoryName) %></td>
+ <td class="est-hour"><%# h($this->DataItem->EstimateHours) %></td>
+ <td class="hours"><%# h($this->DataItem->ActualHours) %></td>
</tr>
@@ -59,10 +67,10 @@
<prop:ItemTemplate>
<!-- member -->
<tr>
- <td colspan="2">
+ <td colspan="2" class="username">
<%# h($this->DataItem['username']) %>
</td>
- <td>
+ <td class="hours">
<%# h($this->DataItem['hours']) %>
</td>
</tr>
diff --git a/demos/time-tracker/protected/pages/TimeTracker/ReportResource.page b/demos/time-tracker/protected/pages/TimeTracker/ReportResource.page
index e72fd0f2..b9404f4a 100644
--- a/demos/time-tracker/protected/pages/TimeTracker/ReportResource.page
+++ b/demos/time-tracker/protected/pages/TimeTracker/ReportResource.page
@@ -5,76 +5,109 @@
<legend>Resource Report</legend>
<com:TMultiView ID="views" ActiveViewIndex="0">
<com:TView>
+ <div class="step1">
<h2>STEP 1 - Select project(s)</h2>
<com:TLabel ForControl="projectList"
Text="Select a project. Use ctrl+click to select multiple projects at once: "/>
+ <span class="required">*</span><br />
<com:TListBox ID="projectList" CssClass="projects" SelectionMode="Multiple" />
+ <com:TRequiredFieldValidator
+ ControlToValidate="projectList"
+ ErrorMessage="Please select at least one project."
+ ControlCssClass="required-input"
+ Display="None" />
+ </div>
+ <div class="step2">
<h2>STEP 2 - Select resource(s)</h2>
<com:TLabel ForControl="resourceList"
Text="Select a resource. Use ctrl+click to select multiple resources at once: "/>
+ <span class="required">*</span><br />
<com:TListBox ID="resourceList" CssClass="resource" SelectionMode="Multiple" />
+ <com:TRequiredFieldValidator
+ ControlToValidate="resourceList"
+ ErrorMessage="Please select at least one member."
+ ControlCssClass="required-input"
+ Display="None" />
+ </div>
+ <div class="step1">
<h2>STEP 3 - Select a date range</h2>
<div class="date-from">
<com:TLabel ForControl="dateFrom" Text="Dates from:"/>
+ <span class="required">*</span><br />
<com:TDatePicker id="dateFrom"
+ DateFormat="dd/MM/yyyy"
TimeStamp=<%= strtotime("-1 year") %>
InputMode="DropDownList" />
</div>
<div class="date-to">
- <com:TLabel ForControl="dateTo" Text="to:"/>
- <com:TDatePicker id="dateTo" InputMode="DropDownList"/>
+ <com:TLabel ForControl="dateTo" Text="Date to:"/>
+ <span class="required">*</span><br />
+ <com:TDatePicker id="dateTo" DateFormat="dd/MM/yyyy" InputMode="DropDownList"/>
+ <com:TCompareValidator
+ ControlToValidate="dateTo"
+ ControlToCompare="dateFrom"
+ DataType="Date"
+ Display="None"
+ ControlCssClass="required-input"
+ DateFormat="dd/MM/yyyy"
+ Operator="GreaterThanEqual"
+ ErrorMessage="The end date must be greater or equal to the start date." />
+ </div>
+ </div>
+ <div class="actions">&nbsp;
+ <div class="summary">
+ <com:TValidationSummary
+ AutoUpdate="false" />
</div>
<div class="buttons">
<com:TButton Text="Generate Report" Onclick="generateReport_Clicked"/>
</div>
+ </div>
</com:TView>
<com:TView>
- <h3>Beginning Date</h3>
- <h4><%= h($this->dateFrom->Date) %></h4>
- <h3>Ending Date</h3>
- <h4><%= h($this->dateTo->Date) %></h4>
-
+ <div class="date-range">
+ <h3 class="begin">Beginning Date:</h3>
+ <h4 class="begin"><%= h($this->dateFrom->Date) %></h4>
+ <h3 class="end">Ending Date:</h3>
+ <h4 class="end"><%= h($this->dateTo->Date) %></h4>
+ </div>
<com:TRepeater ID="resource_report" OnItemCreated="resource_report_itemCreated" EnableViewState="false">
<prop:ItemTemplate>
- <table class="resource">
- <tr>
- <th>Consultant</th>
- <th>Total Hours</th>
- </tr>
- <tr>
- <td><%# h($this->DataItem->Username) %></td>
- <td><%# h($this->DataItem->TotalHours) %></td>
- </tr>
- </table>
+ <div class="resource">
+ <strong class="name">Consultant:</strong>
+ <span class="name"><%# h($this->DataItem->Username) %></span>
+ <strong class="hours">Total Hours:</strong>
+ <span class="hours"><%# h($this->DataItem->TotalHours) %></span>
<com:TRepeater ID="time_entries">
- <prop:HeaderTemplate>
- <table>
- <tr>
- <th>Reported Date</th>
- <th>Project Name</th>
- <th>Category Name</th>
- <th>Duration</th>
- <th>Description</th>
- </tr>
- </prop:HeaderTemplate>
- <prop:FooterTemplate>
- </table>
- </prop:FooterTemplate>
- <prop:ItemTemplate>
- <tr>
- <td><com:System.I18N.TDateFormat
- Pattern="dd/MM/yyyy"
- Value=<%# $this->DataItem->ReportDate %> />
- </td>
- <td><%# h($this->DataItem->ProjectName) %></td>
- <td><%# h($this->DataItem->CategoryName) %></td>
- <td><%# h($this->DataItem->Duration) %></td>
- <td><%# h($this->DataItem->Description) %></td>
- </tr>
- </prop:ItemTemplate>
- </com:TRepeater>
+ <prop:HeaderTemplate>
+ <table class="project">
+ <tr>
+ <th class="date">Reported Date</th>
+ <th class="project">Project Name</th>
+ <th class="category">Category Name</th>
+ <th class="hours">Duration</th>
+ <th class="description">Description</th>
+ </tr>
+ </prop:HeaderTemplate>
+ <prop:FooterTemplate>
+ </table>
+ </prop:FooterTemplate>
+ <prop:ItemTemplate>
+ <tr>
+ <td class="date"><com:System.I18N.TDateFormat
+ Pattern="dd/MM/yyyy"
+ Value=<%# $this->DataItem->ReportDate %> />
+ </td>
+ <td class="project"><%# h($this->DataItem->ProjectName) %></td>
+ <td class="category"><%# h($this->DataItem->CategoryName) %></td>
+ <td class="hours"><%# h($this->DataItem->Duration) %></td>
+ <td class="description"><%# h($this->DataItem->Description) %></td>
+ </tr>
+ </prop:ItemTemplate>
+ </com:TRepeater>
+ </div>
</prop:ItemTemplate>
</com:TRepeater>
diff --git a/demos/time-tracker/themes/TimeTracker/clock.gif b/demos/time-tracker/themes/TimeTracker/clock.gif
new file mode 100644
index 00000000..6fa3d9ae
--- /dev/null
+++ b/demos/time-tracker/themes/TimeTracker/clock.gif
Binary files differ
diff --git a/demos/time-tracker/themes/TimeTracker/project.css b/demos/time-tracker/themes/TimeTracker/project.css
index 809948cd..1f514b79 100644
--- a/demos/time-tracker/themes/TimeTracker/project.css
+++ b/demos/time-tracker/themes/TimeTracker/project.css
@@ -66,7 +66,7 @@ fieldset.project h2
.actions
{
- float: left;
+
margin-top: 1em;
clear: both;
width: 100%;
diff --git a/demos/time-tracker/themes/TimeTracker/report.css b/demos/time-tracker/themes/TimeTracker/report.css
new file mode 100644
index 00000000..b5b69117
--- /dev/null
+++ b/demos/time-tracker/themes/TimeTracker/report.css
@@ -0,0 +1,156 @@
+.project-report label, .resource-report label
+{
+ font-size: 0.9em;
+}
+
+.project-report .projects
+{
+ width: 20em;
+ height: 15em;
+}
+
+.project-report .buttons
+{
+ margin: 2em;
+}
+
+.project-report table, .resource-report table
+{
+ border-collapse: collapse;
+ empty-cells: hide;
+}
+
+.project-report table th, .resource-report table th
+{
+ padding: 0.25em;
+ font-size: 0.9em;
+ white-space: nowrap;
+}
+
+.project-report td, .resource-report td
+{
+ border: 1px solid #ccc;
+ padding: 0.25em;
+}
+
+.project-report .est-hour, .project-report .hours, .resource-report .hours
+{
+ text-align: right;
+}
+
+.project-report .hours
+{
+ width: 6em;
+}
+
+.project-report td.sub-table
+{
+ padding: 0;
+ border-right: 0 none;
+ border-left: 0 none;
+}
+
+.project-report td.left-filler
+{
+ border-right: 0 none;
+}
+
+.project-report td.right-filler
+{
+ border-left: 0 none;
+}
+
+.project-report .username
+{
+ text-align: center;
+}
+
+
+.project-report table.project
+{
+ margin-bottom: 3em;
+}
+
+.project-report td.sub-table table
+{
+ margin: 1em 0;
+}
+
+.project-report .completion, .resource-report .date
+{
+ text-align: center;
+}
+
+.resource-report h2
+{
+ background-color: #D2E8E8;
+ font-size: 0.8em;
+ color: #4169E1;
+ padding: 0.65em;
+ text-align: center;
+ background-image: url(bar.png);
+ background-repeat: repeat-x;
+ background-position: center;
+}
+
+.resource-report select.resource, .resource-report select.projects
+{
+ width: 15em;
+ height: 17em;
+}
+
+.resource-report .step1, .resource-report .step2, .resource-report .step3
+{
+ float: left;
+ width: 32%;
+ margin-right: 0.25em;
+}
+
+.resource-report .buttons
+{
+ background-color: #D2E8E8;
+ background-image: url(bar.png);
+ background-repeat: repeat-x;
+ background-position: center;
+ padding: 0.65em;
+ margin-top: 2em;
+}
+
+.resource-report .date-to
+{
+ margin-top: 0.5em;
+}
+
+.resource-report .summary
+{
+ text-align: left;
+ padding-left: 5em;
+}
+
+.resource-report .date-from, .resource-report .date-to
+{
+ padding-left: 1em;
+}
+
+.resource-report .resource strong.hours
+{
+ margin-left: 1em;
+}
+
+.resource-report .resource
+{
+
+ margin-bottom: 2em;
+ padding: 0.5em;
+}
+
+
+.resource-report .date-range h3, .resource-report .date-range h4
+{
+ display: inline;
+}
+
+.resource-report .date-range h3.end
+{
+ margin-left: 2em;
+} \ No newline at end of file
diff --git a/demos/time-tracker/themes/TimeTracker/site.css b/demos/time-tracker/themes/TimeTracker/site.css
index bfe59f9e..8d9c6f99 100644
--- a/demos/time-tracker/themes/TimeTracker/site.css
+++ b/demos/time-tracker/themes/TimeTracker/site.css
@@ -1,12 +1,13 @@
html
{
+ background: url(background.png) repeat-x top;
background-color: #eef;
}
body
{
- background: url(background.png) repeat-x top;
- margin: 0;
+ margin: 0 auto;
padding: 2em;
+ max-width: 60em;
font-family: Tahoma, Arial, Helvetica, sans-serif;
}
@@ -40,10 +41,10 @@ h1.heading, h1 a:hover
h1.heading
{
- background-image: url(sync.gif);
+ background-image: url(clock.gif);
background-repeat: no-repeat;
background-position: center left;
- padding: 0px 0px 5px 75px;
+ padding: 0px 0px 5px 70px;
}
@@ -251,4 +252,12 @@ fieldset.signup .wizardNav
{
border: 2px solid red;
background-color: #FFE4E1
+}
+
+.copyrights
+{
+ font-size: 0.8em;
+ text-align: center;
+ color: #708090;
+ margin-top: 2em;
} \ No newline at end of file
diff --git a/demos/time-tracker/themes/TimeTracker/sync.gif b/demos/time-tracker/themes/TimeTracker/sync.gif
deleted file mode 100644
index 3ed6630f..00000000
--- a/demos/time-tracker/themes/TimeTracker/sync.gif
+++ /dev/null
Binary files differ
diff --git a/demos/time-tracker/themes/clock.png b/demos/time-tracker/themes/clock.png
new file mode 100644
index 00000000..8be70a41
--- /dev/null
+++ b/demos/time-tracker/themes/clock.png
Binary files differ