Changeset 87138 in spip-zone


Ignore:
Timestamp:
Jan 18, 2015, 1:21:08 PM (5 years ago)
Author:
code@…
Message:

plugins_seenthis/date_relative_dynamique : refactoring de l'alto

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/plugins_seenthis/date_relative_dynamique/js.calcul_date.html

    r87137 r87138  
    11[(#HTTP_HEADER{Content-type: text/javascript[; charset=(#CHARSET)]})]
    2 
    32
    43var chaines_lang = {
     
    2120};
    2221
     22
    2323function _T(chaine, nom_val, val) {
    2424        return chaines_lang[chaine].replace("@" + nom_val + "@", val);
    2525}
     26
     27/**
     28 * Intervalles pour formatter la date
     29 * [0]: intervalle valide en desous de cette valeur
     30 * [1]: facteur par lequel il faut diviser le nombre de secondes pour l'affichage
     31 * [2]: clé pour la traduction
     32 */
     33var intervalleFormattageDates = [
     34        [2, 1, 'date_une_seconde'],
     35        [60, 1, 'date_secondes'],
     36        [120, 60, 'date_une_minute'],
     37        [3600, 60, 'date_minutes'],
     38        [7200, 3600, 'date_une_heure'],
     39        [86400, 3600, 'date_heures'],
     40        [172800, -1, 'date_hier'],
     41        [1209600, 604800, 'date_une_semaine'],
     42        [2419200, 604800,'date_semaines'],
     43        [4838400, 2419200, 'date_un_mois'],
     44        [31449600, 2419200, 'date_mois']
     45];
    2646
    2747
     
    4363                var age = date_now - date;
    4464
    45                 if (age < 1) age = false;
    46                 else if (age < 2) age = _T("date_il_y_a", "delai", age + " " + _T("date_une_seconde"));
    47                 else if (age < 60) age = _T("date_il_y_a", "delai", age + " " + _T("date_secondes"));
    48                 else {
    49                         // passer en minutes
    50                         var age_min = Math.floor(age / 60);
    51                         if (age_min < 2) age = _T("date_il_y_a", "delai", age_min + " " + _T("date_une_minute"));
    52                         else if (age_min < 60) age = _T("date_il_y_a", "delai", age_min + " " + _T("date_minutes"));
    53                         else {
    54                                 // passer en heures
    55                                 var age_heure = Math.floor(age / (60 * 60));
    56                                 if (age_heure < 2) age = _T("date_il_y_a", "delai", age_heure + " " + _T("date_une_heure"));
    57                                 else if (age_heure < 24) age = _T("date_il_y_a", "delai", age_heure + " " + _T("date_heures"));
    58 
    59                                 else {
    60                                         // passer en jours
    61                                         var age_jour = Math.floor(age / (60 * 60 * 24));
    62                                         if (age_jour < 2) age = _T("date_hier");
    63                                         else if (age_jour < 8) age = _T("date_il_y_a", "delai", age_jour + " " + _T("date_jours"));
    64 
    65                                         else {
    66                                                 // passer en semaines
    67                                                 var age_sem = Math.floor(age / (60 * 60 * 24 * 7));
    68                                                 if (age_sem < 2) age = _T("date_il_y_a", "delai", age_sem + " " + _T("date_une_semaine"));
    69                                                 else if (age_sem < 4) age = _T("date_il_y_a", "delai", age_sem + " " + _T("date_semaines"));
    70 
    71                                                 else {
    72                                                         // passer en mois
    73                                                         var age_mois = Math.floor(age / (60 * 60 * 24 * 28));
    74                                                         if (age_mois < 1) age_mois = 1;
    75                                                         if (age_mois < 2) age = _T("date_il_y_a", "delai", age_mois + " " + _T("date_un_mois"));
    76                                                         else if (age_mois < 13) age = _T("date_il_y_a", "delai", age_mois + " " + _T("date_mois"));
    77 
    78                                                         else {
    79                                                                 // passer en mois
    80                                                                 var age_annee = Math.floor(age / (60 * 60 * 24 * 364));
    81                                                                 if (age_annee < 1) age_annee = 1;
    82                                                                 //if (age_annee < 2) age = "last year";
    83                                                                 //else age = age_annee + " years ago";
    84 
    85                                                                 age = false;
    86                                                         }
    87                                                 }
    88                                         }
     65                if(age < 1) {
     66                        // date dans le futur :-(
     67                        age = false;
     68                } else {
     69                        var intervalle = null;
     70                        // on parcourt les intervalles jusqu'à en trouver
     71                        for (var i = 0; i < intervalleFormattageDates.length; i++) {
     72                                var intervalle_courant = intervalleFormattageDates[i];
     73                                if (age < intervalle_courant[0]) {
     74                                        intervalle = intervalle_courant;
     75                                        break;
    8976                                }
    90 
    91 
     77                        }
     78                        if (intervalle) {
     79                                if (intervalle[1] == -1) {
     80                                        // formattage simplifié
     81                                        age = _T(intervalle[2])
     82                                } else {
     83                                        age = _T("date_il_y_a", "delai", Math.max(1, Math.floor(age/ intervalle[1])) + " " + _T(intervalle[2]));
     84                                }
     85                        } else {
     86                                age = false;
    9287                        }
    9388                }
Note: See TracChangeset for help on using the changeset viewer.