diff --git a/js/swad19.91.js b/js/swad19.91.1.js similarity index 98% rename from js/swad19.91.js rename to js/swad19.91.1.js index 10cf49d5a..d74b22286 100644 --- a/js/swad19.91.js +++ b/js/swad19.91.1.js @@ -604,19 +604,24 @@ function refreshMatchTch () { function readMatchTchData () { if (objXMLHttpReqMchTch.readyState == 4) { // Check if data have been received if (objXMLHttpReqMchTch.status == 200) { - var endOfId = objXMLHttpReqMchTch.responseText.indexOf('|',0); // Get separator position - var Id = objXMLHttpReqMchTch.responseText.substring(0,endOfId); // Get Id - var htmlMatch = objXMLHttpReqMchTch.responseText.substring(endOfId + 1); // Get HTML code + var endOfId = objXMLHttpReqMchTch.responseText.indexOf('|',0 ); // Get separator position + var endOfEv = objXMLHttpReqMchTch.responseText.indexOf('|',endOfId + 1); // Get separator position - var div = document.getElementById(Id); // Access to refreshable DIV + var id = objXMLHttpReqMchTch.responseText.substring(0 ,endOfId); // Get id + var ev = objXMLHttpReqMchTch.responseText.substring(endOfId + 1,endOfEv); // Get ev ('0' / '1') + var html = objXMLHttpReqMchTch.responseText.substring(endOfEv + 1); // Get HTML code + + var div = document.getElementById(id); // Access to refreshable DIV if (div) { - div.innerHTML = htmlMatch; // Update DIV content + div.innerHTML = html; // Update DIV content - // Scripts in div got via AJAX are not executed ==> execute them - evalScriptsInElem (div); + if (parseInt(ev)) { // 0 / 1 + // Scripts in div got via AJAX are not executed ==> execute them + evalScriptsInElem (div); - // Process mathematics; see http://docs.mathjax.org/en/latest/advanced/typeset.html - MathJax.Hub.Queue(["Typeset",MathJax.Hub,div]); + // Process mathematics; see http://docs.mathjax.org/en/latest/advanced/typeset.html + MathJax.Hub.Queue(["Typeset",MathJax.Hub,div]); + } } // Global delay variable is set initially in swad-core diff --git a/swad_HTML.c b/swad_HTML.c index 7216191e5..e3c53d394 100644 --- a/swad_HTML.c +++ b/swad_HTML.c @@ -1068,7 +1068,7 @@ void HTM_INPUT_URL (const char *Name,const char *Value,bool SubmitOnChange, int NumBytesPrinted; char *Attr; - HTM_TxtF ("", + HTM_TxtF (" onmousedown=\"document.getElementById('%s').submit();return false;\">", Gbl.Form.Id); HTM_BUTTON_NestingLevel++; } diff --git a/swad_HTML.h b/swad_HTML.h index d84b2acdd..e82dc8c49 100644 --- a/swad_HTML.h +++ b/swad_HTML.h @@ -136,7 +136,7 @@ void HTM_INPUT_RADIO (const char *Name,bool SubmitOnClick, void HTM_INPUT_CHECKBOX (const char *Name,bool SubmitOnChange, const char *fmt,...); -void HTM_BUTTON_OnMouseDown_Begin (const char *Title,const char *Class,const char *OnMouseDown); +void HTM_BUTTON_OnMouseDown_Begin (const char *Title,const char *Class); void HTM_BUTTON_SUBMIT_Begin (const char *Title,const char *Class,const char *OnSubmit); void HTM_BUTTON_BUTTON_Begin (const char *Title,const char *Class,const char *OnClick); void HTM_BUTTON_Animated_Begin (const char *Title,const char *Class,const char *OnClick); diff --git a/swad_changelog.h b/swad_changelog.h index 701b953f5..f72d92f8a 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -490,13 +490,14 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 19.91 (2019-12-13)" +#define Log_PLATFORM_VERSION "SWAD 19.91.1 (2019-12-14)" #define CSS_FILE "swad19.90.1.css" -#define JS_FILE "swad19.91.js" +#define JS_FILE "swad19.91.1.js" /* // TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.) // TODO: Impedir la creación y edición de proyectos si no son editables. + Version 19.91.1: Dec 14, 2019 Changes in match layout. (248533 lines) Version 19.91: Dec 13, 2019 Changes in match countdown. Code refactoring in HTML. (248513 lines) Version 19.90.5: Dec 13, 2019 Fixed issues in layout of links (buttons). (248432 lines) diff --git a/swad_match.c b/swad_match.c index c010c71ed..36ae2b3fb 100644 --- a/swad_match.c +++ b/swad_match.c @@ -167,10 +167,10 @@ static void Mch_ShowLeftColumnTch (struct Match *Match); static void Mch_ShowRefreshablePartTch (struct Match *Match); static void Mch_WriteElapsedTimeInMch (struct Match *Match); static void Mch_WriteElapsedTimeInQst (struct Match *Match); -static void Mch_WriteHourglass (struct Match *Match); -static void Mch_PutFormCountdown (struct Match *Match,long Countdown,const char *Color); -static void Mch_PutCountdownAndHourglassIcon (struct Match *Match); static void Mch_WriteNumRespondersQst (struct Match *Match); +static void Mch_PutFormCountdown (struct Match *Match,long Seconds,const char *Color); +static void Mch_PutCountdownAndHourglassIcon (struct Match *Match); +static void Mch_PutFormsCountdown (struct Match *Match); static void Mch_ShowRightColumnTch (const struct Match *Match); static void Mch_ShowLeftColumnStd (const struct Match *Match, @@ -196,7 +196,7 @@ static bool Mch_ShowQuestionAndAnswersStd (const struct Match *Match, Mch_Update_t Update); static void Mch_ShowMatchScore (const struct Match *Match); -static void Mch_DrawEmptyRowScore (unsigned NumRow,double MinScore,double MaxScore); +static void Mch_DrawEmptyScoreRow (unsigned NumRow,double MinScore,double MaxScore); static void Mch_DrawScoreRow (double Score,double MinScore,double MaxScore, unsigned NumRow,unsigned NumUsrs,unsigned MaxUsrs); static const char *Mch_GetClassBorder (unsigned NumRow); @@ -1976,6 +1976,10 @@ static void Mch_SetMatchStatusToPrev (struct Match *Match) Match->Status.Countdown = -1L; // No countdown } +/*****************************************************************************/ +/****************** Set match status to previous question ********************/ +/*****************************************************************************/ + static void Mch_SetMatchStatusToPrevQst (struct Match *Match) { /***** Get index of the previous question *****/ @@ -1992,6 +1996,10 @@ static void Mch_SetMatchStatusToPrevQst (struct Match *Match) Mch_SetMatchStatusToStart (Match); } +/*****************************************************************************/ +/************************ Set match status to start **************************/ +/*****************************************************************************/ + static void Mch_SetMatchStatusToStart (struct Match *Match) { Match->Status.QstInd = 0; // Before first question @@ -2031,6 +2039,10 @@ static void Mch_SetMatchStatusToNext (struct Match *Match) Match->Status.Countdown = -1L; // No countdown } +/*****************************************************************************/ +/****************** Set match status to next question ************************/ +/*****************************************************************************/ + static void Mch_SetMatchStatusToNextQst (struct Match *Match) { /***** Get index of the next question *****/ @@ -2048,6 +2060,10 @@ static void Mch_SetMatchStatusToNextQst (struct Match *Match) Mch_SetMatchStatusToEnd (Match); } +/*****************************************************************************/ +/************************* Set match status to end ***************************/ +/*****************************************************************************/ + static void Mch_SetMatchStatusToEnd (struct Match *Match) { Match->Status.QstInd = Mch_AFTER_LAST_QUESTION; // After last question @@ -2183,6 +2199,9 @@ static void Mch_ShowLeftColumnTch (struct Match *Match) Mch_ShowRefreshablePartTch (Match); HTM_DIV_End (); + /***** Put forms to start countdown *****/ + Mch_PutFormsCountdown (Match); + /***** Buttons *****/ Mch_PutMatchControlButtons (Match); @@ -2198,6 +2217,10 @@ static void Mch_ShowLeftColumnTch (struct Match *Match) HTM_DIV_End (); } +/*****************************************************************************/ +/***************** Show left refreshable part for teachers *******************/ +/*****************************************************************************/ + static void Mch_ShowRefreshablePartTch (struct Match *Match) { /***** Write elapsed time in match *****/ @@ -2209,13 +2232,17 @@ static void Mch_ShowRefreshablePartTch (struct Match *Match) /***** Write elapsed time in question *****/ Mch_WriteElapsedTimeInQst (Match); - /***** Write hourglass *****/ - Mch_WriteHourglass (Match); - /***** Number of users who have responded this question *****/ Mch_WriteNumRespondersQst (Match); + + /***** Write hourglass *****/ + Mch_PutCountdownAndHourglassIcon (Match); } +/*****************************************************************************/ +/******************** Write elapsed time in current match ********************/ +/*****************************************************************************/ + static void Mch_WriteElapsedTimeInMch (struct Match *Match) { struct Time Time; @@ -2231,6 +2258,10 @@ static void Mch_WriteElapsedTimeInMch (struct Match *Match) HTM_DIV_End (); } +/*****************************************************************************/ +/****************** Write elapsed time in current question *******************/ +/*****************************************************************************/ + static void Mch_WriteElapsedTimeInQst (struct Match *Match) { struct Time Time; @@ -2252,184 +2283,6 @@ static void Mch_WriteElapsedTimeInQst (struct Match *Match) HTM_DIV_End (); } -static void Mch_WriteHourglass (struct Match *Match) - { - /***** Start container *****/ - HTM_DIV_Begin ("class=\"MCH_SHOW_HOURGLASS\""); - - /***** Put icon hourglass and write countdown *****/ - Mch_PutCountdownAndHourglassIcon (Match); - HTM_BR (); - - /***** Put forms to start countdown *****/ - Mch_PutFormCountdown (Match,-1 ,"MCH_GREEN" ); - Mch_PutFormCountdown (Match,Mch_COUNTDOWN_SECONDS_LARGE ,"MCH_LIMEGREEN"); - Mch_PutFormCountdown (Match,Mch_COUNTDOWN_SECONDS_MEDIUM,"MCH_YELLOW" ); - Mch_PutFormCountdown (Match,Mch_COUNTDOWN_SECONDS_SMALL ,"MCH_RED" ); - - /***** End container *****/ - HTM_DIV_End (); - } - -static void Mch_PutFormCountdown (struct Match *Match,long Countdown,const char *Color) - { - extern const char *Txt_Countdown; - char *OnSubmit; - char *Class; - bool PutForm = Match->Status.Showing != Mch_END; - - if (PutForm) - { - /***** Start form *****/ - if (asprintf (&OnSubmit,"updateMatchTch('match_left'," - "'act=%ld&ses=%s&MchCod=%ld&Countdown=%ld');" - " return false;", // return false is necessary to not submit form - Act_GetActCod (ActMchCntDwn),Gbl.Session.Id, - Match->MchCod,Countdown) < 0) - Lay_NotEnoughMemoryExit (); - // Frm_StartFormUniqueAnchorOnSubmit (ActUnk,NULL,OnSubmit); - - /***** Set class *****/ - if (asprintf (&Class,"BT_LINK MCH_BUTTON_ON %s",Color) < 0) - Lay_NotEnoughMemoryExit (); - } - else - { - /***** Set class *****/ - if (asprintf (&Class,"BT_LINK_OFF MCH_BUTTON_HIDDEN %s",Color) < 0) - Lay_NotEnoughMemoryExit (); - } - - /***** Put icon *****/ - HTM_DIV_Begin ("class=\"MCH_SMALLBUTTON_CONT\""); - - if (PutForm) - { - HTM_BUTTON_OnMouseDown_Begin (Txt_Countdown,Class,OnSubmit); - } - else - HTM_BUTTON_BUTTON_Begin (NULL,Class,NULL); - - if (Countdown >= 0) - HTM_TxtF (" %ld″",Countdown); - else - HTM_Txt (" ∞ "); - - HTM_BUTTON_End (); - - HTM_DIV_End (); - - /***** Free class *****/ - free (Class); - - /***** End form *****/ - if (PutForm) - { - Frm_EndForm (); - free (OnSubmit); - } - } - -static void Mch_PutFormCountdown_old (struct Match *Match,long Countdown,const char *Color) - { - extern const char *Txt_Countdown; - char *Class; - bool PutForm = Match->Status.Showing != Mch_END; - - if (PutForm) - { - /***** Start form *****/ - Frm_StartForm (ActMchCntDwn); - Mch_PutParamMchCod (Match->MchCod); // Current match being played - Par_PutHiddenParamLong (NULL,"Countdown",Countdown); - - /***** Set class *****/ - if (asprintf (&Class,"BT_LINK MCH_BUTTON_ON %s",Color) < 0) - Lay_NotEnoughMemoryExit (); - } - else - { - /***** Set class *****/ - if (asprintf (&Class,"BT_LINK_OFF MCH_BUTTON_HIDDEN %s",Color) < 0) - Lay_NotEnoughMemoryExit (); - } - - /***** Put icon *****/ - HTM_DIV_Begin ("class=\"MCH_SMALLBUTTON_CONT\""); - - if (PutForm) - HTM_BUTTON_OnMouseDown_Begin (Txt_Countdown,Class,NULL); - else - HTM_BUTTON_BUTTON_Begin (NULL,Class,NULL); - - if (Countdown >= 0) - HTM_TxtF (" %ld″",Countdown); - else - HTM_Txt (" ∞ "); - - HTM_BUTTON_End (); - - HTM_DIV_End (); - - /***** Free class *****/ - free (Class); - - /***** End form *****/ - if (PutForm) - Frm_EndForm (); - } - -static void Mch_PutCountdownAndHourglassIcon (struct Match *Match) - { - extern const char *Txt_Countdown; - const char *Class; - const char *Icon; - - /***** Set hourglass icon depending on countdown *****/ - if (Match->Status.Showing == Mch_END) // Match over - { - Class = "BT_LINK_OFF MCH_BUTTON_HIDDEN MCH_GREEN"; - Icon = "fa-hourglass-start"; - } - else if (Match->Status.Countdown < 0) // No countdown - { - Class = "BT_LINK_OFF MCH_BUTTON_OFF MCH_GREEN"; - Icon = "fa-hourglass-start"; - } - else if (Match->Status.Countdown > Mch_COUNTDOWN_SECONDS_MEDIUM) // Countdown in progress - { - Class = "BT_LINK_OFF MCH_BUTTON_OFF MCH_LIMEGREEN"; - Icon = "fa-hourglass-start"; - } - else if (Match->Status.Countdown > Mch_COUNTDOWN_SECONDS_SMALL) // Countdown in progress - { - Class = "BT_LINK_OFF MCH_BUTTON_OFF MCH_YELLOW"; - Icon = "fa-hourglass-half"; - } - else // Countdown about to end - { - Class = "BT_LINK_OFF MCH_BUTTON_OFF MCH_RED"; - Icon = "fa-hourglass-end"; - } - - /***** Write countdown and put hourglass icon *****/ - HTM_DIV_Begin ("class=\"MCH_BIGBUTTON_CONT\""); - HTM_BUTTON_BUTTON_Begin (Txt_Countdown,Class,NULL); - - /* Countdown */ - if (Match->Status.Countdown > 0) - HTM_TxtF (" %02ld″",Match->Status.Countdown); - else - HTM_NBSP (); - HTM_BR (); - - /* Icon */ - HTM_TxtF ("",Icon); - - HTM_BUTTON_End (); - HTM_DIV_End (); - } - /*****************************************************************************/ /*************** Write number of responders to a match question **************/ /*****************************************************************************/ @@ -2472,6 +2325,147 @@ static void Mch_WriteNumRespondersQst (struct Match *Match) HTM_DIV_End (); } +/*****************************************************************************/ +/*************** Write current countdown and hourglass icon ******************/ +/*****************************************************************************/ + +static void Mch_PutCountdownAndHourglassIcon (struct Match *Match) + { + extern const char *Txt_Countdown; + const char *Class; + const char *Icon; + + /***** Set hourglass icon depending on countdown *****/ + if (Match->Status.Showing == Mch_END) // Match over + { + Class = "BT_LINK_OFF MCH_BUTTON_HIDDEN MCH_GREEN"; + Icon = "fa-hourglass-start"; + } + else if (Match->Status.Countdown < 0) // No countdown + { + Class = "BT_LINK_OFF MCH_BUTTON_OFF MCH_GREEN"; + Icon = "fa-hourglass-start"; + } + else if (Match->Status.Countdown > Mch_COUNTDOWN_SECONDS_MEDIUM) // Countdown in progress + { + Class = "BT_LINK_OFF MCH_BUTTON_OFF MCH_LIMEGREEN"; + Icon = "fa-hourglass-start"; + } + else if (Match->Status.Countdown > Mch_COUNTDOWN_SECONDS_SMALL) // Countdown in progress + { + Class = "BT_LINK_OFF MCH_BUTTON_OFF MCH_YELLOW"; + Icon = "fa-hourglass-half"; + } + else // Countdown about to end + { + Class = "BT_LINK_OFF MCH_BUTTON_OFF MCH_RED"; + Icon = "fa-hourglass-end"; + } + + /***** Write countdown and put hourglass icon *****/ + HTM_DIV_Begin ("class=\"MCH_SHOW_HOURGLASS\""); + HTM_DIV_Begin ("class=\"MCH_BIGBUTTON_CONT\""); + HTM_BUTTON_BUTTON_Begin (Txt_Countdown,Class,NULL); + + /* Countdown */ + if (Match->Status.Countdown > 0) + HTM_TxtF (" %02ld″",Match->Status.Countdown); + else + HTM_NBSP (); + HTM_BR (); + + /* Icon */ + HTM_TxtF ("",Icon); + + HTM_BUTTON_End (); + HTM_DIV_End (); + HTM_DIV_End (); + } + +/*****************************************************************************/ +/******************** Put all forms to start countdowns **********************/ +/*****************************************************************************/ + +static void Mch_PutFormsCountdown (struct Match *Match) + { + /***** Start container *****/ + HTM_DIV_Begin ("class=\"MCH_SHOW_HOURGLASS\""); + + /***** Put forms to start countdown *****/ + Mch_PutFormCountdown (Match,-1 ,"MCH_GREEN" ); + Mch_PutFormCountdown (Match,Mch_COUNTDOWN_SECONDS_LARGE ,"MCH_LIMEGREEN"); + Mch_PutFormCountdown (Match,Mch_COUNTDOWN_SECONDS_MEDIUM,"MCH_YELLOW" ); + Mch_PutFormCountdown (Match,Mch_COUNTDOWN_SECONDS_SMALL ,"MCH_RED" ); + + /***** End container *****/ + HTM_DIV_End (); + } + +/*****************************************************************************/ +/****** Put a form to start a countdown with a given number of seconds *******/ +/*****************************************************************************/ + +static void Mch_PutFormCountdown (struct Match *Match,long Seconds,const char *Color) + { + extern const char *Txt_Countdown; + char *OnSubmit; + char *Class; + bool PutForm = Match->Status.Showing != Mch_END; + + if (PutForm) + { + /***** Start form *****/ + if (asprintf (&OnSubmit,"updateMatchTch('match_left'," + "'act=%ld&ses=%s&MchCod=%ld&Countdown=%ld');" + " return false;", // return false is necessary to not submit form + Act_GetActCod (ActMchCntDwn),Gbl.Session.Id, + Match->MchCod,Seconds) < 0) + Lay_NotEnoughMemoryExit (); + Frm_StartFormOnSubmit (ActUnk,OnSubmit); + + /***** Set class *****/ + if (asprintf (&Class,"BT_LINK MCH_BUTTON_ON %s",Color) < 0) + Lay_NotEnoughMemoryExit (); + } + else + { + /***** Set class *****/ + if (asprintf (&Class,"BT_LINK_OFF MCH_BUTTON_HIDDEN %s",Color) < 0) + Lay_NotEnoughMemoryExit (); + } + + /***** Put icon *****/ + HTM_DIV_Begin ("class=\"MCH_SMALLBUTTON_CONT\""); + + if (PutForm) + HTM_BUTTON_SUBMIT_Begin (Txt_Countdown,Class,NULL); + else + HTM_BUTTON_BUTTON_Begin (NULL,Class,NULL); + + HTM_NBSP (); + if (Seconds >= 0) + HTM_TxtF ("%ld″",Seconds); + else + { + HTM_Txt ("∞"); + HTM_NBSP (); + } + + HTM_BUTTON_End (); + + HTM_DIV_End (); + + /***** Free class *****/ + free (Class); + + /***** End form *****/ + if (PutForm) + { + Frm_EndForm (); + free (OnSubmit); + } + } + /*****************************************************************************/ /********** Show right column when playing a match (as a teacher) ************/ /*****************************************************************************/ @@ -2790,7 +2784,7 @@ static void Mch_PutIfAnswered (const struct Match *Match,bool Answered) Frm_StartForm (ActSeeMchAnsQstStd); Mch_PutParamMchCod (Match->MchCod); // Current match being played - HTM_BUTTON_OnMouseDown_Begin (Txt_View_my_answer,"BT_LINK DAT_SMALL_GREEN",NULL); + HTM_BUTTON_OnMouseDown_Begin (Txt_View_my_answer,"BT_LINK DAT_SMALL_GREEN"); HTM_TxtF ("","fas fa-check-circle"); HTM_TxtF (" %s",Txt_MATCH_QUESTION_Answered); HTM_BUTTON_End (); @@ -2834,7 +2828,7 @@ static void Mch_PutIconToRemoveMyAnswer (const struct Match *Match) /***** Put icon with link *****/ HTM_DIV_Begin ("class=\"MCH_BIGBUTTON_CONT\""); - HTM_BUTTON_OnMouseDown_Begin (Txt_Delete_my_answer,"BT_LINK MCH_BUTTON_ON ICO_DARKRED",NULL); + HTM_BUTTON_OnMouseDown_Begin (Txt_Delete_my_answer,"BT_LINK MCH_BUTTON_ON ICO_DARKRED"); HTM_Txt (""); HTM_BUTTON_End (); HTM_DIV_End (); @@ -3002,7 +2996,7 @@ static bool Mch_ShowQuestionAndAnswersStd (const struct Match *Match, "", 'A' + (char) NumOpt) < 0) Lay_NotEnoughMemoryExit (); - HTM_BUTTON_OnMouseDown_Begin (NULL,Class,NULL); + HTM_BUTTON_OnMouseDown_Begin (NULL,Class); HTM_TxtF ("%c",'a' + (char) NumOpt); HTM_BUTTON_End (); free (Class); @@ -3113,7 +3107,7 @@ static void Mch_ShowMatchScore (const struct Match *Match) for (; NumRow < NumRowForThisScore; NumRow++) - Mch_DrawEmptyRowScore (NumRow,MinScore,MaxScore); + Mch_DrawEmptyScoreRow (NumRow,MinScore,MaxScore); /***** Draw row for this score *****/ Mch_DrawScoreRow (Score,MinScore,MaxScore,NumRow,NumUsrs,MaxUsrs); @@ -3124,7 +3118,7 @@ static void Mch_ShowMatchScore (const struct Match *Match) for (; NumRow < Mch_NUM_ROWS_SCORE; NumRow++) - Mch_DrawEmptyRowScore (NumRow,MinScore,MaxScore); + Mch_DrawEmptyScoreRow (NumRow,MinScore,MaxScore); /***** End table *****/ HTM_TABLE_End (); @@ -3133,7 +3127,11 @@ static void Mch_ShowMatchScore (const struct Match *Match) DB_FreeMySQLResult (&mysql_res); } -static void Mch_DrawEmptyRowScore (unsigned NumRow,double MinScore,double MaxScore) +/*****************************************************************************/ +/*************************** Draw empty score row ****************************/ +/*****************************************************************************/ + +static void Mch_DrawEmptyScoreRow (unsigned NumRow,double MinScore,double MaxScore) { /***** Draw row *****/ HTM_TR_Begin (NULL); @@ -3159,6 +3157,10 @@ static void Mch_DrawEmptyRowScore (unsigned NumRow,double MinScore,double MaxSco HTM_TR_End (); } +/*****************************************************************************/ +/******************************* Draw score row ******************************/ +/*****************************************************************************/ + static void Mch_DrawScoreRow (double Score,double MinScore,double MaxScore, unsigned NumRow,unsigned NumUsrs,unsigned MaxUsrs) { @@ -3292,6 +3294,10 @@ static void Mch_PutBigButton (Act_Action_t NextAction,const char *Id, Frm_EndForm (); } +/*****************************************************************************/ +/************************** Put a big button hidden **************************/ +/*****************************************************************************/ + static void Mch_PutBigButtonHidden (const char *Icon) { /***** Put inactive icon *****/ @@ -3301,6 +3307,9 @@ static void Mch_PutBigButtonHidden (const char *Icon) HTM_BUTTON_End (); HTM_DIV_End (); } +/*****************************************************************************/ +/********************** Put a big button to close window *********************/ +/*****************************************************************************/ static void Mch_PutBigButtonClose (void) { @@ -3344,6 +3353,10 @@ static void Mch_RemoveOldPlayers (void) Cfg_SECONDS_TO_REFRESH_MATCH_STD*3); } +/*****************************************************************************/ +/********************** Update match as being played *************************/ +/*****************************************************************************/ + static void Mch_UpdateMatchAsBeingPlayed (long MchCod) { /***** Insert match as being played *****/ @@ -3352,6 +3365,10 @@ static void Mch_UpdateMatchAsBeingPlayed (long MchCod) MchCod); } +/*****************************************************************************/ +/**************** Update match as paused, not being played *******************/ +/*****************************************************************************/ + static void Mch_SetMatchAsNotBeingPlayed (long MchCod) { /***** Delete all match players ******/ @@ -3367,6 +3384,10 @@ static void Mch_SetMatchAsNotBeingPlayed (long MchCod) MchCod); } +/*****************************************************************************/ +/*********************** Get if match is being played ************************/ +/*****************************************************************************/ + static bool Mch_GetIfMatchIsBeingPlayed (long MchCod) { /***** Get if a match is being played or not *****/ @@ -3377,6 +3398,10 @@ static bool Mch_GetIfMatchIsBeingPlayed (long MchCod) MchCod) != 0); } +/*****************************************************************************/ +/*************************** Get number of players ***************************/ +/*****************************************************************************/ + static void Mch_GetNumPlayers (struct Match *Match) { /***** Get number of players who are playing a match *****/ @@ -3555,11 +3580,11 @@ void Mch_RefreshMatchTch (void) switch (WhatToRefresh) { case REFRESH_LEFT: // Refresh only left part - HTM_Txt ("match_left|"); + HTM_Txt ("match_left|0|"); // 0 ==> do not evaluate MatJax scripts after updating HTML Mch_ShowRefreshablePartTch (&Match); break; case REFRESH_ALL: // Refresh the whole page - HTM_Txt ("match|"); + HTM_Txt ("match|1|"); // 1 ==> evaluate MatJax scripts after updating HTML Mch_ShowMatchStatusForTch (&Match); break; }