diff --git a/swad_changelog.h b/swad_changelog.h index ea2c5b40f..ce061db4a 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -254,13 +254,14 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 17.24.1 (2017-10-10)" +#define Log_PLATFORM_VERSION "SWAD 17.24.2 (2017-10-10)" #define CSS_FILE "swad17.0.css" #define JS_FILE "swad17.17.1.js" // Number of lines (includes comments but not blank lines) has been got with the following command: // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1 /* + Version 17.24.2: Oct 10, 2017 Code refactoring in projects filter. (234209 lines) Version 17.24.1: Oct 10, 2017 Changes in pagination of projects. (234228 lines) Version 17.24: Oct 10, 2017 Filter projects by department. (234227 lines) Version 17.23.2: Oct 10, 2017 Code refactoring in filter of projects. (234137 lines) diff --git a/swad_global.h b/swad_global.h index 3f8f78d8e..9b1ba5e2e 100644 --- a/swad_global.h +++ b/swad_global.h @@ -572,13 +572,7 @@ struct Globals } Asgs; struct { - struct - { - Prj_WhoseProjects_t My_All; // Show my / all projects - unsigned PreNon; // Show preassigned / non preassigned projects - unsigned HidVis; // Show hidden / visible projects - long DptCod; // Show projects of this department - } Filter; + struct Prj_Filter Filter; bool LstIsRead; // Is the list already read from database, or it needs to be read? unsigned Num; // Number of projects long *LstPrjCods; // List of project codes diff --git a/swad_pagination.c b/swad_pagination.c index 083bfde17..7c4800f6e 100644 --- a/swad_pagination.c +++ b/swad_pagination.c @@ -164,10 +164,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate, break; case Pag_PROJECTS: Act_FormStartAnchor (ActSeePrj,Pagination->Anchor); - Prj_PutParams (Gbl.Prjs.Filter.My_All, - Gbl.Prjs.Filter.PreNon, - Gbl.Prjs.Filter.HidVis, - Gbl.Prjs.Filter.DptCod, + Prj_PutParams (&Gbl.Prjs.Filter, Gbl.Prjs.SelectedOrder, 1, -1L); @@ -275,10 +272,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate, break; case Pag_PROJECTS: Act_FormStartAnchor (ActSeePrj,Pagination->Anchor); - Prj_PutParams (Gbl.Prjs.Filter.My_All, - Gbl.Prjs.Filter.PreNon, - Gbl.Prjs.Filter.HidVis, - Gbl.Prjs.Filter.DptCod, + Prj_PutParams (&Gbl.Prjs.Filter, Gbl.Prjs.SelectedOrder, 1, -1L); @@ -372,10 +366,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate, break; case Pag_PROJECTS: Act_FormStartAnchor (ActSeePrj,Pagination->Anchor); - Prj_PutParams (Gbl.Prjs.Filter.My_All, - Gbl.Prjs.Filter.PreNon, - Gbl.Prjs.Filter.HidVis, - Gbl.Prjs.Filter.DptCod, + Prj_PutParams (&Gbl.Prjs.Filter, Gbl.Prjs.SelectedOrder, Pagination->LeftPage, -1L); @@ -480,10 +471,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate, break; case Pag_PROJECTS: Act_FormStartAnchor (ActSeePrj,Pagination->Anchor); - Prj_PutParams (Gbl.Prjs.Filter.My_All, - Gbl.Prjs.Filter.PreNon, - Gbl.Prjs.Filter.HidVis, - Gbl.Prjs.Filter.DptCod, + Prj_PutParams (&Gbl.Prjs.Filter, Gbl.Prjs.SelectedOrder, NumPage, -1L); @@ -576,10 +564,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate, break; case Pag_PROJECTS: Act_FormStartAnchor (ActSeePrj,Pagination->Anchor); - Prj_PutParams (Gbl.Prjs.Filter.My_All, - Gbl.Prjs.Filter.PreNon, - Gbl.Prjs.Filter.HidVis, - Gbl.Prjs.Filter.DptCod, + Prj_PutParams (&Gbl.Prjs.Filter, Gbl.Prjs.SelectedOrder, Pagination->RightPage, -1L); @@ -671,10 +656,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate, break; case Pag_PROJECTS: Act_FormStartAnchor (ActSeePrj,Pagination->Anchor); - Prj_PutParams (Gbl.Prjs.Filter.My_All, - Gbl.Prjs.Filter.PreNon, - Gbl.Prjs.Filter.HidVis, - Gbl.Prjs.Filter.DptCod, + Prj_PutParams (&Gbl.Prjs.Filter, Gbl.Prjs.SelectedOrder, Pagination->NumPags, -1L); diff --git a/swad_project.c b/swad_project.c index 0894b3bb1..c43f2c411 100644 --- a/swad_project.c +++ b/swad_project.c @@ -337,6 +337,7 @@ static void Prj_ShowProjectsInCurrentPage (void) static void Prj_ShowFormToFilterByMy_All (void) { extern const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS]; + struct Prj_Filter Filter; Prj_WhoseProjects_t My_All; static const char *WhoseProjectsImage[Prj_NUM_WHOSE_PROJECTS] = { @@ -353,10 +354,11 @@ static void Prj_ShowFormToFilterByMy_All (void) (Gbl.Prjs.Filter.My_All == My_All) ? "PREF_ON" : "PREF_OFF"); Act_FormStart (ActSeePrj); - Prj_PutParams (My_All, - Gbl.Prjs.Filter.PreNon, - Gbl.Prjs.Filter.HidVis, - Gbl.Prjs.Filter.DptCod, + Filter.My_All = My_All; + Filter.PreNon = Gbl.Prjs.Filter.PreNon; + Filter.HidVis = Gbl.Prjs.Filter.HidVis; + Filter.DptCod = Gbl.Prjs.Filter.DptCod; + Prj_PutParams (&Filter, Gbl.Prjs.SelectedOrder, Gbl.Prjs.CurrentPage, -1L); @@ -379,6 +381,7 @@ static void Prj_ShowFormToFilterByMy_All (void) static void Prj_ShowFormToFilterByPreassignedNonPreassig (void) { extern const char *Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_PLURAL[Prj_NUM_PREASSIGNED_NONPREASSIG]; + struct Prj_Filter Filter; Prj_PreassignedNonpreassig_t PreNon; fprintf (Gbl.F.Out,"
"); @@ -390,10 +393,11 @@ static void Prj_ShowFormToFilterByPreassignedNonPreassig (void) (Gbl.Prjs.Filter.PreNon & (1 << PreNon)) ? "PREF_ON" : "PREF_OFF"); Act_FormStart (ActSeePrj); - Prj_PutParams (Gbl.Prjs.Filter.My_All, - Gbl.Prjs.Filter.PreNon ^ (1 << PreNon), // Toggle - Gbl.Prjs.Filter.HidVis, - Gbl.Prjs.Filter.DptCod, + Filter.My_All = Gbl.Prjs.Filter.My_All; + Filter.PreNon = Gbl.Prjs.Filter.PreNon ^ (1 << PreNon); // Toggle + Filter.HidVis = Gbl.Prjs.Filter.HidVis; + Filter.DptCod = Gbl.Prjs.Filter.DptCod; + Prj_PutParams (&Filter, Gbl.Prjs.SelectedOrder, Gbl.Prjs.CurrentPage, -1L); @@ -416,6 +420,7 @@ static void Prj_ShowFormToFilterByPreassignedNonPreassig (void) static void Prj_ShowFormToFilterByHidden (void) { extern const char *Txt_PROJECT_HIDDEN_VISIBL_PROJECTS[Prj_NUM_HIDDEN_VISIBL]; + struct Prj_Filter Filter; Prj_HiddenVisibl_t HidVis; static const char *HiddenVisiblImage[Prj_NUM_HIDDEN_VISIBL] = { @@ -432,10 +437,11 @@ static void Prj_ShowFormToFilterByHidden (void) (Gbl.Prjs.Filter.HidVis & (1 << HidVis)) ? "PREF_ON" : "PREF_OFF"); Act_FormStart (ActSeePrj); - Prj_PutParams (Gbl.Prjs.Filter.My_All, - Gbl.Prjs.Filter.PreNon, - Gbl.Prjs.Filter.HidVis ^ (1 << HidVis), // Toggle - Gbl.Prjs.Filter.DptCod, + Filter.My_All = Gbl.Prjs.Filter.My_All; + Filter.PreNon = Gbl.Prjs.Filter.PreNon; + Filter.HidVis = Gbl.Prjs.Filter.HidVis ^ (1 << HidVis); // Toggle + Filter.DptCod = Gbl.Prjs.Filter.DptCod; + Prj_PutParams (&Filter, Gbl.Prjs.SelectedOrder, Gbl.Prjs.CurrentPage, -1L); @@ -459,14 +465,16 @@ static void Prj_ShowFormToFilterByHidden (void) static void Prj_ShowFormToFilterByDpt (void) { extern const char *Txt_Any_department; + struct Prj_Filter Filter; /***** Start form *****/ fprintf (Gbl.F.Out,"
"); Act_FormStart (ActSeePrj); - Prj_PutParams (Gbl.Prjs.Filter.My_All, - Gbl.Prjs.Filter.PreNon, - Gbl.Prjs.Filter.HidVis, - Prj_FILTER_DPT_DEFAULT, // Do not put department parameter here + Filter.My_All = Gbl.Prjs.Filter.My_All; + Filter.PreNon = Gbl.Prjs.Filter.PreNon; + Filter.HidVis = Gbl.Prjs.Filter.HidVis; + Filter.DptCod = Prj_FILTER_DPT_DEFAULT; // Do not put department parameter here + Prj_PutParams (&Filter, Gbl.Prjs.SelectedOrder, Gbl.Prjs.CurrentPage, -1L); @@ -490,10 +498,7 @@ static void Prj_ShowFormToFilterByDpt (void) static void Prj_PutCurrentParams (void) { - Prj_PutParams (Gbl.Prjs.Filter.My_All, - Gbl.Prjs.Filter.PreNon, - Gbl.Prjs.Filter.HidVis, - Gbl.Prjs.Filter.DptCod, + Prj_PutParams (&Gbl.Prjs.Filter, Gbl.Prjs.SelectedOrder, Gbl.Prjs.CurrentPage, Gbl.Prjs.PrjCod); @@ -503,28 +508,25 @@ static void Prj_PutCurrentParams (void) when one or more parameters must be passed explicitely. Each parameter is passed only if its value is distinct to default. */ -void Prj_PutParams (Prj_WhoseProjects_t My_All, - unsigned PreNon, - unsigned HidVis, - long DptCod, +void Prj_PutParams (struct Prj_Filter *Filter, Prj_Order_t Order, unsigned NumPage, long PrjCod) { /***** Put filter parameters (which projects to show) *****/ - if (My_All != Prj_FILTER_WHOSE_PROJECTS_DEFAULT) - Prj_PutHiddenParamMy_All (My_All); + if (Filter->My_All != Prj_FILTER_WHOSE_PROJECTS_DEFAULT) + Prj_PutHiddenParamMy_All (Filter->My_All); - if (PreNon != ((unsigned) Prj_FILTER_PREASSIGNED_DEFAULT | - (unsigned) Prj_FILTER_NONPREASSIG_DEFAULT)) - Prj_PutHiddenParamPreNon (PreNon); + if (Filter->PreNon != ((unsigned) Prj_FILTER_PREASSIGNED_DEFAULT | + (unsigned) Prj_FILTER_NONPREASSIG_DEFAULT)) + Prj_PutHiddenParamPreNon (Filter->PreNon); - if (HidVis != ((unsigned) Prj_FILTER_HIDDEN_DEFAULT | - (unsigned) Prj_FILTER_VISIBL_DEFAULT)) - Prj_PutHiddenParamHidVis (HidVis); + if (Filter->HidVis != ((unsigned) Prj_FILTER_HIDDEN_DEFAULT | + (unsigned) Prj_FILTER_VISIBL_DEFAULT)) + Prj_PutHiddenParamHidVis (Filter->HidVis); - if (DptCod != Prj_FILTER_DPT_DEFAULT) - Prj_PutHiddenParamDptCod (DptCod); + if (Filter->DptCod != Prj_FILTER_DPT_DEFAULT) + Prj_PutHiddenParamDptCod (Filter->DptCod); /***** Put order field *****/ if (Order != Prj_ORDER_DEFAULT) @@ -655,10 +657,7 @@ static void Prj_ShowProjectsHead (bool PrintView) if (!PrintView) { Act_FormStart (ActSeePrj); - Prj_PutParams (Gbl.Prjs.Filter.My_All, - Gbl.Prjs.Filter.PreNon, - Gbl.Prjs.Filter.HidVis, - Gbl.Prjs.Filter.DptCod, + Prj_PutParams (&Gbl.Prjs.Filter, Order, Gbl.Prjs.CurrentPage, -1L); diff --git a/swad_project.h b/swad_project.h index 8eaca8be3..c6830e5d1 100644 --- a/swad_project.h +++ b/swad_project.h @@ -71,6 +71,15 @@ typedef enum /* Project department */ #define Prj_FILTER_DPT_DEFAULT -1L // Any department +/* Struct with all filters */ +struct Prj_Filter + { + Prj_WhoseProjects_t My_All; // Show my / all projects + unsigned PreNon; // Show preassigned / non preassigned projects + unsigned HidVis; // Show hidden / visible projects + long DptCod; // Show projects of this department + }; + /***** Order listing of projects by... *****/ #define Prj_NUM_ORDERS 4 typedef enum @@ -133,10 +142,7 @@ struct Project void Prj_SeeProjects (void); void Prj_ShowTableAllProjects (void); -void Prj_PutParams (Prj_WhoseProjects_t My_All, - unsigned PreNon, - unsigned HidVis, - long DptCod, +void Prj_PutParams (struct Prj_Filter *Filter, Prj_Order_t Order, unsigned NumPage, long PrjCod);