diff --git a/src/Network/Network.js b/src/Network/Network.js index 6fe8ee2..2836ecc 100644 --- a/src/Network/Network.js +++ b/src/Network/Network.js @@ -2,7 +2,7 @@ import Tool from '../DevTools/Tool'; import XhrRequest from './XhrRequest'; import FetchRequest from './FetchRequest'; import Settings from '../Settings/Settings'; -import {evalCss, isNative, defaults, now, extend, isEmpty, $} from '../lib/util'; +import {evalCss, isNative, defaults, now, extend, isEmpty, $, ms} from '../lib/util'; export default class Network extends Tool { @@ -140,7 +140,7 @@ export default class Network extends Tool extend(target, data); target.time = target.time - target.startTime; - target.displayTime = formatTime(target.time); + target.displayTime = ms(target.time); if (target.done && (target.status < 200 || target >= 300)) target.hasErr = true; @@ -226,12 +226,3 @@ export default class Network extends Tool this._$el.html(html); } } - -function formatTime(time) -{ - time = Math.round(time); - - if (time < 1000) return time + 'ms'; - - return (time / 1000).toFixed(1) + 's'; -} diff --git a/src/lib/util.js b/src/lib/util.js index df38db2..30d69ec 100644 --- a/src/lib/util.js +++ b/src/lib/util.js @@ -5449,6 +5449,265 @@ export var meta = _.meta = (function () return exports; })(); +/* ------------------------------ toNum ------------------------------ */ + +export var toNum = _.toNum = (function (exports) +{ + /* Convert value to a number. + * + * |Name |Type |Desc | + * |------|------|----------------| + * |val |* |Value to process| + * |return|number|Resulted number | + * + * ```javascript + * toNum('5'); // -> 5 + * ``` + */ + + /* module + * env: all + * test: all + */ + + /* dependencies + * isNum isObj isFn isStr + */ + + exports = function (val) + { + if (isNum(val)) return val; + + if (isObj(val)) + { + var temp = isFn(val.valueOf) ? val.valueOf() : val; + val = isObj(temp) ? (temp + '') : temp; + } + + if (!isStr(val)) return val === 0 ? val : +val; + + return +val; + }; + + return exports; +})({}); + +/* ------------------------------ ms ------------------------------ */ + +export var ms = _.ms = (function () +{ + /* Convert time string formats to milliseconds. + * + * Turn time string into milliseconds. + * + * |Name |Type |Desc | + * |------|------|-------------| + * |str |string|String format| + * |return|number|Milliseconds | + * + * Turn milliseconds into time string. + * + * |Name |Type |Desc | + * |------|------|-------------| + * |num |number|Milliseconds | + * |return|string|String format| + * + * ```javascript + * ms('1s'); // -> 1000 + * ms('1m'); // -> 60000 + * ms('1.5h'); // -> 5400000 + * ms('1d'); // -> 86400000 + * ms('1y'); // -> 31557600000 + * ms('1000'); // -> 1000 + * ms(1500); // -> '1.5s' + * ms(60000); // -> '1m' + * ``` + */ + + /* module + * env: all + * test: all + */ + + /* dependencies + * toNum isStr + */ + + function exports(str) + { + if (isStr(str)) + { + var match = str.match(regStrTime); + + if (!match) return 0; + + return toNum(match[1]) * factor[match[2] || 'ms']; + } else + { + var num = str, + suffix = 'ms'; + + for (var i = 0, len = suffixList.length; i < len; i++) + { + if (num >= factor[suffixList[i]]) + { + suffix = suffixList[i]; + break; + } + } + + return +((num / factor[suffix]).toFixed(2)) + suffix; + } + } + + var factor = { + ms: 1, + s: 1000 + }; + factor.m = factor.s * 60; + factor.h = factor.m * 60; + factor.d = factor.h * 24; + factor.y = factor.d * 365.25; + + var suffixList = ['y', 'd', 'h', 'm', 's']; + + var regStrTime = /^((?:\d+)?\.?\d+) *(s|m|h|d|y)?$/; + + return exports; +})(); + +/* ------------------------------ toInt ------------------------------ */ + +export var toInt = _.toInt = (function () +{ + /* Convert value to an integer. + * + * |Name |Type |Desc | + * |------|------|-----------------| + * |val |* |Value to convert | + * |return|number|Converted integer| + * + * ```javascript + * toInt(1.1); // -> 1 + * toInt(undefined); // -> 0 + * ``` + */ + + /* module + * env: all + * test: all + */ + + /* dependencies + * toNum + */ + + function exports(val) + { + if (!val) return val === 0 ? val : 0; + + val = toNum(val); + + return val - val % 1; + } + + return exports; +})(); + +/* ------------------------------ detectBrowser ------------------------------ */ + +export var detectBrowser = _.detectBrowser = (function () +{ + /* Detect browser info using ua. + * + * |Name |Type |Desc | + * |------------------------|------|----------------------------------| + * |[ua=navigator.userAgent]|string|Browser userAgent | + * |return |object|Object containing name and version| + * + * Browsers supported: ie, chrome, edge, firefox, opera, safari, ios(mobile safari), android(android browser) + * + * ```javascript + * var browser = detectBrowser(); + * if (browser.name === 'ie' && browser.version < 9) + * { + * // Do something about old IE... + * } + * ``` + */ + + /* module + * env: all + * test: all + */ + + /* dependencies + * isBrowser toInt keys + */ + + function exports(ua) + { + ua = ua || (isBrowser ? navigator.userAgent : ''); + ua = ua.toLowerCase(); + + var ieVer = getVer(ua, 'msie '); + + if (ieVer) return { + version: ieVer, + name: 'ie' + }; + + if (regIe11.test(ua)) return { + version: 11, + name: 'ie' + }; + + for (var i = 0, len = browsers.length; i < len; i++) + { + var name = browsers[i], + match = ua.match(regBrowsers[name]); + + if (match == null) continue; + + var version = toInt(match[1].split('.')[0]); + + if (name === 'opera') version = getVer(ua, 'version/') || version; + + return { + name: name, + version: version + }; + } + + return { + name: 'unknown', + version: -1 + }; + } + + var regBrowsers = { + 'edge': /edge\/([0-9._]+)/, + 'firefox': /firefox\/([0-9.]+)(?:\s|$)/, + 'opera': /opera\/([0-9.]+)(?:\s|$)/, + 'android': /android\s([0-9.]+)/, + 'ios': /version\/([0-9._]+).*mobile.*safari.*/, + 'safari': /version\/([0-9._]+).*safari/, + 'chrome': /(?!chrom.*opr)chrom(?:e|ium)\/([0-9.]+)(:?\s|$)/ + }; + + var regIe11 = /trident\/7\./, + browsers = keys(regBrowsers); + + function getVer(ua, mark) + { + var idx = ua.indexOf(mark); + + if (idx > -1) return toInt(ua.substring(idx + mark.length, ua.indexOf('.', idx))); + } + + return exports; +})(); + /* ------------------------------ nextTick ------------------------------ */ export var nextTick = _.nextTick = (function (exports) @@ -6217,49 +6476,6 @@ export var perfNow = _.perfNow = (function (exports) return exports; })({}); -/* ------------------------------ toNum ------------------------------ */ - -export var toNum = _.toNum = (function (exports) -{ - /* Convert value to a number. - * - * |Name |Type |Desc | - * |------|------|----------------| - * |val |* |Value to process| - * |return|number|Resulted number | - * - * ```javascript - * toNum('5'); // -> 5 - * ``` - */ - - /* module - * env: all - * test: all - */ - - /* dependencies - * isNum isObj isFn isStr - */ - - exports = function (val) - { - if (isNum(val)) return val; - - if (isObj(val)) - { - var temp = isFn(val.valueOf) ? val.valueOf() : val; - val = isObj(temp) ? (temp + '') : temp; - } - - if (!isStr(val)) return val === 0 ? val : +val; - - return +val; - }; - - return exports; -})({}); - /* ------------------------------ pxToNum ------------------------------ */ export var pxToNum = _.pxToNum = (function () @@ -6279,138 +6495,6 @@ export var pxToNum = _.pxToNum = (function () return exports; })(); -/* ------------------------------ toInt ------------------------------ */ - -export var toInt = _.toInt = (function () -{ - /* Convert value to an integer. - * - * |Name |Type |Desc | - * |------|------|-----------------| - * |val |* |Value to convert | - * |return|number|Converted integer| - * - * ```javascript - * toInt(1.1); // -> 1 - * toInt(undefined); // -> 0 - * ``` - */ - - /* module - * env: all - * test: all - */ - - /* dependencies - * toNum - */ - - function exports(val) - { - if (!val) return val === 0 ? val : 0; - - val = toNum(val); - - return val - val % 1; - } - - return exports; -})(); - -/* ------------------------------ detectBrowser ------------------------------ */ - -export var detectBrowser = _.detectBrowser = (function () -{ - /* Detect browser info using ua. - * - * |Name |Type |Desc | - * |------------------------|------|----------------------------------| - * |[ua=navigator.userAgent]|string|Browser userAgent | - * |return |object|Object containing name and version| - * - * Browsers supported: ie, chrome, edge, firefox, opera, safari, ios(mobile safari), android(android browser) - * - * ```javascript - * var browser = detectBrowser(); - * if (browser.name === 'ie' && browser.version < 9) - * { - * // Do something about old IE... - * } - * ``` - */ - - /* module - * env: all - * test: all - */ - - /* dependencies - * isBrowser toInt keys - */ - - function exports(ua) - { - ua = ua || (isBrowser ? navigator.userAgent : ''); - ua = ua.toLowerCase(); - - var ieVer = getVer(ua, 'msie '); - - if (ieVer) return { - version: ieVer, - name: 'ie' - }; - - if (regIe11.test(ua)) return { - version: 11, - name: 'ie' - }; - - for (var i = 0, len = browsers.length; i < len; i++) - { - var name = browsers[i], - match = ua.match(regBrowsers[name]); - - if (match == null) continue; - - var version = toInt(match[1].split('.')[0]); - - if (name === 'opera') version = getVer(ua, 'version/') || version; - - return { - name: name, - version: version - }; - } - - return { - name: 'unknown', - version: -1 - }; - } - - var regBrowsers = { - 'edge': /edge\/([0-9._]+)/, - 'firefox': /firefox\/([0-9.]+)(?:\s|$)/, - 'opera': /opera\/([0-9.]+)(?:\s|$)/, - 'android': /android\s([0-9.]+)/, - 'ios': /version\/([0-9._]+).*mobile.*safari.*/, - 'safari': /version\/([0-9._]+).*safari/, - 'chrome': /(?!chrom.*opr)chrom(?:e|ium)\/([0-9.]+)(:?\s|$)/ - }; - - var regIe11 = /trident\/7\./, - browsers = keys(regBrowsers); - - function getVer(ua, mark) - { - var idx = ua.indexOf(mark); - - if (idx > -1) return toInt(ua.substring(idx + mark.length, ua.indexOf('.', idx))); - } - - return exports; -})(); - /* ------------------------------ rmCookie ------------------------------ */ export var rmCookie = _.rmCookie = (function ()