mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-05 00:05:23 +02:00
Version19.253
This commit is contained in:
parent
4838c07663
commit
4ab83769be
|
@ -2400,11 +2400,24 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
|
|||
.DAT_N_BOLD {color:black; font-size:13pt; font-weight:bold;}
|
||||
|
||||
/*********************** Line in top part of a table row *********************/
|
||||
.DAT_N_LINE_TOP
|
||||
.LINE_TOP
|
||||
{
|
||||
color:black;
|
||||
font-size:13pt;
|
||||
border-style:solid none none none;
|
||||
border-top-style:solid;
|
||||
border-width:1px;
|
||||
}
|
||||
.LINE_BOTTOM
|
||||
{
|
||||
border-bottom-style:solid;
|
||||
border-width:1px;
|
||||
}
|
||||
.LINE_LEFT
|
||||
{
|
||||
border-left-style:solid;
|
||||
border-width:1px;
|
||||
}
|
||||
.LINE_RIGHT
|
||||
{
|
||||
border-right-style:solid;
|
||||
border-width:1px;
|
||||
}
|
||||
|
||||
|
@ -4216,6 +4229,10 @@ a.PAG:hover, .PAG_CUR
|
|||
}
|
||||
|
||||
/************ Something that takes up space but which is invisible ***********/
|
||||
.LIGHT
|
||||
{
|
||||
opacity:0.2;
|
||||
}
|
||||
.HIDDEN
|
||||
{
|
||||
visibility:hidden;
|
|
@ -1827,6 +1827,13 @@ void HTM_Unsigned (unsigned Num)
|
|||
HTM_TxtF ("%u",Num);
|
||||
}
|
||||
|
||||
void HTM_Light0 (void)
|
||||
{
|
||||
HTM_SPAN_Begin ("class=\"LIGHT\"");
|
||||
HTM_Txt ("0");
|
||||
HTM_SPAN_End ();
|
||||
}
|
||||
|
||||
void HTM_Int (int Num)
|
||||
{
|
||||
HTM_TxtF ("%d",Num);
|
||||
|
|
|
@ -193,6 +193,7 @@ void HTM_Comma (void);
|
|||
void HTM_Hyphen (void);
|
||||
void HTM_Asterisk (void);
|
||||
void HTM_Unsigned (unsigned Num);
|
||||
void HTM_Light0 (void);
|
||||
void HTM_Int (int Num);
|
||||
void HTM_UnsignedLong (unsigned long Num);
|
||||
void HTM_Long (long Num);
|
||||
|
|
|
@ -3356,7 +3356,7 @@ static void Att_ListUsrsAttendanceTable (const struct Att_Events *Events,
|
|||
{
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("colspan=\"%u\" class=\"DAT_N_LINE_TOP RM\"",
|
||||
HTM_TD_Begin ("colspan=\"%u\" class=\"DAT_N LINE_TOP RM\"",
|
||||
Gbl.Usrs.Listing.WithPhotos ? 4 :
|
||||
3);
|
||||
HTM_TxtColon (Txt_Number_of_users);
|
||||
|
@ -3367,14 +3367,14 @@ static void Att_ListUsrsAttendanceTable (const struct Att_Events *Events,
|
|||
NumAttEvent++)
|
||||
if (Events->Lst[NumAttEvent].Selected)
|
||||
{
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Unsigned (Events->Lst[NumAttEvent].NumStdsFromList);
|
||||
HTM_TD_End ();
|
||||
|
||||
Total += Events->Lst[NumAttEvent].NumStdsFromList;
|
||||
}
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Unsigned (Total);
|
||||
HTM_TD_End ();
|
||||
|
||||
|
|
|
@ -556,8 +556,8 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
|
|||
En OpenSWAD:
|
||||
ps2pdf source.ps destination.pdf
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.252.1 (2020-06-19)"
|
||||
#define CSS_FILE "swad19.250.css"
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.253 (2020-06-22)"
|
||||
#define CSS_FILE "swad19.253.css"
|
||||
#define JS_FILE "swad19.246.1.js"
|
||||
/*
|
||||
TODO: Encarnación Hidalgo Tenorio: Antonio, ¿podría @swad_ugr mandar una notificación cuando el alumnado ha mandado su tarea?
|
||||
|
@ -569,6 +569,7 @@ TODO: Que al generar un examen s
|
|||
TODO: Refactorizar MchRes_CheckIfICanSeeMatchResult y MchRes_CheckIfICanViewScore uniéndolas en una función como ExaRes_CheckIfICanSeePrintResult
|
||||
Y dentro de las funciones TstPrn_ShowUsrPrints y TstPrn_ShowOnePrint crear y llamar a una función común similar a ExaRes_CheckIfICanSeePrintResult
|
||||
|
||||
Version 19.253: Jun 22, 2020 More details in listing of exams. (303643 lines)
|
||||
Version 19.252.1: Jun 19, 2020 Changes in listing of exams and matches results. (303245 lines)
|
||||
Version 19.252: Jun 19, 2020 Fixed bug in exam results, reported by Francisco Ligero Ligero. (303243 lines)
|
||||
Version 19.251: Jun 18, 2020 Changes in test, exam and match results. (303263 lines)
|
||||
|
|
|
@ -162,10 +162,15 @@ static void ExaPrn_ResetPrintExceptEvtCodAndUsrCod (struct ExaPrn_Print *Print)
|
|||
Print->PrnCod = -1L;
|
||||
Print->TimeUTC[Dat_START_TIME] =
|
||||
Print->TimeUTC[Dat_END_TIME ] = (time_t) 0;
|
||||
Print->NumQsts.All =
|
||||
Print->NumQsts.Valid =
|
||||
Print->NumQsts.NotBlank = 0;
|
||||
Print->Sent = false; // After creating an exam print, it's not sent
|
||||
Print->NumQsts.All =
|
||||
Print->NumQsts.NotBlank =
|
||||
Print->NumQsts.Valid.Correct =
|
||||
Print->NumQsts.Valid.Wrong.Negative =
|
||||
Print->NumQsts.Valid.Wrong.Zero =
|
||||
Print->NumQsts.Valid.Wrong.Positive =
|
||||
Print->NumQsts.Valid.Blank =
|
||||
Print->NumQsts.Valid.Total = 0;
|
||||
Print->Score.All =
|
||||
Print->Score.Valid = 0.0;
|
||||
}
|
||||
|
@ -1426,7 +1431,8 @@ static void ExaPrn_GetNumQstsNotBlank (struct ExaPrn_Print *Print)
|
|||
/***** Count number of questions not blank in exam print in database *****/
|
||||
Print->NumQsts.NotBlank = (unsigned)
|
||||
DB_QueryCOUNT ("can not get number of questions not blank",
|
||||
"SELECT COUNT(*) FROM exa_print_questions"
|
||||
"SELECT COUNT(*)"
|
||||
" FROM exa_print_questions"
|
||||
" WHERE PrnCod=%ld AND Answers<>''",
|
||||
Print->PrnCod);
|
||||
}
|
||||
|
|
|
@ -38,8 +38,19 @@
|
|||
struct ExaPrn_NumQuestions
|
||||
{
|
||||
unsigned All; // Total number of questions
|
||||
unsigned Valid; // Number of valid questions (not invalidated by teachers)
|
||||
unsigned NotBlank; // Number of answered questions (not blank)
|
||||
unsigned NotBlank; // Answered questions (valid or not)
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned Negative;
|
||||
unsigned Zero;
|
||||
unsigned Positive;
|
||||
} Wrong;
|
||||
unsigned Correct;
|
||||
unsigned Blank;
|
||||
unsigned Total;
|
||||
} Valid; // Number of valid questions
|
||||
};
|
||||
|
||||
struct ExaPrn_Score
|
||||
|
|
|
@ -112,7 +112,6 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
|
|||
const struct ExaPrn_NumQuestions *NumTotalQsts,
|
||||
const struct ExaPrn_Score *TotalScore,
|
||||
double TotalGrade);
|
||||
static void ExaRes_ShowNumQsts (const struct ExaPrn_NumQuestions *NumQsts);
|
||||
|
||||
static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
||||
const struct ExaSes_Session *Session,
|
||||
|
@ -583,7 +582,7 @@ static void ExaRes_ShowResultsBegin (struct Exa_Exams *Exams,
|
|||
|
||||
/***** Begin session results table *****/
|
||||
HTM_SECTION_Begin (ExaRes_RESULTS_TABLE_ID);
|
||||
HTM_TABLE_BeginWidePadding (2);
|
||||
HTM_TABLE_BeginWidePadding (5);
|
||||
}
|
||||
|
||||
static void ExaRes_ShowResultsEnd (void)
|
||||
|
@ -703,24 +702,57 @@ static void ExaRes_ShowHeaderResults (Usr_MeOrOther_t MeOrOther)
|
|||
extern const char *Txt_Session;
|
||||
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_Non_blank_BR_questions;
|
||||
extern const char *Txt_Valid_answers;
|
||||
extern const char *Txt_Score;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1;
|
||||
extern const char *Txt_Grade;
|
||||
extern const char *Txt_total;
|
||||
extern const char *Txt_QUESTIONS_valid;
|
||||
extern const char *Txt_QUESTIONS_invalid;
|
||||
extern const char *Txt_correct_ANSWERS;
|
||||
extern const char *Txt_wrong_ANSWERS;
|
||||
extern const char *Txt_blank_ANSWERS;
|
||||
extern const char *Txt_average;
|
||||
|
||||
/***** First row *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TH (1,2,"CT",Txt_User[MeOrOther == Usr_ME ? Gbl.Usrs.Me.UsrDat.Sex :
|
||||
HTM_TH (3,2,"CT",Txt_User[MeOrOther == Usr_ME ? Gbl.Usrs.Me.UsrDat.Sex :
|
||||
Usr_SEX_UNKNOWN]);
|
||||
HTM_TH (1,1,"LT",Txt_START_END_TIME[Dat_START_TIME]);
|
||||
HTM_TH (1,1,"LT",Txt_START_END_TIME[Dat_END_TIME ]);
|
||||
HTM_TH (1,1,"LT",Txt_Session);
|
||||
HTM_TH (1,1,"RT",Txt_Questions);
|
||||
HTM_TH (1,1,"RT",Txt_Non_blank_BR_questions);
|
||||
HTM_TH (1,1,"RT",Txt_Score);
|
||||
HTM_TH (1,1,"RT",Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1);
|
||||
HTM_TH (1,1,"RT",Txt_Grade);
|
||||
HTM_TH_Empty (1);
|
||||
HTM_TH (3,1,"LT",Txt_START_END_TIME[Dat_START_TIME]);
|
||||
HTM_TH (3,1,"LT",Txt_START_END_TIME[Dat_END_TIME ]);
|
||||
HTM_TH (3,1,"LT",Txt_Session);
|
||||
HTM_TH (1,3,"CT LINE_LEFT",Txt_Questions);
|
||||
HTM_TH (1,5,"CT LINE_LEFT",Txt_Valid_answers);
|
||||
HTM_TH (1,2,"CT LINE_LEFT",Txt_Score);
|
||||
HTM_TH (3,1,"RT LINE_LEFT",Txt_Grade);
|
||||
HTM_TH (3,1,"LINE_LEFT",NULL);
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** Second row *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TH (2,1,"RT LINE_LEFT",Txt_total);
|
||||
HTM_TH (2,1,"RT",Txt_QUESTIONS_valid);
|
||||
HTM_TH (2,1,"RT",Txt_QUESTIONS_invalid);
|
||||
HTM_TH (1,1,"RT LINE_LEFT",Txt_correct_ANSWERS);
|
||||
HTM_TH (1,3,"CT",Txt_wrong_ANSWERS);
|
||||
HTM_TH (1,1,"RT",Txt_blank_ANSWERS);
|
||||
HTM_TH (1,1,"RT LINE_LEFT",Txt_total);
|
||||
HTM_TH (1,1,"RT",Txt_average);
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** Third row *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TH (1,1,"RT LINE_LEFT","<em>p<sub>i</sub></em>=1");
|
||||
HTM_TH (1,1,"RT","-1≤<em>p<sub>i</sub></em><0");
|
||||
HTM_TH (1,1,"RT","<em>p<sub>i</sub></em>=0");
|
||||
HTM_TH (1,1,"RT","0<<em>p<sub>i</sub></em><1");
|
||||
HTM_TH (1,1,"RT","<em>p<sub>i</sub></em>=0");
|
||||
HTM_TH (1,1,"RT LINE_LEFT","<em>Σp<sub>i</sub></em>");
|
||||
HTM_TH (1,1,"RT","-1≤<em style=\"text-decoration:overline;\">p</em>≤1");
|
||||
|
||||
HTM_TR_End ();
|
||||
}
|
||||
|
@ -783,6 +815,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
struct ExaSes_Session Session;
|
||||
struct Exa_Exam Exam;
|
||||
Dat_StartEndTime_t StartEndTime;
|
||||
unsigned NumQstsInvalid;
|
||||
struct ExaPrn_NumQuestions NumTotalQsts;
|
||||
struct ExaPrn_Score TotalScore;
|
||||
double Grade;
|
||||
|
@ -796,8 +829,13 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
|
||||
/***** Reset total number of questions and total score *****/
|
||||
NumTotalQsts.All =
|
||||
NumTotalQsts.Valid =
|
||||
NumTotalQsts.NotBlank = 0;
|
||||
NumTotalQsts.NotBlank =
|
||||
NumTotalQsts.Valid.Correct =
|
||||
NumTotalQsts.Valid.Wrong.Negative =
|
||||
NumTotalQsts.Valid.Wrong.Zero =
|
||||
NumTotalQsts.Valid.Wrong.Positive =
|
||||
NumTotalQsts.Valid.Blank =
|
||||
NumTotalQsts.Valid.Total = 0;
|
||||
TotalScore.All =
|
||||
TotalScore.Valid = 0.0;
|
||||
|
||||
|
@ -883,8 +921,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
"SELECT exa_prints.PrnCod," // row[0]
|
||||
"exa_prints.SesCod," // row[1]
|
||||
"UNIX_TIMESTAMP(exa_prints.StartTime)," // row[2]
|
||||
"UNIX_TIMESTAMP(exa_prints.EndTime)," // row[3]
|
||||
"exa_prints.NumQstsNotBlank" // row[4]
|
||||
"UNIX_TIMESTAMP(exa_prints.EndTime)" // row[3]
|
||||
" FROM exa_prints,exa_sessions,exa_exams"
|
||||
" WHERE exa_prints.UsrCod=%ld"
|
||||
"%s" // Session subquery
|
||||
|
@ -969,38 +1006,120 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
|
||||
/* Compute score taking into account only valid questions */
|
||||
ExaRes_ComputeValidPrintScore (&Print);
|
||||
NumTotalQsts.Valid += Print.NumQsts.Valid;
|
||||
NumTotalQsts.Valid.Correct += Print.NumQsts.Valid.Correct;
|
||||
NumTotalQsts.Valid.Wrong.Negative += Print.NumQsts.Valid.Wrong.Negative;
|
||||
NumTotalQsts.Valid.Wrong.Zero += Print.NumQsts.Valid.Wrong.Zero;
|
||||
NumTotalQsts.Valid.Wrong.Positive += Print.NumQsts.Valid.Wrong.Positive;
|
||||
NumTotalQsts.Valid.Blank += Print.NumQsts.Valid.Blank;
|
||||
NumTotalQsts.Valid.Total += Print.NumQsts.Valid.Total;
|
||||
TotalScore.Valid += Print.Score.Valid;
|
||||
|
||||
/* Get number of questions not blank (row[4]) */
|
||||
if (sscanf (row[4],"%u",&Print.NumQsts.NotBlank) != 1)
|
||||
Print.NumQsts.NotBlank = 0;
|
||||
NumTotalQsts.NotBlank += Print.NumQsts.NotBlank;
|
||||
}
|
||||
|
||||
/* Write number of questions */
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
/* Write total number of questions */
|
||||
HTM_TD_Begin ("class=\"DAT LINE_LEFT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanView.Score)
|
||||
ExaRes_ShowNumQsts (&Print.NumQsts);
|
||||
HTM_Unsigned (Print.NumQsts.All);
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Write number of questions not blank */
|
||||
/* Valid questions */
|
||||
HTM_TD_Begin ("class=\"DAT_GREEN RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanView.Score)
|
||||
{
|
||||
if (Print.NumQsts.Valid.Total)
|
||||
HTM_Unsigned (Print.NumQsts.Valid.Total);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Invalid questions */
|
||||
HTM_TD_Begin ("class=\"DAT_RED RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanView.Score)
|
||||
{
|
||||
NumQstsInvalid = Print.NumQsts.All - Print.NumQsts.Valid.Total;
|
||||
if (NumQstsInvalid)
|
||||
HTM_Unsigned (NumQstsInvalid);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Write number of correct questions */
|
||||
HTM_TD_Begin ("class=\"DAT LINE_LEFT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanView.Score)
|
||||
{
|
||||
if (Print.NumQsts.Valid.Correct)
|
||||
HTM_Unsigned (Print.NumQsts.Valid.Correct);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Write number of wrong questions */
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanView.Score)
|
||||
HTM_Unsigned (Print.NumQsts.NotBlank);
|
||||
{
|
||||
if (Print.NumQsts.Valid.Wrong.Negative)
|
||||
HTM_Unsigned (Print.NumQsts.Valid.Wrong.Negative);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanView.Score)
|
||||
{
|
||||
if (Print.NumQsts.Valid.Wrong.Zero)
|
||||
HTM_Unsigned (Print.NumQsts.Valid.Wrong.Zero);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanView.Score)
|
||||
{
|
||||
if (Print.NumQsts.Valid.Wrong.Positive)
|
||||
HTM_Unsigned (Print.NumQsts.Valid.Wrong.Positive);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Write number of blank questions */
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanView.Score)
|
||||
{
|
||||
if (Print.NumQsts.Valid.Blank)
|
||||
HTM_Unsigned (Print.NumQsts.Valid.Blank);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Write score valid (taking into account only valid questions) */
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT LINE_LEFT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanView.Score)
|
||||
{
|
||||
HTM_Double2Decimals (Print.Score.Valid);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (Print.NumQsts.Valid);
|
||||
HTM_Unsigned (Print.NumQsts.Valid.Total);
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
|
@ -1009,18 +1128,18 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
/* Write average score per question (taking into account only valid questions) */
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanView.Score)
|
||||
HTM_Double2Decimals (Print.NumQsts.Valid ? Print.Score.Valid /
|
||||
(double) Print.NumQsts.Valid :
|
||||
HTM_Double2Decimals (Print.NumQsts.Valid.Total ? Print.Score.Valid /
|
||||
(double) Print.NumQsts.Valid.Total :
|
||||
0.0);
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Write grade over maximum grade (taking into account only valid questions) */
|
||||
HTM_TD_Begin ("class=\"DAT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT LINE_LEFT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanView.Score)
|
||||
{
|
||||
Grade = TstPrn_ComputeGrade (Print.NumQsts.Valid,Print.Score.Valid,Exam.MaxGrade);
|
||||
Grade = TstPrn_ComputeGrade (Print.NumQsts.Valid.Total,Print.Score.Valid,Exam.MaxGrade);
|
||||
TstPrn_ShowGrade (Grade,Exam.MaxGrade);
|
||||
TotalGrade += Grade;
|
||||
}
|
||||
|
@ -1029,7 +1148,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
|
|||
HTM_TD_End ();
|
||||
|
||||
/* Link to show this result */
|
||||
HTM_TD_Begin ("class=\"RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"LINE_LEFT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanView.Result)
|
||||
{
|
||||
Exams->ExaCod = Session.ExaCod;
|
||||
|
@ -1081,49 +1200,99 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
|
|||
double TotalGrade)
|
||||
{
|
||||
extern const char *Txt_Sessions;
|
||||
unsigned NumTotalQstsInvalid;
|
||||
|
||||
/***** Start row *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
/***** Row title *****/
|
||||
HTM_TD_Begin ("colspan=\"3\" class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("colspan=\"3\" class=\"DAT_N LINE_TOP LINE_BOTTOM RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TxtColonNBSP (Txt_Sessions);
|
||||
HTM_Unsigned (NumResults);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total number of questions *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumResults)
|
||||
ExaRes_ShowNumQsts (NumTotalQsts);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LINE_BOTTOM LINE_LEFT RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_Unsigned (NumTotalQsts->All);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total number of questions not blank *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumResults)
|
||||
HTM_Unsigned (NumTotalQsts->NotBlank);
|
||||
/***** Write total number of valid questions *****/
|
||||
HTM_TD_Begin ("class=\"DAT_GREEN LINE_TOP LINE_BOTTOM RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumTotalQsts->Valid.Total)
|
||||
HTM_Unsigned (NumTotalQsts->Valid.Total);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total number of invalid questions *****/
|
||||
HTM_TD_Begin ("class=\"DAT_RED LINE_TOP LINE_BOTTOM RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
NumTotalQstsInvalid = NumTotalQsts->All - NumTotalQsts->Valid.Total;
|
||||
if (NumTotalQstsInvalid)
|
||||
HTM_Unsigned (NumTotalQstsInvalid);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write number of correct questions *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LINE_BOTTOM LINE_LEFT RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumTotalQsts->Valid.Correct)
|
||||
HTM_Unsigned (NumTotalQsts->Valid.Correct);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write number of wrong questions *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LINE_BOTTOM RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumTotalQsts->Valid.Wrong.Negative)
|
||||
HTM_Unsigned (NumTotalQsts->Valid.Wrong.Negative);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LINE_BOTTOM RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumTotalQsts->Valid.Wrong.Zero)
|
||||
HTM_Unsigned (NumTotalQsts->Valid.Wrong.Zero);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LINE_BOTTOM RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumTotalQsts->Valid.Wrong.Positive)
|
||||
HTM_Unsigned (NumTotalQsts->Valid.Wrong.Positive);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write number of blank questions *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LINE_BOTTOM RT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumTotalQsts->Valid.Blank)
|
||||
HTM_Unsigned (NumTotalQsts->Valid.Blank);
|
||||
else
|
||||
HTM_Light0 ();
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total valid score *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LINE_BOTTOM LINE_LEFT RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_Double2Decimals (TotalScore->Valid);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (NumTotalQsts->Valid);
|
||||
HTM_Unsigned (NumTotalQsts->Valid.Total);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write average valid score per valid question *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_Double2Decimals (NumTotalQsts->Valid ? TotalScore->Valid /
|
||||
(double) NumTotalQsts->Valid :
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LINE_BOTTOM RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_Double2Decimals (NumTotalQsts->Valid.Total ? TotalScore->Valid /
|
||||
(double) NumTotalQsts->Valid.Total :
|
||||
0.0);
|
||||
HTM_TD_End ();
|
||||
|
||||
|
||||
/***** Write total grade *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LINE_BOTTOM LINE_LEFT RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_Double2Decimals (TotalGrade);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Last cell *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LINE_BOTTOM LINE_LEFT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** End row *****/
|
||||
|
@ -1134,39 +1303,6 @@ static void ExaRes_ShowResultsSummaryRow (unsigned NumResults,
|
|||
/*************************** Show one exam result ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void ExaRes_ShowNumQsts (const struct ExaPrn_NumQuestions *NumQsts)
|
||||
{
|
||||
extern const char *Txt_QUESTIONS_valid;
|
||||
extern const char *Txt_QUESTIONS_invalid;
|
||||
|
||||
HTM_Unsigned (NumQsts->All);
|
||||
|
||||
if (NumQsts->All !=
|
||||
NumQsts->Valid)
|
||||
{
|
||||
HTM_NBSP ();
|
||||
HTM_Txt ("(");
|
||||
|
||||
/* Valid questions */
|
||||
HTM_SPAN_Begin ("class=\"DAT_GREEN\" title=\"%s\"",Txt_QUESTIONS_valid);
|
||||
HTM_Unsigned (NumQsts->Valid);
|
||||
HTM_SPAN_End ();
|
||||
|
||||
HTM_Txt ("+");
|
||||
|
||||
/* Invalid questions */
|
||||
HTM_SPAN_Begin ("class=\"DAT_RED\" title=\"%s\"",Txt_QUESTIONS_invalid);
|
||||
HTM_Unsigned (NumQsts->All - NumQsts->Valid);
|
||||
HTM_SPAN_End ();
|
||||
|
||||
HTM_Txt (")");
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************************** Show one exam result ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void ExaRes_ShowOneExaResult (void)
|
||||
{
|
||||
struct Exa_Exams Exams;
|
||||
|
@ -1206,6 +1342,7 @@ void ExaRes_ShowOneExaResult (void)
|
|||
Print.UsrCod = UsrDat->UsrCod;
|
||||
ExaPrn_GetDataOfPrintByCodAndUsrCod (&Print);
|
||||
|
||||
|
||||
/***** Set log action and print code *****/
|
||||
if (Gbl.Action.Act == ActEndExaPrn)
|
||||
{
|
||||
|
@ -1241,7 +1378,10 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_QUESTIONS_valid;
|
||||
extern const char *Txt_QUESTIONS_invalid;
|
||||
extern const char *Txt_QUESTIONS_non_blank;
|
||||
extern const char *Txt_Valid_answers;
|
||||
extern const char *Txt_correct_ANSWERS;
|
||||
extern const char *Txt_wrong_ANSWERS;
|
||||
extern const char *Txt_blank_ANSWERS;
|
||||
extern const char *Txt_Score;
|
||||
extern const char *Txt_valid_score;
|
||||
extern const char *Txt_Grade;
|
||||
|
@ -1268,6 +1408,7 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
Gbl.Hierarchy.Deg.DegCod,
|
||||
Gbl.Hierarchy.Crs.CrsCod);
|
||||
|
||||
|
||||
/***** Begin table *****/
|
||||
HTM_TABLE_BeginWideMarginPadding (10);
|
||||
|
||||
|
@ -1285,7 +1426,7 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
HTM_TxtColon (Txt_ROLES_SINGUL_Abc[UsrDat->Roles.InCurrentCrs.Role][UsrDat->Sex]);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
ID_WriteUsrIDs (UsrDat,NULL);
|
||||
HTM_TxtF (" %s",UsrDat->Surname1);
|
||||
if (UsrDat->Surname2[0])
|
||||
|
@ -1314,7 +1455,7 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
|
||||
if (asprintf (&Id,"match_%u",(unsigned) StartEndTime) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
HTM_TD_Begin ("id=\"%s\" class=\"DAT LT\"",Id);
|
||||
HTM_TD_Begin ("id=\"%s\" class=\"DAT LB\"",Id);
|
||||
Dat_WriteLocalDateHMSFromUTC (Id,Print->TimeUTC[StartEndTime],
|
||||
Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
|
||||
true,true,true,0x7);
|
||||
|
@ -1331,31 +1472,30 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
HTM_TxtColon (Txt_Questions);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
if (ICanView.Result)
|
||||
{
|
||||
HTM_TxtF ("%u",Print->NumQsts.All);
|
||||
if (Print->NumQsts.All != Print->NumQsts.Valid)
|
||||
if (Print->NumQsts.All != Print->NumQsts.Valid.Total)
|
||||
{
|
||||
HTM_Txt (" (");
|
||||
|
||||
/* Valid questions */
|
||||
HTM_SPAN_Begin ("class=\"DAT_GREEN\"");
|
||||
HTM_TxtColonNBSP (Txt_QUESTIONS_valid);
|
||||
HTM_Unsigned (Print->NumQsts.Valid);
|
||||
HTM_Unsigned (Print->NumQsts.Valid.Total);
|
||||
HTM_SPAN_End ();
|
||||
|
||||
HTM_TxtF (", ");
|
||||
HTM_TxtF ("; ");
|
||||
|
||||
/* Invalid questions */
|
||||
HTM_SPAN_Begin ("class=\"DAT_RED\"");
|
||||
HTM_TxtColonNBSP (Txt_QUESTIONS_invalid);
|
||||
HTM_Unsigned (Print->NumQsts.All - Print->NumQsts.Valid);
|
||||
HTM_Unsigned (Print->NumQsts.All - Print->NumQsts.Valid.Total);
|
||||
HTM_SPAN_End ();
|
||||
|
||||
HTM_Txt (")");
|
||||
}
|
||||
HTM_TxtF ("; %s: %u",Txt_QUESTIONS_non_blank,Print->NumQsts.NotBlank);
|
||||
}
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
|
@ -1363,6 +1503,31 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** Number of answers *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtColon (Txt_Valid_answers);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
if (ICanView.Result)
|
||||
HTM_TxtF ("%s(<em>p<sub>i</sub></em>=1): %u; "
|
||||
"%s(-1≤<em>p<sub>i</sub></em><0): %u; "
|
||||
"%s(<em>p<sub>i</sub></em>=0): %u; "
|
||||
"%s(0<<em>p<sub>i</sub></em><1): %u; "
|
||||
"%s(<em>p<sub>i</sub></em>=0): %u",
|
||||
Txt_correct_ANSWERS,Print->NumQsts.Valid.Correct,
|
||||
Txt_wrong_ANSWERS ,Print->NumQsts.Valid.Wrong.Negative,
|
||||
Txt_wrong_ANSWERS ,Print->NumQsts.Valid.Wrong.Zero,
|
||||
Txt_wrong_ANSWERS ,Print->NumQsts.Valid.Wrong.Positive,
|
||||
Txt_blank_ANSWERS ,Print->NumQsts.Valid.Blank);
|
||||
else
|
||||
Ico_PutIconNotVisible ();
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** Score *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
|
@ -1370,27 +1535,27 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
HTM_TxtColon (Txt_Score);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
if (ICanView.Score)
|
||||
{
|
||||
/* Score counting all questions */
|
||||
if (Print->NumQsts.All == Print->NumQsts.Valid)
|
||||
if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
|
||||
HTM_STRONG_Begin ();
|
||||
HTM_Double2Decimals (Print->Score.All);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (Print->NumQsts.All);
|
||||
if (Print->NumQsts.All == Print->NumQsts.Valid)
|
||||
if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
|
||||
HTM_STRONG_End ();
|
||||
|
||||
/* Scoure counting only valid questions */
|
||||
if (Print->NumQsts.All != Print->NumQsts.Valid)
|
||||
if (Print->NumQsts.All != Print->NumQsts.Valid.Total)
|
||||
{
|
||||
HTM_Txt ("; ");
|
||||
HTM_TxtColonNBSP (Txt_valid_score);
|
||||
HTM_STRONG_Begin ();
|
||||
HTM_Double2Decimals (Print->Score.Valid);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (Print->NumQsts.Valid);
|
||||
HTM_Unsigned (Print->NumQsts.Valid.Total);
|
||||
HTM_STRONG_End ();
|
||||
}
|
||||
}
|
||||
|
@ -1407,23 +1572,23 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
|
|||
HTM_TxtColon (Txt_Grade);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
if (ICanView.Score)
|
||||
{
|
||||
/* Grade counting all questions */
|
||||
if (Print->NumQsts.All == Print->NumQsts.Valid)
|
||||
if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
|
||||
HTM_STRONG_Begin ();
|
||||
TstPrn_ComputeAndShowGrade (Print->NumQsts.All,Print->Score.All,Exam->MaxGrade);
|
||||
if (Print->NumQsts.All == Print->NumQsts.Valid)
|
||||
if (Print->NumQsts.All == Print->NumQsts.Valid.Total)
|
||||
HTM_STRONG_End ();
|
||||
|
||||
/* Grade counting only valid questions */
|
||||
if (Print->NumQsts.All != Print->NumQsts.Valid)
|
||||
if (Print->NumQsts.All != Print->NumQsts.Valid.Total)
|
||||
{
|
||||
HTM_Txt ("; ");
|
||||
HTM_TxtColonNBSP (Txt_valid_grade);
|
||||
HTM_STRONG_Begin ();
|
||||
TstPrn_ComputeAndShowGrade (Print->NumQsts.Valid,Print->Score.Valid,Exam->MaxGrade);
|
||||
TstPrn_ComputeAndShowGrade (Print->NumQsts.Valid.Total,Print->Score.Valid,Exam->MaxGrade);
|
||||
HTM_STRONG_End ();
|
||||
}
|
||||
}
|
||||
|
@ -1503,7 +1668,12 @@ static void ExaRes_ComputeValidPrintScore (struct ExaPrn_Print *Print)
|
|||
bool QuestionExists;
|
||||
|
||||
/***** Initialize score valid *****/
|
||||
Print->NumQsts.Valid = 0;
|
||||
Print->NumQsts.Valid.Correct =
|
||||
Print->NumQsts.Valid.Wrong.Negative =
|
||||
Print->NumQsts.Valid.Wrong.Zero =
|
||||
Print->NumQsts.Valid.Wrong.Positive =
|
||||
Print->NumQsts.Valid.Blank =
|
||||
Print->NumQsts.Valid.Total = 0;
|
||||
Print->Score.Valid = 0.0;
|
||||
|
||||
for (NumQst = 0;
|
||||
|
@ -1540,7 +1710,25 @@ static void ExaRes_ComputeValidPrintScore (struct ExaPrn_Print *Print)
|
|||
if (Question.Validity == Tst_VALID_QUESTION)
|
||||
{
|
||||
ExaPrn_ComputeAnswerScore (&Print->PrintedQuestions[NumQst],&Question);
|
||||
Print->NumQsts.Valid++;
|
||||
switch (Print->PrintedQuestions[NumQst].AnswerIsCorrect)
|
||||
{
|
||||
case TstPrn_ANSWER_IS_CORRECT:
|
||||
Print->NumQsts.Valid.Correct++;
|
||||
break;
|
||||
case TstPrn_ANSWER_IS_WRONG_NEGATIVE:
|
||||
Print->NumQsts.Valid.Wrong.Negative++;
|
||||
break;
|
||||
case TstPrn_ANSWER_IS_WRONG_ZERO:
|
||||
Print->NumQsts.Valid.Wrong.Zero++;
|
||||
break;
|
||||
case TstPrn_ANSWER_IS_WRONG_POSITIVE:
|
||||
Print->NumQsts.Valid.Wrong.Positive++;
|
||||
break;
|
||||
case TstPrn_ANSWER_IS_BLANK:
|
||||
Print->NumQsts.Valid.Blank++;
|
||||
break;
|
||||
}
|
||||
Print->NumQsts.Valid.Total++;
|
||||
Print->Score.Valid += Print->PrintedQuestions[NumQst].Score;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -431,7 +431,7 @@ static void Fig_GetAndShowNumUsrsInCrss (Rol_Role_t Role)
|
|||
(Gbl.Scope.Current == Hie_DEG ? Gbl.Hierarchy.Deg.DegCod :
|
||||
(Gbl.Scope.Current == Hie_CRS ? Gbl.Hierarchy.Crs.CrsCod :
|
||||
-1L)))));
|
||||
char *Class = (Role == Rol_UNK) ? "DAT_N_LINE_TOP RB" :
|
||||
char *Class = (Role == Rol_UNK) ? "DAT_N LINE_TOP RB" :
|
||||
"DAT RB";
|
||||
unsigned Roles = (Role == Rol_UNK) ? ((1 << Rol_STD) |
|
||||
(1 << Rol_NET) |
|
||||
|
@ -959,7 +959,7 @@ static void Fig_GetAndShowHierarchyTotal (void)
|
|||
|
||||
/***** Write total number of elements *****/
|
||||
Fig_ShowHierarchyRow ("",Txt_Total,
|
||||
"DAT_N_LINE_TOP",
|
||||
"DAT_N LINE_TOP",
|
||||
(int) NumCtysTotal,
|
||||
(int) NumInssTotal,
|
||||
(int) NumCtrsTotal,
|
||||
|
@ -2577,7 +2577,7 @@ static void Fig_WriteRowStatsFileBrowsers1 (const char *NameOfFileZones,
|
|||
char StrNumGrps[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
||||
char StrNumUsrs[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
||||
char FileSizeStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1];
|
||||
char *Class = (FileZone == Brw_UNKNOWN) ? "DAT_N_LINE_TOP" :
|
||||
char *Class = (FileZone == Brw_UNKNOWN) ? "DAT_N LINE_TOP" :
|
||||
"DAT";
|
||||
|
||||
Fil_WriteFileSizeFull ((double) SizeOfFileZones->Size,FileSizeStr);
|
||||
|
@ -2650,7 +2650,7 @@ static void Fig_WriteRowStatsFileBrowsers2 (const char *NameOfFileZones,
|
|||
char StrNumFoldersPerCrs[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
||||
char StrNumFilesPerCrs[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
||||
char FileSizePerCrsStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1];
|
||||
char *Class = (FileZone == Brw_UNKNOWN) ? "DAT_N_LINE_TOP" :
|
||||
char *Class = (FileZone == Brw_UNKNOWN) ? "DAT_N LINE_TOP" :
|
||||
"DAT";
|
||||
|
||||
if (SizeOfFileZones->NumCrss == -1) // Not applicable
|
||||
|
@ -2708,7 +2708,7 @@ static void Fig_WriteRowStatsFileBrowsers3 (const char *NameOfFileZones,
|
|||
char StrNumFoldersPerUsr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
||||
char StrNumFilesPerUsr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
||||
char FileSizePerUsrStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1];
|
||||
char *Class = (FileZone == Brw_UNKNOWN) ? "DAT_N_LINE_TOP" :
|
||||
char *Class = (FileZone == Brw_UNKNOWN) ? "DAT_N LINE_TOP" :
|
||||
"DAT";
|
||||
|
||||
if (SizeOfFileZones->NumUsrs == -1) // Not applicable
|
||||
|
@ -3138,7 +3138,7 @@ static void Fig_GetAndShowTestsStats (void)
|
|||
extern const char *Txt_Number_of_BR_times_that_BR_questions_BR_have_been_BR_responded;
|
||||
extern const char *Txt_Average_BR_number_of_BR_times_that_BR_questions_BR_have_been_BR_responded_BR_per_course;
|
||||
extern const char *Txt_Average_BR_number_of_BR_times_that_BR_a_question_BR_has_been_BR_responded;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question;
|
||||
extern const char *Txt_TST_STR_ANSWER_TYPES[Tst_NUM_ANS_TYPES];
|
||||
extern const char *Txt_Total;
|
||||
Tst_AnswerType_t AnsType;
|
||||
|
@ -3160,7 +3160,7 @@ static void Fig_GetAndShowTestsStats (void)
|
|||
HTM_TH (1,1,"RM",Txt_Number_of_BR_times_that_BR_questions_BR_have_been_BR_responded);
|
||||
HTM_TH (1,1,"RM",Txt_Average_BR_number_of_BR_times_that_BR_questions_BR_have_been_BR_responded_BR_per_course);
|
||||
HTM_TH (1,1,"RM",Txt_Average_BR_number_of_BR_times_that_BR_a_question_BR_has_been_BR_responded);
|
||||
HTM_TH (1,1,"RM",Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1);
|
||||
HTM_TH (1,1,"RM",Txt_Average_BR_score_BR_per_question);
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
|
@ -3223,15 +3223,15 @@ static void Fig_GetAndShowTestsStats (void)
|
|||
/***** Write number of assignments *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP LM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LM\"");
|
||||
HTM_Txt (Txt_Total);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Unsigned (Stats.NumCoursesWithQuestions);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_TxtF ("%u (%.1f%%)",
|
||||
Stats.NumCoursesWithPluggableQuestions,
|
||||
Stats.NumCoursesWithQuestions ? (double) Stats.NumCoursesWithPluggableQuestions * 100.0 /
|
||||
|
@ -3239,27 +3239,27 @@ static void Fig_GetAndShowTestsStats (void)
|
|||
0.0);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Unsigned (Stats.NumQsts);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Double2Decimals (Stats.AvgQstsPerCourse);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_UnsignedLong (Stats.NumHits);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Double2Decimals (Stats.AvgHitsPerCourse);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Double2Decimals (Stats.AvgHitsPerQuestion);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Double2Decimals (Stats.AvgScorePerQuestion);
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -3661,25 +3661,25 @@ static void Fig_GetAndShowTimelineActivityStats (void)
|
|||
/* Write totals */
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP LM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LM\"");
|
||||
HTM_Txt (Txt_Total);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_UnsignedLong (NumNotes);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Unsigned (NumUsrs);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Percentage (NumUsrsTotal ? (double) NumUsrs * 100.0 /
|
||||
(double) NumUsrsTotal :
|
||||
0.0);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Double2Decimals (NumUsrs ? (double) NumNotes / (double) NumUsrs :
|
||||
0.0);
|
||||
HTM_TD_End ();
|
||||
|
@ -4288,38 +4288,38 @@ static void Fig_WriteForumTotalStats (struct Fig_FiguresForum *FiguresForum)
|
|||
/***** Write forum name and stats *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP\" style=\"width:20px;\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP\" style=\"width:20px;\"");
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP LM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LM\"");
|
||||
HTM_Txt (Txt_Total);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Unsigned (FiguresForum->NumForums);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Unsigned (FiguresForum->NumThreads);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Unsigned (FiguresForum->NumPosts);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Unsigned (FiguresForum->NumUsrsToBeNotifiedByEMail);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Double2Decimals (NumThrsPerForum);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Double2Decimals (NumPostsPerThread);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Double2Decimals (NumPostsPerForum);
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -4530,25 +4530,25 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
|
|||
/***** Write total number of users who want to be notified by email on some event *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP LM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP LM\"");
|
||||
HTM_Txt (Txt_Total);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Unsigned (NumUsrsTotalWhoWantToBeNotifiedByEMailAboutSomeEvent);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Percentage (NumUsrsTotal ? (double) NumUsrsTotalWhoWantToBeNotifiedByEMailAboutSomeEvent * 100.0 /
|
||||
(double) NumUsrsTotal :
|
||||
0.0);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Unsigned (NumEventsTotal);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Unsigned (NumMailsTotal);
|
||||
HTM_TD_End ();
|
||||
|
||||
|
|
|
@ -707,15 +707,15 @@ static void Ind_ShowNumCoursesWithIndicators (const struct Ind_Indicators *Indic
|
|||
if (PutForm)
|
||||
HTM_TD_Empty (1);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Txt (Txt_Total);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_Unsigned (NumCrss);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM\"");
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM\"");
|
||||
HTM_TxtF ("(%.1f%%)",100.0);
|
||||
HTM_TD_End ();
|
||||
|
||||
|
|
|
@ -614,7 +614,7 @@ static void MchRes_ShowResultsBegin (struct Gam_Games *Games,
|
|||
|
||||
/***** Begin match results table *****/
|
||||
HTM_SECTION_Begin (MchRes_RESULTS_TABLE_ID);
|
||||
HTM_TABLE_BeginWidePadding (2);
|
||||
HTM_TABLE_BeginWidePadding (5);
|
||||
}
|
||||
|
||||
static void MchRes_ShowResultsEnd (void)
|
||||
|
@ -735,7 +735,7 @@ static void MchRes_ShowHeaderMchResults (Usr_MeOrOther_t MeOrOther)
|
|||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_Non_blank_BR_questions;
|
||||
extern const char *Txt_Score;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question;
|
||||
extern const char *Txt_Grade;
|
||||
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -748,7 +748,7 @@ static void MchRes_ShowHeaderMchResults (Usr_MeOrOther_t MeOrOther)
|
|||
HTM_TH (1,1,"RT",Txt_Questions);
|
||||
HTM_TH (1,1,"RT",Txt_Non_blank_BR_questions);
|
||||
HTM_TH (1,1,"RT",Txt_Score);
|
||||
HTM_TH (1,1,"RT",Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1);
|
||||
HTM_TH (1,1,"RT",Txt_Average_BR_score_BR_per_question);
|
||||
HTM_TH (1,1,"RT",Txt_Grade);
|
||||
HTM_TH_Empty (1);
|
||||
|
||||
|
@ -1082,44 +1082,44 @@ static void MchRes_ShowMchResultsSummaryRow (unsigned NumResults,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
/***** Row title *****/
|
||||
HTM_TD_Begin ("colspan=\"3\" class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("colspan=\"3\" class=\"DAT_N LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TxtColonNBSP (Txt_Matches);
|
||||
HTM_Unsigned (NumResults);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total number of questions *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumResults)
|
||||
HTM_Unsigned (NumTotalQsts);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total number of questions not blank *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumResults)
|
||||
HTM_Unsigned (NumTotalQstsNotBlank);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total score *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_Double2Decimals (TotalScoreOfAllResults);
|
||||
HTM_Txt ("/");
|
||||
HTM_Unsigned (NumTotalQsts);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write average score per question *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_Double2Decimals (NumTotalQsts ? TotalScoreOfAllResults /
|
||||
(double) NumTotalQsts :
|
||||
0.0);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total grade *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_Double2Decimals (TotalGrade);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Last cell *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** End row *****/
|
||||
|
@ -1137,7 +1137,7 @@ void MchRes_ShowOneMchResult (void)
|
|||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_QUESTIONS_non_blank;
|
||||
extern const char *Txt_Answers;
|
||||
extern const char *Txt_Score;
|
||||
extern const char *Txt_Grade;
|
||||
extern const char *Txt_Tags;
|
||||
|
@ -1242,7 +1242,7 @@ void MchRes_ShowOneMchResult (void)
|
|||
HTM_TxtColon (Txt_ROLES_SINGUL_Abc[UsrDat->Roles.InCurrentCrs.Role][UsrDat->Sex]);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
ID_WriteUsrIDs (UsrDat,NULL);
|
||||
HTM_TxtF (" %s",UsrDat->Surname1);
|
||||
if (UsrDat->Surname2[0])
|
||||
|
@ -1271,7 +1271,7 @@ void MchRes_ShowOneMchResult (void)
|
|||
|
||||
if (asprintf (&Id,"match_%u",(unsigned) StartEndTime) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
HTM_TD_Begin ("id=\"%s\" class=\"DAT LT\"",Id);
|
||||
HTM_TD_Begin ("id=\"%s\" class=\"DAT LB\"",Id);
|
||||
Dat_WriteLocalDateHMSFromUTC (Id,Print.TimeUTC[StartEndTime],
|
||||
Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
|
||||
true,true,true,0x7);
|
||||
|
@ -1288,9 +1288,21 @@ void MchRes_ShowOneMchResult (void)
|
|||
HTM_TxtColon (Txt_Questions);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TxtF ("%u; %s: %u",
|
||||
Print.NumQsts,Txt_QUESTIONS_non_blank,Print.NumQstsNotBlank);
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
HTM_Unsigned (Print.NumQsts);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** Number of answers *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtColon (Txt_Answers);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
HTM_Unsigned (Print.NumQstsNotBlank);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
@ -1302,7 +1314,7 @@ void MchRes_ShowOneMchResult (void)
|
|||
HTM_TxtColon (Txt_Score);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
if (ICanViewScore)
|
||||
{
|
||||
HTM_STRONG_Begin ();
|
||||
|
@ -1324,7 +1336,7 @@ void MchRes_ShowOneMchResult (void)
|
|||
HTM_TxtColon (Txt_Grade);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
if (ICanViewScore)
|
||||
{
|
||||
HTM_STRONG_Begin ();
|
||||
|
@ -1344,7 +1356,7 @@ void MchRes_ShowOneMchResult (void)
|
|||
HTM_TxtColon (Txt_Tags);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
Gam_ShowTstTagsPresentInAGame (Match.GamCod);
|
||||
HTM_TD_End ();
|
||||
|
||||
|
|
|
@ -187,7 +187,7 @@ static void TstPrn_ResetPrintExceptPrnCod (struct TstPrn_Print *Print)
|
|||
{
|
||||
Print->TimeUTC[Dat_START_TIME] =
|
||||
Print->TimeUTC[Dat_END_TIME ] = (time_t) 0;
|
||||
Print->NumQsts =
|
||||
Print->NumQsts = 0;
|
||||
Print->NumQstsNotBlank = 0;
|
||||
Print->Sent = false; // After creating an exam, it's not sent
|
||||
Print->AllowTeachers = false; // Teachers can't seen the exam if student don't allow it
|
||||
|
@ -1026,38 +1026,63 @@ void TstPrn_ComputeIntAnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion,
|
|||
{
|
||||
long AnswerUsr;
|
||||
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_BLANK;
|
||||
PrintedQuestion->Score = 0.0; // Default score for blank or wrong answer
|
||||
|
||||
if (PrintedQuestion->StrAnswers[0]) // If user has answered the answer
|
||||
{
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_WRONG_ZERO;
|
||||
if (sscanf (PrintedQuestion->StrAnswers,"%ld",&AnswerUsr) == 1)
|
||||
if (AnswerUsr == Question->Answer.Integer) // Correct answer
|
||||
{
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_CORRECT;
|
||||
PrintedQuestion->Score = 1.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TstPrn_ComputeFltAnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion,
|
||||
const struct Tst_Question *Question)
|
||||
{
|
||||
double AnswerUsr;
|
||||
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_BLANK;
|
||||
PrintedQuestion->Score = 0.0; // Default score for blank or wrong answer
|
||||
|
||||
if (PrintedQuestion->StrAnswers[0]) // If user has answered the answer
|
||||
{
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_WRONG_ZERO;
|
||||
AnswerUsr = Str_GetDoubleFromStr (PrintedQuestion->StrAnswers);
|
||||
|
||||
// A bad formatted floating point answer will interpreted as 0.0
|
||||
PrintedQuestion->Score = (AnswerUsr >= Question->Answer.FloatingPoint[0] &&
|
||||
AnswerUsr <= Question->Answer.FloatingPoint[1]) ? 1.0 : // If correct (inside the interval)
|
||||
0.0; // If wrong (outside the interval)
|
||||
if (AnswerUsr >= Question->Answer.FloatingPoint[0] &&
|
||||
AnswerUsr <= Question->Answer.FloatingPoint[1])
|
||||
{
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_CORRECT;
|
||||
PrintedQuestion->Score = 1.0; // Correct (inside the interval)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TstPrn_ComputeTF_AnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion,
|
||||
const struct Tst_Question *Question)
|
||||
{
|
||||
if (PrintedQuestion->StrAnswers[0]) // If user has selected T or F
|
||||
PrintedQuestion->Score = (PrintedQuestion->StrAnswers[0] == Question->Answer.TF) ? 1.0 : // Correct
|
||||
-1.0; // Wrong
|
||||
else
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_BLANK;
|
||||
PrintedQuestion->Score = 0.0;
|
||||
|
||||
if (PrintedQuestion->StrAnswers[0]) // If user has selected T or F
|
||||
{
|
||||
if (PrintedQuestion->StrAnswers[0] == Question->Answer.TF)
|
||||
{
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_CORRECT;
|
||||
PrintedQuestion->Score = 1.0; // Correct
|
||||
}
|
||||
else
|
||||
{
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_WRONG_NEGATIVE;
|
||||
PrintedQuestion->Score = -1.0; // Wrong
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TstPrn_ComputeChoAnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion,
|
||||
|
@ -1071,6 +1096,9 @@ void TstPrn_ComputeChoAnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion,
|
|||
unsigned NumAnsGood = 0;
|
||||
unsigned NumAnsBad = 0;
|
||||
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_BLANK;
|
||||
PrintedQuestion->Score = 0.0;
|
||||
|
||||
/***** Get indexes for this question from string *****/
|
||||
TstPrn_GetIndexesFromStr (PrintedQuestion->StrIndexes,Indexes);
|
||||
|
||||
|
@ -1095,39 +1123,68 @@ void TstPrn_ComputeChoAnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion,
|
|||
}
|
||||
}
|
||||
|
||||
/* The answer is blank? */
|
||||
/* The answer is not blank? */
|
||||
if (NumAnsGood || NumAnsBad) // If user has answered the answer
|
||||
{
|
||||
/* Compute the score */
|
||||
if (Question->Answer.Type == Tst_ANS_UNIQUE_CHOICE)
|
||||
{
|
||||
if (NumOptTotInQst >= 2) // It should be 2 options at least
|
||||
PrintedQuestion->Score = (double) NumAnsGood -
|
||||
(double) NumAnsBad / (double) (NumOptTotInQst - 1);
|
||||
else // 0 or 1 options (impossible)
|
||||
PrintedQuestion->Score = (double) NumAnsGood;
|
||||
{
|
||||
if (NumAnsGood == 1 && NumAnsBad == 0)
|
||||
{
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_CORRECT;
|
||||
PrintedQuestion->Score = 1;
|
||||
}
|
||||
else if (NumAnsGood == 0 && NumAnsBad == 1)
|
||||
{
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_WRONG_NEGATIVE;
|
||||
PrintedQuestion->Score = -1.0 / (double) (NumOptTotInQst - 1);
|
||||
}
|
||||
// other case should be impossible
|
||||
}
|
||||
// other case should be impossible
|
||||
}
|
||||
else // AnswerType == Tst_ANS_MULTIPLE_CHOICE
|
||||
{
|
||||
if (NumOptCorrInQst) // There are correct options in the question
|
||||
{
|
||||
if (NumOptCorrInQst < NumOptTotInQst) // If there are correct options and wrong options (typical case)
|
||||
PrintedQuestion->Score = (double) NumAnsGood / (double) NumOptCorrInQst -
|
||||
(double) NumAnsBad / (double) (NumOptTotInQst - NumOptCorrInQst);
|
||||
else // If all options are correct (extrange case)
|
||||
PrintedQuestion->Score = (double) NumAnsGood / (double) NumOptCorrInQst;
|
||||
if (NumAnsGood == NumOptCorrInQst && NumAnsBad == 0)
|
||||
{
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_CORRECT;
|
||||
PrintedQuestion->Score = 1.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (NumOptTotInQst) // There are options but none is correct (extrange case)
|
||||
PrintedQuestion->Score = - (double) NumAnsBad / (double) NumOptTotInQst;
|
||||
else // There are no options (impossible!)
|
||||
if (NumOptCorrInQst < NumOptTotInQst) // If there are correct options and wrong options (typical case)
|
||||
{
|
||||
PrintedQuestion->Score = (double) NumAnsGood / (double) NumOptCorrInQst -
|
||||
(double) NumAnsBad / (double) (NumOptTotInQst - NumOptCorrInQst);
|
||||
if (PrintedQuestion->Score > 0.000001)
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_WRONG_POSITIVE;
|
||||
else if (PrintedQuestion->Score < -0.000001)
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_WRONG_NEGATIVE;
|
||||
else // Score is 0
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_WRONG_ZERO;
|
||||
}
|
||||
else // If all options are correct (extrange case)
|
||||
{
|
||||
if (NumAnsGood == 0)
|
||||
{
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_WRONG_ZERO;
|
||||
PrintedQuestion->Score = 0.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_WRONG_POSITIVE;
|
||||
PrintedQuestion->Score = (double) NumAnsGood / (double) NumOptCorrInQst;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// other case should be impossible
|
||||
}
|
||||
}
|
||||
else // Answer is blank
|
||||
PrintedQuestion->Score = 0.0;
|
||||
}
|
||||
|
||||
void TstPrn_ComputeTxtAnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion,
|
||||
|
@ -1137,7 +1194,9 @@ void TstPrn_ComputeTxtAnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion,
|
|||
char TextAnsUsr[Tst_MAX_BYTES_ANSWERS_ONE_QST + 1];
|
||||
char TextAnsOK[Tst_MAX_BYTES_ANSWERS_ONE_QST + 1];
|
||||
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_BLANK;
|
||||
PrintedQuestion->Score = 0.0; // Default score for blank or wrong answer
|
||||
|
||||
if (PrintedQuestion->StrAnswers[0]) // If user has answered the answer
|
||||
{
|
||||
/* Filter the user answer */
|
||||
|
@ -1149,6 +1208,7 @@ void TstPrn_ComputeTxtAnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion,
|
|||
Str_ReplaceSeveralSpacesForOne (TextAnsUsr);
|
||||
Str_ConvertToComparable (TextAnsUsr);
|
||||
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_WRONG_ZERO;
|
||||
for (NumOpt = 0;
|
||||
NumOpt < Question->Answer.NumOptions;
|
||||
NumOpt++)
|
||||
|
@ -1160,7 +1220,11 @@ void TstPrn_ComputeTxtAnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion,
|
|||
|
||||
/* Check is user answer is correct */
|
||||
if (!strcoll (TextAnsUsr,TextAnsOK))
|
||||
{
|
||||
PrintedQuestion->AnswerIsCorrect = TstPrn_ANSWER_IS_CORRECT;
|
||||
PrintedQuestion->Score = 1.0; // Correct answer
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1889,7 +1953,7 @@ static void TstPrn_ShowUsrsPrints (__attribute__((unused)) void *Args)
|
|||
/***** Begin box and table *****/
|
||||
Box_BoxTableBegin (NULL,Txt_Results,
|
||||
NULL,NULL,
|
||||
Hlp_ASSESSMENT_Tests_results,Box_NOT_CLOSABLE,2);
|
||||
Hlp_ASSESSMENT_Tests_results,Box_NOT_CLOSABLE,5);
|
||||
|
||||
/***** Header of the table with the list of users *****/
|
||||
TstPrn_ShowHeaderPrints ();
|
||||
|
@ -1925,7 +1989,7 @@ static void TstPrn_ShowHeaderPrints (void)
|
|||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_Non_blank_BR_questions;
|
||||
extern const char *Txt_Score;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1;
|
||||
extern const char *Txt_Average_BR_score_BR_per_question;
|
||||
extern const char *Txt_Grade;
|
||||
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -1936,7 +2000,7 @@ static void TstPrn_ShowHeaderPrints (void)
|
|||
HTM_TH (1,1,"RT",Txt_Questions);
|
||||
HTM_TH (1,1,"RT",Txt_Non_blank_BR_questions);
|
||||
HTM_TH (1,1,"RT",Txt_Score);
|
||||
HTM_TH (1,1,"RT",Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1);
|
||||
HTM_TH (1,1,"RT",Txt_Average_BR_score_BR_per_question);
|
||||
HTM_TH (1,1,"RT",Txt_Grade);
|
||||
HTM_TH_Empty (1);
|
||||
|
||||
|
@ -2223,25 +2287,25 @@ static void TstPrn_ShowPrintsSummaryRow (bool ItsMe,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
/***** Row title *****/
|
||||
HTM_TD_Begin ("colspan=\"2\" class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("colspan=\"2\" class=\"DAT_N LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TxtColonNBSP (Txt_Visible_tests);
|
||||
HTM_Unsigned (NumPrints);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total number of questions *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumPrints)
|
||||
HTM_Unsigned (NumTotalQsts);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total number of questions not blank *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (NumPrints)
|
||||
HTM_Unsigned (NumTotalQstsNotBlank);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write total score *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanViewTotalScore)
|
||||
{
|
||||
HTM_Double2Decimals (TotalScoreOfAllTests);
|
||||
|
@ -2251,20 +2315,20 @@ static void TstPrn_ShowPrintsSummaryRow (bool ItsMe,
|
|||
HTM_TD_End ();
|
||||
|
||||
/***** Write average score per question *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanViewTotalScore)
|
||||
HTM_Double2Decimals (NumTotalQsts ? TotalScoreOfAllTests / (double) NumTotalQsts :
|
||||
0.0);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write score over Tst_SCORE_MAX *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (ICanViewTotalScore)
|
||||
TstPrn_ComputeAndShowGrade (NumTotalQsts,TotalScoreOfAllTests,Tst_SCORE_MAX);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Last cell *****/
|
||||
HTM_TD_Begin ("class=\"DAT_N_LINE_TOP COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_Begin ("class=\"DAT_N LINE_TOP COLOR%u\"",Gbl.RowEvenOdd);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** End row *****/
|
||||
|
@ -2283,7 +2347,7 @@ void TstPrn_ShowOnePrint (void)
|
|||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_QUESTIONS_non_blank;
|
||||
extern const char *Txt_Answers;
|
||||
extern const char *Txt_Score;
|
||||
extern const char *Txt_Grade;
|
||||
extern const char *Txt_Tags;
|
||||
|
@ -2381,7 +2445,7 @@ void TstPrn_ShowOnePrint (void)
|
|||
HTM_TxtColon (Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs.Role][Gbl.Usrs.Other.UsrDat.Sex]);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
ID_WriteUsrIDs (&Gbl.Usrs.Other.UsrDat,NULL);
|
||||
HTM_TxtF (" %s",Gbl.Usrs.Other.UsrDat.Surname1);
|
||||
if (Gbl.Usrs.Other.UsrDat.Surname2[0])
|
||||
|
@ -2411,7 +2475,7 @@ void TstPrn_ShowOnePrint (void)
|
|||
HTM_TxtColon (Txt_START_END_TIME[StartEndTime]);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("id=\"%s\" class=\"DAT LT\"",Id);
|
||||
HTM_TD_Begin ("id=\"%s\" class=\"DAT LB\"",Id);
|
||||
Dat_WriteLocalDateHMSFromUTC (Id,Print.TimeUTC[StartEndTime],
|
||||
Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
|
||||
true,true,true,0x7);
|
||||
|
@ -2429,9 +2493,21 @@ void TstPrn_ShowOnePrint (void)
|
|||
HTM_TxtColon (Txt_Questions);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TxtF ("%u; %s: %u",
|
||||
Print.NumQsts,Txt_QUESTIONS_non_blank,Print.NumQstsNotBlank);
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
HTM_Unsigned (Print.NumQsts);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** Number of answers *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT_N RT\"");
|
||||
HTM_TxtColon (Txt_Answers);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
HTM_Unsigned (Print.NumQstsNotBlank);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
@ -2443,7 +2519,7 @@ void TstPrn_ShowOnePrint (void)
|
|||
HTM_TxtColon (Txt_Score);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
if (ICanViewScore)
|
||||
{
|
||||
HTM_STRONG_Begin ();
|
||||
|
@ -2463,7 +2539,7 @@ void TstPrn_ShowOnePrint (void)
|
|||
HTM_TxtColon (Txt_Grade);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
if (ICanViewScore)
|
||||
{
|
||||
HTM_STRONG_Begin ();
|
||||
|
@ -2483,7 +2559,7 @@ void TstPrn_ShowOnePrint (void)
|
|||
HTM_TxtColon (Txt_Tags);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LT\"");
|
||||
HTM_TD_Begin ("class=\"DAT LB\"");
|
||||
TstPrn_ShowTagsPresentInAPrint (Print.PrnCod);
|
||||
HTM_TD_End ();
|
||||
|
||||
|
|
|
@ -40,12 +40,22 @@
|
|||
/******************************* Public types ********************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TstPrn_ANSWER_IS_CORRECT,
|
||||
TstPrn_ANSWER_IS_WRONG_NEGATIVE,
|
||||
TstPrn_ANSWER_IS_WRONG_ZERO,
|
||||
TstPrn_ANSWER_IS_WRONG_POSITIVE,
|
||||
TstPrn_ANSWER_IS_BLANK,
|
||||
} TstPrn_Correct_t;
|
||||
|
||||
struct TstPrn_PrintedQuestion
|
||||
{
|
||||
long QstCod; // Question code
|
||||
long SetCod; // Only for exams
|
||||
char StrIndexes[Tst_MAX_BYTES_INDEXES_ONE_QST + 1]; // 0 1 2 3, 3 0 2 1, etc.
|
||||
char StrAnswers[Tst_MAX_BYTES_ANSWERS_ONE_QST + 1]; // Answers selected by user
|
||||
TstPrn_Correct_t AnswerIsCorrect; // Is question wrong, medium or correct?
|
||||
double Score; // Question score
|
||||
};
|
||||
|
||||
|
|
167
swad_text.c
167
swad_text.c
|
@ -2522,6 +2522,27 @@ const char *Txt_Availability =
|
|||
"Disponibilidade";
|
||||
#endif
|
||||
|
||||
const char *Txt_average =
|
||||
#if L==1 // ca
|
||||
"mitjana";
|
||||
#elif L==2 // de
|
||||
"Mittel";
|
||||
#elif L==3 // en
|
||||
"average";
|
||||
#elif L==4 // es
|
||||
"media";
|
||||
#elif L==5 // fr
|
||||
"moyenne";
|
||||
#elif L==6 // gn
|
||||
"media"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"media";
|
||||
#elif L==8 // pl
|
||||
"średnia";
|
||||
#elif L==9 // pt
|
||||
"média";
|
||||
#endif
|
||||
|
||||
const char *Txt_Average_number_BR_of_ASSIG_BR_per_course =
|
||||
#if L==1 // ca
|
||||
"Nombre mitj´<br />d'activitats<br />per assignatura";
|
||||
|
@ -2819,25 +2840,25 @@ const char *Txt_AVERAGE_PHOTO_TYPES[Pho_NUM_AVERAGE_PHOTO_TYPES] =
|
|||
#endif
|
||||
};
|
||||
|
||||
const char *Txt_Average_BR_score_BR_per_question_BR_less_than_or_equal_to_1 =
|
||||
const char *Txt_Average_BR_score_BR_per_question =
|
||||
#if L==1 // ca
|
||||
"Puntuació<br />mitjana<br />per pregunta<br />(≤1)";
|
||||
"Puntuació<br />mitjana<br />per pregunta";
|
||||
#elif L==2 // de
|
||||
"Durchschnittliche<br />Punktzahl<br />pro Frage<br />(≤1)";
|
||||
"Durchschnittliche<br />Punktzahl<br />pro Frage";
|
||||
#elif L==3 // en
|
||||
"Average<br />score<br />per question<br />(≤1)";
|
||||
"Average<br />score<br />per question";
|
||||
#elif L==4 // es
|
||||
"Puntuación<br />media<br />por pregunta<br />(≤1)";
|
||||
"Puntuación<br />media<br />por pregunta";
|
||||
#elif L==5 // fr
|
||||
"Score<br />moyen<br />par question<br />(≤1)";
|
||||
"Score<br />moyen<br />par question";
|
||||
#elif L==6 // gn
|
||||
"Puntuación<br />media<br />por pregunta<br />(≤1)"; // Okoteve traducción
|
||||
"Puntuación<br />media<br />por pregunta"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Punteggio<br />medio<br />per domanda<br />(≤1)";
|
||||
"Punteggio<br />medio<br />per domanda";
|
||||
#elif L==8 // pl
|
||||
"Średnia<br />ocena<br />za pytanie<br />(≤1)";
|
||||
"Średnia<br />ocena<br />za pytanie";
|
||||
#elif L==9 // pt
|
||||
"Pontuação<br />média por<br />pergunta<br />(≤1)";
|
||||
"Pontuação<br />média por<br />pergunta";
|
||||
#endif
|
||||
|
||||
const char *Txt_Average_type =
|
||||
|
@ -3086,6 +3107,27 @@ const char *Txt_Before_going_to_any_other_option_you_must_fill_in_your_email_add
|
|||
"você deve preencher seu endereço de email.";
|
||||
#endif
|
||||
|
||||
const char *Txt_blank_ANSWERS =
|
||||
#if L==1 // ca
|
||||
"en blanc";
|
||||
#elif L==2 // de
|
||||
"leere";
|
||||
#elif L==3 // en
|
||||
"blank";
|
||||
#elif L==4 // es
|
||||
"en blanco";
|
||||
#elif L==5 // fr
|
||||
"vides";
|
||||
#elif L==6 // gn
|
||||
"en blanco"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"vuote";
|
||||
#elif L==8 // pl
|
||||
"puste";
|
||||
#elif L==9 // pt
|
||||
"em branco";
|
||||
#endif
|
||||
|
||||
const char *Txt_Briefcase_of_THE_USER_X_has_been_removed = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1 // ca
|
||||
"Se ha eliminado el maletín de <strong>%s</strong>."; // Necessita traduccio
|
||||
|
@ -4988,6 +5030,27 @@ const char *Txt_Copy_source =
|
|||
"Origem da copia";
|
||||
#endif
|
||||
|
||||
const char *Txt_correct_ANSWERS =
|
||||
#if L==1 // ca
|
||||
"correctes";
|
||||
#elif L==2 // de
|
||||
"richtige";
|
||||
#elif L==3 // en
|
||||
"correct";
|
||||
#elif L==4 // es
|
||||
"correctas";
|
||||
#elif L==5 // fr
|
||||
"bonnes";
|
||||
#elif L==6 // gn
|
||||
"correctas"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"corrette";
|
||||
#elif L==8 // pl
|
||||
"prawidłowe";
|
||||
#elif L==9 // pt
|
||||
"corretas";
|
||||
#endif
|
||||
|
||||
const char *Txt_Could_not_detect_any_face_in_front_position_ =
|
||||
#if L==1 // ca
|
||||
"No s'ha detectat cap rostre en posició frontal.";
|
||||
|
@ -33056,27 +33119,6 @@ const char *Txt_Questions_and_problems =
|
|||
"Perguntas e problemas";
|
||||
#endif
|
||||
|
||||
const char *Txt_QUESTIONS_non_blank =
|
||||
#if L==1 // ca
|
||||
"contestades";
|
||||
#elif L==2 // de
|
||||
"Non-blank";
|
||||
#elif L==3 // en
|
||||
"non-blank";
|
||||
#elif L==4 // es
|
||||
"contestadas";
|
||||
#elif L==5 // fr
|
||||
"non vide";
|
||||
#elif L==6 // gn
|
||||
"contestadas"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"risposte";
|
||||
#elif L==8 // pl
|
||||
"niepustych";
|
||||
#elif L==9 // pt
|
||||
"respondidas";
|
||||
#endif
|
||||
|
||||
const char *Txt_QUESTIONS_invalid =
|
||||
#if L==1 // ca
|
||||
"anul·lades";
|
||||
|
@ -53694,6 +53736,27 @@ const char *Txt_Total =
|
|||
"Total";
|
||||
#endif
|
||||
|
||||
const char *Txt_total =
|
||||
#if L==1 // ca
|
||||
"total";
|
||||
#elif L==2 // de
|
||||
"Gesamtzahl";
|
||||
#elif L==3 // en
|
||||
"total";
|
||||
#elif L==4 // es
|
||||
"total";
|
||||
#elif L==5 // fr
|
||||
"total";
|
||||
#elif L==6 // gn
|
||||
"total"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"totale";
|
||||
#elif L==8 // pl
|
||||
"całkowity";
|
||||
#elif L==9 // pt
|
||||
"total";
|
||||
#endif
|
||||
|
||||
const char *Txt_TST_Answer_given_by_the_teachers =
|
||||
#if L==1 // ca
|
||||
"Resposta donada pels professors";
|
||||
|
@ -56008,6 +56071,27 @@ const char *Txt_Vacants =
|
|||
"Desocupados";
|
||||
#endif
|
||||
|
||||
const char *Txt_Valid_answers =
|
||||
#if L==1 // ca
|
||||
"Respostes vàlides";
|
||||
#elif L==2 // de
|
||||
"Gültige Antworten";
|
||||
#elif L==3 // en
|
||||
"Valid answers";
|
||||
#elif L==4 // es
|
||||
"Respuestas válidas";
|
||||
#elif L==5 // fr
|
||||
"Réponses valides";
|
||||
#elif L==6 // gn
|
||||
"Respuestas válidas"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Risposte valide";
|
||||
#elif L==8 // pl
|
||||
"Prawidłowe odpowiedzi";
|
||||
#elif L==9 // pt
|
||||
"Respostas válidas";
|
||||
#endif
|
||||
|
||||
const char *Txt_valid_grade =
|
||||
#if L==1 // ca
|
||||
"nota vàlida";
|
||||
|
@ -57106,6 +57190,27 @@ const char *Txt_Write_a_message =
|
|||
"Escrever uma mensagem";
|
||||
#endif
|
||||
|
||||
const char *Txt_wrong_ANSWERS =
|
||||
#if L==1 // ca
|
||||
"incorrectes";
|
||||
#elif L==2 // de
|
||||
"falsche";
|
||||
#elif L==3 // en
|
||||
"wrong";
|
||||
#elif L==4 // es
|
||||
"erróneas";
|
||||
#elif L==5 // fr
|
||||
"mauvaises";
|
||||
#elif L==6 // gn
|
||||
"erróneas"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"sbagliate";
|
||||
#elif L==8 // pl
|
||||
"złe";
|
||||
#elif L==9 // pt
|
||||
"erradas";
|
||||
#endif
|
||||
|
||||
const char *Txt_Wrong_file_type =
|
||||
#if L==1 // ca
|
||||
"Tipus d'arxiu incorrecte.";
|
||||
|
|
Loading…
Reference in New Issue
Block a user