Mercurial Hosting > nabble
view src/nabble/view/web/template/CalendarWidget.jtp @ 62:4674ed7d56df default tip
remove n2
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sat, 30 Sep 2023 20:25:29 -0600 |
parents | 7ecd1a4ef557 |
children |
line wrap: on
line source
<% package nabble.view.web.template; import nabble.naml.compiler.IPrintWriter; import nabble.naml.compiler.Interpreter; import nabble.naml.compiler.CommandSpec; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import nabble.naml.compiler.PrintWriter; import java.util.Calendar; import java.util.GregorianCalendar; final class CalendarWidget { public static final CommandSpec _calendar = new CommandSpec.Builder() .parameters("date_time","months","week_days","min_year") .build() ; public static void _calendar(IPrintWriter out,Interpreter interp) { String dateTime = interp.getArgString("date_time"); String months = interp.getArgString("months"); String weekDays = interp.getArgString("week_days"); String minYear = interp.getArgString("min_year"); Calendar cal = Calendar.getInstance(); cal.setLenient(false); cal.setTimeInMillis(Long.valueOf(dateTime)); printCalendar(cal, Integer.valueOf(minYear), months, weekDays, out.getPrintWriter()); } private static void printCalendar(Calendar cal, int minYear, String months, String weekDays, PrintWriter out) { int day = cal.get(Calendar.DAY_OF_MONTH); String[] monthsArray = months.split("\\|"); int month = cal.get(Calendar.MONTH); int year = cal.get(Calendar.YEAR); int currentYear = Calendar.getInstance().get(Calendar.YEAR); %> <script type="text/javascript"> function NabbleCalendar(d,m,y) { this.day = d; this.month = m; this.year = y; }; NabbleCalendar.prototype.setDay = function(d) { this.day = parseInt(d); }; NabbleCalendar.prototype.getDay = function() { return this.day; }; NabbleCalendar.prototype.getMonth = function() { return this.month; }; NabbleCalendar.prototype.getYear = function() { return this.year; }; NabbleCalendar.prototype.updateCalendar = function() { var $m = $('#month'); var $y = $('#year'); this.month = parseInt($m.val()); this.year = parseInt($y.val()); $m.attr('disabled','y'); $y.attr('disabled','y'); $.get('/template/CalendarWidget$Update.jtp?day='+this.day+'&month='+this.month+'&year='+this.year+'&weekdays=<%=weekDays%>', function(data) { $('#calendar-wrapper').html(data); $m.removeAttr('disabled'); $y.removeAttr('disabled'); Nabble.addEventHandlers(); }); }; var nabbleCalendar = new NabbleCalendar(<%=day%>, <%=month%>, <%=year%>); Nabble.addEventHandlers = function() { $('#calendar-wrapper td.day').css('cursor','pointer').click(function(){ $('#day'+nabbleCalendar.day).removeClass('current'); var day = $(this).html(); nabbleCalendar.setDay(day); $(this).addClass('current'); }); }; $(document).ready(function() { Nabble.addEventHandlers(); }); </script> <select id="month" onchange="nabbleCalendar.updateCalendar()"> <% for (int m = 0;m < 12; m++) { %> <option value="<%=m%>" <%=month == m? "selected" : ""%>><%=monthsArray[m]%></option> <% } %> </select> <select id="year" onchange="nabbleCalendar.updateCalendar()"> <% for (int y = minYear;y <= currentYear; y++) { %> <option value="<%=y%>" <%=year == y? "selected" : ""%>><%=y%></option> <% } %> </select> <div id="calendar-wrapper"> <% printCalendarTable(cal, weekDays, out); %> </div> <% } private static void printCalendarTable(Calendar cal, String weekDays, PrintWriter out) { String[] weekDaysArray = weekDays.split("\\|"); int day = cal.get(Calendar.DAY_OF_MONTH); int nDays = cal.getActualMaximum(Calendar.DAY_OF_MONTH); cal.set(Calendar.DAY_OF_MONTH, 1); int firstDay = cal.get(Calendar.DAY_OF_WEEK); int i; %> <table class="calendar"> <tr> <td class="week-header"><%=weekDaysArray[0]%></td> <td class="week-header"><%=weekDaysArray[1]%></td> <td class="week-header"><%=weekDaysArray[2]%></td> <td class="week-header"><%=weekDaysArray[3]%></td> <td class="week-header"><%=weekDaysArray[4]%></td> <td class="week-header"><%=weekDaysArray[5]%></td> <td class="week-header"><%=weekDaysArray[6]%></td> </tr> <tr> <% for (i = 1; i < firstDay; i++) {%> <td class="empty"></td> <% } %> <% int d = 1; %> <% for (i = firstDay; i <= 7; i++) printDay(d++, day, out); %> </tr> <% while (d <= nDays) { %> <% int nextStop = d + 7; %> <tr> <% while (d < nextStop && d <= nDays) printDay(d++, day, out); %> </tr> <% } %> </table> <% } private static void printDay(int day, int currentDay, PrintWriter out) { %><td id="day<%=day%>" class="day<%=day == currentDay?" current":""%>"><%=day%></td><% } public static class Update extends HttpServlet { protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = new PrintWriter(response.getWriter()); String weekDays = request.getParameter("weekdays"); String day = request.getParameter("day"); String month = request.getParameter("month"); String year = request.getParameter("year"); Calendar cal = new GregorianCalendar(Integer.valueOf(year), Integer.valueOf(month), Integer.valueOf(day)); printCalendarTable(cal, weekDays, out); } } } %>