[Note from Steffen Gutmann: This project has been created by Eyal Teler. Thanks Eyal. I have made some minor changes to the project and this readme file.] Scheduler - an appointment book =============================== This is an example of what can be achieved with Amigabase with some work. Scheduler was written on Workbench 1.3. Use of ARexx might have made it better. Filtering from a program could have made it simpler. As it is, Scheduler is quite powerful, but sometimes a bit slow. Scheduler was written in two days. There are many ways to enhance it, and make it into a truely useful application (for example by adding monthly and daily views, adding an address book, etc.). Scheduler is not intended to show good programming style, and indeed it could be made clearer. On the other hand, it is intended to show (some of) the power of AmigaBase. What is Scheduler: ----------------- Scheduler allows you to keep track of your appointments, much like the 'Address' project. But in addition the keeping the list of appointments, Scheduler also allows viewing a yearly calendar, marked according to the appointments, and selecting an appointment from this calendar. Scheduler also allows simple entry of common names and other values, and has automatic checking for overlapping appointments. Starting: --------- There are two ways to create an appointment book. Either take a full one (such as the example one), and use 'Init' (a button at the top right of the form), or load an empty one (using 'Open Structure') and add a new global record (in the usual way). Managing appointments: ---------------------- To create a new appointment, just create a new 'Appoint' record, and enter the date, time, and length of the appointment (length is a time field). When the length of the appointment is entered, Scheduler will search for other appointments in the same time span. If there is such an appointment, Scheduler will issue a warning. It's possible to ignore the warning, and have two appointments at the same time. Appointments with their length field empty don't count for this check. In general, the offending appointment will be one immediately preceding of succeding the current one, due to the ordering, but in any case it's possible to use the 'Swap' button (above the Appoint record). The other input fields in the record are self explanatory. There are also three buttons, which hold the name of 'Length', 'Who' and 'Where' fields. When activating these, a list of default values will be presented, and you can select one by double-clicking. The default values are taken from the 'Defaults' window, whose button is above the Appoint record. This window holds three memo fields. Each line in these fields is one default value. It's possible to move between appointments normally, and also to switch back and forth between two datasets. By pressing the 'Remember' button, above the Appoint record, Scheduler will remember the current record number (it's also possible to enter it directly into the field near the button). It's possible to later go to this record (and back) by using the 'Swap' button. [ This isn't a really useful feature. ] Note that if a record is added ir changed, the number may no longer refer to the same record. The calendar: ------------- The yearly calendar, available in the 'Year' window, shows a full year, with each appointment shown as a star on the corrsponding day in the calendar (even if there's more than one appointment per day, only one star is displayed). The field 'Year' at the top left of the form contains the year to be displayed. If this number is changed, the calendar will change to display the new year. It's also possible to move one year forward of backward, by using the arrow buttons near the 'Year' field. Changes to the appointments will not appear immediately in the calendar. To view the changes it's possible to use the 'Update' button. Changing the year in one of the above ways will always display an updated calendar, as will changing the display mode (see below). There are two display modes to the calendar. 'Day of month' displays the days of each month from the left of the field. 'Weekday' displays the days according to the day of the week. If first day of the month will be placed according to the corresponding day of the week. The area before the first day of the month is filled by '#' characters in this mode. Another feature of the calendar is the ability to select an appointment. This is done using the month buttons at the left of the window. When activated, a month button will display all the appointments of the month (if there are any). The record number is displayed, as well as date, time and who the meeting is with. Selecting one of the displayed appointments will bring the appointment window to the front, with the selected appointment displayed. Notes: ------ It's of course possible to filter the records, in order to find meetings with a specific person, for example. This doesn't appear to affect the calendar display. The appointment datasets are ordered by Date, Time and length. Some programs count on the datasets being ordered by Date or Date/Time. The fields names of the Date and Time fields are Tim and Dat (because the words Date and Time are reserved by AmigaBase). It's possible to have more than one appointment book in the same project, by creating several top level records. This might cause a wrong message to appear (asking to erase the records of the current project), and it should be cancelled. Having more than one appointment book in this way is not really supported, but it should work. It's also possible to have more than one set of default values. I see no reason to use either multiple appointment books or multiple defaults, but they are there if you want them. There is one and only one calendar dataset. It's created on initialisation, and is updated by the function _Recalc. It's impossible to add or delete calendar datasets.