@@ -84,6 +84,7 @@ var cal = {
8484 // (C3) ATTACH CONTROLS
8585 cal . hMth . onchange = cal . load ;
8686 cal . hYear . onchange = cal . load ;
87+ document . getElementById ( "calToday" ) . onclick = ( ) => cal . today ( ) ;
8788 document . getElementById ( "calBack" ) . onclick = ( ) => cal . pshift ( ) ;
8889 document . getElementById ( "calNext" ) . onclick = ( ) => cal . pshift ( 1 ) ;
8990 document . getElementById ( "calAdd" ) . onclick = ( ) => cal . show ( ) ;
@@ -117,9 +118,19 @@ var cal = {
117118 cal . load ( ) ;
118119 } ,
119120
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
121132 load : ( ) => {
122- // (E1 ) SET SELECTED PERIOD
133+ // (F1 ) SET SELECTED PERIOD
123134 cal . sMth = + cal . hMth . value ;
124135 cal . sYear = + cal . hYear . value ;
125136 cal . sDIM = new Date ( cal . sYear , cal . sMth , 0 ) . getDate ( ) ;
@@ -130,27 +141,27 @@ var cal = {
130141 cal . sF = `${ cal . sYear } -${ m } -01 00:00:00` ;
131142 cal . sL = `${ cal . sYear } -${ m } -${ cal . sDIM } 23:59:59` ;
132143
133- // (E2 ) FETCH & DRAW
144+ // (F2 ) FETCH & DRAW
134145 cal . events = calDB . getPeriod ( cal . sF , cal . sL ) ;
135146 cal . hCB . innerHTML = "" ;
136147 cal . draw ( ) ;
137148 } ,
138149
139- // (F ) DRAW CALENDAR
150+ // (G ) DRAW CALENDAR
140151 draw : ( ) => {
141- // (F1 ) CALCULATE DAY MONTH YEAR
152+ // (G1 ) CALCULATE DAY MONTH YEAR
142153 // note - jan is 0 & dec is 11 in js
143154 // note - sun is 0 & sat is 6 in js
144155 let now = new Date ( ) , // current date
145156 nowMth = now . getMonth ( ) + 1 , // current month
146157 nowYear = parseInt ( now . getFullYear ( ) ) , // current year
147158 nowDay = cal . sMth == nowMth && cal . sYear == nowYear ? now . getDate ( ) : null ;
148159
149- // (F2 ) DRAW CALENDAR ROWS & CELLS
150- // (F2 -1) INIT
160+ // (G2 ) DRAW CALENDAR ROWS & CELLS
161+ // (G2 -1) INIT
151162 let rowA , rowB , rowC , rowMap = { } , rowNum = 1 , cell , cellNum = 1 ,
152163
153- // (F2 -2) HELPER - DRAW A NEW ROW
164+ // (G2 -2) HELPER - DRAW A NEW ROW
154165 rower = ( ) => {
155166 rowA = document . createElement ( "div" ) ;
156167 rowB = document . createElement ( "div" ) ;
@@ -164,7 +175,7 @@ var cal = {
164175 rowA . appendChild ( rowC ) ;
165176 } ,
166177
167- // (F2 -3) HELPER - DRAW A NEW CELL
178+ // (G2 -3) HELPER - DRAW A NEW CELL
168179 celler = day => {
169180 cell = document . createElement ( "div" ) ;
170181 cell . className = "calCell" ;
@@ -187,10 +198,10 @@ var cal = {
187198 rowC . appendChild ( cell ) ;
188199 } ;
189200
190- // (F2 -4) RESET CALENDAR
201+ // (G2 -4) RESET CALENDAR
191202 cal . hCB . innerHTML = "" ; rower ( ) ;
192203
193- // (F2 -5) BLANK CELLS BEFORE START OF MONTH
204+ // (G2 -5) BLANK CELLS BEFORE START OF MONTH
194205 if ( cal . mon && cal . sFD != 1 ) {
195206 let blanks = cal . sFD == 0 ? 7 : cal . sFD ;
196207 for ( let i = 1 ; i < blanks ; i ++ ) { celler ( ) ; cellNum ++ ; }
@@ -199,15 +210,15 @@ var cal = {
199210 for ( let i = 0 ; i < cal . sFD ; i ++ ) { celler ( ) ; cellNum ++ ; }
200211 }
201212
202- // (F2 -6) DAYS OF THE MONTH
213+ // (G2 -6) DAYS OF THE MONTH
203214 for ( let i = 1 ; i <= cal . sDIM ; i ++ ) {
204215 rowMap [ i ] = { r : rowNum , c : cellNum } ;
205216 celler ( i ) ;
206217 if ( cellNum % 7 == 0 && i != cal . sDIM ) { rowNum ++ ; rower ( ) ; }
207218 cellNum ++ ;
208219 }
209220
210- // (F2 -7) BLANK CELLS AFTER END OF MONTH
221+ // (G2 -7) BLANK CELLS AFTER END OF MONTH
211222 if ( cal . mon && cal . sLD != 0 ) {
212223 let blanks = cal . sLD == 6 ? 1 : 7 - cal . sLD ;
213224 for ( let i = 0 ; i < blanks ; i ++ ) { celler ( ) ; cellNum ++ ; }
@@ -217,17 +228,17 @@ var cal = {
217228 for ( let i = 0 ; i < blanks ; i ++ ) { celler ( ) ; cellNum ++ ; }
218229 }
219230
220- // (F3 ) DRAW EVENTS
231+ // (G3 ) DRAW EVENTS
221232 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
223234 let sd = new Date ( evt . s ) ,
224235 ed = new Date ( evt . e ) ;
225236 if ( sd . getFullYear ( ) < cal . sYear ) { sd = 1 ; }
226237 else { sd = sd . getMonth ( ) + 1 < cal . sMth ? 1 : sd . getDate ( ) ; }
227238 if ( ed . getFullYear ( ) > cal . sYear ) { ed = cal . sDIM ; }
228239 else { ed = ed . getMonth ( ) + 1 > cal . sMth ? cal . sDIM : ed . getDate ( ) ; }
229240
230- // (F3 -2) "MAP" ONTO HTML CALENDAR
241+ // (G3 -2) "MAP" ONTO HTML CALENDAR
231242 cell = { } ; rowNum = 0 ;
232243 for ( let i = sd ; i <= ed ; i ++ ) {
233244 if ( rowNum != rowMap [ i ] [ "r" ] ) {
@@ -237,7 +248,7 @@ var cal = {
237248 if ( cell [ rowNum ] ) { cell [ rowNum ] [ "e" ] = rowMap [ i ] [ "c" ] ; }
238249 }
239250
240- // (F3 -3) DRAW HTML EVENT ROW
251+ // (G3 -3) DRAW HTML EVENT ROW
241252 for ( let [ r , c ] of Object . entries ( cell ) ) {
242253 let o = c . s - 1 - ( ( r - 1 ) * 7 ) , // event cell offset
243254 w = c . e - c . s + 1 ; // event cell width
@@ -255,7 +266,7 @@ var cal = {
255266 } }
256267 } ,
257268
258- // (G ) SHOW EVENT FORM
269+ // (H ) SHOW EVENT FORM
259270 show : id => {
260271 if ( id ) {
261272 cal . hfID . value = id ;
@@ -273,9 +284,9 @@ var cal = {
273284 cal . transit ( ( ) => cal . hFormWrap . show ( ) ) ;
274285 } ,
275286
276- // (H ) SAVE EVENT
287+ // (I ) SAVE EVENT
277288 save : async ( ) => {
278- // (H1 ) COLLECT DATA
289+ // (I1 ) COLLECT DATA
279290 // data[0] = start date
280291 // data[1] = end date
281292 // data[2] = event text
@@ -290,20 +301,20 @@ var cal = {
290301 ] ;
291302 if ( cal . hfID . value != "" ) { data . push ( + cal . hfID . value ) ; }
292303
293- // (H2 ) DATE CHECK
304+ // (I2 ) DATE CHECK
294305 if ( new Date ( data [ 0 ] ) > new Date ( data [ 1 ] ) ) {
295306 alert ( "Start date cannot be later than end date!" ) ;
296307 return false ;
297308 }
298309
299- // (H3 ) SAVE
310+ // (I3 ) SAVE
300311 await calDB . save ( data ) ;
301312 cal . transit ( ( ) => cal . hFormWrap . close ( ) ) ;
302313 cal . load ( ) ;
303314 return false ;
304315 } ,
305316
306- // (I ) DELETE EVENT
317+ // (J ) DELETE EVENT
307318 del : async ( ) => { if ( confirm ( "Delete Event?" ) ) {
308319 await calDB . del ( cal . hfID . value ) ;
309320 cal . transit ( ( ) => cal . hFormWrap . close ( ) ) ;
0 commit comments