blob: 2a674153051f28d6796e4a0c105d5700452aaa34 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>PhoneBook</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name=ProgId content=VisualStudio.HTML>
<meta name=Originator content="Microsoft Visual Studio .NET 7.1">
<script language="javascript" src="PhoneBook.ashx?proxy&v=2"></script>
<script language="javascript" src="js/dojo/dojo.js"></script>
<script language="javascript">
dojo.require("dojo.io.*");
dojo.require("dojo.event.*");
dojo.require("dojo.html.*");
dojo.require("dojo.json");
dojo.require("dojo.widget.FilteringTable");
dojo.hostenv.writeIncludes();
/* call server */
function server(call)
{
var bindArgs = {
url: call.url+'?rpc',
error: function(type, data, evt){alert("Error Communicating with Server: " + data.result);},
method: "POST",
mimetype: "text/json",
handle: call.callback,
postContent: dojo.json.serialize(call.request)
};
var req = dojo.io.bind(bindArgs);
dojo.event
return req;
}
/* lister */
function entry_list_result(type, data, evt)
{
var w = dojo.widget.byId("entry_list");
w.store.setData(data.result);
}
function entry_list()
{
PhoneBook.rpc.entry_list(entry_list_result).call(server);
}
dojo.addOnLoad(entry_list);
function entry_list_select_edit(evt) {
var table = dojo.widget.byId("entry_list");
entry_edit(table.getSelectedData().entry_key);
}
function entry_list_select_delete(evt) {
var table = dojo.widget.byId("entry_list");
entry_delete(table.getSelectedData().entry_key);
}
function entry_list_select() {
dojo.event.connect(dojo.byId("entry_list"), "onSelect", entry_list_select_edit);
}
dojo.addOnLoad(entry_list_select);
/* lister filters */
function dateFilter(hired) {
return (hired == '5/29/1987' || hired == '11/18/1984');
}
function applyDate(id){
dojo.widget.byId(id).setFilter("hired", dateFilter);
}
function nameFilter(last_name){
return (last_name.charAt(0) >= 'M' && last_name.charAt(0) <= 'Z');
}
function applyName(id){
dojo.widget.byId(id).setFilter("last_name", nameFilter);
}
function clearFilters(id){
dojo.widget.byId(id).clearFilters();
}
function reloadData(id){
dojo.widget.byId(id).store.clearData();
entry_list();
}
/* editor */
function setHired(hired) {
var dpHired = dojo.widget.byId("dpHired");
dpHired.setDate(hired);
}
function entry_edit_result(type, data, evt)
{
var w = dojo.widget.byId("entry_form");
w.setValues(data.result);
var part = new Array();
part = data.result.hired.split('/',3); // mm/dd/yyyy
var yyyy = part[2];
var mm = part[0];
var dd = part[1];
if (mm.length==1) mm = new String().concat('0',mm);
if (dd.length==1) dd = new String().concat('0',dd);
var hired = new String().concat( yyyy,'-',mm,'-',dd );
setHired(hired);
}
function entry_edit(entry_key)
{
PhoneBook.rpc.entry(entry_key,entry_edit_result).call(server);
}
function entry_save_result() {
reloadData('entry_list');
entry_reset();
}
function entry_save_update_result(type, data, evt)
{
alert ( "Edited: " + data.result.user_name + " (" + data.result.entry_key + ")" );
entry_save_result();
}
function entry_save_insert_result(type, data, evt)
{
alert ( "Added: " + data.result.user_name + " (" + data.result.entry_key + ")" );
entry_save_result();
}
function entry_save()
{
var w = dojo.widget.byId("entry_form");
var values = w.getValues();
if (values.entry_key)
PhoneBook.rpc.entry_save(values,entry_save_update_result).call(server);
else
PhoneBook.rpc.entry_save(values,entry_save_insert_result).call(server);
}
function entry_reset() {
var w = dojo.widget.byId("entry_form");
var values = w.getValues();
values.first_name = "";
values.last_name = "";
values.extension = "";
values.user_name = "";
values.hours = "37.5";
values.entry_key = "";
w.setValues(values);
var today = new Date();
setHired(today);
}
function entry_add()
{
entry_reset();
}
function entry_delete_result(type, data, evt)
{
alert ( "Deleted: (" + data.result.entry_key + ")" );
entry_save_result();
}
function entry_delete(entry_key)
{
if (entry_key) {
confirm ( "Delete entry?" );
PhoneBook.rpc.entry_delete(entry_key,entry_delete_result).call(server);
}
}
</script>
<style type="text/css">
/***
The following is just an example of how to use the table.
You can override any class names to be used if you wish.
***/
table {
font-family:Lucida Grande, Verdana;
font-size:0.8em;
width:100%;
border:1px solid #ccc;
border-collapse:collapse;
cursor:default;
}
table td,
table th{
padding:2px;
font-weight:normal;
}
table thead td, table thead th {
background-image:url(images/ft-head.gif);
background-repeat:no-repeat;
background-position:top right;
}
table thead td.selectedUp, table thead th.selectedUp {
background-image:url(images/ft-headup.gif);
}
table thead td.selectedDown, table thead th.selectedDown {
background-image:url(images/ft-headdown.gif);
}
table tbody tr td{
border-bottom:1px solid #ddd;
}
table tbody tr.alt td{
background: #e3edfa;
}
table tbody tr.selected td{
background: yellow;
}
table tbody tr:hover td{
background: #a6c2e7;
}
table tbody tr.selected:hover td{
background:#ff9;
}
#inputArea{
margin:1em 0;
padding:1em;
background-color:#eef;
}
#updateTestInput{
border:1px solid #ccc;
width:100%;
height:80px;
font-family:serif;
font-size:0.9em;
overflow:auto;
}
</style>
</head>
<body>
<div id="finder" />
<div id="lister">
<table id="filter_menu"><tr><td>
<input type="button" onclick="applyDate('entry_list');" value="Show only hires between 1/1/1984 and 1/1/1987" ID="Button1" NAME="Button1"/>
<input type="button" onclick="applyName('entry_list');" value="Show only names between M and Z" ID="Button2" NAME="Button2"/>
<input type="button" value="Show All Entries" onclick="clearFilters('entry_list');" ID="Button3" NAME="Button3"/>
<input type="button" value="Reload Entries" onclick="reloadData('entry_list');" ID="Button4" NAME="Button4"/>
</td></tr></table>
<table id="entry_list"
dojoType="filteringTable" alternateRows="true" valueField="user_name" >
<thead>
<tr>
<th field="last_name" sort="asc">Last Name</th>
<th field="first_name">First Name</th>
<th field="extension">Extension</th>
<th field="user_name">User</th>
<th field="hired" align="center">Hired</th>
<th field="hours" align="center">Hours</th>
</tr>
</thead>
</table>
<table id="edit_menu"><tr><td>
<input type="button" value="Edit Entry" onclick="entry_list_select_edit('entry_list');" ID="Button5" NAME="Button5"/>
<input type="button" value="Add Entry" onclick="entry_add('entry_list');" ID="Button6" NAME="Button6"/>
<input type="button" value="Delete Entry" onclick="entry_list_select_delete('entry_list');" ID="Button7" NAME="Button7"/>
</td></tr></table>
</div>
<div id="viewer" />
<div id="editor">
<form id="entry_form" dojoType="Form">
<table ID="Table1"><tr>
<td>First Name</td><td><input name="first_name" ID="Text1"/></td>
</tr><tr>
<td>Last Name</td><td><input name="last_name" ID="Text2"/></td>
</tr><tr>
<td>Extension</td><td><input name="extension" ID="Text3"/></td>
</tr><tr>
<td>User Name</td><td><input name="user_name" ID="Text4"/></td>
</tr><tr>
<td>Hired</td><td><input name="hired" widgetid="dpHired" dojoType="dropdowndatepicker" displayFormat="MM/dd/yyyy" ID="Text5"/></td>
</tr><tr>
<td>Hours</td><td><input name="hours" ID="Text6"/></td>
</tr><tr>
<td rowspan="2"><input type="button" onClick="entry_save();" value="SAVE" ID="Button8" NAME="Button8"/>
<input type="hidden" name="editor" value="1" ID="editor"/>
<input type="hidden" name="entry_key" ID="entry_key"/>
</td>
</tr></table>
</form>
</div>
</body>
</html>