Development-Examples-Calendar Component
Last modified by Pascal Robert on 2010/09/13 00:31
Here is a little example on how to write a "calendar" component:
So you have a specific month, some of the dates are links (that will depend on what the calendar is for) and some basics navigations (next/previous month, year).
That's how the html could look like:
<webobject name = "Table">
<tr>
<td align = "left" valign = "top" colspan = "7">
<webobject name = "Month"></webobject>
<webobject name = "HasNavigation">
<webobject name = "YearLink"><webobject name = "Year"></webobject></webobject>
</webobject>
</td>
</tr>
<webobject name = "Rows">
<tr>
<webobject name = "Columns">
<td align = "right" valign = "top">
<webobject name = "HasLink">
<webobject name = "IsCurrentDay"></webobject><webobject name = "Link"><webobject name = "Day"></webobject></webobject><webobject name = "IsCurrentDay"></webobject>
</webobject>
<webobject name = "HasNoLink">
<webobject name = "Day"></webobject>
</webobject>
</td>
</webobject>
</tr>
</webobject>
<webobject name = "HasNavigation">
<tr>
<td align = "left" valign = "top" colspan ="3">
<webobject name = "HasPreviousMonth">
<small><webobject name = "PreviousMonthLink"><webobject name = "PreviousMonth"></webobject></webobject></small>
</webobject>
</td>
<td align = "left" valign = "top">
</td>
<td align = "right" valign = "top" colspan ="3">
<webobject name = "HasNextMonth">
<small><webobject name = "NextMonthLink"><webobject name = "NextMonth"></webobject></webobject></small>
</webobject>
</td>
</tr>
</webobject>
</webobject>
And here is the wod:
Table: WOGenericContainer{
elementName = "table";
border = "0";
cellSpacing = "0";
cellPadding = "0";
};
HasNavigation: WOConditional
{
condition = hasNavigation;
};
YearLink: WOHyperlink{
action = displayYear;
};
Year: SpanString{
value = month.year;
isBold = true;
isSmall = true;
class = "Label";
};
Rows: WORepetition{
count = rowCount;
index = rowIndex;
};
Columns: WORepetition{
count = columnCount;
index = columnIndex;
};
Month: SpanString{
value = month.monthName.toUpperCase;
isBold = true;
isSmall = true;
class = "Label";
};
DayName: SpanString{
value = dayName;
isSmall = true;
class = "Label";
};
HasLink: WOConditional{
condition = hasLink;
};
HasNoLink: WOConditional{
condition = hasLink;
negate = true;
};
IsCurrentDay: WOConditional{
condition = isCurrentDay;
};
Link: WOHyperlink{
action = displayDay;
};
Day: SpanString{
value = day.day;
isSmall = true;
isBold = isCurrentDay;
isItalic = isCurrentDay;
class = "Label";
};
HasNextMonth: WOConditional{
condition = hasNextMonth;
};
NextMonthLink: WOHyperlink{
action = displayNextMonth;
};
NextMonth: SpanString
{
value = nextMonthName;
isSmall = true;
class = "Label";
};
HasPreviousMonth: WOConditional{
condition = hasPreviousMonth;
};
PreviousMonthLink: WOHyperlink{
action = displayPreviousMonth;
};
PreviousMonth: SpanString{
value = previousMonthName;
isSmall = true;
class = "Label";
};
The component implementation is left to the imagination of the reader.