428 lines
19 KiB
HTML
428 lines
19 KiB
HTML
|
<?xml version="1.0" encoding="utf-8"?>
|
||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
|
|
||
|
<head>
|
||
|
<link rel="stylesheet" type="text/css" href="/main/diary/css/bootstrap.min.css" />
|
||
|
<link rel="stylesheet" type="text/css" href="/main/diary/favicon.css" />
|
||
|
<title>Diary Management
|
||
|
</title>
|
||
|
<script type="text/javascript" src="/main/diary/diary.js">
|
||
|
</script>
|
||
|
</head>
|
||
|
|
||
|
<body>
|
||
|
<div class="container mx-auto" style="width: 80%; margin-left: ($spacer * .25) !important">
|
||
|
<header _id="header">
|
||
|
</header>
|
||
|
<!-- Add new entry -->
|
||
|
<div id="new" _id="new" style="border-width: .2rem; border: solid #f7f7f9; padding: 1.5rem; background-color: #e0eefa;">
|
||
|
<form method="post" action="#" _id="edit">
|
||
|
<h3>New diary record:
|
||
|
</h3>
|
||
|
<div class="form-row">
|
||
|
<input type="hidden" name="do" value="diary" />
|
||
|
<input type="hidden" name="diary:edit:id" _id="id" />
|
||
|
<input type="hidden" _id="hiddens" />
|
||
|
|
||
|
<div class="form-group col-xs-3">
|
||
|
<label for="date">When</label>
|
||
|
<span class="arrow_prev" onclick="change_date('diary:edit:ddate', -1)">
|
||
|
</span>
|
||
|
<span class="form-inline" _id="date">
|
||
|
</span>
|
||
|
<span class="arrow_next" onclick="change_date('diary:edit:ddate', 1)">
|
||
|
</span>
|
||
|
</div>
|
||
|
<div class="from-group col-xs-2">
|
||
|
<label for="person">Engineer</label>
|
||
|
<select name="diary:edit:who" class="custom-select">
|
||
|
<option _id="person">Engineer
|
||
|
</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
<div class="from-group col-xs-3">
|
||
|
<label for="hours">Hours</label>
|
||
|
<input _id="hours" autocomplete="off" type="text" size="2" name="diary:edit:hours" class="form-control" />
|
||
|
</div>
|
||
|
<div class="form-group col-xs-3">
|
||
|
<label for="project">Project</label>
|
||
|
<select name="diary:edit:prj_id" class="custom-select">
|
||
|
<option class="btn btn-primary" _id="project">Project
|
||
|
</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div style="width: 800px; overflow: auto; ">
|
||
|
<textarea name="diary:edit:descr" cols="70" rows="10" class="form-control"></textarea>
|
||
|
</div>
|
||
|
<div>
|
||
|
<button type="submit" value="Submit" class="btn btn-primary btn-sm">Submit / Ctrl+Enter</button>
|
||
|
</div>
|
||
|
</form>
|
||
|
</div>
|
||
|
|
||
|
<hr>
|
||
|
|
||
|
<div>
|
||
|
<form method="post" action="#">
|
||
|
<div id="massapproval" _id="massapproval">
|
||
|
<button type="submit" name="diary:action:verb" value="ApproveAll" class="btn btn-primary btn-sm" _id="edit">Approve All
|
||
|
</button>
|
||
|
<button type="submit" name="diary:action:verb" value="DenyAll" class="btn btn-warning btn-sm" _id="edit">Deny All
|
||
|
</button>
|
||
|
<button type="submit" name="diary:action:verb" value="RejectAll" class="btn btn-danger btn-sm" _id="edit">Reject All
|
||
|
</button>
|
||
|
</div>
|
||
|
</form>
|
||
|
</div>
|
||
|
|
||
|
<!-- Entries to be approved -->
|
||
|
<div id="approvals" _id="approvals">
|
||
|
<h3 class="display-4">Records for approval
|
||
|
</h3>
|
||
|
<hr class="my-4">
|
||
|
<div _id="entries">
|
||
|
<div class="input-group mb-3">
|
||
|
<form method="post" _id="view" action="#">
|
||
|
|
||
|
<input type="hidden" name="do" value="diary" />
|
||
|
<input type="hidden" name="diary:action:id" _id="edit_id" />
|
||
|
<input type="hidden" _id="hiddens" />
|
||
|
<div class="alert alert-info">
|
||
|
<span _id="date">01 Jan 1970
|
||
|
</span>
|
||
|
<span _id="person">Engineer name
|
||
|
</span>
|
||
|
<strong><span _id="hours">100
|
||
|
</span></strong> hour(s);
|
||
|
Project
|
||
|
<span _id="project_name">Project name
|
||
|
</span>
|
||
|
<span class="badge badge-primary badge-pill" _id="project">customer/tag
|
||
|
</span>
|
||
|
</div>
|
||
|
|
||
|
<div style="width: 800px; overflow: auto; margin-left: 10px;">
|
||
|
<pre _id="descr">Work description</pre>
|
||
|
</div>
|
||
|
<div class="timestamp badge">Status:
|
||
|
<span class="badge badge-warning badge-pill" _id="state">valid
|
||
|
</span> created
|
||
|
<span _id="created">2006-10-23 10:20:00
|
||
|
</span>, modified
|
||
|
<span _id="modified">2006-10-24 15:17:00
|
||
|
</span>
|
||
|
</div>
|
||
|
<div _id="appnote" class="form-control">
|
||
|
<span _id="created">01 10 1970
|
||
|
</span>
|
||
|
<span _id="author">Author
|
||
|
</span>:
|
||
|
<span _id="note">Approval note
|
||
|
</span>
|
||
|
</div>
|
||
|
<p>
|
||
|
<textarea name="diary:edit:approval" cols="70" rows="5" class="form-control"></textarea>
|
||
|
</p>
|
||
|
<p>
|
||
|
<button type="submit" name="diary:action:verb" value="Approve" class="btn btn-success btn-sm" _id="edit">Approve
|
||
|
</button>
|
||
|
<button type="submit" name="diary:action:verb" value="Deny" class="btn btn-warning btn-sm" _id="edit">Deny
|
||
|
</button>
|
||
|
<button type="submit" name="diary:action:verb" value="Reject" class="btn btn-danger btn-sm" _id="edit">Reject
|
||
|
</button>
|
||
|
</p>
|
||
|
</form>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<!-- Selection menu -->
|
||
|
<div id="menu" _id="menu" style="border-width: .2rem; border: solid #f7f7f9; padding: 1.5rem; background-color: #e0eefa;">
|
||
|
<form method="get" action="#">
|
||
|
<h3>Select diary records to list:
|
||
|
</h3>
|
||
|
<input type="hidden" name="do" value="diary">
|
||
|
<div class="form-row">
|
||
|
<div class="form-group col-xs-3">
|
||
|
<label for="start_date">From</label>
|
||
|
<span class="form-inline" _id="start_date">
|
||
|
</span>
|
||
|
<small class="form-text text-muted"># - current day or year</small>
|
||
|
</div>
|
||
|
<div class="form-group col-xs-3">
|
||
|
<label for="end_date">To</label>
|
||
|
<span class="form-inline" _id="end_date">
|
||
|
</span>
|
||
|
<small class="form-text text-muted">$ - end of month</small>
|
||
|
</div>
|
||
|
<div class="form-group col-xs-3">
|
||
|
<label for="project">Project</label>
|
||
|
<select name="diary:list:prj_id" class="custom-select">
|
||
|
<option class="btn btn-primary" _id="project">Project
|
||
|
</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="form-row">
|
||
|
<div class="form-group col-xs-3">
|
||
|
<select name="diary:list:customer" class="custom-select">
|
||
|
<option _id="customer">Customer
|
||
|
</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
<div class="form-group col-xs-3">
|
||
|
<select name="diary:list:who" class="custom-select">
|
||
|
<option _id="who">Engineer
|
||
|
</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="form-check form-group">
|
||
|
<span _id="newest_first"></span>
|
||
|
<label class=" form-check-label" for="newest_first">Newest first</label>
|
||
|
</div>
|
||
|
<div class="form-check form-group">
|
||
|
<span _id="just_stats"></span>
|
||
|
<label class="form-check-label" for="just_stats">Just stats</label>
|
||
|
</div>
|
||
|
|
||
|
<button type="submit" class="btn btn-primary btn-sm">Search
|
||
|
</button>
|
||
|
|
||
|
</form>
|
||
|
</div>
|
||
|
|
||
|
<div _id="nodata" id="nodata">
|
||
|
No entries
|
||
|
</div>
|
||
|
|
||
|
<hr>
|
||
|
|
||
|
<!-- Summary -->
|
||
|
<div _id="detailed_totals" id="detailed_totals">
|
||
|
<h3>Summary
|
||
|
</h3>
|
||
|
<p>Total hours:
|
||
|
<span _id="hours">100
|
||
|
</span>
|
||
|
</p>
|
||
|
<h4>By projects:
|
||
|
</h4>
|
||
|
<ul>
|
||
|
<li _id="customer">
|
||
|
<span _id="name">Name
|
||
|
</span>,
|
||
|
<span _id="hours">1000
|
||
|
</span> hour(s)
|
||
|
<ul>
|
||
|
<li _id="project">
|
||
|
<span _id="name">Name</span> (<span _id="customer">customer</span>/<span _id="tag">tag</span>),
|
||
|
<span _id="hours">100</span> hour(s)
|
||
|
</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
</ul>
|
||
|
<h4>By engineers:
|
||
|
</h4>
|
||
|
<table class="table table-striped table-hover table-sm">
|
||
|
<caption>Lag: days it took to submit the records, Mon,Tue etc. : average number of hours per day in the selected period (vacations are not handled)</caption>
|
||
|
<thead>
|
||
|
<tr>
|
||
|
<th scope="col">Engineer</th>
|
||
|
<th scope="col">Hours</th>
|
||
|
<th scope="col">Lag</th>
|
||
|
<th scope="col">Mon</th>
|
||
|
<th scope="col">Tue</th>
|
||
|
<th scope="col">Wed</th>
|
||
|
<th scope="col">Thu</th>
|
||
|
<th scope="col">Fri</th>
|
||
|
<th scope="col">Sat</th>
|
||
|
<th scope="col">Sun</th>
|
||
|
</tr>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<tr _id="person">
|
||
|
<th scope="row" _id="name"> </th>
|
||
|
<td _id="hours"> </td>
|
||
|
<td _id="delay"> </td>
|
||
|
<td _id="mon_stat"> </td>
|
||
|
<td _id="tue_stat"> </td>
|
||
|
<td _id="wed_stat"> </td>
|
||
|
<td _id="thu_stat"> </td>
|
||
|
<td _id="fri_stat"> </td>
|
||
|
<td _id="sat_stat"> </td>
|
||
|
<td _id="sun_stat"> </td>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</div>
|
||
|
|
||
|
<div _id="totals" id="totals">
|
||
|
<h3>Summary
|
||
|
</h3>
|
||
|
<p>Total hours:
|
||
|
<span _id="hours">100
|
||
|
</span>
|
||
|
</p>
|
||
|
<h4>By projects:
|
||
|
</h4>
|
||
|
<ul>
|
||
|
<li _id="customer">
|
||
|
<span _id="name">Name
|
||
|
</span>,
|
||
|
<span _id="hours">1000
|
||
|
</span> hour(s)
|
||
|
<ul>
|
||
|
<li _id="project">
|
||
|
<span _id="name">Name</span> (<span _id="customer">customer</span>/<span _id="tag">tag</span>),
|
||
|
<span _id="hours">100</span> hour(s)
|
||
|
</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
</ul>
|
||
|
<h4>By engineers:
|
||
|
</h4>
|
||
|
<ul>
|
||
|
<li _id="person">
|
||
|
<span _id="name">Person
|
||
|
</span>,
|
||
|
<span _id="hours">100
|
||
|
</span> hour(s)
|
||
|
</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
|
||
|
<hr>
|
||
|
|
||
|
<!-- Details -->
|
||
|
<div _id="details" id="details">
|
||
|
<h3>Details
|
||
|
</h3>
|
||
|
<div _id="entries">
|
||
|
<form _id="view_only" style="margin-top: 3px;" class="card">
|
||
|
<div class="card-body">
|
||
|
<div class="card-title">
|
||
|
<span _id="date">01 Jan 1970
|
||
|
</span>:
|
||
|
<span _id="person">Engineer name
|
||
|
</span>
|
||
|
<span _id="hours">100 hour(s)
|
||
|
</span>;
|
||
|
Project
|
||
|
<span _id="project_name">Project name
|
||
|
</span>
|
||
|
<span class="badge badge-success badge-pill" _id="project">customer/tag
|
||
|
</span>
|
||
|
</div>
|
||
|
<div style="width: 900px; overflow: auto;" class="card-body">
|
||
|
<pre _id="descr">Work description</pre>
|
||
|
</div>
|
||
|
</div>
|
||
|
</form>
|
||
|
<form method="post" _id="view" style="margin-top: 3px;" class="card">
|
||
|
<div class="card-body">
|
||
|
<div class="card-title">
|
||
|
<input type="hidden" name="do" value="diary" />
|
||
|
<input type="hidden" name="diary:list:edit" _id="edit_id" />
|
||
|
<input type="hidden" name="diary:action:id" _id="edit_id" />
|
||
|
<input type="hidden" _id="hiddens" />
|
||
|
<span _id="date">01 Jan 1970
|
||
|
</span>
|
||
|
<span _id="person">Engineer name
|
||
|
</span>
|
||
|
<span _id="hours">100 h
|
||
|
</span>
|
||
|
<span _id="project_name">Project name
|
||
|
</span>
|
||
|
<span class="badge badge-success badge-pill" _id="project">customer/tag
|
||
|
</span>
|
||
|
<button type="submit" name="diary:action:verb" value="Edit" class="btn btn-outline-primary btn-sm" _id="edit">Edit
|
||
|
</button>
|
||
|
<button type="submit" name="diary:action:verb" value="Delete" class="btn btn-outline-secondary btn-sm" _id="edit">Delete
|
||
|
</button>
|
||
|
</div>
|
||
|
<div class="card-body" style="width: 900px; overflow: auto;">
|
||
|
<pre _id="descr">Work description</pre>
|
||
|
</div>
|
||
|
<div _id="appnote" class="appnote">
|
||
|
<p>
|
||
|
<span _id="created">01 10 1970
|
||
|
</span>
|
||
|
<span _id="author">Author
|
||
|
</span>:
|
||
|
<span _id="note">Approval note
|
||
|
</span>
|
||
|
</p>
|
||
|
</div>
|
||
|
<div class="timestamp card-subtitle"><small>Status:
|
||
|
<span _id="state">valid
|
||
|
</span>; created
|
||
|
<span _id="created">2006-10-23 10:20:00
|
||
|
</span>, modified
|
||
|
<span _id="modified">2006-10-24 15:17:00
|
||
|
</span>
|
||
|
</small>
|
||
|
</div>
|
||
|
</div>
|
||
|
</form>
|
||
|
<form method="post" _id="edit" style="margin-top: 3px;" class="card">
|
||
|
<div class="edit">
|
||
|
<h5>Edit diary record:
|
||
|
</h5>
|
||
|
<div class="form-row">
|
||
|
<input type="hidden" name="do" value="diary" />
|
||
|
<input type="hidden" name="diary:edit:id" _id="id" />
|
||
|
<input type="hidden" _id="hiddens" />
|
||
|
|
||
|
<div class="form-group col-xs-3">
|
||
|
<span class="form-inline" _id="date">
|
||
|
</span>
|
||
|
</div>
|
||
|
<div class="form-group col-xs-2">
|
||
|
<select name="diary:edit:who" class="custom-select">
|
||
|
<option _id="person">
|
||
|
</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
<div class="form-group col-xs-3">
|
||
|
<input _id="hours" type="text" size="2" name="diary:edit:hours" class="form-control" />
|
||
|
</div>
|
||
|
<div class="form-group col-xs-3">
|
||
|
<select name="diary:edit:prj_id" class="custom-select">
|
||
|
<option _id="project">Project 1
|
||
|
</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div style="width: 800px; overflow: auto; ">
|
||
|
<textarea name="diary:edit:descr" cols="70" rows="10" _id="descr" class="form-control">Work description</textarea>
|
||
|
</div>
|
||
|
<div _id="approval">
|
||
|
<div _id="appnote" class="form-control form-inline">
|
||
|
<span _id="created">01 10 1970
|
||
|
</span>
|
||
|
<span _id="author">Author
|
||
|
</span>:
|
||
|
<span _id="note">Approval note
|
||
|
</span>
|
||
|
</div>
|
||
|
<p>
|
||
|
<textarea name="diary:edit:approval" cols="70" rows="10">Approval note</textarea>
|
||
|
</p>
|
||
|
</div>
|
||
|
<p>
|
||
|
<button type="submit" value="Submit" class="btn btn-primary btn-sm">Submit / Ctrl+Enter</button>
|
||
|
</p>
|
||
|
</div>
|
||
|
</form>
|
||
|
</div>
|
||
|
</div>
|
||
|
<span _id="footer">
|
||
|
</span>
|
||
|
</div>
|
||
|
</body>
|
||
|
|
||
|
</html>
|