From c842a68a1b408f06414ac699a088ea9487c0c578 Mon Sep 17 00:00:00 2001 From: Artem Baskal Date: Fri, 5 Jun 2020 13:28:13 +0300 Subject: [PATCH] - client: Fix beyond 24 hour time format for en locale: Merge pull request #651 in DNS/adguard-home from fix/1766 to master Close #1766 Squashed commit of the following: commit 691aa0e30e8435c81118cb5b8784a6902ed10f08 Merge: 67d62fa9 4a81abb9 Author: ArtemBaskal Date: Fri Jun 5 13:17:46 2020 +0300 Merge branch 'master' into fix/1766 commit 67d62fa9f8c9e1e7c7db714b85aa19e6b897a2d0 Author: ArtemBaskal Date: Fri Jun 5 11:53:47 2020 +0300 Fix jsdocs of helpers commit 459e3cf8e185033d7e20f0b1d24c6e0146310017 Author: ArtemBaskal Date: Thu Jun 4 20:45:17 2020 +0300 - client: Fix beyond 24 hour time format for en locale --- client/src/helpers/helpers.js | 43 +++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/client/src/helpers/helpers.js b/client/src/helpers/helpers.js index a6bd8495..be8e884e 100644 --- a/client/src/helpers/helpers.js +++ b/client/src/helpers/helpers.js @@ -30,8 +30,8 @@ import { } from './constants'; /** - * @param string The time to format - * @returns string Returns the time in the format HH:mm:ss + * @param time {string} The time to format + * @returns {string} Returns the time in the format HH:mm:ss */ export const formatTime = (time) => { const parsedTime = dateParse(time); @@ -39,23 +39,30 @@ export const formatTime = (time) => { }; /** - * @param string The date to format - * @returns string Returns the date and time in the format DD/MM/YYYY, HH:mm + * @param dateTime {string} The date to format + * @param [options] {object} Date.prototype.toLocaleString([locales[, options]]) options argument + * @returns {string} Returns the date and time in the specified format */ export const formatDateTime = (dateTime, options = DEFAULT_DATE_FORMAT_OPTIONS) => { - const currentLanguage = i18n.languages[0] || DEFAULT_LANGUAGE; - const parsedTime = dateParse(dateTime); + const { language } = navigator; + const currentLanguage = (language.slice(0, 2) === 'en' || !language) ? 'en-GB' : language; + + const parsedTime = new Date(dateTime); return parsedTime.toLocaleString(currentLanguage, options); }; +/** + * @param dateTime {string} The date to format + * @returns {string} Returns the date and time in the format with the full month name + */ export const formatDetailedDateTime = (dateTime) => formatDateTime( dateTime, DETAILED_DATE_FORMAT_OPTIONS, ); /** - * @param string - * @returns boolean + * @param date {string} + * @returns {boolean} */ export const isToday = (date) => isSameDay(new Date(date), new Date()); @@ -307,15 +314,12 @@ export const normalizeTextarea = (text) => { * @returns {Object.} normalizedTopClients.auto - auto clients * @returns {Object.} normalizedTopClients.configured - configured clients */ - export const normalizeTopClients = (topClients) => topClients.reduce( - (nameToCountMap, clientObj) => { + (acc, clientObj) => { const { name, count, info: { name: infoName } } = clientObj; - // eslint-disable-next-line no-param-reassign - nameToCountMap.auto[name] = count; - // eslint-disable-next-line no-param-reassign - nameToCountMap.configured[infoName] = count; - return nameToCountMap; + acc.auto[name] = count; + acc.configured[infoName] = count; + return acc; }, { auto: {}, configured: {}, @@ -483,8 +487,8 @@ export const getCurrentFilter = (url, filters) => { }; /** - * @param {object} initialValues - * @param {object} values + * @param initialValues {object} + * @param values {object} * @returns {object} Returns different values of objects */ export const getObjDiff = (initialValues, values) => Object.entries(values) @@ -496,8 +500,8 @@ export const getObjDiff = (initialValues, values) => Object.entries(values) }, {}); /** - * @param number Number to format - * @returns string Returns a string with a language-sensitive representation of this number + * @param num {number} to format + * @returns {string} Returns a string with a language-sensitive representation of this number */ export const formatNumber = (num) => { const currentLanguage = i18n.languages[0] || DEFAULT_LANGUAGE; @@ -508,7 +512,6 @@ export const normalizeMultiline = (multiline) => `${normalizeTextarea(multiline) .map((line) => line.trim()) .join('\n')}\n`; - /** * @param parsedIp {object} ipaddr.js IPv4 or IPv6 object * @param cidr {array} ipaddr.js CIDR array