Revue calcul date sans quiz + affichage jour de la semaine dates des prochains quizs

This commit is contained in:
Fabrice PENHOËT 2020-08-30 18:23:21 +02:00
parent 2111d5e7f0
commit 9c4829e773
3 changed files with 32 additions and 14 deletions

View File

@ -295,26 +295,42 @@ exports.getListNextQuestionnaires = async(req, res, next) =>
try try
{ {
let questionnaires=await getNextQuestionnaires(); let questionnaires=await getNextQuestionnaires();
let dateNeeded="", questionnairesDatas, dateSearch, dateQuestionnaire; const dayWithoutPublication=[0,6];// à déclarer dans config + gérer cas où aucun jour n'est obligatoire
let dateNeeded="", questionnairesDatas, dateQuestionnaireTS, previousDayNeededTS, previousDayTS;
for(let i in questionnaires) for(let i in questionnaires)
{ {
questionnairesDatas=await searchQuestionnaireById(questionnaires[i].id); questionnairesDatas=await searchQuestionnaireById(questionnaires[i].id);
questionnaires[i].isPublishable=checkQuestionnaireIsPublishable(questionnairesDatas, false); // le questionnaire est-il complet ? questionnaires[i].isPublishable=checkQuestionnaireIsPublishable(questionnairesDatas, false); // le questionnaire est-il complet ?
if(dateNeeded==="") // si il y a plus de 24H entre deux dates de publication, c'est mal ! dateQuestionnaireTS=new Date(questionnaires[i].datePublishing).getTime();
if(dateNeeded==="")
{ {
if(i==0) // je commence par chercher le jour précédent pour lequel je dois avoir publié quelque chose :
dateSearch=new Date(Date.now()+3600*1000*24); previousDayTS=new Date(new Date(dateQuestionnaireTS-3600*1000*24));
previousDayNeededTS=0;
while (previousDayNeededTS===0)
{
if(dayWithoutPublication.indexOf(previousDayTS.getDay())===-1)
previousDayNeededTS=previousDayTS;
else
previousDayTS=new Date(previousDayTS.getTime()-3600*1000*24);
}
// si il n'y a pas de quiz précédent, cette date est celle que je cherche
if(!questionnaires[i-1])
{
if(previousDayNeededTS >= Date.now())
dateNeeded=previousDayNeededTS;
}
else else
dateSearch=new Date(questionnaires[i-1].datePublishing).getTime()+3600*1000*24; { // sinon je compare la date du précédent quiz à celle pour laquelle j'ai besoin d'un quiz
dateQuestionnaire=new Date(questionnaires[i].datePublishing).getTime(); if(new Date(questionnaires[i-1].datePublishing).getTime() < previousDayNeededTS)
if(dateQuestionnaire > dateSearch) dateNeeded=previousDayNeededTS;
dateNeeded=dateSearch; }
} }
} }
if(questionnaires.length > 0 && dateNeeded==="") if(questionnaires.length > 0 && dateNeeded==="")
dateNeeded=new Date(dateQuestionnaire+3600*1000*24);// le jour suivant celui du dernier questionnaire dateNeeded=new Date(dateQuestionnaireTS+3600*1000*24);// le jour suivant celui du dernier questionnaire
else else
dateNeeded=new Date();// rien pour ce jour dateNeeded=new Date(Date.now()+3600*1000*24);// mais il est possible que rien n'ai été publié ce jour, le quiz du jour étant absent de la liste traitée
res.status(200).json({questionnaires: questionnaires, dateNeeded: dateNeeded }); res.status(200).json({questionnaires: questionnaires, dateNeeded: dateNeeded });
next(); next();
} }

View File

@ -96,10 +96,11 @@ const initialise = async () =>
let response=JSON.parse(this.responseText); let response=JSON.parse(this.responseText);
if (this.status === 200 && Array.isArray(response.questionnaires)) if (this.status === 200 && Array.isArray(response.questionnaires))
{ {
let listHTML=""; let listHTML="", dayStr, optionsDayStr = { weekday: 'long'};
for(let i in response.questionnaires) for(let i in response.questionnaires)
{ {
listHTML+="<li>"+dateFormat(response.questionnaires[i].datePublishing, "fr")+": <a href='"+configFrontEnd.questionnairesManagementPage+"?id="+response.questionnaires[i].id+"'>"+response.questionnaires[i].title+"</a>"; dayStr=new Intl.DateTimeFormat(lang, optionsDayStr).format(new Date(response.questionnaires[i].datePublishing));
listHTML+="<li>"+dayStr+" "+dateFormat(response.questionnaires[i].datePublishing, "fr")+": <a href='"+configFrontEnd.questionnairesManagementPage+"?id="+response.questionnaires[i].id+"'>"+response.questionnaires[i].title+"</a>";
if(response.questionnaires[i].isPublishable===false) if(response.questionnaires[i].isPublishable===false)
listHTML+=" <span class='error'>("+txtQuestionnaire.needBeCompleted+")</li>"; listHTML+=" <span class='error'>("+txtQuestionnaire.needBeCompleted+")</li>";
listHTML+="</li>"; listHTML+="</li>";

View File

@ -405,10 +405,11 @@ const initialise = async () =>
let response=JSON.parse(this.responseText); let response=JSON.parse(this.responseText);
if (this.status === 200 && Array.isArray(response.questionnaires)) if (this.status === 200 && Array.isArray(response.questionnaires))
{ {
let listHTML=""; let listHTML="", dayStr, optionsDayStr = { weekday: 'long'};
for(let i in response.questionnaires) for(let i in response.questionnaires)
{ {
listHTML+="<li>"+dateFormat(response.questionnaires[i].datePublishing, "fr")+": <a href='"+configFrontEnd.questionnairesManagementPage+"?id="+response.questionnaires[i].id+"' id='questionnaire_"+response.questionnaires[i].id+"'>"+response.questionnaires[i].title+"</a>"; dayStr=new Intl.DateTimeFormat(lang, optionsDayStr).format(new Date(response.questionnaires[i].datePublishing));
listHTML+="<li>"+dayStr+" "+dateFormat(response.questionnaires[i].datePublishing, "fr")+": <a href='"+configFrontEnd.questionnairesManagementPage+"?id="+response.questionnaires[i].id+"' id='questionnaire_"+response.questionnaires[i].id+"'>"+response.questionnaires[i].title+"</a>";
if(response.questionnaires[i].isPublishable===false) if(response.questionnaires[i].isPublishable===false)
listHTML+=" <span class='error'>("+txtQuestionnaire.needBeCompleted+")</li>"; listHTML+=" <span class='error'>("+txtQuestionnaire.needBeCompleted+")</li>";
listHTML+="</li>"; listHTML+="</li>";