Soucis intégration date dans HTML/JSON

Soucis intégration date dans HTML/JSON - HTML/CSS - Programmation

Marsh Posté le 14-07-2018 à 15:03:13    

Bonjour à tous,
 
Je viens demander un peu d'aide aux connaisseurs car je suis un peu (complètement) perdu.
Je précise tout de suite que je n'y connais rien en programmation !
 
Je suis en train de me créer une "startpage" perso en reprenant quelques scripts sur Github et en essayant à mon niveau (de mer..) de l'adapter à mon besoin.
Elle est presque finie mais j'ai un soucis et je n'arrive pas à intégrer la date du type "samedi 14 juillet 2018" dans mon script et que la date soit bien intégrée dans le même cadre que l'heure.
 
Sauriez-vous m'aider svp ? Merci par avance.
 
Voici l'unique page HTML du script, le reste ne sont que des images ou fonts.
 

Code :
  1. <!doctype html>
  2. <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  3. <meta http-equiv="x-dns-prefetch-control" content="on">
  4. <meta name="viewport" content="width=device-width, initial-scale=1">
  5. <link rel="icon" href="./favicon.ico" >
  6. <meta name="robots" content="noindex, nofollow">
  7. <title>Page d'accueil</title>
  8. <script>
  9.   const CONFIG = {
  10.     // the category, name, key, url, search path and color for your commands
  11.     // if none of the specified keys are matched, the '*' key is used
  12.     commands: [
  13.   [null, 'DuckduckGO', 'd', 'https://duckduckgo.com', '/?q={}&t=h_&ia=news', '#373D53', './img/null/duckduckgo.png'],
  14.       [null, 'Google', 'g', 'https://encrypted.google.com', '/search?q={}', '#373D53', './img/null/google.png'],
  15.   [null, 'Qwant', '*', 'https://lite.qwant.com', '/?l=fr&q={}&t=web', '#373D53', './img/null/qwant.png'],
  16.   [null, 'StartPage', 's', 'https://www.startpage.com', '/do/asearch?q={}&cat=web&nj=1&language=francais&lui=francais&t=air', '#A2C9EF', './img/null/startpage.png'],
  17.   [null, 'Google Translate', 'translate', 'https://translate.google.fr', '/#en/fr/{}', '#4285f4', './img/null/translate.svg'],
  18.  
  19.   ['Divers', 'Pages Jaunes', 'pages jaunes', 'https://www.pagesjaunes.fr', '/annuaire/chercherlespros?quoiqui={}', '#FFEA03', './img/Divers/pages_jaunes.png'],
  20.      
  21.   ['Forums', 'Forum JVC', 'forum jvc', 'http://www.jeuxvideo.com/forums.htm', '/forums/recherche.php?q={}', '#004565', './img/Forums/jvc.png'],
  22.       ['Forums', 'Forum HFR', 'hfr', 'https://forum.hardware.fr', '/forum1.php?config=hfr.inc&cat=1&post_cat_list=|1*hfr|16*hfr|25*hfr|3*hfr|4*hfr|22*hfr|21*hfr|11*hfr|10*hfr|6*hfr|13*hfr|&trash=0&orderSearch=1&recherches=1&resSearch=20&jour=7&mois=4&annee=2018&titre=1&search={}&pseud=&daterange=2&searchtype=1&searchall=1', '#394F67', './img/Forums/hfr.png'],
  23.       ['Forums', 'Forum Next Inpact', 'forum next inpact', 'https://forum.nextinpact.com', '/search/?q={}', '#3F6593', './img/Forums/next_inpact.png'],
  24.   ['Forums', 'Reddit', 'reddit', 'https://www.reddit.com', '/search?q={}', '#5f99cf', './img/Forums/reddit.svg'],
  25.   ['Informatique', 'Discord', 'discord', 'https://discordapp.com', null, '#1E1F22', './img/Informatique/discord.svg'],   
  26.       ['Informatique', 'Dropbox', 'dropbox', 'https://www.dropbox.com/fr/', null, '#333333', './img/Informatique/dropbox.svg'],   
  27.   ['Informatique', 'DL Compare', 'dl compare', 'https://www.dlcompare.fr', '/search?q={}', '#363636', './img/Informatique/dl_compare.png'],
  28.       ['Informatique', 'Imgur', 'imgur', 'https://imgur.com/upload', null, '#474A50', './img/Informatique/imgur.png'],
  29.       ['Informatique', 'Jeuxvideo.com', 'jvc', 'http://www.jeuxvideo.com/', '/recherche.php?q={}', '#DFDFDF', './img/Informatique/jvc.png'],
  30.       ['Informatique', 'MacG', 'macg', 'https://www.macg.co/', '/recherche/{}&o=date', '#FF6602', './img/Informatique/macg.png'],
  31.   ['Informatique', 'Next Inpact', 'next inpact', 'https://www.nextinpact.com', '/recherche?_search={}&RubriqueId=&Author=&OrderType=date&DateStartPeriod=&DateEndPeriod=&ListTypeContent.actus_view=true&ListTypeContent.dossiers_view=true&ListTypeContent.bonsplans_view=true&ListTypeContent.archives_view=true', '#06455A', './img/Informatique/next_inpact.png'],
  32.   ['Informatique', 'Virus Total', 'virus total', 'https://www.virustotal.com/fr', null, '#292929', './img/Informatique/virus_total.svg'],
  33.   ['Informatique', 'XDA Developers', 'xda', 'https://forum.xda-developers.com/', '/sitesearch.php?q={}', '#323232', './img/Informatique/xda.svg'],
  34.  
  35.   ['Multimedia', 'Écouter  radio en ligne', 'radio', 'http://www.ecouterradioenligne.com', '/#{}', '#00323D', './img/Multimedia/radio.png'],
  36.   ['Multimedia', 'France Bleu', 'France bleu', 'https://www.francebleu.fr', null, '#0077D6', './img/Multimedia/France_bleu.svg'],
  37.   ['Multimedia', 'Dailymotion', 'dailymotion', 'https://www.dailymotion.com/fr', '/search/{}', '#07A7E0', './img/Multimedia/dailymotion.svg'],
  38.   ['Multimedia', 'Netflix', 'netflix', 'https://www.netflix.com/browse', '/search?q={}', '#1B1B1B', './img/Multimedia/netflix.svg'],
  39.       ['Multimedia', 'Play Music', 'google music', 'https://play.google.com/music/listen#/all', '/music/listen#/sr/{}', '#282828', './img/Multimedia/google_play_music.svg'], 
  40.       ['Multimedia', 'Prime Vidéo', 'prime video', 'https://www.primevideo.com', '/search/ref=atv_nb_sr?phrase={}&ie=UTF8', '#282828', './img/Multimedia/amazon_prime_video.svg'], 
  41.   ['Multimedia', 'SoundCloud', 'soundcloud', 'https://soundcloud.com/discover', '/search?q={}', '#363636', './img/Multimedia/soundcloud.svg'],
  42.   ['Multimedia', 'Spotify', 'spotify', 'https://open.spotify.com/browse/featured', '/search/results/{}', '#613031', './img/Multimedia/spotify.svg'],
  43.   ['Multimedia', 'The movie database', 'tmdb', 'https://www.themoviedb.org', '/search/movie?query={}', '#112229', './img/Multimedia/tmdb.svg'],
  44.       ['Multimedia', 'TVDB', 'tvdb', 'https://www.thetvdb.com', '/search?q={}&l=fr', '#2C2C2C', './img/Multimedia/tvdb.png'],
  45.   ['Multimedia', 'Twitch', 'twitch', 'https://www.twitch.tv/directory', null, '#302A43', './img/Multimedia/twitch.svg'],
  46.   ['Multimedia', 'Youtube Music', 'yt music', 'https://music.youtube.com', '/search?q={}', '#1A1A1A', './img/Multimedia/youtube_music.svg'],
  47.   ['Sport', 'Eurosport', 'eurosport', 'https://www.eurosport.fr', null, '#191E48', './img/Sport/eurosport.svg'],
  48.   ['Sport', 'L&rsquo;équipe', 'lequipe', 'https://www.lequipe.fr', '/recherche/search.php?r={}&jd=&md=&ad=&jf=&mf=&af=&t=ALL&s1=efr&adv=0&o=D&s=ALL', '#F8F8F8', './img/Sport/equipe.svg'],
  49.   ['Sport', 'Sports.fr', 'sports', 'http://www.sports.fr', null, '#005090', './img/Sport/sports.svg'],
  50.     ],
  51.     // instantly redirect when a key is matched
  52.     // put a space before any other queries to prevent unwanted redirects
  53.     instantRedirect: false,
  54.     // open queries in a new tab
  55.     newTab: false,
  56.     // dynamic background colors when command domains are matched
  57.     colors: true,
  58.     // specify a theme file
  59.     // remove or set to false to use the hardcoded theme
  60.     theme: false,
  61.     // the delimiter between the key and your search query
  62.     // e.g. to search GitHub for potatoes you'd type "g:potatoes"
  63.     searchDelimiter: ':',
  64.     // the delimiter between the key and a path
  65.     // e.g. type "r/r/unixporn" to go to "reddit.com/r/unixporn"
  66.    // pathDelimiter: '/',
  67.     // the delimiter between the hours and minutes in the clock
  68.     clockDelimiter: ':',
  69.     // note: you can pass in your search query via the q query param
  70.     // e.g. going to file:///path/to/tilde/index.html?q=hamsters is equivalent
  71.     // to typing "hamsters" and pressing enter
  72.   };
  73. </script>
  74. <style type="text/css">
  75. @font-face {font-family:"2018"; src:url("./font/2018.ttf" );}
  76. @font-face {font-family:"digital"; src:url("./font/digital.ttf" );}
  77.   :root {
  78.     --color0: #202020;
  79.     --color15: #ffffff;
  80. --color20: #00a5ff;
  81.   }
  82.   body {
  83.     position: absolute;
  84. top: -21%;
  85.     left: 0;
  86.     width: 100%;
  87.     height: 100%;
  88.     margin: 0;
  89.     padding: 0;
  90.     transition: background .2s;
  91.     background-color: var(--color0);
  92.     font-family:"2018";
  93.     color: var(--color15);
  94. background: url(./img/background.jpg);
  95. background-position: no-repeat center 0;
  96.     background-size: cover;
  97.   }
  98.   input,
  99.   button,
  100.   input:focus,
  101.   button:focus {
  102.     display: block;
  103.     box-sizing: border-box;
  104.     width: 100%;
  105.     margin: 0;
  106.     border: 0;
  107.     outline: 0;
  108. background: transparent;
  109.     color: #fff;
  110.     font-family:"2018";
  111.     text-align: center;
  112.     -webkit-appearance: none;
  113.     -moz-appearance: none;
  114.   }
  115.   ul,
  116.   li {
  117.     margin: 0;
  118.     padding: 0;
  119.     list-style: none;
  120.   }
  121.   a,
  122.   a:focus {
  123.     color: #DAF7A6;
  124.     outline: 0;
  125.   }
  126.   #clock {
  127. -webkit-text-fill-color: white;
  128.     color: whitesmoke;
  129.     border-radius: 5px;
  130.     -moz-box-shadow: 0 20px 30px rgba(0, 0, 0, 0.6);
  131.     -webkit-box-shadow: 0 20px 30px rgba(0, 0, 0, 0.6);
  132.     /* box-shadow: 0 20px 30px rgba(0, 0, 0, 0.6); */
  133. /* box-shadow: -1px 4px 5px 4px rgba(0, 0, 0, 0.7); */
  134. box-shadow: 3px 3px 10px 3px #000;
  135.     border: 1px solid rgba(255, 255, 255, 0.3);
  136.     padding: 0px 20px 0px 20px;
  137.     -moz-box-sizing: border-box;
  138.     -webkit-box-sizing: border-box;
  139.     box-sizing: border-box;
  140.     text-shadow: 0 5px 1px rgba(0, 0, 0, 0.4);
  141.     transition: box-shadow .3s ease;
  142.     background-color: rgba(0.12, 0.12, 0.12, 0.12);
  143. cursor: default;
  144. font-size: 8rem;
  145.     font-family:"digital";
  146.     text-align: center;
  147.   }
  148.   #search-form {
  149. background: url(./img/background.jpg);
  150. background-position: no-repeat center 0;
  151.     background-size: cover;
  152.     color: #ffffff;
  153.     z-index: 2;
  154.   }
  155.   #search-form>div {
  156. -webkit-text-fill-color: white;
  157.     color: whitesmoke;
  158.     top: 35%;
  159.     border-radius: 5px;
  160.     -moz-box-shadow: 0 20px 30px rgba(0, 0, 0, 0.6);
  161.     -webkit-box-shadow: 0 20px 30px rgba(0, 0, 0, 0.6);
  162.     box-shadow: 0 20px 30px rgba(0, 0, 0, 0.6);
  163.     border: 1px solid rgba(255, 255, 255, 0.3);
  164.     padding: 10px;
  165. font-size: 0.7rem;
  166.     text-align: center;
  167.     -moz-box-sizing: border-box;
  168.     -webkit-box-sizing: border-box;
  169.     box-sizing: border-box;
  170.     text-shadow: 0 5px 1px rgba(0, 0, 0, 0.4);
  171.     transition: box-shadow .3s ease;
  172.     background-color: rgba(0.12, 0.12, 0.12, 0.12);
  173.   }
  174.   #search-input,
  175.   #search-input:focus {
  176.     width: 100%;
  177.     font-size: 10px;
  178.     font-weight: lighter;
  179. text-transform: none;
  180. /* font-family:"2018"; */
  181.   }
  182.   #help {
  183.    background: url(./img/background.jpg);
  184. background-position: no-repeat center 0;
  185.     background-size: cover;
  186.     display: block;
  187.     padding: 8vw;
  188.     background-color: var(--color0);
  189.     font-size: 1.3rem;
  190.     z-index: 1;
  191.   }
  192.   .category {
  193. text-align: center;
  194. font-size: 19px;
  195.     letter-spacing: 1px;
  196.   }
  197.   .category:last-of-type {
  198. text-align: center;
  199. font-size: 19px;
  200.     letter-spacing: 1px;
  201.   }
  202.   .category-name {
  203. -webkit-text-fill-color: white;
  204.     color: whitesmoke;
  205.     border-radius: 5px;
  206.     -moz-box-shadow: 0 20px 30px rgba(0, 0, 0, 0.6);
  207.     -webkit-box-shadow: 0 20px 30px rgba(0, 0, 0, 0.6);
  208.     box-shadow: 0 20px 30px rgba(0, 0, 0, 0.6);
  209.     border: 1px solid rgba(255, 255, 255, 0.3);
  210.     padding: 0px 40px 0px 40px;
  211.     -moz-box-sizing: border-box;
  212.     -webkit-box-sizing: border-box;
  213.     box-sizing: border-box;
  214.     text-shadow: 0 5px 1px rgba(0, 0, 0, 0.4);
  215.     transition: box-shadow .3s ease;
  216.     background-color: rgba(92, 92, 92, 0.42);
  217. cursor: default;
  218.     font-family:"2018";
  219.     text-align: center;
  220.   }
  221.   .command a {
  222.     display: block;
  223.     position: relative;
  224.     margin: 1em 0;
  225.     font-size: .8em;
  226.     line-height: 1em;
  227.     text-decoration: none;
  228.   }
  229.   .command:last-of-type a {
  230.     margin-bottom: 0;
  231.   }
  232.   .command-name {
  233.     position: relative;
  234.     overflow: hidden;
  235.   }
  236.   .command-name::after {
  237.     content: ' ';
  238.     position: absolute;
  239.     right: 0;
  240.     bottom: -.35em;
  241.     left: 0;
  242.     height: 2px;
  243.     transition: .2s;
  244.     transform: translateX(-2em);
  245.     background: var(--color15);
  246.     opacity: 0;
  247.   }
  248.   .command a:hover .command-name::after,
  249.   .command a:focus .command-name::after {
  250.     transform: translateX(0);
  251.     opacity: 1;
  252.   }
  253.   .overlay {
  254.     position: fixed;
  255.     top: 0%;
  256.     left: 0;
  257.     overflow: auto;
  258.     box-sizing: border-box;
  259.     width: 100%;
  260.     height: 100%;
  261.     visibility: hidden;
  262.   }
  263.   body.help #help.overlay,
  264.   body.form #search-form.overlay {
  265.     visibility: visible;
  266.   }
  267.   .center {
  268.     display: flex;
  269.     justify-content: center;
  270.     align-items: center;
  271.     width: 100%;
  272.     height: 100%;
  273.     box-sizing: border-box;
  274.   }
  275.   @media (min-width: 500px) {
  276.     .categories {
  277.       display: grid;
  278.       grid-template-columns: 250px 185px;
  279.       justify-content: space-around;
  280.     }
  281.     .category:nth-last-child(2) {
  282.       margin-bottom: 0;
  283.     }
  284.     #search-input,
  285.     #search-input:focus {
  286.       font-size: 3em;
  287.     }
  288.   }
  289.   @media (min-width: 1000px) {
  290.     #help {
  291.       display: flex;
  292.       padding: 0;
  293.     }
  294.     .category {
  295.       margin: 2rem 0;
  296.     }
  297.     .categories {
  298.       grid-template-columns: repeat(2, 300px) 185px;
  299.     }
  300.   }
  301.   @media (min-width: 1700px) {
  302.     .categories {
  303.       grid-template-columns: repeat(5, 250px) 185px;
  304.     }
  305.   } 
  306.  
  307. </style>
  308. <div class="center">
  309.   <time id="clock"></time>
  310. </div>
  311. <form class="overlay center" id="search-form" autocomplete="off" spellcheck="false">
  312.     <img id="search-logo" src="./img/interrogation.png" style="position: fixed;padding-bottom: 400px;" height="188">
  313.   <div>
  314.     <input id="search-input" type="text">
  315.   </div>
  316. </form>
  317. <aside class="overlay center" id="help"></aside>
  318.  
  319. <script>
  320.   const $ = {
  321.     bodyClassAdd: c => $.el('body').classList.add(c),
  322.     bodyClassHas: c => $.el('body').classList.contains(c),
  323.     bodyClassRemove: c => $.el('body').classList.remove(c),
  324.     el: s => document.querySelector(s),
  325.     els: s => [].slice.call(document.querySelectorAll(s) || []),
  326.     escapeRegex: s => s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'),
  327.     ieq: (a, b) => a.toLowerCase() === b.toLowerCase(),
  328.     iin: (a, b) => a.toLowerCase().indexOf(b.toLowerCase()) !== -1,
  329.     isDown: e => ['c-n', 'down', 'tab'].includes($.key(e)),
  330.     isRemove: e => ['backspace', 'delete'].includes($.key(e)),
  331.     isUp: e => ['c-p', 'up', 's-tab'].includes($.key(e)),
  332.     jsonp: url => {
  333.       let script = document.createElement('script');
  334.       script.src = url;
  335.       $.el('head').appendChild(script);
  336.     },
  337.     key: e => {
  338.       const ctrl = e.ctrlKey;
  339.       const shift = e.shiftKey;
  340.       switch (e.which) {
  341.         case 8: return 'backspace';
  342.         case 9: return shift ? 's-tab' : 'tab';
  343.         case 13: return 'enter';
  344.         case 16: return 'shift';
  345.         case 17: return 'ctrl';
  346.         case 18: return 'alt';
  347.         case 27: return 'escape';
  348.         case 38: return 'up';
  349.         case 40: return 'down';
  350.         case 46: return 'delete';
  351.         case 78: return ctrl ? 'c-n' : 'n';
  352.         case 80: return ctrl ? 'c-p' : 'n';
  353.         case 91: return 'super';
  354.       }
  355.     },
  356.   };
  357.   class Clock {
  358.     constructor(options) {
  359.       this._el = $.el('#clock');
  360.       this._delimiter = options.delimiter;
  361.       this._form = options.form;
  362.       this._setTime = this._setTime.bind(this);
  363.       this._registerEvents();
  364.       this._start();
  365.     }
  366.     _pad(num) {
  367.       return ('0' + num.toString()).slice(-2);
  368.     }
  369.     _registerEvents() {
  370.       this._el.addEventListener('click', this._form.show);
  371.     }
  372.     _setTime() {
  373.       const date = new Date();
  374.       const hours = this._pad(date.getHours());
  375.       const minutes = this._pad(date.getMinutes());
  376.       this._el.innerHTML = hours + this._delimiter + minutes;
  377.     }
  378.     _start() {
  379.       this._setTime();
  380.       setInterval(this._setTime, 1000);
  381.     }
  382.   }
  383.   class Help {
  384.     constructor(options) {
  385.       this._el = $.el('#help');
  386.       this._commands = options.commands;
  387.       this._newTab = options.newTab;
  388.       this._toggled = false;
  389.       this._buildAndAppendLists();
  390.       this._bindMethods();
  391.       this._registerEvents();
  392.     }
  393.     toggle(show) {
  394.       this._toggled = (typeof show !== 'undefined') ? show : !this._toggled;
  395.       this._toggled ? $.bodyClassAdd('help') : $.bodyClassRemove('help');
  396.     }
  397.     _bindMethods() {
  398.       this._handleKeydown = this._handleKeydown.bind(this);
  399.     }
  400.     _buildAndAppendLists() {
  401.       const lists = document.createElement('ul');
  402.       lists.classList.add('categories');
  403.       this._getCategories().forEach(category => {
  404.         lists.insertAdjacentHTML(
  405.           'beforeend',
  406.           `<li class="category">
  407.             <h2 class="category-name">${category}</h2>
  408.             <ul>${this._buildListCommands(category)}</ul>
  409.           </li>`
  410.         );
  411.       });
  412.       this._el.appendChild(lists);
  413.     }
  414.     _buildListCommands(category) {
  415.       return this._commands.map(([cmdCategory, name, key, url]) => {
  416.         if (cmdCategory === category) {
  417.           return (
  418.             `<li class="command">
  419.               <a href="${url}" target="${this._newTab ? '_blank' : '_self'}">
  420.                 <!--<span class="command-key">${key}</span>-->
  421.                 <span class="command-name">${name}</span>
  422.               </a>
  423.             </li>`
  424.           );
  425.         }
  426.       }).join('');
  427.     }
  428.     _getCategories() {
  429.       const categories = this._commands
  430.         .map(([category]) => category)
  431.         .filter(category => category);
  432.       return [...new Set(categories)];
  433.     }
  434.     _handleKeydown(e) {
  435.       if ($.key(e) === 'escape') this.toggle(false);
  436.     }
  437.     _registerEvents() {
  438.       document.addEventListener('keydown', this._handleKeydown);
  439.     }
  440.   }
  441.   class Influencer {
  442.     constructor(options) {
  443.       this._limit = options.limit;
  444.       this._queryParser = options.queryParser;
  445.     }
  446.     addItem() {}
  447.     getSuggestions() {}
  448.     _addSearchPrefix(items, query) {
  449.       const searchPrefix = this._getSearchPrefix(query)
  450.       return items.map(s => searchPrefix ? searchPrefix + s : s);
  451.     }
  452.     _getSearchPrefix(query) {
  453.       const { isSearch, key, split } = this._parseQuery(query);
  454.       return isSearch ? `${key}${split} ` : false;
  455.     }
  456.     _parseQuery(query) {
  457.       return this._queryParser.parse(query);
  458.     }
  459.   }
  460.   class DuckDuckGoInfluencer extends Influencer {
  461.     constructor({ queryParser }) {
  462.       super(...arguments);
  463.     }
  464.     getSuggestions(rawQuery) {
  465.       const { query } = this._parseQuery(rawQuery);
  466.       if (!query) return Promise.resolve([]);
  467.       return new Promise(resolve => {
  468.         const endpoint = 'https://duckduckgo.com/ac/';
  469.         const callback = 'autocompleteCallback';
  470.         window[callback] = res => {
  471.           const suggestions = res.map(i => i.phrase)
  472.             .filter(s => !$.ieq(s, query))
  473.             .slice(0, this._limit)
  474.           resolve(this._addSearchPrefix(suggestions, rawQuery));
  475.         };
  476.         $.jsonp(`${endpoint}?callback=${callback}&q=${query}`);
  477.       });
  478.     }
  479.   }
  480.   class Suggester {
  481.     constructor(options) {
  482.       this._limit = options.limit;
  483.       this._suggestionEls = [];
  484.       this._bindMethods();
  485.       this._registerEvents();
  486.     }
  487.     setOnClick(callback) {
  488.       this._onClick = callback;
  489.     }
  490.     setOnHighlight(callback) {
  491.       this._onHighlight = callback;
  492.     }
  493.     setOnUnhighlight(callback) {
  494.       this._onUnhighlight = callback;
  495.     }
  496.     _unHighlight(e) {
  497.       const el = $.el('.highlight');
  498.       if (el) {
  499.         this._onUnhighlight();
  500.         el.classList.remove('highlight');
  501.         if (e) e.preventDefault();
  502.       }
  503.     }
  504.   }
  505.   class QueryParser {
  506.     constructor(options) {
  507.       this._commands = options.commands;
  508.       this._searchDelimiter = options.searchDelimiter;
  509.       this._pathDelimiter = options.pathDelimiter;
  510.       this._protocolRegex = /^[a-zA-Z]+:\/\//i;
  511.       this._urlRegex = /^((https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)$/i;
  512.     }
  513.     parse(query) {
  514.       const res = { query: query, split: null };
  515.       if (query.match(this._urlRegex)) {
  516.         const hasProtocol = query.match(this._protocolRegex);
  517.         res.redirect = hasProtocol ? query : 'http://' + query;
  518.       } else {
  519.         const splitSearch = query.split(this._searchDelimiter);
  520.         const splitPath = query.split(this._pathDelimiter);
  521.         this._commands.some(([category, name, key, url, searchPath]) => {
  522.           res.isKey = query === key;
  523.           res.isSearch = !res.isKey && splitSearch[0] === key;
  524.           res.isPath = !res.isKey && splitPath[0] === key;
  525.           if (res.isKey || res.isSearch || res.isPath) {
  526.             res.key = key;
  527.             if (res.isSearch && searchPath) {
  528.               res.split = this._searchDelimiter;
  529.               res.query = this._shiftAndTrim(splitSearch, res.split);
  530.               res.redirect = this._prepSearch(url, searchPath, res.query);
  531.             } else if (res.isPath) {
  532.               res.split = this._pathDelimiter;
  533.               res.path = this._shiftAndTrim(splitPath, res.split);
  534.               res.redirect = this._prepPath(url, res.path);
  535.             } else {
  536.               res.redirect = url;
  537.             }
  538.             return true;
  539.           }
  540.           if (key === '*') {
  541.             res.redirect = this._prepSearch(url, searchPath, query);
  542.           }
  543.         });
  544.       }
  545.       res.color = this._getColorFromUrl(res.redirect);
  546.       res.logo = this._getLogoFromUrl(res.redirect);
  547.       return res;
  548.     }
  549.     _getColorFromUrl(url) {
  550.       const domain = this._getHostname(url);
  551.       const color = this._commands
  552.         .filter(c => this._getHostname(c[3]) === domain)
  553.         .map(c => c[5])[0];
  554.       return color || null;
  555.     }
  556.     _getLogoFromUrl(url) {
  557.       const domain = this._getHostname(url);
  558.       const logo = this._commands
  559.         .filter(c => this._getHostname(c[3]) === domain)
  560.         .map(c => c[6])[0];
  561.       return logo || null;
  562.     }
  563.     _getHostname(url) {
  564.       const parser = document.createElement('a');
  565.       parser.href = url;
  566.       return parser.hostname.replace(/^www./, '');
  567.     }
  568.     _prepPath(url, path) {
  569.       return this._stripUrlPath(url) + '/' + path;
  570.     }
  571.     _prepSearch(url, searchPath, query) {
  572.       if (!searchPath) return url;
  573.       const baseUrl = this._stripUrlPath(url);
  574.       const urlQuery = encodeURIComponent(query);
  575.       searchPath = searchPath.replace('{}', urlQuery);
  576.       return baseUrl + searchPath;
  577.     }
  578.     _shiftAndTrim(arr, delimiter) {
  579.       arr.shift();
  580.       return arr.join(delimiter).trim();
  581.     }
  582.     _stripUrlPath(url) {
  583.       const parser = document.createElement('a');
  584.       parser.href = url;
  585.       return `${parser.protocol}//${parser.hostname}`;
  586.     }
  587.   }
  588.   class Form {
  589.     constructor(options) {
  590.       this._formEl = $.el('#search-form');
  591.       this._inputEl = $.el('#search-input');
  592.       this._logoEl = $.el('#search-logo');
  593.       this._colors = options.colors;
  594.       this._help = options.help;
  595.       this._queryParser = options.queryParser;
  596.       this._instantRedirect = options.instantRedirect;
  597.       this._newTab = options.newTab;
  598.       this._inputElVal = '';
  599.       this._bindMethods();
  600.       this._registerEvents();
  601.       this._loadQueryParam();
  602.     }
  603.     hide() {
  604.       $.bodyClassRemove('form'),
  605.       this._inputEl.value = '';
  606.       this._inputElVal = '';
  607.     }
  608.     show() {
  609.       $.bodyClassAdd('form');
  610.       this._inputEl.focus();
  611.     }
  612.     _bindMethods() {
  613.       this.hide = this.hide.bind(this);
  614.       this.show = this.show.bind(this);
  615.       this._clearPreview = this._clearPreview.bind(this);
  616.       this._handleKeydown = this._handleKeydown.bind(this);
  617.       this._handleInput = this._handleInput.bind(this);
  618.       this._previewValue = this._previewValue.bind(this);
  619.       this._submitForm = this._submitForm.bind(this);
  620.       this._submitWithValue = this._submitWithValue.bind(this);
  621.     }
  622.     _clearPreview() {
  623.       this._previewValue(this._inputElVal);
  624.       this._inputEl.focus();
  625.     }
  626.     _handleKeydown(e) {
  627.       if ($.isUp(e) || $.isDown(e) || $.isRemove(e)) return;
  628.       switch ($.key(e)) {
  629.         case 'alt':
  630.         case 'ctrl':
  631.         case 'enter':
  632.         case 'shift':
  633.         case 'super': return;
  634.         case 'escape': this.hide(); return;
  635.       }
  636.       this.show();
  637.     }
  638.     _handleInput() {
  639.       const newQuery = this._inputEl.value;
  640.       const isHelp = newQuery === '?';
  641.       const { isKey } = this._queryParser.parse(newQuery);
  642.       this._inputElVal = newQuery;
  643.       this._setBackgroundFromQuery(newQuery);
  644.       if (!newQuery || isHelp) this.hide();
  645.       if (isHelp) this._help.toggle();
  646.       if (this._instantRedirect && isKey) this._submitWithValue(newQuery);
  647.     }
  648.     _loadQueryParam() {
  649.       const q = new URLSearchParams(window.location.search).get('q');
  650.       if (q) this._submitWithValue(q);
  651.     }
  652.     _previewValue(value) {
  653.       this._inputEl.value = value;
  654.       this._setBackgroundFromQuery(value);
  655.     }
  656.     _redirect(redirect) {
  657.       if (this._newTab) window.open(redirect, '_blank');
  658.       else window.location.href = redirect;
  659.     }
  660.     _registerEvents() {
  661.       document.addEventListener('keydown', this._handleKeydown);
  662.       this._inputEl.addEventListener('input', this._handleInput);
  663.       this._formEl.addEventListener('submit', this._submitForm, false);
  664.     }
  665.     _setBackgroundFromQuery(query) {
  666.       if (!this._colors) return;
  667.       const { color, logo } = this._queryParser.parse(query);
  668.       this._formEl.style.backgroundColor = color;
  669.       if (logo) {
  670.         this._logoEl.src = logo;
  671.         // show
  672.         this._logoEl.style.display = 'block';
  673.       } else {
  674.         // hide
  675.         this._logoEl.style.display = 'none';
  676.       }
  677.     }   
  678.     _submitForm(e) {
  679.       if (e) e.preventDefault();
  680.       const query = this._inputEl.value;
  681.       if (this._suggester) this._suggester.success(query);
  682.       this.hide();
  683.       this._redirect(this._queryParser.parse(query).redirect);
  684.     }
  685.     _submitWithValue(value) {
  686.       this._inputEl.value = value;
  687.       this._submitForm();
  688.     }
  689.   }
  690. </script>
  691. <script>
  692.   const getHelp = () => {
  693.     return new Help({
  694.       commands: CONFIG.commands,
  695.       newTab: CONFIG.newTab,
  696.     });
  697.   };
  698.   const getQueryParser = () => {
  699.     return new QueryParser({
  700.       commands: CONFIG.commands,
  701.       pathDelimiter: CONFIG.pathDelimiter,
  702.       searchDelimiter: CONFIG.searchDelimiter,
  703.     });
  704.   };
  705.   const getForm = () => {
  706.     return new Form({
  707.       colors: CONFIG.colors,
  708.       help: getHelp(),
  709.       instantRedirect: CONFIG.instantRedirect,
  710.       newTab: CONFIG.newTab,
  711.       queryParser: getQueryParser(),
  712.       suggester: CONFIG.suggestions ? getSuggester() : false,
  713.     });
  714.   };
  715.   new Clock({
  716.     delimiter: CONFIG.clockDelimiter,
  717.     form: getForm(),
  718.   });
  719.   if (CONFIG.theme) {
  720.     const link = document.createElement('link');
  721.     link.href = CONFIG.theme;
  722.     link.type = 'text/css';
  723.     link.rel = 'stylesheet';
  724.     $.el('head').appendChild(link);
  725.   }
  726. </script>


---------------
« A l’origine de toute erreur attribuée à l’ordinateur, vous trouverez au moins deux erreurs humaines. Dont celle consistant à attribuer l’erreur à l’ordinateur. »
Reply

Marsh Posté le 14-07-2018 à 15:03:13   

Reply

Marsh Posté le 14-07-2018 à 22:12:29    

Bonjour,  
 
Quelque chose comme cela ?  
 

Code :
  1. _setTime() {
  2.       const date = new Date();
  3.       /* array to change num of the months to name of the months  */
  4.       var months = new Array();
  5.       months[0] = "January";
  6.       months[1] = "February";
  7.       months[2] = "March";
  8.       months[3] = "April";
  9.       months[4] = "May";
  10.       months[5] = "June";
  11.       months[6] = "July";
  12.       months[7] = "August";
  13.       months[8] = "September";
  14.       months[9] = "October";
  15.       months[10] = "November";
  16.       months[11] = "December";
  17.       const hours = this._pad(date.getHours());
  18.       const minutes = this._pad(date.getMinutes());
  19.       const year = this._pad(date.getYear());
  20.       const month = months[date.getMonth()];
  21.       const day = this._pad(date.getDate());
  22.       /* Layout of display */
  23.       this._el.innerHTML = hours + this._delimiter + minutes + "<br>" + day  + " " + month + " " + "20" + year;
  24.     }


 
https://image.ibb.co/mTTnnT/Sans_titre.jpg


Message édité par dabear14 le 14-07-2018 à 22:22:33
Reply

Marsh Posté le 14-07-2018 à 22:15:34    

Bonjour dabear14,
 
Merci de prendre du temps pour me répondre.
Alors oui quelque chose comme cela mais avec le jour de la semaine en plus et la date au dessus de l'heure.
 
Merci à toi encore une fois d'essayer de m'aider.
 
Au départ, je pensais intégrer ce genre de script ci-dessous mais je n'y suis pas arrivé sans mauvais affichage et je n'ai pas réussi à l'intégrer avec l'heure.
 

Code :
  1. <span id="date"></span>
  2.     <script type="text/javascript">window.onload = date('date');</script>
  3. ******************************************
  4. function date(id)
  5.     {
  6.             date = new Date;
  7.             annee = date.getFullYear();
  8.             moi = date.getMonth();
  9.             mois = new Array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
  10.             j = date.getDate();
  11.             jour = date.getDay();
  12.             jours = new Array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
  13.             h = date.getHours();
  14.             if(h<10)
  15.             {
  16.                     h = "0"+h;
  17.             }
  18.             m = date.getMinutes();
  19.             if(m<10)
  20.             {
  21.                     m = "0"+m;
  22.             }
  23.             s = date.getSeconds();
  24.             if(s<10)
  25.             {
  26.                     s = "0"+s;
  27.             }
  28.             resultat = 'Nous sommes le '+jours[jour]+' '+j+' '+mois[moi]+' '+annee;
  29.             document.getElementById(id).innerHTML = resultat;
  30.             setTimeout('date("'+id+'" );','1000');
  31.             return true;
  32.     }


---------------
« A l’origine de toute erreur attribuée à l’ordinateur, vous trouverez au moins deux erreurs humaines. Dont celle consistant à attribuer l’erreur à l’ordinateur. »
Reply

Marsh Posté le 14-07-2018 à 22:25:09    

Pour inverser la date et l'heure :  
this._el.innerHTML = day + " " + month + " " + "20" + year + "<br>" + hours + this._delimiter + minutes;

Reply

Marsh Posté le 14-07-2018 à 22:30:34    

Merci beaucoup ;)
 
Et pour les jours, tu saurais comment les mettre aussi stp car mes essais restent infructueux.
 
Encore mercidabear14 :)


---------------
« A l’origine de toute erreur attribuée à l’ordinateur, vous trouverez au moins deux erreurs humaines. Dont celle consistant à attribuer l’erreur à l’ordinateur. »
Reply

Marsh Posté le 14-07-2018 à 22:41:15    

https://image.ibb.co/j8LTu8/Sans_titre2.jpg
 
 

Code :
  1. _setTime() {
  2. const date = new Date();
  3. var months = new Array();
  4. months[0] = "Janvier";
  5. months[1] = "Février";
  6. months[2] = "Mars";
  7. months[3] = "Avril";
  8. months[4] = "Mai";
  9. months[5] = "Juin";
  10. months[6] = "Juillet";
  11. months[7] = "Aout";
  12. months[8] = "Septembre";
  13. months[9] = "Octobre";
  14. months[10] = "Novembre";
  15. months[11] = "Decembre";
  16. const hours = this._pad(date.getHours());
  17. const minutes = this._pad(date.getMinutes());
  18. const year = this._pad(date.getYear());
  19. const month = months[date.getMonth()];
  20. var days = new Array( "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche" );
  21. const day = days[date.getDay()-1];
  22. const ddate = date.getDate();
  23. this._el.innerHTML = day + " " + ddate + " " + month + " " + "20" + year + "<br>" + hours + this._delimiter + minutes;
  24. }


 
En français c'est mieux :D


Message édité par dabear14 le 14-07-2018 à 22:43:52
Reply

Marsh Posté le 14-07-2018 à 22:46:50    

Ca ne fonctionne pas chez moi le script. Il me transforme tout le contenu en un simple petite trait.


---------------
« A l’origine de toute erreur attribuée à l’ordinateur, vous trouverez au moins deux erreurs humaines. Dont celle consistant à attribuer l’erreur à l’ordinateur. »
Reply

Marsh Posté le 14-07-2018 à 23:00:29    

Je viens de check, en reprenant tout le code c'est OK de mon coté,  
N'as tu pas supprimé un point virgule ? Ou fais attention, j'ai changé des noms de variables entre les différents posts :/
 
Que dis l'inspecteur de ton navigateur ? (console)


Message édité par dabear14 le 14-07-2018 à 23:01:30
Reply

Marsh Posté le 14-07-2018 à 23:06:24    

En effet, en faisant une comparaison des deux codes, j'avais un ";" manquant.
 
Merci encore à toi de m'avoir aidé et rendu service. Tu as été un chef !
 
Merci dabear14 ;)


---------------
« A l’origine de toute erreur attribuée à l’ordinateur, vous trouverez au moins deux erreurs humaines. Dont celle consistant à attribuer l’erreur à l’ordinateur. »
Reply

Marsh Posté le 14-07-2018 à 23:21:21    

Avec plaisir :)  
 
 

Reply

Marsh Posté le 14-07-2018 à 23:21:21   

Reply

Marsh Posté le 15-07-2018 à 00:03:42    

Finalement, je reviens vers toi dabear14 parce qu'au passage d'une nouvelle journée à savoir il y a trois minutes, ça m'affiche ça maintenant. Même en rafraichissant la page et en changeant de navigateur, ça n'arrange pas le soucis.
Tu saurais d’où ça peut venir stp ?
 
https://i.imgur.com/tG7XxMM.png


---------------
« A l’origine de toute erreur attribuée à l’ordinateur, vous trouverez au moins deux erreurs humaines. Dont celle consistant à attribuer l’erreur à l’ordinateur. »
Reply

Marsh Posté le 15-07-2018 à 15:59:19    

Oui, en effet, les jours sont fait en partant de dimanche (qui est 0) et Samedi est le dernier (6)  
Donc en changeant l'ordre des jours dans le tableau et en otant le getDate() -1 cela devrait être corrigé (désolé j'ai un peu de mal à réfléchir, j'ai entamé la coupe du monde :D) :  

Code :
  1. var days = new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", );
  2. const day = days[date.getDay()];
  3. const ddate = date.getDate();
  4. this._el.innerHTML = day + " " + ddate + " " + month + " " + "20" + year + "<br>" + hours + this._delimiter + minutes;


il me semble cela corrigera le problème :)
 
 
A la votre et allez les bleus !

Reply

Marsh Posté le 15-07-2018 à 17:56:55    

Merci d'avoir regardé dabear14, apparemment, le soucis est réglé ;)
 
Merci beaucoup une nouvelle fois :)


---------------
« A l’origine de toute erreur attribuée à l’ordinateur, vous trouverez au moins deux erreurs humaines. Dont celle consistant à attribuer l’erreur à l’ordinateur. »
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed