Version 23.87.1: Jul 16, 2024 Code refactoring in project filters.

This commit is contained in:
acanas 2024-07-16 19:30:38 +02:00
parent eabfd1716f
commit e7e7b00398
2 changed files with 43 additions and 89 deletions

View File

@ -633,10 +633,11 @@ Me sale este error, no s
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod') "can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
*/ */
#define Log_PLATFORM_VERSION "SWAD 23.87 (2024-07-16)" #define Log_PLATFORM_VERSION "SWAD 23.87.1 (2024-07-16)"
#define CSS_FILE "swad23.67.2.css" #define CSS_FILE "swad23.67.2.css"
#define JS_FILE "swad23.79.js" #define JS_FILE "swad23.79.js"
/* /*
Version 23.87.1: Jul 16, 2024 Code refactoring in project filters. (335286 lines)
Version 23.87: Jul 16, 2024 Changes in layout of project filters. (335321 lines) Version 23.87: Jul 16, 2024 Changes in layout of project filters. (335321 lines)
Version 23.86: Jul 15, 2024 Fixed bug in list of centers. Version 23.86: Jul 15, 2024 Fixed bug in list of centers.
Changes in selection of users in projects. Changes in selection of users in projects.

View File

@ -202,13 +202,13 @@ static void Prj_ReqUsrsToSelect (void *Projects);
static void Prj_GetSelectedUsrsAndShowTheirPrjs (struct Prj_Projects *Projects); static void Prj_GetSelectedUsrsAndShowTheirPrjs (struct Prj_Projects *Projects);
static void Prj_ShowPrjsInCurrentPage (void *Projects); static void Prj_ShowPrjsInCurrentPage (void *Projects);
static void Prj_ShowFormToFilterByMy_All (const struct Prj_Projects *Projects); static void Prj_ShowFormToFilterByUsrs (const struct Prj_Projects *Projects);
static void Prj_ShowFormToFilterByRoleInPrj (const struct Prj_Projects *Projects); static void Prj_ShowFormToFilterByRoleInPrj (const struct Prj_Projects *Projects);
static void Prj_ShowFormToFilterByAssignation (const struct Prj_Projects *Projects); static void Prj_ShowFormToFilterByAssignation (const struct Prj_Projects *Projects);
static void Prj_ShowFormToFilterByHidden (const struct Prj_Projects *Projects); static void Prj_ShowFormToFilterByVisibility (const struct Prj_Projects *Projects);
static void Prj_ShowFormToFilterByFaultiness (const struct Prj_Projects *Projects); static void Prj_ShowFormToFilterByFaultiness (const struct Prj_Projects *Projects);
static void Prj_ShowFormToFilterByReview (const struct Prj_Projects *Projects); static void Prj_ShowFormToFilterByReview (const struct Prj_Projects *Projects);
static void Prj_ShowFormToFilterByDpt (const struct Prj_Projects *Projects); static void Prj_ShowFormToFilterByDepartment (const struct Prj_Projects *Projects);
static Usr_Can_t Prj_CheckIfICanViewProjectFiles (long PrjCod); static Usr_Can_t Prj_CheckIfICanViewProjectFiles (long PrjCod);
@ -550,6 +550,22 @@ static void Prj_ShowPrjsInCurrentPage (void *Projects)
extern const char *Txt_Review; extern const char *Txt_Review;
extern const char *Txt_Department; extern const char *Txt_Department;
extern const char *Txt_No_projects; extern const char *Txt_No_projects;
#define Prj_NUM_FILTERS 7
static struct
{
const char **Label;
void (*FuncToShowForm) (const struct Prj_Projects *Projects);
} Filters[Prj_NUM_FILTERS] =
{
{&Txt_Users ,Prj_ShowFormToFilterByUsrs },
{&Txt_Roles ,Prj_ShowFormToFilterByRoleInPrj },
{&Txt_Assignation ,Prj_ShowFormToFilterByAssignation},
{&Txt_Visibility ,Prj_ShowFormToFilterByVisibility },
{&Txt_Faultiness ,Prj_ShowFormToFilterByFaultiness },
{&Txt_Review ,Prj_ShowFormToFilterByReview },
{&Txt_Department ,Prj_ShowFormToFilterByDepartment },
};
size_t Filter;
struct Pag_Pagination Pagination; struct Pag_Pagination Pagination;
unsigned NumPrj; unsigned NumPrj;
@ -572,107 +588,44 @@ static void Prj_ShowPrjsInCurrentPage (void *Projects)
Box_BoxBegin (Txt_Projects,Prj_PutIconsListProjects,Projects, Box_BoxBegin (Txt_Projects,Prj_PutIconsListProjects,Projects,
Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE); Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE);
/***** Put filters to choice which projects to show *****/ /***** Filters to choice which projects to show *****/
/* Begin fieldset */
HTM_FIELDSET_Begin (NULL); HTM_FIELDSET_Begin (NULL);
HTM_LEGEND (Txt_Filters); HTM_LEGEND (Txt_Filters);
HTM_TABLE_BeginPadding (2);
HTM_TABLE_BeginPadding (2); for (Filter = 0;
Filter < Prj_NUM_FILTERS;
// TODO: Put the following in a loop Filter++)
{
/***** Users *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
Frm_LabelColumn ("Frm_C1 RT","",Txt_Users); Frm_LabelColumn ("Frm_C1 RT","",*(Filters[Filter].Label));
HTM_TD_Begin ("class=\"Frm_C2 LT\""); HTM_TD_Begin ("class=\"Frm_C2 LT\"");
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ()); HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
Prj_ShowFormToFilterByMy_All ((struct Prj_Projects *) Projects); Filters[Filter].FuncToShowForm ((struct Prj_Projects *) Projects);
HTM_LABEL_End (); HTM_LABEL_End ();
HTM_TD_End (); HTM_TD_End ();
HTM_TR_End (); HTM_TR_End ();
}
/***** Roles in project *****/ HTM_TABLE_End ();
HTM_TR_Begin (NULL);
Frm_LabelColumn ("Frm_C1 RT","",Txt_Roles);
HTM_TD_Begin ("class=\"Frm_C2 LT\"");
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
Prj_ShowFormToFilterByRoleInPrj ((struct Prj_Projects *) Projects);
HTM_LABEL_End ();
HTM_TD_End ();
HTM_TR_End ();
/***** Assignation to students *****/
HTM_TR_Begin (NULL);
Frm_LabelColumn ("Frm_C1 RT","",Txt_Assignation);
HTM_TD_Begin ("class=\"Frm_C2 LT\"");
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
Prj_ShowFormToFilterByAssignation ((struct Prj_Projects *) Projects);
HTM_LABEL_End ();
HTM_TD_End ();
HTM_TR_End ();
/***** Hidden/visible projects *****/
HTM_TR_Begin (NULL);
Frm_LabelColumn ("Frm_C1 RT","",Txt_Visibility);
HTM_TD_Begin ("class=\"Frm_C2 LT\"");
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
Prj_ShowFormToFilterByHidden ((struct Prj_Projects *) Projects);
HTM_LABEL_End ();
HTM_TD_End ();
HTM_TR_End ();
/***** Faultiness *****/
HTM_TR_Begin (NULL);
Frm_LabelColumn ("Frm_C1 RT","",Txt_Faultiness);
HTM_TD_Begin ("class=\"Frm_C2 LT\"");
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
Prj_ShowFormToFilterByFaultiness ((struct Prj_Projects *) Projects);
HTM_LABEL_End ();
HTM_TD_End ();
HTM_TR_End ();
/***** Review status *****/
HTM_TR_Begin (NULL);
Frm_LabelColumn ("Frm_C1 RT","",Txt_Review);
HTM_TD_Begin ("class=\"Frm_C2 LT\"");
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
Prj_ShowFormToFilterByReview ((struct Prj_Projects *) Projects);
HTM_LABEL_End ();
HTM_TD_End ();
HTM_TR_End ();
/***** Department *****/
HTM_TR_Begin (NULL);
Frm_LabelColumn ("Frm_C1 RT","",Txt_Department);
HTM_TD_Begin ("class=\"Frm_C2 LT\"");
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
Prj_ShowFormToFilterByDpt ((struct Prj_Projects *) Projects);
HTM_LABEL_End ();
HTM_TD_End ();
HTM_TR_End ();
HTM_TABLE_End ();
/* End fieldset */
HTM_FIELDSET_End (); HTM_FIELDSET_End ();
/***** Project listing *****/
if (((struct Prj_Projects *) Projects)->Num) if (((struct Prj_Projects *) Projects)->Num)
{ {
/***** Write links to pages *****/ /* Write links to pages */
Pag_WriteLinksToPagesCentered (Pag_PROJECTS,&Pagination, Pag_WriteLinksToPagesCentered (Pag_PROJECTS,&Pagination,
(struct Prj_Projects *) Projects,-1L); (struct Prj_Projects *) Projects,-1L);
/***** Allocate memory for the project *****/ /* Allocate memory for the project */
Prj_AllocMemProject (&((struct Prj_Projects *) Projects)->Prj); Prj_AllocMemProject (&((struct Prj_Projects *) Projects)->Prj);
/***** Begin table *****/ /* Begin table */
HTM_TABLE_Begin ("TBL_SCROLL"); HTM_TABLE_Begin ("TBL_SCROLL");
/***** Table head *****/ /* Table head */
((struct Prj_Projects *) Projects)->View = Prj_LIST_PROJECTS; ((struct Prj_Projects *) Projects)->View = Prj_LIST_PROJECTS;
Prj_ShowProjectsHead ((struct Prj_Projects *) Projects); Prj_ShowProjectsHead ((struct Prj_Projects *) Projects);
/***** Write all projects *****/ /* Write all projects */
for (NumPrj = Pagination.FirstItemVisible, The_ResetRowColor (); for (NumPrj = Pagination.FirstItemVisible, The_ResetRowColor ();
NumPrj <= Pagination.LastItemVisible; NumPrj <= Pagination.LastItemVisible;
NumPrj++, The_ChangeRowColor ()) NumPrj++, The_ChangeRowColor ())
@ -700,13 +653,13 @@ static void Prj_ShowPrjsInCurrentPage (void *Projects)
Prj_ShowProjectRow ((struct Prj_Projects *) Projects); Prj_ShowProjectRow ((struct Prj_Projects *) Projects);
} }
/***** End table *****/ /* End table */
HTM_TABLE_End (); HTM_TABLE_End ();
/***** Free memory of the project *****/ /* Free memory of the project */
Prj_FreeMemProject (&((struct Prj_Projects *) Projects)->Prj); Prj_FreeMemProject (&((struct Prj_Projects *) Projects)->Prj);
/***** Write again links to pages *****/ /* Write again links to pages */
Pag_WriteLinksToPagesCentered (Pag_PROJECTS,&Pagination, Pag_WriteLinksToPagesCentered (Pag_PROJECTS,&Pagination,
(struct Prj_Projects *) Projects,-1L); (struct Prj_Projects *) Projects,-1L);
} }
@ -725,7 +678,7 @@ static void Prj_ShowPrjsInCurrentPage (void *Projects)
/**** Show form to choice only my projects, some projects or all projects ****/ /**** Show form to choice only my projects, some projects or all projects ****/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowFormToFilterByMy_All (const struct Prj_Projects *Projects) static void Prj_ShowFormToFilterByUsrs (const struct Prj_Projects *Projects)
{ {
struct Prj_Filter Filter; struct Prj_Filter Filter;
Usr_Who_t Who; Usr_Who_t Who;
@ -834,7 +787,7 @@ static void Prj_ShowFormToFilterByAssignation (const struct Prj_Projects *Projec
/************* Show form to select hidden / visible projects *****************/ /************* Show form to select hidden / visible projects *****************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowFormToFilterByHidden (const struct Prj_Projects *Projects) static void Prj_ShowFormToFilterByVisibility (const struct Prj_Projects *Projects)
{ {
extern const char *Txt_PROJECT_HIDDEN_VISIBL_PROJECTS[HidVis_NUM_HIDDEN_VISIBLE]; extern const char *Txt_PROJECT_HIDDEN_VISIBL_PROJECTS[HidVis_NUM_HIDDEN_VISIBLE];
struct Prj_Filter Filter; struct Prj_Filter Filter;
@ -960,7 +913,7 @@ static void Prj_ShowFormToFilterByReview (const struct Prj_Projects *Projects)
/*************** Show form to filter projects by department ******************/ /*************** Show form to filter projects by department ******************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowFormToFilterByDpt (const struct Prj_Projects *Projects) static void Prj_ShowFormToFilterByDepartment (const struct Prj_Projects *Projects)
{ {
extern const char *Txt_Any_department; extern const char *Txt_Any_department;
struct Prj_Filter Filter; struct Prj_Filter Filter;