diff --git a/js/swad22.49.js b/js/swad23.47.js similarity index 98% rename from js/swad22.49.js rename to js/swad23.47.js index 94f3daae..b14cd544 100644 --- a/js/swad22.49.js +++ b/js/swad23.47.js @@ -55,7 +55,7 @@ function handleMatchKeys(event) { /*****************************************************************************/ function submitForm(FormId) { - var Form = document.getElementById(FormId); + const Form = document.getElementById(FormId); if (Form) Form.submit(); @@ -77,7 +77,7 @@ function submitForm(FormId) { // WriteDateOnSameDay = false ==> don't write date if it's the same day than the last call // WriteWeekDay = true ==> write day of the week ('monday', 'tuesday'...) // WriteHMS = 3 least significant bits for hour, minute and second -var txtToday = [ +const txtToday = [ "", // Unknown "Avui", // CA "Heute", // DE @@ -88,6 +88,7 @@ var txtToday = [ "Oggi", // IT "Dzisiaj", // PL "Hoje", // PT + "Bugün", // TR ]; function writeLocalDateHMSFromUTC (id,TimeUTC,DateFormat,Separator,Language, @@ -1016,6 +1017,30 @@ function moveNewTimelineToTimeline () { /************* Refresh old publications in timeline using AJAX ***************/ /*****************************************************************************/ +// See https://webdesign.tutsplus.com/how-to-implement-infinite-scrolling-with-javascript--cms-37055t + +var throttleWait; + +const throttle = (callback, time) => { + if (throttleWait) return; + throttleWait = true; + + setTimeout(() => { + callback(); + throttleWait = false; + }, time); +}; + +const handleInfiniteScroll = () => { + throttle(() => { + const endOfPage = window.innerHeight + window.pageYOffset >= document.body.offsetHeight - 320; + + if (endOfPage) + refreshOldTimeline (); + + }, 250); +}; + // This function is called when user clicks in 'See more' var objXMLHttpReqOldTml = false; @@ -1066,9 +1091,12 @@ function readOldTimelineData () { for (var i=0; i put parameters used by AJAX */ // Refresh parameters - HTM_TxtF ("var refreshParamExpand = \"act=%ld\";\n" - "var refreshParamContract = \"act=%ld\";\n", + HTM_TxtF ("const refreshParamExpand = \"act=%ld\";\n" + "const refreshParamContract = \"act=%ld\";\n", Act_GetActCod (Brw_GetActionExpand ()), Act_GetActCod (Brw_GetActionContract ())); @@ -889,9 +907,9 @@ static void Lay_WriteScriptParsAJAX (void) /* In all actions related to view or editing global timeline ==> put parameters used by AJAX */ // Refresh parameters - HTM_TxtF ("var refreshParamNxtActNewPub = \"act=%ld\";\n" - "var refreshParamNxtActOldPub = \"act=%ld\";\n" - "var refreshParamWho = \"Who=%u\";\n", + HTM_TxtF ("const refreshParamNxtActNewPub = \"act=%ld\";\n" + "const refreshParamNxtActOldPub = \"act=%ld\";\n" + "const refreshParamWho = \"Who=%u\";\n", Act_GetActCod (ActRefNewPubGblTL), Act_GetActCod (ActRefOldPubGblTL), (unsigned) TmlWho_GetGlobalWho ()); // Global variable got in a priori function @@ -909,8 +927,8 @@ static void Lay_WriteScriptParsAJAX (void) if (Gbl.Usrs.Other.UsrDat.UsrCod <= 0) Usr_GetParOtherUsrCodEncrypted (&Gbl.Usrs.Other.UsrDat); // Refresh parameters - HTM_TxtF ("var refreshParamNxtActOldPub = \"act=%ld\";\n" - "var refreshParamUsr = \"OtherUsrCod=%s\";\n", + HTM_TxtF ("const refreshParamNxtActOldPub = \"act=%ld\";\n" + "const refreshParamUsr = \"OtherUsrCod=%s\";\n", Act_GetActCod (ActRefOldPubUsrTL), Gbl.Usrs.Other.UsrDat.EnUsrCod); break; @@ -920,8 +938,8 @@ static void Lay_WriteScriptParsAJAX (void) case ActRemMchAnsQstStd: case ActAnsMchQstStd: // Refresh parameters - HTM_TxtF ("var refreshParamNxtActMch = \"act=%ld\";\n" - "var refreshParamMchCod = \"MchCod=%ld\";\n", + HTM_TxtF ("const refreshParamNxtActMch = \"act=%ld\";\n" + "const refreshParamMchCod = \"MchCod=%ld\";\n", Act_GetActCod (ActRefMchStd), Mch_GetMchCodBeingPlayed ()); break; @@ -937,15 +955,15 @@ static void Lay_WriteScriptParsAJAX (void) // Handle keys in keyboard/presenter HTM_Txt ("document.addEventListener(\"keydown\",handleMatchKeys);\n"); // Refresh parameters - HTM_TxtF ("var refreshParamNxtActMch = \"act=%ld\";\n" - "var refreshParamMchCod = \"MchCod=%ld\";\n", + HTM_TxtF ("const refreshParamNxtActMch = \"act=%ld\";\n" + "const refreshParamMchCod = \"MchCod=%ld\";\n", Act_GetActCod (ActRefMchTch), Mch_GetMchCodBeingPlayed ()); break; /* Parameter related with clicks refreshing */ case ActLstClk: // Refresh parameter - HTM_TxtF ("var refreshParamNxtActLstClk = \"act=%ld\";\n", + HTM_TxtF ("const refreshParamNxtActLstClk = \"act=%ld\";\n", Act_GetActCod (ActRefLstClk)); break; default: