]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Enable esnext and fix all lint errors (#7094)
authorJukka Kurkela <jukka.kurkela@gmail.com>
Thu, 13 Feb 2020 23:41:49 +0000 (01:41 +0200)
committerGitHub <noreply@github.com>
Thu, 13 Feb 2020 23:41:49 +0000 (18:41 -0500)
* enable esnext and fix all lint errors

* Review update

* Missed some

* Some cleanup still

* Remove leftover eslint disable

66 files changed:
.eslintrc.yml
package-lock.json
package.json
samples/.eslintrc.yml
src/adapters/adapter.moment.js
src/adapters/index.js
src/controllers/controller.bar.js
src/controllers/controller.bubble.js
src/controllers/controller.doughnut.js
src/controllers/controller.horizontalBar.js
src/controllers/controller.line.js
src/controllers/controller.pie.js
src/controllers/controller.polarArea.js
src/controllers/controller.radar.js
src/controllers/controller.scatter.js
src/controllers/index.js
src/core/core.adapters.js
src/core/core.animation.js
src/core/core.animations.js
src/core/core.animator.js
src/core/core.controller.js
src/core/core.datasetController.js
src/core/core.defaults.js
src/core/core.element.js
src/core/core.interaction.js
src/core/core.layouts.js
src/core/core.plugins.js
src/core/core.scale.js
src/core/core.scaleService.js
src/core/core.ticks.js
src/elements/element.arc.js
src/elements/element.line.js
src/elements/element.point.js
src/elements/element.rectangle.js
src/elements/index.js
src/helpers/helpers.canvas.js
src/helpers/helpers.collection.js
src/helpers/helpers.core.js
src/helpers/helpers.curve.js
src/helpers/helpers.dom.js
src/helpers/helpers.easing.js
src/helpers/helpers.interpolation.js
src/helpers/helpers.math.js
src/helpers/helpers.options.js
src/helpers/helpers.rtl.js
src/helpers/helpers.segment.js
src/helpers/index.js
src/index.js
src/platform/platform.base.js
src/platform/platform.basic.js
src/platform/platform.dom.js
src/platform/platform.js
src/platform/platforms.js
src/plugins/index.js
src/plugins/plugin.filler.js
src/plugins/plugin.legend.js
src/plugins/plugin.title.js
src/plugins/plugin.tooltip.js
src/scales/index.js
src/scales/scale.category.js
src/scales/scale.linear.js
src/scales/scale.linearbase.js
src/scales/scale.logarithmic.js
src/scales/scale.radialLinear.js
src/scales/scale.time.js
test/.eslintrc.yml

index 2a65bd04291e761c1d420739d02cd4d576bafdd1..7ddb21525ce07081bb8644a5bd2f87f1bed5dd59 100644 (file)
@@ -1,12 +1,24 @@
-extends: chartjs
+extends:
+  - chartjs
+  - esnext
 
 env:
   es6: true
   browser: true
   node: true
 
+parser: babel-eslint
+
 parserOptions:
-  ecmaVersion: 2018
-  sourceType: 'module'
+  ecmaVersion: 7
+  sourceType: module
+  ecmaFeatures:
+    impliedStrict: true
+    modules: true
+    experimentalObjectRestSpread: true
 
 plugins: ['html']
+
+rules:
+  class-methods-use-this: 0
+  no-empty-function: 0
index 4009510fd738753fb9f74783643b5646266f8871..46cad3fa8f79b511954b66a5200bf0eec6b44535 100644 (file)
       "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
       "dev": true
     },
+    "array-includes": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz",
+      "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.0",
+        "is-string": "^1.0.5"
+      }
+    },
     "array-initial": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz",
       "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
       "dev": true
     },
+    "array.prototype.flat": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz",
+      "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.0-next.1"
+      }
+    },
     "arraybuffer.slice": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
         }
       }
     },
+    "babel-eslint": {
+      "version": "10.0.3",
+      "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz",
+      "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "@babel/parser": "^7.0.0",
+        "@babel/traverse": "^7.0.0",
+        "@babel/types": "^7.0.0",
+        "eslint-visitor-keys": "^1.0.0",
+        "resolve": "^1.12.0"
+      }
+    },
     "babel-generator": {
       "version": "6.26.1",
       "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
         }
       }
     },
+    "contains-path": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+      "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+      "dev": true
+    },
     "content-type": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
         "is-arrayish": "^0.2.1"
       }
     },
+    "es-abstract": {
+      "version": "1.17.4",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz",
+      "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==",
+      "dev": true,
+      "requires": {
+        "es-to-primitive": "^1.2.1",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1",
+        "is-callable": "^1.1.5",
+        "is-regex": "^1.0.5",
+        "object-inspect": "^1.7.0",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.0",
+        "string.prototype.trimleft": "^2.1.1",
+        "string.prototype.trimright": "^2.1.1"
+      },
+      "dependencies": {
+        "has-symbols": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
+          "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
+          "dev": true
+        }
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+      "dev": true,
+      "requires": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      }
+    },
     "es5-ext": {
       "version": "0.10.52",
       "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.52.tgz",
       "integrity": "sha512-9NbZlmn5clHbzFc+EK7zp7KhgU2vhcbJNb4OrSrm9nMOMTs7yVdzP00jqqfs7dhDkhT4CfVxQlV1DMfjhGBLIA==",
       "dev": true
     },
+    "eslint-config-esnext": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/eslint-config-esnext/-/eslint-config-esnext-4.0.0.tgz",
+      "integrity": "sha512-UOovbox5WIgG9VSJPxtCsfwOkK96yNp8hBBi+WZ66OTr5zc7PxJCkE4MS7vON2Z1md5PNhwFHVzE9Uu+owBg1Q==",
+      "dev": true,
+      "requires": {
+        "babel-eslint": "^10.0.1",
+        "eslint": "^5.6.0",
+        "eslint-plugin-babel": "^5.2.1",
+        "eslint-plugin-import": "^2.14.0"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "6.4.0",
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz",
+          "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==",
+          "dev": true
+        },
+        "ansi-escapes": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+          "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+          "dev": true
+        },
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "cli-cursor": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+          "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+          "dev": true,
+          "requires": {
+            "restore-cursor": "^2.0.0"
+          }
+        },
+        "eslint": {
+          "version": "5.16.0",
+          "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz",
+          "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "ajv": "^6.9.1",
+            "chalk": "^2.1.0",
+            "cross-spawn": "^6.0.5",
+            "debug": "^4.0.1",
+            "doctrine": "^3.0.0",
+            "eslint-scope": "^4.0.3",
+            "eslint-utils": "^1.3.1",
+            "eslint-visitor-keys": "^1.0.0",
+            "espree": "^5.0.1",
+            "esquery": "^1.0.1",
+            "esutils": "^2.0.2",
+            "file-entry-cache": "^5.0.1",
+            "functional-red-black-tree": "^1.0.1",
+            "glob": "^7.1.2",
+            "globals": "^11.7.0",
+            "ignore": "^4.0.6",
+            "import-fresh": "^3.0.0",
+            "imurmurhash": "^0.1.4",
+            "inquirer": "^6.2.2",
+            "js-yaml": "^3.13.0",
+            "json-stable-stringify-without-jsonify": "^1.0.1",
+            "levn": "^0.3.0",
+            "lodash": "^4.17.11",
+            "minimatch": "^3.0.4",
+            "mkdirp": "^0.5.1",
+            "natural-compare": "^1.4.0",
+            "optionator": "^0.8.2",
+            "path-is-inside": "^1.0.2",
+            "progress": "^2.0.0",
+            "regexpp": "^2.0.1",
+            "semver": "^5.5.1",
+            "strip-ansi": "^4.0.0",
+            "strip-json-comments": "^2.0.1",
+            "table": "^5.2.3",
+            "text-table": "^0.2.0"
+          }
+        },
+        "eslint-scope": {
+          "version": "4.0.3",
+          "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+          "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+          "dev": true,
+          "requires": {
+            "esrecurse": "^4.1.0",
+            "estraverse": "^4.1.1"
+          }
+        },
+        "espree": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz",
+          "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==",
+          "dev": true,
+          "requires": {
+            "acorn": "^6.0.7",
+            "acorn-jsx": "^5.0.0",
+            "eslint-visitor-keys": "^1.0.0"
+          }
+        },
+        "figures": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+          "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+          "dev": true,
+          "requires": {
+            "escape-string-regexp": "^1.0.5"
+          }
+        },
+        "inquirer": {
+          "version": "6.5.2",
+          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
+          "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
+          "dev": true,
+          "requires": {
+            "ansi-escapes": "^3.2.0",
+            "chalk": "^2.4.2",
+            "cli-cursor": "^2.1.0",
+            "cli-width": "^2.0.0",
+            "external-editor": "^3.0.3",
+            "figures": "^2.0.0",
+            "lodash": "^4.17.12",
+            "mute-stream": "0.0.7",
+            "run-async": "^2.2.0",
+            "rxjs": "^6.4.0",
+            "string-width": "^2.1.0",
+            "strip-ansi": "^5.1.0",
+            "through": "^2.3.6"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0",
+              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+              "dev": true
+            },
+            "strip-ansi": {
+              "version": "5.2.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+              "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "mimic-fn": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+          "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+          "dev": true
+        },
+        "mute-stream": {
+          "version": "0.0.7",
+          "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+          "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+          "dev": true
+        },
+        "onetime": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+          "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+          "dev": true,
+          "requires": {
+            "mimic-fn": "^1.0.0"
+          }
+        },
+        "restore-cursor": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+          "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+          "dev": true,
+          "requires": {
+            "onetime": "^2.0.0",
+            "signal-exit": "^3.0.2"
+          }
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        },
+        "strip-json-comments": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+          "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+          "dev": true
+        }
+      }
+    },
+    "eslint-import-resolver-node": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz",
+      "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==",
+      "dev": true,
+      "requires": {
+        "debug": "^2.6.9",
+        "resolve": "^1.13.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        },
+        "resolve": {
+          "version": "1.15.1",
+          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
+          "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
+          "dev": true,
+          "requires": {
+            "path-parse": "^1.0.6"
+          }
+        }
+      }
+    },
+    "eslint-module-utils": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz",
+      "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==",
+      "dev": true,
+      "requires": {
+        "debug": "^2.6.9",
+        "pkg-dir": "^2.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "eslint-plugin-babel": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-babel/-/eslint-plugin-babel-5.3.0.tgz",
+      "integrity": "sha512-HPuNzSPE75O+SnxHIafbW5QB45r2w78fxqwK3HmjqIUoPfPzVrq6rD+CINU3yzoDSzEhUkX07VUphbF73Lth/w==",
+      "dev": true,
+      "requires": {
+        "eslint-rule-composer": "^0.3.0"
+      }
+    },
     "eslint-plugin-html": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.0.0.tgz",
         "htmlparser2": "^3.10.1"
       }
     },
+    "eslint-plugin-import": {
+      "version": "2.20.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz",
+      "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==",
+      "dev": true,
+      "requires": {
+        "array-includes": "^3.0.3",
+        "array.prototype.flat": "^1.2.1",
+        "contains-path": "^0.1.0",
+        "debug": "^2.6.9",
+        "doctrine": "1.5.0",
+        "eslint-import-resolver-node": "^0.3.2",
+        "eslint-module-utils": "^2.4.1",
+        "has": "^1.0.3",
+        "minimatch": "^3.0.4",
+        "object.values": "^1.1.0",
+        "read-pkg-up": "^2.0.0",
+        "resolve": "^1.12.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "doctrine": {
+          "version": "1.5.0",
+          "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+          "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "isarray": "^1.0.0"
+          }
+        },
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "load-json-file": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+          "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "parse-json": "^2.2.0",
+            "pify": "^2.0.0",
+            "strip-bom": "^3.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "dev": true
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "dev": true
+        },
+        "path-type": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+          "dev": true,
+          "requires": {
+            "pify": "^2.0.0"
+          }
+        },
+        "read-pkg": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+          "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "^2.0.0",
+            "normalize-package-data": "^2.3.2",
+            "path-type": "^2.0.0"
+          }
+        },
+        "read-pkg-up": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+          "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+          "dev": true,
+          "requires": {
+            "find-up": "^2.0.0",
+            "read-pkg": "^2.0.0"
+          }
+        },
+        "strip-bom": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+          "dev": true
+        }
+      }
+    },
+    "eslint-rule-composer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz",
+      "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==",
+      "dev": true
+    },
     "eslint-scope": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
         "har-schema": "^2.0.0"
       }
     },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
     "has-ansi": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
       "dev": true
     },
+    "is-callable": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
+      "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
+      "dev": true
+    },
     "is-data-descriptor": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
         }
       }
     },
+    "is-date-object": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
+      "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
+      "dev": true
+    },
     "is-descriptor": {
       "version": "0.1.6",
       "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
         "@types/estree": "0.0.39"
       }
     },
+    "is-regex": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
+      "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.3"
+      }
+    },
     "is-relative": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
         "is-unc-path": "^1.0.0"
       }
     },
+    "is-string": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
+      "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
+      "dev": true
+    },
+    "is-symbol": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
+      "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+      "dev": true,
+      "requires": {
+        "has-symbols": "^1.0.1"
+      },
+      "dependencies": {
+        "has-symbols": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
+          "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
+          "dev": true
+        }
+      }
+    },
     "is-typedarray": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
         }
       }
     },
+    "object-inspect": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
+      "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
+      "dev": true
+    },
     "object-keys": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
         "make-iterator": "^1.0.0"
       }
     },
+    "object.values": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
+      "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.0-next.1",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3"
+      }
+    },
     "on-finished": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
       "dev": true
     },
+    "path-is-inside": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+      "dev": true
+    },
     "path-key": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
         "pngjs": "^3.4.0"
       }
     },
+    "pkg-dir": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+      "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+      "dev": true,
+      "requires": {
+        "find-up": "^2.1.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "dev": true
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "dev": true
+        }
+      }
+    },
     "plexer": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/plexer/-/plexer-1.0.1.tgz",
         }
       }
     },
+    "string.prototype.trimleft": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz",
+      "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "function-bind": "^1.1.1"
+      }
+    },
+    "string.prototype.trimright": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz",
+      "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "function-bind": "^1.1.1"
+      }
+    },
     "string_decoder": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
index 8664404973ff08fb089c7e48cf2baa9cf19dc0ff..edcd63255ba4870b46a895f480845d5f884e70f5 100644 (file)
@@ -37,6 +37,7 @@
     "coveralls": "^3.0.9",
     "eslint": "^6.8.0",
     "eslint-config-chartjs": "^0.2.0",
+    "eslint-config-esnext": "^4.0.0",
     "eslint-plugin-html": "^6.0.0",
     "gitbook-cli": "^2.3.2",
     "gulp": "^4.0.0",
index 9573adbcde6b61f78864a0716efda3dc1bec5e65..5a16375624fd7e6c009c76afd83f1e56705845b3 100644 (file)
@@ -7,3 +7,8 @@ globals:
 
 rules:
   no-new: 0
+  no-var: 0
+  object-shorthand: 0
+  prefer-arrow-callback: 0
+  no-invalid-this: 0
+  no-unneeded-ternary: 0
index 56c5368e28c3c7dbd998e6c2cc790c73062d19f7..5d37ea4d7132498c6eacd26ed0e4795f0b56dc26 100644 (file)
@@ -1,7 +1,5 @@
 // TODO v3 - make this adapter external (chartjs-adapter-moment)
 
-'use strict';
-
 import moment from 'moment';
 import adapters from '../core/core.adapters';
 
@@ -21,11 +19,11 @@ const FORMATS = {
 adapters._date.override(typeof moment === 'function' ? {
        _id: 'moment', // DEBUG ONLY
 
-       formats: function() {
+       formats() {
                return FORMATS;
        },
 
-       parse: function(value, format) {
+       parse(value, format) {
                if (typeof value === 'string' && typeof format === 'string') {
                        value = moment(value, format);
                } else if (!(value instanceof moment)) {
@@ -34,19 +32,19 @@ adapters._date.override(typeof moment === 'function' ? {
                return value.isValid() ? value.valueOf() : null;
        },
 
-       format: function(time, format) {
+       format(time, format) {
                return moment(time).format(format);
        },
 
-       add: function(time, amount, unit) {
+       add(time, amount, unit) {
                return moment(time).add(amount, unit).valueOf();
        },
 
-       diff: function(max, min, unit) {
+       diff(max, min, unit) {
                return moment(max).diff(moment(min), unit);
        },
 
-       startOf: function(time, unit, weekday) {
+       startOf(time, unit, weekday) {
                time = moment(time);
                if (unit === 'isoWeek') {
                        return time.isoWeekday(weekday).valueOf();
@@ -54,7 +52,7 @@ adapters._date.override(typeof moment === 'function' ? {
                return time.startOf(unit).valueOf();
        },
 
-       endOf: function(time, unit) {
+       endOf(time, unit) {
                return moment(time).endOf(unit).valueOf();
        }
 } : {});
index 53dc150ae7c7097a8bfbc2abcaaa57de5d335ee4..e6c67bc74929f3577325787af480990007d34f47 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 // -----------------------------------------------------------------------------
 // IMPORTANT: do NOT submit new adapters to this repository, instead
 // create an external library named `chartjs-adapter-{lib-name}`
index a310902ec471df85fddd0e6e7b468332e49f38cd..6edea91f0526c7b7b11a4cb811b08f2e1ebd786a 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import DatasetController from '../core/core.datasetController';
 import defaults from '../core/core.defaults';
 import Rectangle from '../elements/element.rectangle';
@@ -43,8 +41,8 @@ defaults.set('bar', {
  * @private
  */
 function computeMinSampleSize(scale, pixels) {
-       var min = scale._length;
-       var prev, curr, i, ilen;
+       let min = scale._length;
+       let prev, curr, i, ilen;
 
        for (i = 1, ilen = pixels.length; i < ilen; ++i) {
                min = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));
@@ -66,13 +64,13 @@ function computeMinSampleSize(scale, pixels) {
  * @private
  */
 function computeFitCategoryTraits(index, ruler, options) {
-       var thickness = options.barThickness;
-       var count = ruler.stackCount;
-       var curr = ruler.pixels[index];
-       var min = isNullOrUndef(thickness)
+       const thickness = options.barThickness;
+       const count = ruler.stackCount;
+       const curr = ruler.pixels[index];
+       const min = isNullOrUndef(thickness)
                ? computeMinSampleSize(ruler.scale, ruler.pixels)
                : -1;
-       var size, ratio;
+       let size, ratio;
 
        if (isNullOrUndef(thickness)) {
                size = min * options.categoryPercentage;
@@ -87,7 +85,7 @@ function computeFitCategoryTraits(index, ruler, options) {
 
        return {
                chunk: size / count,
-               ratio: ratio,
+               ratio,
                start: curr - (size / 2)
        };
 }
@@ -99,12 +97,11 @@ function computeFitCategoryTraits(index, ruler, options) {
  * @private
  */
 function computeFlexCategoryTraits(index, ruler, options) {
-       var pixels = ruler.pixels;
-       var curr = pixels[index];
-       var prev = index > 0 ? pixels[index - 1] : null;
-       var next = index < pixels.length - 1 ? pixels[index + 1] : null;
-       var percent = options.categoryPercentage;
-       var start, size;
+       const pixels = ruler.pixels;
+       const curr = pixels[index];
+       let prev = index > 0 ? pixels[index - 1] : null;
+       let next = index < pixels.length - 1 ? pixels[index + 1] : null;
+       const percent = options.categoryPercentage;
 
        if (prev === null) {
                // first data: its size is double based on the next point or,
@@ -117,23 +114,23 @@ function computeFlexCategoryTraits(index, ruler, options) {
                next = curr + curr - prev;
        }
 
-       start = curr - (curr - Math.min(prev, next)) / 2 * percent;
-       size = Math.abs(next - prev) / 2 * percent;
+       const start = curr - (curr - Math.min(prev, next)) / 2 * percent;
+       const size = Math.abs(next - prev) / 2 * percent;
 
        return {
                chunk: size / ruler.stackCount,
                ratio: options.barPercentage,
-               start: start
+               start
        };
 }
 
 function parseFloatBar(arr, item, vScale, i) {
-       var startValue = vScale._parse(arr[0], i);
-       var endValue = vScale._parse(arr[1], i);
-       var min = Math.min(startValue, endValue);
-       var max = Math.max(startValue, endValue);
-       var barStart = min;
-       var barEnd = max;
+       const startValue = vScale._parse(arr[0], i);
+       const endValue = vScale._parse(arr[1], i);
+       const min = Math.min(startValue, endValue);
+       const max = Math.max(startValue, endValue);
+       let barStart = min;
+       let barEnd = max;
 
        if (Math.abs(min) > Math.abs(max)) {
                barStart = max;
@@ -145,12 +142,12 @@ function parseFloatBar(arr, item, vScale, i) {
        item[vScale.axis] = barEnd;
 
        item._custom = {
-               barStart: barStart,
-               barEnd: barEnd,
+               barStart,
+               barEnd,
                start: startValue,
                end: endValue,
-               min: min,
-               max: max
+               min,
+               max
        };
 }
 
@@ -184,17 +181,13 @@ function isFloatBar(custom) {
 
 class BarController extends DatasetController {
 
-       constructor(chart, datasetIndex) {
-               super(chart, datasetIndex);
-       }
-
        /**
         * Overriding primitive data parsing since we support mixed primitive/array
         * data for float bars
         * @private
         */
-       _parsePrimitiveData() {
-               return parseArrayOrPrimitive.apply(this, arguments);
+       _parsePrimitiveData(meta, data, start, count) {
+               return parseArrayOrPrimitive(meta, data, start, count);
        }
 
        /**
@@ -202,8 +195,8 @@ class BarController extends DatasetController {
         * data for float bars
         * @private
         */
-       _parseArrayData() {
-               return parseArrayOrPrimitive.apply(this, arguments);
+       _parseArrayData(meta, data, start, count) {
+               return parseArrayOrPrimitive(meta, data, start, count);
        }
 
        /**
@@ -246,17 +239,16 @@ class BarController extends DatasetController {
 
                return {
                        label: '' + iScale.getLabelForValue(parsed[iScale.axis]),
-                       value: value
+                       value
                };
        }
 
        initialize() {
-               var me = this;
-               var meta;
+               const me = this;
 
-               DatasetController.prototype.initialize.apply(me, arguments);
+               super.initialize();
 
-               meta = me._cachedMeta;
+               const meta = me._cachedMeta;
                meta.stack = me.getDataset().stack;
                meta.bar = true;
        }
@@ -369,8 +361,8 @@ class BarController extends DatasetController {
         * @private
         */
        _getStackIndex(datasetIndex, name) {
-               var stacks = this._getStacks(datasetIndex);
-               var index = (name !== undefined)
+               const stacks = this._getStacks(datasetIndex);
+               const index = (name !== undefined)
                        ? stacks.indexOf(name)
                        : -1; // indexOf returns -1 if element is not present
 
@@ -416,7 +408,7 @@ class BarController extends DatasetController {
                let value = parsed[vScale.axis];
                let start = 0;
                let length = meta._stacked ? me._applyStack(vScale, parsed) : value;
-               let base, head, size;
+               let head, size;
 
                if (length !== value) {
                        start = length - value;
@@ -437,7 +429,7 @@ class BarController extends DatasetController {
                // So we don't try to draw so huge rectangles.
                // https://github.com/chartjs/Chart.js/issues/5247
                // TODO: use borderWidth instead (need to move the parsing from rectangle)
-               base = _limitValue(vScale.getPixelForValue(start),
+               const base = _limitValue(vScale.getPixelForValue(start),
                        vScale._startPixel - 10,
                        vScale._endPixel + 10);
 
@@ -450,9 +442,9 @@ class BarController extends DatasetController {
                }
 
                return {
-                       size: size,
-                       base: base,
-                       head: head,
+                       size,
+                       base,
+                       head,
                        center: head + size / 2
                };
        }
@@ -461,22 +453,22 @@ class BarController extends DatasetController {
         * @private
         */
        _calculateBarIndexPixels(index, ruler, options) {
-               var me = this;
-               var range = options.barThickness === 'flex'
+               const me = this;
+               const range = options.barThickness === 'flex'
                        ? computeFlexCategoryTraits(index, ruler, options)
                        : computeFitCategoryTraits(index, ruler, options);
 
-               var stackIndex = me._getStackIndex(me.index, me._cachedMeta.stack);
-               var center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);
-               var size = Math.min(
+               const stackIndex = me._getStackIndex(me.index, me._cachedMeta.stack);
+               const center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);
+               const size = Math.min(
                        valueOrDefault(options.maxBarThickness, Infinity),
                        range.chunk * range.ratio);
 
                return {
                        base: center - size / 2,
                        head: center + size / 2,
-                       center: center,
-                       size: size
+                       center,
+                       size
                };
        }
 
index a30d2fd0f91ba22635128d27ff32f4ba556dad57..0ebf5b81e174739b91400a0cff5b25f3a26dd898 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import DatasetController from '../core/core.datasetController';
 import defaults from '../core/core.defaults';
 import Point from '../elements/element.point';
@@ -25,7 +23,7 @@ defaults.set('bubble', {
 
        tooltips: {
                callbacks: {
-                       title: function() {
+                       title() {
                                // Title doesn't make sense for scatter since we format the data as a point
                                return '';
                        }
@@ -35,10 +33,6 @@ defaults.set('bubble', {
 
 class BubbleController extends DatasetController {
 
-       constructor(chart, datasetIndex) {
-               super(chart, datasetIndex);
-       }
-
        /**
         * Parse array of objects
         * @private
@@ -142,17 +136,17 @@ class BubbleController extends DatasetController {
         * @private
         */
        _resolveDataElementOptions(index, mode) {
-               var me = this;
-               var chart = me.chart;
-               var dataset = me.getDataset();
-               var parsed = me._getParsed(index);
-               var values = super._resolveDataElementOptions.apply(me, arguments);
+               const me = this;
+               const chart = me.chart;
+               const dataset = me.getDataset();
+               const parsed = me._getParsed(index);
+               let values = super._resolveDataElementOptions(index, mode);
 
                // Scriptable options
-               var context = {
-                       chart: chart,
+               const context = {
+                       chart,
                        dataIndex: index,
-                       dataset: dataset,
+                       dataset,
                        datasetIndex: me.index
                };
 
index 122844eff8e0a877e98bccb81c7dbc58f9c6dbb2..88ec56975e01468c5c1a83c9a173450b03ca8a53 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import DatasetController from '../core/core.datasetController';
 import defaults from '../core/core.defaults';
 import Arc from '../elements/element.arc';
@@ -22,12 +20,12 @@ defaults.set('doughnut', {
        },
        legend: {
                labels: {
-                       generateLabels: function(chart) {
-                               var data = chart.data;
+                       generateLabels(chart) {
+                               const data = chart.data;
                                if (data.labels.length && data.datasets.length) {
-                                       return data.labels.map(function(label, i) {
-                                               var meta = chart.getDatasetMeta(0);
-                                               var style = meta.controller.getStyle(i);
+                                       return data.labels.map((label, i) => {
+                                               const meta = chart.getDatasetMeta(0);
+                                               const style = meta.controller.getStyle(i);
 
                                                return {
                                                        text: label,
@@ -45,10 +43,10 @@ defaults.set('doughnut', {
                        }
                },
 
-               onClick: function(e, legendItem) {
-                       var index = legendItem.index;
-                       var chart = this.chart;
-                       var i, ilen, meta;
+               onClick(e, legendItem) {
+                       const index = legendItem.index;
+                       const chart = this.chart;
+                       let i, ilen, meta;
 
                        for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {
                                meta = chart.getDatasetMeta(i);
@@ -74,12 +72,12 @@ defaults.set('doughnut', {
        // Need to override these to give a nice default
        tooltips: {
                callbacks: {
-                       title: function() {
+                       title() {
                                return '';
                        },
-                       label: function(tooltipItem, data) {
-                               var dataLabel = data.labels[tooltipItem.index];
-                               var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
+                       label(tooltipItem, data) {
+                               let dataLabel = data.labels[tooltipItem.index];
+                               const value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
 
                                if (isArray(dataLabel)) {
                                        // show value on first line of multiline label
@@ -112,9 +110,9 @@ class DoughnutController extends DatasetController {
         * @private
         */
        _parse(start, count) {
-               var data = this.getDataset().data;
-               var meta = this._cachedMeta;
-               var i, ilen;
+               const data = this.getDataset().data;
+               const meta = this._cachedMeta;
+               let i, ilen;
                for (i = start, ilen = start + count; i < ilen; ++i) {
                        meta._parsed[i] = +data[i];
                }
@@ -122,9 +120,9 @@ class DoughnutController extends DatasetController {
 
        // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly
        getRingIndex(datasetIndex) {
-               var ringIndex = 0;
+               let ringIndex = 0;
 
-               for (var j = 0; j < datasetIndex; ++j) {
+               for (let j = 0; j < datasetIndex; ++j) {
                        if (this.chart.isDatasetVisible(j)) {
                                ++ringIndex;
                        }
@@ -134,51 +132,50 @@ class DoughnutController extends DatasetController {
        }
 
        update(mode) {
-               var me = this;
-               var chart = me.chart;
-               var chartArea = chart.chartArea;
-               var opts = chart.options;
-               var ratioX = 1;
-               var ratioY = 1;
-               var offsetX = 0;
-               var offsetY = 0;
-               var meta = me._cachedMeta;
-               var arcs = meta.data;
-               var cutout = opts.cutoutPercentage / 100 || 0;
-               var circumference = opts.circumference;
-               var chartWeight = me._getRingWeight(me.index);
-               var maxWidth, maxHeight, i, ilen;
+               const me = this;
+               const chart = me.chart;
+               const chartArea = chart.chartArea;
+               const opts = chart.options;
+               let ratioX = 1;
+               let ratioY = 1;
+               let offsetX = 0;
+               let offsetY = 0;
+               const meta = me._cachedMeta;
+               const arcs = meta.data;
+               const cutout = opts.cutoutPercentage / 100 || 0;
+               const circumference = opts.circumference;
+               const chartWeight = me._getRingWeight(me.index);
 
                // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc
                if (circumference < DOUBLE_PI) {
-                       var startAngle = opts.rotation % DOUBLE_PI;
+                       let startAngle = opts.rotation % DOUBLE_PI;
                        startAngle += startAngle >= PI ? -DOUBLE_PI : startAngle < -PI ? DOUBLE_PI : 0;
-                       var endAngle = startAngle + circumference;
-                       var startX = Math.cos(startAngle);
-                       var startY = Math.sin(startAngle);
-                       var endX = Math.cos(endAngle);
-                       var endY = Math.sin(endAngle);
-                       var contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI;
-                       var contains90 = (startAngle <= HALF_PI && endAngle >= HALF_PI) || endAngle >= DOUBLE_PI + HALF_PI;
-                       var contains180 = startAngle === -PI || endAngle >= PI;
-                       var contains270 = (startAngle <= -HALF_PI && endAngle >= -HALF_PI) || endAngle >= PI + HALF_PI;
-                       var minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);
-                       var minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);
-                       var maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);
-                       var maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);
+                       const endAngle = startAngle + circumference;
+                       const startX = Math.cos(startAngle);
+                       const startY = Math.sin(startAngle);
+                       const endX = Math.cos(endAngle);
+                       const endY = Math.sin(endAngle);
+                       const contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI;
+                       const contains90 = (startAngle <= HALF_PI && endAngle >= HALF_PI) || endAngle >= DOUBLE_PI + HALF_PI;
+                       const contains180 = startAngle === -PI || endAngle >= PI;
+                       const contains270 = (startAngle <= -HALF_PI && endAngle >= -HALF_PI) || endAngle >= PI + HALF_PI;
+                       const minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);
+                       const minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);
+                       const maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);
+                       const maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);
                        ratioX = (maxX - minX) / 2;
                        ratioY = (maxY - minY) / 2;
                        offsetX = -(maxX + minX) / 2;
                        offsetY = -(maxY + minY) / 2;
                }
 
-               for (i = 0, ilen = arcs.length; i < ilen; ++i) {
+               for (let i = 0, ilen = arcs.length; i < ilen; ++i) {
                        arcs[i]._options = me._resolveDataElementOptions(i, mode);
                }
 
                chart.borderWidth = me.getMaxBorderWidth();
-               maxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;
-               maxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;
+               const maxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;
+               const maxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;
                chart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);
                chart.innerRadius = Math.max(chart.outerRadius * cutout, 0);
                chart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);
@@ -263,7 +260,7 @@ class DoughnutController extends DatasetController {
        }
 
        calculateCircumference(value) {
-               var total = this._cachedMeta.total;
+               const total = this._cachedMeta.total;
                if (total > 0 && !isNaN(value)) {
                        return DOUBLE_PI * (Math.abs(value) / total);
                }
@@ -272,10 +269,10 @@ class DoughnutController extends DatasetController {
 
        // gets the max border or hover width to properly scale pie charts
        getMaxBorderWidth(arcs) {
-               var me = this;
-               var max = 0;
-               var chart = me.chart;
-               var i, ilen, meta, controller, options;
+               const me = this;
+               let max = 0;
+               const chart = me.chart;
+               let i, ilen, meta, controller, options;
 
                if (!arcs) {
                        // Find the outmost visible dataset
@@ -310,9 +307,9 @@ class DoughnutController extends DatasetController {
         * @private
         */
        _getRingWeightOffset(datasetIndex) {
-               var ringWeightOffset = 0;
+               let ringWeightOffset = 0;
 
-               for (var i = 0; i < datasetIndex; ++i) {
+               for (let i = 0; i < datasetIndex; ++i) {
                        if (this.chart.isDatasetVisible(i)) {
                                ringWeightOffset += this._getRingWeight(i);
                        }
index fd81b985962759bec041334ba2e0b90ccfa6d020..52664d41103900862c9132987bb1fa74d9d2eb5e 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import BarController from './controller.bar';
 import defaults from '../core/core.defaults';
 
@@ -44,10 +42,6 @@ defaults.set('horizontalBar', {
 
 class HorizontalBarController extends BarController {
 
-       constructor(chart, datasetIndex) {
-               super(chart, datasetIndex);
-       }
-
        /**
         * @private
         */
index d71f28de892ee5dde8b86121367cf9420b5b438c..bd49f924e7de0cea61602455ef2e58c0b276a2e7 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import DatasetController from '../core/core.datasetController';
 import defaults from '../core/core.defaults';
 import Line from '../elements/element.line';
@@ -96,12 +94,12 @@ class LineController extends DatasetController {
        /**
         * @private
         */
-       _resolveDatasetElementOptions() {
+       _resolveDatasetElementOptions(active) {
                const me = this;
                const config = me._config;
                const options = me.chart.options;
                const lineOptions = options.elements.line;
-               const values = DatasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);
+               const values = super._resolveDatasetElementOptions(active);
 
                // The default behavior of lines is to break at null values, according
                // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158
index 85a533e1c46122c5d06a5f26565b72dd1701caff..09acd50b5da5c79bccfca3baf81a4a935670fd3a 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import DoughnutController from './controller.doughnut';
 import defaults from '../core/core.defaults';
 import {clone} from '../helpers/helpers.core';
index df923b4750744f2bf2ef750713ace74370f8ead6..d68f1024e8c71c54e2e449b1c977becf5ba62345 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import DatasetController from '../core/core.datasetController';
 import defaults from '../core/core.defaults';
 import Arc from '../elements/element.arc';
@@ -34,12 +32,12 @@ defaults.set('polarArea', {
        startAngle: 0,
        legend: {
                labels: {
-                       generateLabels: function(chart) {
-                               var data = chart.data;
+                       generateLabels(chart) {
+                               const data = chart.data;
                                if (data.labels.length && data.datasets.length) {
-                                       return data.labels.map(function(label, i) {
-                                               var meta = chart.getDatasetMeta(0);
-                                               var style = meta.controller.getStyle(i);
+                                       return data.labels.map((label, i) => {
+                                               const meta = chart.getDatasetMeta(0);
+                                               const style = meta.controller.getStyle(i);
 
                                                return {
                                                        text: label,
@@ -57,10 +55,10 @@ defaults.set('polarArea', {
                        }
                },
 
-               onClick: function(e, legendItem) {
-                       var index = legendItem.index;
-                       var chart = this.chart;
-                       var i, ilen, meta;
+               onClick(e, legendItem) {
+                       const index = legendItem.index;
+                       const chart = this.chart;
+                       let i, ilen, meta;
 
                        for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {
                                meta = chart.getDatasetMeta(i);
@@ -74,10 +72,10 @@ defaults.set('polarArea', {
        // Need to override these to give a nice default
        tooltips: {
                callbacks: {
-                       title: function() {
+                       title() {
                                return '';
                        },
-                       label: function(item, data) {
+                       label(item, data) {
                                return data.labels[item.index] + ': ' + item.value;
                        }
                }
@@ -124,11 +122,11 @@ class PolarAreaController extends DatasetController {
         * @private
         */
        _updateRadius() {
-               var me = this;
-               var chart = me.chart;
-               var chartArea = chart.chartArea;
-               var opts = chart.options;
-               var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);
+               const me = this;
+               const chart = me.chart;
+               const chartArea = chart.chartArea;
+               const opts = chart.options;
+               const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);
 
                chart.outerRadius = Math.max(minSize / 2, 0);
                chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);
@@ -190,11 +188,11 @@ class PolarAreaController extends DatasetController {
        }
 
        countVisibleElements() {
-               var dataset = this.getDataset();
-               var meta = this._cachedMeta;
-               var count = 0;
+               const dataset = this.getDataset();
+               const meta = this._cachedMeta;
+               let count = 0;
 
-               meta.data.forEach(function(element, index) {
+               meta.data.forEach((element, index) => {
                        if (!isNaN(dataset.data[index]) && !element.hidden) {
                                count++;
                        }
@@ -207,20 +205,20 @@ class PolarAreaController extends DatasetController {
         * @private
         */
        _computeAngle(index) {
-               var me = this;
-               var meta = me._cachedMeta;
-               var count = meta.count;
-               var dataset = me.getDataset();
+               const me = this;
+               const meta = me._cachedMeta;
+               const count = meta.count;
+               const dataset = me.getDataset();
 
                if (isNaN(dataset.data[index]) || meta.data[index].hidden) {
                        return 0;
                }
 
                // Scriptable options
-               var context = {
+               const context = {
                        chart: me.chart,
                        dataIndex: index,
-                       dataset: dataset,
+                       dataset,
                        datasetIndex: me.index
                };
 
index f4f0123b3695492ee16a751eb7bbcba5a5a00a6b..ce75db82acc4128b8e9f57cbb0a4b47afbad79c8 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import DatasetController from '../core/core.datasetController';
 import defaults from '../core/core.defaults';
 import Line from '../elements/element.line';
@@ -22,10 +20,6 @@ defaults.set('radar', {
 
 class RadarController extends DatasetController {
 
-       constructor(chart, datasetIndex) {
-               super(chart, datasetIndex);
-       }
-
        /**
         * @private
         */
@@ -106,11 +100,11 @@ class RadarController extends DatasetController {
        /**
         * @private
         */
-       _resolveDatasetElementOptions() {
+       _resolveDatasetElementOptions(active) {
                const me = this;
                const config = me._config;
                const options = me.chart.options;
-               const values = super._resolveDatasetElementOptions.apply(me, arguments);
+               const values = super._resolveDatasetElementOptions(active);
 
                values.spanGaps = valueOrDefault(config.spanGaps, options.spanGaps);
                values.tension = valueOrDefault(config.lineTension, options.elements.line.tension);
index 4e368be4cda8f303ebe1e500f980e05e5547573a..db3e984bd94d8665ff2307c20c6d9254f03f0f10 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import LineController from './controller.line';
 import defaults from '../core/core.defaults';
 
@@ -21,10 +19,10 @@ defaults.set('scatter', {
 
        tooltips: {
                callbacks: {
-                       title: function() {
+                       title() {
                                return '';     // doesn't make sense for scatter since data are formatted as a point
                        },
-                       label: function(item) {
+                       label(item) {
                                return '(' + item.label + ', ' + item.value + ')';
                        }
                }
index 9a3fad72d778f3d7567dce871f9ff076d5a2583e..090bd291ebe3781336d277049a1149b9979be5cd 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import bar from './controller.bar';
 import bubble from './controller.bubble';
 import doughnut from './controller.doughnut';
@@ -15,13 +13,13 @@ import scatter from './controller.scatter';
 // by the controller in core.controller.js (`controllers[meta.type]`).
 
 export default {
-       bar: bar,
-       bubble: bubble,
-       doughnut: doughnut,
-       horizontalBar: horizontalBar,
-       line: line,
-       polarArea: polarArea,
-       pie: pie,
-       radar: radar,
-       scatter: scatter
+       bar,
+       bubble,
+       doughnut,
+       horizontalBar,
+       line,
+       polarArea,
+       pie,
+       radar,
+       scatter
 };
index 90de4102969a2030307910fda71acdff5e0198b8..85e929ed12c99dc5b5ab6027c6e2ad696e9a68b1 100644 (file)
@@ -4,8 +4,6 @@
  * @private
  */
 
-'use strict';
-
 import {extend} from '../helpers/helpers.core';
 
 /**
index 2049234719a10f7974a2d4ba8f9952b86fc4a9bf..59bb03015e490ff2244219c0f6de2b0c8700ea01 100644 (file)
@@ -1,22 +1,20 @@
-'use strict';
-
 import helpers from '../helpers/index';
-import {effects} from '../helpers/helpers.easing';
+import effects from '../helpers/helpers.easing';
 import {resolve} from '../helpers/helpers.options';
 
 const transparent = 'transparent';
 const interpolators = {
-       boolean: function(from, to, factor) {
+       boolean(from, to, factor) {
                return factor > 0.5 ? to : from;
        },
-       color: function(from, to, factor) {
-               var c0 = helpers.color(from || transparent);
-               var c1 = c0.valid && helpers.color(to || transparent);
+       color(from, to, factor) {
+               const c0 = helpers.color(from || transparent);
+               const c1 = c0.valid && helpers.color(to || transparent);
                return c1 && c1.valid
                        ? c1.mix(c0, factor).hexString()
                        : to;
        },
-       number: function(from, to, factor) {
+       number(from, to, factor) {
                return from + (to - from) * factor;
        }
 };
@@ -26,7 +24,7 @@ class Animation {
                const currentValue = target[prop];
 
                to = resolve([cfg.to, to, currentValue, cfg.from]);
-               let from = resolve([cfg.from, currentValue, to]);
+               const from = resolve([cfg.from, currentValue, to]);
 
                this._active = true;
                this._fn = cfg.fn || interpolators[cfg.type || typeof from];
index 845a1c346f086508710a510aef8931de32776d7d..8ed966e0a04ebd7d30911f2e87f9e8c4eb0ba879 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import Animator from './core.animator';
 import Animation from './core.animation';
 import defaults from '../core/core.defaults';
@@ -57,8 +55,8 @@ defaults.set('animation', {
 });
 
 function copyOptions(target, values) {
-       let oldOpts = target.options;
-       let newOpts = values.options;
+       const oldOpts = target.options;
+       const newOpts = values.options;
        if (!oldOpts || !newOpts || newOpts.$shared) {
                return;
        }
@@ -101,7 +99,7 @@ export default class Animations {
                        if (!isObject(cfg)) {
                                return;
                        }
-                       (cfg.properties || [key]).forEach(function(prop) {
+                       (cfg.properties || [key]).forEach((prop) => {
                                // Can have only one config per animation.
                                if (!animatedProps.has(prop)) {
                                        animatedProps.set(prop, extend({}, animDefaults, cfg));
@@ -152,16 +150,16 @@ export default class Animations {
                let i;
 
                for (i = props.length - 1; i >= 0; --i) {
-                       let prop = props[i];
+                       const prop = props[i];
                        if (prop.charAt(0) === '$') {
                                continue;
                        }
 
                        if (prop === 'options') {
-                               animations.push.apply(animations, this._animateOptions(target, values));
+                               animations.push(...this._animateOptions(target, values));
                                continue;
                        }
-                       let value = values[prop];
+                       const value = values[prop];
                        let animation = running[prop];
                        if (animation) {
                                animation.cancel();
index 234f0f909e7caa83d0efb4b818e5ac8aeea9bcc9..28565629e45957e4c7fac16fba3b4e35c0d6f108 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import helpers from '../helpers/index';
 
 /**
@@ -36,7 +34,7 @@ class Animator {
                const numSteps = anims.duration;
 
                callbacks.forEach(fn => fn({
-                       chart: chart,
+                       chart,
                        numSteps,
                        currentStep: date - anims.start
                }));
@@ -53,7 +51,7 @@ class Animator {
                }
                me._running = true;
 
-               me._request = helpers.requestAnimFrame.call(window, function() {
+               me._request = helpers.requestAnimFrame.call(window, () => {
                        me._update();
                        me._request = null;
 
@@ -71,7 +69,7 @@ class Animator {
                const date = Date.now();
                let remaining = 0;
 
-               me._charts.forEach(function(anims, chart) {
+               me._charts.forEach((anims, chart) => {
                        if (!anims.running || !anims.items.length) {
                                return;
                        }
index 3b2efafbe5bb2906043be3f302d1f3d15559060d..add55549b5343fe499d0d82bd3097cb2381d0747 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import Animator from './core.animator';
 import controllers from '../controllers/index';
 import defaults from './core.defaults';
@@ -65,9 +63,9 @@ function mergeScaleConfig(config, options) {
  * default scale options for the `scales` and `scale` properties, then returns
  * a deep copy of the result, thus doesn't alter inputs.
  */
-function mergeConfig(/* config objects ... */) {
-       return helpers.merge({}, [].slice.call(arguments), {
-               merger: function(key, target, source, options) {
+function mergeConfig(...args/* config objects ... */) {
+       return helpers.merge({}, args, {
+               merger(key, target, source, options) {
                        if (key !== 'scales' && key !== 'scale') {
                                helpers._merger(key, target, source, options);
                        }
@@ -101,9 +99,9 @@ function isAnimationDisabled(config) {
 }
 
 function updateConfig(chart) {
-       var newOptions = chart.options;
+       let newOptions = chart.options;
 
-       helpers.each(chart.scales, function(scale) {
+       helpers.each(chart.scales, (scale) => {
                layouts.removeBox(chart, scale);
        });
 
@@ -215,10 +213,10 @@ class Chart {
 
                // Define alias to the config data: `chart.data === chart.config.data`
                Object.defineProperty(me, 'data', {
-                       get: function() {
+                       get() {
                                return me.config.data;
                        },
-                       set: function(value) {
+                       set(value) {
                                me.config.data = value;
                        }
                });
@@ -333,7 +331,7 @@ class Chart {
                const scalesOptions = options.scales || {};
                const scaleOptions = options.scale;
 
-               helpers.each(scalesOptions, function(axisOptions, axisID) {
+               helpers.each(scalesOptions, (axisOptions, axisID) => {
                        axisOptions.id = axisID;
                });
 
@@ -350,7 +348,7 @@ class Chart {
                const options = me.options;
                const scaleOpts = options.scales;
                const scales = me.scales || {};
-               const updated = Object.keys(scales).reduce(function(obj, id) {
+               const updated = Object.keys(scales).reduce((obj, id) => {
                        obj[id] = false;
                        return obj;
                }, {});
@@ -358,7 +356,7 @@ class Chart {
 
                if (scaleOpts) {
                        items = items.concat(
-                               Object.keys(scaleOpts).map(function(axisID) {
+                               Object.keys(scaleOpts).map((axisID) => {
                                        const axisOptions = scaleOpts[axisID];
                                        const isRadial = axisID.charAt(0).toLowerCase() === 'r';
                                        const isHorizontal = axisID.charAt(0).toLowerCase() === 'x';
@@ -371,7 +369,7 @@ class Chart {
                        );
                }
 
-               helpers.each(items, function(item) {
+               helpers.each(items, (item) => {
                        const scaleOptions = item.options;
                        const id = scaleOptions.id;
                        const scaleType = valueOrDefault(scaleOptions.type, item.dtype);
@@ -393,7 +391,7 @@ class Chart {
                                        return;
                                }
                                scale = new scaleClass({
-                                       id: id,
+                                       id,
                                        type: scaleType,
                                        options: scaleOptions,
                                        ctx: me.ctx,
@@ -416,7 +414,7 @@ class Chart {
                        }
                });
                // clear up discarded scales
-               helpers.each(updated, function(hasUpdated, id) {
+               helpers.each(updated, (hasUpdated, id) => {
                        if (!hasUpdated) {
                                delete scales[id];
                        }
@@ -507,7 +505,7 @@ class Chart {
         */
        _resetElements() {
                const me = this;
-               helpers.each(me.data.datasets, function(dataset, datasetIndex) {
+               helpers.each(me.data.datasets, (dataset, datasetIndex) => {
                        me.getDatasetMeta(datasetIndex).controller.reset();
                }, me);
        }
@@ -548,7 +546,7 @@ class Chart {
 
                // Can only reset the new controllers after the scales have been updated
                if (me.options.animation) {
-                       helpers.each(newControllers, function(controller) {
+                       helpers.each(newControllers, (controller) => {
                                controller.reset();
                        });
                }
@@ -585,16 +583,16 @@ class Chart {
                layouts.update(me, me.width, me.height);
 
                me._layers = [];
-               helpers.each(me.boxes, function(box) {
+               helpers.each(me.boxes, (box) => {
                        // _configure is called twice, once in core.scale.update and once here.
                        // Here the boxes are fully updated and at their final positions.
                        if (box._configure) {
                                box._configure();
                        }
-                       me._layers.push.apply(me._layers, box._layers());
+                       me._layers.push(...box._layers());
                }, me);
 
-               me._layers.forEach(function(item, index) {
+               me._layers.forEach((item, index) => {
                        item._idx = index;
                });
 
@@ -663,7 +661,7 @@ class Chart {
 
        draw() {
                const me = this;
-               let i, layers;
+               let i;
 
                me.clear();
 
@@ -678,7 +676,7 @@ class Chart {
                // Because of plugin hooks (before/afterDatasetsDraw), datasets can't
                // currently be part of layers. Instead, we draw
                // layers <= 0 before(default, backward compat), and the rest after
-               layers = me._layers;
+               const layers = me._layers;
                for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {
                        layers[i].draw(me.chartArea);
                }
@@ -726,14 +724,13 @@ class Chart {
         */
        _drawDatasets() {
                const me = this;
-               let metasets, i;
 
                if (plugins.notify(me, 'beforeDatasetsDraw') === false) {
                        return;
                }
 
-               metasets = me._getSortedVisibleDatasetMetas();
-               for (i = metasets.length - 1; i >= 0; --i) {
+               const metasets = me._getSortedVisibleDatasetMetas();
+               for (let i = metasets.length - 1; i >= 0; --i) {
                        me._drawDataset(metasets[i]);
                }
 
@@ -751,7 +748,7 @@ class Chart {
                const clip = meta._clip;
                const area = me.chartArea;
                const args = {
-                       meta: meta,
+                       meta,
                        index: meta.index,
                };
 
@@ -915,8 +912,8 @@ class Chart {
                delete Chart.instances[me.id];
        }
 
-       toBase64Image() {
-               return this.canvas.toDataURL.apply(this.canvas, arguments);
+       toBase64Image(...args) {
+               return this.canvas.toDataURL(...args);
        }
 
        /**
@@ -925,11 +922,11 @@ class Chart {
        bindEvents() {
                const me = this;
                const listeners = me._listeners;
-               let listener = function() {
-                       me._eventHandler.apply(me, arguments);
+               let listener = function(e) {
+                       me._eventHandler(e);
                };
 
-               helpers.each(me.options.events, function(type) {
+               helpers.each(me.options.events, (type) => {
                        me.platform.addEventListener(me, type, listener);
                        listeners[type] = listener;
                });
@@ -957,7 +954,7 @@ class Chart {
                }
 
                delete me._listeners;
-               helpers.each(listeners, function(listener, type) {
+               helpers.each(listeners, (listener, type) => {
                        me.platform.removeEventListener(me, type, listener);
                });
        }
index b516109f1699f179a042450ca9ee9a4b183d60c8..dc8e16f525b0cfe9b9d957d9ca88281a504ba16a 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import helpers from '../helpers/index';
 import Animations from './core.animations';
 
@@ -26,20 +24,19 @@ function listenArrayEvents(array, listener) {
                }
        });
 
-       arrayEvents.forEach(function(key) {
-               var method = '_onData' + key.charAt(0).toUpperCase() + key.slice(1);
-               var base = array[key];
+       arrayEvents.forEach((key) => {
+               const method = '_onData' + key.charAt(0).toUpperCase() + key.slice(1);
+               const base = array[key];
 
                Object.defineProperty(array, key, {
                        configurable: true,
                        enumerable: false,
-                       value: function() {
-                               var args = Array.prototype.slice.call(arguments);
-                               var res = base.apply(this, args);
+                       value(...args) {
+                               const res = base.apply(this, args);
 
-                               array._chartjs.listeners.forEach(function(object) {
+                               array._chartjs.listeners.forEach((object) => {
                                        if (typeof object[method] === 'function') {
-                                               object[method].apply(object, args);
+                                               object[method](...args);
                                        }
                                });
 
@@ -50,10 +47,10 @@ function listenArrayEvents(array, listener) {
 }
 
 function scaleClip(scale, allowedOverflow) {
-       var opts = scale && scale.options || {};
-       var reverse = opts.reverse;
-       var min = opts.min === undefined ? allowedOverflow : 0;
-       var max = opts.max === undefined ? allowedOverflow : 0;
+       const opts = scale && scale.options || {};
+       const reverse = opts.reverse;
+       const min = opts.min === undefined ? allowedOverflow : 0;
+       const max = opts.max === undefined ? allowedOverflow : 0;
        return {
                start: reverse ? max : min,
                end: reverse ? min : max
@@ -64,8 +61,8 @@ function defaultClip(xScale, yScale, allowedOverflow) {
        if (allowedOverflow === false) {
                return false;
        }
-       var x = scaleClip(xScale, allowedOverflow);
-       var y = scaleClip(yScale, allowedOverflow);
+       const x = scaleClip(xScale, allowedOverflow);
+       const y = scaleClip(yScale, allowedOverflow);
 
        return {
                top: y.end,
@@ -76,7 +73,7 @@ function defaultClip(xScale, yScale, allowedOverflow) {
 }
 
 function toClip(value) {
-       var t, r, b, l;
+       let t, r, b, l;
 
        if (helpers.isObject(value)) {
                t = value.top;
@@ -100,13 +97,13 @@ function toClip(value) {
  * the _chartjs stub and overridden methods) if array doesn't have any more listeners.
  */
 function unlistenArrayEvents(array, listener) {
-       var stub = array._chartjs;
+       const stub = array._chartjs;
        if (!stub) {
                return;
        }
 
-       var listeners = stub.listeners;
-       var index = listeners.indexOf(listener);
+       const listeners = stub.listeners;
+       const index = listeners.indexOf(listener);
        if (index !== -1) {
                listeners.splice(index, 1);
        }
@@ -115,7 +112,7 @@ function unlistenArrayEvents(array, listener) {
                return;
        }
 
-       arrayEvents.forEach(function(key) {
+       arrayEvents.forEach((key) => {
                delete array[key];
        });
 
@@ -123,9 +120,9 @@ function unlistenArrayEvents(array, listener) {
 }
 
 function getSortedDatasetIndices(chart, filterVisible) {
-       var keys = [];
-       var metasets = chart._getSortedDatasetMetas(filterVisible);
-       var i, ilen;
+       const keys = [];
+       const metasets = chart._getSortedDatasetMetas(filterVisible);
+       let i, ilen;
 
        for (i = 0, ilen = metasets.length; i < ilen; ++i) {
                keys.push(metasets[i].index);
@@ -134,8 +131,8 @@ function getSortedDatasetIndices(chart, filterVisible) {
 }
 
 function applyStack(stack, value, dsIndex, allOther) {
-       var keys = stack.keys;
-       var i, ilen, datasetIndex, otherValue;
+       const keys = stack.keys;
+       let i, ilen, datasetIndex, otherValue;
 
        for (i = 0, ilen = keys.length; i < ilen; ++i) {
                datasetIndex = +keys[i];
@@ -168,7 +165,7 @@ function convertObjectDataToArray(data) {
 }
 
 function isStacked(scale, meta) {
-       var stacked = scale && scale.options.stacked;
+       const stacked = scale && scale.options.stacked;
        return stacked || (stacked === undefined && meta.stack !== undefined);
 }
 
@@ -177,7 +174,7 @@ function getStackKey(indexScale, valueScale, meta) {
 }
 
 function getUserBounds(scale) {
-       var {min, max, minDefined, maxDefined} = scale._getUserBounds();
+       const {min, max, minDefined, maxDefined} = scale._getUserBounds();
        return {
                min: minDefined ? min : Number.NEGATIVE_INFINITY,
                max: maxDefined ? max : Number.POSITIVE_INFINITY
@@ -210,9 +207,7 @@ function updateStacks(controller, parsed) {
 
 function getFirstScaleId(chart, axis) {
        const scales = chart.scales;
-       return Object.keys(scales).filter(key => {
-               return scales[key].axis === axis;
-       }).shift();
+       return Object.keys(scales).filter(key => scales[key].axis === axis).shift();
 }
 
 class DatasetController {
@@ -388,13 +383,13 @@ class DatasetController {
        addElements() {
                const me = this;
                const meta = me._cachedMeta;
-               let i, ilen, data;
 
                me._dataCheck();
-               data = me._data;
+
+               const data = me._data;
                const metaData = meta.data = new Array(data.length);
 
-               for (i = 0, ilen = data.length; i < ilen; ++i) {
+               for (let i = 0, ilen = data.length; i < ilen; ++i) {
                        metaData[i] = new me.dataElementType();
                }
 
@@ -419,7 +414,7 @@ class DatasetController {
                if (meta.stack !== dataset.stack) {
                        stackChanged = true;
                        // remove values from old stack
-                       meta._parsed.forEach(function(parsed) {
+                       meta._parsed.forEach((parsed) => {
                                delete parsed._stacks[meta.vScale.id][meta.index];
                        });
                        meta.stack = dataset.stack;
@@ -445,7 +440,7 @@ class DatasetController {
                        me.chart.options[me._type].datasets,
                        me.getDataset(),
                ], {
-                       merger: function(key, target, source) {
+                       merger(key, target, source) {
                                if (key !== 'data') {
                                        helpers._merger(key, target, source);
                                }
@@ -620,7 +615,7 @@ class DatasetController {
                const stack = canStack && meta._stacked && {keys: getSortedDatasetIndices(this.chart, true), values: null};
                let min = Number.POSITIVE_INFINITY;
                let max = Number.NEGATIVE_INFINITY;
-               let {min: otherMin, max: otherMax} = getUserBounds(otherScale);
+               const {min: otherMin, max: otherMax} = getUserBounds(otherScale);
                let i, item, value, parsed, otherValue;
 
                function _compute() {
@@ -778,9 +773,7 @@ class DatasetController {
                const me = this;
                const getHoverColor = helpers.getHoverColor;
                const normalOptions = me.getStyle(index);
-               const missingColors = Object.keys(normalOptions).filter(key => {
-                       return key.indexOf('Color') !== -1 && !(key in options);
-               });
+               const missingColors = Object.keys(normalOptions).filter(key => key.indexOf('Color') !== -1 && !(key in options));
                let i = missingColors.length - 1;
                let color;
                for (; i >= 0; i--) {
index 3a15ba70a7d591504920c1e7e38ac57b6deba22d..3b60e87d34adf88e83d024caf64a47a18605ad14 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import {merge} from '../helpers/helpers.core';
 
 class Defaults {
index 885c9ef0b0821a50f9f73d01222038556f4eb77a..02a4bb2aed9002559941b09eb24229fdff230379 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import {extend, inherits} from '../helpers/helpers.core';
 import {isNumber} from '../helpers/helpers.math';
 
index 2213dc26b3518e0d58de6c13c4c8a3391916eb07..ba73fc909e6e0f9beebb7a00c92421980d29cd5f 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import helpers from '../helpers/index';
 import {_isPointInArea} from '../helpers/helpers.canvas';
 import {_lookupByKey, _rlookupByKey} from '../helpers/helpers.collection';
@@ -92,7 +90,7 @@ function optimizedEvaluateItems(chart, axis, position, handler, intersect) {
        const value = position[axis];
        for (let i = 0, ilen = metasets.length; i < ilen; ++i) {
                const {index, data} = metasets[i];
-               let {lo, hi} = binarySearch(metasets[i], axis, value, intersect);
+               const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);
                for (let j = lo; j <= hi; ++j) {
                        const element = data[j];
                        if (!element.skip) {
@@ -196,7 +194,7 @@ export default {
                 * @param {IInteractionOptions} options - options to use during interaction
                 * @return {Object[]} Array of elements that are under the point. If none are found, an empty array is returned
                 */
-               index: function(chart, e, options) {
+               index(chart, e, options) {
                        const position = getRelativePosition(e, chart);
                        // Default axis for index mode is 'x' to match old behaviour
                        const axis = options.axis || 'x';
@@ -207,7 +205,7 @@ export default {
                                return [];
                        }
 
-                       chart._getSortedVisibleDatasetMetas().forEach(function(meta) {
+                       chart._getSortedVisibleDatasetMetas().forEach((meta) => {
                                const index = items[0].index;
                                const element = meta.data[index];
 
@@ -229,7 +227,7 @@ export default {
                 * @param {IInteractionOptions} options - options to use during interaction
                 * @return {Object[]} Array of elements that are under the point. If none are found, an empty array is returned
                 */
-               dataset: function(chart, e, options) {
+               dataset(chart, e, options) {
                        const position = getRelativePosition(e, chart);
                        const axis = options.axis || 'xy';
                        let items = options.intersect ? getIntersectItems(chart, position, axis) : getNearestItems(chart, position, axis);
@@ -255,7 +253,7 @@ export default {
                 * @param {IInteractionOptions} options - options to use
                 * @return {Object[]} Array of elements that are under the point. If none are found, an empty array is returned
                 */
-               point: function(chart, e, options) {
+               point(chart, e, options) {
                        const position = getRelativePosition(e, chart);
                        const axis = options.axis || 'xy';
                        return getIntersectItems(chart, position, axis);
@@ -269,7 +267,7 @@ export default {
                 * @param {IInteractionOptions} options - options to use
                 * @return {Object[]} Array of elements that are under the point. If none are found, an empty array is returned
                 */
-               nearest: function(chart, e, options) {
+               nearest(chart, e, options) {
                        const position = getRelativePosition(e, chart);
                        const axis = options.axis || 'xy';
                        return getNearestItems(chart, position, axis, options.intersect);
@@ -283,12 +281,12 @@ export default {
                 * @param {IInteractionOptions} options - options to use
                 * @return {Object[]} Array of elements that are under the point. If none are found, an empty array is returned
                 */
-               x: function(chart, e, options) {
+               x(chart, e, options) {
                        const position = getRelativePosition(e, chart);
                        const items = [];
                        let intersectsItem = false;
 
-                       evaluateAllVisibleItems(chart, function(element, datasetIndex, index) {
+                       evaluateAllVisibleItems(chart, (element, datasetIndex, index) => {
                                if (element.inXRange(position.x)) {
                                        items.push({element, datasetIndex, index});
                                }
@@ -314,12 +312,12 @@ export default {
                 * @param {IInteractionOptions} options - options to use
                 * @return {Object[]} Array of elements that are under the point. If none are found, an empty array is returned
                 */
-               y: function(chart, e, options) {
+               y(chart, e, options) {
                        const position = getRelativePosition(e, chart);
                        const items = [];
                        let intersectsItem = false;
 
-                       evaluateAllVisibleItems(chart, function(element, datasetIndex, index) {
+                       evaluateAllVisibleItems(chart, (element, datasetIndex, index) => {
                                if (element.inYRange(position.y)) {
                                        items.push({element, datasetIndex, index});
                                }
index 1278ce46247ab3bbd1d74fec0cc4b68710addcd6..9bb0ab335480dc4d093bc30b939110aa677cf14d 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import defaults from './core.defaults';
 import {each, extend} from '../helpers/helpers.core';
 import {toPadding} from '../helpers/helpers.options';
@@ -19,9 +17,9 @@ function filterDynamicPositionByAxis(array, axis) {
 }
 
 function sortByWeight(array, reverse) {
-       return array.sort(function(a, b) {
-               var v0 = reverse ? b : a;
-               var v1 = reverse ? a : b;
+       return array.sort((a, b) => {
+               const v0 = reverse ? b : a;
+               const v1 = reverse ? a : b;
                return v0.weight === v1.weight ?
                        v0.index - v1.index :
                        v0.weight - v1.weight;
@@ -29,14 +27,14 @@ function sortByWeight(array, reverse) {
 }
 
 function wrapBoxes(boxes) {
-       var layoutBoxes = [];
-       var i, ilen, box;
+       const layoutBoxes = [];
+       let i, ilen, box;
 
        for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {
                box = boxes[i];
                layoutBoxes.push({
                        index: i,
-                       box: box,
+                       box,
                        pos: box.position,
                        horizontal: box.isHorizontal(),
                        weight: box.weight
@@ -46,7 +44,7 @@ function wrapBoxes(boxes) {
 }
 
 function setLayoutDims(layouts, params) {
-       var i, ilen, layout;
+       let i, ilen, layout;
        for (i = 0, ilen = layouts.length; i < ilen; ++i) {
                layout = layouts[i];
                // store width used instead of chartArea.w in fitBoxes
@@ -81,9 +79,8 @@ function getCombinedMax(maxPadding, chartArea, a, b) {
 }
 
 function updateDims(chartArea, params, layout) {
-       var box = layout.box;
-       var maxPadding = chartArea.maxPadding;
-       var newWidth, newHeight;
+       const box = layout.box;
+       const maxPadding = chartArea.maxPadding;
 
        if (layout.size) {
                // this layout was already counted for, lets first reduce old size
@@ -93,15 +90,15 @@ function updateDims(chartArea, params, layout) {
        chartArea[layout.pos] += layout.size;
 
        if (box.getPadding) {
-               var boxPadding = box.getPadding();
+               const boxPadding = box.getPadding();
                maxPadding.top = Math.max(maxPadding.top, boxPadding.top);
                maxPadding.left = Math.max(maxPadding.left, boxPadding.left);
                maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);
                maxPadding.right = Math.max(maxPadding.right, boxPadding.right);
        }
 
-       newWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');
-       newHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');
+       const newWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');
+       const newHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');
 
        if (newWidth !== chartArea.w || newHeight !== chartArea.h) {
                chartArea.w = newWidth;
@@ -113,10 +110,10 @@ function updateDims(chartArea, params, layout) {
 }
 
 function handleMaxPadding(chartArea) {
-       var maxPadding = chartArea.maxPadding;
+       const maxPadding = chartArea.maxPadding;
 
        function updatePos(pos) {
-               var change = Math.max(maxPadding[pos] - chartArea[pos], 0);
+               const change = Math.max(maxPadding[pos] - chartArea[pos], 0);
                chartArea[pos] += change;
                return change;
        }
@@ -127,11 +124,11 @@ function handleMaxPadding(chartArea) {
 }
 
 function getMargins(horizontal, chartArea) {
-       var maxPadding = chartArea.maxPadding;
+       const maxPadding = chartArea.maxPadding;
 
        function marginForPositions(positions) {
-               var margin = {left: 0, top: 0, right: 0, bottom: 0};
-               positions.forEach(function(pos) {
+               const margin = {left: 0, top: 0, right: 0, bottom: 0};
+               positions.forEach((pos) => {
                        margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);
                });
                return margin;
@@ -143,8 +140,8 @@ function getMargins(horizontal, chartArea) {
 }
 
 function fitBoxes(boxes, chartArea, params) {
-       var refitBoxes = [];
-       var i, ilen, layout, box, refit, changed;
+       const refitBoxes = [];
+       let i, ilen, layout, box, refit, changed;
 
        for (i = 0, ilen = boxes.length; i < ilen; ++i) {
                layout = boxes[i];
@@ -172,10 +169,10 @@ function fitBoxes(boxes, chartArea, params) {
 }
 
 function placeBoxes(boxes, chartArea, params) {
-       var userPadding = params.padding;
-       var x = chartArea.x;
-       var y = chartArea.y;
-       var i, ilen, layout, box;
+       const userPadding = params.padding;
+       let x = chartArea.x;
+       let y = chartArea.y;
+       let i, ilen, layout, box;
 
        for (i = 0, ilen = boxes.length; i < ilen; ++i) {
                layout = boxes[i];
@@ -241,7 +238,7 @@ export default {
         * @param {Chart} chart - the chart to use
         * @param {ILayoutItem} item - the item to add to be layed out
         */
-       addBox: function(chart, item) {
+       addBox(chart, item) {
                if (!chart.boxes) {
                        chart.boxes = [];
                }
@@ -254,8 +251,8 @@ export default {
                item._layers = item._layers || function() {
                        return [{
                                z: 0,
-                               draw: function() {
-                                       item.draw.apply(item, arguments);
+                               draw(chartArea) {
+                                       item.draw(chartArea);
                                }
                        }];
                };
@@ -268,8 +265,8 @@ export default {
         * @param {Chart} chart - the chart to remove the box from
         * @param {ILayoutItem} layoutItem - the item to remove from the layout
         */
-       removeBox: function(chart, layoutItem) {
-               var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;
+       removeBox(chart, layoutItem) {
+               const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;
                if (index !== -1) {
                        chart.boxes.splice(index, 1);
                }
@@ -281,11 +278,11 @@ export default {
         * @param {ILayoutItem} item - the item to configure with the given options
         * @param {object} options - the new item options.
         */
-       configure: function(chart, item, options) {
-               var props = ['fullWidth', 'position', 'weight'];
-               var ilen = props.length;
-               var i = 0;
-               var prop;
+       configure(chart, item, options) {
+               const props = ['fullWidth', 'position', 'weight'];
+               const ilen = props.length;
+               let i = 0;
+               let prop;
 
                for (; i < ilen; ++i) {
                        prop = props[i];
@@ -302,19 +299,19 @@ export default {
         * @param {number} width - the width to fit into
         * @param {number} height - the height to fit into
         */
-       update: function(chart, width, height) {
+       update(chart, width, height) {
                if (!chart) {
                        return;
                }
 
-               var layoutOptions = chart.options.layout || {};
-               var padding = toPadding(layoutOptions.padding);
+               const layoutOptions = chart.options.layout || {};
+               const padding = toPadding(layoutOptions.padding);
 
-               var availableWidth = width - padding.width;
-               var availableHeight = height - padding.height;
-               var boxes = buildLayoutBoxes(chart.boxes);
-               var verticalBoxes = boxes.vertical;
-               var horizontalBoxes = boxes.horizontal;
+               const availableWidth = width - padding.width;
+               const availableHeight = height - padding.height;
+               const boxes = buildLayoutBoxes(chart.boxes);
+               const verticalBoxes = boxes.vertical;
+               const horizontalBoxes = boxes.horizontal;
 
                // Essentially we now have any number of boxes on each of the 4 sides.
                // Our canvas looks like the following.
@@ -343,15 +340,15 @@ export default {
                // |----------------------------------------------------|
                //
 
-               var params = Object.freeze({
+               const params = Object.freeze({
                        outerWidth: width,
                        outerHeight: height,
-                       padding: padding,
-                       availableWidth: availableWidth,
+                       padding,
+                       availableWidth,
                        vBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,
                        hBoxMaxHeight: availableHeight / 2
                });
-               var chartArea = extend({
+               const chartArea = extend({
                        maxPadding: extend({}, padding),
                        w: availableWidth,
                        h: availableHeight,
@@ -391,8 +388,8 @@ export default {
                };
 
                // Finally update boxes in chartArea (radial scale for example)
-               each(boxes.chartArea, function(layout) {
-                       var box = layout.box;
+               each(boxes.chartArea, (layout) => {
+                       const box = layout.box;
                        extend(box, chart.chartArea);
                        box.update(chartArea.w, chartArea.h);
                });
index 9005280139633d563ae40ee468eb957e46804efd..f530ac9ffc5f8a89b6e19dec2e6c73eea5ab6ba1 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import defaults from './core.defaults';
 import {clone} from '../helpers/helpers.core';
 
@@ -38,8 +36,8 @@ class PluginService {
         * @param {IPlugin[]|IPlugin} plugins plugin instance(s).
         */
        register(plugins) {
-               var p = this._plugins;
-               ([]).concat(plugins).forEach(function(plugin) {
+               const p = this._plugins;
+               ([]).concat(plugins).forEach((plugin) => {
                        if (p.indexOf(plugin) === -1) {
                                p.push(plugin);
                        }
@@ -53,9 +51,9 @@ class PluginService {
         * @param {IPlugin[]|IPlugin} plugins plugin instance(s).
         */
        unregister(plugins) {
-               var p = this._plugins;
-               ([]).concat(plugins).forEach(function(plugin) {
-                       var idx = p.indexOf(plugin);
+               const p = this._plugins;
+               ([]).concat(plugins).forEach((plugin) => {
+                       const idx = p.indexOf(plugin);
                        if (idx !== -1) {
                                p.splice(idx, 1);
                        }
@@ -101,9 +99,9 @@ class PluginService {
         * @returns {boolean} false if any of the plugins return false, else returns true.
         */
        notify(chart, hook, args) {
-               var descriptors = this._descriptors(chart);
-               var ilen = descriptors.length;
-               var i, descriptor, plugin, params, method;
+               const descriptors = this._descriptors(chart);
+               const ilen = descriptors.length;
+               let i, descriptor, plugin, params, method;
 
                for (i = 0; i < ilen; ++i) {
                        descriptor = descriptors[i];
@@ -128,24 +126,24 @@ class PluginService {
         * @private
         */
        _descriptors(chart) {
-               var cache = chart.$plugins || (chart.$plugins = {});
+               const cache = chart.$plugins || (chart.$plugins = {});
                if (cache.id === this._cacheId) {
                        return cache.descriptors;
                }
 
-               var plugins = [];
-               var descriptors = [];
-               var config = (chart && chart.config) || {};
-               var options = (config.options && config.options.plugins) || {};
+               const plugins = [];
+               const descriptors = [];
+               const config = (chart && chart.config) || {};
+               const options = (config.options && config.options.plugins) || {};
 
-               this._plugins.concat(config.plugins || []).forEach(function(plugin) {
-                       var idx = plugins.indexOf(plugin);
+               this._plugins.concat(config.plugins || []).forEach((plugin) => {
+                       const idx = plugins.indexOf(plugin);
                        if (idx !== -1) {
                                return;
                        }
 
-                       var id = plugin.id;
-                       var opts = options[id];
+                       const id = plugin.id;
+                       let opts = options[id];
                        if (opts === false) {
                                return;
                        }
@@ -156,7 +154,7 @@ class PluginService {
 
                        plugins.push(plugin);
                        descriptors.push({
-                               plugin: plugin,
+                               plugin,
                                options: opts || {}
                        });
                });
index 44d6bdf1ac179a7dcb00933ae987827a6b7a9c0a..0a4ac9cb642645fa3e91728e4f1d64a0387da4b8 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import defaults from './core.defaults';
 import Element from './core.element';
 import {_alignPixel, _measureText} from '../helpers/helpers.canvas';
@@ -103,10 +101,10 @@ function getPixelForGridLine(scale, index, offsetGridLines) {
 }
 
 function garbageCollect(caches, length) {
-       each(caches, function(cache) {
-               var gc = cache.gc;
-               var gcLen = gc.length / 2;
-               var i;
+       each(caches, (cache) => {
+               const gc = cache.gc;
+               const gcLen = gc.length / 2;
+               let i;
                if (gcLen > length) {
                        for (i = 0; i < gcLen; ++i) {
                                delete cache.data[gc[i]];
@@ -150,7 +148,6 @@ function getEvenSpacing(arr) {
 function calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {
        const evenMajorSpacing = getEvenSpacing(majorIndices);
        const spacing = ticks.length / ticksLimit;
-       let factors, factor, i, ilen;
 
        // If the major ticks are evenly spaced apart, place the minor ticks
        // so that they divide the major ticks into even chunks
@@ -158,9 +155,9 @@ function calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {
                return Math.max(spacing, 1);
        }
 
-       factors = _factorize(evenMajorSpacing);
-       for (i = 0, ilen = factors.length - 1; i < ilen; i++) {
-               factor = factors[i];
+       const factors = _factorize(evenMajorSpacing);
+       for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {
+               const factor = factors[i];
                if (factor > spacing) {
                        return factor;
                }
@@ -224,6 +221,7 @@ function skip(ticks, newTicks, spacing, majorStart, majorEnd) {
 
 class Scale extends Element {
 
+       // eslint-disable-next-line max-statements
        constructor(cfg) {
                super();
 
@@ -351,15 +349,16 @@ class Scale extends Element {
         */
        _getMinMax(canStack) {
                const me = this;
+               // eslint-disable-next-line prefer-const
                let {min, max, minDefined, maxDefined} = me._getUserBounds();
-               let i, ilen, metas, minmax;
+               let minmax;
 
                if (minDefined && maxDefined) {
                        return {min, max};
                }
 
-               metas = me._getMatchingVisibleMetas();
-               for (i = 0, ilen = metas.length; i < ilen; ++i) {
+               const metas = me._getMatchingVisibleMetas();
+               for (let i = 0, ilen = metas.length; i < ilen; ++i) {
                        minmax = metas[i].controller._getMinMax(me, canStack);
                        if (!minDefined) {
                                min = Math.min(min, minmax.min);
@@ -430,7 +429,6 @@ class Scale extends Element {
                const me = this;
                const tickOpts = me.options.ticks;
                const sampleSize = tickOpts.sampleSize;
-               let samplingEnabled;
 
                // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)
                me.beforeUpdate();
@@ -470,7 +468,7 @@ class Scale extends Element {
 
                // Compute tick rotation and fit using a sampled subset of labels
                // We generally don't need to compute the size of every single label for determining scale size
-               samplingEnabled = sampleSize < me.ticks.length;
+               const samplingEnabled = sampleSize < me.ticks.length;
                me._convertTicksToLabels(samplingEnabled ? sample(me.ticks, sampleSize) : me.ticks);
 
                // _configure is called twice, once here, once from core.controller.updateLayout.
@@ -615,20 +613,20 @@ class Scale extends Element {
                const minRotation = tickOpts.minRotation || 0;
                const maxRotation = tickOpts.maxRotation;
                let labelRotation = minRotation;
-               let labelSizes, maxLabelWidth, maxLabelHeight, maxWidth, tickWidth, maxHeight, maxLabelDiagonal;
+               let tickWidth, maxHeight, maxLabelDiagonal;
 
                if (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) {
                        me.labelRotation = minRotation;
                        return;
                }
 
-               labelSizes = me._getLabelSizes();
-               maxLabelWidth = labelSizes.widest.width;
-               maxLabelHeight = labelSizes.highest.height - labelSizes.highest.offset;
+               const labelSizes = me._getLabelSizes();
+               const maxLabelWidth = labelSizes.widest.width;
+               const maxLabelHeight = labelSizes.highest.height - labelSizes.highest.offset;
 
                // Estimate the width of each grid based on the canvas width, the maximum
                // label width and the number of tick intervals
-               maxWidth = Math.min(me.maxWidth, me.chart.width - maxLabelWidth);
+               const maxWidth = Math.min(me.maxWidth, me.chart.width - maxLabelWidth);
                tickWidth = options.offset ? me.maxWidth / numTicks : maxWidth / (numTicks - 1);
 
                // Allow 3 pixels x2 padding either side for label readability
@@ -734,7 +732,7 @@ class Scale extends Element {
                        } else {
                                // A vertical axis is more constrained by the width. Labels are the
                                // dominant factor here, so get that length first and account for padding
-                               var labelWidth = tickOpts.mirror ? 0 :
+                               const labelWidth = tickOpts.mirror ? 0 :
                                        // use lineSpace for consistency with horizontal axis
                                        // tickPadding is not implemented for horizontal
                                        widestLabelSize.width + tickPadding + lineSpace;
@@ -838,7 +836,7 @@ class Scale extends Element {
                        ticks = sample(ticks, sampleSize);
                }
                const length = ticks.length;
-               let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel, widest, highest;
+               let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;
 
                for (i = 0; i < length; ++i) {
                        label = ticks[i].label;
@@ -868,8 +866,8 @@ class Scale extends Element {
                }
                garbageCollect(caches, length);
 
-               widest = widths.indexOf(Math.max.apply(null, widths));
-               highest = heights.indexOf(Math.max.apply(null, heights));
+               const widest = widths.indexOf(Math.max.apply(null, widths));
+               const highest = heights.indexOf(Math.max.apply(null, heights));
 
                function valueAt(idx) {
                        return {
@@ -1162,18 +1160,18 @@ class Scale extends Element {
                        }
 
                        items.push({
-                               tx1: tx1,
-                               ty1: ty1,
-                               tx2: tx2,
-                               ty2: ty2,
-                               x1: x1,
-                               y1: y1,
-                               x2: x2,
-                               y2: y2,
+                               tx1,
+                               ty1,
+                               tx2,
+                               ty2,
+                               x1,
+                               y1,
+                               x2,
+                               y2,
                                width: lineWidth,
                                color: lineColor,
-                               borderDash: borderDash,
-                               borderDashOffset: borderDashOffset,
+                               borderDash,
+                               borderDashOffset,
                        });
                }
 
@@ -1256,13 +1254,13 @@ class Scale extends Element {
                        }
 
                        items.push({
-                               x: x,
-                               y: y,
-                               rotation: rotation,
-                               label: label,
-                               font: font,
-                               textOffset: textOffset,
-                               textAlign: textAlign
+                               x,
+                               y,
+                               rotation,
+                               label,
+                               font,
+                               textOffset,
+                               textAlign
                        });
                }
 
@@ -1406,7 +1404,7 @@ class Scale extends Element {
        /**
         * @private
         */
-       _drawTitle() {
+       _drawTitle(chartArea) { // eslint-disable-line no-unused-vars
                const me = this;
                const ctx = me.ctx;
                const options = me.options;
@@ -1501,22 +1499,22 @@ class Scale extends Element {
                        // backward compatibility: draw has been overridden by custom scale
                        return [{
                                z: tz,
-                               draw: function() {
-                                       me.draw.apply(me, arguments);
+                               draw(chartArea) {
+                                       me.draw(chartArea);
                                }
                        }];
                }
 
                return [{
                        z: gz,
-                       draw: function() {
-                               me._drawGrid.apply(me, arguments);
-                               me._drawTitle.apply(me, arguments);
+                       draw(chartArea) {
+                               me._drawGrid(chartArea);
+                               me._drawTitle();
                        }
                }, {
                        z: tz,
-                       draw: function() {
-                               me._drawLabels.apply(me, arguments);
+                       draw(chartArea) {
+                               me._drawLabels(chartArea);
                        }
                }];
        }
@@ -1555,7 +1553,7 @@ class Scale extends Element {
                        chart: me.chart,
                        scale: me,
                        tick: me.ticks[index],
-                       index: index
+                       index
                };
                return extend(_parseFont({
                        fontFamily: resolve([options.fontFamily], context),
index 7b0ad4763097bf7633f6d98027c0ef22a3b91d64..01713ce03a4c3964f7981e8fc31ca8fb6b7d7950 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import defaults from './core.defaults';
 import {clone, each, extend, merge} from '../helpers/helpers.core';
 import layouts from './core.layouts';
@@ -13,26 +11,26 @@ export default {
 
        // Scale config defaults
        defaults: {},
-       registerScaleType: function(type, scaleConstructor, scaleDefaults) {
+       registerScaleType(type, scaleConstructor, scaleDefaults) {
                this.constructors[type] = scaleConstructor;
                this.defaults[type] = clone(scaleDefaults);
        },
-       getScaleConstructor: function(type) {
+       getScaleConstructor(type) {
                return Object.prototype.hasOwnProperty.call(this.constructors, type) ? this.constructors[type] : undefined;
        },
-       getScaleDefaults: function(type) {
+       getScaleDefaults(type) {
                // Return the scale defaults merged with the global settings so that we always use the latest ones
                return Object.prototype.hasOwnProperty.call(this.defaults, type) ? merge({}, [defaults.scale, this.defaults[type]]) : {};
        },
-       updateScaleDefaults: function(type, additions) {
-               var me = this;
+       updateScaleDefaults(type, additions) {
+               const me = this;
                if (Object.prototype.hasOwnProperty.call(me.defaults, type)) {
                        me.defaults[type] = extend(me.defaults[type], additions);
                }
        },
-       addScalesToLayout: function(chart) {
+       addScalesToLayout(chart) {
                // Adds each scale to the chart.boxes array to be sized accordingly
-               each(chart.scales, function(scale) {
+               each(chart.scales, (scale) => {
                        // Set ILayoutItem parameters for backwards compatibility
                        scale.fullWidth = scale.options.fullWidth;
                        scale.position = scale.options.position;
index 85a669e233553a7a0a35d03ceecf6d476454ed1e..1b82e4477f37faa79f97932145e27315ea18a16e 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import {isArray} from '../helpers/helpers.core';
 import {log10} from '../helpers/helpers.math';
 
@@ -19,7 +17,7 @@ export default {
                 * @param value the value to display
                 * @return {string|string[]} the label to display
                 */
-               values: function(value) {
+               values(value) {
                        return isArray(value) ? value : '' + value;
                },
 
@@ -31,7 +29,7 @@ export default {
                 * @param ticks {object[]} the list of ticks being converted
                 * @return {string} string representation of the tickValue parameter
                 */
-               numeric: function(tickValue, index, ticks) {
+               numeric(tickValue, index, ticks) {
                        if (tickValue === 0) {
                                return '0'; // never show decimal places for 0
                        }
index 32e29ccec3be013be4fcc34fd861b4a2e27ce230..984310890c067bf16d27e3dca7ae4e8c95e4ee30 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import defaults from '../core/core.defaults';
 import Element from '../core/core.element';
 import {extend} from '../helpers/helpers.core';
@@ -150,7 +148,7 @@ class Arc extends Element {
                        y: me.y,
                        innerRadius: me.innerRadius,
                        outerRadius: Math.max(me.outerRadius - pixelMargin, 0),
-                       pixelMargin: pixelMargin,
+                       pixelMargin,
                        startAngle: me.startAngle,
                        endAngle: me.endAngle,
                        fullCircles: Math.floor(me.circumference / TAU)
index bc03e87703ac6511a7cb6f5462299cd0e1fc29ff..84582438e8658dad33afa8efe5bd17b26e20bb5d 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import defaults from '../core/core.defaults';
 import Element from '../core/core.element';
 import {extend} from '../helpers/helpers.core';
@@ -72,8 +70,9 @@ function pathSegment(ctx, line, segment, params) {
        const {points, options} = line;
        const lineMethod = getLineMethod(options);
        const count = points.length;
+       // eslint-disable-next-line prefer-const
        let {move = true, reverse} = params || {};
-       let ilen = end < start ? count + end - start : end - start;
+       const ilen = end < start ? count + end - start : end - start;
        let i, point, prev;
 
        for (i = 0; i <= ilen; ++i) {
@@ -117,8 +116,8 @@ function fastPathSegment(ctx, line, segment, params) {
        const points = line.points;
        const count = points.length;
        const {start, end} = segment;
-       let {move = true, reverse} = params || {};
-       let ilen = end < start ? count + end - start : end - start;
+       const {move = true, reverse} = params || {};
+       const ilen = end < start ? count + end - start : end - start;
        let avgX = 0;
        let countX = 0;
        let i, point, prevX, minY, maxY, lastY;
@@ -291,7 +290,7 @@ class Line extends Element {
                                continue;
                        }
                        const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));
-                       let interpolated = _interpolate(p1, p2, t, options.steppedLine);
+                       const interpolated = _interpolate(p1, p2, t, options.steppedLine);
                        interpolated[property] = point[property];
                        result.push(interpolated);
                }
index 6174b338665b848d319e9c27b654f66a87081bdd..82a8089bd79d4d0387108317bf556a5e513f8459 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import defaults from '../core/core.defaults';
 import Element from '../core/core.element';
 import {_isPointInArea, drawPoint} from '../helpers/helpers.canvas';
index 1d9cb9eeca81c70921b4b42fbabe9313ddf49cea..b4ca3fa8adb56bdab2c2c094b33317eeb467cb6f 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import defaults from '../core/core.defaults';
 import Element from '../core/core.element';
 import {extend, isObject} from '../helpers/helpers.core';
@@ -22,7 +20,7 @@ defaults.set('elements', {
  * @private
  */
 function getBarBounds(bar) {
-       var x1, x2, y1, y2, half;
+       let x1, x2, y1, y2, half;
 
        if (bar.horizontal) {
                half = bar.height / 2;
@@ -51,8 +49,8 @@ function swap(orig, v1, v2) {
 }
 
 function parseBorderSkipped(bar) {
-       var edge = bar.options.borderSkipped;
-       var res = {};
+       let edge = bar.options.borderSkipped;
+       const res = {};
 
        if (!edge) {
                return res;
@@ -75,9 +73,9 @@ function skipOrLimit(skip, value, min, max) {
 }
 
 function parseBorderWidth(bar, maxW, maxH) {
-       var value = bar.options.borderWidth;
-       var skip = parseBorderSkipped(bar);
-       var t, r, b, l;
+       const value = bar.options.borderWidth;
+       const skip = parseBorderSkipped(bar);
+       let t, r, b, l;
 
        if (isObject(value)) {
                t = +value.top || 0;
@@ -97,10 +95,10 @@ function parseBorderWidth(bar, maxW, maxH) {
 }
 
 function boundingRects(bar) {
-       var bounds = getBarBounds(bar);
-       var width = bounds.right - bounds.left;
-       var height = bounds.bottom - bounds.top;
-       var border = parseBorderWidth(bar, width / 2, height / 2);
+       const bounds = getBarBounds(bar);
+       const width = bounds.right - bounds.left;
+       const height = bounds.bottom - bounds.top;
+       const border = parseBorderWidth(bar, width / 2, height / 2);
 
        return {
                outer: {
@@ -119,9 +117,9 @@ function boundingRects(bar) {
 }
 
 function inRange(bar, x, y) {
-       var skipX = x === null;
-       var skipY = y === null;
-       var bounds = !bar || (skipX && skipY) ? false : getBarBounds(bar);
+       const skipX = x === null;
+       const skipY = y === null;
+       const bounds = !bar || (skipX && skipY) ? false : getBarBounds(bar);
 
        return bounds
                && (skipX || x >= bounds.left && x <= bounds.right)
index 4877df6ba8847a67f6ba247943ddd1202367465a..dfb185c2ae95aa05f634ea3040702369b081451f 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import Arc from './element.arc';
 import Line from './element.line';
 import Point from './element.point';
index 36c73408dff1abc02b1874ee37da98c860fb211f..314311a216390361a586134b7a150f5c0fe2b637 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import {isArray} from './helpers.core';
 
 /**
@@ -37,8 +35,8 @@ export function _measureText(ctx, data, gc, longest, string) {
  */
 export function _longestText(ctx, font, arrayOfThings, cache) {
        cache = cache || {};
-       var data = cache.data = cache.data || {};
-       var gc = cache.garbageCollect = cache.garbageCollect || [];
+       let data = cache.data = cache.data || {};
+       let gc = cache.garbageCollect = cache.garbageCollect || [];
 
        if (cache.font !== font) {
                data = cache.data = {};
@@ -47,9 +45,9 @@ export function _longestText(ctx, font, arrayOfThings, cache) {
        }
 
        ctx.font = font;
-       var longest = 0;
-       var ilen = arrayOfThings.length;
-       var i, j, jlen, thing, nestedThing;
+       let longest = 0;
+       const ilen = arrayOfThings.length;
+       let i, j, jlen, thing, nestedThing;
        for (i = 0; i < ilen; i++) {
                thing = arrayOfThings[i];
 
@@ -69,7 +67,7 @@ export function _longestText(ctx, font, arrayOfThings, cache) {
                }
        }
 
-       var gcLen = gc.length / 2;
+       const gcLen = gc.length / 2;
        if (gcLen > arrayOfThings.length) {
                for (i = 0; i < gcLen; i++) {
                        delete data[gc[i]];
@@ -102,11 +100,11 @@ export function clear(chart) {
 }
 
 export function drawPoint(ctx, options, x, y) {
-       var type, xOffset, yOffset, size, cornerRadius;
-       var style = options.pointStyle;
-       var rotation = options.rotation;
-       var radius = options.radius;
-       var rad = (rotation || 0) * RAD_PER_DEG;
+       let type, xOffset, yOffset, size, cornerRadius;
+       const style = options.pointStyle;
+       const rotation = options.rotation;
+       const radius = options.radius;
+       let rad = (rotation || 0) * RAD_PER_DEG;
 
        if (style && typeof style === 'object') {
                type = style.toString();
index e8e7c48ff674cfba22f6f8e9f8b61504238b92da..06ad935e4cf90971072ece5524e56880b86af9ed 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 /**
  * Binary search
  * @param {array} table - the table search. must be sorted!
index 0ddd8d761f8b224eba0729fe53521aec92a2e5d5..be5a1cd4195490878716d59ea88b9930787f416e 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 /**
  * @namespace Chart.helpers
  */
@@ -14,7 +12,7 @@ export function noop() {}
  * @function
  */
 export const uid = (function() {
-       var id = 0;
+       let id = 0;
        return function() {
                return id++;
        };
@@ -40,7 +38,7 @@ export function isArray(value) {
        if (Array.isArray && Array.isArray(value)) {
                return true;
        }
-       var type = Object.prototype.toString.call(value);
+       const type = Object.prototype.toString.call(value);
        if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {
                return true;
        }
@@ -62,9 +60,7 @@ export function isObject(value) {
  * @param {*} value  - The value to test.
  * @returns {boolean}
  */
-const isNumberFinite = (value) => {
-       return (typeof value === 'number' || value instanceof Number) && isFinite(+value);
-};
+const isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);
 export {
        isNumberFinite as isFinite,
 };
@@ -114,7 +110,7 @@ export function callback(fn, args, thisArg) {
  * @param {boolean} [reverse] - If true, iterates backward on the loopable.
  */
 export function each(loopable, fn, thisArg, reverse) {
-       var i, len, keys;
+       let i, len, keys;
        if (isArray(loopable)) {
                len = loopable.length;
                if (reverse) {
@@ -143,7 +139,7 @@ export function each(loopable, fn, thisArg, reverse) {
  * @returns {boolean}
  */
 export function arrayEquals(a0, a1) {
-       var i, ilen, v0, v1;
+       let i, ilen, v0, v1;
 
        if (!a0 || !a1 || a0.length !== a1.length) {
                return false;
@@ -203,10 +199,10 @@ export function clone(source) {
        }
 
        if (isObject(source)) {
-               var target = {};
-               var keys = Object.keys(source);
-               var klen = keys.length;
-               var k = 0;
+               const target = {};
+               const keys = Object.keys(source);
+               const klen = keys.length;
+               let k = 0;
 
                for (; k < klen; ++k) {
                        target[keys[k]] = clone(source[keys[k]]);
@@ -224,8 +220,8 @@ export function clone(source) {
  * @private
  */
 export function _merger(key, target, source, options) {
-       var tval = target[key];
-       var sval = source[key];
+       const tval = target[key];
+       const sval = source[key];
 
        if (isObject(tval) && isObject(sval)) {
                // eslint-disable-next-line no-use-before-define
@@ -245,25 +241,24 @@ export function _merger(key, target, source, options) {
  * @returns {object} The `target` object.
  */
 export function merge(target, source, options) {
-       var sources = isArray(source) ? source : [source];
-       var ilen = sources.length;
-       var merger, i, keys, klen, k;
+       const sources = isArray(source) ? source : [source];
+       const ilen = sources.length;
 
        if (!isObject(target)) {
                return target;
        }
 
        options = options || {};
-       merger = options.merger || _merger;
+       const merger = options.merger || _merger;
 
-       for (i = 0; i < ilen; ++i) {
+       for (let i = 0; i < ilen; ++i) {
                source = sources[i];
                if (!isObject(source)) {
                        continue;
                }
 
-               keys = Object.keys(source);
-               for (k = 0, klen = keys.length; k < klen; ++k) {
+               const keys = Object.keys(source);
+               for (let k = 0, klen = keys.length; k < klen; ++k) {
                        merger(keys[k], target, source, options);
                }
        }
@@ -288,8 +283,8 @@ export function mergeIf(target, source) {
  * @private
  */
 export function _mergerIf(key, target, source) {
-       var tval = target[key];
-       var sval = source[key];
+       const tval = target[key];
+       const sval = source[key];
 
        if (isObject(tval) && isObject(sval)) {
                mergeIf(tval, sval);
@@ -305,9 +300,9 @@ export function _mergerIf(key, target, source) {
  * @param {object} argN - Additional objects containing properties to merge in target.
  * @returns {object} The `target` object.
  */
-export const extend = Object.assign || function(target) {
-       return merge(target, [].slice.call(arguments, 1), {
-               merger: function(key, dst, src) {
+export const extend = Object.assign || function(target, ...args) {
+       return merge(target, args, {
+               merger(key, dst, src) {
                        dst[key] = src[key];
                }
        });
@@ -317,12 +312,14 @@ export const extend = Object.assign || function(target) {
  * Basic javascript inheritance based on the model created in Backbone.js
  */
 export function inherits(extensions) {
-       var me = this;
-       var ChartElement = (extensions && Object.prototype.hasOwnProperty.call(extensions, 'constructor')) ? extensions.constructor : function() {
+       // eslint-disable-next-line no-invalid-this
+       const me = this;
+       const ChartElement = (extensions && Object.prototype.hasOwnProperty.call(extensions, 'constructor')) ? extensions.constructor : function() {
+               // eslint-disable-next-line prefer-rest-params
                return me.apply(this, arguments);
        };
 
-       var Surrogate = function() {
+       const Surrogate = function() {
                this.constructor = ChartElement;
        };
 
index afac52a0eec21b744a98229bd27efec74a66299b..b4a4fe9ab3852dc8fb5d6bfe61ee591dda74195c 100644 (file)
@@ -9,22 +9,22 @@ export function splineCurve(firstPoint, middlePoint, afterPoint, t) {
 
        // This function must also respect "skipped" points
 
-       var previous = firstPoint.skip ? middlePoint : firstPoint;
-       var current = middlePoint;
-       var next = afterPoint.skip ? middlePoint : afterPoint;
+       const previous = firstPoint.skip ? middlePoint : firstPoint;
+       const current = middlePoint;
+       const next = afterPoint.skip ? middlePoint : afterPoint;
 
-       var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));
-       var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));
+       const d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));
+       const d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));
 
-       var s01 = d01 / (d01 + d12);
-       var s12 = d12 / (d01 + d12);
+       let s01 = d01 / (d01 + d12);
+       let s12 = d12 / (d01 + d12);
 
        // If all points are the same, s01 & s02 will be inf
        s01 = isNaN(s01) ? 0 : s01;
        s12 = isNaN(s12) ? 0 : s12;
 
-       var fa = t * s01; // scaling factor for triangle Ta
-       var fb = t * s12;
+       const fa = t * s01; // scaling factor for triangle Ta
+       const fb = t * s12;
 
        return {
                previous: {
@@ -44,17 +44,15 @@ export function splineCurveMonotone(points) {
        // between the dataset discrete points due to the interpolation.
        // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation
 
-       var pointsWithTangents = (points || []).map(function(point) {
-               return {
-                       model: point,
-                       deltaK: 0,
-                       mK: 0
-               };
-       });
+       const pointsWithTangents = (points || []).map((point) => ({
+               model: point,
+               deltaK: 0,
+               mK: 0
+       }));
 
        // Calculate slopes (deltaK) and initialize tangents (mK)
-       var pointsLen = pointsWithTangents.length;
-       var i, pointBefore, pointCurrent, pointAfter;
+       const pointsLen = pointsWithTangents.length;
+       let i, pointBefore, pointCurrent, pointAfter;
        for (i = 0; i < pointsLen; ++i) {
                pointCurrent = pointsWithTangents[i];
                if (pointCurrent.model.skip) {
@@ -64,7 +62,7 @@ export function splineCurveMonotone(points) {
                pointBefore = i > 0 ? pointsWithTangents[i - 1] : null;
                pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;
                if (pointAfter && !pointAfter.model.skip) {
-                       var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);
+                       const slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);
 
                        // In the case of two points that appear at the same x pixel, slopeDeltaX is 0
                        pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;
@@ -82,7 +80,7 @@ export function splineCurveMonotone(points) {
        }
 
        // Adjust tangents to ensure monotonic properties
-       var alphaK, betaK, tauK, squaredMagnitude;
+       let alphaK, betaK, tauK, squaredMagnitude;
        for (i = 0; i < pointsLen - 1; ++i) {
                pointCurrent = pointsWithTangents[i];
                pointAfter = pointsWithTangents[i + 1];
@@ -108,7 +106,7 @@ export function splineCurveMonotone(points) {
        }
 
        // Compute control points
-       var deltaX;
+       let deltaX;
        for (i = 0; i < pointsLen; ++i) {
                pointCurrent = pointsWithTangents[i];
                if (pointCurrent.model.skip) {
@@ -135,7 +133,7 @@ function capControlPoint(pt, min, max) {
 }
 
 function capBezierPoints(points, area) {
-       var i, ilen, point;
+       let i, ilen, point;
        for (i = 0, ilen = points.length; i < ilen; ++i) {
                point = points[i];
                if (!_isPointInArea(point, area)) {
@@ -156,13 +154,11 @@ function capBezierPoints(points, area) {
  * @private
  */
 export function _updateBezierControlPoints(points, options, area, loop) {
-       var i, ilen, point, controlPoints;
+       let i, ilen, point, controlPoints;
 
        // Only consider points that are drawn in case the spanGaps option is used
        if (options.spanGaps) {
-               points = points.filter(function(pt) {
-                       return !pt.skip;
-               });
+               points = points.filter((pt) => !pt.skip);
        }
 
        if (options.cubicInterpolationMode === 'monotone') {
index 899dc086b3e225597139c0d5903bfcf88d8c2f7e..86114ff503ebed0339ebe134f360b355b89d8bb1 100644 (file)
@@ -10,7 +10,7 @@ function isConstrainedValue(value) {
  * @private
  */
 function _getParentNode(domNode) {
-       var parent = domNode.parentNode;
+       let parent = domNode.parentNode;
        if (parent && parent.toString() === '[object ShadowRoot]') {
                parent = parent.host;
        }
@@ -19,7 +19,7 @@ function _getParentNode(domNode) {
 
 // Private helper function to convert max-width/max-height values that may be percentages into a number
 function parseMaxStyle(styleValue, node, parentProperty) {
-       var valueInPixels;
+       let valueInPixels;
        if (typeof styleValue === 'string') {
                valueInPixels = parseInt(styleValue, 10);
 
@@ -43,13 +43,13 @@ function parseMaxStyle(styleValue, node, parentProperty) {
  * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser}
  */
 function getConstraintDimension(domNode, maxStyle, percentageProperty) {
-       var view = document.defaultView;
-       var parentNode = _getParentNode(domNode);
-       var constrainedNode = view.getComputedStyle(domNode)[maxStyle];
-       var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];
-       var hasCNode = isConstrainedValue(constrainedNode);
-       var hasCContainer = isConstrainedValue(constrainedContainer);
-       var infinity = Number.POSITIVE_INFINITY;
+       const view = document.defaultView;
+       const parentNode = _getParentNode(domNode);
+       const constrainedNode = view.getComputedStyle(domNode)[maxStyle];
+       const constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];
+       const hasCNode = isConstrainedValue(constrainedNode);
+       const hasCContainer = isConstrainedValue(constrainedContainer);
+       const infinity = Number.POSITIVE_INFINITY;
 
        if (hasCNode || hasCContainer) {
                return Math.min(
@@ -84,12 +84,12 @@ function _calculatePadding(container, padding, parentDimension) {
 }
 
 export function getRelativePosition(evt, chart) {
-       var mouseX, mouseY;
-       var e = evt.originalEvent || evt;
-       var canvasElement = evt.target || evt.srcElement;
-       var boundingRect = canvasElement.getBoundingClientRect();
+       let mouseX, mouseY;
+       const e = evt.originalEvent || evt;
+       const canvasElement = evt.target || evt.srcElement;
+       const boundingRect = canvasElement.getBoundingClientRect();
 
-       var touches = e.touches;
+       const touches = e.touches;
        if (touches && touches.length > 0) {
                mouseX = touches[0].clientX;
                mouseY = touches[0].clientY;
@@ -102,12 +102,12 @@ export function getRelativePosition(evt, chart) {
        // Scale mouse coordinates into canvas coordinates
        // by following the pattern laid out by 'jerryj' in the comments of
        // https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/
-       var paddingLeft = parseFloat(getStyle(canvasElement, 'padding-left'));
-       var paddingTop = parseFloat(getStyle(canvasElement, 'padding-top'));
-       var paddingRight = parseFloat(getStyle(canvasElement, 'padding-right'));
-       var paddingBottom = parseFloat(getStyle(canvasElement, 'padding-bottom'));
-       var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;
-       var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;
+       const paddingLeft = parseFloat(getStyle(canvasElement, 'padding-left'));
+       const paddingTop = parseFloat(getStyle(canvasElement, 'padding-top'));
+       const paddingRight = parseFloat(getStyle(canvasElement, 'padding-right'));
+       const paddingBottom = parseFloat(getStyle(canvasElement, 'padding-bottom'));
+       const width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;
+       const height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;
 
        // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However
        // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here
@@ -121,32 +121,32 @@ export function getRelativePosition(evt, chart) {
 }
 
 export function getMaximumWidth(domNode) {
-       var container = _getParentNode(domNode);
+       const container = _getParentNode(domNode);
        if (!container) {
                return domNode.clientWidth;
        }
 
-       var clientWidth = container.clientWidth;
-       var paddingLeft = _calculatePadding(container, 'padding-left', clientWidth);
-       var paddingRight = _calculatePadding(container, 'padding-right', clientWidth);
+       const clientWidth = container.clientWidth;
+       const paddingLeft = _calculatePadding(container, 'padding-left', clientWidth);
+       const paddingRight = _calculatePadding(container, 'padding-right', clientWidth);
 
-       var w = clientWidth - paddingLeft - paddingRight;
-       var cw = getConstraintWidth(domNode);
+       const w = clientWidth - paddingLeft - paddingRight;
+       const cw = getConstraintWidth(domNode);
        return isNaN(cw) ? w : Math.min(w, cw);
 }
 
 export function getMaximumHeight(domNode) {
-       var container = _getParentNode(domNode);
+       const container = _getParentNode(domNode);
        if (!container) {
                return domNode.clientHeight;
        }
 
-       var clientHeight = container.clientHeight;
-       var paddingTop = _calculatePadding(container, 'padding-top', clientHeight);
-       var paddingBottom = _calculatePadding(container, 'padding-bottom', clientHeight);
+       const clientHeight = container.clientHeight;
+       const paddingTop = _calculatePadding(container, 'padding-top', clientHeight);
+       const paddingBottom = _calculatePadding(container, 'padding-bottom', clientHeight);
 
-       var h = clientHeight - paddingTop - paddingBottom;
-       var ch = getConstraintHeight(domNode);
+       const h = clientHeight - paddingTop - paddingBottom;
+       const ch = getConstraintHeight(domNode);
        return isNaN(ch) ? h : Math.min(h, ch);
 }
 
index 586de37f0e45a33ac878fa5d5d0c13d191461a1d..b3ccd4fb106ff2e678b2f2eee42971b7b8e8c155 100644 (file)
@@ -1,96 +1,94 @@
-'use strict';
-
 /**
  * Easing functions adapted from Robert Penner's easing equations.
  * @namespace Chart.helpers.easing.effects
  * @see http://www.robertpenner.com/easing/
  */
-export const effects = {
-       linear: function(t) {
+const effects = {
+       linear(t) {
                return t;
        },
 
-       easeInQuad: function(t) {
+       easeInQuad(t) {
                return t * t;
        },
 
-       easeOutQuad: function(t) {
+       easeOutQuad(t) {
                return -t * (t - 2);
        },
 
-       easeInOutQuad: function(t) {
+       easeInOutQuad(t) {
                if ((t /= 0.5) < 1) {
                        return 0.5 * t * t;
                }
                return -0.5 * ((--t) * (t - 2) - 1);
        },
 
-       easeInCubic: function(t) {
+       easeInCubic(t) {
                return t * t * t;
        },
 
-       easeOutCubic: function(t) {
-               return (t = t - 1) * t * t + 1;
+       easeOutCubic(t) {
+               return (t -= 1) * t * t + 1;
        },
 
-       easeInOutCubic: function(t) {
+       easeInOutCubic(t) {
                if ((t /= 0.5) < 1) {
                        return 0.5 * t * t * t;
                }
                return 0.5 * ((t -= 2) * t * t + 2);
        },
 
-       easeInQuart: function(t) {
+       easeInQuart(t) {
                return t * t * t * t;
        },
 
-       easeOutQuart: function(t) {
-               return -((t = t - 1) * t * t * t - 1);
+       easeOutQuart(t) {
+               return -((t -= 1) * t * t * t - 1);
        },
 
-       easeInOutQuart: function(t) {
+       easeInOutQuart(t) {
                if ((t /= 0.5) < 1) {
                        return 0.5 * t * t * t * t;
                }
                return -0.5 * ((t -= 2) * t * t * t - 2);
        },
 
-       easeInQuint: function(t) {
+       easeInQuint(t) {
                return t * t * t * t * t;
        },
 
-       easeOutQuint: function(t) {
-               return (t = t - 1) * t * t * t * t + 1;
+       easeOutQuint(t) {
+               return (t -= 1) * t * t * t * t + 1;
        },
 
-       easeInOutQuint: function(t) {
+       easeInOutQuint(t) {
                if ((t /= 0.5) < 1) {
                        return 0.5 * t * t * t * t * t;
                }
                return 0.5 * ((t -= 2) * t * t * t * t + 2);
        },
 
-       easeInSine: function(t) {
+       easeInSine(t) {
                return -Math.cos(t * (Math.PI / 2)) + 1;
        },
 
-       easeOutSine: function(t) {
+       easeOutSine(t) {
                return Math.sin(t * (Math.PI / 2));
        },
 
-       easeInOutSine: function(t) {
+       easeInOutSine(t) {
                return -0.5 * (Math.cos(Math.PI * t) - 1);
        },
 
-       easeInExpo: function(t) {
+       easeInExpo(t) {
                return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));
        },
 
-       easeOutExpo: function(t) {
+       easeOutExpo(t) {
                return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;
        },
 
-       easeInOutExpo: function(t) {
+       easeInOutExpo(t) {
                if (t === 0) {
                        return 0;
                }
@@ -103,28 +101,28 @@ export const effects = {
                return 0.5 * (-Math.pow(2, -10 * --t) + 2);
        },
 
-       easeInCirc: function(t) {
+       easeInCirc(t) {
                if (t >= 1) {
                        return t;
                }
                return -(Math.sqrt(1 - t * t) - 1);
        },
 
-       easeOutCirc: function(t) {
-               return Math.sqrt(1 - (t = t - 1) * t);
+       easeOutCirc(t) {
+               return Math.sqrt(1 - (t -= 1) * t);
        },
 
-       easeInOutCirc: function(t) {
+       easeInOutCirc(t) {
                if ((t /= 0.5) < 1) {
                        return -0.5 * (Math.sqrt(1 - t * t) - 1);
                }
                return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);
        },
 
-       easeInElastic: function(t) {
-               var s = 1.70158;
-               var p = 0;
-               var a = 1;
+       easeInElastic(t) {
+               let s = 1.70158;
+               let p = 0;
+               let a = 1;
                if (t === 0) {
                        return 0;
                }
@@ -143,10 +141,10 @@ export const effects = {
                return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));
        },
 
-       easeOutElastic: function(t) {
-               var s = 1.70158;
-               var p = 0;
-               var a = 1;
+       easeOutElastic(t) {
+               let s = 1.70158;
+               let p = 0;
+               let a = 1;
                if (t === 0) {
                        return 0;
                }
@@ -165,10 +163,10 @@ export const effects = {
                return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;
        },
 
-       easeInOutElastic: function(t) {
-               var s = 1.70158;
-               var p = 0;
-               var a = 1;
+       easeInOutElastic(t) {
+               let s = 1.70158;
+               let p = 0;
+               let a = 1;
                if (t === 0) {
                        return 0;
                }
@@ -189,29 +187,29 @@ export const effects = {
                }
                return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;
        },
-       easeInBack: function(t) {
-               var s = 1.70158;
+       easeInBack(t) {
+               const s = 1.70158;
                return t * t * ((s + 1) * t - s);
        },
 
-       easeOutBack: function(t) {
-               var s = 1.70158;
-               return (t = t - 1) * t * ((s + 1) * t + s) + 1;
+       easeOutBack(t) {
+               const s = 1.70158;
+               return (t -= 1) * t * ((s + 1) * t + s) + 1;
        },
 
-       easeInOutBack: function(t) {
-               var s = 1.70158;
+       easeInOutBack(t) {
+               let s = 1.70158;
                if ((t /= 0.5) < 1) {
                        return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));
                }
                return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);
        },
 
-       easeInBounce: function(t) {
+       easeInBounce(t) {
                return 1 - effects.easeOutBounce(1 - t);
        },
 
-       easeOutBounce: function(t) {
+       easeOutBounce(t) {
                if (t < (1 / 2.75)) {
                        return 7.5625 * t * t;
                }
@@ -224,10 +222,12 @@ export const effects = {
                return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;
        },
 
-       easeInOutBounce: function(t) {
+       easeInOutBounce(t) {
                if (t < 0.5) {
                        return effects.easeInBounce(t * 2) * 0.5;
                }
                return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;
        }
 };
+
+export default effects;
index fe788161dec56aee6111e7807d0eac06e82449e3..bf1ac4a8fb23db9635c8f8745399b5f7b4ba8171 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 /**
  * @private
  */
index c1c702c953ba94179efe990354560fec75b17d09..b01c9b292ce07d038aaf9c5b8f036b9007288379 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import {isFinite as isFiniteNumber} from './helpers.core';
 
 const PI = Math.PI;
@@ -16,9 +14,9 @@ const PITAU = TAU + PI;
  * @private
  */
 export function _factorize(value) {
-       var result = [];
-       var sqrt = Math.sqrt(value);
-       var i;
+       const result = [];
+       const sqrt = Math.sqrt(value);
+       let i;
 
        for (i = 1; i < sqrt; i++) {
                if (value % i === 0) {
@@ -30,18 +28,16 @@ export function _factorize(value) {
                result.push(sqrt);
        }
 
-       result.sort(function(a, b) {
-               return a - b;
-       }).pop();
+       result.sort((a, b) => a - b).pop();
        return result;
 }
 
 export const log10 = Math.log10 || function(x) {
-       var exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.
+       const exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.
        // Check for whole powers of 10,
        // which due to floating point rounding error should be corrected.
-       var powerOf10 = Math.round(exponent);
-       var isPowerOf10 = x === Math.pow(10, powerOf10);
+       const powerOf10 = Math.round(exponent);
+       const isPowerOf10 = x === Math.pow(10, powerOf10);
 
        return isPowerOf10 ? powerOf10 : exponent;
 };
@@ -55,7 +51,7 @@ export function almostEquals(x, y, epsilon) {
 }
 
 export function almostWhole(x, epsilon) {
-       var rounded = Math.round(x);
+       const rounded = Math.round(x);
        return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);
 }
 
@@ -63,7 +59,7 @@ export function almostWhole(x, epsilon) {
  * @private
  */
 export function _setMinAndMaxByKey(array, target, property) {
-       var i, ilen, value;
+       let i, ilen, value;
 
        for (i = 0, ilen = array.length; i < ilen; i++) {
                value = array[i][property];
@@ -105,8 +101,8 @@ export function _decimalPlaces(x) {
        if (!isFiniteNumber(x)) {
                return;
        }
-       var e = 1;
-       var p = 0;
+       let e = 1;
+       let p = 0;
        while (Math.round(x * e) / e !== x) {
                e *= 10;
                p++;
@@ -116,18 +112,18 @@ export function _decimalPlaces(x) {
 
 // Gets the angle from vertical upright to the point about a centre.
 export function getAngleFromPoint(centrePoint, anglePoint) {
-       var distanceFromXCenter = anglePoint.x - centrePoint.x;
-       var distanceFromYCenter = anglePoint.y - centrePoint.y;
-       var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);
+       const distanceFromXCenter = anglePoint.x - centrePoint.x;
+       const distanceFromYCenter = anglePoint.y - centrePoint.y;
+       const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);
 
-       var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);
+       let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);
 
        if (angle < (-0.5 * PI)) {
                angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]
        }
 
        return {
-               angle: angle,
+               angle,
                distance: radialDistanceFromCenter
        };
 }
index 4eb84707cd7eaf769c1156e215a455fdaaf34b47..3969a1c3ddc04088695284ada4088dec2ca1b37b 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import defaults from '../core/core.defaults';
 import {isNullOrUndef, isArray, isObject, valueOrDefault} from './helpers.core';
 
@@ -33,7 +31,7 @@ function toFontString(font) {
  * @since 2.7.0
  */
 export function toLineHeight(value, size) {
-       var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);
+       const matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);
        if (!matches || matches[1] === 'normal') {
                return size * 1.2;
        }
@@ -61,7 +59,7 @@ export function toLineHeight(value, size) {
  * @since 2.7.0
  */
 export function toPadding(value) {
-       var t, r, b, l;
+       let t, r, b, l;
 
        if (isObject(value)) {
                t = +value.top || 0;
@@ -99,7 +97,7 @@ export function _parseFont(options) {
        const font = {
                family: valueOrDefault(options.fontFamily, defaults.fontFamily),
                lineHeight: toLineHeight(valueOrDefault(options.lineHeight, defaults.lineHeight), size),
-               size: size,
+               size,
                style: valueOrDefault(options.fontStyle, defaults.fontStyle),
                weight: null,
                string: ''
@@ -121,8 +119,8 @@ export function _parseFont(options) {
  * @since 2.7.0
  */
 export function resolve(inputs, context, index, info) {
-       var cacheable = true;
-       var i, ilen, value;
+       let cacheable = true;
+       let i, ilen, value;
 
        for (i = 0, ilen = inputs.length; i < ilen; ++i) {
                value = inputs[i];
index cf68886a9e540245cc5f770957c75597e43b97cb..45fd64cf3acd55f08a53ae98277b246a45fbfec6 100644 (file)
@@ -1,42 +1,40 @@
-'use strict';
-
-var getRtlAdapter = function(rectX, width) {
+const getRtlAdapter = function(rectX, width) {
        return {
-               x: function(x) {
+               x(x) {
                        return rectX + rectX + width - x;
                },
-               setWidth: function(w) {
+               setWidth(w) {
                        width = w;
                },
-               textAlign: function(align) {
+               textAlign(align) {
                        if (align === 'center') {
                                return align;
                        }
                        return align === 'right' ? 'left' : 'right';
                },
-               xPlus: function(x, value) {
+               xPlus(x, value) {
                        return x - value;
                },
-               leftForLtr: function(x, itemWidth) {
+               leftForLtr(x, itemWidth) {
                        return x - itemWidth;
                },
        };
 };
 
-var getLtrAdapter = function() {
+const getLtrAdapter = function() {
        return {
-               x: function(x) {
+               x(x) {
                        return x;
                },
-               setWidth: function(w) { // eslint-disable-line no-unused-vars
+               setWidth(w) { // eslint-disable-line no-unused-vars
                },
-               textAlign: function(align) {
+               textAlign(align) {
                        return align;
                },
-               xPlus: function(x, value) {
+               xPlus(x, value) {
                        return x + value;
                },
-               leftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars
+               leftForLtr(x, _itemWidth) { // eslint-disable-line no-unused-vars
                        return x;
                },
        };
@@ -47,7 +45,7 @@ const getAdapter = function(rtl, rectX, width) {
 };
 
 const overrideTextDirection = function(ctx, direction) {
-       var style, original;
+       let style, original;
        if (direction === 'ltr' || direction === 'rtl') {
                style = ctx.canvas.style;
                original = [
index 1a4f5fec067ac2d455e4c3d3fb8cfeb657423058..8415fd81f43285fc014ab34904c935ad48f3f8e5 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import {_angleBetween, _angleDiff, _normalizeAngle} from './helpers.math';
 
 /**
@@ -34,6 +32,7 @@ function getSegment(segment, points, bounds) {
        const {property, start: startBound, end: endBound} = bounds;
        const {between, normalize} = propertyFn(property);
        const count = points.length;
+       // eslint-disable-next-line prefer-const
        let {start, end, loop} = segment;
        let i, ilen;
 
@@ -124,8 +123,8 @@ export function _boundSegment(segment, points, bounds) {
 export function _boundSegments(line, bounds) {
        const result = [];
 
-       for (let segment of line.segments) {
-               let sub = _boundSegment(segment, line.points, bounds);
+       for (const segment of line.segments) {
+               const sub = _boundSegment(segment, line.points, bounds);
                if (sub.length) {
                        result.push(...sub);
                }
index 929b33945d8d4b44cceaf48ffd0d7236ad9fe70d..7a18ff4bf70f901aa75e747a8a063d6bad2147ce 100644 (file)
@@ -1,4 +1,4 @@
-'use strict';
+/* eslint-disable import/no-namespace */
 
 import color from '@kurkle/color';
 
@@ -6,7 +6,7 @@ import * as coreHelpers from './helpers.core';
 import * as canvas from './helpers.canvas';
 import * as curve from './helpers.curve';
 import * as dom from './helpers.dom';
-import * as easing from './helpers.easing';
+import effects from './helpers.easing';
 import * as options from './helpers.options';
 import * as math from './helpers.math';
 import * as rtl from './helpers.rtl';
@@ -27,7 +27,7 @@ export default {
        canvas,
        curve,
        dom,
-       easing,
+       easing: {effects},
        options,
        math,
        rtl,
@@ -42,11 +42,11 @@ export default {
                return window.requestAnimationFrame;
        }()),
        // -- Canvas methods
-       fontString: function(pixelSize, fontStyle, fontFamily) {
+       fontString(pixelSize, fontStyle, fontFamily) {
                return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;
        },
        color: colorHelper,
-       getHoverColor: function(colorValue) {
+       getHoverColor(colorValue) {
                return (colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient) ?
                        colorValue :
                        colorHelper(colorValue).saturate(0.5).darken(0.1).hexString();
index 1a1b17c00a05b51f032e8f285dba2e087cb8e61a..695ae4fe9a3e4851e7ebd27f9ec44435149a6de7 100644 (file)
@@ -43,7 +43,7 @@ Chart.Ticks = Ticks;
 
 // Register built-in scales
 import scales from './scales/index';
-Object.keys(scales).forEach(function(type) {
+Object.keys(scales).forEach((type) => {
        const scale = scales[type];
        Chart.scaleService.registerScaleType(type, scale, scale._defaults);
 });
@@ -53,7 +53,7 @@ import './adapters/index';
 
 // Loading built-in plugins
 import plugins from './plugins/index';
-for (var k in plugins) {
+for (const k in plugins) {
        if (Object.prototype.hasOwnProperty.call(plugins, k)) {
                Chart.plugins.register(plugins[k]);
        }
index d00ad98df8d3c57b95bee8939057146bddaada33..b1defabb6337c405abc097f2166c170ea1656089 100644 (file)
@@ -1,4 +1,3 @@
-'use strict';
 
 /**
  * @typedef { import("../core/core.controller").default } Chart
@@ -8,11 +7,6 @@
  * Abstract class that allows abstracting platform dependencies away from the chart.
  */
 export default class BasePlatform {
-       /**
-        * @constructor
-        */
-       constructor() {}
-
        /**
         * Called at chart construction time, returns a context2d instance implementing
         * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.
index 2f2d52c3bc3126e15db4f0b96f5c7da0780de6ca..681dc7a5157ab72aaeaef3a9638f52dac2f187cb 100644 (file)
@@ -3,8 +3,6 @@
  * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939
  */
 
-'use strict';
-
 import BasePlatform from './platform.base';
 
 /**
index b47fe45a750c56ba116d25784137fe851478132a..0bc5aebcc8c185365c04960db6e30d6b1f6c71e3 100644 (file)
@@ -2,8 +2,6 @@
  * Chart.Platform implementation for targeting a web browser
  */
 
-'use strict';
-
 import helpers from '../helpers/index';
 import BasePlatform from './platform.base';
 import platform from './platform';
@@ -115,7 +113,7 @@ const supportsEventListenerOptions = (function() {
        try {
                const options = Object.defineProperty({}, 'passive', {
                        // eslint-disable-next-line getter-return
-                       get: function() {
+                       get() {
                                supports = true;
                        }
                });
@@ -140,8 +138,8 @@ function removeListener(node, type, listener) {
 
 function createEvent(type, chart, x, y, nativeEvent) {
        return {
-               type: type,
-               chart: chart,
+               type,
+               chart,
                native: nativeEvent || null,
                x: x !== undefined ? x : null,
                y: y !== undefined ? y : null,
@@ -158,13 +156,12 @@ function throttled(fn, thisArg) {
        let ticking = false;
        let args = [];
 
-       return function() {
-               args = Array.prototype.slice.call(arguments);
-               thisArg = thisArg || this;
+       return function(...rest) {
+               args = Array.prototype.slice.call(rest);
 
                if (!ticking) {
                        ticking = true;
-                       helpers.requestAnimFrame.call(window, function() {
+                       helpers.requestAnimFrame.call(window, () => {
                                ticking = false;
                                fn.apply(thisArg, args);
                        });
@@ -220,7 +217,7 @@ function watchForRender(node, handler) {
                }
        };
 
-       ANIMATION_START_EVENTS.forEach(function(type) {
+       ANIMATION_START_EVENTS.forEach((type) => {
                addListener(node, type, proxy);
        });
 
@@ -239,7 +236,7 @@ function unwatchForRender(node) {
        const proxy = expando.renderProxy;
 
        if (proxy) {
-               ANIMATION_START_EVENTS.forEach(function(type) {
+               ANIMATION_START_EVENTS.forEach((type) => {
                        removeListener(node, type, proxy);
                });
 
@@ -253,7 +250,7 @@ function addResizeListener(node, listener, chart, domPlatform) {
        const expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});
 
        // Let's keep track of this added resizer and thus avoid DOM query when removing it.
-       const resizer = expando.resizer = createResizer(domPlatform, throttled(function() {
+       const resizer = expando.resizer = createResizer(domPlatform, throttled(() => {
                if (expando.resizer) {
                        const container = chart.options.maintainAspectRatio && node.parentNode;
                        const w = container ? container.clientWidth : 0;
@@ -273,7 +270,7 @@ function addResizeListener(node, listener, chart, domPlatform) {
 
        // The resizer needs to be attached to the node parent, so we first need to be
        // sure that `node` is attached to the DOM before injecting the resizer element.
-       watchForRender(node, function() {
+       watchForRender(node, () => {
                if (expando.resizer) {
                        const container = node.parentNode;
                        if (container && container !== resizer.parentNode) {
@@ -309,7 +306,7 @@ function injectCSS(rootNode, css) {
        if (!expando.containsStyles) {
                expando.containsStyles = true;
                css = '/* Chart.js */\n' + css;
-               var style = document.createElement('style');
+               const style = document.createElement('style');
                style.setAttribute('type', 'text/css');
                style.appendChild(document.createTextNode(css));
                rootNode.appendChild(style);
@@ -385,7 +382,7 @@ export default class DomPlatform extends BasePlatform {
                }
 
                const initial = canvas[EXPANDO_KEY].initial;
-               ['height', 'width'].forEach(function(prop) {
+               ['height', 'width'].forEach((prop) => {
                        const value = initial[prop];
                        if (helpers.isNullOrUndef(value)) {
                                canvas.removeAttribute(prop);
@@ -395,7 +392,7 @@ export default class DomPlatform extends BasePlatform {
                });
 
                const style = initial.style || {};
-               Object.keys(style).forEach(function(key) {
+               Object.keys(style).forEach((key) => {
                        canvas.style[key] = style[key];
                });
 
@@ -420,7 +417,7 @@ export default class DomPlatform extends BasePlatform {
 
                const expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});
                const proxies = expando.proxies || (expando.proxies = {});
-               const proxy = proxies[chart.id + '_' + type] = throttled(function(event) {
+               const proxy = proxies[chart.id + '_' + type] = throttled((event) => {
                        listener(fromNativeEvent(event, chart));
                }, chart);
 
index ec81caef8b561701d6a067d71faf0b7eae7581e6..739c579866d683655c10445eb2567df63c55069f 100644 (file)
@@ -1,3 +1,2 @@
-'use strict';
 
 export default {disableCSSInjection: false};
index a8701f213546484e6db9a919f4c247a09feb53aa..8977ed4524d30882a469b830b2b20fcfa23a162b 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import BasePlatform from './platform.base';
 import BasicPlatform from './platform.basic';
 import DomPlatform from './platform.dom';
index 939df980f6d739ea7a8daa5f337ca5b90651b7e3..9ece165c2538abf0662e2b6213e2b7da5f2487e8 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import filler from './plugin.filler';
 import legend from './plugin.legend';
 import title from './plugin.title';
index 552fb287b091731d4376760dfc96d43f3f687829..f9114e51600b8d22f6311ba596b989a9618fd893 100644 (file)
@@ -4,8 +4,6 @@
  * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897
  */
 
-'use strict';
-
 import defaults from '../core/core.defaults';
 import Line from '../elements/element.line';
 import {_boundSegment, _boundSegments} from '../helpers/helpers.segment';
@@ -66,8 +64,8 @@ function decodeFill(line, index, count) {
 
 function computeLinearBoundary(source) {
        const {scale = {}, fill} = source;
-       var target = null;
-       var horizontal;
+       let target = null;
+       let horizontal;
 
        if (fill === 'start') {
                target = scale.bottom;
@@ -125,14 +123,10 @@ function computeCircularBoundary(source) {
        const options = scale.options;
        const length = scale._getLabels().length;
        const target = [];
-       let start, end, value, i, center;
-
-       start = options.reverse ? scale.max : scale.min;
-       end = options.reverse ? scale.min : scale.max;
-
-       value = fill === 'start' ? start
-               : fill === 'end' ? end
-               : scale.getBaseValue();
+       const start = options.reverse ? scale.max : scale.min;
+       const end = options.reverse ? scale.min : scale.max;
+       const value = fill === 'start' ? start : fill === 'end' ? end : scale.getBaseValue();
+       let i, center;
 
        if (options.gridLines.circular) {
                center = scale.getPointPositionForValue(0, start);
@@ -150,7 +144,7 @@ function computeCircularBoundary(source) {
 }
 
 function computeBoundary(source) {
-       var scale = source.scale || {};
+       const scale = source.scale || {};
 
        if (scale.getPointPositionForValue) {
                return computeCircularBoundary(source);
@@ -210,10 +204,10 @@ function getTarget(source) {
 }
 
 function resolveTarget(sources, index, propagate) {
-       var source = sources[index];
-       var fill = source.fill;
-       var visited = [index];
-       var target;
+       const source = sources[index];
+       let fill = source.fill;
+       const visited = [index];
+       let target;
 
        if (!propagate) {
                return fill;
@@ -286,7 +280,7 @@ function _segments(line, target, property) {
                }
        }
 
-       for (let segment of line.segments) {
+       for (const segment of line.segments) {
                const bounds = getBounds(property, points[segment.start], points[segment.end], segment.loop);
 
                if (!target.segments) {
@@ -304,11 +298,11 @@ function _segments(line, target, property) {
                // Get all segments from `target` that intersect the bounds of current segment of `line`
                const subs = _boundSegments(target, bounds);
 
-               for (let sub of subs) {
+               for (const sub of subs) {
                        const subBounds = getBounds(property, tpoints[sub.start], tpoints[sub.end], sub.loop);
                        const fillSources = _boundSegment(segment, points, subBounds);
 
-                       for (let source of fillSources) {
+                       for (const source of fillSources) {
                                parts.push({
                                        source,
                                        target: sub,
@@ -398,11 +392,11 @@ function doFill(ctx, cfg) {
 export default {
        id: 'filler',
 
-       afterDatasetsUpdate: function(chart, options) {
-               var count = (chart.data.datasets || []).length;
-               var propagate = options.propagate;
-               var sources = [];
-               var meta, i, line, source;
+       afterDatasetsUpdate(chart, options) {
+               const count = (chart.data.datasets || []).length;
+               const propagate = options.propagate;
+               const sources = [];
+               let meta, i, line, source;
 
                for (i = 0; i < count; ++i) {
                        meta = chart.getDatasetMeta(i);
@@ -413,7 +407,7 @@ export default {
                                source = {
                                        visible: chart.isDatasetVisible(i),
                                        fill: decodeFill(line, i, count),
-                                       chart: chart,
+                                       chart,
                                        scale: meta.vScale,
                                        line,
                                        target: undefined
@@ -435,7 +429,7 @@ export default {
                }
        },
 
-       beforeDatasetsDraw: function(chart) {
+       beforeDatasetsDraw(chart) {
                const metasets = chart._getSortedVisibleDatasetMetas();
                const area = chart.chartArea;
                const ctx = chart.ctx;
index ce40145596a729dca5dfc4f4e0730323b000a7df..76cc6599d0362cb8eba97ffa3b52b26e18fef6e3 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import defaults from '../core/core.defaults';
 import Element from '../core/core.element';
 import layouts from '../core/core.layouts';
@@ -21,9 +19,9 @@ defaults.set('legend', {
        weight: 1000,
 
        // a callback that will handle
-       onClick: function(e, legendItem) {
-               var index = legendItem.datasetIndex;
-               var ci = this.chart;
+       onClick(e, legendItem) {
+               const index = legendItem.datasetIndex;
+               const ci = this.chart;
                if (ci.isDatasetVisible(index)) {
                        ci.hide(index);
                        legendItem.hidden = true;
@@ -50,13 +48,13 @@ defaults.set('legend', {
                // lineDashOffset :
                // lineJoin :
                // lineWidth :
-               generateLabels: function(chart) {
-                       var datasets = chart.data.datasets;
-                       var options = chart.options.legend || {};
-                       var usePointStyle = options.labels && options.labels.usePointStyle;
+               generateLabels(chart) {
+                       const datasets = chart.data.datasets;
+                       const options = chart.options.legend || {};
+                       const usePointStyle = options.labels && options.labels.usePointStyle;
 
-                       return chart._getSortedDatasetMetas().map(function(meta) {
-                               var style = meta.controller.getStyle(usePointStyle ? 0 : undefined);
+                       return chart._getSortedDatasetMetas().map((meta) => {
+                               const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);
 
                                return {
                                        text: datasets[meta.index].label,
@@ -151,7 +149,7 @@ class Legend extends Element {
        beforeUpdate() {}
 
        update(maxWidth, maxHeight, margins) {
-               var me = this;
+               const me = this;
 
                // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)
                me.beforeUpdate();
@@ -180,12 +178,10 @@ class Legend extends Element {
 
        afterUpdate() {}
 
-       //
-
        beforeSetDimensions() {}
 
        setDimensions() {
-               var me = this;
+               const me = this;
                // Set the unconstrained dimension before label rotation
                if (me.isHorizontal()) {
                        // Reset position before calculating rotation
@@ -215,19 +211,15 @@ class Legend extends Element {
 
        afterSetDimensions() {}
 
-       //
-
        beforeBuildLabels() {}
 
        buildLabels() {
-               var me = this;
-               var labelOpts = me.options.labels || {};
-               var legendItems = call(labelOpts.generateLabels, [me.chart], me) || [];
+               const me = this;
+               const labelOpts = me.options.labels || {};
+               let legendItems = call(labelOpts.generateLabels, [me.chart], me) || [];
 
                if (labelOpts.filter) {
-                       legendItems = legendItems.filter(function(item) {
-                               return labelOpts.filter(item, me.chart.data);
-                       });
+                       legendItems = legendItems.filter((item) => labelOpts.filter(item, me.chart.data));
                }
 
                if (me.options.reverse) {
@@ -239,8 +231,6 @@ class Legend extends Element {
 
        afterBuildLabels() {}
 
-       //
-
        beforeFit() {}
 
        fit() {
@@ -283,7 +273,7 @@ class Legend extends Element {
                        ctx.textAlign = 'left';
                        ctx.textBaseline = 'middle';
 
-                       me.legendItems.forEach(function(legendItem, i) {
+                       me.legendItems.forEach((legendItem, i) => {
                                const boxWidth = getBoxWidth(labelOpts, fontSize);
                                const width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;
 
@@ -296,7 +286,7 @@ class Legend extends Element {
                                hitboxes[i] = {
                                        left: 0,
                                        top: 0,
-                                       width: width,
+                                       width,
                                        height: fontSize
                                };
 
@@ -313,8 +303,8 @@ class Legend extends Element {
                        let currentColWidth = 0;
                        let currentColHeight = 0;
 
-                       let heightLimit = minSize.height - titleHeight;
-                       me.legendItems.forEach(function(legendItem, i) {
+                       const heightLimit = minSize.height - titleHeight;
+                       me.legendItems.forEach((legendItem, i) => {
                                const boxWidth = getBoxWidth(labelOpts, fontSize);
                                const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;
 
@@ -389,11 +379,11 @@ class Legend extends Element {
                ctx.fillStyle = fontColor; // render in correct colour
                ctx.font = labelFont.string;
 
-               var boxWidth = getBoxWidth(labelOpts, fontSize);
-               var hitboxes = me.legendHitBoxes;
+               const boxWidth = getBoxWidth(labelOpts, fontSize);
+               const hitboxes = me.legendHitBoxes;
 
                // current position
-               var drawLegendBox = function(x, y, legendItem) {
+               const drawLegendBox = function(x, y, legendItem) {
                        if (isNaN(boxWidth) || boxWidth <= 0) {
                                return;
                        }
@@ -401,7 +391,7 @@ class Legend extends Element {
                        // Set the ctx for the box
                        ctx.save();
 
-                       var lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);
+                       const lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);
                        ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);
                        ctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);
                        ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);
@@ -423,8 +413,8 @@ class Legend extends Element {
                                        rotation: legendItem.rotation,
                                        borderWidth: lineWidth
                                };
-                               var centerX = rtlHelper.xPlus(x, boxWidth / 2);
-                               var centerY = y + fontSize / 2;
+                               const centerX = rtlHelper.xPlus(x, boxWidth / 2);
+                               const centerY = y + fontSize / 2;
 
                                // Draw pointStyle as legend symbol
                                drawPoint(ctx, drawOptions, centerX, centerY);
@@ -439,10 +429,10 @@ class Legend extends Element {
                        ctx.restore();
                };
 
-               var fillText = function(x, y, legendItem, textWidth) {
-                       var halfFontSize = fontSize / 2;
-                       var xLeft = rtlHelper.xPlus(x, boxWidth + halfFontSize);
-                       var yMiddle = y + halfFontSize;
+               const fillText = function(x, y, legendItem, textWidth) {
+                       const halfFontSize = fontSize / 2;
+                       const xLeft = rtlHelper.xPlus(x, boxWidth + halfFontSize);
+                       const yMiddle = y + halfFontSize;
 
                        ctx.fillText(legendItem.text, xLeft, yMiddle);
 
@@ -456,7 +446,7 @@ class Legend extends Element {
                        }
                };
 
-               var alignmentOffset = function(dimension, blockSize) {
+               const alignmentOffset = function(dimension, blockSize) {
                        switch (opts.align) {
                        case 'start':
                                return labelOpts.padding;
@@ -486,12 +476,12 @@ class Legend extends Element {
 
                overrideTextDirection(me.ctx, opts.textDirection);
 
-               var itemHeight = fontSize + labelOpts.padding;
-               me.legendItems.forEach(function(legendItem, i) {
-                       var textWidth = ctx.measureText(legendItem.text).width;
-                       var width = boxWidth + (fontSize / 2) + textWidth;
-                       var x = cursor.x;
-                       var y = cursor.y;
+               const itemHeight = fontSize + labelOpts.padding;
+               me.legendItems.forEach((legendItem, i) => {
+                       const textWidth = ctx.measureText(legendItem.text).width;
+                       const width = boxWidth + (fontSize / 2) + textWidth;
+                       let x = cursor.x;
+                       let y = cursor.y;
 
                        rtlHelper.setWidth(me._minSize.width);
 
@@ -510,7 +500,7 @@ class Legend extends Element {
                                y = cursor.y = me.top + alignmentOffset(legendHeight, columnHeights[cursor.line]);
                        }
 
-                       var realX = rtlHelper.x(x);
+                       const realX = rtlHelper.x(x);
 
                        drawLegendBox(realX, y, legendItem);
 
@@ -629,8 +619,8 @@ class Legend extends Element {
         * @private
         */
        _getLegendItemAt(x, y) {
-               var me = this;
-               var i, hitBox, lh;
+               const me = this;
+               let i, hitBox, lh;
 
                if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {
                        // See if we are touching one of the dataset boxes
@@ -653,10 +643,9 @@ class Legend extends Element {
         * @param {IEvent} e - The event to handle
         */
        handleEvent(e) {
-               var me = this;
-               var opts = me.options;
-               var type = e.type === 'mouseup' ? 'click' : e.type;
-               var hoveredItem;
+               const me = this;
+               const opts = me.options;
+               const type = e.type === 'mouseup' ? 'click' : e.type;
 
                if (type === 'mousemove') {
                        if (!opts.onHover && !opts.onLeave) {
@@ -671,7 +660,7 @@ class Legend extends Element {
                }
 
                // Chart event already has relative position in it
-               hoveredItem = me._getLegendItemAt(e.x, e.y);
+               const hoveredItem = me._getLegendItemAt(e.x, e.y);
 
                if (type === 'click') {
                        if (hoveredItem && opts.onClick) {
@@ -695,10 +684,10 @@ class Legend extends Element {
 }
 
 function createNewLegendAndAttach(chart, legendOpts) {
-       var legend = new Legend({
+       const legend = new Legend({
                ctx: chart.ctx,
                options: legendOpts,
-               chart: chart
+               chart
        });
 
        layouts.configure(chart, legend, legendOpts);
@@ -718,17 +707,17 @@ export default {
         */
        _element: Legend,
 
-       beforeInit: function(chart) {
-               var legendOpts = chart.options.legend;
+       beforeInit(chart) {
+               const legendOpts = chart.options.legend;
 
                if (legendOpts) {
                        createNewLegendAndAttach(chart, legendOpts);
                }
        },
 
-       afterUpdate: function(chart) {
-               var legendOpts = chart.options.legend;
-               var legend = chart.legend;
+       afterUpdate(chart) {
+               const legendOpts = chart.options.legend;
+               const legend = chart.legend;
 
                if (legendOpts) {
                        mergeIf(legendOpts, defaults.legend);
@@ -746,8 +735,8 @@ export default {
                }
        },
 
-       afterEvent: function(chart, e) {
-               var legend = chart.legend;
+       afterEvent(chart, e) {
+               const legend = chart.legend;
                if (legend) {
                        legend.handleEvent(e);
                }
index 6b0e1e8163894ed79523529641ecd08217d7ab3e..e12c1572388001d92fbdac5aaaaa773aaa02c26d 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import defaults from '../core/core.defaults';
 import Element from '../core/core.element';
 import helpers from '../helpers/index';
@@ -46,9 +44,11 @@ class Title extends Element {
 
        // These methods are ordered by lifecycle. Utilities then follow.
 
+
        beforeUpdate() {}
+
        update(maxWidth, maxHeight, margins) {
-               var me = this;
+               const me = this;
 
                // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)
                me.beforeUpdate();
@@ -75,13 +75,14 @@ class Title extends Element {
                me.afterUpdate();
 
        }
+
        afterUpdate() {}
 
-       //
 
        beforeSetDimensions() {}
+
        setDimensions() {
-               var me = this;
+               const me = this;
                // Set the unconstrained dimension before label rotation
                if (me.isHorizontal()) {
                        // Reset position before calculating rotation
@@ -96,40 +97,40 @@ class Title extends Element {
                        me.bottom = me.height;
                }
        }
-       afterSetDimensions() {}
 
-       //
+       afterSetDimensions() {}
 
        beforeBuildLabels() {}
+
        buildLabels() {}
-       afterBuildLabels() {}
 
-       //
+       afterBuildLabels() {}
 
        beforeFit() {}
+
        fit() {
-               var me = this;
-               var opts = me.options;
-               var minSize = {};
-               var isHorizontal = me.isHorizontal();
-               var lineCount, textSize;
+               const me = this;
+               const opts = me.options;
+               const minSize = {};
+               const isHorizontal = me.isHorizontal();
 
                if (!opts.display) {
                        me.width = minSize.width = me.height = minSize.height = 0;
                        return;
                }
 
-               lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;
+               const lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;
                me._padding = helpers.options.toPadding(opts.padding);
-               textSize = lineCount * helpers.options._parseFont(opts).lineHeight + me._padding.height;
+               const textSize = lineCount * helpers.options._parseFont(opts).lineHeight + me._padding.height;
                me.width = minSize.width = isHorizontal ? me.maxWidth : textSize;
                me.height = minSize.height = isHorizontal ? textSize : me.maxHeight;
        }
+
        afterFit() {}
 
        // Shared Methods
        isHorizontal() {
-               var pos = this.options.position;
+               const pos = this.options.position;
                return pos === 'top' || pos === 'bottom';
        }
 
@@ -203,10 +204,10 @@ class Title extends Element {
                ctx.textAlign = align;
                ctx.textBaseline = 'middle';
 
-               var text = opts.text;
+               const text = opts.text;
                if (helpers.isArray(text)) {
-                       var y = 0;
-                       for (var i = 0; i < text.length; ++i) {
+                       let y = 0;
+                       for (let i = 0; i < text.length; ++i) {
                                ctx.fillText(text[i], 0, y, maxWidth);
                                y += lineHeight;
                        }
@@ -219,10 +220,10 @@ class Title extends Element {
 }
 
 function createNewTitleBlockAndAttach(chart, titleOpts) {
-       var title = new Title({
+       const title = new Title({
                ctx: chart.ctx,
                options: titleOpts,
-               chart: chart
+               chart
        });
 
        layouts.configure(chart, title, titleOpts);
@@ -242,17 +243,17 @@ export default {
         */
        _element: Title,
 
-       beforeInit: function(chart) {
-               var titleOpts = chart.options.title;
+       beforeInit(chart) {
+               const titleOpts = chart.options.title;
 
                if (titleOpts) {
                        createNewTitleBlockAndAttach(chart, titleOpts);
                }
        },
 
-       beforeUpdate: function(chart) {
-               var titleOpts = chart.options.title;
-               var titleBlock = chart.titleBlock;
+       beforeUpdate(chart) {
+               const titleOpts = chart.options.title;
+               const titleBlock = chart.titleBlock;
 
                if (titleOpts) {
                        helpers.mergeIf(titleOpts, defaults.title);
index 598d31f38d54a9620a15ca64ceb37c0417531c01..a38f0923c3077f7d3a98b1d4f129edd011b3e22f 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import Animations from '../core/core.animations';
 import defaults from '../core/core.defaults';
 import Element from '../core/core.element';
@@ -57,13 +55,13 @@ defaults.set('tooltips', {
        callbacks: {
                // Args are: (tooltipItems, data)
                beforeTitle: helpers.noop,
-               title: function(tooltipItems, data) {
-                       var title = '';
-                       var labels = data.labels;
-                       var labelCount = labels ? labels.length : 0;
+               title(tooltipItems, data) {
+                       let title = '';
+                       const labels = data.labels;
+                       const labelCount = labels ? labels.length : 0;
 
                        if (tooltipItems.length > 0) {
-                               var item = tooltipItems[0];
+                               const item = tooltipItems[0];
                                if (item.label) {
                                        title = item.label;
                                } else if (labelCount > 0 && item.index < labelCount) {
@@ -80,7 +78,7 @@ defaults.set('tooltips', {
 
                // Args are: (tooltipItem, data)
                beforeLabel: helpers.noop,
-               label: function(tooltipItem, data) {
+               label(tooltipItem, data) {
                        let label = data.datasets[tooltipItem.datasetIndex].label || '';
 
                        if (label) {
@@ -92,15 +90,15 @@ defaults.set('tooltips', {
                        }
                        return label;
                },
-               labelColor: function(tooltipItem, chart) {
-                       var meta = chart.getDatasetMeta(tooltipItem.datasetIndex);
-                       var options = meta.controller.getStyle(tooltipItem.index);
+               labelColor(tooltipItem, chart) {
+                       const meta = chart.getDatasetMeta(tooltipItem.datasetIndex);
+                       const options = meta.controller.getStyle(tooltipItem.index);
                        return {
                                borderColor: options.borderColor,
                                backgroundColor: options.backgroundColor
                        };
                },
-               labelTextColor: function() {
+               labelTextColor() {
                        return this.options.bodyFontColor;
                },
                afterLabel: helpers.noop,
@@ -115,27 +113,27 @@ defaults.set('tooltips', {
        }
 });
 
-var positioners = {
+const positioners = {
        /**
         * Average mode places the tooltip at the average position of the elements shown
         * @function Chart.Tooltip.positioners.average
         * @param items {object[]} the items being displayed in the tooltip
         * @returns {object} tooltip position
         */
-       average: function(items) {
+       average(items) {
                if (!items.length) {
                        return false;
                }
 
-               var i, len;
-               var x = 0;
-               var y = 0;
-               var count = 0;
+               let i, len;
+               let x = 0;
+               let y = 0;
+               let count = 0;
 
                for (i = 0, len = items.length; i < len; ++i) {
-                       var el = items[i].element;
+                       const el = items[i].element;
                        if (el && el.hasValue()) {
-                               var pos = el.tooltipPosition();
+                               const pos = el.tooltipPosition();
                                x += pos.x;
                                y += pos.y;
                                ++count;
@@ -155,17 +153,17 @@ var positioners = {
         * @param eventPosition {object} the position of the event in canvas coordinates
         * @returns {object} the tooltip position
         */
-       nearest: function(items, eventPosition) {
-               var x = eventPosition.x;
-               var y = eventPosition.y;
-               var minDistance = Number.POSITIVE_INFINITY;
-               var i, len, nearestElement;
+       nearest(items, eventPosition) {
+               let x = eventPosition.x;
+               let y = eventPosition.y;
+               let minDistance = Number.POSITIVE_INFINITY;
+               let i, len, nearestElement;
 
                for (i = 0, len = items.length; i < len; ++i) {
-                       var el = items[i].element;
+                       const el = items[i].element;
                        if (el && el.hasValue()) {
-                               var center = el.getCenterPoint();
-                               var d = helpers.math.distanceBetweenPoints(eventPosition, center);
+                               const center = el.getCenterPoint();
+                               const d = helpers.math.distanceBetweenPoints(eventPosition, center);
 
                                if (d < minDistance) {
                                        minDistance = d;
@@ -175,14 +173,14 @@ var positioners = {
                }
 
                if (nearestElement) {
-                       var tp = nearestElement.tooltipPosition();
+                       const tp = nearestElement.tooltipPosition();
                        x = tp.x;
                        y = tp.y;
                }
 
                return {
-                       x: x,
-                       y: y
+                       x,
+                       y
                };
        }
 };
@@ -269,9 +267,7 @@ function getTooltipSize(tooltip) {
        let width = 0;
 
        // Count of all lines in the body
-       var combinedBodyLength = body.reduce(function(count, bodyItem) {
-               return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;
-       }, 0);
+       let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);
        combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;
 
        if (titleLineCount) {
@@ -290,8 +286,8 @@ function getTooltipSize(tooltip) {
        }
 
        // Title width
-       var widthPadding = 0;
-       var maxLineWidth = function(line) {
+       let widthPadding = 0;
+       const maxLineWidth = function(line) {
                width = Math.max(width, ctx.measureText(line).width + widthPadding);
        };
 
@@ -304,7 +300,7 @@ function getTooltipSize(tooltip) {
 
        // Body lines may include some extra width due to the color box
        widthPadding = options.displayColors ? (bodyFontSize + 2) : 0;
-       helpers.each(body, function(bodyItem) {
+       helpers.each(body, (bodyItem) => {
                helpers.each(bodyItem.before, maxLineWidth);
                helpers.each(bodyItem.lines, maxLineWidth);
                helpers.each(bodyItem.after, maxLineWidth);
@@ -328,9 +324,9 @@ function getTooltipSize(tooltip) {
  */
 function determineAlignment(chart, options, size) {
        const {x, y, width, height} = size;
-       var chartArea = chart.chartArea;
-       var xAlign = 'center';
-       var yAlign = 'center';
+       const chartArea = chart.chartArea;
+       let xAlign = 'center';
+       let yAlign = 'center';
 
        if (y < height) {
                yAlign = 'top';
@@ -338,11 +334,9 @@ function determineAlignment(chart, options, size) {
                yAlign = 'bottom';
        }
 
-       var lf, rf; // functions to determine left, right alignment
-       var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart
-       var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges
-       var midX = (chartArea.left + chartArea.right) / 2;
-       var midY = (chartArea.top + chartArea.bottom) / 2;
+       let lf, rf; // functions to determine left, right alignment
+       const midX = (chartArea.left + chartArea.right) / 2;
+       const midY = (chartArea.top + chartArea.bottom) / 2;
 
        if (yAlign === 'center') {
                lf = (value) => value <= midX;
@@ -352,9 +346,11 @@ function determineAlignment(chart, options, size) {
                rf = (value) => value >= (chart.width - (width / 2));
        }
 
-       olf = (value) => value + width + options.caretSize + options.caretPadding > chart.width;
-       orf = (value) => value - width - options.caretSize - options.caretPadding < 0;
-       yf = (value) => value <= midY ? 'top' : 'bottom';
+       // functions to determine if left/right alignment causes tooltip to go outside chart
+       const olf = (value) => value + width + options.caretSize + options.caretPadding > chart.width;
+       const orf = (value) => value - width - options.caretSize - options.caretPadding < 0;
+       // function to get the y alignment if the tooltip goes outside of the left or right edges
+       const yf = (value) => value <= midY ? 'top' : 'bottom';
 
        if (lf(x)) {
                xAlign = 'left';
@@ -381,6 +377,7 @@ function determineAlignment(chart, options, size) {
 }
 
 function alignX(size, xAlign, chartWidth) {
+       // eslint-disable-next-line prefer-const
        let {x, width} = size;
        if (xAlign === 'right') {
                x -= width;
@@ -397,6 +394,7 @@ function alignX(size, xAlign, chartWidth) {
 }
 
 function alignY(size, yAlign, paddingAndSize) {
+       // eslint-disable-next-line prefer-const
        let {y, height} = size;
        if (yAlign === 'top') {
                y += paddingAndSize;
@@ -418,7 +416,7 @@ function getBackgroundPoint(options, size, alignment, chart) {
        const radiusAndPadding = cornerRadius + caretPadding;
 
        let x = alignX(size, xAlign, chart.width);
-       let y = alignY(size, yAlign, paddingAndSize);
+       const y = alignY(size, yAlign, paddingAndSize);
 
        if (yAlign === 'center') {
                if (xAlign === 'left') {
@@ -508,16 +506,16 @@ class Tooltip extends Element {
 
        // Get the title
        // Args are: (tooltipItem, data)
-       getTitle() {
-               var me = this;
-               var opts = me.options;
-               var callbacks = opts.callbacks;
+       getTitle(tooltipitem, data) {
+               const me = this;
+               const opts = me.options;
+               const callbacks = opts.callbacks;
 
-               var beforeTitle = callbacks.beforeTitle.apply(me, arguments);
-               var title = callbacks.title.apply(me, arguments);
-               var afterTitle = callbacks.afterTitle.apply(me, arguments);
+               const beforeTitle = callbacks.beforeTitle.apply(me, [tooltipitem, data]);
+               const title = callbacks.title.apply(me, [tooltipitem, data]);
+               const afterTitle = callbacks.afterTitle.apply(me, [tooltipitem, data]);
 
-               var lines = [];
+               let lines = [];
                lines = pushOrConcat(lines, splitNewlines(beforeTitle));
                lines = pushOrConcat(lines, splitNewlines(title));
                lines = pushOrConcat(lines, splitNewlines(afterTitle));
@@ -526,18 +524,18 @@ class Tooltip extends Element {
        }
 
        // Args are: (tooltipItem, data)
-       getBeforeBody() {
-               return getBeforeAfterBodyLines(this.options.callbacks.beforeBody.apply(this, arguments));
+       getBeforeBody(tooltipitem, data) {
+               return getBeforeAfterBodyLines(this.options.callbacks.beforeBody.apply(this, [tooltipitem, data]));
        }
 
        // Args are: (tooltipItem, data)
        getBody(tooltipItems, data) {
-               var me = this;
-               var callbacks = me.options.callbacks;
-               var bodyItems = [];
+               const me = this;
+               const callbacks = me.options.callbacks;
+               const bodyItems = [];
 
-               helpers.each(tooltipItems, function(tooltipItem) {
-                       var bodyItem = {
+               helpers.each(tooltipItems, (tooltipItem) => {
+                       const bodyItem = {
                                before: [],
                                lines: [],
                                after: []
@@ -553,21 +551,21 @@ class Tooltip extends Element {
        }
 
        // Args are: (tooltipItem, data)
-       getAfterBody() {
-               return getBeforeAfterBodyLines(this.options.callbacks.afterBody.apply(this, arguments));
+       getAfterBody(tooltipitem, data) {
+               return getBeforeAfterBodyLines(this.options.callbacks.afterBody.apply(this, [tooltipitem, data]));
        }
 
        // Get the footer and beforeFooter and afterFooter lines
        // Args are: (tooltipItem, data)
-       getFooter() {
-               var me = this;
-               var callbacks = me.options.callbacks;
+       getFooter(tooltipitem, data) {
+               const me = this;
+               const callbacks = me.options.callbacks;
 
-               var beforeFooter = callbacks.beforeFooter.apply(me, arguments);
-               var footer = callbacks.footer.apply(me, arguments);
-               var afterFooter = callbacks.afterFooter.apply(me, arguments);
+               const beforeFooter = callbacks.beforeFooter.apply(me, [tooltipitem, data]);
+               const footer = callbacks.footer.apply(me, [tooltipitem, data]);
+               const afterFooter = callbacks.afterFooter.apply(me, [tooltipitem, data]);
 
-               var lines = [];
+               let lines = [];
                lines = pushOrConcat(lines, splitNewlines(beforeFooter));
                lines = pushOrConcat(lines, splitNewlines(footer));
                lines = pushOrConcat(lines, splitNewlines(afterFooter));
@@ -594,20 +592,16 @@ class Tooltip extends Element {
 
                // If the user provided a filter function, use it to modify the tooltip items
                if (options.filter) {
-                       tooltipItems = tooltipItems.filter(function(a) {
-                               return options.filter(a, data);
-                       });
+                       tooltipItems = tooltipItems.filter((a) => options.filter(a, data));
                }
 
                // If the user provided a sorting function, use it to modify the tooltip items
                if (options.itemSort) {
-                       tooltipItems = tooltipItems.sort(function(a, b) {
-                               return options.itemSort(a, b, data);
-                       });
+                       tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));
                }
 
                // Determine colors for boxes
-               helpers.each(tooltipItems, function(tooltipItem) {
+               helpers.each(tooltipItems, (tooltipItem) => {
                        labelColors.push(options.callbacks.labelColor.call(me, tooltipItem, me._chart));
                        labelTextColors.push(options.callbacks.labelTextColor.call(me, tooltipItem, me._chart));
                });
@@ -670,7 +664,7 @@ class Tooltip extends Element {
        }
 
        drawCaret(tooltipPoint, ctx, size) {
-               var caretPosition = this.getCaretPosition(tooltipPoint, size);
+               const caretPosition = this.getCaretPosition(tooltipPoint, size);
 
                ctx.lineTo(caretPosition.x1, caretPosition.y1);
                ctx.lineTo(caretPosition.x2, caretPosition.y2);
@@ -722,12 +716,12 @@ class Tooltip extends Element {
        drawTitle(pt, ctx) {
                const me = this;
                const options = me.options;
-               var title = me.title;
-               var length = title.length;
-               var titleFontSize, titleSpacing, i;
+               const title = me.title;
+               const length = title.length;
+               let titleFontSize, titleSpacing, i;
 
                if (length) {
-                       var rtlHelper = getRtlHelper(options.rtl, me.x, me.width);
+                       const rtlHelper = getRtlHelper(options.rtl, me.x, me.width);
 
                        pt.x = getAlignedX(me, options.titleAlign);
 
@@ -783,17 +777,17 @@ class Tooltip extends Element {
                const me = this;
                const {body, options} = me;
                const {bodyFontSize, bodySpacing, bodyAlign, displayColors} = options;
-               var xLinePadding = 0;
+               let xLinePadding = 0;
 
-               var rtlHelper = getRtlHelper(options.rtl, me.x, me.width);
+               const rtlHelper = getRtlHelper(options.rtl, me.x, me.width);
 
-               var fillLineOfText = function(line) {
+               const fillLineOfText = function(line) {
                        ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyFontSize / 2);
                        pt.y += bodyFontSize + bodySpacing;
                };
 
-               var bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);
-               var bodyItem, textColor, lines, i, j, ilen, jlen;
+               const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);
+               let bodyItem, textColor, lines, i, j, ilen, jlen;
 
                ctx.textAlign = bodyAlign;
                ctx.textBaseline = 'middle';
@@ -841,12 +835,12 @@ class Tooltip extends Element {
        drawFooter(pt, ctx) {
                const me = this;
                const options = me.options;
-               var footer = me.footer;
-               var length = footer.length;
-               var footerFontSize, i;
+               const footer = me.footer;
+               const length = footer.length;
+               let footerFontSize, i;
 
                if (length) {
-                       var rtlHelper = getRtlHelper(options.rtl, me.x, me.width);
+                       const rtlHelper = getRtlHelper(options.rtl, me.x, me.width);
 
                        pt.x = getAlignedX(me, options.footerAlign);
                        pt.y += options.footerMarginTop;
@@ -943,11 +937,11 @@ class Tooltip extends Element {
 
                me._updateAnimationTarget();
 
-               var tooltipSize = {
+               const tooltipSize = {
                        width: me.width,
                        height: me.height
                };
-               var pt = {
+               const pt = {
                        x: me.x,
                        y: me.y
                };
@@ -956,7 +950,7 @@ class Tooltip extends Element {
                opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;
 
                // Truthy/falsey value for empty tooltip
-               var hasTooltipContent = me.title.length || me.beforeBody.length || me.body.length || me.afterBody.length || me.footer.length;
+               const hasTooltipContent = me.title.length || me.beforeBody.length || me.body.length || me.afterBody.length || me.footer.length;
 
                if (options.enabled && hasTooltipContent) {
                        ctx.save();
@@ -1035,7 +1029,7 @@ export default {
        _element: Tooltip,
        positioners,
 
-       afterInit: function(chart) {
+       afterInit(chart) {
                const tooltipOpts = chart.options.tooltips;
 
                if (tooltipOpts) {
@@ -1043,19 +1037,19 @@ export default {
                }
        },
 
-       beforeUpdate: function(chart) {
+       beforeUpdate(chart) {
                if (chart.tooltip) {
                        chart.tooltip.initialize();
                }
        },
 
-       reset: function(chart) {
+       reset(chart) {
                if (chart.tooltip) {
                        chart.tooltip.initialize();
                }
        },
 
-       afterDraw: function(chart) {
+       afterDraw(chart) {
                const tooltip = chart.tooltip;
                const args = {
                        tooltip
@@ -1070,7 +1064,7 @@ export default {
                plugins.notify(chart, 'afterTooltipDraw', [args]);
        },
 
-       afterEvent: function(chart, e) {
+       afterEvent(chart, e) {
                if (chart.tooltip) {
                        chart.tooltip.handleEvent(e);
                }
index 66e772f3b2d4fc522abef84dd6b9ab14b5f6f79f..505c5fdf9c48fdf914fa8174f544674f03e6b338 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import category from './scale.category';
 import linear from './scale.linear';
 import logarithmic from './scale.logarithmic';
@@ -7,9 +5,9 @@ import radialLinear from './scale.radialLinear';
 import time from './scale.time';
 
 export default {
-       category: category,
-       linear: linear,
-       logarithmic: logarithmic,
-       radialLinear: radialLinear,
-       time: time
+       category,
+       linear,
+       logarithmic,
+       radialLinear,
+       time
 };
index 195ef6c523d136e07e24325c232d94b7546102e3..fef277f2c82b7a85910b456f7b9209fda0556a62 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import Scale from '../core/core.scale';
 
 const defaultConfig = {
@@ -53,9 +51,7 @@ class CategoryScale extends Scale {
                me._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);
                me._startValue = me.min - (offset ? 0.5 : 0);
 
-               return labels.map(function(l) {
-                       return {value: l};
-               });
+               return labels.map((l) => ({value: l}));
        }
 
        getLabelForValue(value) {
@@ -84,7 +80,7 @@ class CategoryScale extends Scale {
 
        // Used to get data value locations. Value can either be an index or a numerical value
        getPixelForValue(value) {
-               var me = this;
+               const me = this;
 
                if (typeof value !== 'number') {
                        value = me._parse(value);
index 3ec3373c2c316c93f7bb02dcb6e98aac6c64aff9..8d7f0c4c359ac230163ac030551255574263fe2d 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import {isFinite, valueOrDefault} from '../helpers/helpers.core';
 import {_parseFont} from '../helpers/helpers.options';
 import LinearScaleBase from './scale.linearbase';
@@ -16,8 +14,8 @@ class LinearScale extends LinearScaleBase {
                const me = this;
                const options = me.options;
                const minmax = me._getMinMax(true);
-               let min = minmax.min;
-               let max = minmax.max;
+               const min = minmax.min;
+               const max = minmax.max;
 
                me.min = isFinite(min) ? min : valueOrDefault(options.suggestedMin, 0);
                me.max = isFinite(max) ? max : valueOrDefault(options.suggestedMax, 1);
@@ -36,13 +34,12 @@ class LinearScale extends LinearScaleBase {
         * @private
         */
        _computeTickLimit() {
-               var me = this;
-               var tickFont;
+               const me = this;
 
                if (me.isHorizontal()) {
                        return Math.ceil(me.width / 40);
                }
-               tickFont = _parseFont(me.options.ticks);
+               const tickFont = _parseFont(me.options.ticks);
                return Math.ceil(me.height / tickFont.lineHeight);
        }
 
@@ -57,7 +54,7 @@ class LinearScale extends LinearScaleBase {
 
        // Utils
        getPixelForValue(value) {
-               var me = this;
+               const me = this;
                return me.getPixelForDecimal((value - me._startValue) / me._valueRange);
        }
 
index 3ab23ca32ef5cc3bf744a9911738990fa5b3652c..e1854ff58d261eabf53c4d66fc35da995f163805 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import {isNullOrUndef, valueOrDefault} from '../helpers/helpers.core';
 import {almostEquals, almostWhole, log10, _decimalPlaces, _setMinAndMaxByKey, sign} from '../helpers/helpers.math';
 import Scale from '../core/core.scale';
@@ -97,7 +95,7 @@ function generateTicks(generationOptions, dataRange) {
        niceMin = Math.round(niceMin * factor) / factor;
        niceMax = Math.round(niceMax * factor) / factor;
        ticks.push({value: isNullOrUndef(min) ? niceMin : min});
-       for (var j = 1; j < numSpaces; ++j) {
+       for (let j = 1; j < numSpaces; ++j) {
                ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});
        }
        ticks.push({value: isNullOrUndef(max) ? niceMax : max});
@@ -205,6 +203,7 @@ class LinearScaleBase extends Scale {
        getTickLimit() {
                const me = this;
                const tickOpts = me.options.ticks;
+               // eslint-disable-next-line prefer-const
                let {maxTicksLimit, stepSize} = tickOpts;
                let maxTicks;
 
@@ -249,7 +248,7 @@ class LinearScaleBase extends Scale {
                maxTicks = Math.max(2, maxTicks);
 
                const numericGeneratorOptions = {
-                       maxTicks: maxTicks,
+                       maxTicks,
                        min: opts.min,
                        max: opts.max,
                        precision: tickOpts.precision,
index e5bcad204cbaf14209c4e52253297532f25ff219..f6487d1725d92b2258ba97477ff8842352f7bc35 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import {isFinite} from '../helpers/helpers.core';
 import {_setMinAndMaxByKey, log10} from '../helpers/helpers.math';
 import Scale from '../core/core.scale';
@@ -77,8 +75,8 @@ class LogarithmicScale extends Scale {
        /**
         * @private
         */
-       _parse(raw, index) { // eslint-disable-line no-unused-vars
-               const value = LinearScaleBase.prototype._parse.apply(this, arguments);
+       _parse(raw, index) {
+               const value = LinearScaleBase.prototype._parse.apply(this, [raw, index]);
                if (value === 0) {
                        return undefined;
                }
@@ -173,7 +171,7 @@ class LogarithmicScale extends Scale {
         */
        _configure() {
                const me = this;
-               let start = me.min;
+               const start = me.min;
 
                Scale.prototype._configure.call(me);
 
index 28289196c751e2d92cc421c222bf730fa247fa32..3b37bd69152d4dc861c683650ed6c2f4c73a5056 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import defaults from '../core/core.defaults';
 import helpers from '../helpers/index';
 import {_longestText} from '../helpers/helpers.canvas';
@@ -55,14 +53,14 @@ const defaultConfig = {
                fontSize: 10,
 
                // Function - Used to convert point labels
-               callback: function(label) {
+               callback(label) {
                        return label;
                }
        }
 };
 
 function getTickBackdropHeight(opts) {
-       var tickOpts = opts.ticks;
+       const tickOpts = opts.ticks;
 
        if (tickOpts.display && opts.display) {
                return valueOrDefault(tickOpts.fontSize, defaults.fontSize) + tickOpts.backdropPaddingY * 2;
@@ -134,33 +132,33 @@ function fitWithPointLabels(scale) {
        //
        // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif
 
-       var plFont = helpers.options._parseFont(scale.options.pointLabels);
+       const plFont = helpers.options._parseFont(scale.options.pointLabels);
 
        // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.
        // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points
-       var furthestLimits = {
+       const furthestLimits = {
                l: 0,
                r: scale.width,
                t: 0,
                b: scale.height - scale.paddingTop
        };
-       var furthestAngles = {};
-       var i, textSize, pointPosition;
+       const furthestAngles = {};
+       let i, textSize, pointPosition;
 
        scale.ctx.font = plFont.string;
        scale._pointLabelSizes = [];
 
-       var valueCount = scale.chart.data.labels.length;
+       const valueCount = scale.chart.data.labels.length;
        for (i = 0; i < valueCount; i++) {
                pointPosition = scale.getPointPosition(i, scale.drawingArea + 5);
                textSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]);
                scale._pointLabelSizes[i] = textSize;
 
                // Add quarter circle to make degree 0 mean top of circle
-               var angleRadians = scale.getIndexAngle(i);
-               var angle = toDegrees(angleRadians);
-               var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);
-               var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);
+               const angleRadians = scale.getIndexAngle(i);
+               const angle = toDegrees(angleRadians);
+               const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);
+               const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);
 
                if (hLimits.start < furthestLimits.l) {
                        furthestLimits.l = hLimits.start;
@@ -197,8 +195,8 @@ function getTextAlignForAngle(angle) {
 }
 
 function fillText(ctx, text, position, lineHeight) {
-       var y = position.y + lineHeight / 2;
-       var i, ilen;
+       let y = position.y + lineHeight / 2;
+       let i, ilen;
 
        if (helpers.isArray(text)) {
                for (i = 0, ilen = text.length; i < ilen; ++i) {
@@ -219,29 +217,29 @@ function adjustPointPositionForLabelHeight(angle, textSize, position) {
 }
 
 function drawPointLabels(scale) {
-       var ctx = scale.ctx;
-       var opts = scale.options;
-       var pointLabelOpts = opts.pointLabels;
-       var tickBackdropHeight = getTickBackdropHeight(opts);
-       var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);
-       var plFont = helpers.options._parseFont(pointLabelOpts);
+       const ctx = scale.ctx;
+       const opts = scale.options;
+       const pointLabelOpts = opts.pointLabels;
+       const tickBackdropHeight = getTickBackdropHeight(opts);
+       const outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);
+       const plFont = helpers.options._parseFont(pointLabelOpts);
 
        ctx.save();
 
        ctx.font = plFont.string;
        ctx.textBaseline = 'middle';
 
-       for (var i = scale.chart.data.labels.length - 1; i >= 0; i--) {
+       for (let i = scale.chart.data.labels.length - 1; i >= 0; i--) {
                // Extra pixels out for some label spacing
-               var extra = (i === 0 ? tickBackdropHeight / 2 : 0);
-               var pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);
+               const extra = (i === 0 ? tickBackdropHeight / 2 : 0);
+               const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);
 
                // Keep this in loop since we may support array properties here
-               var pointLabelFontColor = valueAtIndexOrDefault(pointLabelOpts.fontColor, i, defaults.fontColor);
+               const pointLabelFontColor = valueAtIndexOrDefault(pointLabelOpts.fontColor, i, defaults.fontColor);
                ctx.fillStyle = pointLabelFontColor;
 
-               var angleRadians = scale.getIndexAngle(i);
-               var angle = toDegrees(angleRadians);
+               const angleRadians = scale.getIndexAngle(i);
+               const angle = toDegrees(angleRadians);
                ctx.textAlign = getTextAlignForAngle(angle);
                adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);
                fillText(ctx, scale.pointLabels[i], pointLabelPosition, plFont.lineHeight);
@@ -250,12 +248,12 @@ function drawPointLabels(scale) {
 }
 
 function drawRadiusLine(scale, gridLineOpts, radius, index) {
-       var ctx = scale.ctx;
-       var circular = gridLineOpts.circular;
-       var valueCount = scale.chart.data.labels.length;
-       var lineColor = valueAtIndexOrDefault(gridLineOpts.color, index - 1, undefined);
-       var lineWidth = valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1, undefined);
-       var pointPosition;
+       const ctx = scale.ctx;
+       const circular = gridLineOpts.circular;
+       const valueCount = scale.chart.data.labels.length;
+       const lineColor = valueAtIndexOrDefault(gridLineOpts.color, index - 1, undefined);
+       const lineWidth = valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1, undefined);
+       let pointPosition;
 
        if ((!circular && !valueCount) || !lineColor || !lineWidth) {
                return;
@@ -278,7 +276,7 @@ function drawRadiusLine(scale, gridLineOpts, radius, index) {
                pointPosition = scale.getPointPosition(0, radius);
                ctx.moveTo(pointPosition.x, pointPosition.y);
 
-               for (var i = 1; i < valueCount; i++) {
+               for (let i = 1; i < valueCount; i++) {
                        pointPosition = scale.getPointPosition(i, radius);
                        ctx.lineTo(pointPosition.x, pointPosition.y);
                }
@@ -308,7 +306,7 @@ class RadialLinearScale extends LinearScaleBase {
        }
 
        setDimensions() {
-               var me = this;
+               const me = this;
 
                // Set the unconstrained dimension before label rotation
                me.width = me.maxWidth;
@@ -320,10 +318,10 @@ class RadialLinearScale extends LinearScaleBase {
        }
 
        determineDataLimits() {
-               var me = this;
-               var minmax = me._getMinMax(false);
-               var min = minmax.min;
-               var max = minmax.max;
+               const me = this;
+               const minmax = me._getMinMax(false);
+               const min = minmax.min;
+               const max = minmax.max;
 
                me.min = helpers.isFinite(min) && !isNaN(min) ? min : 0;
                me.max = helpers.isFinite(max) && !isNaN(max) ? max : 0;
@@ -341,20 +339,20 @@ class RadialLinearScale extends LinearScaleBase {
        }
 
        generateTickLabels(ticks) {
-               var me = this;
+               const me = this;
 
                LinearScaleBase.prototype.generateTickLabels.call(me, ticks);
 
                // Point labels
-               me.pointLabels = me.chart.data.labels.map(function(value, index) {
-                       var label = helpers.callback(me.options.pointLabels.callback, [value, index], me);
+               me.pointLabels = me.chart.data.labels.map((value, index) => {
+                       const label = helpers.callback(me.options.pointLabels.callback, [value, index], me);
                        return label || label === 0 ? label : '';
                });
        }
 
        fit() {
-               var me = this;
-               var opts = me.options;
+               const me = this;
+               const opts = me.options;
 
                if (opts.display && opts.pointLabels.display) {
                        fitWithPointLabels(me);
@@ -368,11 +366,11 @@ class RadialLinearScale extends LinearScaleBase {
         * @private
         */
        _setReductions(largestPossibleRadius, furthestLimits, furthestAngles) {
-               var me = this;
-               var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);
-               var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);
-               var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);
-               var radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);
+               const me = this;
+               let radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);
+               let radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);
+               let radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);
+               let radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);
 
                radiusReductionLeft = numberOrZero(radiusReductionLeft);
                radiusReductionRight = numberOrZero(radiusReductionRight);
@@ -386,34 +384,34 @@ class RadialLinearScale extends LinearScaleBase {
        }
 
        setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {
-               var me = this;
-               var maxRight = me.width - rightMovement - me.drawingArea;
-               var maxLeft = leftMovement + me.drawingArea;
-               var maxTop = topMovement + me.drawingArea;
-               var maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea;
+               const me = this;
+               const maxRight = me.width - rightMovement - me.drawingArea;
+               const maxLeft = leftMovement + me.drawingArea;
+               const maxTop = topMovement + me.drawingArea;
+               const maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea;
 
                me.xCenter = Math.floor(((maxLeft + maxRight) / 2) + me.left);
                me.yCenter = Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop);
        }
 
        getIndexAngle(index) {
-               var chart = this.chart;
-               var angleMultiplier = Math.PI * 2 / chart.data.labels.length;
-               var options = chart.options || {};
-               var startAngle = options.startAngle || 0;
+               const chart = this.chart;
+               const angleMultiplier = Math.PI * 2 / chart.data.labels.length;
+               const options = chart.options || {};
+               const startAngle = options.startAngle || 0;
 
                return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));
        }
 
        getDistanceFromCenterForValue(value) {
-               var me = this;
+               const me = this;
 
                if (helpers.isNullOrUndef(value)) {
                        return NaN;
                }
 
                // Take into account half font size + the yPadding of the top value
-               var scalingFactor = me.drawingArea / (me.max - me.min);
+               const scalingFactor = me.drawingArea / (me.max - me.min);
                if (me.options.reverse) {
                        return (me.max - value) * scalingFactor;
                }
@@ -421,8 +419,8 @@ class RadialLinearScale extends LinearScaleBase {
        }
 
        getPointPosition(index, distanceFromCenter) {
-               var me = this;
-               var angle = me.getIndexAngle(index) - (Math.PI / 2);
+               const me = this;
+               const angle = me.getIndexAngle(index) - (Math.PI / 2);
                return {
                        x: Math.cos(angle) * distanceFromCenter + me.xCenter,
                        y: Math.sin(angle) * distanceFromCenter + me.yCenter,
@@ -442,21 +440,21 @@ class RadialLinearScale extends LinearScaleBase {
         * @private
         */
        _drawGrid() {
-               var me = this;
-               var ctx = me.ctx;
-               var opts = me.options;
-               var gridLineOpts = opts.gridLines;
-               var angleLineOpts = opts.angleLines;
-               var lineWidth = valueOrDefault(angleLineOpts.lineWidth, gridLineOpts.lineWidth);
-               var lineColor = valueOrDefault(angleLineOpts.color, gridLineOpts.color);
-               var i, offset, position;
+               const me = this;
+               const ctx = me.ctx;
+               const opts = me.options;
+               const gridLineOpts = opts.gridLines;
+               const angleLineOpts = opts.angleLines;
+               const lineWidth = valueOrDefault(angleLineOpts.lineWidth, gridLineOpts.lineWidth);
+               const lineColor = valueOrDefault(angleLineOpts.color, gridLineOpts.color);
+               let i, offset, position;
 
                if (opts.pointLabels.display) {
                        drawPointLabels(me);
                }
 
                if (gridLineOpts.display) {
-                       me.ticks.forEach(function(tick, index) {
+                       me.ticks.forEach((tick, index) => {
                                if (index !== 0) {
                                        offset = me.getDistanceFromCenterForValue(me.ticks[index].value);
                                        drawRadiusLine(me, gridLineOpts, offset, index);
@@ -490,19 +488,19 @@ class RadialLinearScale extends LinearScaleBase {
         * @private
         */
        _drawLabels() {
-               var me = this;
-               var ctx = me.ctx;
-               var opts = me.options;
-               var tickOpts = opts.ticks;
+               const me = this;
+               const ctx = me.ctx;
+               const opts = me.options;
+               const tickOpts = opts.ticks;
 
                if (!tickOpts.display) {
                        return;
                }
 
-               var startAngle = me.getIndexAngle(0);
-               var tickFont = helpers.options._parseFont(tickOpts);
-               var tickFontColor = valueOrDefault(tickOpts.fontColor, defaults.fontColor);
-               var offset, width;
+               const startAngle = me.getIndexAngle(0);
+               const tickFont = helpers.options._parseFont(tickOpts);
+               const tickFontColor = valueOrDefault(tickOpts.fontColor, defaults.fontColor);
+               let offset, width;
 
                ctx.save();
                ctx.font = tickFont.string;
@@ -511,7 +509,7 @@ class RadialLinearScale extends LinearScaleBase {
                ctx.textAlign = 'center';
                ctx.textBaseline = 'middle';
 
-               me.ticks.forEach(function(tick, index) {
+               me.ticks.forEach((tick, index) => {
                        if (index === 0 && !opts.reverse) {
                                return;
                        }
index bff10658e075cf0383cfe1653123802a0c07ef72..367e5fcf3322218bafc7623728d0ccd544b510e8 100644 (file)
@@ -1,5 +1,3 @@
-'use strict';
-
 import adapters from '../core/core.adapters';
 import defaults from '../core/core.defaults';
 import {isFinite, isNullOrUndef, mergeIf, valueOrDefault} from '../helpers/helpers.core';
@@ -102,13 +100,13 @@ function parse(scale, input) {
 function getDataTimestamps(scale) {
        const isSeries = scale.options.distribution === 'series';
        let timestamps = scale._cache.data || [];
-       let i, ilen, metas;
+       let i, ilen;
 
        if (timestamps.length) {
                return timestamps;
        }
 
-       metas = scale._getMatchingVisibleMetas();
+       const metas = scale._getMatchingVisibleMetas();
 
        if (isSeries && metas.length) {
                return metas[0].controller._getAllParsedValues(scale);
@@ -129,13 +127,13 @@ function getDataTimestamps(scale) {
 function getLabelTimestamps(scale) {
        const isSeries = scale.options.distribution === 'series';
        const timestamps = scale._cache.labels || [];
-       let i, ilen, labels;
+       let i, ilen;
 
        if (timestamps.length) {
                return timestamps;
        }
 
-       labels = scale._getLabels();
+       const labels = scale._getLabels();
        for (i = 0, ilen = labels.length; i < ilen; ++i) {
                timestamps.push(parse(scale, labels[i]));
        }
@@ -149,14 +147,13 @@ function getLabelTimestamps(scale) {
  */
 function getAllTimestamps(scale) {
        let timestamps = scale._cache.all || [];
-       let label, data;
 
        if (timestamps.length) {
                return timestamps;
        }
 
-       data = getDataTimestamps(scale);
-       label = getLabelTimestamps(scale);
+       const data = getDataTimestamps(scale);
+       const label = getLabelTimestamps(scale);
        if (data.length && label.length) {
                // If combining labels and data (data might not contain all labels),
                // we need to recheck uniqueness and sort
@@ -298,7 +295,7 @@ function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {
  * @return {object}
  */
 function determineMajorUnit(unit) {
-       for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {
+       for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {
                if (INTERVALS.get(UNITS[i]).common) {
                        return UNITS[i];
                }
@@ -349,7 +346,7 @@ function generate(scale) {
 
        // Prevent browser from freezing in case user options request millions of milliseconds
        if (adapter.diff(max, min, minor) > 100000 * stepSize) {
-               throw min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor;
+               throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);
        }
 
        if (scale.options.ticks.source === 'data') {
@@ -408,7 +405,7 @@ function computeOffsets(table, timestamps, min, max, options) {
                }
        }
 
-       return {start: start, end: end, factor: 1 / (start + 1 + end)};
+       return {start, end, factor: 1 / (start + 1 + end)};
 }
 
 /**
@@ -450,7 +447,7 @@ function ticksFromTimestamps(scale, values, majorUnit) {
                map[value] = i;
 
                ticks.push({
-                       value: value,
+                       value,
                        major: false
                });
        }
@@ -647,6 +644,7 @@ class TimeScale extends Scale {
                const options = me.options;
                const adapter = me._adapter;
                const unit = options.time.unit || 'day';
+               // eslint-disable-next-line prefer-const
                let {min, max, minDefined, maxDefined} = me._getUserBounds();
 
                /**
@@ -754,7 +752,7 @@ class TimeScale extends Scale {
                const majorFormat = majorUnit && formats[majorUnit];
                const tick = ticks[index];
                const major = majorUnit && majorFormat && tick && tick.major;
-               const label = me._adapter.format(time, format ? format : major ? majorFormat : minorFormat);
+               const label = me._adapter.format(time, format || (major ? majorFormat : minorFormat));
                const formatter = options.ticks.callback;
                return formatter ? formatter(label, index, ticks) : label;
        }
index 9e769972d5ae0ddcc6a3d739b1f0e03820f3911a..fee370d135ddaef6011a990b48021ab2f83216dc 100644 (file)
@@ -2,8 +2,11 @@ parserOptions:
   ecmaVersion: 6
 
 env:
-  es6: true # also changes default ecmaVersion to 6
+  es6: true
   jasmine: true
+  commonjs: true
+  es2017: false
+  es2020: false
 
 globals:
   acquireChart: true
@@ -16,4 +19,19 @@ globals:
 rules:
   # Best Practices
   complexity: 0
-  max-statements: 0
+  max-statements: [0, 100]
+  # Loosen up for tests
+  no-var: 0
+  prefer-arrow-callback: 0
+  prefer-spread: 0
+  prefer-const: 0
+  object-shorthand: 0
+  import/no-commonjs: 0
+  no-invalid-this: 0
+  array-callback-return: 0
+  operator-assignment: 0
+  no-empty-function: 0
+  import/no-namespace: 0
+  prefer-rest-params: 0
+  no-unneeded-ternary: 0
+