From 1f84554f26e4c5d0675b0842592b69a84f570a1f Mon Sep 17 00:00:00 2001 From: bob Date: Mon, 13 Jun 2022 01:38:24 +0800 Subject: [PATCH 01/80] edit gender at editprofile improved --- server.js | 7 ++ views/editProfile.handlebars | 143 +++++++++++++++++++---------------- 2 files changed, 83 insertions(+), 67 deletions(-) diff --git a/server.js b/server.js index 762e6f02..36ff9691 100644 --- a/server.js +++ b/server.js @@ -75,6 +75,13 @@ app.engine( equals(arg1, arg2, options) { return arg1 == arg2 ? options.fn(this) : options.inverse(this); }, + identifygender(v1, v2) { + if (String(v1) == v2) { + return true; + + } + return false; + }, }, }) diff --git a/views/editProfile.handlebars b/views/editProfile.handlebars index 52a52892..d3d167a9 100644 --- a/views/editProfile.handlebars +++ b/views/editProfile.handlebars @@ -1,92 +1,101 @@ + + -
+
-
+
Edit Profile
- - - - + + + +
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
- -
-
- -
-
- -
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+ +
+
+ +
+
+ +
- - - + + +
- + -
-
+
\ No newline at end of file From 235bdc35082a165e53177d3e183a16c1a309c169 Mon Sep 17 00:00:00 2001 From: bob Date: Thu, 23 Jun 2022 20:55:46 +0800 Subject: [PATCH 02/80] user edit profile works --- views/routes/user.js | 149 ++++++++++++++++++++++++------------------- 1 file changed, 84 insertions(+), 65 deletions(-) diff --git a/views/routes/user.js b/views/routes/user.js index 37c195dd..60202663 100644 --- a/views/routes/user.js +++ b/views/routes/user.js @@ -17,86 +17,105 @@ router.use((req, res, next) => { router.get('/login', (req, res) => { - res.render('user/login'); + res.render('user/login'); }); router.get('/register', (req, res) => { - res.render('user/register'); + res.render('user/register'); }); router.post('/register', async function (req, res) { - let { name, email, password, password2 } = req.body; - - let isValid = true; - if (password.length < 6) { - flashMessage(res, 'error', 'Password must be at least 6 char-acters'); - isValid = false; - } - if (password != password2) { - flashMessage(res, 'error', 'Passwords do not match'); - isValid = false; + let { name, email, password, password2 } = req.body; + + let isValid = true; + if (password.length < 6) { + flashMessage(res, 'error', 'Password must be at least 6 char-acters'); + isValid = false; + } + if (password != password2) { + flashMessage(res, 'error', 'Passwords do not match'); + isValid = false; + } + + try { + if ( + (await User.findOne({ + where: { name: req.body.name }, + })) || + (await User.findOne({ where: { email: req.body.name } })) + ) { + flashMessage(res, 'error', 'Name or email is not unique'); + console.log("Name or email is not unique"); + + return res.redirect("/register"); } - - try { - if ( - (await User.findOne({ - where: { name: req.body.name }, - })) || - (await User.findOne({ where: { email: req.body.name } })) - ) { - flashMessage(res, 'error', 'Name or email is not unique'); - console.log("Name or email is not unique"); - - return res.redirect("/register"); - } - await User.create({ - name: req.body.name, - email: req.body.email, - password: req.body.password, - gender: req.body.gender, - phoneNumber: req.body.phoneNumber - - }); - flashMessage(res, 'success', email + ' registered successfully'); - res.redirect("/login"); - } catch (e) { - console.log(e); - res.redirect("/register"); - } + await User.create({ + name: req.body.name, + email: req.body.email, + password: req.body.password, + gender: req.body.gender, + phoneNumber: req.body.phoneNumber + }); + flashMessage(res, 'success', email + ' registered successfully'); + res.redirect("/login"); + } catch (e) { + console.log(e); + res.redirect("/register"); + } +}); - router.post('/login', (req, res, next) => { - passport.authenticate('local', { - // Success redirect URL - successRedirect: '/profile', - // Failure redirect URL - failureRedirect: '/login', - /* Setting the failureFlash option to true instructs Passport to flash - an error message using the message given by the strategy's verify callback. - When a failure occur passport passes the message object as error */ - failureFlash: true - - - })(req, res, next); - - }) +router.post('/login', (req, res, next) => { + passport.authenticate('local', { + // Success redirect URL + successRedirect: '/profile', + // Failure redirect URL + failureRedirect: '/login', + /* Setting the failureFlash option to true instructs Passport to flash + an error message using the message given by the strategy's verify callback. + When a failure occur passport passes the message object as error */ + failureFlash: true + + + })(req, res, next); + +}) + +router.post('/editProfile', ensureAuthenticated, async (req, res) => { + userr = await User.findOne({ where: { id: req.user.id } }) + if ((await User.findOne({ where: { email: req.body.email } })) && userr.email != req.body.email) { + flashMessage(res, 'error', 'This email has already been registered'); + return res.redirect("/editProfile"); + } + if ((await User.findOne({ where: { name: req.body.name } })) && userr.name != req.body.name) { + flashMessage(res, 'error', 'This name has already been registered'); + return res.redirect("/editProfile"); + } + let name = req.body.name; + let email = req.body.email; + let phoneNumber = req.body.phoneNumber; + let gender = req.body.gender; + User.update({ name, email, phoneNumber, gender }, { where: { id: req.user.id } }) + res.redirect("/profile"); + +}) function checkAuthenticated(req, res, next) { - if (req.isAuthenticated()) { - - return next() - } + if (req.isAuthenticated()) { - res.redirect("/profile") - } + return next() + } + + res.redirect("/profile") +} -router.get('/logout',ensureAuthenticated, (req, res) => { - const message = 'You Have Logged out'; - flashMessage(res, 'success', message); - req.logout(); - res.redirect('/'); +router.get('/logout', ensureAuthenticated, (req, res) => { + const message = 'You Have Logged out'; + flashMessage(res, 'success', message); + req.logout(); + res.redirect('/'); }); module.exports = router; From 17f7ea3bffd86624bdf17e3de8dccab49e5f6637 Mon Sep 17 00:00:00 2001 From: bob Date: Thu, 23 Jun 2022 22:02:45 +0800 Subject: [PATCH 03/80] enhanced the ui experience of profile page. made flash msg btr for edit profile errors --- server.js | 6 ++++ views/profile.handlebars | 69 +++++++++++++++++++++------------------- views/routes/user.js | 15 ++++++++- 3 files changed, 57 insertions(+), 33 deletions(-) diff --git a/server.js b/server.js index 36ff9691..c7e4c124 100644 --- a/server.js +++ b/server.js @@ -82,6 +82,12 @@ app.engine( } return false; }, + phonenumbercheck(number) { + if (number) { + return true; + } + return false; + } }, }) diff --git a/views/profile.handlebars b/views/profile.handlebars index 44e7bcae..a230b21a 100644 --- a/views/profile.handlebars +++ b/views/profile.handlebars @@ -1,40 +1,41 @@ + -
+
-
+
{{user.name}}
- - - - + + + +

Email:

@@ -46,16 +47,20 @@

Phone Number:

+ {{#if (phonenumbercheck user.phoneNumber)}}

{{user.phoneNumber}}

+ {{else}} +

Not registered*

+ {{/if}}

Password:

- + Change Password - +
- +
- +
- -
+ \ No newline at end of file diff --git a/views/routes/user.js b/views/routes/user.js index 60202663..e36b345d 100644 --- a/views/routes/user.js +++ b/views/routes/user.js @@ -84,15 +84,28 @@ router.post('/login', (req, res, next) => { }) router.post('/editProfile', ensureAuthenticated, async (req, res) => { + x = 0; + y = 0 userr = await User.findOne({ where: { id: req.user.id } }) if ((await User.findOne({ where: { email: req.body.email } })) && userr.email != req.body.email) { + x = 1 + } + if ((await User.findOne({ where: { name: req.body.name } })) && userr.name != req.body.name) { + y = 1 + } + if (x == 1 && y != 1){ flashMessage(res, 'error', 'This email has already been registered'); return res.redirect("/editProfile"); } - if ((await User.findOne({ where: { name: req.body.name } })) && userr.name != req.body.name) { + else if (x != 1 && y == 1){ flashMessage(res, 'error', 'This name has already been registered'); return res.redirect("/editProfile"); } + else if (x == 1 && y == 1) { + flashMessage(res, 'error', 'Both name and email has already been registered'); + return res.redirect("/editProfile"); + } + let name = req.body.name; let email = req.body.email; let phoneNumber = req.body.phoneNumber; From 252630f63a80bc185b885981a58d9b90c9f5f694 Mon Sep 17 00:00:00 2001 From: bob Date: Sun, 26 Jun 2022 17:23:54 +0800 Subject: [PATCH 04/80] change password and delete feature --- views/profile.handlebars | 2 +- views/routes/user.js | 35 +++++++++++++++++++++++++++++-- views/userEditPassword.handlebars | 12 +++++------ 3 files changed, 40 insertions(+), 9 deletions(-) diff --git a/views/profile.handlebars b/views/profile.handlebars index a230b21a..5635a825 100644 --- a/views/profile.handlebars +++ b/views/profile.handlebars @@ -76,7 +76,7 @@ From a6a5025ac0d584508dcb1f25fef46892a27ef012 Mon Sep 17 00:00:00 2001 From: bob Date: Thu, 21 Jul 2022 15:48:54 +0800 Subject: [PATCH 07/80] change ezell part1 --- routes/main.js | 86 +++++++++++++++++++++++++++++++++++++++ routes/user.js | 108 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 194 insertions(+) diff --git a/routes/main.js b/routes/main.js index 6de11da7..29aaf006 100644 --- a/routes/main.js +++ b/routes/main.js @@ -27,6 +27,11 @@ const nodemailer = require("nodemailer"); // const { where } = require('sequelize/types'); const Mail = require("../config/MailConfig"); +// for forgetpassword +otp = 'placeholder' +otp2 = 'disallowpwchange' +emailvariable = 'placeholder' + router.use((req, res, next) => { res.locals.path = req.baseUrl; console.log(req.baseUrl); @@ -255,6 +260,87 @@ router.get('/editProfile',ensureAuthenticated, (req,res) => { res.render("editProfile.handlebars") }) +router.post('/profile', ensureAuthenticated, (req, res) => { + User.destroy({ where: { id: req.user.id } }) + req.logout(); + flashMessage(res, 'success', 'Account successfully deleted. Bye bye...'); + return res.redirect("/"); + + }) + router.post('/changePassword', ensureAuthenticated, async (req, res) => { + userr1 = await User.findOne({ where: { id: req.user.id } }) + const validPassword = await bcrypt.compare(req.body.oldpassword, userr1.password); + if (!validPassword) { + flashMessage(res, 'error', 'Incorrect password'); + return res.redirect('/changePassword') + } + let { oldpassword, newpassword, newpassword2 } = req.body; + if (newpassword.length < 6) { + flashMessage(res, 'error', 'Password must be at least 6 characters'); + return res.redirect('/changePassword') + } + if (newpassword2 != newpassword) { + flashMessage(res, 'error', 'New passwords do not match'); + return res.redirect('/changePassword') + } + if (oldpassword == newpassword) { + flashMessage(res, 'error', 'New and old passwords are the same'); + return res.redirect('/changePassword') + } + User.update({ password: newpassword }, { where: { id: req.user.id } }) + flashMessage(res, 'success', 'Password updated successfully'); + return res.redirect('/profile') + }) + + router.post('/editProfile', ensureAuthenticated, async (req, res) => { + x = 0; + y = 0 + userr = await User.findOne({ where: { id: req.user.id } }) + if ((await User.findOne({ where: { email: req.body.email } })) && userr.email != req.body.email) { + x = 1 + } + if ((await User.findOne({ where: { name: req.body.name } })) && userr.name != req.body.name) { + y = 1 + } + if (x == 1 && y != 1) { + flashMessage(res, 'error', 'This email has already been registered'); + return res.redirect("/editProfile"); + } + else if (x != 1 && y == 1) { + flashMessage(res, 'error', 'This name has already been registered'); + return res.redirect("/editProfile"); + } + else if (x == 1 && y == 1) { + flashMessage(res, 'error', 'Both name and email has already been registered'); + return res.redirect("/editProfile"); + } + + let name = req.body.name; + let email = req.body.email; + let phoneNumber = req.body.phoneNumber; + let gender = req.body.gender; + User.update({ name, email, phoneNumber, gender }, { where: { id: req.user.id } }) + flashMessage(res, 'success', 'Account successfully edited'); + res.redirect("/profile"); + + }) + + function checkAuthenticated(req, res, next) { + if (req.isAuthenticated()) { + + return next() + } + + res.redirect("/profile") + } + + router.get('/logout', ensureAuthenticated, (req, res) => { + const message = 'You Have Logged out'; + flashMessage(res, 'success', message); + req.logout(); + res.redirect('/'); + }); + router.get('/changePassword',ensureAuthenticated, (req,res) => { res.render("userEditPassword.handlebars") }) diff --git a/routes/user.js b/routes/user.js index 519187ed..1d1cd63b 100644 --- a/routes/user.js +++ b/routes/user.js @@ -10,6 +10,7 @@ const ensureAuthenticated = require("../views/helpers/auth"); const moment = require('moment') const Request = require('../models/Request') const { Op } = require('sequelize'); +const Mail = require("../config/MailConfig"); const userController = require('../controllers/userController') @@ -201,6 +202,113 @@ router.get('/user/requests', ensureAuthenticated, async (req, res) => { res.render('services/requests', { requests }) }) +router.get('/forgetpassword', (req, res) => { + res.render('forgetPassword'); +}); +router.post('/forgetpassword', async (req, res) => { + let { email } = req.body; + emailvariable = email; + console.log(emailvariable) + + + // if (await TempUser.findOne({ where: { email: email } })){ + // return res.redirect('/forgetpassword_otp') + // } + if (await User.findOne({ where: { email: email } })) { + otp = Math.floor(100000 + Math.random() * 900000) + console.log(otp, 'HLEOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO HERE') + + + + Mail.send(res, { + to: email, + subject: "Your OTP is ready "+ otp, + text: "Thank you for subscribing to our news letter", + template: "../views/MailTemplates/NewsLetter", + html: `
+
+ + + +
+
` + }) + + // await TempUser.create({ + // email: req.body.email, + // }) + flashMessage(res, 'success', 'An OTP has been sent out. Please check your email!'); + return res.redirect('/forgetpassword_otp') + } + flashMessage(res, 'error', 'Email does not exist!'); + return res.redirect('/forgetpassword') +}) + +router.get('/forgetpassword_otp', (req, res) => { + if (otp == "placeholder"){ + flashMessage(res, 'error', 'You do not have permission for that page'); + return res.redirect("/") + } + // otp = "placeholder" + res.render('otpPage'); + +}); + +router.post('/forgetpassword_otp', async (req, res) => { + console.log(otp) + if (otp == req.body.otp) { + console.log('hello111111') + otp = "placeholder" + otp2 = 'allowpwchange' + flashMessage(res, 'success', 'Valid OTP entered. Please change your password!'); + return res.redirect('/forgetpasswordchange') + } + flashMessage(res, 'error', 'Incorrect OTP!'); + return res.redirect('/forgetpassword_otp') +}) + +router.get("/forgetpasswordchange", (req, res) => { + console.log(otp2) + if (otp2 == 'disallowpwchange') { + flashMessage(res, 'error', 'You do not have permission for that page'); + res.redirect('/') + } + res.render('forgetpasswordchange') +}) + +router.post('/forgetpasswordchange', async (req, res) => { + let { newpassword, newpassword2 } = req.body + if (newpassword.length < 6) { + flashMessage(res, 'error', 'Password must be at least 6 characters'); + return res.redirect('/forgetpasswordchange') + } + if (newpassword2 != newpassword) { + flashMessage(res, 'error', 'New passwords do not match'); + return res.redirect('/forgetpasswordchange') + } + // user1 = await TempUser.findOne({ where: { email: emailvariable } }) + + User.update({ password: newpassword }, { where: { email: emailvariable } }) + // TempUser.destroy({ where: { email: user1.email } }) + otp = "placeholder" + otp2 = "disallowpwchange" + emailvariable = 'placeholder' + flashMessage(res, 'success', 'Password updated successfully'); + return res.redirect('/login') +}) + module.exports = router; From f5381c7ca8fb67274084117d51af294c3a8c8a98 Mon Sep 17 00:00:00 2001 From: bob Date: Thu, 21 Jul 2022 15:59:00 +0800 Subject: [PATCH 08/80] ezell pt2 --- routes/admin.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/routes/admin.js b/routes/admin.js index 148fc102..c866c756 100644 --- a/routes/admin.js +++ b/routes/admin.js @@ -189,6 +189,59 @@ router.get('/UserManagement', ensureAdminAuthenticated, async (req, res) => { res.render("admin/userManagement", { Users }) }) +router.get('/editUser/:id', (req, res) => { + User.findByPk(req.params.id) + .then((user) => { + res.render('admin/editUser', { user }); + }) + .catch(err => console.log(err)); +}); + +router.post('/editUser/:id', async (req, res) => { + x = 0; + y = 0 + userr = await User.findOne({ where: { id: req.params.id } }) + if ((await User.findOne({ where: { email: req.body.email } })) && userr.email != req.body.email) { + x = 1 + } + if ((await User.findOne({ where: { name: req.body.name } })) && userr.name != req.body.name) { + y = 1 + } + if (x == 1 && y != 1) { + flashMessage(res, 'error', 'This email has already been registered'); + return res.redirect("/admin/UserManagement"); + } + else if (x != 1 && y == 1) { + flashMessage(res, 'error', 'This name has already been registered'); + return res.redirect("/admin/UserManagement"); + } + else if (x == 1 && y == 1) { + flashMessage(res, 'error', 'Both name and email has already been registered'); + return res.redirect("/admin/UserManagement"); + } + let name = req.body.name; + let email = req.body.email; + let phoneNumber = req.body.phoneNumber; + let gender = req.body.gender; + let isban = req.body.isban; + await User.update({ name, email, phoneNumber, gender, isban }, { where: { id: req.params.id } }) + flashMessage(res, 'success', 'Account successfully edited'); + res.redirect('/admin/UserManagement') +}) + +router.get('/deleteUser/:id', async function + (req, res) { + try { + let user = await User.findByPk(req.params.id); + User.destroy({ where: { id: user.id } }); + flashMessage(res, 'success', 'Account successfully deleted.'); + res.redirect('/admin/UserManagement'); + } + catch (err) { + console.log(err); + } +}); + router.get("/Dashboard", ensureAdminAuthenticated, async (req, res) => { res.render("admin/AdminDashboard") From 9a995f79424a4b070bdcae38463fae1d371a050a Mon Sep 17 00:00:00 2001 From: bob Date: Thu, 21 Jul 2022 16:17:30 +0800 Subject: [PATCH 09/80] another part --- routes/admin.js | 2 +- routes/main.js | 2 +- views/helpers/auth.js | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/routes/admin.js b/routes/admin.js index c866c756..1839fd05 100644 --- a/routes/admin.js +++ b/routes/admin.js @@ -22,7 +22,7 @@ router.get('/', (req, res) => { res.render("admin/adminBase") }) -router.get('/profile', (req, res) => { +router.get('/profile', ensureAuthenticated, (req, res) => { res.render("admin/adminProfile") }) diff --git a/routes/main.js b/routes/main.js index 29aaf006..d2348a55 100644 --- a/routes/main.js +++ b/routes/main.js @@ -234,7 +234,7 @@ router.get('/CustomerService', (req,res) => { }) -router.get('/profile',ensureAuthenticated, (req,res) => { +router.get('/profile',ensureAuthenticated, async (req,res) => { res.render("profile") }) diff --git a/views/helpers/auth.js b/views/helpers/auth.js index e286e066..bbcf309f 100644 --- a/views/helpers/auth.js +++ b/views/helpers/auth.js @@ -1,6 +1,13 @@ const flashMessage = require("./messenger"); +const User = require("../../models/User") const ensureAuthenticated = (req, res, next) => { + // userr1 = User.findOne({ where: { id: req.user.id } }) + // if (userr1.isban == "T"){ + // req.logout() + // flashMessage(res, 'error', 'You have been banned! Please contact your local administrator'); + // return res.redirect('/login') + // } if (req.isAuthenticated()) { return next(); } From 058209af1e797b34af4e249e2c92050046d432fd Mon Sep 17 00:00:00 2001 From: bob Date: Thu, 21 Jul 2022 16:39:12 +0800 Subject: [PATCH 10/80] fixes --- controllers/userController.js | 49 +++++++++++++++++++++++------------ routes/main.js | 1 + views/helpers/auth.js | 6 ----- 3 files changed, 33 insertions(+), 23 deletions(-) diff --git a/controllers/userController.js b/controllers/userController.js index 4e729f7c..11428758 100644 --- a/controllers/userController.js +++ b/controllers/userController.js @@ -1,26 +1,41 @@ const flashMessage = require('../views/helpers/messenger'); +const User = require("../models/User") -const loginRedirect = (req, res) => { - var role = req.user.role; - let redirectTo = req.session.redirectTo; - delete req.session.redirectTo; - if(role=="C"){ - flashMessage(res, 'success', "Success You are logged in as: "+ req.user.name); - res.redirect(redirectTo || '/profile'); - } else if(role == "A" || "T"){ - flashMessage(res, 'success', "Success You are logged in as Administrator: "+ req.user.name); - res.redirect(redirectTo || "/admin") - }else if(role=="S"){ - flashMessage(res, 'success', "Success You are logged in as Seller: "+ req.user.name); - res.redirect(redirectTo || "/seller") +const loginRedirect = async (req, res) => { + var role = req.user.role; + let redirectTo = req.session.redirectTo; + delete req.session.redirectTo; + if (role == "C") { + console.log(req.user.id, 'wuehfoihfoiehfoisihfioes') + userr1 = await User.findOne({ where: { id: req.user.id } }) + console.log(userr1.isban, 'wuehfoihfoiehfoisihfioes') + if (userr1.isban == "T") { + req.logout() + flashMessage(res, 'error', 'You have been banned! Please contact your local administrator'); + return res.redirect('/login') } - - else{ - res.redirect("/login") + flashMessage(res, 'success', "Success You are logged in as: " + req.user.name); + res.redirect(redirectTo || '/profile'); + } else if (role == "A" || "T") { + flashMessage(res, 'success', "Success You are logged in as Administrator: " + req.user.name); + res.redirect(redirectTo || "/admin") + } else if (role == "S") { + userr1 = await User.findOne({ where: { id: req.user.id } }) + if (userr1.isban == "T") { + req.logout() + flashMessage(res, 'error', 'You have been banned! Please contact your local administrator'); + return res.redirect('/login') } + flashMessage(res, 'success', "Success You are logged in as Seller: " + req.user.name); + res.redirect(redirectTo || "/seller") + } + + else { + res.redirect("/login") + } } module.exports = { - loginRedirect, + loginRedirect, } \ No newline at end of file diff --git a/routes/main.js b/routes/main.js index d2348a55..d4f50d3b 100644 --- a/routes/main.js +++ b/routes/main.js @@ -3,6 +3,7 @@ const router = express.Router(); const flashMessage = require('../views/helpers/messenger'); const sequelizeUser = require("../config/DBConfig"); const { serializeUser } = require('passport'); +const bcrypt = require('bcryptjs'); //Our Models const User = require("../models/User") const Ticket = require("../models/Ticket") diff --git a/views/helpers/auth.js b/views/helpers/auth.js index bbcf309f..c44e28fa 100644 --- a/views/helpers/auth.js +++ b/views/helpers/auth.js @@ -2,12 +2,6 @@ const flashMessage = require("./messenger"); const User = require("../../models/User") const ensureAuthenticated = (req, res, next) => { - // userr1 = User.findOne({ where: { id: req.user.id } }) - // if (userr1.isban == "T"){ - // req.logout() - // flashMessage(res, 'error', 'You have been banned! Please contact your local administrator'); - // return res.redirect('/login') - // } if (req.isAuthenticated()) { return next(); } From fe374b3b5032cf2f974df21c2f663c730822f487 Mon Sep 17 00:00:00 2001 From: Reegan Goe Date: Mon, 25 Jul 2022 14:05:08 +0800 Subject: [PATCH 11/80] monday 25th july --- models/Product.js | 3 +- package-lock.json | 3 +- package.json | 3 +- public/images/items/16.png | Bin 0 -> 214234 bytes public/images/items/17.jpeg | Bin 0 -> 67976 bytes public/images/items/18.jpeg | Bin 0 -> 40520 bytes public/js/chart.js/Chart.bundle.js | 20776 +++++++++++++++++++++++ public/js/chart.js/Chart.bundle.min.js | 7 + public/js/chart.js/Chart.js | 16172 ++++++++++++++++++ public/js/chart.js/Chart.min.js | 7 + public/js/demo/chart-bar-demo.js | 174 +- public/styles/home.css | 32 +- public/uploads/1/1-1656487084911.png | Bin 0 -> 70418 bytes public/uploads/1/1-1657785840362.jpg | Bin 0 -> 155072 bytes public/uploads/1/1-1657785934410.jpg | Bin 0 -> 518561 bytes public/uploads/1/1-1657786090725.png | Bin 0 -> 2971 bytes public/uploads/1/1-1657786273569.png | Bin 0 -> 2971 bytes public/uploads/1/1-1657786282582.png | Bin 0 -> 2971 bytes public/uploads/1/1-1658125772230.jpg | Bin 0 -> 148282 bytes public/uploads/1/1-1658126476249.jpg | Bin 0 -> 88988 bytes public/uploads/1/1-1658126516760.jpg | Bin 0 -> 88988 bytes public/uploads/1/1-1658126523547.jpg | Bin 0 -> 148282 bytes public/uploads/1/1-1658126554164.jpg | Bin 0 -> 88988 bytes public/uploads/1/1-1658126564691.jpg | Bin 0 -> 88988 bytes public/uploads/1/1-1658127397773.jpg | Bin 0 -> 88988 bytes public/uploads/1/1-1658128594455.jpg | Bin 0 -> 88988 bytes public/uploads/1/1-1658128635993.jpg | Bin 0 -> 88988 bytes public/uploads/1/1-1658128715664.jpg | Bin 0 -> 88988 bytes public/uploads/1/1-1658128846987.png | Bin 0 -> 11443 bytes public/uploads/1/1-1658129503981.jpg | Bin 0 -> 88988 bytes public/uploads/1/1-1658392157273.png | Bin 0 -> 103881 bytes public/uploads/1/1-1658392184231.jpg | Bin 0 -> 148282 bytes public/uploads/1/1-1658392188247.png | Bin 0 -> 103881 bytes public/uploads/1/1-1658392263108.png | Bin 0 -> 103881 bytes routes/datapipeline.js | 23 + routes/main.js | 7 +- routes/seller.js | 24 +- views/index.handlebars | 4 +- views/partials/navbar.handlebars | 4 + views/seller/addProduct.handlebars | 67 +- views/seller/editProduct.handlebars | 20 +- views/seller/reports.handlebars | 19 + views/seller/sellerHomePage.handlebars | 2 +- views/seller/viewProducts.handlebars | 34 +- 44 files changed, 37220 insertions(+), 161 deletions(-) create mode 100644 public/images/items/16.png create mode 100644 public/images/items/17.jpeg create mode 100644 public/images/items/18.jpeg create mode 100644 public/js/chart.js/Chart.bundle.js create mode 100644 public/js/chart.js/Chart.bundle.min.js create mode 100644 public/js/chart.js/Chart.js create mode 100644 public/js/chart.js/Chart.min.js create mode 100644 public/uploads/1/1-1656487084911.png create mode 100644 public/uploads/1/1-1657785840362.jpg create mode 100644 public/uploads/1/1-1657785934410.jpg create mode 100644 public/uploads/1/1-1657786090725.png create mode 100644 public/uploads/1/1-1657786273569.png create mode 100644 public/uploads/1/1-1657786282582.png create mode 100644 public/uploads/1/1-1658125772230.jpg create mode 100644 public/uploads/1/1-1658126476249.jpg create mode 100644 public/uploads/1/1-1658126516760.jpg create mode 100644 public/uploads/1/1-1658126523547.jpg create mode 100644 public/uploads/1/1-1658126554164.jpg create mode 100644 public/uploads/1/1-1658126564691.jpg create mode 100644 public/uploads/1/1-1658127397773.jpg create mode 100644 public/uploads/1/1-1658128594455.jpg create mode 100644 public/uploads/1/1-1658128635993.jpg create mode 100644 public/uploads/1/1-1658128715664.jpg create mode 100644 public/uploads/1/1-1658128846987.png create mode 100644 public/uploads/1/1-1658129503981.jpg create mode 100644 public/uploads/1/1-1658392157273.png create mode 100644 public/uploads/1/1-1658392184231.jpg create mode 100644 public/uploads/1/1-1658392188247.png create mode 100644 public/uploads/1/1-1658392263108.png create mode 100644 views/seller/reports.handlebars diff --git a/models/Product.js b/models/Product.js index 482afeb7..39a2122b 100644 --- a/models/Product.js +++ b/models/Product.js @@ -15,7 +15,8 @@ Product.init({ quantity: {type: sequelize.INTEGER}, category:{type:sequelize.STRING}, Owner:{type:sequelize.STRING}, - OwnerID:{type: sequelize.INTEGER} + OwnerID:{type: sequelize.INTEGER}, + posterURL: { type: sequelize.STRING }, }, diff --git a/package-lock.json b/package-lock.json index 28c67369..bb5799d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,8 @@ "passport-google-oauth20": "^2.0.0", "passport-local": "^1.0.0", "sequelize": "^6.19.0", - "sessions": "^0.0.2-7" + "sessions": "^0.0.2-7", + "uuid": "^8.3.2" } }, "node_modules/@babel/runtime": { diff --git a/package.json b/package.json index e3d04207..fddda62d 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "passport-google-oauth20": "^2.0.0", "passport-local": "^1.0.0", "sequelize": "^6.19.0", - "sessions": "^0.0.2-7" + "sessions": "^0.0.2-7", + "uuid": "^8.3.2" } } diff --git a/public/images/items/16.png b/public/images/items/16.png new file mode 100644 index 0000000000000000000000000000000000000000..f756e22d9ec473884341fc77f9fe0be29eecad49 GIT binary patch literal 214234 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¨rK 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 M07*qoM6N<$g4O|N!~g&Q literal 0 HcmV?d00001 diff --git a/public/images/items/17.jpeg b/public/images/items/17.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..7079bb660c102c4e190786b075ae6fb65466860e GIT binary patch literal 67976 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 CzZ+fv literal 0 HcmV?d00001 diff --git a/public/images/items/18.jpeg b/public/images/items/18.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..99e2347006ce21c348e9031935930bf7c6c4b9c3 GIT binary patch literal 40520 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 literal 0 HcmV?d00001 diff --git a/public/js/chart.js/Chart.bundle.js b/public/js/chart.js/Chart.bundle.js new file mode 100644 index 00000000..59e2b962 --- /dev/null +++ b/public/js/chart.js/Chart.bundle.js @@ -0,0 +1,20776 @@ +/*! + * Chart.js v2.9.4 + * https://www.chartjs.org + * (c) 2020 Chart.js Contributors + * Released under the MIT License + */ +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : +typeof define === 'function' && define.amd ? define(factory) : +(global = global || self, global.Chart = factory()); +}(this, (function () { 'use strict'; + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); +} + +function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; +} + +function getCjsExportFromNamespace (n) { + return n && n['default'] || n; +} + +var colorName = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] +}; + +var conversions = createCommonjsModule(function (module) { +/* MIT license */ + + +// NOTE: conversions should only return primitive values (i.e. arrays, or +// values that give correct `typeof` results). +// do not use box values types (i.e. Number(), String(), etc.) + +var reverseKeywords = {}; +for (var key in colorName) { + if (colorName.hasOwnProperty(key)) { + reverseKeywords[colorName[key]] = key; + } +} + +var convert = module.exports = { + rgb: {channels: 3, labels: 'rgb'}, + hsl: {channels: 3, labels: 'hsl'}, + hsv: {channels: 3, labels: 'hsv'}, + hwb: {channels: 3, labels: 'hwb'}, + cmyk: {channels: 4, labels: 'cmyk'}, + xyz: {channels: 3, labels: 'xyz'}, + lab: {channels: 3, labels: 'lab'}, + lch: {channels: 3, labels: 'lch'}, + hex: {channels: 1, labels: ['hex']}, + keyword: {channels: 1, labels: ['keyword']}, + ansi16: {channels: 1, labels: ['ansi16']}, + ansi256: {channels: 1, labels: ['ansi256']}, + hcg: {channels: 3, labels: ['h', 'c', 'g']}, + apple: {channels: 3, labels: ['r16', 'g16', 'b16']}, + gray: {channels: 1, labels: ['gray']} +}; + +// hide .channels and .labels properties +for (var model in convert) { + if (convert.hasOwnProperty(model)) { + if (!('channels' in convert[model])) { + throw new Error('missing channels property: ' + model); + } + + if (!('labels' in convert[model])) { + throw new Error('missing channel labels property: ' + model); + } + + if (convert[model].labels.length !== convert[model].channels) { + throw new Error('channel and label counts mismatch: ' + model); + } + + var channels = convert[model].channels; + var labels = convert[model].labels; + delete convert[model].channels; + delete convert[model].labels; + Object.defineProperty(convert[model], 'channels', {value: channels}); + Object.defineProperty(convert[model], 'labels', {value: labels}); + } +} + +convert.rgb.hsl = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + var delta = max - min; + var h; + var s; + var l; + + if (max === min) { + h = 0; + } else if (r === max) { + h = (g - b) / delta; + } else if (g === max) { + h = 2 + (b - r) / delta; + } else if (b === max) { + h = 4 + (r - g) / delta; + } + + h = Math.min(h * 60, 360); + + if (h < 0) { + h += 360; + } + + l = (min + max) / 2; + + if (max === min) { + s = 0; + } else if (l <= 0.5) { + s = delta / (max + min); + } else { + s = delta / (2 - max - min); + } + + return [h, s * 100, l * 100]; +}; + +convert.rgb.hsv = function (rgb) { + var rdif; + var gdif; + var bdif; + var h; + var s; + + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var v = Math.max(r, g, b); + var diff = v - Math.min(r, g, b); + var diffc = function (c) { + return (v - c) / 6 / diff + 1 / 2; + }; + + if (diff === 0) { + h = s = 0; + } else { + s = diff / v; + rdif = diffc(r); + gdif = diffc(g); + bdif = diffc(b); + + if (r === v) { + h = bdif - gdif; + } else if (g === v) { + h = (1 / 3) + rdif - bdif; + } else if (b === v) { + h = (2 / 3) + gdif - rdif; + } + if (h < 0) { + h += 1; + } else if (h > 1) { + h -= 1; + } + } + + return [ + h * 360, + s * 100, + v * 100 + ]; +}; + +convert.rgb.hwb = function (rgb) { + var r = rgb[0]; + var g = rgb[1]; + var b = rgb[2]; + var h = convert.rgb.hsl(rgb)[0]; + var w = 1 / 255 * Math.min(r, Math.min(g, b)); + + b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); + + return [h, w * 100, b * 100]; +}; + +convert.rgb.cmyk = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var c; + var m; + var y; + var k; + + k = Math.min(1 - r, 1 - g, 1 - b); + c = (1 - r - k) / (1 - k) || 0; + m = (1 - g - k) / (1 - k) || 0; + y = (1 - b - k) / (1 - k) || 0; + + return [c * 100, m * 100, y * 100, k * 100]; +}; + +/** + * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance + * */ +function comparativeDistance(x, y) { + return ( + Math.pow(x[0] - y[0], 2) + + Math.pow(x[1] - y[1], 2) + + Math.pow(x[2] - y[2], 2) + ); +} + +convert.rgb.keyword = function (rgb) { + var reversed = reverseKeywords[rgb]; + if (reversed) { + return reversed; + } + + var currentClosestDistance = Infinity; + var currentClosestKeyword; + + for (var keyword in colorName) { + if (colorName.hasOwnProperty(keyword)) { + var value = colorName[keyword]; + + // Compute comparative distance + var distance = comparativeDistance(rgb, value); + + // Check if its less, if so set as closest + if (distance < currentClosestDistance) { + currentClosestDistance = distance; + currentClosestKeyword = keyword; + } + } + } + + return currentClosestKeyword; +}; + +convert.keyword.rgb = function (keyword) { + return colorName[keyword]; +}; + +convert.rgb.xyz = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + + // assume sRGB + r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); + g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); + b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); + + var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); + var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); + var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); + + return [x * 100, y * 100, z * 100]; +}; + +convert.rgb.lab = function (rgb) { + var xyz = convert.rgb.xyz(rgb); + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +}; + +convert.hsl.rgb = function (hsl) { + var h = hsl[0] / 360; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var t1; + var t2; + var t3; + var rgb; + var val; + + if (s === 0) { + val = l * 255; + return [val, val, val]; + } + + if (l < 0.5) { + t2 = l * (1 + s); + } else { + t2 = l + s - l * s; + } + + t1 = 2 * l - t2; + + rgb = [0, 0, 0]; + for (var i = 0; i < 3; i++) { + t3 = h + 1 / 3 * -(i - 1); + if (t3 < 0) { + t3++; + } + if (t3 > 1) { + t3--; + } + + if (6 * t3 < 1) { + val = t1 + (t2 - t1) * 6 * t3; + } else if (2 * t3 < 1) { + val = t2; + } else if (3 * t3 < 2) { + val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + } else { + val = t1; + } + + rgb[i] = val * 255; + } + + return rgb; +}; + +convert.hsl.hsv = function (hsl) { + var h = hsl[0]; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var smin = s; + var lmin = Math.max(l, 0.01); + var sv; + var v; + + l *= 2; + s *= (l <= 1) ? l : 2 - l; + smin *= lmin <= 1 ? lmin : 2 - lmin; + v = (l + s) / 2; + sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s); + + return [h, sv * 100, v * 100]; +}; + +convert.hsv.rgb = function (hsv) { + var h = hsv[0] / 60; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var hi = Math.floor(h) % 6; + + var f = h - Math.floor(h); + var p = 255 * v * (1 - s); + var q = 255 * v * (1 - (s * f)); + var t = 255 * v * (1 - (s * (1 - f))); + v *= 255; + + switch (hi) { + case 0: + return [v, t, p]; + case 1: + return [q, v, p]; + case 2: + return [p, v, t]; + case 3: + return [p, q, v]; + case 4: + return [t, p, v]; + case 5: + return [v, p, q]; + } +}; + +convert.hsv.hsl = function (hsv) { + var h = hsv[0]; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var vmin = Math.max(v, 0.01); + var lmin; + var sl; + var l; + + l = (2 - s) * v; + lmin = (2 - s) * vmin; + sl = s * vmin; + sl /= (lmin <= 1) ? lmin : 2 - lmin; + sl = sl || 0; + l /= 2; + + return [h, sl * 100, l * 100]; +}; + +// http://dev.w3.org/csswg/css-color/#hwb-to-rgb +convert.hwb.rgb = function (hwb) { + var h = hwb[0] / 360; + var wh = hwb[1] / 100; + var bl = hwb[2] / 100; + var ratio = wh + bl; + var i; + var v; + var f; + var n; + + // wh + bl cant be > 1 + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } + + i = Math.floor(6 * h); + v = 1 - bl; + f = 6 * h - i; + + if ((i & 0x01) !== 0) { + f = 1 - f; + } + + n = wh + f * (v - wh); // linear interpolation + + var r; + var g; + var b; + switch (i) { + default: + case 6: + case 0: r = v; g = n; b = wh; break; + case 1: r = n; g = v; b = wh; break; + case 2: r = wh; g = v; b = n; break; + case 3: r = wh; g = n; b = v; break; + case 4: r = n; g = wh; b = v; break; + case 5: r = v; g = wh; b = n; break; + } + + return [r * 255, g * 255, b * 255]; +}; + +convert.cmyk.rgb = function (cmyk) { + var c = cmyk[0] / 100; + var m = cmyk[1] / 100; + var y = cmyk[2] / 100; + var k = cmyk[3] / 100; + var r; + var g; + var b; + + r = 1 - Math.min(1, c * (1 - k) + k); + g = 1 - Math.min(1, m * (1 - k) + k); + b = 1 - Math.min(1, y * (1 - k) + k); + + return [r * 255, g * 255, b * 255]; +}; + +convert.xyz.rgb = function (xyz) { + var x = xyz[0] / 100; + var y = xyz[1] / 100; + var z = xyz[2] / 100; + var r; + var g; + var b; + + r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); + g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); + b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); + + // assume sRGB + r = r > 0.0031308 + ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) + : r * 12.92; + + g = g > 0.0031308 + ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) + : g * 12.92; + + b = b > 0.0031308 + ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) + : b * 12.92; + + r = Math.min(Math.max(0, r), 1); + g = Math.min(Math.max(0, g), 1); + b = Math.min(Math.max(0, b), 1); + + return [r * 255, g * 255, b * 255]; +}; + +convert.xyz.lab = function (xyz) { + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +}; + +convert.lab.xyz = function (lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var x; + var y; + var z; + + y = (l + 16) / 116; + x = a / 500 + y; + z = y - b / 200; + + var y2 = Math.pow(y, 3); + var x2 = Math.pow(x, 3); + var z2 = Math.pow(z, 3); + y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787; + x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787; + z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787; + + x *= 95.047; + y *= 100; + z *= 108.883; + + return [x, y, z]; +}; + +convert.lab.lch = function (lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var hr; + var h; + var c; + + hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; + + if (h < 0) { + h += 360; + } + + c = Math.sqrt(a * a + b * b); + + return [l, c, h]; +}; + +convert.lch.lab = function (lch) { + var l = lch[0]; + var c = lch[1]; + var h = lch[2]; + var a; + var b; + var hr; + + hr = h / 360 * 2 * Math.PI; + a = c * Math.cos(hr); + b = c * Math.sin(hr); + + return [l, a, b]; +}; + +convert.rgb.ansi16 = function (args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization + + value = Math.round(value / 50); + + if (value === 0) { + return 30; + } + + var ansi = 30 + + ((Math.round(b / 255) << 2) + | (Math.round(g / 255) << 1) + | Math.round(r / 255)); + + if (value === 2) { + ansi += 60; + } + + return ansi; +}; + +convert.hsv.ansi16 = function (args) { + // optimization here; we already know the value and don't need to get + // it converted for us. + return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); +}; + +convert.rgb.ansi256 = function (args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + + // we use the extended greyscale palette here, with the exception of + // black and white. normal palette only has 4 greyscale shades. + if (r === g && g === b) { + if (r < 8) { + return 16; + } + + if (r > 248) { + return 231; + } + + return Math.round(((r - 8) / 247) * 24) + 232; + } + + var ansi = 16 + + (36 * Math.round(r / 255 * 5)) + + (6 * Math.round(g / 255 * 5)) + + Math.round(b / 255 * 5); + + return ansi; +}; + +convert.ansi16.rgb = function (args) { + var color = args % 10; + + // handle greyscale + if (color === 0 || color === 7) { + if (args > 50) { + color += 3.5; + } + + color = color / 10.5 * 255; + + return [color, color, color]; + } + + var mult = (~~(args > 50) + 1) * 0.5; + var r = ((color & 1) * mult) * 255; + var g = (((color >> 1) & 1) * mult) * 255; + var b = (((color >> 2) & 1) * mult) * 255; + + return [r, g, b]; +}; + +convert.ansi256.rgb = function (args) { + // handle greyscale + if (args >= 232) { + var c = (args - 232) * 10 + 8; + return [c, c, c]; + } + + args -= 16; + + var rem; + var r = Math.floor(args / 36) / 5 * 255; + var g = Math.floor((rem = args % 36) / 6) / 5 * 255; + var b = (rem % 6) / 5 * 255; + + return [r, g, b]; +}; + +convert.rgb.hex = function (args) { + var integer = ((Math.round(args[0]) & 0xFF) << 16) + + ((Math.round(args[1]) & 0xFF) << 8) + + (Math.round(args[2]) & 0xFF); + + var string = integer.toString(16).toUpperCase(); + return '000000'.substring(string.length) + string; +}; + +convert.hex.rgb = function (args) { + var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); + if (!match) { + return [0, 0, 0]; + } + + var colorString = match[0]; + + if (match[0].length === 3) { + colorString = colorString.split('').map(function (char) { + return char + char; + }).join(''); + } + + var integer = parseInt(colorString, 16); + var r = (integer >> 16) & 0xFF; + var g = (integer >> 8) & 0xFF; + var b = integer & 0xFF; + + return [r, g, b]; +}; + +convert.rgb.hcg = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var max = Math.max(Math.max(r, g), b); + var min = Math.min(Math.min(r, g), b); + var chroma = (max - min); + var grayscale; + var hue; + + if (chroma < 1) { + grayscale = min / (1 - chroma); + } else { + grayscale = 0; + } + + if (chroma <= 0) { + hue = 0; + } else + if (max === r) { + hue = ((g - b) / chroma) % 6; + } else + if (max === g) { + hue = 2 + (b - r) / chroma; + } else { + hue = 4 + (r - g) / chroma + 4; + } + + hue /= 6; + hue %= 1; + + return [hue * 360, chroma * 100, grayscale * 100]; +}; + +convert.hsl.hcg = function (hsl) { + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var c = 1; + var f = 0; + + if (l < 0.5) { + c = 2.0 * s * l; + } else { + c = 2.0 * s * (1.0 - l); + } + + if (c < 1.0) { + f = (l - 0.5 * c) / (1.0 - c); + } + + return [hsl[0], c * 100, f * 100]; +}; + +convert.hsv.hcg = function (hsv) { + var s = hsv[1] / 100; + var v = hsv[2] / 100; + + var c = s * v; + var f = 0; + + if (c < 1.0) { + f = (v - c) / (1 - c); + } + + return [hsv[0], c * 100, f * 100]; +}; + +convert.hcg.rgb = function (hcg) { + var h = hcg[0] / 360; + var c = hcg[1] / 100; + var g = hcg[2] / 100; + + if (c === 0.0) { + return [g * 255, g * 255, g * 255]; + } + + var pure = [0, 0, 0]; + var hi = (h % 1) * 6; + var v = hi % 1; + var w = 1 - v; + var mg = 0; + + switch (Math.floor(hi)) { + case 0: + pure[0] = 1; pure[1] = v; pure[2] = 0; break; + case 1: + pure[0] = w; pure[1] = 1; pure[2] = 0; break; + case 2: + pure[0] = 0; pure[1] = 1; pure[2] = v; break; + case 3: + pure[0] = 0; pure[1] = w; pure[2] = 1; break; + case 4: + pure[0] = v; pure[1] = 0; pure[2] = 1; break; + default: + pure[0] = 1; pure[1] = 0; pure[2] = w; + } + + mg = (1.0 - c) * g; + + return [ + (c * pure[0] + mg) * 255, + (c * pure[1] + mg) * 255, + (c * pure[2] + mg) * 255 + ]; +}; + +convert.hcg.hsv = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + + var v = c + g * (1.0 - c); + var f = 0; + + if (v > 0.0) { + f = c / v; + } + + return [hcg[0], f * 100, v * 100]; +}; + +convert.hcg.hsl = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + + var l = g * (1.0 - c) + 0.5 * c; + var s = 0; + + if (l > 0.0 && l < 0.5) { + s = c / (2 * l); + } else + if (l >= 0.5 && l < 1.0) { + s = c / (2 * (1 - l)); + } + + return [hcg[0], s * 100, l * 100]; +}; + +convert.hcg.hwb = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + var v = c + g * (1.0 - c); + return [hcg[0], (v - c) * 100, (1 - v) * 100]; +}; + +convert.hwb.hcg = function (hwb) { + var w = hwb[1] / 100; + var b = hwb[2] / 100; + var v = 1 - b; + var c = v - w; + var g = 0; + + if (c < 1) { + g = (v - c) / (1 - c); + } + + return [hwb[0], c * 100, g * 100]; +}; + +convert.apple.rgb = function (apple) { + return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255]; +}; + +convert.rgb.apple = function (rgb) { + return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535]; +}; + +convert.gray.rgb = function (args) { + return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; +}; + +convert.gray.hsl = convert.gray.hsv = function (args) { + return [0, 0, args[0]]; +}; + +convert.gray.hwb = function (gray) { + return [0, 100, gray[0]]; +}; + +convert.gray.cmyk = function (gray) { + return [0, 0, 0, gray[0]]; +}; + +convert.gray.lab = function (gray) { + return [gray[0], 0, 0]; +}; + +convert.gray.hex = function (gray) { + var val = Math.round(gray[0] / 100 * 255) & 0xFF; + var integer = (val << 16) + (val << 8) + val; + + var string = integer.toString(16).toUpperCase(); + return '000000'.substring(string.length) + string; +}; + +convert.rgb.gray = function (rgb) { + var val = (rgb[0] + rgb[1] + rgb[2]) / 3; + return [val / 255 * 100]; +}; +}); +var conversions_1 = conversions.rgb; +var conversions_2 = conversions.hsl; +var conversions_3 = conversions.hsv; +var conversions_4 = conversions.hwb; +var conversions_5 = conversions.cmyk; +var conversions_6 = conversions.xyz; +var conversions_7 = conversions.lab; +var conversions_8 = conversions.lch; +var conversions_9 = conversions.hex; +var conversions_10 = conversions.keyword; +var conversions_11 = conversions.ansi16; +var conversions_12 = conversions.ansi256; +var conversions_13 = conversions.hcg; +var conversions_14 = conversions.apple; +var conversions_15 = conversions.gray; + +/* + this function routes a model to all other models. + + all functions that are routed have a property `.conversion` attached + to the returned synthetic function. This property is an array + of strings, each with the steps in between the 'from' and 'to' + color models (inclusive). + + conversions that are not possible simply are not included. +*/ + +function buildGraph() { + var graph = {}; + // https://jsperf.com/object-keys-vs-for-in-with-closure/3 + var models = Object.keys(conversions); + + for (var len = models.length, i = 0; i < len; i++) { + graph[models[i]] = { + // http://jsperf.com/1-vs-infinity + // micro-opt, but this is simple. + distance: -1, + parent: null + }; + } + + return graph; +} + +// https://en.wikipedia.org/wiki/Breadth-first_search +function deriveBFS(fromModel) { + var graph = buildGraph(); + var queue = [fromModel]; // unshift -> queue -> pop + + graph[fromModel].distance = 0; + + while (queue.length) { + var current = queue.pop(); + var adjacents = Object.keys(conversions[current]); + + for (var len = adjacents.length, i = 0; i < len; i++) { + var adjacent = adjacents[i]; + var node = graph[adjacent]; + + if (node.distance === -1) { + node.distance = graph[current].distance + 1; + node.parent = current; + queue.unshift(adjacent); + } + } + } + + return graph; +} + +function link(from, to) { + return function (args) { + return to(from(args)); + }; +} + +function wrapConversion(toModel, graph) { + var path = [graph[toModel].parent, toModel]; + var fn = conversions[graph[toModel].parent][toModel]; + + var cur = graph[toModel].parent; + while (graph[cur].parent) { + path.unshift(graph[cur].parent); + fn = link(conversions[graph[cur].parent][cur], fn); + cur = graph[cur].parent; + } + + fn.conversion = path; + return fn; +} + +var route = function (fromModel) { + var graph = deriveBFS(fromModel); + var conversion = {}; + + var models = Object.keys(graph); + for (var len = models.length, i = 0; i < len; i++) { + var toModel = models[i]; + var node = graph[toModel]; + + if (node.parent === null) { + // no possible conversion, or this node is the source model. + continue; + } + + conversion[toModel] = wrapConversion(toModel, graph); + } + + return conversion; +}; + +var convert = {}; + +var models = Object.keys(conversions); + +function wrapRaw(fn) { + var wrappedFn = function (args) { + if (args === undefined || args === null) { + return args; + } + + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } + + return fn(args); + }; + + // preserve .conversion property if there is one + if ('conversion' in fn) { + wrappedFn.conversion = fn.conversion; + } + + return wrappedFn; +} + +function wrapRounded(fn) { + var wrappedFn = function (args) { + if (args === undefined || args === null) { + return args; + } + + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } + + var result = fn(args); + + // we're assuming the result is an array here. + // see notice in conversions.js; don't use box types + // in conversion functions. + if (typeof result === 'object') { + for (var len = result.length, i = 0; i < len; i++) { + result[i] = Math.round(result[i]); + } + } + + return result; + }; + + // preserve .conversion property if there is one + if ('conversion' in fn) { + wrappedFn.conversion = fn.conversion; + } + + return wrappedFn; +} + +models.forEach(function (fromModel) { + convert[fromModel] = {}; + + Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels}); + Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels}); + + var routes = route(fromModel); + var routeModels = Object.keys(routes); + + routeModels.forEach(function (toModel) { + var fn = routes[toModel]; + + convert[fromModel][toModel] = wrapRounded(fn); + convert[fromModel][toModel].raw = wrapRaw(fn); + }); +}); + +var colorConvert = convert; + +var colorName$1 = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] +}; + +/* MIT license */ + + +var colorString = { + getRgba: getRgba, + getHsla: getHsla, + getRgb: getRgb, + getHsl: getHsl, + getHwb: getHwb, + getAlpha: getAlpha, + + hexString: hexString, + rgbString: rgbString, + rgbaString: rgbaString, + percentString: percentString, + percentaString: percentaString, + hslString: hslString, + hslaString: hslaString, + hwbString: hwbString, + keyword: keyword +}; + +function getRgba(string) { + if (!string) { + return; + } + var abbr = /^#([a-fA-F0-9]{3,4})$/i, + hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i, + rgba = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i, + per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i, + keyword = /(\w+)/; + + var rgb = [0, 0, 0], + a = 1, + match = string.match(abbr), + hexAlpha = ""; + if (match) { + match = match[1]; + hexAlpha = match[3]; + for (var i = 0; i < rgb.length; i++) { + rgb[i] = parseInt(match[i] + match[i], 16); + } + if (hexAlpha) { + a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100; + } + } + else if (match = string.match(hex)) { + hexAlpha = match[2]; + match = match[1]; + for (var i = 0; i < rgb.length; i++) { + rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16); + } + if (hexAlpha) { + a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100; + } + } + else if (match = string.match(rgba)) { + for (var i = 0; i < rgb.length; i++) { + rgb[i] = parseInt(match[i + 1]); + } + a = parseFloat(match[4]); + } + else if (match = string.match(per)) { + for (var i = 0; i < rgb.length; i++) { + rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55); + } + a = parseFloat(match[4]); + } + else if (match = string.match(keyword)) { + if (match[1] == "transparent") { + return [0, 0, 0, 0]; + } + rgb = colorName$1[match[1]]; + if (!rgb) { + return; + } + } + + for (var i = 0; i < rgb.length; i++) { + rgb[i] = scale(rgb[i], 0, 255); + } + if (!a && a != 0) { + a = 1; + } + else { + a = scale(a, 0, 1); + } + rgb[3] = a; + return rgb; +} + +function getHsla(string) { + if (!string) { + return; + } + var hsl = /^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/; + var match = string.match(hsl); + if (match) { + var alpha = parseFloat(match[4]); + var h = scale(parseInt(match[1]), 0, 360), + s = scale(parseFloat(match[2]), 0, 100), + l = scale(parseFloat(match[3]), 0, 100), + a = scale(isNaN(alpha) ? 1 : alpha, 0, 1); + return [h, s, l, a]; + } +} + +function getHwb(string) { + if (!string) { + return; + } + var hwb = /^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/; + var match = string.match(hwb); + if (match) { + var alpha = parseFloat(match[4]); + var h = scale(parseInt(match[1]), 0, 360), + w = scale(parseFloat(match[2]), 0, 100), + b = scale(parseFloat(match[3]), 0, 100), + a = scale(isNaN(alpha) ? 1 : alpha, 0, 1); + return [h, w, b, a]; + } +} + +function getRgb(string) { + var rgba = getRgba(string); + return rgba && rgba.slice(0, 3); +} + +function getHsl(string) { + var hsla = getHsla(string); + return hsla && hsla.slice(0, 3); +} + +function getAlpha(string) { + var vals = getRgba(string); + if (vals) { + return vals[3]; + } + else if (vals = getHsla(string)) { + return vals[3]; + } + else if (vals = getHwb(string)) { + return vals[3]; + } +} + +// generators +function hexString(rgba, a) { + var a = (a !== undefined && rgba.length === 3) ? a : rgba[3]; + return "#" + hexDouble(rgba[0]) + + hexDouble(rgba[1]) + + hexDouble(rgba[2]) + + ( + (a >= 0 && a < 1) + ? hexDouble(Math.round(a * 255)) + : "" + ); +} + +function rgbString(rgba, alpha) { + if (alpha < 1 || (rgba[3] && rgba[3] < 1)) { + return rgbaString(rgba, alpha); + } + return "rgb(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] + ")"; +} + +function rgbaString(rgba, alpha) { + if (alpha === undefined) { + alpha = (rgba[3] !== undefined ? rgba[3] : 1); + } + return "rgba(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] + + ", " + alpha + ")"; +} + +function percentString(rgba, alpha) { + if (alpha < 1 || (rgba[3] && rgba[3] < 1)) { + return percentaString(rgba, alpha); + } + var r = Math.round(rgba[0]/255 * 100), + g = Math.round(rgba[1]/255 * 100), + b = Math.round(rgba[2]/255 * 100); + + return "rgb(" + r + "%, " + g + "%, " + b + "%)"; +} + +function percentaString(rgba, alpha) { + var r = Math.round(rgba[0]/255 * 100), + g = Math.round(rgba[1]/255 * 100), + b = Math.round(rgba[2]/255 * 100); + return "rgba(" + r + "%, " + g + "%, " + b + "%, " + (alpha || rgba[3] || 1) + ")"; +} + +function hslString(hsla, alpha) { + if (alpha < 1 || (hsla[3] && hsla[3] < 1)) { + return hslaString(hsla, alpha); + } + return "hsl(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%)"; +} + +function hslaString(hsla, alpha) { + if (alpha === undefined) { + alpha = (hsla[3] !== undefined ? hsla[3] : 1); + } + return "hsla(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%, " + + alpha + ")"; +} + +// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax +// (hwb have alpha optional & 1 is default value) +function hwbString(hwb, alpha) { + if (alpha === undefined) { + alpha = (hwb[3] !== undefined ? hwb[3] : 1); + } + return "hwb(" + hwb[0] + ", " + hwb[1] + "%, " + hwb[2] + "%" + + (alpha !== undefined && alpha !== 1 ? ", " + alpha : "") + ")"; +} + +function keyword(rgb) { + return reverseNames[rgb.slice(0, 3)]; +} + +// helpers +function scale(num, min, max) { + return Math.min(Math.max(min, num), max); +} + +function hexDouble(num) { + var str = num.toString(16).toUpperCase(); + return (str.length < 2) ? "0" + str : str; +} + + +//create a list of reverse color names +var reverseNames = {}; +for (var name in colorName$1) { + reverseNames[colorName$1[name]] = name; +} + +/* MIT license */ + + + +var Color = function (obj) { + if (obj instanceof Color) { + return obj; + } + if (!(this instanceof Color)) { + return new Color(obj); + } + + this.valid = false; + this.values = { + rgb: [0, 0, 0], + hsl: [0, 0, 0], + hsv: [0, 0, 0], + hwb: [0, 0, 0], + cmyk: [0, 0, 0, 0], + alpha: 1 + }; + + // parse Color() argument + var vals; + if (typeof obj === 'string') { + vals = colorString.getRgba(obj); + if (vals) { + this.setValues('rgb', vals); + } else if (vals = colorString.getHsla(obj)) { + this.setValues('hsl', vals); + } else if (vals = colorString.getHwb(obj)) { + this.setValues('hwb', vals); + } + } else if (typeof obj === 'object') { + vals = obj; + if (vals.r !== undefined || vals.red !== undefined) { + this.setValues('rgb', vals); + } else if (vals.l !== undefined || vals.lightness !== undefined) { + this.setValues('hsl', vals); + } else if (vals.v !== undefined || vals.value !== undefined) { + this.setValues('hsv', vals); + } else if (vals.w !== undefined || vals.whiteness !== undefined) { + this.setValues('hwb', vals); + } else if (vals.c !== undefined || vals.cyan !== undefined) { + this.setValues('cmyk', vals); + } + } +}; + +Color.prototype = { + isValid: function () { + return this.valid; + }, + rgb: function () { + return this.setSpace('rgb', arguments); + }, + hsl: function () { + return this.setSpace('hsl', arguments); + }, + hsv: function () { + return this.setSpace('hsv', arguments); + }, + hwb: function () { + return this.setSpace('hwb', arguments); + }, + cmyk: function () { + return this.setSpace('cmyk', arguments); + }, + + rgbArray: function () { + return this.values.rgb; + }, + hslArray: function () { + return this.values.hsl; + }, + hsvArray: function () { + return this.values.hsv; + }, + hwbArray: function () { + var values = this.values; + if (values.alpha !== 1) { + return values.hwb.concat([values.alpha]); + } + return values.hwb; + }, + cmykArray: function () { + return this.values.cmyk; + }, + rgbaArray: function () { + var values = this.values; + return values.rgb.concat([values.alpha]); + }, + hslaArray: function () { + var values = this.values; + return values.hsl.concat([values.alpha]); + }, + alpha: function (val) { + if (val === undefined) { + return this.values.alpha; + } + this.setValues('alpha', val); + return this; + }, + + red: function (val) { + return this.setChannel('rgb', 0, val); + }, + green: function (val) { + return this.setChannel('rgb', 1, val); + }, + blue: function (val) { + return this.setChannel('rgb', 2, val); + }, + hue: function (val) { + if (val) { + val %= 360; + val = val < 0 ? 360 + val : val; + } + return this.setChannel('hsl', 0, val); + }, + saturation: function (val) { + return this.setChannel('hsl', 1, val); + }, + lightness: function (val) { + return this.setChannel('hsl', 2, val); + }, + saturationv: function (val) { + return this.setChannel('hsv', 1, val); + }, + whiteness: function (val) { + return this.setChannel('hwb', 1, val); + }, + blackness: function (val) { + return this.setChannel('hwb', 2, val); + }, + value: function (val) { + return this.setChannel('hsv', 2, val); + }, + cyan: function (val) { + return this.setChannel('cmyk', 0, val); + }, + magenta: function (val) { + return this.setChannel('cmyk', 1, val); + }, + yellow: function (val) { + return this.setChannel('cmyk', 2, val); + }, + black: function (val) { + return this.setChannel('cmyk', 3, val); + }, + + hexString: function () { + return colorString.hexString(this.values.rgb); + }, + rgbString: function () { + return colorString.rgbString(this.values.rgb, this.values.alpha); + }, + rgbaString: function () { + return colorString.rgbaString(this.values.rgb, this.values.alpha); + }, + percentString: function () { + return colorString.percentString(this.values.rgb, this.values.alpha); + }, + hslString: function () { + return colorString.hslString(this.values.hsl, this.values.alpha); + }, + hslaString: function () { + return colorString.hslaString(this.values.hsl, this.values.alpha); + }, + hwbString: function () { + return colorString.hwbString(this.values.hwb, this.values.alpha); + }, + keyword: function () { + return colorString.keyword(this.values.rgb, this.values.alpha); + }, + + rgbNumber: function () { + var rgb = this.values.rgb; + return (rgb[0] << 16) | (rgb[1] << 8) | rgb[2]; + }, + + luminosity: function () { + // http://www.w3.org/TR/WCAG20/#relativeluminancedef + var rgb = this.values.rgb; + var lum = []; + for (var i = 0; i < rgb.length; i++) { + var chan = rgb[i] / 255; + lum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4); + } + return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2]; + }, + + contrast: function (color2) { + // http://www.w3.org/TR/WCAG20/#contrast-ratiodef + var lum1 = this.luminosity(); + var lum2 = color2.luminosity(); + if (lum1 > lum2) { + return (lum1 + 0.05) / (lum2 + 0.05); + } + return (lum2 + 0.05) / (lum1 + 0.05); + }, + + level: function (color2) { + var contrastRatio = this.contrast(color2); + if (contrastRatio >= 7.1) { + return 'AAA'; + } + + return (contrastRatio >= 4.5) ? 'AA' : ''; + }, + + dark: function () { + // YIQ equation from http://24ways.org/2010/calculating-color-contrast + var rgb = this.values.rgb; + var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000; + return yiq < 128; + }, + + light: function () { + return !this.dark(); + }, + + negate: function () { + var rgb = []; + for (var i = 0; i < 3; i++) { + rgb[i] = 255 - this.values.rgb[i]; + } + this.setValues('rgb', rgb); + return this; + }, + + lighten: function (ratio) { + var hsl = this.values.hsl; + hsl[2] += hsl[2] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + darken: function (ratio) { + var hsl = this.values.hsl; + hsl[2] -= hsl[2] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + saturate: function (ratio) { + var hsl = this.values.hsl; + hsl[1] += hsl[1] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + desaturate: function (ratio) { + var hsl = this.values.hsl; + hsl[1] -= hsl[1] * ratio; + this.setValues('hsl', hsl); + return this; + }, + + whiten: function (ratio) { + var hwb = this.values.hwb; + hwb[1] += hwb[1] * ratio; + this.setValues('hwb', hwb); + return this; + }, + + blacken: function (ratio) { + var hwb = this.values.hwb; + hwb[2] += hwb[2] * ratio; + this.setValues('hwb', hwb); + return this; + }, + + greyscale: function () { + var rgb = this.values.rgb; + // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale + var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; + this.setValues('rgb', [val, val, val]); + return this; + }, + + clearer: function (ratio) { + var alpha = this.values.alpha; + this.setValues('alpha', alpha - (alpha * ratio)); + return this; + }, + + opaquer: function (ratio) { + var alpha = this.values.alpha; + this.setValues('alpha', alpha + (alpha * ratio)); + return this; + }, + + rotate: function (degrees) { + var hsl = this.values.hsl; + var hue = (hsl[0] + degrees) % 360; + hsl[0] = hue < 0 ? 360 + hue : hue; + this.setValues('hsl', hsl); + return this; + }, + + /** + * Ported from sass implementation in C + * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209 + */ + mix: function (mixinColor, weight) { + var color1 = this; + var color2 = mixinColor; + var p = weight === undefined ? 0.5 : weight; + + var w = 2 * p - 1; + var a = color1.alpha() - color2.alpha(); + + var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; + var w2 = 1 - w1; + + return this + .rgb( + w1 * color1.red() + w2 * color2.red(), + w1 * color1.green() + w2 * color2.green(), + w1 * color1.blue() + w2 * color2.blue() + ) + .alpha(color1.alpha() * p + color2.alpha() * (1 - p)); + }, + + toJSON: function () { + return this.rgb(); + }, + + clone: function () { + // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify, + // making the final build way to big to embed in Chart.js. So let's do it manually, + // assuming that values to clone are 1 dimension arrays containing only numbers, + // except 'alpha' which is a number. + var result = new Color(); + var source = this.values; + var target = result.values; + var value, type; + + for (var prop in source) { + if (source.hasOwnProperty(prop)) { + value = source[prop]; + type = ({}).toString.call(value); + if (type === '[object Array]') { + target[prop] = value.slice(0); + } else if (type === '[object Number]') { + target[prop] = value; + } else { + console.error('unexpected color value:', value); + } + } + } + + return result; + } +}; + +Color.prototype.spaces = { + rgb: ['red', 'green', 'blue'], + hsl: ['hue', 'saturation', 'lightness'], + hsv: ['hue', 'saturation', 'value'], + hwb: ['hue', 'whiteness', 'blackness'], + cmyk: ['cyan', 'magenta', 'yellow', 'black'] +}; + +Color.prototype.maxes = { + rgb: [255, 255, 255], + hsl: [360, 100, 100], + hsv: [360, 100, 100], + hwb: [360, 100, 100], + cmyk: [100, 100, 100, 100] +}; + +Color.prototype.getValues = function (space) { + var values = this.values; + var vals = {}; + + for (var i = 0; i < space.length; i++) { + vals[space.charAt(i)] = values[space][i]; + } + + if (values.alpha !== 1) { + vals.a = values.alpha; + } + + // {r: 255, g: 255, b: 255, a: 0.4} + return vals; +}; + +Color.prototype.setValues = function (space, vals) { + var values = this.values; + var spaces = this.spaces; + var maxes = this.maxes; + var alpha = 1; + var i; + + this.valid = true; + + if (space === 'alpha') { + alpha = vals; + } else if (vals.length) { + // [10, 10, 10] + values[space] = vals.slice(0, space.length); + alpha = vals[space.length]; + } else if (vals[space.charAt(0)] !== undefined) { + // {r: 10, g: 10, b: 10} + for (i = 0; i < space.length; i++) { + values[space][i] = vals[space.charAt(i)]; + } + + alpha = vals.a; + } else if (vals[spaces[space][0]] !== undefined) { + // {red: 10, green: 10, blue: 10} + var chans = spaces[space]; + + for (i = 0; i < space.length; i++) { + values[space][i] = vals[chans[i]]; + } + + alpha = vals.alpha; + } + + values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha))); + + if (space === 'alpha') { + return false; + } + + var capped; + + // cap values of the space prior converting all values + for (i = 0; i < space.length; i++) { + capped = Math.max(0, Math.min(maxes[space][i], values[space][i])); + values[space][i] = Math.round(capped); + } + + // convert to all the other color spaces + for (var sname in spaces) { + if (sname !== space) { + values[sname] = colorConvert[space][sname](values[space]); + } + } + + return true; +}; + +Color.prototype.setSpace = function (space, args) { + var vals = args[0]; + + if (vals === undefined) { + // color.rgb() + return this.getValues(space); + } + + // color.rgb(10, 10, 10) + if (typeof vals === 'number') { + vals = Array.prototype.slice.call(args); + } + + this.setValues(space, vals); + return this; +}; + +Color.prototype.setChannel = function (space, index, val) { + var svalues = this.values[space]; + if (val === undefined) { + // color.red() + return svalues[index]; + } else if (val === svalues[index]) { + // color.red(color.red()) + return this; + } + + // color.red(100) + svalues[index] = val; + this.setValues(space, svalues); + + return this; +}; + +if (typeof window !== 'undefined') { + window.Color = Color; +} + +var chartjsColor = Color; + +function isValidKey(key) { + return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1; +} + +/** + * @namespace Chart.helpers + */ +var helpers = { + /** + * An empty function that can be used, for example, for optional callback. + */ + noop: function() {}, + + /** + * Returns a unique id, sequentially generated from a global variable. + * @returns {number} + * @function + */ + uid: (function() { + var id = 0; + return function() { + return id++; + }; + }()), + + /** + * Returns true if `value` is neither null nor undefined, else returns false. + * @param {*} value - The value to test. + * @returns {boolean} + * @since 2.7.0 + */ + isNullOrUndef: function(value) { + return value === null || typeof value === 'undefined'; + }, + + /** + * Returns true if `value` is an array (including typed arrays), else returns false. + * @param {*} value - The value to test. + * @returns {boolean} + * @function + */ + isArray: function(value) { + if (Array.isArray && Array.isArray(value)) { + return true; + } + var type = Object.prototype.toString.call(value); + if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') { + return true; + } + return false; + }, + + /** + * Returns true if `value` is an object (excluding null), else returns false. + * @param {*} value - The value to test. + * @returns {boolean} + * @since 2.7.0 + */ + isObject: function(value) { + return value !== null && Object.prototype.toString.call(value) === '[object Object]'; + }, + + /** + * Returns true if `value` is a finite number, else returns false + * @param {*} value - The value to test. + * @returns {boolean} + */ + isFinite: function(value) { + return (typeof value === 'number' || value instanceof Number) && isFinite(value); + }, + + /** + * Returns `value` if defined, else returns `defaultValue`. + * @param {*} value - The value to return if defined. + * @param {*} defaultValue - The value to return if `value` is undefined. + * @returns {*} + */ + valueOrDefault: function(value, defaultValue) { + return typeof value === 'undefined' ? defaultValue : value; + }, + + /** + * Returns value at the given `index` in array if defined, else returns `defaultValue`. + * @param {Array} value - The array to lookup for value at `index`. + * @param {number} index - The index in `value` to lookup for value. + * @param {*} defaultValue - The value to return if `value[index]` is undefined. + * @returns {*} + */ + valueAtIndexOrDefault: function(value, index, defaultValue) { + return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue); + }, + + /** + * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the + * value returned by `fn`. If `fn` is not a function, this method returns undefined. + * @param {function} fn - The function to call. + * @param {Array|undefined|null} args - The arguments with which `fn` should be called. + * @param {object} [thisArg] - The value of `this` provided for the call to `fn`. + * @returns {*} + */ + callback: function(fn, args, thisArg) { + if (fn && typeof fn.call === 'function') { + return fn.apply(thisArg, args); + } + }, + + /** + * Note(SB) for performance sake, this method should only be used when loopable type + * is unknown or in none intensive code (not called often and small loopable). Else + * it's preferable to use a regular for() loop and save extra function calls. + * @param {object|Array} loopable - The object or array to be iterated. + * @param {function} fn - The function to call for each item. + * @param {object} [thisArg] - The value of `this` provided for the call to `fn`. + * @param {boolean} [reverse] - If true, iterates backward on the loopable. + */ + each: function(loopable, fn, thisArg, reverse) { + var i, len, keys; + if (helpers.isArray(loopable)) { + len = loopable.length; + if (reverse) { + for (i = len - 1; i >= 0; i--) { + fn.call(thisArg, loopable[i], i); + } + } else { + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[i], i); + } + } + } else if (helpers.isObject(loopable)) { + keys = Object.keys(loopable); + len = keys.length; + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[keys[i]], keys[i]); + } + } + }, + + /** + * Returns true if the `a0` and `a1` arrays have the same content, else returns false. + * @see https://stackoverflow.com/a/14853974 + * @param {Array} a0 - The array to compare + * @param {Array} a1 - The array to compare + * @returns {boolean} + */ + arrayEquals: function(a0, a1) { + var i, ilen, v0, v1; + + if (!a0 || !a1 || a0.length !== a1.length) { + return false; + } + + for (i = 0, ilen = a0.length; i < ilen; ++i) { + v0 = a0[i]; + v1 = a1[i]; + + if (v0 instanceof Array && v1 instanceof Array) { + if (!helpers.arrayEquals(v0, v1)) { + return false; + } + } else if (v0 !== v1) { + // NOTE: two different object instances will never be equal: {x:20} != {x:20} + return false; + } + } + + return true; + }, + + /** + * Returns a deep copy of `source` without keeping references on objects and arrays. + * @param {*} source - The value to clone. + * @returns {*} + */ + clone: function(source) { + if (helpers.isArray(source)) { + return source.map(helpers.clone); + } + + if (helpers.isObject(source)) { + var target = Object.create(source); + var keys = Object.keys(source); + var klen = keys.length; + var k = 0; + + for (; k < klen; ++k) { + target[keys[k]] = helpers.clone(source[keys[k]]); + } + + return target; + } + + return source; + }, + + /** + * The default merger when Chart.helpers.merge is called without merger option. + * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback. + * @private + */ + _merger: function(key, target, source, options) { + if (!isValidKey(key)) { + // We want to ensure we do not copy prototypes over + // as this can pollute global namespaces + return; + } + + var tval = target[key]; + var sval = source[key]; + + if (helpers.isObject(tval) && helpers.isObject(sval)) { + helpers.merge(tval, sval, options); + } else { + target[key] = helpers.clone(sval); + } + }, + + /** + * Merges source[key] in target[key] only if target[key] is undefined. + * @private + */ + _mergerIf: function(key, target, source) { + if (!isValidKey(key)) { + // We want to ensure we do not copy prototypes over + // as this can pollute global namespaces + return; + } + + var tval = target[key]; + var sval = source[key]; + + if (helpers.isObject(tval) && helpers.isObject(sval)) { + helpers.mergeIf(tval, sval); + } else if (!target.hasOwnProperty(key)) { + target[key] = helpers.clone(sval); + } + }, + + /** + * Recursively deep copies `source` properties into `target` with the given `options`. + * IMPORTANT: `target` is not cloned and will be updated with `source` properties. + * @param {object} target - The target object in which all sources are merged into. + * @param {object|object[]} source - Object(s) to merge into `target`. + * @param {object} [options] - Merging options: + * @param {function} [options.merger] - The merge method (key, target, source, options) + * @returns {object} The `target` object. + */ + merge: function(target, source, options) { + var sources = helpers.isArray(source) ? source : [source]; + var ilen = sources.length; + var merge, i, keys, klen, k; + + if (!helpers.isObject(target)) { + return target; + } + + options = options || {}; + merge = options.merger || helpers._merger; + + for (i = 0; i < ilen; ++i) { + source = sources[i]; + if (!helpers.isObject(source)) { + continue; + } + + keys = Object.keys(source); + for (k = 0, klen = keys.length; k < klen; ++k) { + merge(keys[k], target, source, options); + } + } + + return target; + }, + + /** + * Recursively deep copies `source` properties into `target` *only* if not defined in target. + * IMPORTANT: `target` is not cloned and will be updated with `source` properties. + * @param {object} target - The target object in which all sources are merged into. + * @param {object|object[]} source - Object(s) to merge into `target`. + * @returns {object} The `target` object. + */ + mergeIf: function(target, source) { + return helpers.merge(target, source, {merger: helpers._mergerIf}); + }, + + /** + * Applies the contents of two or more objects together into the first object. + * @param {object} target - The target object in which all objects are merged into. + * @param {object} arg1 - Object containing additional properties to merge in target. + * @param {object} argN - Additional objects containing properties to merge in target. + * @returns {object} The `target` object. + */ + extend: Object.assign || function(target) { + return helpers.merge(target, [].slice.call(arguments, 1), { + merger: function(key, dst, src) { + dst[key] = src[key]; + } + }); + }, + + /** + * Basic javascript inheritance based on the model created in Backbone.js + */ + inherits: function(extensions) { + var me = this; + var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() { + return me.apply(this, arguments); + }; + + var Surrogate = function() { + this.constructor = ChartElement; + }; + + Surrogate.prototype = me.prototype; + ChartElement.prototype = new Surrogate(); + ChartElement.extend = helpers.inherits; + + if (extensions) { + helpers.extend(ChartElement.prototype, extensions); + } + + ChartElement.__super__ = me.prototype; + return ChartElement; + }, + + _deprecated: function(scope, value, previous, current) { + if (value !== undefined) { + console.warn(scope + ': "' + previous + + '" is deprecated. Please use "' + current + '" instead'); + } + } +}; + +var helpers_core = helpers; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.callback instead. + * @function Chart.helpers.callCallback + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ +helpers.callCallback = helpers.callback; + +/** + * Provided for backward compatibility, use Array.prototype.indexOf instead. + * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+ + * @function Chart.helpers.indexOf + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.indexOf = function(array, item, fromIndex) { + return Array.prototype.indexOf.call(array, item, fromIndex); +}; + +/** + * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead. + * @function Chart.helpers.getValueOrDefault + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.getValueOrDefault = helpers.valueOrDefault; + +/** + * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead. + * @function Chart.helpers.getValueAtIndexOrDefault + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + +/** + * Easing functions adapted from Robert Penner's easing equations. + * @namespace Chart.helpers.easingEffects + * @see http://www.robertpenner.com/easing/ + */ +var effects = { + linear: function(t) { + return t; + }, + + easeInQuad: function(t) { + return t * t; + }, + + easeOutQuad: function(t) { + return -t * (t - 2); + }, + + easeInOutQuad: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t; + } + return -0.5 * ((--t) * (t - 2) - 1); + }, + + easeInCubic: function(t) { + return t * t * t; + }, + + easeOutCubic: function(t) { + return (t = t - 1) * t * t + 1; + }, + + easeInOutCubic: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t; + } + return 0.5 * ((t -= 2) * t * t + 2); + }, + + easeInQuart: function(t) { + return t * t * t * t; + }, + + easeOutQuart: function(t) { + return -((t = t - 1) * t * t * t - 1); + }, + + easeInOutQuart: function(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) { + return t * t * t * t * t; + }, + + easeOutQuint: function(t) { + return (t = t - 1) * t * t * t * t + 1; + }, + + easeInOutQuint: function(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) { + return -Math.cos(t * (Math.PI / 2)) + 1; + }, + + easeOutSine: function(t) { + return Math.sin(t * (Math.PI / 2)); + }, + + easeInOutSine: function(t) { + return -0.5 * (Math.cos(Math.PI * t) - 1); + }, + + easeInExpo: function(t) { + return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)); + }, + + easeOutExpo: function(t) { + return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1; + }, + + easeInOutExpo: function(t) { + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if ((t /= 0.5) < 1) { + return 0.5 * Math.pow(2, 10 * (t - 1)); + } + return 0.5 * (-Math.pow(2, -10 * --t) + 2); + }, + + easeInCirc: function(t) { + if (t >= 1) { + return t; + } + return -(Math.sqrt(1 - t * t) - 1); + }, + + easeOutCirc: function(t) { + return Math.sqrt(1 - (t = t - 1) * t); + }, + + easeInOutCirc: function(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; + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if (!p) { + p = 0.3; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + 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; + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if (!p) { + p = 0.3; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + 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; + if (t === 0) { + return 0; + } + if ((t /= 0.5) === 2) { + return 1; + } + if (!p) { + p = 0.45; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + if (t < 1) { + return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); + } + 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; + return t * t * ((s + 1) * t - s); + }, + + easeOutBack: function(t) { + var s = 1.70158; + return (t = t - 1) * t * ((s + 1) * t + s) + 1; + }, + + easeInOutBack: function(t) { + var 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) { + return 1 - effects.easeOutBounce(1 - t); + }, + + easeOutBounce: function(t) { + if (t < (1 / 2.75)) { + return 7.5625 * t * t; + } + if (t < (2 / 2.75)) { + return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75; + } + if (t < (2.5 / 2.75)) { + return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375; + } + return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375; + }, + + easeInOutBounce: function(t) { + if (t < 0.5) { + return effects.easeInBounce(t * 2) * 0.5; + } + return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5; + } +}; + +var helpers_easing = { + effects: effects +}; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.easing.effects instead. + * @function Chart.helpers.easingEffects + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers_core.easingEffects = effects; + +var PI = Math.PI; +var RAD_PER_DEG = PI / 180; +var DOUBLE_PI = PI * 2; +var HALF_PI = PI / 2; +var QUARTER_PI = PI / 4; +var TWO_THIRDS_PI = PI * 2 / 3; + +/** + * @namespace Chart.helpers.canvas + */ +var exports$1 = { + /** + * Clears the entire canvas associated to the given `chart`. + * @param {Chart} chart - The chart for which to clear the canvas. + */ + clear: function(chart) { + chart.ctx.clearRect(0, 0, chart.width, chart.height); + }, + + /** + * Creates a "path" for a rectangle with rounded corners at position (x, y) with a + * given size (width, height) and the same `radius` for all corners. + * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context. + * @param {number} x - The x axis of the coordinate for the rectangle starting point. + * @param {number} y - The y axis of the coordinate for the rectangle starting point. + * @param {number} width - The rectangle's width. + * @param {number} height - The rectangle's height. + * @param {number} radius - The rounded amount (in pixels) for the four corners. + * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object? + */ + roundedRect: function(ctx, x, y, width, height, radius) { + if (radius) { + var r = Math.min(radius, height / 2, width / 2); + var left = x + r; + var top = y + r; + var right = x + width - r; + var bottom = y + height - r; + + ctx.moveTo(x, top); + if (left < right && top < bottom) { + ctx.arc(left, top, r, -PI, -HALF_PI); + ctx.arc(right, top, r, -HALF_PI, 0); + ctx.arc(right, bottom, r, 0, HALF_PI); + ctx.arc(left, bottom, r, HALF_PI, PI); + } else if (left < right) { + ctx.moveTo(left, y); + ctx.arc(right, top, r, -HALF_PI, HALF_PI); + ctx.arc(left, top, r, HALF_PI, PI + HALF_PI); + } else if (top < bottom) { + ctx.arc(left, top, r, -PI, 0); + ctx.arc(left, bottom, r, 0, PI); + } else { + ctx.arc(left, top, r, -PI, PI); + } + ctx.closePath(); + ctx.moveTo(x, y); + } else { + ctx.rect(x, y, width, height); + } + }, + + drawPoint: function(ctx, style, radius, x, y, rotation) { + var type, xOffset, yOffset, size, cornerRadius; + var rad = (rotation || 0) * RAD_PER_DEG; + + if (style && typeof style === 'object') { + type = style.toString(); + if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { + ctx.save(); + ctx.translate(x, y); + ctx.rotate(rad); + ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height); + ctx.restore(); + return; + } + } + + if (isNaN(radius) || radius <= 0) { + return; + } + + ctx.beginPath(); + + switch (style) { + // Default includes circle + default: + ctx.arc(x, y, radius, 0, DOUBLE_PI); + ctx.closePath(); + break; + case 'triangle': + ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + rad += TWO_THIRDS_PI; + ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + rad += TWO_THIRDS_PI; + ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + ctx.closePath(); + break; + case 'rectRounded': + // NOTE: the rounded rect implementation changed to use `arc` instead of + // `quadraticCurveTo` since it generates better results when rect is + // almost a circle. 0.516 (instead of 0.5) produces results with visually + // closer proportion to the previous impl and it is inscribed in the + // circle with `radius`. For more details, see the following PRs: + // https://github.com/chartjs/Chart.js/issues/5597 + // https://github.com/chartjs/Chart.js/issues/5858 + cornerRadius = radius * 0.516; + size = radius - cornerRadius; + xOffset = Math.cos(rad + QUARTER_PI) * size; + yOffset = Math.sin(rad + QUARTER_PI) * size; + ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI); + ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad); + ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI); + ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI); + ctx.closePath(); + break; + case 'rect': + if (!rotation) { + size = Math.SQRT1_2 * radius; + ctx.rect(x - size, y - size, 2 * size, 2 * size); + break; + } + rad += QUARTER_PI; + /* falls through */ + case 'rectRot': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + yOffset, y - xOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.lineTo(x - yOffset, y + xOffset); + ctx.closePath(); + break; + case 'crossRot': + rad += QUARTER_PI; + /* falls through */ + case 'cross': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); + break; + case 'star': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); + rad += QUARTER_PI; + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); + break; + case 'line': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + break; + case 'dash': + ctx.moveTo(x, y); + ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius); + break; + } + + ctx.fill(); + ctx.stroke(); + }, + + /** + * Returns true if the point is inside the rectangle + * @param {object} point - The point to test + * @param {object} area - The rectangle + * @returns {boolean} + * @private + */ + _isPointInArea: function(point, area) { + var epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error. + + return point.x > area.left - epsilon && point.x < area.right + epsilon && + point.y > area.top - epsilon && point.y < area.bottom + epsilon; + }, + + clipArea: function(ctx, area) { + ctx.save(); + ctx.beginPath(); + ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); + ctx.clip(); + }, + + unclipArea: function(ctx) { + ctx.restore(); + }, + + lineTo: function(ctx, previous, target, flip) { + var stepped = target.steppedLine; + if (stepped) { + if (stepped === 'middle') { + var midpoint = (previous.x + target.x) / 2.0; + ctx.lineTo(midpoint, flip ? target.y : previous.y); + ctx.lineTo(midpoint, flip ? previous.y : target.y); + } else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) { + ctx.lineTo(previous.x, target.y); + } else { + ctx.lineTo(target.x, previous.y); + } + ctx.lineTo(target.x, target.y); + return; + } + + if (!target.tension) { + ctx.lineTo(target.x, target.y); + return; + } + + ctx.bezierCurveTo( + flip ? previous.controlPointPreviousX : previous.controlPointNextX, + flip ? previous.controlPointPreviousY : previous.controlPointNextY, + flip ? target.controlPointNextX : target.controlPointPreviousX, + flip ? target.controlPointNextY : target.controlPointPreviousY, + target.x, + target.y); + } +}; + +var helpers_canvas = exports$1; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.canvas.clear instead. + * @namespace Chart.helpers.clear + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers_core.clear = exports$1.clear; + +/** + * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead. + * @namespace Chart.helpers.drawRoundedRectangle + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers_core.drawRoundedRectangle = function(ctx) { + ctx.beginPath(); + exports$1.roundedRect.apply(exports$1, arguments); +}; + +var defaults = { + /** + * @private + */ + _set: function(scope, values) { + return helpers_core.merge(this[scope] || (this[scope] = {}), values); + } +}; + +// TODO(v3): remove 'global' from namespace. all default are global and +// there's inconsistency around which options are under 'global' +defaults._set('global', { + defaultColor: 'rgba(0,0,0,0.1)', + defaultFontColor: '#666', + defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", + defaultFontSize: 12, + defaultFontStyle: 'normal', + defaultLineHeight: 1.2, + showLines: true +}); + +var core_defaults = defaults; + +var valueOrDefault = helpers_core.valueOrDefault; + +/** + * Converts the given font object into a CSS font string. + * @param {object} font - A font object. + * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font + * @private + */ +function toFontString(font) { + if (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) { + return null; + } + + return (font.style ? font.style + ' ' : '') + + (font.weight ? font.weight + ' ' : '') + + font.size + 'px ' + + font.family; +} + +/** + * @alias Chart.helpers.options + * @namespace + */ +var helpers_options = { + /** + * Converts the given line height `value` in pixels for a specific font `size`. + * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em'). + * @param {number} size - The font size (in pixels) used to resolve relative `value`. + * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid). + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height + * @since 2.7.0 + */ + toLineHeight: function(value, size) { + var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); + if (!matches || matches[1] === 'normal') { + return size * 1.2; + } + + value = +matches[2]; + + switch (matches[3]) { + case 'px': + return value; + case '%': + value /= 100; + break; + } + + return size * value; + }, + + /** + * Converts the given value into a padding object with pre-computed width/height. + * @param {number|object} value - If a number, set the value to all TRBL component, + * else, if and object, use defined properties and sets undefined ones to 0. + * @returns {object} The padding values (top, right, bottom, left, width, height) + * @since 2.7.0 + */ + toPadding: function(value) { + var t, r, b, l; + + if (helpers_core.isObject(value)) { + t = +value.top || 0; + r = +value.right || 0; + b = +value.bottom || 0; + l = +value.left || 0; + } else { + t = r = b = l = +value || 0; + } + + return { + top: t, + right: r, + bottom: b, + left: l, + height: t + b, + width: l + r + }; + }, + + /** + * Parses font options and returns the font object. + * @param {object} options - A object that contains font options to be parsed. + * @return {object} The font object. + * @todo Support font.* options and renamed to toFont(). + * @private + */ + _parseFont: function(options) { + var globalDefaults = core_defaults.global; + var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize); + var font = { + family: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily), + lineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size), + size: size, + style: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle), + weight: null, + string: '' + }; + + font.string = toFontString(font); + return font; + }, + + /** + * Evaluates the given `inputs` sequentially and returns the first defined value. + * @param {Array} inputs - An array of values, falling back to the last value. + * @param {object} [context] - If defined and the current value is a function, the value + * is called with `context` as first argument and the result becomes the new input. + * @param {number} [index] - If defined and the current value is an array, the value + * at `index` become the new input. + * @param {object} [info] - object to return information about resolution in + * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable. + * @since 2.7.0 + */ + resolve: function(inputs, context, index, info) { + var cacheable = true; + var i, ilen, value; + + for (i = 0, ilen = inputs.length; i < ilen; ++i) { + value = inputs[i]; + if (value === undefined) { + continue; + } + if (context !== undefined && typeof value === 'function') { + value = value(context); + cacheable = false; + } + if (index !== undefined && helpers_core.isArray(value)) { + value = value[index]; + cacheable = false; + } + if (value !== undefined) { + if (info && !cacheable) { + info.cacheable = false; + } + return value; + } + } + } +}; + +/** + * @alias Chart.helpers.math + * @namespace + */ +var exports$2 = { + /** + * Returns an array of factors sorted from 1 to sqrt(value) + * @private + */ + _factorize: function(value) { + var result = []; + var sqrt = Math.sqrt(value); + var i; + + for (i = 1; i < sqrt; i++) { + if (value % i === 0) { + result.push(i); + result.push(value / i); + } + } + if (sqrt === (sqrt | 0)) { // if value is a square number + result.push(sqrt); + } + + result.sort(function(a, b) { + return a - b; + }).pop(); + return result; + }, + + log10: Math.log10 || function(x) { + var 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); + + return isPowerOf10 ? powerOf10 : exponent; + } +}; + +var helpers_math = exports$2; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.helpers.math.log10 instead. + * @namespace Chart.helpers.log10 + * @deprecated since version 2.9.0 + * @todo remove at version 3 + * @private + */ +helpers_core.log10 = exports$2.log10; + +var getRtlAdapter = function(rectX, width) { + return { + x: function(x) { + return rectX + rectX + width - x; + }, + setWidth: function(w) { + width = w; + }, + textAlign: function(align) { + if (align === 'center') { + return align; + } + return align === 'right' ? 'left' : 'right'; + }, + xPlus: function(x, value) { + return x - value; + }, + leftForLtr: function(x, itemWidth) { + return x - itemWidth; + }, + }; +}; + +var getLtrAdapter = function() { + return { + x: function(x) { + return x; + }, + setWidth: function(w) { // eslint-disable-line no-unused-vars + }, + textAlign: function(align) { + return align; + }, + xPlus: function(x, value) { + return x + value; + }, + leftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars + return x; + }, + }; +}; + +var getAdapter = function(rtl, rectX, width) { + return rtl ? getRtlAdapter(rectX, width) : getLtrAdapter(); +}; + +var overrideTextDirection = function(ctx, direction) { + var style, original; + if (direction === 'ltr' || direction === 'rtl') { + style = ctx.canvas.style; + original = [ + style.getPropertyValue('direction'), + style.getPropertyPriority('direction'), + ]; + + style.setProperty('direction', direction, 'important'); + ctx.prevTextDirection = original; + } +}; + +var restoreTextDirection = function(ctx) { + var original = ctx.prevTextDirection; + if (original !== undefined) { + delete ctx.prevTextDirection; + ctx.canvas.style.setProperty('direction', original[0], original[1]); + } +}; + +var helpers_rtl = { + getRtlAdapter: getAdapter, + overrideTextDirection: overrideTextDirection, + restoreTextDirection: restoreTextDirection, +}; + +var helpers$1 = helpers_core; +var easing = helpers_easing; +var canvas = helpers_canvas; +var options = helpers_options; +var math = helpers_math; +var rtl = helpers_rtl; +helpers$1.easing = easing; +helpers$1.canvas = canvas; +helpers$1.options = options; +helpers$1.math = math; +helpers$1.rtl = rtl; + +function interpolate(start, view, model, ease) { + var keys = Object.keys(model); + var i, ilen, key, actual, origin, target, type, c0, c1; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + + target = model[key]; + + // if a value is added to the model after pivot() has been called, the view + // doesn't contain it, so let's initialize the view to the target value. + if (!view.hasOwnProperty(key)) { + view[key] = target; + } + + actual = view[key]; + + if (actual === target || key[0] === '_') { + continue; + } + + if (!start.hasOwnProperty(key)) { + start[key] = actual; + } + + origin = start[key]; + + type = typeof target; + + if (type === typeof origin) { + if (type === 'string') { + c0 = chartjsColor(origin); + if (c0.valid) { + c1 = chartjsColor(target); + if (c1.valid) { + view[key] = c1.mix(c0, ease).rgbString(); + continue; + } + } + } else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) { + view[key] = origin + (target - origin) * ease; + continue; + } + } + + view[key] = target; + } +} + +var Element = function(configuration) { + helpers$1.extend(this, configuration); + this.initialize.apply(this, arguments); +}; + +helpers$1.extend(Element.prototype, { + _type: undefined, + + initialize: function() { + this.hidden = false; + }, + + pivot: function() { + var me = this; + if (!me._view) { + me._view = helpers$1.extend({}, me._model); + } + me._start = {}; + return me; + }, + + transition: function(ease) { + var me = this; + var model = me._model; + var start = me._start; + var view = me._view; + + // No animation -> No Transition + if (!model || ease === 1) { + me._view = helpers$1.extend({}, model); + me._start = null; + return me; + } + + if (!view) { + view = me._view = {}; + } + + if (!start) { + start = me._start = {}; + } + + interpolate(start, view, model, ease); + + return me; + }, + + tooltipPosition: function() { + return { + x: this._model.x, + y: this._model.y + }; + }, + + hasValue: function() { + return helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y); + } +}); + +Element.extend = helpers$1.inherits; + +var core_element = Element; + +var exports$3 = core_element.extend({ + chart: null, // the animation associated chart instance + currentStep: 0, // the current animation step + numSteps: 60, // default number of steps + easing: '', // the easing to use for this animation + render: null, // render function used by the animation service + + onAnimationProgress: null, // user specified callback to fire on each step of the animation + onAnimationComplete: null, // user specified callback to fire when the animation finishes +}); + +var core_animation = exports$3; + +// DEPRECATIONS + +/** + * Provided for backward compatibility, use Chart.Animation instead + * @prop Chart.Animation#animationObject + * @deprecated since version 2.6.0 + * @todo remove at version 3 + */ +Object.defineProperty(exports$3.prototype, 'animationObject', { + get: function() { + return this; + } +}); + +/** + * Provided for backward compatibility, use Chart.Animation#chart instead + * @prop Chart.Animation#chartInstance + * @deprecated since version 2.6.0 + * @todo remove at version 3 + */ +Object.defineProperty(exports$3.prototype, 'chartInstance', { + get: function() { + return this.chart; + }, + set: function(value) { + this.chart = value; + } +}); + +core_defaults._set('global', { + animation: { + duration: 1000, + easing: 'easeOutQuart', + onProgress: helpers$1.noop, + onComplete: helpers$1.noop + } +}); + +var core_animations = { + animations: [], + request: null, + + /** + * @param {Chart} chart - The chart to animate. + * @param {Chart.Animation} animation - The animation that we will animate. + * @param {number} duration - The animation duration in ms. + * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions + */ + addAnimation: function(chart, animation, duration, lazy) { + var animations = this.animations; + var i, ilen; + + animation.chart = chart; + animation.startTime = Date.now(); + animation.duration = duration; + + if (!lazy) { + chart.animating = true; + } + + for (i = 0, ilen = animations.length; i < ilen; ++i) { + if (animations[i].chart === chart) { + animations[i] = animation; + return; + } + } + + animations.push(animation); + + // If there are no animations queued, manually kickstart a digest, for lack of a better word + if (animations.length === 1) { + this.requestAnimationFrame(); + } + }, + + cancelAnimation: function(chart) { + var index = helpers$1.findIndex(this.animations, function(animation) { + return animation.chart === chart; + }); + + if (index !== -1) { + this.animations.splice(index, 1); + chart.animating = false; + } + }, + + requestAnimationFrame: function() { + var me = this; + if (me.request === null) { + // Skip animation frame requests until the active one is executed. + // This can happen when processing mouse events, e.g. 'mousemove' + // and 'mouseout' events will trigger multiple renders. + me.request = helpers$1.requestAnimFrame.call(window, function() { + me.request = null; + me.startDigest(); + }); + } + }, + + /** + * @private + */ + startDigest: function() { + var me = this; + + me.advance(); + + // Do we have more stuff to animate? + if (me.animations.length > 0) { + me.requestAnimationFrame(); + } + }, + + /** + * @private + */ + advance: function() { + var animations = this.animations; + var animation, chart, numSteps, nextStep; + var i = 0; + + // 1 animation per chart, so we are looping charts here + while (i < animations.length) { + animation = animations[i]; + chart = animation.chart; + numSteps = animation.numSteps; + + // Make sure that currentStep starts at 1 + // https://github.com/chartjs/Chart.js/issues/6104 + nextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1; + animation.currentStep = Math.min(nextStep, numSteps); + + helpers$1.callback(animation.render, [chart, animation], chart); + helpers$1.callback(animation.onAnimationProgress, [animation], chart); + + if (animation.currentStep >= numSteps) { + helpers$1.callback(animation.onAnimationComplete, [animation], chart); + chart.animating = false; + animations.splice(i, 1); + } else { + ++i; + } + } + } +}; + +var resolve = helpers$1.options.resolve; + +var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; + +/** + * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice', + * 'unshift') and notify the listener AFTER the array has been altered. Listeners are + * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments. + */ +function listenArrayEvents(array, listener) { + if (array._chartjs) { + array._chartjs.listeners.push(listener); + return; + } + + Object.defineProperty(array, '_chartjs', { + configurable: true, + enumerable: false, + value: { + listeners: [listener] + } + }); + + arrayEvents.forEach(function(key) { + var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1); + var 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); + + helpers$1.each(array._chartjs.listeners, function(object) { + if (typeof object[method] === 'function') { + object[method].apply(object, args); + } + }); + + return res; + } + }); + }); +} + +/** + * Removes the given array event listener and cleanup extra attached properties (such as + * the _chartjs stub and overridden methods) if array doesn't have any more listeners. + */ +function unlistenArrayEvents(array, listener) { + var stub = array._chartjs; + if (!stub) { + return; + } + + var listeners = stub.listeners; + var index = listeners.indexOf(listener); + if (index !== -1) { + listeners.splice(index, 1); + } + + if (listeners.length > 0) { + return; + } + + arrayEvents.forEach(function(key) { + delete array[key]; + }); + + delete array._chartjs; +} + +// Base class for all dataset controllers (line, bar, etc) +var DatasetController = function(chart, datasetIndex) { + this.initialize(chart, datasetIndex); +}; + +helpers$1.extend(DatasetController.prototype, { + + /** + * Element type used to generate a meta dataset (e.g. Chart.element.Line). + * @type {Chart.core.element} + */ + datasetElementType: null, + + /** + * Element type used to generate a meta data (e.g. Chart.element.Point). + * @type {Chart.core.element} + */ + dataElementType: null, + + /** + * Dataset element option keys to be resolved in _resolveDatasetElementOptions. + * A derived controller may override this to resolve controller-specific options. + * The keys defined here are for backward compatibility for legend styles. + * @private + */ + _datasetElementOptions: [ + 'backgroundColor', + 'borderCapStyle', + 'borderColor', + 'borderDash', + 'borderDashOffset', + 'borderJoinStyle', + 'borderWidth' + ], + + /** + * Data element option keys to be resolved in _resolveDataElementOptions. + * A derived controller may override this to resolve controller-specific options. + * The keys defined here are for backward compatibility for legend styles. + * @private + */ + _dataElementOptions: [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'pointStyle' + ], + + initialize: function(chart, datasetIndex) { + var me = this; + me.chart = chart; + me.index = datasetIndex; + me.linkScales(); + me.addElements(); + me._type = me.getMeta().type; + }, + + updateIndex: function(datasetIndex) { + this.index = datasetIndex; + }, + + linkScales: function() { + var me = this; + var meta = me.getMeta(); + var chart = me.chart; + var scales = chart.scales; + var dataset = me.getDataset(); + var scalesOpts = chart.options.scales; + + if (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) { + meta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id; + } + if (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) { + meta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id; + } + }, + + getDataset: function() { + return this.chart.data.datasets[this.index]; + }, + + getMeta: function() { + return this.chart.getDatasetMeta(this.index); + }, + + getScaleForId: function(scaleID) { + return this.chart.scales[scaleID]; + }, + + /** + * @private + */ + _getValueScaleId: function() { + return this.getMeta().yAxisID; + }, + + /** + * @private + */ + _getIndexScaleId: function() { + return this.getMeta().xAxisID; + }, + + /** + * @private + */ + _getValueScale: function() { + return this.getScaleForId(this._getValueScaleId()); + }, + + /** + * @private + */ + _getIndexScale: function() { + return this.getScaleForId(this._getIndexScaleId()); + }, + + reset: function() { + this._update(true); + }, + + /** + * @private + */ + destroy: function() { + if (this._data) { + unlistenArrayEvents(this._data, this); + } + }, + + createMetaDataset: function() { + var me = this; + var type = me.datasetElementType; + return type && new type({ + _chart: me.chart, + _datasetIndex: me.index + }); + }, + + createMetaData: function(index) { + var me = this; + var type = me.dataElementType; + return type && new type({ + _chart: me.chart, + _datasetIndex: me.index, + _index: index + }); + }, + + addElements: function() { + var me = this; + var meta = me.getMeta(); + var data = me.getDataset().data || []; + var metaData = meta.data; + var i, ilen; + + for (i = 0, ilen = data.length; i < ilen; ++i) { + metaData[i] = metaData[i] || me.createMetaData(i); + } + + meta.dataset = meta.dataset || me.createMetaDataset(); + }, + + addElementAndReset: function(index) { + var element = this.createMetaData(index); + this.getMeta().data.splice(index, 0, element); + this.updateElement(element, index, true); + }, + + buildOrUpdateElements: function() { + var me = this; + var dataset = me.getDataset(); + var data = dataset.data || (dataset.data = []); + + // In order to correctly handle data addition/deletion animation (an thus simulate + // real-time charts), we need to monitor these data modifications and synchronize + // the internal meta data accordingly. + if (me._data !== data) { + if (me._data) { + // This case happens when the user replaced the data array instance. + unlistenArrayEvents(me._data, me); + } + + if (data && Object.isExtensible(data)) { + listenArrayEvents(data, me); + } + me._data = data; + } + + // Re-sync meta data in case the user replaced the data array or if we missed + // any updates and so make sure that we handle number of datapoints changing. + me.resyncElements(); + }, + + /** + * Returns the merged user-supplied and default dataset-level options + * @private + */ + _configure: function() { + var me = this; + me._config = helpers$1.merge(Object.create(null), [ + me.chart.options.datasets[me._type], + me.getDataset(), + ], { + merger: function(key, target, source) { + if (key !== '_meta' && key !== 'data') { + helpers$1._merger(key, target, source); + } + } + }); + }, + + _update: function(reset) { + var me = this; + me._configure(); + me._cachedDataOpts = null; + me.update(reset); + }, + + update: helpers$1.noop, + + transition: function(easingValue) { + var meta = this.getMeta(); + var elements = meta.data || []; + var ilen = elements.length; + var i = 0; + + for (; i < ilen; ++i) { + elements[i].transition(easingValue); + } + + if (meta.dataset) { + meta.dataset.transition(easingValue); + } + }, + + draw: function() { + var meta = this.getMeta(); + var elements = meta.data || []; + var ilen = elements.length; + var i = 0; + + if (meta.dataset) { + meta.dataset.draw(); + } + + for (; i < ilen; ++i) { + elements[i].draw(); + } + }, + + /** + * Returns a set of predefined style properties that should be used to represent the dataset + * or the data if the index is specified + * @param {number} index - data index + * @return {IStyleInterface} style object + */ + getStyle: function(index) { + var me = this; + var meta = me.getMeta(); + var dataset = meta.dataset; + var style; + + me._configure(); + if (dataset && index === undefined) { + style = me._resolveDatasetElementOptions(dataset || {}); + } else { + index = index || 0; + style = me._resolveDataElementOptions(meta.data[index] || {}, index); + } + + if (style.fill === false || style.fill === null) { + style.backgroundColor = style.borderColor; + } + + return style; + }, + + /** + * @private + */ + _resolveDatasetElementOptions: function(element, hover) { + var me = this; + var chart = me.chart; + var datasetOpts = me._config; + var custom = element.custom || {}; + var options = chart.options.elements[me.datasetElementType.prototype._type] || {}; + var elementOptions = me._datasetElementOptions; + var values = {}; + var i, ilen, key, readKey; + + // Scriptable options + var context = { + chart: chart, + dataset: me.getDataset(), + datasetIndex: me.index, + hover: hover + }; + + for (i = 0, ilen = elementOptions.length; i < ilen; ++i) { + key = elementOptions[i]; + readKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key; + values[key] = resolve([ + custom[readKey], + datasetOpts[readKey], + options[readKey] + ], context); + } + + return values; + }, + + /** + * @private + */ + _resolveDataElementOptions: function(element, index) { + var me = this; + var custom = element && element.custom; + var cached = me._cachedDataOpts; + if (cached && !custom) { + return cached; + } + var chart = me.chart; + var datasetOpts = me._config; + var options = chart.options.elements[me.dataElementType.prototype._type] || {}; + var elementOptions = me._dataElementOptions; + var values = {}; + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: me.getDataset(), + datasetIndex: me.index + }; + + // `resolve` sets cacheable to `false` if any option is indexed or scripted + var info = {cacheable: !custom}; + + var keys, i, ilen, key; + + custom = custom || {}; + + if (helpers$1.isArray(elementOptions)) { + for (i = 0, ilen = elementOptions.length; i < ilen; ++i) { + key = elementOptions[i]; + values[key] = resolve([ + custom[key], + datasetOpts[key], + options[key] + ], context, index, info); + } + } else { + keys = Object.keys(elementOptions); + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve([ + custom[key], + datasetOpts[elementOptions[key]], + datasetOpts[key], + options[key] + ], context, index, info); + } + } + + if (info.cacheable) { + me._cachedDataOpts = Object.freeze(values); + } + + return values; + }, + + removeHoverStyle: function(element) { + helpers$1.merge(element._model, element.$previousStyle || {}); + delete element.$previousStyle; + }, + + setHoverStyle: function(element) { + var dataset = this.chart.data.datasets[element._datasetIndex]; + var index = element._index; + var custom = element.custom || {}; + var model = element._model; + var getHoverColor = helpers$1.getHoverColor; + + element.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth + }; + + model.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index); + model.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index); + model.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index); + }, + + /** + * @private + */ + _removeDatasetHoverStyle: function() { + var element = this.getMeta().dataset; + + if (element) { + this.removeHoverStyle(element); + } + }, + + /** + * @private + */ + _setDatasetHoverStyle: function() { + var element = this.getMeta().dataset; + var prev = {}; + var i, ilen, key, keys, hoverOptions, model; + + if (!element) { + return; + } + + model = element._model; + hoverOptions = this._resolveDatasetElementOptions(element, true); + + keys = Object.keys(hoverOptions); + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + prev[key] = model[key]; + model[key] = hoverOptions[key]; + } + + element.$previousStyle = prev; + }, + + /** + * @private + */ + resyncElements: function() { + var me = this; + var meta = me.getMeta(); + var data = me.getDataset().data; + var numMeta = meta.data.length; + var numData = data.length; + + if (numData < numMeta) { + meta.data.splice(numData, numMeta - numData); + } else if (numData > numMeta) { + me.insertElements(numMeta, numData - numMeta); + } + }, + + /** + * @private + */ + insertElements: function(start, count) { + for (var i = 0; i < count; ++i) { + this.addElementAndReset(start + i); + } + }, + + /** + * @private + */ + onDataPush: function() { + var count = arguments.length; + this.insertElements(this.getDataset().data.length - count, count); + }, + + /** + * @private + */ + onDataPop: function() { + this.getMeta().data.pop(); + }, + + /** + * @private + */ + onDataShift: function() { + this.getMeta().data.shift(); + }, + + /** + * @private + */ + onDataSplice: function(start, count) { + this.getMeta().data.splice(start, count); + this.insertElements(start, arguments.length - 2); + }, + + /** + * @private + */ + onDataUnshift: function() { + this.insertElements(0, arguments.length); + } +}); + +DatasetController.extend = helpers$1.inherits; + +var core_datasetController = DatasetController; + +var TAU = Math.PI * 2; + +core_defaults._set('global', { + elements: { + arc: { + backgroundColor: core_defaults.global.defaultColor, + borderColor: '#fff', + borderWidth: 2, + borderAlign: 'center' + } + } +}); + +function clipArc(ctx, arc) { + var startAngle = arc.startAngle; + var endAngle = arc.endAngle; + var pixelMargin = arc.pixelMargin; + var angleMargin = pixelMargin / arc.outerRadius; + var x = arc.x; + var y = arc.y; + + // Draw an inner border by cliping the arc and drawing a double-width border + // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders + ctx.beginPath(); + ctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin); + if (arc.innerRadius > pixelMargin) { + angleMargin = pixelMargin / arc.innerRadius; + ctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true); + } else { + ctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2); + } + ctx.closePath(); + ctx.clip(); +} + +function drawFullCircleBorders(ctx, vm, arc, inner) { + var endAngle = arc.endAngle; + var i; + + if (inner) { + arc.endAngle = arc.startAngle + TAU; + clipArc(ctx, arc); + arc.endAngle = endAngle; + if (arc.endAngle === arc.startAngle && arc.fullCircles) { + arc.endAngle += TAU; + arc.fullCircles--; + } + } + + ctx.beginPath(); + ctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true); + for (i = 0; i < arc.fullCircles; ++i) { + ctx.stroke(); + } + + ctx.beginPath(); + ctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU); + for (i = 0; i < arc.fullCircles; ++i) { + ctx.stroke(); + } +} + +function drawBorder(ctx, vm, arc) { + var inner = vm.borderAlign === 'inner'; + + if (inner) { + ctx.lineWidth = vm.borderWidth * 2; + ctx.lineJoin = 'round'; + } else { + ctx.lineWidth = vm.borderWidth; + ctx.lineJoin = 'bevel'; + } + + if (arc.fullCircles) { + drawFullCircleBorders(ctx, vm, arc, inner); + } + + if (inner) { + clipArc(ctx, arc); + } + + ctx.beginPath(); + ctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle); + ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true); + ctx.closePath(); + ctx.stroke(); +} + +var element_arc = core_element.extend({ + _type: 'arc', + + inLabelRange: function(mouseX) { + var vm = this._view; + + if (vm) { + return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2)); + } + return false; + }, + + inRange: function(chartX, chartY) { + var vm = this._view; + + if (vm) { + var pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY}); + var angle = pointRelativePosition.angle; + var distance = pointRelativePosition.distance; + + // Sanitise angle range + var startAngle = vm.startAngle; + var endAngle = vm.endAngle; + while (endAngle < startAngle) { + endAngle += TAU; + } + while (angle > endAngle) { + angle -= TAU; + } + while (angle < startAngle) { + angle += TAU; + } + + // Check if within the range of the open/close angle + var betweenAngles = (angle >= startAngle && angle <= endAngle); + var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius); + + return (betweenAngles && withinRadius); + } + return false; + }, + + getCenterPoint: function() { + var vm = this._view; + var halfAngle = (vm.startAngle + vm.endAngle) / 2; + var halfRadius = (vm.innerRadius + vm.outerRadius) / 2; + return { + x: vm.x + Math.cos(halfAngle) * halfRadius, + y: vm.y + Math.sin(halfAngle) * halfRadius + }; + }, + + getArea: function() { + var vm = this._view; + return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2)); + }, + + tooltipPosition: function() { + var vm = this._view; + var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2); + var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius; + + return { + x: vm.x + (Math.cos(centreAngle) * rangeFromCentre), + y: vm.y + (Math.sin(centreAngle) * rangeFromCentre) + }; + }, + + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + var pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0; + var arc = { + x: vm.x, + y: vm.y, + innerRadius: vm.innerRadius, + outerRadius: Math.max(vm.outerRadius - pixelMargin, 0), + pixelMargin: pixelMargin, + startAngle: vm.startAngle, + endAngle: vm.endAngle, + fullCircles: Math.floor(vm.circumference / TAU) + }; + var i; + + ctx.save(); + + ctx.fillStyle = vm.backgroundColor; + ctx.strokeStyle = vm.borderColor; + + if (arc.fullCircles) { + arc.endAngle = arc.startAngle + TAU; + ctx.beginPath(); + ctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle); + ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true); + ctx.closePath(); + for (i = 0; i < arc.fullCircles; ++i) { + ctx.fill(); + } + arc.endAngle = arc.startAngle + vm.circumference % TAU; + } + + ctx.beginPath(); + ctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle); + ctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true); + ctx.closePath(); + ctx.fill(); + + if (vm.borderWidth) { + drawBorder(ctx, vm, arc); + } + + ctx.restore(); + } +}); + +var valueOrDefault$1 = helpers$1.valueOrDefault; + +var defaultColor = core_defaults.global.defaultColor; + +core_defaults._set('global', { + elements: { + line: { + tension: 0.4, + backgroundColor: defaultColor, + borderWidth: 3, + borderColor: defaultColor, + borderCapStyle: 'butt', + borderDash: [], + borderDashOffset: 0.0, + borderJoinStyle: 'miter', + capBezierPoints: true, + fill: true, // do we fill in the area between the line and its base axis + } + } +}); + +var element_line = core_element.extend({ + _type: 'line', + + draw: function() { + var me = this; + var vm = me._view; + var ctx = me._chart.ctx; + var spanGaps = vm.spanGaps; + var points = me._children.slice(); // clone array + var globalDefaults = core_defaults.global; + var globalOptionLineElements = globalDefaults.elements.line; + var lastDrawnIndex = -1; + var closePath = me._loop; + var index, previous, currentVM; + + if (!points.length) { + return; + } + + if (me._loop) { + for (index = 0; index < points.length; ++index) { + previous = helpers$1.previousItem(points, index); + // If the line has an open path, shift the point array + if (!points[index]._view.skip && previous._view.skip) { + points = points.slice(index).concat(points.slice(0, index)); + closePath = spanGaps; + break; + } + } + // If the line has a close path, add the first point again + if (closePath) { + points.push(points[0]); + } + } + + ctx.save(); + + // Stroke Line Options + ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; + + // IE 9 and 10 do not support line dash + if (ctx.setLineDash) { + ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash); + } + + ctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset); + ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle; + ctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth); + ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; + + // Stroke Line + ctx.beginPath(); + + // First point moves to it's starting position no matter what + currentVM = points[0]._view; + if (!currentVM.skip) { + ctx.moveTo(currentVM.x, currentVM.y); + lastDrawnIndex = 0; + } + + for (index = 1; index < points.length; ++index) { + currentVM = points[index]._view; + previous = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex]; + + if (!currentVM.skip) { + if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) { + // There was a gap and this is the first point after the gap + ctx.moveTo(currentVM.x, currentVM.y); + } else { + // Line to next point + helpers$1.canvas.lineTo(ctx, previous._view, currentVM); + } + lastDrawnIndex = index; + } + } + + if (closePath) { + ctx.closePath(); + } + + ctx.stroke(); + ctx.restore(); + } +}); + +var valueOrDefault$2 = helpers$1.valueOrDefault; + +var defaultColor$1 = core_defaults.global.defaultColor; + +core_defaults._set('global', { + elements: { + point: { + radius: 3, + pointStyle: 'circle', + backgroundColor: defaultColor$1, + borderColor: defaultColor$1, + borderWidth: 1, + // Hover + hitRadius: 1, + hoverRadius: 4, + hoverBorderWidth: 1 + } + } +}); + +function xRange(mouseX) { + var vm = this._view; + return vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false; +} + +function yRange(mouseY) { + var vm = this._view; + return vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false; +} + +var element_point = core_element.extend({ + _type: 'point', + + inRange: function(mouseX, mouseY) { + var vm = this._view; + return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false; + }, + + inLabelRange: xRange, + inXRange: xRange, + inYRange: yRange, + + getCenterPoint: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y + }; + }, + + getArea: function() { + return Math.PI * Math.pow(this._view.radius, 2); + }, + + tooltipPosition: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y, + padding: vm.radius + vm.borderWidth + }; + }, + + draw: function(chartArea) { + var vm = this._view; + var ctx = this._chart.ctx; + var pointStyle = vm.pointStyle; + var rotation = vm.rotation; + var radius = vm.radius; + var x = vm.x; + var y = vm.y; + var globalDefaults = core_defaults.global; + var defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow + + if (vm.skip) { + return; + } + + // Clipping for Points. + if (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) { + ctx.strokeStyle = vm.borderColor || defaultColor; + ctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth); + ctx.fillStyle = vm.backgroundColor || defaultColor; + helpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation); + } + } +}); + +var defaultColor$2 = core_defaults.global.defaultColor; + +core_defaults._set('global', { + elements: { + rectangle: { + backgroundColor: defaultColor$2, + borderColor: defaultColor$2, + borderSkipped: 'bottom', + borderWidth: 0 + } + } +}); + +function isVertical(vm) { + return vm && vm.width !== undefined; +} + +/** + * Helper function to get the bounds of the bar regardless of the orientation + * @param bar {Chart.Element.Rectangle} the bar + * @return {Bounds} bounds of the bar + * @private + */ +function getBarBounds(vm) { + var x1, x2, y1, y2, half; + + if (isVertical(vm)) { + half = vm.width / 2; + x1 = vm.x - half; + x2 = vm.x + half; + y1 = Math.min(vm.y, vm.base); + y2 = Math.max(vm.y, vm.base); + } else { + half = vm.height / 2; + x1 = Math.min(vm.x, vm.base); + x2 = Math.max(vm.x, vm.base); + y1 = vm.y - half; + y2 = vm.y + half; + } + + return { + left: x1, + top: y1, + right: x2, + bottom: y2 + }; +} + +function swap(orig, v1, v2) { + return orig === v1 ? v2 : orig === v2 ? v1 : orig; +} + +function parseBorderSkipped(vm) { + var edge = vm.borderSkipped; + var res = {}; + + if (!edge) { + return res; + } + + if (vm.horizontal) { + if (vm.base > vm.x) { + edge = swap(edge, 'left', 'right'); + } + } else if (vm.base < vm.y) { + edge = swap(edge, 'bottom', 'top'); + } + + res[edge] = true; + return res; +} + +function parseBorderWidth(vm, maxW, maxH) { + var value = vm.borderWidth; + var skip = parseBorderSkipped(vm); + var t, r, b, l; + + if (helpers$1.isObject(value)) { + t = +value.top || 0; + r = +value.right || 0; + b = +value.bottom || 0; + l = +value.left || 0; + } else { + t = r = b = l = +value || 0; + } + + return { + t: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t, + r: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r, + b: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b, + l: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l + }; +} + +function boundingRects(vm) { + var bounds = getBarBounds(vm); + var width = bounds.right - bounds.left; + var height = bounds.bottom - bounds.top; + var border = parseBorderWidth(vm, width / 2, height / 2); + + return { + outer: { + x: bounds.left, + y: bounds.top, + w: width, + h: height + }, + inner: { + x: bounds.left + border.l, + y: bounds.top + border.t, + w: width - border.l - border.r, + h: height - border.t - border.b + } + }; +} + +function inRange(vm, x, y) { + var skipX = x === null; + var skipY = y === null; + var bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm); + + return bounds + && (skipX || x >= bounds.left && x <= bounds.right) + && (skipY || y >= bounds.top && y <= bounds.bottom); +} + +var element_rectangle = core_element.extend({ + _type: 'rectangle', + + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + var rects = boundingRects(vm); + var outer = rects.outer; + var inner = rects.inner; + + ctx.fillStyle = vm.backgroundColor; + ctx.fillRect(outer.x, outer.y, outer.w, outer.h); + + if (outer.w === inner.w && outer.h === inner.h) { + return; + } + + ctx.save(); + ctx.beginPath(); + ctx.rect(outer.x, outer.y, outer.w, outer.h); + ctx.clip(); + ctx.fillStyle = vm.borderColor; + ctx.rect(inner.x, inner.y, inner.w, inner.h); + ctx.fill('evenodd'); + ctx.restore(); + }, + + height: function() { + var vm = this._view; + return vm.base - vm.y; + }, + + inRange: function(mouseX, mouseY) { + return inRange(this._view, mouseX, mouseY); + }, + + inLabelRange: function(mouseX, mouseY) { + var vm = this._view; + return isVertical(vm) + ? inRange(vm, mouseX, null) + : inRange(vm, null, mouseY); + }, + + inXRange: function(mouseX) { + return inRange(this._view, mouseX, null); + }, + + inYRange: function(mouseY) { + return inRange(this._view, null, mouseY); + }, + + getCenterPoint: function() { + var vm = this._view; + var x, y; + if (isVertical(vm)) { + x = vm.x; + y = (vm.y + vm.base) / 2; + } else { + x = (vm.x + vm.base) / 2; + y = vm.y; + } + + return {x: x, y: y}; + }, + + getArea: function() { + var vm = this._view; + + return isVertical(vm) + ? vm.width * Math.abs(vm.y - vm.base) + : vm.height * Math.abs(vm.x - vm.base); + }, + + tooltipPosition: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y + }; + } +}); + +var elements = {}; +var Arc = element_arc; +var Line = element_line; +var Point = element_point; +var Rectangle = element_rectangle; +elements.Arc = Arc; +elements.Line = Line; +elements.Point = Point; +elements.Rectangle = Rectangle; + +var deprecated = helpers$1._deprecated; +var valueOrDefault$3 = helpers$1.valueOrDefault; + +core_defaults._set('bar', { + hover: { + mode: 'label' + }, + + scales: { + xAxes: [{ + type: 'category', + offset: true, + gridLines: { + offsetGridLines: true + } + }], + + yAxes: [{ + type: 'linear' + }] + } +}); + +core_defaults._set('global', { + datasets: { + bar: { + categoryPercentage: 0.8, + barPercentage: 0.9 + } + } +}); + +/** + * Computes the "optimal" sample size to maintain bars equally sized while preventing overlap. + * @private + */ +function computeMinSampleSize(scale, pixels) { + var min = scale._length; + var prev, curr, i, ilen; + + for (i = 1, ilen = pixels.length; i < ilen; ++i) { + min = Math.min(min, Math.abs(pixels[i] - pixels[i - 1])); + } + + for (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) { + curr = scale.getPixelForTick(i); + min = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min; + prev = curr; + } + + return min; +} + +/** + * Computes an "ideal" category based on the absolute bar thickness or, if undefined or null, + * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This + * mode currently always generates bars equally sized (until we introduce scriptable options?). + * @private + */ +function computeFitCategoryTraits(index, ruler, options) { + var thickness = options.barThickness; + var count = ruler.stackCount; + var curr = ruler.pixels[index]; + var min = helpers$1.isNullOrUndef(thickness) + ? computeMinSampleSize(ruler.scale, ruler.pixels) + : -1; + var size, ratio; + + if (helpers$1.isNullOrUndef(thickness)) { + size = min * options.categoryPercentage; + ratio = options.barPercentage; + } else { + // When bar thickness is enforced, category and bar percentages are ignored. + // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%') + // and deprecate barPercentage since this value is ignored when thickness is absolute. + size = thickness * count; + ratio = 1; + } + + return { + chunk: size / count, + ratio: ratio, + start: curr - (size / 2) + }; +} + +/** + * Computes an "optimal" category that globally arranges bars side by side (no gap when + * percentage options are 1), based on the previous and following categories. This mode + * generates bars with different widths when data are not evenly spaced. + * @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; + + if (prev === null) { + // first data: its size is double based on the next point or, + // if it's also the last data, we use the scale size. + prev = curr - (next === null ? ruler.end - ruler.start : next - curr); + } + + if (next === null) { + // last data: its size is also double based on the previous point. + next = curr + curr - prev; + } + + start = curr - (curr - Math.min(prev, next)) / 2 * percent; + size = Math.abs(next - prev) / 2 * percent; + + return { + chunk: size / ruler.stackCount, + ratio: options.barPercentage, + start: start + }; +} + +var controller_bar = core_datasetController.extend({ + + dataElementType: elements.Rectangle, + + /** + * @private + */ + _dataElementOptions: [ + 'backgroundColor', + 'borderColor', + 'borderSkipped', + 'borderWidth', + 'barPercentage', + 'barThickness', + 'categoryPercentage', + 'maxBarThickness', + 'minBarLength' + ], + + initialize: function() { + var me = this; + var meta, scaleOpts; + + core_datasetController.prototype.initialize.apply(me, arguments); + + meta = me.getMeta(); + meta.stack = me.getDataset().stack; + meta.bar = true; + + scaleOpts = me._getIndexScale().options; + deprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage'); + deprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness'); + deprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage'); + deprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength'); + deprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness'); + }, + + update: function(reset) { + var me = this; + var rects = me.getMeta().data; + var i, ilen; + + me._ruler = me.getRuler(); + + for (i = 0, ilen = rects.length; i < ilen; ++i) { + me.updateElement(rects[i], i, reset); + } + }, + + updateElement: function(rectangle, index, reset) { + var me = this; + var meta = me.getMeta(); + var dataset = me.getDataset(); + var options = me._resolveDataElementOptions(rectangle, index); + + rectangle._xScale = me.getScaleForId(meta.xAxisID); + rectangle._yScale = me.getScaleForId(meta.yAxisID); + rectangle._datasetIndex = me.index; + rectangle._index = index; + rectangle._model = { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderSkipped: options.borderSkipped, + borderWidth: options.borderWidth, + datasetLabel: dataset.label, + label: me.chart.data.labels[index] + }; + + if (helpers$1.isArray(dataset.data[index])) { + rectangle._model.borderSkipped = null; + } + + me._updateElementGeometry(rectangle, index, reset, options); + + rectangle.pivot(); + }, + + /** + * @private + */ + _updateElementGeometry: function(rectangle, index, reset, options) { + var me = this; + var model = rectangle._model; + var vscale = me._getValueScale(); + var base = vscale.getBasePixel(); + var horizontal = vscale.isHorizontal(); + var ruler = me._ruler || me.getRuler(); + var vpixels = me.calculateBarValuePixels(me.index, index, options); + var ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options); + + model.horizontal = horizontal; + model.base = reset ? base : vpixels.base; + model.x = horizontal ? reset ? base : vpixels.head : ipixels.center; + model.y = horizontal ? ipixels.center : reset ? base : vpixels.head; + model.height = horizontal ? ipixels.size : undefined; + model.width = horizontal ? undefined : ipixels.size; + }, + + /** + * Returns the stacks based on groups and bar visibility. + * @param {number} [last] - The dataset index + * @returns {string[]} The list of stack IDs + * @private + */ + _getStacks: function(last) { + var me = this; + var scale = me._getIndexScale(); + var metasets = scale._getMatchingVisibleMetas(me._type); + var stacked = scale.options.stacked; + var ilen = metasets.length; + var stacks = []; + var i, meta; + + for (i = 0; i < ilen; ++i) { + meta = metasets[i]; + // stacked | meta.stack + // | found | not found | undefined + // false | x | x | x + // true | | x | + // undefined | | x | x + if (stacked === false || stacks.indexOf(meta.stack) === -1 || + (stacked === undefined && meta.stack === undefined)) { + stacks.push(meta.stack); + } + if (meta.index === last) { + break; + } + } + + return stacks; + }, + + /** + * Returns the effective number of stacks based on groups and bar visibility. + * @private + */ + getStackCount: function() { + return this._getStacks().length; + }, + + /** + * Returns the stack index for the given dataset based on groups and bar visibility. + * @param {number} [datasetIndex] - The dataset index + * @param {string} [name] - The stack name to find + * @returns {number} The stack index + * @private + */ + getStackIndex: function(datasetIndex, name) { + var stacks = this._getStacks(datasetIndex); + var index = (name !== undefined) + ? stacks.indexOf(name) + : -1; // indexOf returns -1 if element is not present + + return (index === -1) + ? stacks.length - 1 + : index; + }, + + /** + * @private + */ + getRuler: function() { + var me = this; + var scale = me._getIndexScale(); + var pixels = []; + var i, ilen; + + for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) { + pixels.push(scale.getPixelForValue(null, i, me.index)); + } + + return { + pixels: pixels, + start: scale._startPixel, + end: scale._endPixel, + stackCount: me.getStackCount(), + scale: scale + }; + }, + + /** + * Note: pixel values are not clamped to the scale area. + * @private + */ + calculateBarValuePixels: function(datasetIndex, index, options) { + var me = this; + var chart = me.chart; + var scale = me._getValueScale(); + var isHorizontal = scale.isHorizontal(); + var datasets = chart.data.datasets; + var metasets = scale._getMatchingVisibleMetas(me._type); + var value = scale._parseValue(datasets[datasetIndex].data[index]); + var minBarLength = options.minBarLength; + var stacked = scale.options.stacked; + var stack = me.getMeta().stack; + var start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max; + var length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max; + var ilen = metasets.length; + var i, imeta, ivalue, base, head, size, stackLength; + + if (stacked || (stacked === undefined && stack !== undefined)) { + for (i = 0; i < ilen; ++i) { + imeta = metasets[i]; + + if (imeta.index === datasetIndex) { + break; + } + + if (imeta.stack === stack) { + stackLength = scale._parseValue(datasets[imeta.index].data[index]); + ivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min; + + if ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) { + start += ivalue; + } + } + } + } + + base = scale.getPixelForValue(start); + head = scale.getPixelForValue(start + length); + size = head - base; + + if (minBarLength !== undefined && Math.abs(size) < minBarLength) { + size = minBarLength; + if (length >= 0 && !isHorizontal || length < 0 && isHorizontal) { + head = base - minBarLength; + } else { + head = base + minBarLength; + } + } + + return { + size: size, + base: base, + head: head, + center: head + size / 2 + }; + }, + + /** + * @private + */ + calculateBarIndexPixels: function(datasetIndex, index, ruler, options) { + var me = this; + var range = options.barThickness === 'flex' + ? computeFlexCategoryTraits(index, ruler, options) + : computeFitCategoryTraits(index, ruler, options); + + var stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack); + var center = range.start + (range.chunk * stackIndex) + (range.chunk / 2); + var size = Math.min( + valueOrDefault$3(options.maxBarThickness, Infinity), + range.chunk * range.ratio); + + return { + base: center - size / 2, + head: center + size / 2, + center: center, + size: size + }; + }, + + draw: function() { + var me = this; + var chart = me.chart; + var scale = me._getValueScale(); + var rects = me.getMeta().data; + var dataset = me.getDataset(); + var ilen = rects.length; + var i = 0; + + helpers$1.canvas.clipArea(chart.ctx, chart.chartArea); + + for (; i < ilen; ++i) { + var val = scale._parseValue(dataset.data[i]); + if (!isNaN(val.min) && !isNaN(val.max)) { + rects[i].draw(); + } + } + + helpers$1.canvas.unclipArea(chart.ctx); + }, + + /** + * @private + */ + _resolveDataElementOptions: function() { + var me = this; + var values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments)); + var indexOpts = me._getIndexScale().options; + var valueOpts = me._getValueScale().options; + + values.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage); + values.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness); + values.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage); + values.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness); + values.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength); + + return values; + } + +}); + +var valueOrDefault$4 = helpers$1.valueOrDefault; +var resolve$1 = helpers$1.options.resolve; + +core_defaults._set('bubble', { + hover: { + mode: 'single' + }, + + scales: { + xAxes: [{ + type: 'linear', // bubble should probably use a linear scale by default + position: 'bottom', + id: 'x-axis-0' // need an ID so datasets can reference the scale + }], + yAxes: [{ + type: 'linear', + position: 'left', + id: 'y-axis-0' + }] + }, + + tooltips: { + callbacks: { + title: function() { + // Title doesn't make sense for scatter since we format the data as a point + return ''; + }, + label: function(item, data) { + var datasetLabel = data.datasets[item.datasetIndex].label || ''; + var dataPoint = data.datasets[item.datasetIndex].data[item.index]; + return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')'; + } + } + } +}); + +var controller_bubble = core_datasetController.extend({ + /** + * @protected + */ + dataElementType: elements.Point, + + /** + * @private + */ + _dataElementOptions: [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'hoverBackgroundColor', + 'hoverBorderColor', + 'hoverBorderWidth', + 'hoverRadius', + 'hitRadius', + 'pointStyle', + 'rotation' + ], + + /** + * @protected + */ + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var points = meta.data; + + // Update Points + helpers$1.each(points, function(point, index) { + me.updateElement(point, index, reset); + }); + }, + + /** + * @protected + */ + updateElement: function(point, index, reset) { + var me = this; + var meta = me.getMeta(); + var custom = point.custom || {}; + var xScale = me.getScaleForId(meta.xAxisID); + var yScale = me.getScaleForId(meta.yAxisID); + var options = me._resolveDataElementOptions(point, index); + var data = me.getDataset().data[index]; + var dsIndex = me.index; + + var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex); + var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex); + + point._xScale = xScale; + point._yScale = yScale; + point._options = options; + point._datasetIndex = dsIndex; + point._index = index; + point._model = { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + hitRadius: options.hitRadius, + pointStyle: options.pointStyle, + rotation: options.rotation, + radius: reset ? 0 : options.radius, + skip: custom.skip || isNaN(x) || isNaN(y), + x: x, + y: y, + }; + + point.pivot(); + }, + + /** + * @protected + */ + setHoverStyle: function(point) { + var model = point._model; + var options = point._options; + var getHoverColor = helpers$1.getHoverColor; + + point.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius + }; + + model.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth); + model.radius = options.radius + options.hoverRadius; + }, + + /** + * @private + */ + _resolveDataElementOptions: function(point, index) { + var me = this; + var chart = me.chart; + var dataset = me.getDataset(); + var custom = point.custom || {}; + var data = dataset.data[index] || {}; + var values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments); + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + // In case values were cached (and thus frozen), we need to clone the values + if (me._cachedDataOpts === values) { + values = helpers$1.extend({}, values); + } + + // Custom radius resolution + values.radius = resolve$1([ + custom.radius, + data.r, + me._config.radius, + chart.options.elements.point.radius + ], context, index); + + return values; + } +}); + +var valueOrDefault$5 = helpers$1.valueOrDefault; + +var PI$1 = Math.PI; +var DOUBLE_PI$1 = PI$1 * 2; +var HALF_PI$1 = PI$1 / 2; + +core_defaults._set('doughnut', { + animation: { + // Boolean - Whether we animate the rotation of the Doughnut + animateRotate: true, + // Boolean - Whether we animate scaling the Doughnut from the centre + animateScale: false + }, + hover: { + mode: 'single' + }, + legendCallback: function(chart) { + var list = document.createElement('ul'); + var data = chart.data; + var datasets = data.datasets; + var labels = data.labels; + var i, ilen, listItem, listItemSpan; + + list.setAttribute('class', chart.id + '-legend'); + if (datasets.length) { + for (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) { + listItem = list.appendChild(document.createElement('li')); + listItemSpan = listItem.appendChild(document.createElement('span')); + listItemSpan.style.backgroundColor = datasets[0].backgroundColor[i]; + if (labels[i]) { + listItem.appendChild(document.createTextNode(labels[i])); + } + } + } + + return list.outerHTML; + }, + legend: { + labels: { + generateLabels: function(chart) { + var 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 { + text: label, + fillStyle: style.backgroundColor, + strokeStyle: style.borderColor, + lineWidth: style.borderWidth, + hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden, + + // Extra data used for toggling the correct item + index: i + }; + }); + } + return []; + } + }, + + onClick: function(e, legendItem) { + var index = legendItem.index; + var chart = this.chart; + var i, ilen, meta; + + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + // toggle visibility of index if exists + if (meta.data[index]) { + meta.data[index].hidden = !meta.data[index].hidden; + } + } + + chart.update(); + } + }, + + // The percentage of the chart that we cut out of the middle. + cutoutPercentage: 50, + + // The rotation of the chart, where the first data arc begins. + rotation: -HALF_PI$1, + + // The total circumference of the chart. + circumference: DOUBLE_PI$1, + + // Need to override these to give a nice default + tooltips: { + callbacks: { + title: function() { + return ''; + }, + label: function(tooltipItem, data) { + var dataLabel = data.labels[tooltipItem.index]; + var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; + + if (helpers$1.isArray(dataLabel)) { + // show value on first line of multiline label + // need to clone because we are changing the value + dataLabel = dataLabel.slice(); + dataLabel[0] += value; + } else { + dataLabel += value; + } + + return dataLabel; + } + } + } +}); + +var controller_doughnut = core_datasetController.extend({ + + dataElementType: elements.Arc, + + linkScales: helpers$1.noop, + + /** + * @private + */ + _dataElementOptions: [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'borderAlign', + 'hoverBackgroundColor', + 'hoverBorderColor', + 'hoverBorderWidth', + ], + + // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly + getRingIndex: function(datasetIndex) { + var ringIndex = 0; + + for (var j = 0; j < datasetIndex; ++j) { + if (this.chart.isDatasetVisible(j)) { + ++ringIndex; + } + } + + return ringIndex; + }, + + update: function(reset) { + 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.getMeta(); + 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; + + // 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$1) { + var startAngle = opts.rotation % DOUBLE_PI$1; + startAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 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$1; + var contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1; + var contains180 = startAngle === -PI$1 || endAngle >= PI$1; + var contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1; + 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); + 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) { + arcs[i]._options = me._resolveDataElementOptions(arcs[i], i); + } + + chart.borderWidth = me.getMaxBorderWidth(); + maxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX; + 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); + chart.offsetX = offsetX * chart.outerRadius; + chart.offsetY = offsetY * chart.outerRadius; + + meta.total = me.calculateTotal(); + + me.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index); + me.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0); + + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + me.updateElement(arcs[i], i, reset); + } + }, + + updateElement: function(arc, index, reset) { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var animationOpts = opts.animation; + var centerX = (chartArea.left + chartArea.right) / 2; + var centerY = (chartArea.top + chartArea.bottom) / 2; + var startAngle = opts.rotation; // non reset case handled later + var endAngle = opts.rotation; // non reset case handled later + var dataset = me.getDataset(); + var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1); + var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; + var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; + var options = arc._options || {}; + + helpers$1.extend(arc, { + // Utility + _datasetIndex: me.index, + _index: index, + + // Desired view properties + _model: { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + borderAlign: options.borderAlign, + x: centerX + chart.offsetX, + y: centerY + chart.offsetY, + startAngle: startAngle, + endAngle: endAngle, + circumference: circumference, + outerRadius: outerRadius, + innerRadius: innerRadius, + label: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) + } + }); + + var model = arc._model; + + // Set correct angles if not resetting + if (!reset || !animationOpts.animateRotate) { + if (index === 0) { + model.startAngle = opts.rotation; + } else { + model.startAngle = me.getMeta().data[index - 1]._model.endAngle; + } + + model.endAngle = model.startAngle + model.circumference; + } + + arc.pivot(); + }, + + calculateTotal: function() { + var dataset = this.getDataset(); + var meta = this.getMeta(); + var total = 0; + var value; + + helpers$1.each(meta.data, function(element, index) { + value = dataset.data[index]; + if (!isNaN(value) && !element.hidden) { + total += Math.abs(value); + } + }); + + /* if (total === 0) { + total = NaN; + }*/ + + return total; + }, + + calculateCircumference: function(value) { + var total = this.getMeta().total; + if (total > 0 && !isNaN(value)) { + return DOUBLE_PI$1 * (Math.abs(value) / total); + } + return 0; + }, + + // gets the max border or hover width to properly scale pie charts + getMaxBorderWidth: function(arcs) { + var me = this; + var max = 0; + var chart = me.chart; + var i, ilen, meta, arc, controller, options, borderWidth, hoverWidth; + + if (!arcs) { + // Find the outmost visible dataset + for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { + if (chart.isDatasetVisible(i)) { + meta = chart.getDatasetMeta(i); + arcs = meta.data; + if (i !== me.index) { + controller = meta.controller; + } + break; + } + } + } + + if (!arcs) { + return 0; + } + + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + arc = arcs[i]; + if (controller) { + controller._configure(); + options = controller._resolveDataElementOptions(arc, i); + } else { + options = arc._options; + } + if (options.borderAlign !== 'inner') { + borderWidth = options.borderWidth; + hoverWidth = options.hoverBorderWidth; + + max = borderWidth > max ? borderWidth : max; + max = hoverWidth > max ? hoverWidth : max; + } + } + return max; + }, + + /** + * @protected + */ + setHoverStyle: function(arc) { + var model = arc._model; + var options = arc._options; + var getHoverColor = helpers$1.getHoverColor; + + arc.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + }; + + model.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth); + }, + + /** + * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly + * @private + */ + _getRingWeightOffset: function(datasetIndex) { + var ringWeightOffset = 0; + + for (var i = 0; i < datasetIndex; ++i) { + if (this.chart.isDatasetVisible(i)) { + ringWeightOffset += this._getRingWeight(i); + } + } + + return ringWeightOffset; + }, + + /** + * @private + */ + _getRingWeight: function(dataSetIndex) { + return Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0); + }, + + /** + * Returns the sum of all visibile data set weights. This value can be 0. + * @private + */ + _getVisibleDatasetWeightTotal: function() { + return this._getRingWeightOffset(this.chart.data.datasets.length); + } +}); + +core_defaults._set('horizontalBar', { + hover: { + mode: 'index', + axis: 'y' + }, + + scales: { + xAxes: [{ + type: 'linear', + position: 'bottom' + }], + + yAxes: [{ + type: 'category', + position: 'left', + offset: true, + gridLines: { + offsetGridLines: true + } + }] + }, + + elements: { + rectangle: { + borderSkipped: 'left' + } + }, + + tooltips: { + mode: 'index', + axis: 'y' + } +}); + +core_defaults._set('global', { + datasets: { + horizontalBar: { + categoryPercentage: 0.8, + barPercentage: 0.9 + } + } +}); + +var controller_horizontalBar = controller_bar.extend({ + /** + * @private + */ + _getValueScaleId: function() { + return this.getMeta().xAxisID; + }, + + /** + * @private + */ + _getIndexScaleId: function() { + return this.getMeta().yAxisID; + } +}); + +var valueOrDefault$6 = helpers$1.valueOrDefault; +var resolve$2 = helpers$1.options.resolve; +var isPointInArea = helpers$1.canvas._isPointInArea; + +core_defaults._set('line', { + showLines: true, + spanGaps: false, + + hover: { + mode: 'label' + }, + + scales: { + xAxes: [{ + type: 'category', + id: 'x-axis-0' + }], + yAxes: [{ + type: 'linear', + id: 'y-axis-0' + }] + } +}); + +function scaleClip(scale, halfBorderWidth) { + var tickOpts = scale && scale.options.ticks || {}; + var reverse = tickOpts.reverse; + var min = tickOpts.min === undefined ? halfBorderWidth : 0; + var max = tickOpts.max === undefined ? halfBorderWidth : 0; + return { + start: reverse ? max : min, + end: reverse ? min : max + }; +} + +function defaultClip(xScale, yScale, borderWidth) { + var halfBorderWidth = borderWidth / 2; + var x = scaleClip(xScale, halfBorderWidth); + var y = scaleClip(yScale, halfBorderWidth); + + return { + top: y.end, + right: x.end, + bottom: y.start, + left: x.start + }; +} + +function toClip(value) { + var t, r, b, l; + + if (helpers$1.isObject(value)) { + t = value.top; + r = value.right; + b = value.bottom; + l = value.left; + } else { + t = r = b = l = value; + } + + return { + top: t, + right: r, + bottom: b, + left: l + }; +} + + +var controller_line = core_datasetController.extend({ + + datasetElementType: elements.Line, + + dataElementType: elements.Point, + + /** + * @private + */ + _datasetElementOptions: [ + 'backgroundColor', + 'borderCapStyle', + 'borderColor', + 'borderDash', + 'borderDashOffset', + 'borderJoinStyle', + 'borderWidth', + 'cubicInterpolationMode', + 'fill' + ], + + /** + * @private + */ + _dataElementOptions: { + backgroundColor: 'pointBackgroundColor', + borderColor: 'pointBorderColor', + borderWidth: 'pointBorderWidth', + hitRadius: 'pointHitRadius', + hoverBackgroundColor: 'pointHoverBackgroundColor', + hoverBorderColor: 'pointHoverBorderColor', + hoverBorderWidth: 'pointHoverBorderWidth', + hoverRadius: 'pointHoverRadius', + pointStyle: 'pointStyle', + radius: 'pointRadius', + rotation: 'pointRotation' + }, + + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var line = meta.dataset; + var points = meta.data || []; + var options = me.chart.options; + var config = me._config; + var showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines); + var i, ilen; + + me._xScale = me.getScaleForId(meta.xAxisID); + me._yScale = me.getScaleForId(meta.yAxisID); + + // Update Line + if (showLine) { + // Compatibility: If the properties are defined with only the old name, use those values + if (config.tension !== undefined && config.lineTension === undefined) { + config.lineTension = config.tension; + } + + // Utility + line._scale = me._yScale; + line._datasetIndex = me.index; + // Data + line._children = points; + // Model + line._model = me._resolveDatasetElementOptions(line); + + line.pivot(); + } + + // Update Points + for (i = 0, ilen = points.length; i < ilen; ++i) { + me.updateElement(points[i], i, reset); + } + + if (showLine && line._model.tension !== 0) { + me.updateBezierControlPoints(); + } + + // Now pivot the point for animation + for (i = 0, ilen = points.length; i < ilen; ++i) { + points[i].pivot(); + } + }, + + updateElement: function(point, index, reset) { + var me = this; + var meta = me.getMeta(); + var custom = point.custom || {}; + var dataset = me.getDataset(); + var datasetIndex = me.index; + var value = dataset.data[index]; + var xScale = me._xScale; + var yScale = me._yScale; + var lineModel = meta.dataset._model; + var x, y; + + var options = me._resolveDataElementOptions(point, index); + + x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex); + y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); + + // Utility + point._xScale = xScale; + point._yScale = yScale; + point._options = options; + point._datasetIndex = datasetIndex; + point._index = index; + + // Desired view properties + point._model = { + x: x, + y: y, + skip: custom.skip || isNaN(x) || isNaN(y), + // Appearance + radius: options.radius, + pointStyle: options.pointStyle, + rotation: options.rotation, + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + tension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0), + steppedLine: lineModel ? lineModel.steppedLine : false, + // Tooltip + hitRadius: options.hitRadius + }; + }, + + /** + * @private + */ + _resolveDatasetElementOptions: function(element) { + var me = this; + var config = me._config; + var custom = element.custom || {}; + var options = me.chart.options; + var lineOptions = options.elements.line; + var values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments); + + // The default behavior of lines is to break at null values, according + // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 + // This option gives lines the ability to span gaps + values.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps); + values.tension = valueOrDefault$6(config.lineTension, lineOptions.tension); + values.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]); + values.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth))); + + return values; + }, + + calculatePointY: function(value, index, datasetIndex) { + var me = this; + var chart = me.chart; + var yScale = me._yScale; + var sumPos = 0; + var sumNeg = 0; + var i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen; + + if (yScale.options.stacked) { + rightValue = +yScale.getRightValue(value); + metasets = chart._getSortedVisibleDatasetMetas(); + ilen = metasets.length; + + for (i = 0; i < ilen; ++i) { + dsMeta = metasets[i]; + if (dsMeta.index === datasetIndex) { + break; + } + + ds = chart.data.datasets[dsMeta.index]; + if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) { + stackedRightValue = +yScale.getRightValue(ds.data[index]); + if (stackedRightValue < 0) { + sumNeg += stackedRightValue || 0; + } else { + sumPos += stackedRightValue || 0; + } + } + } + + if (rightValue < 0) { + return yScale.getPixelForValue(sumNeg + rightValue); + } + return yScale.getPixelForValue(sumPos + rightValue); + } + return yScale.getPixelForValue(value); + }, + + updateBezierControlPoints: function() { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var lineModel = meta.dataset._model; + var area = chart.chartArea; + var points = meta.data || []; + var i, ilen, model, controlPoints; + + // Only consider points that are drawn in case the spanGaps option is used + if (lineModel.spanGaps) { + points = points.filter(function(pt) { + return !pt._model.skip; + }); + } + + function capControlPoint(pt, min, max) { + return Math.max(Math.min(pt, max), min); + } + + if (lineModel.cubicInterpolationMode === 'monotone') { + helpers$1.splineCurveMonotone(points); + } else { + for (i = 0, ilen = points.length; i < ilen; ++i) { + model = points[i]._model; + controlPoints = helpers$1.splineCurve( + helpers$1.previousItem(points, i)._model, + model, + helpers$1.nextItem(points, i)._model, + lineModel.tension + ); + model.controlPointPreviousX = controlPoints.previous.x; + model.controlPointPreviousY = controlPoints.previous.y; + model.controlPointNextX = controlPoints.next.x; + model.controlPointNextY = controlPoints.next.y; + } + } + + if (chart.options.elements.line.capBezierPoints) { + for (i = 0, ilen = points.length; i < ilen; ++i) { + model = points[i]._model; + if (isPointInArea(model, area)) { + if (i > 0 && isPointInArea(points[i - 1]._model, area)) { + model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right); + model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom); + } + if (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) { + model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right); + model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom); + } + } + } + } + }, + + draw: function() { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var points = meta.data || []; + var area = chart.chartArea; + var canvas = chart.canvas; + var i = 0; + var ilen = points.length; + var clip; + + if (me._showLine) { + clip = meta.dataset._model.clip; + + helpers$1.canvas.clipArea(chart.ctx, { + left: clip.left === false ? 0 : area.left - clip.left, + right: clip.right === false ? canvas.width : area.right + clip.right, + top: clip.top === false ? 0 : area.top - clip.top, + bottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom + }); + + meta.dataset.draw(); + + helpers$1.canvas.unclipArea(chart.ctx); + } + + // Draw the points + for (; i < ilen; ++i) { + points[i].draw(area); + } + }, + + /** + * @protected + */ + setHoverStyle: function(point) { + var model = point._model; + var options = point._options; + var getHoverColor = helpers$1.getHoverColor; + + point.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius + }; + + model.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth); + model.radius = valueOrDefault$6(options.hoverRadius, options.radius); + }, +}); + +var resolve$3 = helpers$1.options.resolve; + +core_defaults._set('polarArea', { + scale: { + type: 'radialLinear', + angleLines: { + display: false + }, + gridLines: { + circular: true + }, + pointLabels: { + display: false + }, + ticks: { + beginAtZero: true + } + }, + + // Boolean - Whether to animate the rotation of the chart + animation: { + animateRotate: true, + animateScale: true + }, + + startAngle: -0.5 * Math.PI, + legendCallback: function(chart) { + var list = document.createElement('ul'); + var data = chart.data; + var datasets = data.datasets; + var labels = data.labels; + var i, ilen, listItem, listItemSpan; + + list.setAttribute('class', chart.id + '-legend'); + if (datasets.length) { + for (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) { + listItem = list.appendChild(document.createElement('li')); + listItemSpan = listItem.appendChild(document.createElement('span')); + listItemSpan.style.backgroundColor = datasets[0].backgroundColor[i]; + if (labels[i]) { + listItem.appendChild(document.createTextNode(labels[i])); + } + } + } + + return list.outerHTML; + }, + legend: { + labels: { + generateLabels: function(chart) { + var 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 { + text: label, + fillStyle: style.backgroundColor, + strokeStyle: style.borderColor, + lineWidth: style.borderWidth, + hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden, + + // Extra data used for toggling the correct item + index: i + }; + }); + } + return []; + } + }, + + onClick: function(e, legendItem) { + var index = legendItem.index; + var chart = this.chart; + var i, ilen, meta; + + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + meta.data[index].hidden = !meta.data[index].hidden; + } + + chart.update(); + } + }, + + // Need to override these to give a nice default + tooltips: { + callbacks: { + title: function() { + return ''; + }, + label: function(item, data) { + return data.labels[item.index] + ': ' + item.yLabel; + } + } + } +}); + +var controller_polarArea = core_datasetController.extend({ + + dataElementType: elements.Arc, + + linkScales: helpers$1.noop, + + /** + * @private + */ + _dataElementOptions: [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'borderAlign', + 'hoverBackgroundColor', + 'hoverBorderColor', + 'hoverBorderWidth', + ], + + /** + * @private + */ + _getIndexScaleId: function() { + return this.chart.scale.id; + }, + + /** + * @private + */ + _getValueScaleId: function() { + return this.chart.scale.id; + }, + + update: function(reset) { + var me = this; + var dataset = me.getDataset(); + var meta = me.getMeta(); + var start = me.chart.options.startAngle || 0; + var starts = me._starts = []; + var angles = me._angles = []; + var arcs = meta.data; + var i, ilen, angle; + + me._updateRadius(); + + meta.count = me.countVisibleElements(); + + for (i = 0, ilen = dataset.data.length; i < ilen; i++) { + starts[i] = start; + angle = me._computeAngle(i); + angles[i] = angle; + start += angle; + } + + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + arcs[i]._options = me._resolveDataElementOptions(arcs[i], i); + me.updateElement(arcs[i], i, reset); + } + }, + + /** + * @private + */ + _updateRadius: function() { + 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); + + chart.outerRadius = Math.max(minSize / 2, 0); + chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); + chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); + + me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); + me.innerRadius = me.outerRadius - chart.radiusLength; + }, + + updateElement: function(arc, index, reset) { + var me = this; + var chart = me.chart; + var dataset = me.getDataset(); + var opts = chart.options; + var animationOpts = opts.animation; + var scale = chart.scale; + var labels = chart.data.labels; + + var centerX = scale.xCenter; + var centerY = scale.yCenter; + + // var negHalfPI = -0.5 * Math.PI; + var datasetStartAngle = opts.startAngle; + var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); + var startAngle = me._starts[index]; + var endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]); + + var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); + var options = arc._options || {}; + + helpers$1.extend(arc, { + // Utility + _datasetIndex: me.index, + _index: index, + _scale: scale, + + // Desired view properties + _model: { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + borderAlign: options.borderAlign, + x: centerX, + y: centerY, + innerRadius: 0, + outerRadius: reset ? resetRadius : distance, + startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, + endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, + label: helpers$1.valueAtIndexOrDefault(labels, index, labels[index]) + } + }); + + arc.pivot(); + }, + + countVisibleElements: function() { + var dataset = this.getDataset(); + var meta = this.getMeta(); + var count = 0; + + helpers$1.each(meta.data, function(element, index) { + if (!isNaN(dataset.data[index]) && !element.hidden) { + count++; + } + }); + + return count; + }, + + /** + * @protected + */ + setHoverStyle: function(arc) { + var model = arc._model; + var options = arc._options; + var getHoverColor = helpers$1.getHoverColor; + var valueOrDefault = helpers$1.valueOrDefault; + + arc.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + }; + + model.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth); + }, + + /** + * @private + */ + _computeAngle: function(index) { + var me = this; + var count = this.getMeta().count; + var dataset = me.getDataset(); + var meta = me.getMeta(); + + if (isNaN(dataset.data[index]) || meta.data[index].hidden) { + return 0; + } + + // Scriptable options + var context = { + chart: me.chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + return resolve$3([ + me.chart.options.elements.arc.angle, + (2 * Math.PI) / count + ], context, index); + } +}); + +core_defaults._set('pie', helpers$1.clone(core_defaults.doughnut)); +core_defaults._set('pie', { + cutoutPercentage: 0 +}); + +// Pie charts are Doughnut chart with different defaults +var controller_pie = controller_doughnut; + +var valueOrDefault$7 = helpers$1.valueOrDefault; + +core_defaults._set('radar', { + spanGaps: false, + scale: { + type: 'radialLinear' + }, + elements: { + line: { + fill: 'start', + tension: 0 // no bezier in radar + } + } +}); + +var controller_radar = core_datasetController.extend({ + datasetElementType: elements.Line, + + dataElementType: elements.Point, + + linkScales: helpers$1.noop, + + /** + * @private + */ + _datasetElementOptions: [ + 'backgroundColor', + 'borderWidth', + 'borderColor', + 'borderCapStyle', + 'borderDash', + 'borderDashOffset', + 'borderJoinStyle', + 'fill' + ], + + /** + * @private + */ + _dataElementOptions: { + backgroundColor: 'pointBackgroundColor', + borderColor: 'pointBorderColor', + borderWidth: 'pointBorderWidth', + hitRadius: 'pointHitRadius', + hoverBackgroundColor: 'pointHoverBackgroundColor', + hoverBorderColor: 'pointHoverBorderColor', + hoverBorderWidth: 'pointHoverBorderWidth', + hoverRadius: 'pointHoverRadius', + pointStyle: 'pointStyle', + radius: 'pointRadius', + rotation: 'pointRotation' + }, + + /** + * @private + */ + _getIndexScaleId: function() { + return this.chart.scale.id; + }, + + /** + * @private + */ + _getValueScaleId: function() { + return this.chart.scale.id; + }, + + update: function(reset) { + var me = this; + var meta = me.getMeta(); + var line = meta.dataset; + var points = meta.data || []; + var scale = me.chart.scale; + var config = me._config; + var i, ilen; + + // Compatibility: If the properties are defined with only the old name, use those values + if (config.tension !== undefined && config.lineTension === undefined) { + config.lineTension = config.tension; + } + + // Utility + line._scale = scale; + line._datasetIndex = me.index; + // Data + line._children = points; + line._loop = true; + // Model + line._model = me._resolveDatasetElementOptions(line); + + line.pivot(); + + // Update Points + for (i = 0, ilen = points.length; i < ilen; ++i) { + me.updateElement(points[i], i, reset); + } + + // Update bezier control points + me.updateBezierControlPoints(); + + // Now pivot the point for animation + for (i = 0, ilen = points.length; i < ilen; ++i) { + points[i].pivot(); + } + }, + + updateElement: function(point, index, reset) { + var me = this; + var custom = point.custom || {}; + var dataset = me.getDataset(); + var scale = me.chart.scale; + var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); + var options = me._resolveDataElementOptions(point, index); + var lineModel = me.getMeta().dataset._model; + var x = reset ? scale.xCenter : pointPosition.x; + var y = reset ? scale.yCenter : pointPosition.y; + + // Utility + point._scale = scale; + point._options = options; + point._datasetIndex = me.index; + point._index = index; + + // Desired view properties + point._model = { + x: x, // value not used in dataset scale, but we want a consistent API between scales + y: y, + skip: custom.skip || isNaN(x) || isNaN(y), + // Appearance + radius: options.radius, + pointStyle: options.pointStyle, + rotation: options.rotation, + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + tension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0), + + // Tooltip + hitRadius: options.hitRadius + }; + }, + + /** + * @private + */ + _resolveDatasetElementOptions: function() { + var me = this; + var config = me._config; + var options = me.chart.options; + var values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments); + + values.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps); + values.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension); + + return values; + }, + + updateBezierControlPoints: function() { + var me = this; + var meta = me.getMeta(); + var area = me.chart.chartArea; + var points = meta.data || []; + var i, ilen, model, controlPoints; + + // Only consider points that are drawn in case the spanGaps option is used + if (meta.dataset._model.spanGaps) { + points = points.filter(function(pt) { + return !pt._model.skip; + }); + } + + function capControlPoint(pt, min, max) { + return Math.max(Math.min(pt, max), min); + } + + for (i = 0, ilen = points.length; i < ilen; ++i) { + model = points[i]._model; + controlPoints = helpers$1.splineCurve( + helpers$1.previousItem(points, i, true)._model, + model, + helpers$1.nextItem(points, i, true)._model, + model.tension + ); + + // Prevent the bezier going outside of the bounds of the graph + model.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right); + model.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom); + model.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right); + model.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom); + } + }, + + setHoverStyle: function(point) { + var model = point._model; + var options = point._options; + var getHoverColor = helpers$1.getHoverColor; + + point.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius + }; + + model.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth); + model.radius = valueOrDefault$7(options.hoverRadius, options.radius); + } +}); + +core_defaults._set('scatter', { + hover: { + mode: 'single' + }, + + scales: { + xAxes: [{ + id: 'x-axis-1', // need an ID so datasets can reference the scale + type: 'linear', // scatter should not use a category axis + position: 'bottom' + }], + yAxes: [{ + id: 'y-axis-1', + type: 'linear', + position: 'left' + }] + }, + + tooltips: { + callbacks: { + title: function() { + return ''; // doesn't make sense for scatter since data are formatted as a point + }, + label: function(item) { + return '(' + item.xLabel + ', ' + item.yLabel + ')'; + } + } + } +}); + +core_defaults._set('global', { + datasets: { + scatter: { + showLine: false + } + } +}); + +// Scatter charts use line controllers +var controller_scatter = controller_line; + +// NOTE export a map in which the key represents the controller type, not +// the class, and so must be CamelCase in order to be correctly retrieved +// by the controller in core.controller.js (`controllers[meta.type]`). + +var controllers = { + bar: controller_bar, + bubble: controller_bubble, + doughnut: controller_doughnut, + horizontalBar: controller_horizontalBar, + line: controller_line, + polarArea: controller_polarArea, + pie: controller_pie, + radar: controller_radar, + scatter: controller_scatter +}; + +/** + * Helper function to get relative position for an event + * @param {Event|IEvent} event - The event to get the position for + * @param {Chart} chart - The chart + * @returns {object} the event position + */ +function getRelativePosition(e, chart) { + if (e.native) { + return { + x: e.x, + y: e.y + }; + } + + return helpers$1.getRelativePosition(e, chart); +} + +/** + * Helper function to traverse all of the visible elements in the chart + * @param {Chart} chart - the chart + * @param {function} handler - the callback to execute for each visible item + */ +function parseVisibleItems(chart, handler) { + var metasets = chart._getSortedVisibleDatasetMetas(); + var metadata, i, j, ilen, jlen, element; + + for (i = 0, ilen = metasets.length; i < ilen; ++i) { + metadata = metasets[i].data; + for (j = 0, jlen = metadata.length; j < jlen; ++j) { + element = metadata[j]; + if (!element._view.skip) { + handler(element); + } + } + } +} + +/** + * Helper function to get the items that intersect the event position + * @param {ChartElement[]} items - elements to filter + * @param {object} position - the point to be nearest to + * @return {ChartElement[]} the nearest items + */ +function getIntersectItems(chart, position) { + var elements = []; + + parseVisibleItems(chart, function(element) { + if (element.inRange(position.x, position.y)) { + elements.push(element); + } + }); + + return elements; +} + +/** + * Helper function to get the items nearest to the event position considering all visible items in teh chart + * @param {Chart} chart - the chart to look at elements from + * @param {object} position - the point to be nearest to + * @param {boolean} intersect - if true, only consider items that intersect the position + * @param {function} distanceMetric - function to provide the distance between points + * @return {ChartElement[]} the nearest items + */ +function getNearestItems(chart, position, intersect, distanceMetric) { + var minDistance = Number.POSITIVE_INFINITY; + var nearestItems = []; + + parseVisibleItems(chart, function(element) { + if (intersect && !element.inRange(position.x, position.y)) { + return; + } + + var center = element.getCenterPoint(); + var distance = distanceMetric(position, center); + if (distance < minDistance) { + nearestItems = [element]; + minDistance = distance; + } else if (distance === minDistance) { + // Can have multiple items at the same distance in which case we sort by size + nearestItems.push(element); + } + }); + + return nearestItems; +} + +/** + * Get a distance metric function for two points based on the + * axis mode setting + * @param {string} axis - the axis mode. x|y|xy + */ +function getDistanceMetricForAxis(axis) { + var useX = axis.indexOf('x') !== -1; + var useY = axis.indexOf('y') !== -1; + + return function(pt1, pt2) { + var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; + var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; + return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); + }; +} + +function indexMode(chart, e, options) { + var position = getRelativePosition(e, chart); + // Default axis for index mode is 'x' to match old behaviour + options.axis = options.axis || 'x'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); + var elements = []; + + if (!items.length) { + return []; + } + + chart._getSortedVisibleDatasetMetas().forEach(function(meta) { + var element = meta.data[items[0]._index]; + + // don't count items that are skipped (null data) + if (element && !element._view.skip) { + elements.push(element); + } + }); + + return elements; +} + +/** + * @interface IInteractionOptions + */ +/** + * If true, only consider items that intersect the point + * @name IInterfaceOptions#boolean + * @type Boolean + */ + +/** + * Contains interaction related functions + * @namespace Chart.Interaction + */ +var core_interaction = { + // Helper function for different modes + modes: { + single: function(chart, e) { + var position = getRelativePosition(e, chart); + var elements = []; + + parseVisibleItems(chart, function(element) { + if (element.inRange(position.x, position.y)) { + elements.push(element); + return elements; + } + }); + + return elements.slice(0, 1); + }, + + /** + * @function Chart.Interaction.modes.label + * @deprecated since version 2.4.0 + * @todo remove at version 3 + * @private + */ + label: indexMode, + + /** + * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something + * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item + * @function Chart.Interaction.modes.index + * @since v2.4.0 + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use during interaction + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + index: indexMode, + + /** + * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something + * If the options.intersect is false, we find the nearest item and return the items in that dataset + * @function Chart.Interaction.modes.dataset + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use during interaction + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + dataset: function(chart, e, options) { + var position = getRelativePosition(e, chart); + options.axis = options.axis || 'xy'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); + + if (items.length > 0) { + items = chart.getDatasetMeta(items[0]._datasetIndex).data; + } + + return items; + }, + + /** + * @function Chart.Interaction.modes.x-axis + * @deprecated since version 2.4.0. Use index mode and intersect == true + * @todo remove at version 3 + * @private + */ + 'x-axis': function(chart, e) { + return indexMode(chart, e, {intersect: false}); + }, + + /** + * Point mode returns all elements that hit test based on the event position + * of the event + * @function Chart.Interaction.modes.intersect + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + point: function(chart, e) { + var position = getRelativePosition(e, chart); + return getIntersectItems(chart, position); + }, + + /** + * nearest mode returns the element closest to the point + * @function Chart.Interaction.modes.intersect + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + nearest: function(chart, e, options) { + var position = getRelativePosition(e, chart); + options.axis = options.axis || 'xy'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + return getNearestItems(chart, position, options.intersect, distanceMetric); + }, + + /** + * x mode returns the elements that hit-test at the current x coordinate + * @function Chart.Interaction.modes.x + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + x: function(chart, e, options) { + var position = getRelativePosition(e, chart); + var items = []; + var intersectsItem = false; + + parseVisibleItems(chart, function(element) { + if (element.inXRange(position.x)) { + items.push(element); + } + + if (element.inRange(position.x, position.y)) { + intersectsItem = true; + } + }); + + // If we want to trigger on an intersect and we don't have any items + // that intersect the position, return nothing + if (options.intersect && !intersectsItem) { + items = []; + } + return items; + }, + + /** + * y mode returns the elements that hit-test at the current y coordinate + * @function Chart.Interaction.modes.y + * @param {Chart} chart - the chart we are returning items from + * @param {Event} e - the event we are find things at + * @param {IInteractionOptions} options - options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + y: function(chart, e, options) { + var position = getRelativePosition(e, chart); + var items = []; + var intersectsItem = false; + + parseVisibleItems(chart, function(element) { + if (element.inYRange(position.y)) { + items.push(element); + } + + if (element.inRange(position.x, position.y)) { + intersectsItem = true; + } + }); + + // If we want to trigger on an intersect and we don't have any items + // that intersect the position, return nothing + if (options.intersect && !intersectsItem) { + items = []; + } + return items; + } + } +}; + +var extend = helpers$1.extend; + +function filterByPosition(array, position) { + return helpers$1.where(array, function(v) { + return v.pos === position; + }); +} + +function sortByWeight(array, reverse) { + return array.sort(function(a, b) { + var v0 = reverse ? b : a; + var v1 = reverse ? a : b; + return v0.weight === v1.weight ? + v0.index - v1.index : + v0.weight - v1.weight; + }); +} + +function wrapBoxes(boxes) { + var layoutBoxes = []; + var i, ilen, box; + + for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) { + box = boxes[i]; + layoutBoxes.push({ + index: i, + box: box, + pos: box.position, + horizontal: box.isHorizontal(), + weight: box.weight + }); + } + return layoutBoxes; +} + +function setLayoutDims(layouts, params) { + var i, ilen, layout; + for (i = 0, ilen = layouts.length; i < ilen; ++i) { + layout = layouts[i]; + // store width used instead of chartArea.w in fitBoxes + layout.width = layout.horizontal + ? layout.box.fullWidth && params.availableWidth + : params.vBoxMaxWidth; + // store height used instead of chartArea.h in fitBoxes + layout.height = layout.horizontal && params.hBoxMaxHeight; + } +} + +function buildLayoutBoxes(boxes) { + var layoutBoxes = wrapBoxes(boxes); + var left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true); + var right = sortByWeight(filterByPosition(layoutBoxes, 'right')); + var top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true); + var bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom')); + + return { + leftAndTop: left.concat(top), + rightAndBottom: right.concat(bottom), + chartArea: filterByPosition(layoutBoxes, 'chartArea'), + vertical: left.concat(right), + horizontal: top.concat(bottom) + }; +} + +function getCombinedMax(maxPadding, chartArea, a, b) { + return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]); +} + +function updateDims(chartArea, params, layout) { + var box = layout.box; + var maxPadding = chartArea.maxPadding; + var newWidth, newHeight; + + if (layout.size) { + // this layout was already counted for, lets first reduce old size + chartArea[layout.pos] -= layout.size; + } + layout.size = layout.horizontal ? box.height : box.width; + chartArea[layout.pos] += layout.size; + + if (box.getPadding) { + var 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'); + + if (newWidth !== chartArea.w || newHeight !== chartArea.h) { + chartArea.w = newWidth; + chartArea.h = newHeight; + + // return true if chart area changed in layout's direction + var sizes = layout.horizontal ? [newWidth, chartArea.w] : [newHeight, chartArea.h]; + return sizes[0] !== sizes[1] && (!isNaN(sizes[0]) || !isNaN(sizes[1])); + } +} + +function handleMaxPadding(chartArea) { + var maxPadding = chartArea.maxPadding; + + function updatePos(pos) { + var change = Math.max(maxPadding[pos] - chartArea[pos], 0); + chartArea[pos] += change; + return change; + } + chartArea.y += updatePos('top'); + chartArea.x += updatePos('left'); + updatePos('right'); + updatePos('bottom'); +} + +function getMargins(horizontal, chartArea) { + var maxPadding = chartArea.maxPadding; + + function marginForPositions(positions) { + var margin = {left: 0, top: 0, right: 0, bottom: 0}; + positions.forEach(function(pos) { + margin[pos] = Math.max(chartArea[pos], maxPadding[pos]); + }); + return margin; + } + + return horizontal + ? marginForPositions(['left', 'right']) + : marginForPositions(['top', 'bottom']); +} + +function fitBoxes(boxes, chartArea, params) { + var refitBoxes = []; + var i, ilen, layout, box, refit, changed; + + for (i = 0, ilen = boxes.length; i < ilen; ++i) { + layout = boxes[i]; + box = layout.box; + + box.update( + layout.width || chartArea.w, + layout.height || chartArea.h, + getMargins(layout.horizontal, chartArea) + ); + if (updateDims(chartArea, params, layout)) { + changed = true; + if (refitBoxes.length) { + // Dimensions changed and there were non full width boxes before this + // -> we have to refit those + refit = true; + } + } + if (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case + refitBoxes.push(layout); + } + } + + return refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed; +} + +function placeBoxes(boxes, chartArea, params) { + var userPadding = params.padding; + var x = chartArea.x; + var y = chartArea.y; + var i, ilen, layout, box; + + for (i = 0, ilen = boxes.length; i < ilen; ++i) { + layout = boxes[i]; + box = layout.box; + if (layout.horizontal) { + box.left = box.fullWidth ? userPadding.left : chartArea.left; + box.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w; + box.top = y; + box.bottom = y + box.height; + box.width = box.right - box.left; + y = box.bottom; + } else { + box.left = x; + box.right = x + box.width; + box.top = chartArea.top; + box.bottom = chartArea.top + chartArea.h; + box.height = box.bottom - box.top; + x = box.right; + } + } + + chartArea.x = x; + chartArea.y = y; +} + +core_defaults._set('global', { + layout: { + padding: { + top: 0, + right: 0, + bottom: 0, + left: 0 + } + } +}); + +/** + * @interface ILayoutItem + * @prop {string} position - The position of the item in the chart layout. Possible values are + * 'left', 'top', 'right', 'bottom', and 'chartArea' + * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area + * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down + * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom) + * @prop {function} update - Takes two parameters: width and height. Returns size of item + * @prop {function} getPadding - Returns an object with padding on the edges + * @prop {number} width - Width of item. Must be valid after update() + * @prop {number} height - Height of item. Must be valid after update() + * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update + * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update + * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update + * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update + */ + +// The layout service is very self explanatory. It's responsible for the layout within a chart. +// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need +// It is this service's responsibility of carrying out that layout. +var core_layouts = { + defaults: {}, + + /** + * Register a box to a chart. + * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title. + * @param {Chart} chart - the chart to use + * @param {ILayoutItem} item - the item to add to be layed out + */ + addBox: function(chart, item) { + if (!chart.boxes) { + chart.boxes = []; + } + + // initialize item with default values + item.fullWidth = item.fullWidth || false; + item.position = item.position || 'top'; + item.weight = item.weight || 0; + item._layers = item._layers || function() { + return [{ + z: 0, + draw: function() { + item.draw.apply(item, arguments); + } + }]; + }; + + chart.boxes.push(item); + }, + + /** + * Remove a layoutItem from a chart + * @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; + if (index !== -1) { + chart.boxes.splice(index, 1); + } + }, + + /** + * Sets (or updates) options on the given `item`. + * @param {Chart} chart - the chart in which the item lives (or will be added to) + * @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; + + for (; i < ilen; ++i) { + prop = props[i]; + if (options.hasOwnProperty(prop)) { + item[prop] = options[prop]; + } + } + }, + + /** + * Fits boxes of the given chart into the given size by having each box measure itself + * then running a fitting algorithm + * @param {Chart} chart - the chart + * @param {number} width - the width to fit into + * @param {number} height - the height to fit into + */ + update: function(chart, width, height) { + if (!chart) { + return; + } + + var layoutOptions = chart.options.layout || {}; + var padding = helpers$1.options.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; + + // Essentially we now have any number of boxes on each of the 4 sides. + // Our canvas looks like the following. + // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and + // B1 is the bottom axis + // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays + // These locations are single-box locations only, when trying to register a chartArea location that is already taken, + // an error will be thrown. + // + // |----------------------------------------------------| + // | T1 (Full Width) | + // |----------------------------------------------------| + // | | | T2 | | + // | |----|-------------------------------------|----| + // | | | C1 | | C2 | | + // | | |----| |----| | + // | | | | | + // | L1 | L2 | ChartArea (C0) | R1 | + // | | | | | + // | | |----| |----| | + // | | | C3 | | C4 | | + // | |----|-------------------------------------|----| + // | | | B1 | | + // |----------------------------------------------------| + // | B2 (Full Width) | + // |----------------------------------------------------| + // + + var params = Object.freeze({ + outerWidth: width, + outerHeight: height, + padding: padding, + availableWidth: availableWidth, + vBoxMaxWidth: availableWidth / 2 / verticalBoxes.length, + hBoxMaxHeight: availableHeight / 2 + }); + var chartArea = extend({ + maxPadding: extend({}, padding), + w: availableWidth, + h: availableHeight, + x: padding.left, + y: padding.top + }, padding); + + setLayoutDims(verticalBoxes.concat(horizontalBoxes), params); + + // First fit vertical boxes + fitBoxes(verticalBoxes, chartArea, params); + + // Then fit horizontal boxes + if (fitBoxes(horizontalBoxes, chartArea, params)) { + // if the area changed, re-fit vertical boxes + fitBoxes(verticalBoxes, chartArea, params); + } + + handleMaxPadding(chartArea); + + // Finally place the boxes to correct coordinates + placeBoxes(boxes.leftAndTop, chartArea, params); + + // Move to opposite side of chart + chartArea.x += chartArea.w; + chartArea.y += chartArea.h; + + placeBoxes(boxes.rightAndBottom, chartArea, params); + + chart.chartArea = { + left: chartArea.left, + top: chartArea.top, + right: chartArea.left + chartArea.w, + bottom: chartArea.top + chartArea.h + }; + + // Finally update boxes in chartArea (radial scale for example) + helpers$1.each(boxes.chartArea, function(layout) { + var box = layout.box; + extend(box, chart.chartArea); + box.update(chartArea.w, chartArea.h); + }); + } +}; + +/** + * Platform fallback implementation (minimal). + * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939 + */ + +var platform_basic = { + acquireContext: function(item) { + if (item && item.canvas) { + // Support for any object associated to a canvas (including a context2d) + item = item.canvas; + } + + return item && item.getContext('2d') || null; + } +}; + +var platform_dom = "/*\r\n * DOM element rendering detection\r\n * https://davidwalsh.name/detect-node-insertion\r\n */\r\n@keyframes chartjs-render-animation {\r\n\tfrom { opacity: 0.99; }\r\n\tto { opacity: 1; }\r\n}\r\n\r\n.chartjs-render-monitor {\r\n\tanimation: chartjs-render-animation 0.001s;\r\n}\r\n\r\n/*\r\n * DOM element resizing detection\r\n * https://github.com/marcj/css-element-queries\r\n */\r\n.chartjs-size-monitor,\r\n.chartjs-size-monitor-expand,\r\n.chartjs-size-monitor-shrink {\r\n\tposition: absolute;\r\n\tdirection: ltr;\r\n\tleft: 0;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tbottom: 0;\r\n\toverflow: hidden;\r\n\tpointer-events: none;\r\n\tvisibility: hidden;\r\n\tz-index: -1;\r\n}\r\n\r\n.chartjs-size-monitor-expand > div {\r\n\tposition: absolute;\r\n\twidth: 1000000px;\r\n\theight: 1000000px;\r\n\tleft: 0;\r\n\ttop: 0;\r\n}\r\n\r\n.chartjs-size-monitor-shrink > div {\r\n\tposition: absolute;\r\n\twidth: 200%;\r\n\theight: 200%;\r\n\tleft: 0;\r\n\ttop: 0;\r\n}\r\n"; + +var platform_dom$1 = /*#__PURE__*/Object.freeze({ +__proto__: null, +'default': platform_dom +}); + +var stylesheet = getCjsExportFromNamespace(platform_dom$1); + +var EXPANDO_KEY = '$chartjs'; +var CSS_PREFIX = 'chartjs-'; +var CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor'; +var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor'; +var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation'; +var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart']; + +/** + * DOM event types -> Chart.js event types. + * Note: only events with different types are mapped. + * @see https://developer.mozilla.org/en-US/docs/Web/Events + */ +var EVENT_TYPES = { + touchstart: 'mousedown', + touchmove: 'mousemove', + touchend: 'mouseup', + pointerenter: 'mouseenter', + pointerdown: 'mousedown', + pointermove: 'mousemove', + pointerup: 'mouseup', + pointerleave: 'mouseout', + pointerout: 'mouseout' +}; + +/** + * The "used" size is the final value of a dimension property after all calculations have + * been performed. This method uses the computed style of `element` but returns undefined + * if the computed style is not expressed in pixels. That can happen in some cases where + * `element` has a size relative to its parent and this last one is not yet displayed, + * for example because of `display: none` on a parent node. + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value + * @returns {number} Size in pixels or undefined if unknown. + */ +function readUsedSize(element, property) { + var value = helpers$1.getStyle(element, property); + var matches = value && value.match(/^(\d+)(\.\d+)?px$/); + return matches ? Number(matches[1]) : undefined; +} + +/** + * Initializes the canvas style and render size without modifying the canvas display size, + * since responsiveness is handled by the controller.resize() method. The config is used + * to determine the aspect ratio to apply in case no explicit height has been specified. + */ +function initCanvas(canvas, config) { + var style = canvas.style; + + // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it + // returns null or '' if no explicit value has been set to the canvas attribute. + var renderHeight = canvas.getAttribute('height'); + var renderWidth = canvas.getAttribute('width'); + + // Chart.js modifies some canvas values that we want to restore on destroy + canvas[EXPANDO_KEY] = { + initial: { + height: renderHeight, + width: renderWidth, + style: { + display: style.display, + height: style.height, + width: style.width + } + } + }; + + // Force canvas to display as block to avoid extra space caused by inline + // elements, which would interfere with the responsive resize process. + // https://github.com/chartjs/Chart.js/issues/2538 + style.display = style.display || 'block'; + + if (renderWidth === null || renderWidth === '') { + var displayWidth = readUsedSize(canvas, 'width'); + if (displayWidth !== undefined) { + canvas.width = displayWidth; + } + } + + if (renderHeight === null || renderHeight === '') { + if (canvas.style.height === '') { + // If no explicit render height and style height, let's apply the aspect ratio, + // which one can be specified by the user but also by charts as default option + // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2. + canvas.height = canvas.width / (config.options.aspectRatio || 2); + } else { + var displayHeight = readUsedSize(canvas, 'height'); + if (displayWidth !== undefined) { + canvas.height = displayHeight; + } + } + } + + return canvas; +} + +/** + * Detects support for options object argument in addEventListener. + * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support + * @private + */ +var supportsEventListenerOptions = (function() { + var supports = false; + try { + var options = Object.defineProperty({}, 'passive', { + // eslint-disable-next-line getter-return + get: function() { + supports = true; + } + }); + window.addEventListener('e', null, options); + } catch (e) { + // continue regardless of error + } + return supports; +}()); + +// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events. +// https://github.com/chartjs/Chart.js/issues/4287 +var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false; + +function addListener(node, type, listener) { + node.addEventListener(type, listener, eventListenerOptions); +} + +function removeListener(node, type, listener) { + node.removeEventListener(type, listener, eventListenerOptions); +} + +function createEvent(type, chart, x, y, nativeEvent) { + return { + type: type, + chart: chart, + native: nativeEvent || null, + x: x !== undefined ? x : null, + y: y !== undefined ? y : null, + }; +} + +function fromNativeEvent(event, chart) { + var type = EVENT_TYPES[event.type] || event.type; + var pos = helpers$1.getRelativePosition(event, chart); + return createEvent(type, chart, pos.x, pos.y, event); +} + +function throttled(fn, thisArg) { + var ticking = false; + var args = []; + + return function() { + args = Array.prototype.slice.call(arguments); + thisArg = thisArg || this; + + if (!ticking) { + ticking = true; + helpers$1.requestAnimFrame.call(window, function() { + ticking = false; + fn.apply(thisArg, args); + }); + } + }; +} + +function createDiv(cls) { + var el = document.createElement('div'); + el.className = cls || ''; + return el; +} + +// Implementation based on https://github.com/marcj/css-element-queries +function createResizer(handler) { + var maxSize = 1000000; + + // NOTE(SB) Don't use innerHTML because it could be considered unsafe. + // https://github.com/chartjs/Chart.js/issues/5902 + var resizer = createDiv(CSS_SIZE_MONITOR); + var expand = createDiv(CSS_SIZE_MONITOR + '-expand'); + var shrink = createDiv(CSS_SIZE_MONITOR + '-shrink'); + + expand.appendChild(createDiv()); + shrink.appendChild(createDiv()); + + resizer.appendChild(expand); + resizer.appendChild(shrink); + resizer._reset = function() { + expand.scrollLeft = maxSize; + expand.scrollTop = maxSize; + shrink.scrollLeft = maxSize; + shrink.scrollTop = maxSize; + }; + + var onScroll = function() { + resizer._reset(); + handler(); + }; + + addListener(expand, 'scroll', onScroll.bind(expand, 'expand')); + addListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink')); + + return resizer; +} + +// https://davidwalsh.name/detect-node-insertion +function watchForRender(node, handler) { + var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); + var proxy = expando.renderProxy = function(e) { + if (e.animationName === CSS_RENDER_ANIMATION) { + handler(); + } + }; + + helpers$1.each(ANIMATION_START_EVENTS, function(type) { + addListener(node, type, proxy); + }); + + // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class + // is removed then added back immediately (same animation frame?). Accessing the + // `offsetParent` property will force a reflow and re-evaluate the CSS animation. + // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics + // https://github.com/chartjs/Chart.js/issues/4737 + expando.reflow = !!node.offsetParent; + + node.classList.add(CSS_RENDER_MONITOR); +} + +function unwatchForRender(node) { + var expando = node[EXPANDO_KEY] || {}; + var proxy = expando.renderProxy; + + if (proxy) { + helpers$1.each(ANIMATION_START_EVENTS, function(type) { + removeListener(node, type, proxy); + }); + + delete expando.renderProxy; + } + + node.classList.remove(CSS_RENDER_MONITOR); +} + +function addResizeListener(node, listener, chart) { + var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); + + // Let's keep track of this added resizer and thus avoid DOM query when removing it. + var resizer = expando.resizer = createResizer(throttled(function() { + if (expando.resizer) { + var container = chart.options.maintainAspectRatio && node.parentNode; + var w = container ? container.clientWidth : 0; + listener(createEvent('resize', chart)); + if (container && container.clientWidth < w && chart.canvas) { + // If the container size shrank during chart resize, let's assume + // scrollbar appeared. So we resize again with the scrollbar visible - + // effectively making chart smaller and the scrollbar hidden again. + // Because we are inside `throttled`, and currently `ticking`, scroll + // events are ignored during this whole 2 resize process. + // If we assumed wrong and something else happened, we are resizing + // twice in a frame (potential performance issue) + listener(createEvent('resize', chart)); + } + } + })); + + // 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() { + if (expando.resizer) { + var container = node.parentNode; + if (container && container !== resizer.parentNode) { + container.insertBefore(resizer, container.firstChild); + } + + // The container size might have changed, let's reset the resizer state. + resizer._reset(); + } + }); +} + +function removeResizeListener(node) { + var expando = node[EXPANDO_KEY] || {}; + var resizer = expando.resizer; + + delete expando.resizer; + unwatchForRender(node); + + if (resizer && resizer.parentNode) { + resizer.parentNode.removeChild(resizer); + } +} + +/** + * Injects CSS styles inline if the styles are not already present. + * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the @@ -81,7 +84,7 @@ const previewImage = previewContainer.querySelector('.image-preview__image'); const previewDefaultText = previewContainer.querySelector('.image-preview__default-text'); - fileInput.addEventListener('change', function() { + fileInput.addEventListener('change', function () { const file = this.files[0] if (file) { @@ -90,7 +93,7 @@ previewDefaultText.style.display = "none"; previewImage.style.display = "block"; - reader.addEventListener('load', function() { + reader.addEventListener('load', function () { console.log(this) previewImage.setAttribute('src', this.result); }) diff --git a/views/seller/editProduct.handlebars b/views/seller/editProduct.handlebars index cf21e4d3..59e93836 100644 --- a/views/seller/editProduct.handlebars +++ b/views/seller/editProduct.handlebars @@ -1,5 +1,5 @@
-
+

Edit Product {{product.name}}

@@ -37,15 +37,15 @@
- -
- Image Preview - - Image Preview - + +
+ + Poster +
- + {{!-- --}}
@@ -55,14 +55,14 @@ .image-preview { width:300px; min-height: 100px; - border: 2px solid #dddddd; + border: 1px solid #000; margin-top: 15px; display: flex; align-items: center; justify-content: center; font-weight: bold; - color: #cccccc; + color: #6c757d; } .image-preview__image { diff --git a/views/seller/reports.handlebars b/views/seller/reports.handlebars new file mode 100644 index 00000000..4ec13623 --- /dev/null +++ b/views/seller/reports.handlebars @@ -0,0 +1,19 @@ + +
+
+
Bar Chart
+
+
+
+ +
+
+ Styling for the bar chart can be found in the + /js/demo/chart-bar-demo.js file. +
+
+ + + + + \ No newline at end of file diff --git a/views/seller/sellerHomePage.handlebars b/views/seller/sellerHomePage.handlebars index a29be31c..3d56d670 100644 --- a/views/seller/sellerHomePage.handlebars +++ b/views/seller/sellerHomePage.handlebars @@ -37,7 +37,7 @@
-

Dashboard

+

Reports

Icon Goes here! diff --git a/views/seller/viewProducts.handlebars b/views/seller/viewProducts.handlebars index 5155bbdc..a41208d3 100644 --- a/views/seller/viewProducts.handlebars +++ b/views/seller/viewProducts.handlebars @@ -37,22 +37,22 @@ {{#each products}} - Item Image + Item Image {{this.sku}} {{this.name}} ${{this.price}} {{this.quantity}} - + - + - + {{/each}} @@ -70,18 +70,18 @@ {{#each products}} -
-

Forget Password?

Don't have an account? Register here now!

-

Forgot Password? Reset Password

+

Forgot Password? Reset Password

Register Or Login with Google

diff --git a/views/user/register.handlebars b/views/user/register.handlebars index b5d19d29..140cdc0c 100644 --- a/views/user/register.handlebars +++ b/views/user/register.handlebars @@ -109,7 +109,7 @@ img{

Have an account? Login

-

Forgot Password? Reset Password

+

Forgot Password? Reset Password

Register Or Login with Google

From ef616a4febe98903ab0af535346b656a31c616cd Mon Sep 17 00:00:00 2001 From: bob Date: Thu, 28 Jul 2022 15:52:16 +0800 Subject: [PATCH 21/80] another --- routes/user.js | 2 +- server.js | 7 +++++++ views/backupcodes.handlebars | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/routes/user.js b/routes/user.js index fff5cd5f..abb8c5d0 100644 --- a/routes/user.js +++ b/routes/user.js @@ -319,7 +319,7 @@ router.post('/forgetpasswordchange', async (req, res) => { return res.redirect('/login') }) router.get("/backupcodes", async (req, res) => { - temp = (await TempUser.findAll()).map((x) => x.dataValues) + temp = (await TempUser.findAll({where: { email: req.user.email }})).map((x) => x.dataValues) res.render('backupcodes', { temp }) }) diff --git a/server.js b/server.js index cd1319be..bc0db337 100644 --- a/server.js +++ b/server.js @@ -134,6 +134,13 @@ app.engine( return true; } return false; + }, + tempuserchecker(i, n){ + console.log(i, n) + if (String(i) == String(n)){ + return true; + } + return false; } }, diff --git a/views/backupcodes.handlebars b/views/backupcodes.handlebars index fe0603ca..fd3f50a9 100644 --- a/views/backupcodes.handlebars +++ b/views/backupcodes.handlebars @@ -39,6 +39,7 @@ class="bi bi-box-arrow-left" title="Profile">

These are your TIT backup codes for account {{user.email}}.
Keep them safe.

+ {{#each temp}} {{#if (backupcodechecker this.backupcode1check)}}

{{this.backupcode1}}

From c58d0a4ce185ca2a6d065deb8a9ba2ca15051e96 Mon Sep 17 00:00:00 2001 From: Perry M Date: Thu, 28 Jul 2022 16:18:59 +0800 Subject: [PATCH 22/80] fixes --- models/Wishlist.js | 2 +- public/js/demo/chart-bar-demo.js | 111 +++++++++++++------------- public/scripts/cart.js | 1 + public/uploads/7/7-1658993712548.jpeg | Bin 0 -> 81242 bytes public/uploads/7/7-1658993778567.jpg | Bin 0 -> 1228 bytes public/uploads/7/7-1658993815380.jpg | Bin 0 -> 1228 bytes public/uploads/7/7-1658993841063.jpg | Bin 0 -> 2841 bytes public/uploads/7/7-1658995799240.jpeg | Bin 0 -> 81242 bytes routes/main.js | 1 + views/index.handlebars | 56 ++++--------- views/services/booking.handlebars | 6 +- views/shoppingCart.handlebars | 2 +- 12 files changed, 78 insertions(+), 101 deletions(-) create mode 100644 public/uploads/7/7-1658993712548.jpeg create mode 100644 public/uploads/7/7-1658993778567.jpg create mode 100644 public/uploads/7/7-1658993815380.jpg create mode 100644 public/uploads/7/7-1658993841063.jpg create mode 100644 public/uploads/7/7-1658995799240.jpeg diff --git a/models/Wishlist.js b/models/Wishlist.js index 800d2ef9..792f3284 100644 --- a/models/Wishlist.js +++ b/models/Wishlist.js @@ -8,7 +8,7 @@ class Wishlist extends sequelize.Model{ } Wishlist.init({ - id:{type: sequelize.INTEGER, autoIncrement: false, primaryKey: true}, + id:{type: sequelize.BIGINT, autoIncrement: false, primaryKey: true}, sku:{type: sequelize.INTEGER}, name: { type: sequelize.STRING }, description: { type: sequelize.STRING(2000) }, diff --git a/public/js/demo/chart-bar-demo.js b/public/js/demo/chart-bar-demo.js index 03efbe9e..133881fe 100644 --- a/public/js/demo/chart-bar-demo.js +++ b/public/js/demo/chart-bar-demo.js @@ -31,63 +31,62 @@ function number_format(number, decimals, dec_point, thousands_sep) { // Your Products Bar Chart var getInventoryData = $.get('/datapipeline/InventoryReport') var ctx6 = document.getElementById("InventoryReportBarchart"); -getInventoryData.done(function(data){ - var stock = [] - var name = [] - console.log(data.data) - data.data.forEach(element => { - stock.push(element["Stocks"]) - name.push(element["ProductName"]) - console.log(element["Stocks"]) - console.log("hi") - - }); - - var mybarChart = new Chart(ctx6, { - type: 'bar', - data: { - labels: name, - datasets: [{ - label: "Current Stock", - lineTension: 0.3, - backgroundColor: "rgba(78, 115, 223)", - borderColor: "rgba(78, 115, 223, 1)", - pointRadius: 3, - pointBackgroundColor: "rgba(78, 115, 223, 1)", - pointBorderColor: "rgba(78, 115, 223, 1)", - pointHoverRadius: 3, - pointHoverBackgroundColor: "rgba(78, 115, 223, 1)", - pointHoverBorderColor: "rgba(78, 115, 223, 1)", - pointHitRadius: 10, - pointBorderWidth: 2, - data: stock, - }], - }, - legend: { - display: false - }, - tooltips: { - backgroundColor: "rgb(255,255,255)", - bodyFontColor: "#858796", - titleMarginBottom: 10, - titleFontColor: '#6e707e', - titleFontSize: 14, - borderColor: '#dddfeb', - borderWidth: 1, - xPadding: 15, - yPadding: 15, - displayColors: false, - intersect: false, - mode: 'index', - caretPadding: 10, - callbacks: { - label: function (tooltipItem, chart) { - var datasetLabel = chart.datasets[tooltipItem.datasetIndex].label || ''; - return datasetLabel + " " + number_format(tooltipItem.yLabel); - } +getInventoryData.done(function (data) { + var stock = [] + var name = [] + console.log(data.data) + data.data.forEach(element => { + stock.push(element["Stocks"]) + name.push(element["ProductName"]) + console.log(element["Stocks"]) + console.log("hi") + + }); + + var mybarChart = new Chart(ctx6, { + type: 'bar', + data: { + labels: name, + datasets: [{ + label: "Current Stock", + lineTension: 0.3, + backgroundColor: "rgba(78, 115, 223)", + borderColor: "rgba(78, 115, 223, 1)", + pointRadius: 3, + pointBackgroundColor: "rgba(78, 115, 223, 1)", + pointBorderColor: "rgba(78, 115, 223, 1)", + pointHoverRadius: 3, + pointHoverBackgroundColor: "rgba(78, 115, 223, 1)", + pointHoverBorderColor: "rgba(78, 115, 223, 1)", + pointHitRadius: 10, + pointBorderWidth: 2, + data: stock, + }], + }, + legend: { + display: false + }, + tooltips: { + backgroundColor: "rgb(255,255,255)", + bodyFontColor: "#858796", + titleMarginBottom: 10, + titleFontColor: '#6e707e', + titleFontSize: 14, + borderColor: '#dddfeb', + borderWidth: 1, + xPadding: 15, + yPadding: 15, + displayColors: false, + intersect: false, + mode: 'index', + caretPadding: 10, + callbacks: { + label: function (tooltipItem, chart) { + var datasetLabel = chart.datasets[tooltipItem.datasetIndex].label || ''; + return datasetLabel + " " + number_format(tooltipItem.yLabel); } } } - }); + }) +}); -}) diff --git a/public/scripts/cart.js b/public/scripts/cart.js index 83ae4092..592f2b24 100644 --- a/public/scripts/cart.js +++ b/public/scripts/cart.js @@ -266,6 +266,7 @@ function wishList(element) { // element.classList.toggle("bxs-bookmark-heart") element.classList.add("bx-tada") var sku = element.value + console.log(sku) // $.post('wishlist', { // sku: sku diff --git a/public/uploads/7/7-1658993712548.jpeg b/public/uploads/7/7-1658993712548.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..c868e4122151dcf7a8048da2205e12935f54b160 GIT binary patch literal 81242 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 literal 0 HcmV?d00001 diff --git a/public/uploads/7/7-1658993778567.jpg b/public/uploads/7/7-1658993778567.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a96937edc1af3b1b2793cb852bd9fa73ea94b6e0 GIT binary patch literal 1228 zcmex=TY$7toaymDJWY*EKiL z)-~7F*3|}5K&)+{jRL@8AW0z7)z$ugfI*Oh;UU9AW=16jCP7AKLB{__7^Hy?WM%{c z1~_13VrF4wV+Tqa2msyB%*evY%)$(n21*JlvKSg|6cTm}OiU_jT*zA3#3rJ&$m!rk zpbjxqqd=M%nLy%#C{}>Q1^?e-;9+J2x`kPg!Jgso5vUa;QH);eTq@3&Fg@=3`m*=4 zq41JqkM`!T{_EaO%lF+o{mZ-CU$tdpO^;nq&fS>SxvKo~#Z|>KeC0#zykGujSYh^h z`-`nx>Sp|EJDl|7Ow8@Px3_Ii={!};i=N#0 z&PV@D%Z|LuS%Busb5C#dnx8K(%Ddk2ajxR|7U9s7^X|BpWURk&peao$S=22l;_7Dq zAK}YO18%U}zkT&~o#E5gUxI!U|1(5sE3Iss5*}*3-0$TzQ4cHK`<<88KeiXT`TS0= z`g_4oFK^~Ovob#Fe@4rk(E(vCWAxM{n{*F0^Q<#J+$JnfnC9ZB+2k0g!J?SL#G%p{ zSl<4*FDq*O;uyagt>3!kB~=gSMt|ZDNZuSi<9M$1zO%EC%#!&IHssdRh<@1%&!#No zbWvq+QDISK046AfH4~UtSC#a~6uWxtz4?0itQ7H$@oq`A%ip}Oyt3P@>a)b$FE8J0 zlxkQ2a~spvi}UUz7i+COUsiYa$idSs-m5Y@@AK$g?!3H1#7n55WdUbcu+|9$#>jhb zzFt0?*>ZHps#TdYXY@Sx=Z)QRYni#*-p{N0qRUpzz1Z=7uB_OaFQsSBJeK2iMM)tN z@%MjhPpq$hG$qYR%wcL!gKFpmu1<&5k&l<(pS<;Wa^L(qzoQ)ta94p`_k91+AG>6J zyNf^mcd6%LibI1(Ckq3I%d$YF^t1r@%{U9Qx-J| zHFSEZ2rwuLP4QTr^QZ9r$y<+Z{&)d|4{FM8Ip)%n(M6 z2~I*>TftTo-gw-P>ArJM*G+kDaanrP1-4lK*$-aT+~;*UI6e5;5BI=lKXUYVs^*&? qyi&POnvKUk|JlFgZ~y#fxVnQUV`JB%s>ov{hZB$;Kp~s`|4jg92$4Vl literal 0 HcmV?d00001 diff --git a/public/uploads/7/7-1658993815380.jpg b/public/uploads/7/7-1658993815380.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a96937edc1af3b1b2793cb852bd9fa73ea94b6e0 GIT binary patch literal 1228 zcmex=TY$7toaymDJWY*EKiL z)-~7F*3|}5K&)+{jRL@8AW0z7)z$ugfI*Oh;UU9AW=16jCP7AKLB{__7^Hy?WM%{c z1~_13VrF4wV+Tqa2msyB%*evY%)$(n21*JlvKSg|6cTm}OiU_jT*zA3#3rJ&$m!rk zpbjxqqd=M%nLy%#C{}>Q1^?e-;9+J2x`kPg!Jgso5vUa;QH);eTq@3&Fg@=3`m*=4 zq41JqkM`!T{_EaO%lF+o{mZ-CU$tdpO^;nq&fS>SxvKo~#Z|>KeC0#zykGujSYh^h z`-`nx>Sp|EJDl|7Ow8@Px3_Ii={!};i=N#0 z&PV@D%Z|LuS%Busb5C#dnx8K(%Ddk2ajxR|7U9s7^X|BpWURk&peao$S=22l;_7Dq zAK}YO18%U}zkT&~o#E5gUxI!U|1(5sE3Iss5*}*3-0$TzQ4cHK`<<88KeiXT`TS0= z`g_4oFK^~Ovob#Fe@4rk(E(vCWAxM{n{*F0^Q<#J+$JnfnC9ZB+2k0g!J?SL#G%p{ zSl<4*FDq*O;uyagt>3!kB~=gSMt|ZDNZuSi<9M$1zO%EC%#!&IHssdRh<@1%&!#No zbWvq+QDISK046AfH4~UtSC#a~6uWxtz4?0itQ7H$@oq`A%ip}Oyt3P@>a)b$FE8J0 zlxkQ2a~spvi}UUz7i+COUsiYa$idSs-m5Y@@AK$g?!3H1#7n55WdUbcu+|9$#>jhb zzFt0?*>ZHps#TdYXY@Sx=Z)QRYni#*-p{N0qRUpzz1Z=7uB_OaFQsSBJeK2iMM)tN z@%MjhPpq$hG$qYR%wcL!gKFpmu1<&5k&l<(pS<;Wa^L(qzoQ)ta94p`_k91+AG>6J zyNf^mcd6%LibI1(Ckq3I%d$YF^t1r@%{U9Qx-J| zHFSEZ2rwuLP4QTr^QZ9r$y<+Z{&)d|4{FM8Ip)%n(M6 z2~I*>TftTo-gw-P>ArJM*G+kDaanrP1-4lK*$-aT+~;*UI6e5;5BI=lKXUYVs^*&? qyi&POnvKUk|JlFgZ~y#fxVnQUV`JB%s>ov{hZB$;Kp~s`|4jg92$4Vl literal 0 HcmV?d00001 diff --git a/public/uploads/7/7-1658993841063.jpg b/public/uploads/7/7-1658993841063.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ace683e5785f3670d6eb157f5daa83841c64f43e GIT binary patch literal 2841 zcmb7Ec{CJk7k|c#Wn>w{Xl!NQ#)KgZjg%$J*!Lw(mL$CjBl~Lz5rd-9SX%5UOSWv$ zBB5riW9#)siBbv`Qus#SdB5}i``vraz0ZAq=XZbi+~=HUXJTgtAS}%+%m4%e0EF#e z=M_i-a4v2^Bocu@2=WUGBG~><6hsM$ilT&2D72KaG+JCi0)>*%lu=N@95`@b?|v;k zEv&9G_5cRL%gZakFR&MZKxs&!q%as97K_DUF&K8jV%W|;?k3&eh3@ZLcCEX6xf?M% zkAM&lm<6*?h%Dd`fCi|bd|Tr|5S^j}@sbarDH8<7@b zZv_VZH_AqY?2(!{VVNVcJ5zvM;_vvQHxoG&AvVnn@)#`2P zC#PFcWls|L#0MX zCFxMpNgJzbCf7Q8-RK!NYsd|Bd6OS)iE1@i8x%B|r;R`Li%a`uwqhkdw1L{d#Qj=4 zb1NG?=`j}Q;tiwm5c^9@opZ6o|tUp?4FFDhomrds){ zjyON84WI7IZ6RcFl&LC>UOw&(yX`vDp1HlJoAjuESm5K@A)d>jIXP7x+8@JpY68lW z>XCVz;X!{Xa9;e}Pn&JDM0~o&%7{6O|Ip%Lpf6uAe9e|K5m2*GP)Q z_6Fj5%vXix4%#ASqiAHIUbIAc9A@ok5btksyr@I4o zhW?fD$D5bxwsvEq7mPCpeJ|r*iA>x|^fv`PaKM*_qvuY_>L%B-{2y}`S4G+-mAlq< zSkait3iHnn8(kDuHqXXc`ao<$&eBCd_xLIb4oR`SiTMm4*l+8rS~^frcrN|5 zMBCvmXlnr$bE^G9%hbztzM5^TF~Dt%*d2*GPp>~avia)gkgNJpWAS`Z59S`)1irWs z<`@(5%|awe=hRSvX|ZJ*N47wsU$P>JQR>H8igYzJ=BkNJ6d>-z;SpF2qwLD-{dnSB zFl!P;#a(h|Y|s1ApF7R_vxsrxT%f;<-e{l8pAA)@rX?VyTXA3r*15MY>F9{>T(3YL zyjJ!Bd=n`#A@ky-8X#qZ6h1&S_Njy?XWWrrCiN)_sh3`?B9^Gp7i-Kaf^ykn1!6_* zrG7ggXjS$YZ~P0SF*I!qp?UR@^l6hl5S%+PO+)smc{$G>bC>r0iVljeW@E35Oiv$8 zs!qNa6GN#ML!nAkq{X>30iQ94Tcsl}M49HPMT!WEy$g%B6*xnyb^PnX$S6Lb4!~~h zi)|f7zVEO-@|JmZbV1&w3zr{rNr8%V(3>{1QZ~{PQKnMpeC7U%P*~C>JME*5u7<=A z_+3i6p2OO!i0RhQBY}n+yjfwl-ohR}x^DXApbtRvkYsM5jeNw^6mSZ;eI#;&Nlj4N z2p(VV!3foVe!NR#zIK!X4picQOi!bpb-wta&#i7?@TNs~dIxYt9P0lT9ch+kT5@d= z0A8c+WJOpXeKgd^2v?lsWYlQ=a41jFi?}+F7;n;XofpZn6&n0Hr<3pE656A3BbQ>q z$DSaC0?G!xM0)9Q>R8 zCalawh*qh_Zn6`_DjFj6{EgzSP*szOcsl2^E{@T4o*QL@O#2P|!MVtxL1wy(I`z=u zi$xCO1kAag}1M^?HOJ2gZulMnKT7x_6Frtz$Os z54il*rqwKeIb&Ci3-p&)wLVO&4@fsYMyt_=4Boh$zH4O~(pWsxbL&f0+~qVcB~_xc zgcYTd!l++Gc{)EntQ|mD{~K~-AKHKPflT^*ERqBAu;>DiiBWPpk&Eeq_Ee3SEyM2F8tXJk(fJxr-U;}l)MZ01#P6JbU+HH|5J zkhmo~CT?-hSs=PsA#DVr-MyAtn+a literal 0 HcmV?d00001 diff --git a/public/uploads/7/7-1658995799240.jpeg b/public/uploads/7/7-1658995799240.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..c868e4122151dcf7a8048da2205e12935f54b160 GIT binary patch literal 81242 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 literal 0 HcmV?d00001 diff --git a/routes/main.js b/routes/main.js index 5263cf66..7d2c5dab 100644 --- a/routes/main.js +++ b/routes/main.js @@ -177,6 +177,7 @@ router.post('/discount', ensureAuthenticated, async (req, res) => { router.post('/wishlist', ensureAuthenticated, async (req, res) => { var sku = req.body.sku var status = req.body.status + console.log(sku,status) checkProductinWishlist = await Wishlist.findOne({ where: { id: req.user.id + sku } }) product = await Product.findOne({ where: { sku: sku } }) diff --git a/views/index.handlebars b/views/index.handlebars index d6e18dc2..d6d2952c 100644 --- a/views/index.handlebars +++ b/views/index.handlebars @@ -2,49 +2,24 @@
-
-{{#each products}} -
-
- Card image cap -
- -
- -