Version 17.24.2

This commit is contained in:
Antonio Cañas Vargas 2017-10-10 12:52:02 +02:00
parent 6916ce48b3
commit 14275af952
5 changed files with 56 additions and 74 deletions

View File

@ -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)

View File

@ -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

View File

@ -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);

View File

@ -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,"<div class=\"PREF_CONTAINER\">");
@ -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,"<div>");
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);

View File

@ -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);