@@ -29,6 +29,7 @@ var cal = {
29
29
// (B2) ATTACH CONTROLS
30
30
cal . hMth . onchange = cal . load ;
31
31
cal . hYear . onchange = cal . load ;
32
+ document . getElementById ( "calToday" ) . onclick = ( ) => cal . today ( ) ;
32
33
document . getElementById ( "calBack" ) . onclick = ( ) => cal . pshift ( ) ;
33
34
document . getElementById ( "calNext" ) . onclick = ( ) => cal . pshift ( 1 ) ;
34
35
document . getElementById ( "calAdd" ) . onclick = ( ) => cal . show ( ) ;
@@ -64,8 +65,18 @@ var cal = {
64
65
cal . hYear . value = cal . sYear ;
65
66
cal . load ( ) ;
66
67
} ,
68
+
69
+ // (D) JUMP TO TODAY
70
+ today : ( ) => {
71
+ let now = new Date ( ) , ny = now . getFullYear ( ) , nm = now . getMonth ( ) + 1 ;
72
+ if ( ny != cal . sYear || ( ny == cal . sYear && nm != cal . sMth ) ) {
73
+ cal . hMth . value = nm ;
74
+ cal . hYear . value = ny ;
75
+ cal . load ( ) ;
76
+ }
77
+ } ,
67
78
68
- // (D ) LOAD EVENTS
79
+ // (E ) LOAD EVENTS
69
80
load : ( ) => {
70
81
cal . sMth = parseInt ( cal . hMth . value ) ;
71
82
cal . sYear = parseInt ( cal . hYear . value ) ;
@@ -79,10 +90,10 @@ var cal = {
79
90
}
80
91
} ) ;
81
92
} ,
82
-
83
- // (E ) DRAW CALENDAR
93
+
94
+ // (F ) DRAW CALENDAR
84
95
draw : ( ) => {
85
- // (E1 ) CALCULATE DAY MONTH YEAR
96
+ // (F1 ) CALCULATE DAY MONTH YEAR
86
97
// note - jan is 0 & dec is 11 in js
87
98
// note - sun is 0 & sat is 6 in js
88
99
let daysInMth = new Date ( cal . sYear , cal . sMth , 0 ) . getDate ( ) , // number of days in selected month
@@ -93,11 +104,11 @@ var cal = {
93
104
nowYear = parseInt ( now . getFullYear ( ) ) , // current year
94
105
nowDay = cal . sMth == nowMth && cal . sYear == nowYear ? now . getDate ( ) : null ;
95
106
96
- // (E2 ) DRAW CALENDAR ROWS & CELLS
97
- // (E2 -1) INIT
107
+ // (F2 ) DRAW CALENDAR ROWS & CELLS
108
+ // (F2 -1) INIT
98
109
let rowA , rowB , rowC , rowMap = { } , rowNum = 1 , cell , cellNum = 1 ,
99
110
100
- // (E2 -2) HELPER - DRAW A NEW ROW
111
+ // (F2 -2) HELPER - DRAW A NEW ROW
101
112
rower = ( ) => {
102
113
rowA = document . createElement ( "div" ) ;
103
114
rowB = document . createElement ( "div" ) ;
@@ -111,7 +122,7 @@ var cal = {
111
122
rowA . appendChild ( rowC ) ;
112
123
} ,
113
124
114
- // (E2 -3) HELPER - DRAW A NEW CELL
125
+ // (F2 -3) HELPER - DRAW A NEW CELL
115
126
celler = day => {
116
127
cell = document . createElement ( "div" ) ;
117
128
cell . className = "calCell" ;
@@ -134,10 +145,10 @@ var cal = {
134
145
rowC . appendChild ( cell ) ;
135
146
} ;
136
147
137
- // (E2 -4) RESET CALENDAR
148
+ // (F2 -4) RESET CALENDAR
138
149
cal . hCB . innerHTML = "" ; rower ( ) ;
139
150
140
- // (E2 -5) BLANK CELLS BEFORE START OF MONTH
151
+ // (F2 -5) BLANK CELLS BEFORE START OF MONTH
141
152
if ( cal . mon && startDay != 1 ) {
142
153
let blanks = startDay == 0 ? 7 : startDay ;
143
154
for ( let i = 1 ; i < blanks ; i ++ ) { celler ( ) ; cellNum ++ ; }
@@ -146,15 +157,15 @@ var cal = {
146
157
for ( let i = 0 ; i < startDay ; i ++ ) { celler ( ) ; cellNum ++ ; }
147
158
}
148
159
149
- // (E2 -6) DAYS OF THE MONTH
160
+ // (F2 -6) DAYS OF THE MONTH
150
161
for ( let i = 1 ; i <= daysInMth ; i ++ ) {
151
162
rowMap [ i ] = { r : rowNum , c : cellNum } ;
152
163
celler ( i ) ;
153
164
if ( cellNum % 7 == 0 && i != daysInMth ) { rowNum ++ ; rower ( ) ; }
154
165
cellNum ++ ;
155
166
}
156
167
157
- // (E2 -7) BLANK CELLS AFTER END OF MONTH
168
+ // (F2 -7) BLANK CELLS AFTER END OF MONTH
158
169
if ( cal . mon && endDay != 0 ) {
159
170
let blanks = endDay == 6 ? 1 : 7 - endDay ;
160
171
for ( let i = 0 ; i < blanks ; i ++ ) { celler ( ) ; cellNum ++ ; }
@@ -164,16 +175,16 @@ var cal = {
164
175
for ( let i = 0 ; i < blanks ; i ++ ) { celler ( ) ; cellNum ++ ; }
165
176
}
166
177
167
- // (E3 ) FETCH & DRAW EVENTS
178
+ // (F3 ) FETCH & DRAW EVENTS
168
179
if ( cal . events !== null ) { for ( let [ id , evt ] of Object . entries ( cal . events ) ) {
169
- // (E3 -1) EVENT START & END DAY
180
+ // (F3 -1) EVENT START & END DAY
170
181
let sd = new Date ( evt . s ) , ed = new Date ( evt . e ) ;
171
182
if ( sd . getFullYear ( ) != cal . sYear ) { sd = 1 ; }
172
183
else { sd = sd . getMonth ( ) + 1 < cal . sMth ? 1 : sd . getDate ( ) ; }
173
184
if ( ed . getFullYear ( ) != cal . sYear ) { ed = daysInMth ; }
174
185
else { ed = ed . getMonth ( ) + 1 > cal . sMth ? daysInMth : ed . getDate ( ) ; }
175
186
176
- // (E3 -2) "MAP" ONTO HTML CALENDAR
187
+ // (F3 -2) "MAP" ONTO HTML CALENDAR
177
188
cell = { } ; rowNum = 0 ;
178
189
for ( let i = sd ; i <= ed ; i ++ ) {
179
190
if ( rowNum != rowMap [ i ] [ "r" ] ) {
@@ -183,7 +194,7 @@ var cal = {
183
194
if ( cell [ rowNum ] ) { cell [ rowNum ] [ "e" ] = rowMap [ i ] [ "c" ] ; }
184
195
}
185
196
186
- // (E3 -3) DRAW HTML EVENT ROW
197
+ // (F3 -3) DRAW HTML EVENT ROW
187
198
for ( let [ r , c ] of Object . entries ( cell ) ) {
188
199
let o = c . s - 1 - ( ( r - 1 ) * 7 ) , // event cell offset
189
200
w = c . e - c . s + 1 ; // event cell width
@@ -201,7 +212,7 @@ var cal = {
201
212
} }
202
213
} ,
203
214
204
- // (F ) SHOW EVENT FORM
215
+ // (G ) SHOW EVENT FORM
205
216
show : id => {
206
217
if ( id ) {
207
218
cal . hfID . value = id ;
@@ -220,9 +231,9 @@ var cal = {
220
231
else { cal . hFormWrap . show ( ) ; }
221
232
} ,
222
233
223
- // (G ) SAVE EVENT
234
+ // (H ) SAVE EVENT
224
235
save : ( ) => {
225
- // (G1 ) COLLECT DATA
236
+ // (H1 ) COLLECT DATA
226
237
var data = {
227
238
start : cal . hfStart . value ,
228
239
end : cal . hfEnd . value ,
@@ -232,13 +243,13 @@ var cal = {
232
243
} ;
233
244
if ( cal . hfID . value != "" ) { data . id = cal . hfID . value ; }
234
245
235
- // (G2 ) DATE CHECK
246
+ // (H2 ) DATE CHECK
236
247
if ( new Date ( data . start ) > new Date ( data . end ) ) {
237
248
alert ( "Start date cannot be later than end date!" ) ;
238
249
return false ;
239
250
}
240
251
241
- // (G3 ) AJAX SAVE
252
+ // (H3 ) AJAX SAVE
242
253
cb . api ( {
243
254
mod : "calendar" , act : "save" ,
244
255
data : data ,
@@ -251,7 +262,7 @@ var cal = {
251
262
return false ;
252
263
} ,
253
264
254
- // (H ) DELETE EVENT
265
+ // (I ) DELETE EVENT
255
266
del : ( ) => cb . modal ( "Please confirm" , "Delete this event?" , ( ) => cb . api ( {
256
267
mod : "calendar" , act : "del" ,
257
268
data : { id : cal . hfID . value } ,
@@ -262,4 +273,4 @@ var cal = {
262
273
}
263
274
} ) )
264
275
} ;
265
- window . addEventListener ( "load" , cal . init ) ;
276
+ window . addEventListener ( "load" , cal . init ) ;
0 commit comments