CPS 108: hyperwag
Spring 1999
Due February 8
Your company will implement a program that processes a file representing
a weekly schedule, and generates a hypertext (HTML) table or text list
that shows a Week At a Glance (wag). A sample hyperwag table
is shown below. This table has colors that will not be visible when the
table is printed, but will be visible when then table is viewed by a browser
like Netscape or Internet Explorer.
| time |
Mon |
Tue |
Wed |
Thu |
Fri |
| 9:00 - 10:00 |
sleep |
CPS 110 |
breakfast |
CPS 110 |
running |
| 10:00 - 11:00 |
breakfast |
CPS 108 |
free |
CPS 108 |
| 11:00 - 12:00 |
| 12:00 - 1:00 |
lunch |
lunch |
lunch |
lunch |
lunch |
| 1:00 - 2:00 |
free |
free |
free |
free |
free |
| 2:00 - 3:00 |
| 3:00 - 4:00 |
| 4:00 - 5:00 |
| 5:00 - 6:00 |
You can see the text that generates the table by using the View menu/Source,
or see the source section.
Specification
You must write a C++ program that reads an appointment file (written in
one of several appointment languages) and generates an HTML table/web page
that represents, in tabular format, the appointments in the file. At a
minimum, your hyperwag program must support a business week of Monday through
Friday, with hourly time-slots from 9:00 am to 6:00 pm as shown in the
sample table above.
Wagalang
Your hyperwag program must support the following
wagalang (week-at-glance
appointment language) features. Each appointment in wagalang consists of
three white-space delimited strings (the appointment string extends to
the end of the line):
DAYTAGS TIMESLOT APPOINTMENT
| DAYTAGS |
letters from M, T, W, H, F, in either upper or lower case |
| TIMESLOT |
the format is the beginning time and then the ending time where the
two times are separated by either a comma or a dash: i.e., a ','
or a '-'. The times can be in military/24 hour HH:MM format,
but only HH is necessary for minimal wagalang. |
| APPOINTMENT |
An abitrary string that extends to the end of the line, and can include
whitespace |
For example, the sample hyperwag table above could be generated from
the following wagalang text.
m 9,12 sleep
th 9,10 CPS 110
w 9,10 breakfast
f 9,10 running
mtwhf 12,13 lunch
wf 10,12 CPS 108
t 10,12 breakfast
Any line of a wagalang file beginning with a # should be treated as a comment
line and ignored. Any blank line, or a line consisting of just white space,
should be ignored.
YAWL
An apointment in YAWL (Yet Another Week-at-a-glance Language) is spread
over several lines, and consists of at least three lines. The general format
follows:
dayname
hour range
appointment description
%%END-YAWL%%
-
The dayname is one of monday, tuesday, wednesday thursday, friday
(optionally saturday, sunday). The dayname is not case sensitive
-
The hour range is in general an on-the-hour time in 24 hour time, a dash
(or a comma), and another on-the-hour time. (Ideally you'll support times
that range beyond on-the-hour.) Examples of hour range lines are
9-10, 10-11, and 13-20.
-
The appointment description can spread over many lines, an appointment
description is terminated by the string %%END-YAWL%% when it occurs
by itself on a line.
Just as in wagalang, any line beginning with a # should be treated as a
comment and ignored. Blank lines should be ignored as well.
Table Format
The time column of the table should be in a color different from the other
cells in the table. Any time period for which no appointments are scheduled
is marked as free as shown above, in a color different from time
or appointment cells. Some spacing and padding should be used to make the
table cells visible.
Sizes and colors of the table (and other parameters) should be changeable
by embedding HTML commands in the appointment file, or by reading a .hyperrc
file, or by command line arguments. How you choose to do this should
be documented by the second deliverable so that the class can agree on
a standard.
Wagalang Extensions
You can support many wagalang extensions. An important goal of this project
is to differentiate your hyperwag program from others in your attempt to
make your program capture the market. Some suggested extensions follow:
-
time periods not just on the hour, e.g., 10:30
-
user-specified colors for table cells, e.g., #time="lime"
-
hyper-links for appointments, to a more full description that occurs after
the table, or to a URL
Deliverables
-
Wednesday, January 29. One to two page description of of classes
you envision as part of implementing hyperwag; a list of issues that arise
as you try to pin down the requirements, e.g., vague, ambiguous, conflicting
requirements; issues in what's asked of you. You will use this list of
classes when you meet with your group. Groups will be assigned randomly
on January 29. You will have one deliverable per group, but the best design/specification
document will emerge as a result of a discussion that takes place between
people who have thought about the issues.
-
Friday, February 5. A program that proceses wagalang and prints
out a textual description of all appointments. No table is necessary, there
should be something output for each appointment in the input file. You
must demo this program with your hypewag mentor (UTA, TA, Prof). The program
should include the beginnings of a user manual and a programmer manual
(for the group that takes over hyperwag when you have cashed in your stock
options).
-
Wednesday, February 10. The final program, design document, and
user manual must be submitted electronically. This should be release 1.0.
After you demo your program, during the end of this week, you will have
a chance to make final revision to the program and the documentation, but
if major revisions are required you will lose market-share (and your grade
will decline as well).
-
Monday, February 15. The really final program, design document,
and user manual must be submitted electronically. This should be release
2.0.
Comments?