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
{
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)
{
questionnairesDatas=await searchQuestionnaireById(questionnaires[i].id);
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)
dateSearch=new Date(Date.now()+3600*1000*24);
// je commence par chercher le jour précédent pour lequel je dois avoir publié quelque chose :
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
dateSearch=new Date(questionnaires[i-1].datePublishing).getTime()+3600*1000*24;
dateQuestionnaire=new Date(questionnaires[i].datePublishing).getTime();
if(dateQuestionnaire > dateSearch)
dateNeeded=dateSearch;
{ // sinon je compare la date du précédent quiz à celle pour laquelle j'ai besoin d'un quiz
if(new Date(questionnaires[i-1].datePublishing).getTime() < previousDayNeededTS)
dateNeeded=previousDayNeededTS;
}
}
}
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
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 });
next();
}

View File

@ -96,10 +96,11 @@ const initialise = async () =>
let response=JSON.parse(this.responseText);
if (this.status === 200 && Array.isArray(response.questionnaires))
{
let listHTML="";
let listHTML="", dayStr, optionsDayStr = { weekday: 'long'};
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)
listHTML+=" <span class='error'>("+txtQuestionnaire.needBeCompleted+")</li>";
listHTML+="</li>";

View File

@ -405,10 +405,11 @@ const initialise = async () =>
let response=JSON.parse(this.responseText);
if (this.status === 200 && Array.isArray(response.questionnaires))
{
let listHTML="";
let listHTML="", dayStr, optionsDayStr = { weekday: 'long'};
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)
listHTML+=" <span class='error'>("+txtQuestionnaire.needBeCompleted+")</li>";
listHTML+="</li>";