mirror of
https://github.com/ntop/ntopng.git
synced 2026-04-29 07:29:32 +00:00
120 lines
2.8 KiB
JavaScript
120 lines
2.8 KiB
JavaScript
/*
|
|
* Fixes for Internet Explorer
|
|
*/
|
|
|
|
if (typeof(Math.sign) === "undefined") {
|
|
Math.sign = function(x) {
|
|
return (x >= 0) ? 1 : -1;
|
|
};
|
|
}
|
|
|
|
if (typeof(Math.trunc) === "undefined") {
|
|
Math.trunc = function(x) {
|
|
if (isNaN(x)) {
|
|
return NaN;
|
|
}
|
|
if(x > 0) {
|
|
return Math.floor(x);
|
|
}
|
|
return Math.ceil(x);
|
|
};
|
|
}
|
|
|
|
if (typeof(Math.log2) === "undefined") {
|
|
Math.log2 = function(x) {
|
|
return Math.log(x) * Math.LOG2E;
|
|
};
|
|
}
|
|
|
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill?v=example#Polyfill
|
|
if (!Array.prototype.fill) {
|
|
Object.defineProperty(Array.prototype, 'fill', {
|
|
value: function(value) {
|
|
|
|
// Steps 1-2.
|
|
if (this == null) {
|
|
throw new TypeError('this is null or not defined');
|
|
}
|
|
|
|
var O = Object(this);
|
|
|
|
// Steps 3-5.
|
|
var len = O.length >>> 0;
|
|
|
|
// Steps 6-7.
|
|
var start = arguments[1];
|
|
var relativeStart = start >> 0;
|
|
|
|
// Step 8.
|
|
var k = relativeStart < 0 ?
|
|
Math.max(len + relativeStart, 0) :
|
|
Math.min(relativeStart, len);
|
|
|
|
// Steps 9-10.
|
|
var end = arguments[2];
|
|
var relativeEnd = end === undefined ?
|
|
len : end >> 0;
|
|
|
|
// Step 11.
|
|
var final = relativeEnd < 0 ?
|
|
Math.max(len + relativeEnd, 0) :
|
|
Math.min(relativeEnd, len);
|
|
|
|
// Step 12.
|
|
while (k < final) {
|
|
O[k] = value;
|
|
k++;
|
|
}
|
|
|
|
// Step 13.
|
|
return O;
|
|
}
|
|
});
|
|
}
|
|
|
|
// https://tc39.github.io/ecma262/#sec-array.prototype.find
|
|
if (!Array.prototype.find) {
|
|
Object.defineProperty(Array.prototype, 'find', {
|
|
value: function(predicate) {
|
|
// 1. Let O be ? ToObject(this value).
|
|
if (this == null) {
|
|
throw new TypeError('"this" is null or not defined');
|
|
}
|
|
|
|
var o = Object(this);
|
|
|
|
// 2. Let len be ? ToLength(? Get(O, "length")).
|
|
var len = o.length >>> 0;
|
|
|
|
// 3. If IsCallable(predicate) is false, throw a TypeError exception.
|
|
if (typeof predicate !== 'function') {
|
|
throw new TypeError('predicate must be a function');
|
|
}
|
|
|
|
// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
|
|
var thisArg = arguments[1];
|
|
|
|
// 5. Let k be 0.
|
|
var k = 0;
|
|
|
|
// 6. Repeat, while k < len
|
|
while (k < len) {
|
|
// a. Let Pk be ! ToString(k).
|
|
// b. Let kValue be ? Get(O, Pk).
|
|
// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
|
|
// d. If testResult is true, return kValue.
|
|
var kValue = o[k];
|
|
if (predicate.call(thisArg, kValue, k, o)) {
|
|
return kValue;
|
|
}
|
|
// e. Increase k by 1.
|
|
k++;
|
|
}
|
|
|
|
// 7. Return undefined.
|
|
return undefined;
|
|
},
|
|
configurable: true,
|
|
writable: true
|
|
});
|
|
}
|