@@ -84,6 +84,7 @@ var cal = {
84
84
// (C3) ATTACH CONTROLS
85
85
cal . hMth . onchange = cal . load ;
86
86
cal . hYear . onchange = cal . load ;
87
+ document . getElementById ( "calToday" ) . onclick = ( ) => cal . today ( ) ;
87
88
document . getElementById ( "calBack" ) . onclick = ( ) => cal . pshift ( ) ;
88
89
document . getElementById ( "calNext" ) . onclick = ( ) => cal . pshift ( 1 ) ;
89
90
document . getElementById ( "calAdd" ) . onclick = ( ) => cal . show ( ) ;
@@ -117,9 +118,19 @@ var cal = {
117
118
cal . load ( ) ;
118
119
} ,
119
120
120
- // (E) LOAD EVENTS DATA FOR MONTH/YEAR
121
+ // (E) JUMP TO TODAY
122
+ today : ( ) => {
123
+ let now = new Date ( ) , ny = now . getFullYear ( ) , nm = now . getMonth ( ) + 1 ;
124
+ if ( ny != cal . sYear || ( ny == cal . sYear && nm != cal . sMth ) ) {
125
+ cal . hMth . value = nm ;
126
+ cal . hYear . value = ny ;
127
+ cal . load ( ) ;
128
+ }
129
+ } ,
130
+
131
+ // (F) LOAD EVENTS DATA FOR MONTH/YEAR
121
132
load : ( ) => {
122
- // (E1 ) SET SELECTED PERIOD
133
+ // (F1 ) SET SELECTED PERIOD
123
134
cal . sMth = + cal . hMth . value ;
124
135
cal . sYear = + cal . hYear . value ;
125
136
cal . sDIM = new Date ( cal . sYear , cal . sMth , 0 ) . getDate ( ) ;
@@ -130,27 +141,27 @@ var cal = {
130
141
cal . sF = `${ cal . sYear } -${ m } -01 00:00:00` ;
131
142
cal . sL = `${ cal . sYear } -${ m } -${ cal . sDIM } 23:59:59` ;
132
143
133
- // (E2 ) FETCH & DRAW
144
+ // (F2 ) FETCH & DRAW
134
145
cal . events = calDB . getPeriod ( cal . sF , cal . sL ) ;
135
146
cal . hCB . innerHTML = "" ;
136
147
cal . draw ( ) ;
137
148
} ,
138
149
139
- // (F ) DRAW CALENDAR
150
+ // (G ) DRAW CALENDAR
140
151
draw : ( ) => {
141
- // (F1 ) CALCULATE DAY MONTH YEAR
152
+ // (G1 ) CALCULATE DAY MONTH YEAR
142
153
// note - jan is 0 & dec is 11 in js
143
154
// note - sun is 0 & sat is 6 in js
144
155
let now = new Date ( ) , // current date
145
156
nowMth = now . getMonth ( ) + 1 , // current month
146
157
nowYear = parseInt ( now . getFullYear ( ) ) , // current year
147
158
nowDay = cal . sMth == nowMth && cal . sYear == nowYear ? now . getDate ( ) : null ;
148
159
149
- // (F2 ) DRAW CALENDAR ROWS & CELLS
150
- // (F2 -1) INIT
160
+ // (G2 ) DRAW CALENDAR ROWS & CELLS
161
+ // (G2 -1) INIT
151
162
let rowA , rowB , rowC , rowMap = { } , rowNum = 1 , cell , cellNum = 1 ,
152
163
153
- // (F2 -2) HELPER - DRAW A NEW ROW
164
+ // (G2 -2) HELPER - DRAW A NEW ROW
154
165
rower = ( ) => {
155
166
rowA = document . createElement ( "div" ) ;
156
167
rowB = document . createElement ( "div" ) ;
@@ -164,7 +175,7 @@ var cal = {
164
175
rowA . appendChild ( rowC ) ;
165
176
} ,
166
177
167
- // (F2 -3) HELPER - DRAW A NEW CELL
178
+ // (G2 -3) HELPER - DRAW A NEW CELL
168
179
celler = day => {
169
180
cell = document . createElement ( "div" ) ;
170
181
cell . className = "calCell" ;
@@ -187,10 +198,10 @@ var cal = {
187
198
rowC . appendChild ( cell ) ;
188
199
} ;
189
200
190
- // (F2 -4) RESET CALENDAR
201
+ // (G2 -4) RESET CALENDAR
191
202
cal . hCB . innerHTML = "" ; rower ( ) ;
192
203
193
- // (F2 -5) BLANK CELLS BEFORE START OF MONTH
204
+ // (G2 -5) BLANK CELLS BEFORE START OF MONTH
194
205
if ( cal . mon && cal . sFD != 1 ) {
195
206
let blanks = cal . sFD == 0 ? 7 : cal . sFD ;
196
207
for ( let i = 1 ; i < blanks ; i ++ ) { celler ( ) ; cellNum ++ ; }
@@ -199,15 +210,15 @@ var cal = {
199
210
for ( let i = 0 ; i < cal . sFD ; i ++ ) { celler ( ) ; cellNum ++ ; }
200
211
}
201
212
202
- // (F2 -6) DAYS OF THE MONTH
213
+ // (G2 -6) DAYS OF THE MONTH
203
214
for ( let i = 1 ; i <= cal . sDIM ; i ++ ) {
204
215
rowMap [ i ] = { r : rowNum , c : cellNum } ;
205
216
celler ( i ) ;
206
217
if ( cellNum % 7 == 0 && i != cal . sDIM ) { rowNum ++ ; rower ( ) ; }
207
218
cellNum ++ ;
208
219
}
209
220
210
- // (F2 -7) BLANK CELLS AFTER END OF MONTH
221
+ // (G2 -7) BLANK CELLS AFTER END OF MONTH
211
222
if ( cal . mon && cal . sLD != 0 ) {
212
223
let blanks = cal . sLD == 6 ? 1 : 7 - cal . sLD ;
213
224
for ( let i = 0 ; i < blanks ; i ++ ) { celler ( ) ; cellNum ++ ; }
@@ -217,17 +228,17 @@ var cal = {
217
228
for ( let i = 0 ; i < blanks ; i ++ ) { celler ( ) ; cellNum ++ ; }
218
229
}
219
230
220
- // (F3 ) DRAW EVENTS
231
+ // (G3 ) DRAW EVENTS
221
232
if ( Object . keys ( cal . events ) . length > 0 ) { for ( let [ id , evt ] of Object . entries ( cal . events ) ) {
222
- // (F3 -1) EVENT START & END DAY
233
+ // (G3 -1) EVENT START & END DAY
223
234
let sd = new Date ( evt . s ) ,
224
235
ed = new Date ( evt . e ) ;
225
236
if ( sd . getFullYear ( ) < cal . sYear ) { sd = 1 ; }
226
237
else { sd = sd . getMonth ( ) + 1 < cal . sMth ? 1 : sd . getDate ( ) ; }
227
238
if ( ed . getFullYear ( ) > cal . sYear ) { ed = cal . sDIM ; }
228
239
else { ed = ed . getMonth ( ) + 1 > cal . sMth ? cal . sDIM : ed . getDate ( ) ; }
229
240
230
- // (F3 -2) "MAP" ONTO HTML CALENDAR
241
+ // (G3 -2) "MAP" ONTO HTML CALENDAR
231
242
cell = { } ; rowNum = 0 ;
232
243
for ( let i = sd ; i <= ed ; i ++ ) {
233
244
if ( rowNum != rowMap [ i ] [ "r" ] ) {
@@ -237,7 +248,7 @@ var cal = {
237
248
if ( cell [ rowNum ] ) { cell [ rowNum ] [ "e" ] = rowMap [ i ] [ "c" ] ; }
238
249
}
239
250
240
- // (F3 -3) DRAW HTML EVENT ROW
251
+ // (G3 -3) DRAW HTML EVENT ROW
241
252
for ( let [ r , c ] of Object . entries ( cell ) ) {
242
253
let o = c . s - 1 - ( ( r - 1 ) * 7 ) , // event cell offset
243
254
w = c . e - c . s + 1 ; // event cell width
@@ -255,7 +266,7 @@ var cal = {
255
266
} }
256
267
} ,
257
268
258
- // (G ) SHOW EVENT FORM
269
+ // (H ) SHOW EVENT FORM
259
270
show : id => {
260
271
if ( id ) {
261
272
cal . hfID . value = id ;
@@ -273,9 +284,9 @@ var cal = {
273
284
cal . transit ( ( ) => cal . hFormWrap . show ( ) ) ;
274
285
} ,
275
286
276
- // (H ) SAVE EVENT
287
+ // (I ) SAVE EVENT
277
288
save : async ( ) => {
278
- // (H1 ) COLLECT DATA
289
+ // (I1 ) COLLECT DATA
279
290
// data[0] = start date
280
291
// data[1] = end date
281
292
// data[2] = event text
@@ -290,20 +301,20 @@ var cal = {
290
301
] ;
291
302
if ( cal . hfID . value != "" ) { data . push ( + cal . hfID . value ) ; }
292
303
293
- // (H2 ) DATE CHECK
304
+ // (I2 ) DATE CHECK
294
305
if ( new Date ( data [ 0 ] ) > new Date ( data [ 1 ] ) ) {
295
306
alert ( "Start date cannot be later than end date!" ) ;
296
307
return false ;
297
308
}
298
309
299
- // (H3 ) SAVE
310
+ // (I3 ) SAVE
300
311
await calDB . save ( data ) ;
301
312
cal . transit ( ( ) => cal . hFormWrap . close ( ) ) ;
302
313
cal . load ( ) ;
303
314
return false ;
304
315
} ,
305
316
306
- // (I ) DELETE EVENT
317
+ // (J ) DELETE EVENT
307
318
del : async ( ) => { if ( confirm ( "Delete Event?" ) ) {
308
319
await calDB . del ( cal . hfID . value ) ;
309
320
cal . transit ( ( ) => cal . hFormWrap . close ( ) ) ;
0 commit comments