Version 22.44.2: Oct 12, 2022 Code refactoring in projects.

This commit is contained in:
acanas 2022-10-12 14:52:59 +02:00
parent 36b3f0c9f0
commit 8922c4d135
2 changed files with 77 additions and 57 deletions

View File

@ -606,10 +606,11 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
TODO: Attach pdf files in multimedia. TODO: Attach pdf files in multimedia.
*/ */
#define Log_PLATFORM_VERSION "SWAD 22.44.1 (2022-10-12)" #define Log_PLATFORM_VERSION "SWAD 22.44.2 (2022-10-12)"
#define CSS_FILE "swad22.40.css" #define CSS_FILE "swad22.40.css"
#define JS_FILE "swad21.100.js" #define JS_FILE "swad21.100.js"
/* /*
Version 22.44.2: Oct 12, 2022 Code refactoring in projects. (333001 lines)
Version 22.44.1: Oct 12, 2022 Code refactoring in projects. (332985 lines) Version 22.44.1: Oct 12, 2022 Code refactoring in projects. (332985 lines)
Version 22.44: Oct 12, 2022 Code refactoring in projects. (332980 lines) Version 22.44: Oct 12, 2022 Code refactoring in projects. (332980 lines)
Version 22.43.2: Oct 12, 2022 Code refactoring in projects. (332984 lines) Version 22.43.2: Oct 12, 2022 Code refactoring in projects. (332984 lines)

View File

@ -145,11 +145,13 @@ struct Usr_SelectedUsrs Prj_MembersToAdd =
struct Prj_Faults struct Prj_Faults
{ {
bool PrjIsFaulty;
bool WrongTitle; bool WrongTitle;
bool WrongDescription; bool WrongDescription;
bool WrongNumStds; bool WrongNumStds;
bool WrongAssigned; bool WrongAssigned;
}; };
/*****************************************************************************/ /*****************************************************************************/
/***************************** Private variables *****************************/ /***************************** Private variables *****************************/
/*****************************************************************************/ /*****************************************************************************/
@ -197,6 +199,9 @@ static void Prj_PutIconsOnePrj (void *Projects);
//---------------------- Show one project in a row ---------------------------- //---------------------- Show one project in a row ----------------------------
static void Prj_ShowProjectRow (struct Prj_Projects *Projects, static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
unsigned NumIndex); unsigned NumIndex);
static void Prj_ShowProjectFirstRow (struct Prj_Projects *Projects,
const struct Prj_Faults *Faults,
unsigned NumIndex,unsigned UniqueId);
static void Prj_ShowProjectReviewStatus (const struct Prj_Projects *Projects); static void Prj_ShowProjectReviewStatus (const struct Prj_Projects *Projects);
static void Prj_ShowProjectAssigned (const struct Prj_Projects *Projects, static void Prj_ShowProjectAssigned (const struct Prj_Projects *Projects,
const struct Prj_Faults *Faults); const struct Prj_Faults *Faults);
@ -211,7 +216,7 @@ static void Prj_ShowOneProjectProposal (const struct Prj_Projects *Projects,
unsigned UniqueId); unsigned UniqueId);
//------------------------------------------------ ---------------------------- //------------------------------------------------ ----------------------------
static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults); static void Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults);
static void Prj_PutWarningIcon (void); static void Prj_PutWarningIcon (void);
static void Prj_PutIconToToggleProject (unsigned UniqueId, static void Prj_PutIconToToggleProject (unsigned UniqueId,
const char *Icon,const char *Text); const char *Icon,const char *Text);
@ -1351,25 +1356,75 @@ void Prj_PrintOneProject (void)
static void Prj_ShowProjectRow (struct Prj_Projects *Projects, static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
unsigned NumIndex) unsigned NumIndex)
{ {
extern const char *Txt_Actions[Act_NUM_ACTIONS];
extern const char *Txt_Description; extern const char *Txt_Description;
extern const char *Txt_Required_knowledge; extern const char *Txt_Required_knowledge;
extern const char *Txt_Required_materials; extern const char *Txt_Required_materials;
struct Prj_Faults Faults;
static unsigned UniqueId = 0;
/***** Check project faults *****/
Prj_CheckIfPrjIsFaulty (Projects->Prj.PrjCod,&Faults);
/***** First row with main data (dates, title...) *****/
UniqueId++;
Prj_ShowProjectFirstRow (Projects,&Faults,NumIndex,UniqueId);
/***** Review status *****/
Prj_ShowProjectReviewStatus (Projects);
/***** Assigned? *****/
Prj_ShowProjectAssigned (Projects,&Faults);
/***** Number of students *****/
Prj_ShowProjectNumStds (Projects,&Faults);
/***** Project members *****/
Prj_ShowProjectMembers (Projects);
/***** Link to show hidden info *****/
Prj_ShowOneProjectLinkToShowHiddenInfo (Projects,UniqueId);
/***** Proposal *****/
Prj_ShowOneProjectProposal (Projects,UniqueId);
/***** Write rows of data of this project *****/
/* Description of the project */
Prj_ShowOneProjectTxtField (Projects,"prj_dsc_",UniqueId,
Txt_Description,Projects->Prj.Description,
Faults.WrongDescription);
/* Required knowledge to carry out the project */
Prj_ShowOneProjectTxtField (Projects,"prj_knw_",UniqueId,
Txt_Required_knowledge,Projects->Prj.Knowledge,
false); // No warning
/* Required materials to carry out the project */
Prj_ShowOneProjectTxtField (Projects,"prj_mtr_",UniqueId,
Txt_Required_materials,Projects->Prj.Materials,
false); // No warning
/* Link to view more info about the project */
Prj_ShowOneProjectURL (Projects,"prj_url_",UniqueId);
}
/*****************************************************************************/
/** When listing a project, show first row with main data (dates, title...) **/
/*****************************************************************************/
static void Prj_ShowProjectFirstRow (struct Prj_Projects *Projects,
const struct Prj_Faults *Faults,
unsigned NumIndex,unsigned UniqueId)
{
extern const char *Txt_Actions[Act_NUM_ACTIONS];
char *Id;
Act_Action_t NextAction; Act_Action_t NextAction;
char *Anchor = NULL; char *Anchor = NULL;
const char *ClassDate = (Projects->Prj.Hidden == Prj_HIDDEN) ? "DATE_BLUE_LIGHT" : const char *ClassDate = (Projects->Prj.Hidden == Prj_HIDDEN) ? "DATE_BLUE_LIGHT" :
"DATE_BLUE"; "DATE_BLUE";
struct Prj_Faults Faults;
bool PrjIsFaulty;
static unsigned UniqueId = 0;
char *Id;
/***** Set anchor string *****/ /***** Set anchor string *****/
Frm_SetAnchorStr (Projects->Prj.PrjCod,&Anchor); Frm_SetAnchorStr (Projects->Prj.PrjCod,&Anchor);
/***** Check if project is faulty or faultless *****/
PrjIsFaulty = Prj_CheckIfPrjIsFaulty (Projects->Prj.PrjCod,&Faults);
/***** Write first row of data of this project *****/ /***** Write first row of data of this project *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -1381,7 +1436,7 @@ static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
The_GetSuffix (), The_GetSuffix (),
The_GetColorRows ()); The_GetColorRows ());
HTM_Unsigned (NumIndex); HTM_Unsigned (NumIndex);
if (PrjIsFaulty) if (Faults->PrjIsFaulty)
{ {
HTM_BR (); HTM_BR ();
Prj_PutWarningIcon (); Prj_PutWarningIcon ();
@ -1406,7 +1461,6 @@ static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
} }
/* Creation date/time */ /* Creation date/time */
UniqueId++;
if (asprintf (&Id,"prj_creat_%u",UniqueId) < 0) if (asprintf (&Id,"prj_creat_%u",UniqueId) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
switch (Projects->View) switch (Projects->View)
@ -1479,7 +1533,7 @@ static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();
} }
if (Faults.WrongTitle) if (Faults->WrongTitle)
Prj_PutWarningIcon (); Prj_PutWarningIcon ();
HTM_ARTICLE_End (); HTM_ARTICLE_End ();
HTM_TD_End (); HTM_TD_End ();
@ -1489,43 +1543,6 @@ static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
HTM_TR_End (); HTM_TR_End ();
/***** Review status *****/
Prj_ShowProjectReviewStatus (Projects);
/***** Assigned? *****/
Prj_ShowProjectAssigned (Projects,&Faults);
/***** Number of students *****/
Prj_ShowProjectNumStds (Projects,&Faults);
/***** Project members *****/
Prj_ShowProjectMembers (Projects);
/***** Link to show hidden info *****/
Prj_ShowOneProjectLinkToShowHiddenInfo (Projects,UniqueId);
/***** Proposal *****/
Prj_ShowOneProjectProposal (Projects,UniqueId);
/***** Write rows of data of this project *****/
/* Description of the project */
Prj_ShowOneProjectTxtField (Projects,"prj_dsc_",UniqueId,
Txt_Description,Projects->Prj.Description,
Faults.WrongDescription);
/* Required knowledge to carry out the project */
Prj_ShowOneProjectTxtField (Projects,"prj_knw_",UniqueId,
Txt_Required_knowledge,Projects->Prj.Knowledge,
false); // No warning
/* Required materials to carry out the project */
Prj_ShowOneProjectTxtField (Projects,"prj_mtr_",UniqueId,
Txt_Required_materials,Projects->Prj.Materials,
false); // No warning
/* Link to view more info about the project */
Prj_ShowOneProjectURL (Projects,"prj_url_",UniqueId);
/***** Free anchor string *****/ /***** Free anchor string *****/
Frm_FreeAnchorStr (Anchor); Frm_FreeAnchorStr (Anchor);
} }
@ -1983,7 +2000,7 @@ static void Prj_ShowOneProjectProposal (const struct Prj_Projects *Projects,
/********************** Check if a project has faults ************************/ /********************** Check if a project has faults ************************/
/*****************************************************************************/ /*****************************************************************************/
static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults) static void Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults)
{ {
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -2048,10 +2065,10 @@ static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults)
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
} }
return Faults->WrongTitle || Faults->PrjIsFaulty = Faults->WrongTitle ||
Faults->WrongDescription || Faults->WrongDescription ||
Faults->WrongNumStds || Faults->WrongNumStds ||
Faults->WrongAssigned; Faults->WrongAssigned;
} }
/*****************************************************************************/ /*****************************************************************************/
@ -3069,11 +3086,13 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
switch (Projects->Filter.Faulti) switch (Projects->Filter.Faulti)
{ {
case (1 << Prj_FAULTY): // Faulty projects case (1 << Prj_FAULTY): // Faulty projects
if (Prj_CheckIfPrjIsFaulty (PrjCod,&Faults)) Prj_CheckIfPrjIsFaulty (PrjCod,&Faults);
if (Faults.PrjIsFaulty)
Projects->LstPrjCods[NumPrjsAfterFilter++] = PrjCod; Projects->LstPrjCods[NumPrjsAfterFilter++] = PrjCod;
break; break;
case (1 << Prj_FAULTLESS): // Faultless projects case (1 << Prj_FAULTLESS): // Faultless projects
if (!Prj_CheckIfPrjIsFaulty (PrjCod,&Faults)) Prj_CheckIfPrjIsFaulty (PrjCod,&Faults);
if (!Faults.PrjIsFaulty)
Projects->LstPrjCods[NumPrjsAfterFilter++] = PrjCod; Projects->LstPrjCods[NumPrjsAfterFilter++] = PrjCod;
break; break;
default: // All projects default: // All projects