rev |
line source |
jbe/bsw@0
|
1 function ui_deprecated.calendar(args)
|
jbe/bsw@0
|
2 local record = assert(slot.get_state_table(), "ui_deprecated.calender was not called within a form.").form_record
|
jbe/bsw@0
|
3 local value = param.get(args.field, atom.date) or record[args.field]
|
jbe/bsw@0
|
4 local year = param.get('_ui_calendar_year', atom.integer) or args.year or 2008
|
jbe/bsw@0
|
5 local month = param.get('_ui_calendar_month', atom.integer) or args.month or 10
|
jbe/bsw@0
|
6 local empty_days = atom.date{ year = year, month = month, day = 1 }.iso_weekday -1
|
jbe/bsw@0
|
7 local enabled = not args.disabled
|
jbe/bsw@0
|
8
|
jbe/bsw@0
|
9 local prev_year = year
|
jbe/bsw@0
|
10 local prev_month = month - 1
|
jbe/bsw@0
|
11 if prev_month == 0 then
|
jbe/bsw@0
|
12 prev_month = 12
|
jbe/bsw@0
|
13 prev_year = prev_year - 1
|
jbe/bsw@0
|
14 end
|
jbe/bsw@0
|
15
|
jbe/bsw@0
|
16 local next_year = year
|
jbe/bsw@0
|
17 local next_month = month + 1
|
jbe/bsw@0
|
18 if next_month == 13 then
|
jbe/bsw@0
|
19 next_month = 1
|
jbe/bsw@0
|
20 next_year = next_year + 1
|
jbe/bsw@0
|
21 end
|
jbe/bsw@0
|
22
|
jbe/bsw@0
|
23 ui_deprecated.tag('div', {
|
jbe/bsw@0
|
24 html_options = {
|
jbe/bsw@0
|
25 class="ui_field ui_calendar"
|
jbe/bsw@0
|
26 },
|
jbe/bsw@0
|
27 content = function()
|
jbe/bsw@0
|
28 ui_deprecated.tag('input', {
|
jbe/bsw@0
|
29 html_options = {
|
jbe/bsw@0
|
30 type = 'hidden',
|
jbe/bsw@0
|
31 value = year,
|
jbe/bsw@0
|
32 name = '_ui_calendar_year',
|
jbe/bsw@0
|
33 id = '_ui_calendar_year',
|
jbe/bsw@0
|
34 onchange = 'this.form.submit();'
|
jbe/bsw@0
|
35 }
|
jbe/bsw@0
|
36 })
|
jbe/bsw@0
|
37 ui_deprecated.tag('input', {
|
jbe/bsw@0
|
38 html_options = {
|
jbe/bsw@0
|
39 type = 'hidden',
|
jbe/bsw@0
|
40 value = month,
|
jbe/bsw@0
|
41 name = '_ui_calendar_month',
|
jbe/bsw@0
|
42 id = '_ui_calendar_month',
|
jbe/bsw@0
|
43 onchange = 'this.form.submit();'
|
jbe/bsw@0
|
44 }
|
jbe/bsw@0
|
45 })
|
jbe/bsw@0
|
46 ui_deprecated.tag('input', {
|
jbe/bsw@0
|
47 html_options = {
|
jbe/bsw@0
|
48 type = 'hidden',
|
jbe/bsw@0
|
49 value = value and tostring(value) or '',
|
jbe/bsw@0
|
50 name = args.field,
|
jbe/bsw@0
|
51 id = '_ui_calendar_input',
|
jbe/bsw@0
|
52 onchange = 'this.form.submit();'
|
jbe/bsw@0
|
53 }
|
jbe/bsw@0
|
54 })
|
jbe/bsw@0
|
55 if args.label then
|
jbe/bsw@0
|
56 ui_deprecated.tag('div', {
|
jbe/bsw@0
|
57 html_options = {
|
jbe/bsw@0
|
58 class="label"
|
jbe/bsw@0
|
59 },
|
jbe/bsw@0
|
60 content = function()
|
jbe/bsw@0
|
61 ui_deprecated.text(args.label)
|
jbe/bsw@0
|
62 end
|
jbe/bsw@0
|
63 })
|
jbe/bsw@0
|
64 end
|
jbe/bsw@0
|
65 ui_deprecated.tag('div', {
|
jbe/bsw@0
|
66 html_options = {
|
jbe/bsw@0
|
67 class="value"
|
jbe/bsw@0
|
68 },
|
jbe/bsw@0
|
69 content = function()
|
jbe/bsw@0
|
70 ui_deprecated.tag('div', {
|
jbe/bsw@0
|
71 html_options = {
|
jbe/bsw@0
|
72 class = 'next',
|
jbe/bsw@0
|
73 href = '#',
|
jbe/bsw@0
|
74 onclick = enabled and "document.getElementById('_ui_calendar_year').value = '" .. tostring(next_year) .. "'; document.getElementById('_ui_calendar_month').value = '" .. tostring(next_month) .. "'; document.getElementById('_ui_calendar_year').form.submit();" or '',
|
jbe/bsw@0
|
75 },
|
jbe/bsw@0
|
76 content = '>>>';
|
jbe/bsw@0
|
77 })
|
jbe/bsw@0
|
78 ui_deprecated.tag('div', {
|
jbe/bsw@0
|
79 html_options = {
|
jbe/bsw@0
|
80 class = 'prev',
|
jbe/bsw@0
|
81 href = '#',
|
jbe/bsw@0
|
82 onclick = enabled and "document.getElementById('_ui_calendar_year').value = '" .. tostring(prev_year) .. "'; document.getElementById('_ui_calendar_month').value = '" .. tostring(prev_month) .. "'; document.getElementById('_ui_calendar_year').form.submit();" or '',
|
jbe/bsw@0
|
83 },
|
jbe/bsw@0
|
84 content = '<<<';
|
jbe/bsw@0
|
85 })
|
jbe/bsw@0
|
86 ui_deprecated.tag('div', {
|
jbe/bsw@0
|
87 html_options = {
|
jbe/bsw@0
|
88 class="title"
|
jbe/bsw@0
|
89 },
|
jbe/bsw@0
|
90 content = function()
|
jbe/bsw@0
|
91 local months = {_'January', _'February', _'March', _'April', _'May', _'June', _'July', _'August', _'September', _'October', _'November', _'December' }
|
jbe/bsw@0
|
92 ui_deprecated.text(months[month])
|
jbe/bsw@0
|
93 ui_deprecated.text(' ')
|
jbe/bsw@0
|
94 ui_deprecated.text(tostring(year))
|
jbe/bsw@0
|
95 end
|
jbe/bsw@0
|
96 })
|
jbe/bsw@0
|
97 ui_deprecated.tag('table', {
|
jbe/bsw@0
|
98 content = function()
|
jbe/bsw@0
|
99 ui_deprecated.tag('thead', {
|
jbe/bsw@0
|
100 content = function()
|
jbe/bsw@0
|
101 ui_deprecated.tag('tr', {
|
jbe/bsw@0
|
102 content = function()
|
jbe/bsw@0
|
103 local dows = { _'Mon', _'Tue', _'Wed', _'Thu', _'Fri', _'Sat', _'Sun' }
|
jbe/bsw@0
|
104 for col = 1,7 do
|
jbe/bsw@0
|
105 ui_deprecated.tag('th', { content = dows[col] })
|
jbe/bsw@0
|
106 end
|
jbe/bsw@0
|
107 end
|
jbe/bsw@0
|
108 })
|
jbe/bsw@0
|
109 end
|
jbe/bsw@0
|
110 })
|
jbe/bsw@0
|
111 ui_deprecated.tag('tbody', {
|
jbe/bsw@0
|
112 content = function()
|
jbe/bsw@0
|
113 for row = 1,6 do
|
jbe/bsw@0
|
114 ui_deprecated.tag('tr', {
|
jbe/bsw@0
|
115 content = function()
|
jbe/bsw@0
|
116 for col = 1,7 do
|
jbe/bsw@0
|
117 local day = (row -1) * 7 + col - empty_days
|
jbe/bsw@0
|
118 local date = atom.date.invalid
|
jbe/bsw@0
|
119 if day > 0 then
|
jbe/bsw@0
|
120 date = atom.date{ year = year, month = month, day = day }
|
jbe/bsw@0
|
121 end
|
jbe/bsw@0
|
122 ui_deprecated.tag('td', {
|
jbe/bsw@0
|
123 html_options = {
|
jbe/bsw@0
|
124 onclick = enabled and 'document.getElementById(\'_ui_calendar_input\').value = \'' .. tostring(date) .. '\'; document.getElementById(\'_ui_calendar_input\').onchange(); ' or ''
|
jbe/bsw@0
|
125 },
|
jbe/bsw@0
|
126 content = function()
|
jbe/bsw@0
|
127 if date.invalid then
|
jbe/bsw@0
|
128 slot.put(' ')
|
jbe/bsw@0
|
129 else
|
jbe/bsw@0
|
130 local selected = date == value
|
jbe/bsw@0
|
131 args.day_func(date, selected)
|
jbe/bsw@0
|
132 end
|
jbe/bsw@0
|
133 end
|
jbe/bsw@0
|
134 })
|
jbe/bsw@0
|
135 end
|
jbe/bsw@0
|
136 end
|
jbe/bsw@0
|
137 })
|
jbe/bsw@0
|
138 end
|
jbe/bsw@0
|
139 end
|
jbe/bsw@0
|
140 })
|
jbe/bsw@0
|
141 end
|
jbe/bsw@0
|
142 })
|
jbe/bsw@0
|
143 end
|
jbe/bsw@0
|
144 })
|
jbe/bsw@0
|
145 end
|
jbe/bsw@0
|
146 })
|
jbe/bsw@0
|
147 end
|