generated from jmgiacalone/esp32-template
Functional.
This commit is contained in:
1 parent
03d58b549d
commit
6fffdc8743
7 files changed
+1520
-82
No files matched your search
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
/*!
|
||||
* Materialize v1.0.0 (http://materializecss.com)
|
||||
* Copyright 2014-2017 Materialize
|
||||
* MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
|
||||
*/
|
||||
.materialize-red{background-color:#e51c23 !important}.materialize-red-text{color:#e51c23 !important}.materialize-red.lighten-5{background-color:#fdeaeb !important}.materialize-red-text.text-lighten-5{color:#fdeaeb !important}.materialize-red.lighten-4{background-color:#f8c1c3 !important}.materialize-red-text.text-lighten-4{color:#f8c1c3 !important}.materialize-red.lighten-3{background-color:#f3989b !important}.materialize-red-text.text-lighten-3{color:#f3989b !important}.materialize-red.lighten-2{background-color:#ee6e73 !important}.materialize-red-text.text-lighten-2{color:#ee6e73 !important}.materialize-red.lighten-1{background-color:#ea454b !important}.materialize-red-text.text-lighten-1{color:#ea454b !important}.materialize-red.darken-1{background-color:#d0181e !important}.materialize-red-text.text-darken-1{color:#d0181e !important}.materialize-red.darken-2{background-color:#b9151b !important}.materialize-red-text.text-darken-2{color:#b9151b !important}.materialize-red.darken-3{background-color:#a21318 !important}.materialize-red-text.text-darken-3{color:#a21318 !important}.materialize-red.darken-4{background-color:#8b1014 !important}.materialize-red-text.text-darken-4{color:#8b1014 !important}.red{background-color:#F44336 !important}.red-text{color:#F44336 !important}.red.lighten-5{background-color:#FFEBEE !important}.red-text.text-lighten-5{color:#FFEBEE !important}.red.lighten-4{background-color:#FFCDD2 !important}.red-text.text-lighten-4{color:#FFCDD2 !important}.red.lighten-3{background-color:#EF9A9A !important}.red-text.text-lighten-3{color:#EF9A9A !important}.red.lighten-2{background-color:#E57373 !important}.red-text.text-lighten-2{color:#E57373 !important}.red.lighten-1{background-color:#EF5350 !important}.red-text.text-lighten-1{color:#EF5350 !important}.red.darken-1{background-color:#E53935 !important}.red-text.text-darken-1{color:#E53935 !important}.red.darken-2{background-color:#D32F2F !important}.red-text.text-darken-2{color:#D32F2F !important}.red.darken-3{background-color:#C62828 !important}.red-text.text-darken-3{color:#C62828 !important}.red.darken-4{background-color:#B71C1C !important}.red-text.text-darken-4{color:#B71C1C !important}.red.accent-1{background-color:#FF8A80 !important}.red-text.text-accent-1{color:#FF8A80 !important}.red.accent-2{background-color:#FF5252 !important}.red-text.text-accent-2{color:#FF5252 !important}.red.accent-3{background-color:#FF1744 !important}.red-text.text-accent-3{color:#FF1744 !important}.red.accent-4{background-color:#D50000 !important}.red-text.text-accent-4{color:#D50000 !important}.pink{background-color:#e91e63 !important}.pink-text{color:#e91e63 !important}.pink.lighten-5{background-color:#fce4ec !important}.pink-text.text-lighten-5{color:#fce4ec !important}.pink.lighten-4{background-color:#f8bbd0 !important}.pink-text.text-lighten-4{color:#f8bbd0 !important}.pink.lighten-3{background-color:#f48fb1 !important}.pink-text.text-lighten-3{color:#f48fb1 !important}.pink.lighten-2{background-color:#f06292 !important}.pink-text.text-lighten-2{color:#f06292 !important}.pink.lighten-1{background-color:#ec407a !important}.pink-text.text-lighten-1{color:#ec407a !important}.pink.darken-1{background-color:#d81b60 !important}.pink-text.text-darken-1{color:#d81b60 !important}.pink.darken-2{background-color:#c2185b !important}.pink-text.text-darken-2{color:#c2185b !important}.pink.darken-3{background-color:#ad1457 !important}.pink-text.text-darken-3{color:#ad1457 !important}.pink.darken-4{background-color:#880e4f !important}.pink-text.text-darken-4{color:#880e4f !important}.pink.accent-1{background-color:#ff80ab !important}.pink-text.text-accent-1{color:#ff80ab !important}.pink.accent-2{background-color:#ff4081 !important}.pink-text.text-accent-2{color:#ff4081 !important}.pink.accent-3{background-color:#f50057 !important}.pink-text.text-accent-3{color:#f50057 !important}.pink.accent-4{background-color:#c51162 !important}.pink-text.text-accent-4{color:#c51162 !important}.purple{background-color:#9c27b0 !important}.purple-text{color:#9c27b0 !important}.purple.lighten-5{background-color:#f3e5f5 !important}.purple-text.text-lighten-5{color:#f3e5f5 !important}.purple.lighten-4{background-color:#e1bee7 !important}.purple-text.text-lighten-4{color:#e1bee7 !important}.purple.lighten-3{background-color:#ce93d8 !important}.purple-text.text-lighten-3{color:#ce93d8 !important}.purple.lighten-2{background-color:#ba68c8 !important}.purple-text.text-lighten-2{color:#ba68c8 !important}.purple.lighten-1{background-color:#ab47bc !important}.purple-text.text-lighten-1{color:#ab47bc !important}.purple.darken-1{background-color:#8e24aa !important}.purple-text.text-darken-1{color:#8e24aa !important}.purple.darken-2{background-color:#7b1fa2 !important}.purple-text.text-darken-2{color:#7b1fa2 !important}.purple.darken-3{background-color:#6a1b9a !important}.purple-text.text-darken-3{color:#6a1b9a !important}.purple.darken-4{background-color:#4a148c !important}.purple-text.text-darkeLine truncated
|
||||
* Waves v0.6.0
|
||||
* http://fian.my.id/Waves
|
||||
*
|
||||
* Copyright 2014 Alfiana E. Sibuea and other contributors
|
||||
* Released under the MIT license
|
||||
* https://github.com/fians/Waves/blob/master/LICENSE
|
||||
*/.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;-webkit-transition:.3s ease-out;transition:.3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,0.2);-webkit-transition:all 0.7s ease-out;transition:all 0.7s ease-out;-webkit-transition-property:opacity, -webkit-transform;transition-property:opacity, -webkit-transform;transition-property:transform, opacity;transition-property:transform, opacity, -webkit-transform;-webkit-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,0.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,0.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,0.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,0.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,0.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,0.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,0.7)}.waves-effect input[type="button"],.waves-effect input[type="reset"],.waves-effect input[type="submit"]{border:0;font-style:normal;font-size:inherit;text-transform:inherit;background:none}.waves-effect img{position:relative;z-index:-1}.waves-notransition{-webkit-transition:none !important;transition:none !important}.waves-circle{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle, white 100%, black 100%)}.waves-input-wrapper{border-radius:0.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.waves-block{display:block}.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top, opacity}.modal:focus{outline:none}@media only screen and (max-width: 992px){.modal{width:80%}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%;text-align:right}.modal .modal-footer .btn,.modal .modal-footer .btn-large,.modal .modal-footer .btn-small,.modal .modal-footer .btn-flat{margin:6px 0}.modal-overlay{position:fixed;z-index:999;top:-25%;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,0.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom, opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:.5rem 0 1rem 0}.collapsible-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-tap-highlight-color:transparent;line-height:1.5;padding:1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header:focus{outline:0}.collapsible-header i{width:2rem;font-size:1.6rem;display:inline-block;text-align:center;margin-right:1rem}.keyboard-focused .collapsible-header:focus{background-color:#eee}.collapsible-body{display:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;box-sizing:border-box;padding:2rem}.sidenav .collapsible,.sidenav.fixed .collapsible{border:none;-webkit-box-shadow:none;box-shadow:none}.sidenav .collapsible li,.sidenav.fixed .collapsible li{padding:0}.sidenav .collapsible-header,.sidenav.fixed .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;padding:0 16px}.sidenav .collapsible-header:hover,.sidenav.fixed .collapsible-header:hover{background-color:rgba(0,0,0,0.05)}.sidenav .collapsible-header i,.sidenav.fixed .collapsible-header i{line-height:inherit}.sidenav .collapsible-body,.sidenav.fixed .collapsible-body{border:0;background-color:#fff}.sidenav .collapsible-body li a,.sidenav.fixed .collapsible-body li a{padding:0 23.5px 0 31px}.collapsible.popout{border:none;-webkit-box-shadow:none;box-shadow:none}.collapsible.popout>li{-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);margin:0 24px;-webkit-transition:margin 0.35s cubLine truncated
|
||||
+99
-15
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>eMAKER Printer Climate Control</title>
|
||||
<title>eMAKER Reflow Controller</title>
|
||||
<!--Import Google Icon Font-->
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
|
||||
<!--Let browser know website is optimized for mobile-->
|
||||
@@ -9,27 +9,111 @@
|
||||
<meta charset="utf-8" />
|
||||
<link type="text/css" rel="stylesheet" href="css/materialize.min.css" media="screen,projection" />
|
||||
<link rel="stylesheet" type="text/css" href="css/style.css" />
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico" />
|
||||
<link rel="icon" type="image/x-icon" href="emaker.ico" />
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-dragdata@0.1.0/dist/chartjs-plugin-dragData.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<!-- Header row-->
|
||||
<div id="header" class="row">
|
||||
<div class="col 6 logo">
|
||||
<img src="eMAKER.png" alt="eMAKER logo" />
|
||||
</div>
|
||||
<div class="col 6">
|
||||
<h5>Printer Climate Control</h5>
|
||||
<!-- Header row -->
|
||||
<div class="row">
|
||||
<div class="col 6 logo">
|
||||
<img src="eMAKER.png" alt="eMAKER" />
|
||||
</div>
|
||||
<div class="col 6">
|
||||
<h5>Oven control</h5>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Data tabs row -->
|
||||
<div class="row">
|
||||
<div class="card blue-grey darken-1 z-depth-3">
|
||||
<div class="card-tabs">
|
||||
<ul class="tabs tabs-transparent">
|
||||
<li class="tab col s3"><a href="#tabTemp">Temperature control</a>
|
||||
</li>
|
||||
<li class="tab col s3"><a href="#tabPID">Edit PID</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="card-content blue-grey darken-1">
|
||||
<div id="tabTemp" class="active">
|
||||
<div class="row">
|
||||
<div class="input-field col s3">
|
||||
<input disabled id="tempinfo" type="number" value="-1" />
|
||||
<label for="tempinfo">Temperature</label>
|
||||
</div>
|
||||
<div class="input-field col s3">
|
||||
<input disabled id="targetinfo" type="number" value="-1" />
|
||||
<label for="targetinfo">Target</label>
|
||||
</div>
|
||||
<div class="input-field col s3">
|
||||
<input disabled id="powerinfo" type="number" value="-1" />
|
||||
<label for="powerinfo">Power</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="input-field col s3">
|
||||
<input type="number" name="Target" id="target" />
|
||||
<label for="target">Target:</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="valign-wrapper">
|
||||
<h5><a class="waves-effect waves-light btn" id="btnTarget" onclick="setTarget()">Set</a></h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="tabPID">
|
||||
<div class="row">
|
||||
<div class="input-field col s3">
|
||||
<input type="number" name="Kp" id="kp" />
|
||||
<label for="kp">Kp:</label>
|
||||
</div>
|
||||
<div class="input-field col s3">
|
||||
<input type="number" name="Ki" id="ki" />
|
||||
<label for="ki">Ki:</label>
|
||||
</div>
|
||||
<div class="input-field col s3">
|
||||
<label for="kd">Kd:</label>
|
||||
<input type="number" name="Kd" id="kd" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="valign-wrapper">
|
||||
<h5><a class="waves-effect waves-light btn" id="btnPID" onclick="setPID()">Submit</a></h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Data row-->
|
||||
<!-- Graph row -->
|
||||
<div class="row">
|
||||
<div class="card">
|
||||
<div class="card-content">
|
||||
<a href="/wifimanager.html">WiFi</a>
|
||||
</div>
|
||||
|
||||
<div class="card blue-grey darken-1 z-depth-3">
|
||||
<div class="card-content white-text chart-container">
|
||||
<canvas id="myChart"></canvas>
|
||||
</div>
|
||||
<div class="card-action">
|
||||
<div class="row">
|
||||
<div class="input-field col s3">
|
||||
<input type="number" name="Xmax" id="xmax" />
|
||||
<label for="Xmax">Set overall time</label>
|
||||
</div>
|
||||
<div class="valign-wrapper col s3">
|
||||
<h5><a class="waves-effect waves-light btn tooltipped" data-position="bottom" data-tooltip="Set time period." id="btnXmax" onclick="setXmax()">Set</a></h5>
|
||||
</div>
|
||||
<div class="col s6">
|
||||
<div class="center-align">
|
||||
<h5><a class="teal waves-effect waves-light btn tooltipped" data-position="bottom" data-tooltip="Run temperature profile." id="btnRunProfile" onclick="runProfile()">Run</a></h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Footer row -->
|
||||
<div class="row">
|
||||
ESP32
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="js/materialize.min.js"></script>
|
||||
|
||||
Vendored
+985
@@ -0,0 +1,985 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="dns-prefetch" href="https://assets-cdn.github.com">
|
||||
<link rel="dns-prefetch" href="https://avatars0.githubusercontent.com">
|
||||
<link rel="dns-prefetch" href="https://avatars1.githubusercontent.com">
|
||||
<link rel="dns-prefetch" href="https://avatars2.githubusercontent.com">
|
||||
<link rel="dns-prefetch" href="https://avatars3.githubusercontent.com">
|
||||
<link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
|
||||
<link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
|
||||
|
||||
|
||||
|
||||
<link crossorigin="anonymous" media="all" integrity="sha512-lLo2nlsdl+bHLu6PGvC2j3wfP45RnK4wKQLiPnCDcuXfU38AiD+JCdMywnF3WbJC1jaxe3lAI6AM4uJuMFBLEw==" rel="stylesheet" href="https://assets-cdn.github.com/assets/frameworks-08fc49d3bd2694c870ea23d0906f3610.css" />
|
||||
<link crossorigin="anonymous" media="all" integrity="sha512-4bsutQdbWE5qcKS0bskmuRIZDiHn+kQ8XqWrj5TJLo8uttYTDt5Onp7bxAvepa2WAJl+tAtFzRgWnykPJ3zrhw==" rel="stylesheet" href="https://assets-cdn.github.com/assets/github-305db19fc42a0e30f095f7098e1b21a5.css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width">
|
||||
|
||||
<title>chartjs-plugin-dragData/chartjs-plugin-dragData.min.js at master · chrispahm/chartjs-plugin-dragData</title>
|
||||
<meta name="description" content="Draggable data points plugin for Chart.js. Contribute to chrispahm/chartjs-plugin-dragData development by creating an account on GitHub.">
|
||||
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
|
||||
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
|
||||
<meta property="fb:app_id" content="1401488693436528">
|
||||
|
||||
|
||||
<meta property="og:image" content="https://avatars3.githubusercontent.com/u/20703207?s=400&v=4" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="chrispahm/chartjs-plugin-dragData" /><meta property="og:url" content="https://github.com/chrispahm/chartjs-plugin-dragData" /><meta property="og:description" content="Draggable data points plugin for Chart.js. Contribute to chrispahm/chartjs-plugin-dragData development by creating an account on GitHub." />
|
||||
|
||||
<link rel="assets" href="https://assets-cdn.github.com/">
|
||||
<link rel="web-socket" href="wss://live.github.com/_sockets/VjI6MzAyMTM1MTQyOjgzNDMwNzdmOTFlMTI1NTYyMDAyNzVhMmRkODUyMWZlYTFlZjM3ZjRhODdiZTc0MDRhYTE5YWY0YTJmMjg3ZGU=--a01de6b7de7414d847b0e3c0ac1554ff09371108">
|
||||
<meta name="pjax-timeout" content="1000">
|
||||
<link rel="sudo-modal" href="/sessions/sudo_modal">
|
||||
<meta name="request-id" content="A2C8:59A8:581F51D:A16BDC4:5C090319" data-pjax-transient>
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="selected-link" value="repo_source" data-pjax-transient>
|
||||
|
||||
<meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
|
||||
<meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
|
||||
<meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc">
|
||||
|
||||
<meta name="octolytics-host" content="collector.githubapp.com" /><meta name="octolytics-app-id" content="github" /><meta name="octolytics-event-url" content="https://collector.githubapp.com/github-external/browser_event" /><meta name="octolytics-dimension-request_id" content="A2C8:59A8:581F51D:A16BDC4:5C090319" /><meta name="octolytics-dimension-region_edge" content="iad" /><meta name="octolytics-dimension-region_render" content="iad" /><meta name="octolytics-actor-id" content="353316" /><meta name="octolytics-actor-login" content="jmgiacalone" /><meta name="octolytics-actor-hash" content="9dff4d9dd9df5ba25f62548e0c475a7dadc47af82d33245bca30b14645a1da31" />
|
||||
<meta name="analytics-location" content="/<user-name>/<repo-name>/blob/show" data-pjax-transient="true" />
|
||||
|
||||
|
||||
|
||||
<meta name="google-analytics" content="UA-3769691-2">
|
||||
|
||||
<meta class="js-ga-set" name="userId" content="ced5d7e119eee542cf37fa77e52ce77a" %>
|
||||
|
||||
<meta class="js-ga-set" name="dimension1" content="Logged In">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="hostname" content="github.com">
|
||||
<meta name="user-login" content="jmgiacalone">
|
||||
|
||||
<meta name="expected-hostname" content="github.com">
|
||||
<meta name="js-proxy-site-detection-payload" content="ZDQyYzBlNDBmOGJmZGQ0MDc2ODk2ZTUyYmRkYmE0OTcwYWE1YzY4YTNjNjgxNDJlMmMzMWY1YjI4NTgyYzdhNHx7InJlbW90ZV9hZGRyZXNzIjoiOTAuMjUzLjE0NS4xMzIiLCJyZXF1ZXN0X2lkIjoiQTJDODo1OUE4OjU4MUY1MUQ6QTE2QkRDNDo1QzA5MDMxOSIsInRpbWVzdGFtcCI6MTU0NDA5NDQ5MCwiaG9zdCI6ImdpdGh1Yi5jb20ifQ==">
|
||||
|
||||
<meta name="enabled-features" content="DASHBOARD_V2_LAYOUT,DASHBOARD_V2_LAYOUT_OPT_IN,EXPLORE_DISCOVER_REPOSITORIES,UNIVERSE_BANNER,MARKETPLACE_PLAN_RESTRICTION_EDITOR,NOTIFY_ON_BLOCK,TIMELINE_COMMENT_UPDATES,ISSUE_TEMPLATES_PIONEER,RELATED_ISSUES,MARKETPLACE_INSIGHTS_V2">
|
||||
|
||||
<meta name="html-safe-nonce" content="71bf3c346ef06e2d8e4ed3c84f7cfb657deb6ea0">
|
||||
|
||||
<meta http-equiv="x-pjax-version" content="35976fc262c7c0487ce907894d83cf5d">
|
||||
|
||||
|
||||
<link href="https://github.com/chrispahm/chartjs-plugin-dragData/commits/master.atom" rel="alternate" title="Recent Commits to chartjs-plugin-dragData:master" type="application/atom+xml">
|
||||
|
||||
<meta name="go-import" content="github.com/chrispahm/chartjs-plugin-dragData git https://github.com/chrispahm/chartjs-plugin-dragData.git">
|
||||
|
||||
<meta name="octolytics-dimension-user_id" content="20703207" /><meta name="octolytics-dimension-user_login" content="chrispahm" /><meta name="octolytics-dimension-repository_id" content="115925271" /><meta name="octolytics-dimension-repository_nwo" content="chrispahm/chartjs-plugin-dragData" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="115925271" /><meta name="octolytics-dimension-repository_network_root_nwo" content="chrispahm/chartjs-plugin-dragData" /><meta name="octolytics-dimension-repository_explore_github_marketplace_ci_cta_shown" content="false" />
|
||||
|
||||
|
||||
<link rel="canonical" href="https://github.com/chrispahm/chartjs-plugin-dragData/blob/master/dist/chartjs-plugin-dragData.min.js" data-pjax-transient>
|
||||
|
||||
|
||||
<meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
|
||||
|
||||
<meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
|
||||
|
||||
<link rel="mask-icon" href="https://assets-cdn.github.com/pinned-octocat.svg" color="#000000">
|
||||
<link rel="icon" type="image/x-icon" class="js-site-favicon" href="https://assets-cdn.github.com/favicon.ico">
|
||||
|
||||
<meta name="theme-color" content="#1e2327">
|
||||
|
||||
|
||||
<meta name="u2f-support" content="true">
|
||||
|
||||
<link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="logged-in env-production page-blob">
|
||||
|
||||
|
||||
<div class="position-relative js-header-wrapper ">
|
||||
<a href="#start-of-content" tabindex="1" class="p-3 bg-blue text-white show-on-focus js-skip-to-content">Skip to content</a>
|
||||
<div id="js-pjax-loader-bar" class="pjax-loader-bar"><div class="progress"></div></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<header class="Header f5" role="banner">
|
||||
<div class="d-flex flex-justify-between px-3 ">
|
||||
<div class="d-flex flex-justify-between ">
|
||||
<div class="">
|
||||
<a class="header-logo-invertocat" href="https://github.com/" data-hotkey="g d" aria-label="Homepage" data-ga-click="Header, go to dashboard, icon:logo">
|
||||
<svg height="32" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="HeaderMenu d-flex flex-justify-between flex-auto">
|
||||
<nav class="d-flex" aria-label="Global">
|
||||
<div class="">
|
||||
<div class="header-search scoped-search site-scoped-search js-site-search position-relative js-jump-to"
|
||||
role="combobox"
|
||||
aria-owns="jump-to-results"
|
||||
aria-label="Search or jump to"
|
||||
aria-haspopup="listbox"
|
||||
aria-expanded="false"
|
||||
>
|
||||
<div class="position-relative">
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" data-scope-type="Repository" data-scope-id="115925271" data-scoped-search-url="/chrispahm/chartjs-plugin-dragData/search" data-unscoped-search-url="/search" action="/chrispahm/chartjs-plugin-dragData/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" />
|
||||
<label class="form-control header-search-wrapper header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center js-chromeless-input-container">
|
||||
<input type="text"
|
||||
class="form-control header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable"
|
||||
data-hotkey="s,/"
|
||||
name="q"
|
||||
value=""
|
||||
placeholder="Search or jump to…"
|
||||
data-unscoped-placeholder="Search or jump to…"
|
||||
data-scoped-placeholder="Search or jump to…"
|
||||
autocapitalize="off"
|
||||
aria-autocomplete="list"
|
||||
aria-controls="jump-to-results"
|
||||
aria-label="Search or jump to…"
|
||||
data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations#csrf-token=iIVPHPo5ktr/73npGna6sZKhk6fBY7/ywOx90aVi9lmYdYeRCGmiEej6N0Kiy4EVlVpQ6YRArddXQ78c2+Ry7Q=="
|
||||
spellcheck="false"
|
||||
autocomplete="off"
|
||||
>
|
||||
<input type="hidden" class="js-site-search-type-field" name="type" >
|
||||
<img src="https://assets-cdn.github.com/images/search-key-slash.svg" alt="" class="mr-2 header-search-key-slash">
|
||||
|
||||
<div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
|
||||
|
||||
<ul class="d-none js-jump-to-suggestions-template-container">
|
||||
|
||||
|
||||
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
|
||||
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="">
|
||||
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
|
||||
<svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
|
||||
<svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
|
||||
<svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
|
||||
</div>
|
||||
|
||||
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
|
||||
|
||||
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
|
||||
</div>
|
||||
|
||||
<div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
|
||||
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
|
||||
In this repository
|
||||
</span>
|
||||
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
|
||||
All GitHub
|
||||
</span>
|
||||
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
|
||||
</div>
|
||||
|
||||
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
|
||||
Jump to
|
||||
<span class="d-inline-block ml-1 v-align-middle">↵</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="d-none js-jump-to-no-results-template-container">
|
||||
<li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
|
||||
<span class="text-gray">No suggested jump to results</span>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container">
|
||||
|
||||
|
||||
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option">
|
||||
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="">
|
||||
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
|
||||
<svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
|
||||
<svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
|
||||
<svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
|
||||
</div>
|
||||
|
||||
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
|
||||
|
||||
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
|
||||
</div>
|
||||
|
||||
<div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
|
||||
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
|
||||
In this repository
|
||||
</span>
|
||||
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
|
||||
All GitHub
|
||||
</span>
|
||||
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
|
||||
</div>
|
||||
|
||||
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
|
||||
Jump to
|
||||
<span class="d-inline-block ml-1 v-align-middle">↵</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option">
|
||||
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="">
|
||||
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
|
||||
<svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
|
||||
<svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
|
||||
<svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
|
||||
</div>
|
||||
|
||||
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
|
||||
|
||||
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
|
||||
</div>
|
||||
|
||||
<div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
|
||||
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
|
||||
In this repository
|
||||
</span>
|
||||
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
|
||||
All GitHub
|
||||
</span>
|
||||
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
|
||||
</div>
|
||||
|
||||
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
|
||||
Jump to
|
||||
<span class="d-inline-block ml-1 v-align-middle">↵</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="d-flex flex-justify-center flex-items-center p-0 f5 js-jump-to-suggestion">
|
||||
<img src="https://assets-cdn.github.com/images/spinners/octocat-spinner-128.gif" alt="Octocat Spinner Icon" class="m-2" width="28">
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</label>
|
||||
</form> </div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<ul class="d-flex pl-2 flex-items-center text-bold list-style-none">
|
||||
<li>
|
||||
<a class="js-selected-navigation-item HeaderNavlink px-2" data-hotkey="g p" data-ga-click="Header, click, Nav menu - item:pulls context:user" aria-label="Pull requests you created" data-selected-links="/pulls /pulls/assigned /pulls/mentioned /pulls" href="/pulls">
|
||||
Pull requests
|
||||
</a> </li>
|
||||
<li>
|
||||
<a class="js-selected-navigation-item HeaderNavlink px-2" data-hotkey="g i" data-ga-click="Header, click, Nav menu - item:issues context:user" aria-label="Issues you created" data-selected-links="/issues /issues/assigned /issues/mentioned /issues" href="/issues">
|
||||
Issues
|
||||
</a> </li>
|
||||
<li class="position-relative">
|
||||
<a class="js-selected-navigation-item HeaderNavlink px-2" data-ga-click="Header, click, Nav menu - item:marketplace context:user" data-octo-click="marketplace_click" data-octo-dimensions="location:nav_bar" data-selected-links=" /marketplace" href="/marketplace">
|
||||
Marketplace
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="js-selected-navigation-item HeaderNavlink px-2" data-ga-click="Header, click, Nav menu - item:explore" data-selected-links="/explore /trending /trending/developers /integrations /integrations/feature/code /integrations/feature/collaborate /integrations/feature/ship showcases showcases_search showcases_landing /explore" href="/explore">
|
||||
Explore
|
||||
</a> </li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="d-flex">
|
||||
|
||||
<ul class="user-nav d-flex flex-items-center list-style-none" id="user-links">
|
||||
<li class="dropdown">
|
||||
<span class="d-inline-block px-2">
|
||||
|
||||
<a aria-label="You have unread notifications" class="notification-indicator tooltipped tooltipped-s js-socket-channel js-notification-indicator" data-hotkey="g n" data-ga-click="Header, go to notifications, icon:unread" data-channel="notification-changed:353316" href="/notifications">
|
||||
<span class="mail-status unread"></span>
|
||||
<svg class="octicon octicon-bell" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14 12v1H0v-1l.73-.58c.77-.77.81-2.55 1.19-4.42C2.69 3.23 6 2 6 2c0-.55.45-1 1-1s1 .45 1 1c0 0 3.39 1.23 4.16 5 .38 1.88.42 3.66 1.19 4.42l.66.58H14zm-7 4c1.11 0 2-.89 2-2H5c0 1.11.89 2 2 2z"/></svg>
|
||||
</a>
|
||||
</span>
|
||||
</li>
|
||||
|
||||
<li class="dropdown">
|
||||
<details class="details-overlay details-reset d-flex px-2 flex-items-center">
|
||||
<summary class="HeaderNavlink"
|
||||
aria-label="Create new…"
|
||||
data-ga-click="Header, create new, icon:add">
|
||||
<svg class="octicon octicon-plus float-left mr-1 mt-1" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 9H7v5H5V9H0V7h5V2h2v5h5v2z"/></svg>
|
||||
<span class="dropdown-caret mt-1"></span>
|
||||
</summary>
|
||||
<details-menu class="dropdown-menu dropdown-menu-sw">
|
||||
|
||||
<a role="menuitem" class="dropdown-item" href="/new" data-ga-click="Header, create new repository">
|
||||
New repository
|
||||
</a>
|
||||
|
||||
<a role="menuitem" class="dropdown-item" href="/new/import" data-ga-click="Header, import a repository">
|
||||
Import repository
|
||||
</a>
|
||||
|
||||
<a role="menuitem" class="dropdown-item" href="https://gist.github.com/" data-ga-click="Header, create new gist">
|
||||
New gist
|
||||
</a>
|
||||
|
||||
<a role="menuitem" class="dropdown-item" href="/organizations/new" data-ga-click="Header, create new organization">
|
||||
New organization
|
||||
</a>
|
||||
|
||||
|
||||
<div class="dropdown-divider"></div>
|
||||
<div class="dropdown-header">
|
||||
<span title="chrispahm/chartjs-plugin-dragData">This repository</span>
|
||||
</div>
|
||||
<a role="menuitem" class="dropdown-item" href="/chrispahm/chartjs-plugin-dragData/issues/new" data-ga-click="Header, create new issue">
|
||||
New issue
|
||||
</a>
|
||||
|
||||
|
||||
</details-menu>
|
||||
</details>
|
||||
</li>
|
||||
|
||||
<li class="dropdown">
|
||||
|
||||
<details class="details-overlay details-reset d-flex pl-2 flex-items-center">
|
||||
<summary class="HeaderNavlink name mt-1"
|
||||
aria-label="View profile and more"
|
||||
data-ga-click="Header, show menu, icon:avatar">
|
||||
<img alt="@jmgiacalone" class="avatar float-left mr-1" src="https://avatars2.githubusercontent.com/u/353316?s=40&v=4" height="20" width="20">
|
||||
<span class="dropdown-caret"></span>
|
||||
</summary>
|
||||
<details-menu class="dropdown-menu dropdown-menu-sw">
|
||||
<ul>
|
||||
<li class="header-nav-current-user css-truncate"><a role="menuitem" class="no-underline user-profile-link px-3 pt-2 pb-2 mb-n2 mt-n1 d-block" href="/jmgiacalone" data-ga-click="Header, go to profile, text:Signed in as">Signed in as <strong class="css-truncate-target">jmgiacalone</strong></a></li>
|
||||
<li class="dropdown-divider"></li>
|
||||
|
||||
|
||||
<li><a role="menuitem" class="dropdown-item" href="/jmgiacalone" data-ga-click="Header, go to profile, text:your profile">Your profile</a></li>
|
||||
<li><a role="menuitem" class="dropdown-item" href="/jmgiacalone?tab=repositories" data-ga-click="Header, go to repositories, text:your repositories">Your repositories</a></li>
|
||||
|
||||
|
||||
<li><a role="menuitem" class="dropdown-item" href="/jmgiacalone?tab=stars" data-ga-click="Header, go to starred repos, text:your stars">Your stars</a></li>
|
||||
<li><a role="menuitem" class="dropdown-item" href="https://gist.github.com/" data-ga-click="Header, your gists, text:your gists">Your gists</a></li>
|
||||
<li class="dropdown-divider"></li>
|
||||
<li><a role="menuitem" class="dropdown-item" href="https://help.github.com" data-ga-click="Header, go to help, text:help">Help</a></li>
|
||||
<li><a role="menuitem" class="dropdown-item" href="/settings/profile" data-ga-click="Header, go to settings, icon:settings">Settings</a></li>
|
||||
<li>
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="logout-form" action="/logout" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="Dvo5KvvMbZKWObcDKWP0zDKPg53ZddYuWhjIJUA0lTXnP+gnAha1sLAMKm+/SW1bLYYhAUfbo5EaElXUX0uO8w==" />
|
||||
<button type="submit" class="dropdown-item dropdown-signout" data-ga-click="Header, sign out, icon:logout" role="menuitem">
|
||||
Sign out
|
||||
</button>
|
||||
</form> </li>
|
||||
</ul>
|
||||
</details-menu>
|
||||
</details>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="sr-only right-0" action="/logout" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="PB6BY424Xbzrszb25esDzlUvfeiqi0ZnRvQjmLbkIwnV21BudGKFns2Gq5pzwZpZSibfdDQlM9gG/r5pqZs4zw==" />
|
||||
<button type="submit" class="dropdown-item dropdown-signout" data-ga-click="Header, sign out, icon:logout">
|
||||
Sign out
|
||||
</button>
|
||||
</form> </div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div id="start-of-content" class="show-on-focus"></div>
|
||||
|
||||
<div id="js-flash-container">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div role="main" class="application-main " data-commit-hovercards-enabled>
|
||||
<div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
|
||||
<div id="js-repo-pjax-container" data-pjax-container >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="pagehead repohead instapaper_ignore readability-menu experiment-repo-nav ">
|
||||
<div class="repohead-details-container clearfix container">
|
||||
|
||||
<ul class="pagehead-actions">
|
||||
<li>
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form data-remote="true" class="js-social-form js-social-container" action="/notifications/subscribe" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="dVWze9JDQHMeSNkXQMwixU8Inswmh5JyOfIgFpeCMdaCW+6KD0ib5kNhbqf/vITuZzNYCYbe8H6vukb+oe4ElQ==" /> <input type="hidden" name="repository_id" id="repository_id" value="115925271" class="form-control" />
|
||||
|
||||
<details class="details-reset details-overlay select-menu float-left">
|
||||
<summary class="btn btn-sm btn-with-count select-menu-button" data-ga-click="Repository, click Watch settings, action:blob#show">
|
||||
<span data-menu-button>
|
||||
<svg class="octicon octicon-eye v-align-text-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
|
||||
Watch
|
||||
</span>
|
||||
</summary>
|
||||
<details-menu class="select-menu-modal position-absolute mt-5" style="z-index: 99;">
|
||||
<div class="select-menu-header">
|
||||
<span class="select-menu-title">Notifications</span>
|
||||
</div>
|
||||
<div class="select-menu-list">
|
||||
<button type="submit" name="do" value="included" class="select-menu-item width-full" aria-checked="true" role="menuitemradio">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<div class="select-menu-item-text">
|
||||
<span class="select-menu-item-heading">Not watching</span>
|
||||
<span class="description">Be notified only when participating or @mentioned.</span>
|
||||
<span class="hidden-select-button-text" data-menu-button-contents>
|
||||
<svg class="octicon octicon-eye v-align-text-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
|
||||
Watch
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
|
||||
<button type="submit" name="do" value="release_only" class="select-menu-item width-full" aria-checked="false" role="menuitemradio">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<div class="select-menu-item-text">
|
||||
<span class="select-menu-item-heading">Releases only</span>
|
||||
<span class="description">Be notified of new releases, and when participating or @mentioned.</span>
|
||||
<span class="hidden-select-button-text" data-menu-button-contents>
|
||||
<svg class="octicon octicon-eye v-align-text-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
|
||||
Unwatch releases
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
|
||||
<button type="submit" name="do" value="subscribed" class="select-menu-item width-full" aria-checked="false" role="menuitemradio">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<div class="select-menu-item-text">
|
||||
<span class="select-menu-item-heading">Watching</span>
|
||||
<span class="description">Be notified of all conversations.</span>
|
||||
<span class="hidden-select-button-text" data-menu-button-contents>
|
||||
<svg class="octicon octicon-eye v-align-text-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
|
||||
Unwatch
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
|
||||
<button type="submit" name="do" value="ignore" class="select-menu-item width-full" aria-checked="false" role="menuitemradio">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<div class="select-menu-item-text">
|
||||
<span class="select-menu-item-heading">Ignoring</span>
|
||||
<span class="description">Never be notified.</span>
|
||||
<span class="hidden-select-button-text" data-menu-button-contents>
|
||||
<svg class="octicon octicon-mute v-align-text-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 2.81v10.38c0 .67-.81 1-1.28.53L3 10H1c-.55 0-1-.45-1-1V7c0-.55.45-1 1-1h2l3.72-3.72C7.19 1.81 8 2.14 8 2.81zm7.53 3.22l-1.06-1.06-1.97 1.97-1.97-1.97-1.06 1.06L11.44 8 9.47 9.97l1.06 1.06 1.97-1.97 1.97 1.97 1.06-1.06L13.56 8l1.97-1.97z"/></svg>
|
||||
Stop ignoring
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
</details-menu>
|
||||
</details>
|
||||
<a class="social-count js-social-count"
|
||||
href="/chrispahm/chartjs-plugin-dragData/watchers"
|
||||
aria-label="2 users are watching this repository">
|
||||
2
|
||||
</a>
|
||||
</form>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
<div class="js-toggler-container js-social-container starring-container ">
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="starred js-social-form" action="/chrispahm/chartjs-plugin-dragData/unstar" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="SHDMzOMoQf8/z6b1jC69jHUHVE3UQpY2EBroknmHycvEolSB/jiPfpQ4VGEEck3rxAe3M8r5dO2/zOOVQlEvZg==" />
|
||||
<input type="hidden" name="context" value="repository"></input>
|
||||
<button
|
||||
type="submit"
|
||||
class="btn btn-sm btn-with-count js-toggler-target"
|
||||
aria-label="Unstar this repository" title="Unstar chrispahm/chartjs-plugin-dragData"
|
||||
data-ga-click="Repository, click unstar button, action:blob#show; text:Unstar">
|
||||
<svg class="octicon octicon-star v-align-text-bottom" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z"/></svg>
|
||||
Unstar
|
||||
</button>
|
||||
<a class="social-count js-social-count" href="/chrispahm/chartjs-plugin-dragData/stargazers"
|
||||
aria-label="26 users starred this repository">
|
||||
26
|
||||
</a>
|
||||
</form>
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="unstarred js-social-form" action="/chrispahm/chartjs-plugin-dragData/star" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="3RZqt4St4J8F0H/Pz6dBXGuLg2tCOWACL3I476WS7EYVNYlL4DtnTy3Xw2ookmKmNLkBbb41ngY4LLGVfBkKPQ==" />
|
||||
<input type="hidden" name="context" value="repository"></input>
|
||||
<button
|
||||
type="submit"
|
||||
class="btn btn-sm btn-with-count js-toggler-target"
|
||||
aria-label="Star this repository" title="Star chrispahm/chartjs-plugin-dragData"
|
||||
data-ga-click="Repository, click star button, action:blob#show; text:Star">
|
||||
<svg class="octicon octicon-star v-align-text-bottom" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z"/></svg>
|
||||
Star
|
||||
</button>
|
||||
<a class="social-count js-social-count" href="/chrispahm/chartjs-plugin-dragData/stargazers"
|
||||
aria-label="26 users starred this repository">
|
||||
26
|
||||
</a>
|
||||
</form> </div>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="btn-with-count" action="/chrispahm/chartjs-plugin-dragData/fork" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="L6uDjxVakVO20HMhcKmPbCm5Uz17H6LVU1aeUOh2GBAShBXIr8IT7DRe72KnfXg+G/0BiC3tqtwFFDLNBra2Wg==" />
|
||||
<button
|
||||
type="submit"
|
||||
class="btn btn-sm btn-with-count"
|
||||
data-ga-click="Repository, show fork modal, action:blob#show; text:Fork"
|
||||
title="Fork your own copy of chrispahm/chartjs-plugin-dragData to your account"
|
||||
aria-label="Fork your own copy of chrispahm/chartjs-plugin-dragData to your account">
|
||||
<svg class="octicon octicon-repo-forked v-align-text-bottom" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
|
||||
Fork
|
||||
</button>
|
||||
</form>
|
||||
<a href="/chrispahm/chartjs-plugin-dragData/network/members" class="social-count"
|
||||
aria-label="5 users forked this repository">
|
||||
5
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h1 class="public ">
|
||||
<svg class="octicon octicon-repo" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
|
||||
<span class="author" itemprop="author"><a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=20703207" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/chrispahm">chrispahm</a></span><!--
|
||||
--><span class="path-divider">/</span><!--
|
||||
--><strong itemprop="name"><a data-pjax="#js-repo-pjax-container" href="/chrispahm/chartjs-plugin-dragData">chartjs-plugin-dragData</a></strong>
|
||||
|
||||
</h1>
|
||||
|
||||
</div>
|
||||
|
||||
<nav class="reponav js-repo-nav js-sidenav-container-pjax container"
|
||||
itemscope
|
||||
itemtype="http://schema.org/BreadcrumbList"
|
||||
aria-label="Repository"
|
||||
data-pjax="#js-repo-pjax-container">
|
||||
|
||||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||||
<a class="js-selected-navigation-item selected reponav-item" itemprop="url" data-hotkey="g c" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages /chrispahm/chartjs-plugin-dragData" href="/chrispahm/chartjs-plugin-dragData">
|
||||
<svg class="octicon octicon-code" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z"/></svg>
|
||||
<span itemprop="name">Code</span>
|
||||
<meta itemprop="position" content="1">
|
||||
</a> </span>
|
||||
|
||||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||||
<a itemprop="url" data-hotkey="g i" class="js-selected-navigation-item reponav-item" data-selected-links="repo_issues repo_labels repo_milestones /chrispahm/chartjs-plugin-dragData/issues" href="/chrispahm/chartjs-plugin-dragData/issues">
|
||||
<svg class="octicon octicon-issue-opened" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg>
|
||||
<span itemprop="name">Issues</span>
|
||||
<span class="Counter">1</span>
|
||||
<meta itemprop="position" content="2">
|
||||
</a> </span>
|
||||
|
||||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||||
<a data-hotkey="g p" itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_pulls checks /chrispahm/chartjs-plugin-dragData/pulls" href="/chrispahm/chartjs-plugin-dragData/pulls">
|
||||
<svg class="octicon octicon-git-pull-request" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
|
||||
<span itemprop="name">Pull requests</span>
|
||||
<span class="Counter">1</span>
|
||||
<meta itemprop="position" content="3">
|
||||
</a> </span>
|
||||
|
||||
|
||||
<a data-hotkey="g b" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /chrispahm/chartjs-plugin-dragData/projects" href="/chrispahm/chartjs-plugin-dragData/projects">
|
||||
<svg class="octicon octicon-project" viewBox="0 0 15 16" version="1.1" width="15" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
|
||||
Projects
|
||||
<span class="Counter" >0</span>
|
||||
</a>
|
||||
|
||||
<a class="js-selected-navigation-item reponav-item" data-hotkey="g w" data-selected-links="repo_wiki /chrispahm/chartjs-plugin-dragData/wiki" href="/chrispahm/chartjs-plugin-dragData/wiki">
|
||||
<svg class="octicon octicon-book" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3 5h4v1H3V5zm0 3h4V7H3v1zm0 2h4V9H3v1zm11-5h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm2-6v9c0 .55-.45 1-1 1H9.5l-1 1-1-1H2c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h5.5l1 1 1-1H15c.55 0 1 .45 1 1zm-8 .5L7.5 3H2v9h6V3.5zm7-.5H9.5l-.5.5V12h6V3z"/></svg>
|
||||
Wiki
|
||||
</a>
|
||||
<a class="js-selected-navigation-item reponav-item" data-selected-links="repo_graphs repo_contributors dependency_graph pulse alerts security /chrispahm/chartjs-plugin-dragData/pulse" href="/chrispahm/chartjs-plugin-dragData/pulse">
|
||||
<svg class="octicon octicon-graph" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4 0H7V3h2v10zm4 0h-2V6h2v7z"/></svg>
|
||||
Insights
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container new-discussion-timeline experiment-repo-nav ">
|
||||
<div class="repository-content ">
|
||||
|
||||
|
||||
|
||||
|
||||
<a class="d-none js-permalink-shortcut" data-hotkey="y" href="/chrispahm/chartjs-plugin-dragData/blob/dca9453b0a7c31897d3d9b8a96b23582efcddf81/dist/chartjs-plugin-dragData.min.js">Permalink</a>
|
||||
|
||||
<!-- blob contrib key: blob_contributors:v21:c34db7f3d7fe528a8f7d81b329dcf681 -->
|
||||
|
||||
|
||||
|
||||
<div class="file-navigation">
|
||||
|
||||
<div class="select-menu branch-select-menu js-menu-container js-select-menu float-left">
|
||||
<button class=" btn btn-sm select-menu-button js-menu-target css-truncate" data-hotkey="w"
|
||||
|
||||
type="button" aria-label="Switch branches or tags" aria-expanded="false" aria-haspopup="true">
|
||||
<i>Branch:</i>
|
||||
<span class="js-select-button css-truncate-target">master</span>
|
||||
</button>
|
||||
|
||||
<div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax>
|
||||
|
||||
<div class="select-menu-modal">
|
||||
<div class="select-menu-header">
|
||||
<svg class="octicon octicon-x js-menu-close" role="img" aria-label="Close" viewBox="0 0 12 16" version="1.1" width="12" height="16"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
|
||||
<span class="select-menu-title">Switch branches/tags</span>
|
||||
</div>
|
||||
|
||||
<tab-container>
|
||||
<div class="select-menu-filters">
|
||||
<div class="select-menu-text-filter">
|
||||
<input type="text" aria-label="Filter branches/tags" id="context-commitish-filter-field" class="form-control js-filterable-field js-navigation-enable" placeholder="Filter branches/tags">
|
||||
</div>
|
||||
<div class="select-menu-tabs" role="tablist">
|
||||
<ul>
|
||||
<li class="select-menu-tab">
|
||||
<button type="button" class="select-menu-tab-nav" data-filter-placeholder="Filter branches/tags" role="tab" aria-selected="true">Branches</button>
|
||||
</li>
|
||||
<li class="select-menu-tab">
|
||||
<button type="button" class="select-menu-tab-nav" data-filter-placeholder="Find a tag…" role="tab">Tags</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-list" role="tabpanel">
|
||||
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
|
||||
|
||||
|
||||
<a class="select-menu-item js-navigation-item js-navigation-open selected"
|
||||
href="/chrispahm/chartjs-plugin-dragData/blob/master/dist/chartjs-plugin-dragData.min.js"
|
||||
data-name="master"
|
||||
data-skip-pjax="true"
|
||||
rel="nofollow">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
|
||||
master
|
||||
</span>
|
||||
</a>
|
||||
<a class="select-menu-item js-navigation-item js-navigation-open "
|
||||
href="/chrispahm/chartjs-plugin-dragData/blob/minorFixes/dist/chartjs-plugin-dragData.min.js"
|
||||
data-name="minorFixes"
|
||||
data-skip-pjax="true"
|
||||
rel="nofollow">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
|
||||
minorFixes
|
||||
</span>
|
||||
</a>
|
||||
<a class="select-menu-item js-navigation-item js-navigation-open "
|
||||
href="/chrispahm/chartjs-plugin-dragData/blob/radar/dist/chartjs-plugin-dragData.min.js"
|
||||
data-name="radar"
|
||||
data-skip-pjax="true"
|
||||
rel="nofollow">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
|
||||
radar
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-no-results">Nothing to show</div>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-list" role="tabpanel" hidden>
|
||||
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
|
||||
|
||||
|
||||
<a class="select-menu-item js-navigation-item js-navigation-open "
|
||||
href="/chrispahm/chartjs-plugin-dragData/tree/v0.0.3/dist/chartjs-plugin-dragData.min.js"
|
||||
data-name="v0.0.3"
|
||||
data-skip-pjax="true"
|
||||
rel="nofollow">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<span class="select-menu-item-text css-truncate-target" title="v0.0.3">
|
||||
v0.0.3
|
||||
</span>
|
||||
</a>
|
||||
<a class="select-menu-item js-navigation-item js-navigation-open "
|
||||
href="/chrispahm/chartjs-plugin-dragData/tree/v0.0.2/dist/chartjs-plugin-dragData.min.js"
|
||||
data-name="v0.0.2"
|
||||
data-skip-pjax="true"
|
||||
rel="nofollow">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<span class="select-menu-item-text css-truncate-target" title="v0.0.2">
|
||||
v0.0.2
|
||||
</span>
|
||||
</a>
|
||||
<a class="select-menu-item js-navigation-item js-navigation-open "
|
||||
href="/chrispahm/chartjs-plugin-dragData/tree/0.0.4/dist/chartjs-plugin-dragData.min.js"
|
||||
data-name="0.0.4"
|
||||
data-skip-pjax="true"
|
||||
rel="nofollow">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<span class="select-menu-item-text css-truncate-target" title="0.0.4">
|
||||
0.0.4
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-no-results">Nothing to show</div>
|
||||
</div>
|
||||
</tab-container>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="BtnGroup float-right">
|
||||
<a href="/chrispahm/chartjs-plugin-dragData/find/master"
|
||||
class="js-pjax-capture-input btn btn-sm BtnGroup-item"
|
||||
data-pjax
|
||||
data-hotkey="t">
|
||||
Find file
|
||||
</a>
|
||||
<clipboard-copy for="blob-path" class="btn btn-sm BtnGroup-item">
|
||||
Copy path
|
||||
</clipboard-copy>
|
||||
</div>
|
||||
<div id="blob-path" class="breadcrumb">
|
||||
<span class="repo-root js-repo-root"><span class="js-path-segment"><a data-pjax="true" href="/chrispahm/chartjs-plugin-dragData"><span>chartjs-plugin-dragData</span></a></span></span><span class="separator">/</span><span class="js-path-segment"><a data-pjax="true" href="/chrispahm/chartjs-plugin-dragData/tree/master/dist"><span>dist</span></a></span><span class="separator">/</span><strong class="final-path">chartjs-plugin-dragData.min.js</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<include-fragment src="/chrispahm/chartjs-plugin-dragData/contributors/master/dist/chartjs-plugin-dragData.min.js" class="commit-tease commit-loader">
|
||||
<div>
|
||||
Fetching contributors…
|
||||
</div>
|
||||
|
||||
<div class="commit-tease-contributors">
|
||||
<img alt="" class="loader-loading float-left" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32-EAF2F5.gif" width="16" height="16" />
|
||||
<span class="loader-error">Cannot retrieve contributors at this time</span>
|
||||
</div>
|
||||
</include-fragment>
|
||||
|
||||
|
||||
<div class="file ">
|
||||
<div class="file-header">
|
||||
<div class="file-actions">
|
||||
|
||||
|
||||
<div class="BtnGroup">
|
||||
<a id="raw-url" class="btn btn-sm BtnGroup-item" href="/chrispahm/chartjs-plugin-dragData/raw/master/dist/chartjs-plugin-dragData.min.js">Raw</a>
|
||||
<a class="btn btn-sm js-update-url-with-hash BtnGroup-item" data-hotkey="b" href="/chrispahm/chartjs-plugin-dragData/blame/master/dist/chartjs-plugin-dragData.min.js">Blame</a>
|
||||
<a rel="nofollow" class="btn btn-sm BtnGroup-item" href="/chrispahm/chartjs-plugin-dragData/commits/master/dist/chartjs-plugin-dragData.min.js">History</a>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="inline-form js-update-url-with-hash" action="/chrispahm/chartjs-plugin-dragData/edit/master/dist/chartjs-plugin-dragData.min.js" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="DxRTAwk3MLlgDenYwPHg45vQyOxetI3VY3dDYT0y4tUJBuWG7TZVapGthHX1UrcqPbD3/WfkwZbThbzUoYQy5w==" />
|
||||
<button class="btn-octicon tooltipped tooltipped-nw" type="submit"
|
||||
aria-label="Fork this project and edit the file" data-hotkey="e" data-disable-with>
|
||||
<svg class="octicon octicon-pencil" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 12v3h3l8-8-3-3-8 8zm3 2H1v-2h1v1h1v1zm10.3-9.3L12 6 9 3l1.3-1.3a.996.996 0 0 1 1.41 0l1.59 1.59c.39.39.39 1.02 0 1.41z"/></svg>
|
||||
</button>
|
||||
</form>
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="inline-form" action="/chrispahm/chartjs-plugin-dragData/delete/master/dist/chartjs-plugin-dragData.min.js" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="iA1qs3hGxWZp5pLxFDBIBjHtCcjVFqr0hE/mDlBTfGTBBIZheBztk3njWQWT5vFvyRmbqa3wkFSyoZItigF0Xw==" />
|
||||
<button class="btn-octicon btn-octicon-danger tooltipped tooltipped-nw" type="submit"
|
||||
aria-label="Fork this project and delete the file" data-disable-with>
|
||||
<svg class="octicon octicon-trashcan" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11 2H9c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1H2c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1v9c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 12H3V5h1v8h1V5h1v8h1V5h1v8h1V5h1v9zm1-10H2V3h9v1z"/></svg>
|
||||
</button>
|
||||
</form> </div>
|
||||
|
||||
<div class="file-info">
|
||||
10 lines (10 sloc)
|
||||
<span class="file-info-divider"></span>
|
||||
20.1 KB
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div itemprop="text" class="blob-wrapper data type-javascript ">
|
||||
<table class="highlight tab-size js-file-line-container" data-tab-size="8">
|
||||
<tr>
|
||||
<td id="L1" class="blob-num js-line-number" data-line-number="1"></td>
|
||||
<td id="LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>!</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="L2" class="blob-num js-line-number" data-line-number="2"></td>
|
||||
<td id="LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * chartjs-plugin-dragData.js</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="L3" class="blob-num js-line-number" data-line-number="3"></td>
|
||||
<td id="LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * http://chartjs.org/</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="L4" class="blob-num js-line-number" data-line-number="4"></td>
|
||||
<td id="LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Version: 0.0.3</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="L5" class="blob-num js-line-number" data-line-number="5"></td>
|
||||
<td id="LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * </span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="L6" class="blob-num js-line-number" data-line-number="6"></td>
|
||||
<td id="LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2017 Christoph Pahmeyer</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="L7" class="blob-num js-line-number" data-line-number="7"></td>
|
||||
<td id="LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under the MIT license</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="L8" class="blob-num js-line-number" data-line-number="8"></td>
|
||||
<td id="LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * https://github.com/chrispahm/chartjs-plugin-dragData/blob/master/LICENSE.md</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="L9" class="blob-num js-line-number" data-line-number="9"></td>
|
||||
<td id="LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="L10" class="blob-num js-line-number" data-line-number="10"></td>
|
||||
<td id="LC10" class="blob-code blob-code-inner js-file-line">!function(t){function n(r){if(e[r])return e[r].exports;var i=e[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}var e={};return n.m=t,n.c=e,n.p="",n(0)}([function(t,n,e){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,n){return function(){if(l.event){var e=l.event.sourceEvent;if(f=t.getElementAtEvent(e)[0]){if(t.data.datasets[f._datasetIndex].dragData===!1||f._yScale.options.dragData===!1)return void(f=null);h=f._yScale.id,p=f._xScale.id,"function"==typeof n&&f&&n(e,f)}}}}function o(t,n){return function(){if(f&&l.event){var e=l.event.sourceEvent,r=f._datasetIndex,i=f._index,o=void 0,u=void 0;e.touches?(o=t.scales[p].getValueForPixel(e.touches[0].clientX-t.canvas.getBoundingClientRect().left),u=t.scales[h].getValueForPixel(e.touches[0].clientY-t.canvas.getBoundingClientRect().top)):(o=t.scales[p].getValueForPixel(e.clientX-t.canvas.getBoundingClientRect().left),u=t.scales[h].getValueForPixel(e.clientY-t.canvas.getBoundingClientRect().top)),o=o>t.scales[p].max?t.scales[p].max:o,o=o<t.scales[p].min?t.scales[p].min:o,u=u>t.scales[h].max?t.scales[h].max:u,u=u<t.scales[h].min?t.scales[h].min:u,void 0!==t.data.datasets[r].data[i].x&&t.options.dragX&&(t.data.datasets[r].data[i].x=o),void 0!==t.data.datasets[r].data[i].y?t.data.datasets[r].data[i].y=u:t.data.datasets[r].data[i]=u,t.update(0),"function"==typeof n&&n(e,r,i,t.data.datasets[r].data[i])}}}function u(t,n){return function(){if("function"==typeof n&&f){var e=l.event.sourceEvent,r=f._datasetIndex,i=f._index,o=t.data.datasets[r].data[i];return n(e,r,i,o)}}}Object.defineProperty(n,"__esModule",{value:!0});var a=e(1),c=r(a),s=e(2),l=e(3),f=void 0,h=void 0,p=void 0,d={afterInit:function(t){t.options.dragData&&(0,l.select)(t.chart.canvas).call((0,s.drag)().container(t.chart.canvas).on("start",i(t,t.options.onDragStart)).on("drag",o(t,t.options.onDrag)).on("end",u(t,t.options.onDragEnd)))}};c.default.pluginService.register(d),n.default=d},function(t,n){t.exports=Chart},function(t,n,e){!function(t,r){r(n,e(3),e(4))}(this,function(t,n,e){"use strict";function r(){n.event.stopImmediatePropagation()}function i(){n.event.preventDefault(),n.event.stopImmediatePropagation()}function o(t){var e=t.document.documentElement,r=n.select(t).on("dragstart.drag",i,!0);"onselectstart"in e?r.on("selectstart.drag",i,!0):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function u(t,e){var r=t.document.documentElement,o=n.select(t).on("dragstart.drag",null);e&&(o.on("click.drag",i,!0),setTimeout(function(){o.on("click.drag",null)},0)),"onselectstart"in r?o.on("selectstart.drag",null):(r.style.MozUserSelect=r.__noselect,delete r.__noselect)}function a(t){return function(){return t}}function c(t,n,e,r,i,o,u,a,c,s){this.target=t,this.type=n,this.subject=e,this.identifier=r,this.active=i,this.x=o,this.y=u,this.dx=a,this.dy=c,this._=s}function s(){return!n.event.button}function l(){return this.parentNode}function f(t){return null==t?{x:n.event.x,y:n.event.y}:t}function h(){return"ontouchstart"in this}function p(){function t(t){t.on("mousedown.drag",p).filter(M).on("touchstart.drag",_).on("touchmove.drag",g).on("touchend.drag touchcancel.drag",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(){if(!A&&E.apply(this,arguments)){var t=m("mouse",S.apply(this,arguments),n.mouse,this,arguments);t&&(n.select(n.event.view).on("mousemove.drag",d,!0).on("mouseup.drag",v,!0),o(n.event.view),r(),b=!1,w=n.event.clientX,x=n.event.clientY,t("start"))}}function d(){if(i(),!b){var t=n.event.clientX-w,e=n.event.clientY-x;b=t*t+e*e>D}N.mouse("drag")}function v(){n.select(n.event.view).on("mousemove.drag mouseup.drag",null),u(n.event.view,b),i(),N.mouse("end")}function _(){if(E.apply(this,arguments)){var t,e,i=n.event.changedTouches,o=S.apply(this,arguments),u=i.length;for(t=0;t<u;++t)(e=m(i[t].identifier,o,n.touch,this,arguments))&&(r(),e("start"))}}function g(){var t,e,r=n.event.changedTouches,o=r.length;for(t=0;t<o;++t)(e=N[r[t].identifier])&&(i(),e("drag"))}function y(){var t,e,i=n.event.changedTouches,o=i.length;for(A&&clearTimeout(A),A=setTimeout(function(){A=null},500),t=0;t<o;++t)(e=N[i[t].identifier])&&(r(),e("end"))}function m(e,r,i,o,u){var a,s,l,f=i(r,e),h=C.copy();if(n.customEvent(new c(t,"beforestart",a,e,T,f[0],f[1],0,0,h),function(){return null!=(n.event.subjLine truncated
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<details class="details-reset details-overlay BlobToolbar position-absolute js-file-line-actions dropdown d-none" aria-hidden="true">
|
||||
<summary class="btn-octicon ml-0 px-2 p-0 bg-white border border-gray-dark rounded-1" aria-label="Inline file action toolbar">
|
||||
<svg class="octicon octicon-kebab-horizontal" viewBox="0 0 13 16" version="1.1" width="13" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zm5 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zM13 7.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/></svg>
|
||||
</summary>
|
||||
<details-menu>
|
||||
<ul class="BlobToolbar-dropdown dropdown-menu dropdown-menu-se mt-2">
|
||||
<li><clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-lines" style="cursor:pointer;" data-original-text="Copy lines">Copy lines</clipboard-copy></li>
|
||||
<li><clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-permalink" style="cursor:pointer;" data-original-text="Copy permalink">Copy permalink</clipboard-copy></li>
|
||||
<li><a class="dropdown-item js-update-url-with-hash" id="js-view-git-blame" role="menuitem" href="/chrispahm/chartjs-plugin-dragData/blame/dca9453b0a7c31897d3d9b8a96b23582efcddf81/dist/chartjs-plugin-dragData.min.js">View git blame</a></li>
|
||||
<li><a class="dropdown-item" id="js-new-issue" role="menuitem" href="/chrispahm/chartjs-plugin-dragData/issues/new">Open new issue</a></li>
|
||||
</ul>
|
||||
</details-menu>
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<details class="details-reset details-overlay details-overlay-dark">
|
||||
<summary data-hotkey="l" aria-label="Jump to line"></summary>
|
||||
<details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast linejump" aria-label="Jump to line">
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-jump-to-line-form Box-body d-flex" action="" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" />
|
||||
<input class="form-control flex-auto mr-3 linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line…" aria-label="Jump to line" autofocus>
|
||||
<button type="submit" class="btn" data-close-dialog>Go</button>
|
||||
</form> </details-dialog>
|
||||
</details>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="modal-backdrop js-touch-events"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer container-lg px-3" role="contentinfo">
|
||||
<div class="position-relative d-flex flex-justify-between pt-6 pb-2 mt-6 f6 text-gray border-top border-gray-light ">
|
||||
<ul class="list-style-none d-flex flex-wrap ">
|
||||
<li class="mr-3">© 2018 <span title="0.40884s from unicorn-59b88bc4c9-2qf9f">GitHub</span>, Inc.</li>
|
||||
<li class="mr-3"><a data-ga-click="Footer, go to terms, text:terms" href="https://github.com/site/terms">Terms</a></li>
|
||||
<li class="mr-3"><a data-ga-click="Footer, go to privacy, text:privacy" href="https://github.com/site/privacy">Privacy</a></li>
|
||||
<li class="mr-3"><a href="/security" data-ga-click="Footer, go to security, text:security">Security</a></li>
|
||||
<li class="mr-3"><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
|
||||
<li><a data-ga-click="Footer, go to help, text:help" href="https://help.github.com">Help</a></li>
|
||||
</ul>
|
||||
|
||||
<a aria-label="Homepage" title="GitHub" class="footer-octicon mr-lg-4" href="https://github.com">
|
||||
<svg height="24" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
|
||||
</a>
|
||||
<ul class="list-style-none d-flex flex-wrap ">
|
||||
<li class="mr-3"><a data-ga-click="Footer, go to contact, text:contact" href="https://github.com/contact">Contact GitHub</a></li>
|
||||
<li class="mr-3"><a href="https://github.com/pricing" data-ga-click="Footer, go to Pricing, text:Pricing">Pricing</a></li>
|
||||
<li class="mr-3"><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li>
|
||||
<li class="mr-3"><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li>
|
||||
<li class="mr-3"><a href="https://blog.github.com" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
|
||||
<li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<div class="d-flex flex-justify-center pb-6">
|
||||
<span class="f6 text-gray-light"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div id="ajax-error-message" class="ajax-error-message flash flash-error">
|
||||
<svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
|
||||
<button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
|
||||
<svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
|
||||
</button>
|
||||
You can’t perform that action at this time.
|
||||
</div>
|
||||
|
||||
|
||||
<script crossorigin="anonymous" integrity="sha512-WnyO4VoIUwWWQOmFLjYf4UGg/c1z9VlaLN8IMuiI3uMhhl6rejyThRdLPDyePeUPW6N+38OoBMs6AkqcvWALtA==" type="application/javascript" src="https://assets-cdn.github.com/assets/compat-b66b5d97b4442a01f057c74b091c4368.js"></script>
|
||||
<script crossorigin="anonymous" integrity="sha512-092+yG9tBLtacCexwGKGjTtkuRfZo0YUa8VrsiKW+Zh/nyA2j7MvftFLeoIor9CGQ9uDFYNIcbFDbbTPw7tV3Q==" type="application/javascript" src="https://assets-cdn.github.com/assets/frameworks-176ef037f2b2ddbb94c6810c7bce4ec9.js"></script>
|
||||
|
||||
<script crossorigin="anonymous" async="async" integrity="sha512-1Q7Ebz9Z7DgGT3k6SxGdGh9qknu6pCoRFuElPmXIGEb3N5iv9d4A1+yXS1Ccquw6OyXLJemfc5HAmtG6zYjgzw==" type="application/javascript" src="https://assets-cdn.github.com/assets/github-2def5cbbebe464dee8b3895e4c146e6a.js"></script>
|
||||
|
||||
|
||||
|
||||
<div class="js-stale-session-flash stale-session-flash flash flash-warn flash-banner d-none">
|
||||
<svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
|
||||
<span class="signed-in-tab-flash">You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
|
||||
<span class="signed-out-tab-flash">You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
|
||||
</div>
|
||||
<div class="facebox" id="facebox" style="display:none;">
|
||||
<div class="facebox-popup">
|
||||
<div class="facebox-content" role="dialog" aria-labelledby="facebox-header" aria-describedby="facebox-description">
|
||||
</div>
|
||||
<button type="button" class="facebox-close js-facebox-close" aria-label="Close modal">
|
||||
<svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="site-details-dialog">
|
||||
<details class="details-reset details-overlay details-overlay-dark lh-default text-gray-dark" open>
|
||||
<summary aria-haspopup="dialog" aria-label="Close dialog"></summary>
|
||||
<details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast">
|
||||
<button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
|
||||
<svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
|
||||
</button>
|
||||
<div class="octocat-spinner my-6 js-details-dialog-spinner"></div>
|
||||
</details-dialog>
|
||||
</details>
|
||||
</template>
|
||||
|
||||
<div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
|
||||
<div class="Popover-message Popover-message--bottom-left Popover-message--large Box box-shadow-large" style="width:360px;">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="hovercard-aria-description" class="sr-only">
|
||||
Press h to open a hovercard with more details.
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Materialize v1.0.0 (http://materializecss.com)
|
||||
* Copyright 2014-2017 Materialize
|
||||
* MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
|
||||
*/
|
||||
var _get=function t(e,i,n){null===e&&(e=Function.prototype);var s=Object.getOwnPropertyDescriptor(e,i);if(void 0===s){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,i,n)}if("value"in s)return s.value;var a=s.get;return void 0!==a?a.call(n):void 0},_createClass=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();function _possibleConstructorReturn(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}window.cash=function(){var i,o=document,a=window,t=Array.prototype,r=t.slice,n=t.filter,s=t.push,e=function(){},h=function(t){return typeof t==typeof e&&t.call},d=function(t){return"string"==typeof t},l=/^#[\w-]*$/,u=/^\.[\w-]*$/,c=/<.+>/,p=/^\w+$/;function v(t,e){e=e||o;var i=u.test(t)?e.getElementsByClassName(t.slice(1)):p.test(t)?e.getElementsByTagName(t):e.querySelectorAll(t);return i}function f(t){if(!i){var e=(i=o.implementation.createHTMLDocument(null)).createElement("base");e.href=o.location.href,i.head.appendChild(e)}return i.body.innerHTML=t,i.body.childNodes}function m(t){"loading"!==o.readyState?t():o.addEventListener("DOMContentLoaded",t)}function g(t,e){if(!t)return this;if(t.cash&&t!==a)return t;var i,n=t,s=0;if(d(t))n=l.test(t)?o.getElementById(t.slice(1)):c.test(t)?f(t):v(t,e);else if(h(t))return m(t),this;if(!n)return this;if(n.nodeType||n===a)this[0]=n,this.length=1;else for(i=this.length=n.length;s<i;s++)this[s]=n[s];return this}function _(t,e){return new g(t,e)}var y=_.fn=_.prototype=g.prototype={cash:!0,length:0,push:s,splice:t.splice,map:t.map,init:g};function k(t,e){for(var i=t.length,n=0;n<i&&!1!==e.call(t[n],t[n],n,t);n++);}function b(t,e){var i=t&&(t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector);return!!i&&i.call(t,e)}function w(e){return d(e)?b:e.cash?function(t){return e.is(t)}:function(t,e){return t===e}}function C(t){return _(r.call(t).filter(function(t,e,i){return i.indexOf(t)===e}))}Object.defineProperty(y,"constructor",{value:_}),_.parseHTML=f,_.noop=e,_.isFunction=h,_.isString=d,_.extend=y.extend=function(t){t=t||{};var e=r.call(arguments),i=e.length,n=1;for(1===e.length&&(t=this,n=0);n<i;n++)if(e[n])for(var s in e[n])e[n].hasOwnProperty(s)&&(t[s]=e[n][s]);return t},_.extend({merge:function(t,e){for(var i=+e.length,n=t.length,s=0;s<i;n++,s++)t[n]=e[s];return t.length=n,t},each:k,matches:b,unique:C,isArray:Array.isArray,isNumeric:function(t){return!isNaN(parseFloat(t))&&isFinite(t)}});var E=_.uid="_cash"+Date.now();function M(t){return t[E]=t[E]||{}}function O(t,e,i){return M(t)[e]=i}function x(t,e){var i=M(t);return void 0===i[e]&&(i[e]=t.dataset?t.dataset[e]:_(t).attr("data-"+e)),i[e]}y.extend({data:function(e,i){if(d(e))return void 0===i?x(this[0],e):this.each(function(t){return O(t,e,i)});for(var t in e)this.data(t,e[t]);return this},removeData:function(s){return this.each(function(t){return i=s,void((n=M(e=t))?delete n[i]:e.dataset?delete e.dataset[i]:_(e).removeAttr("data-"+name));var e,i,n})}});var L=/\S+/g;function T(t){return d(t)&&t.match(L)}function $(t,e){return t.classList?t.classList.contains(e):new RegExp("(^| )"+e+"( |$)","gi").test(t.className)}function B(t,e,i){t.classList?t.classList.add(e):i.indexOf(" "+e+" ")&&(t.className+=" "+e)}function D(t,e){t.classList?t.classList.remove(e):t.className=t.className.replace(e,"")}y.extend({addClass:function(t){var n=T(t);return n?this.each(function(e){var i=" "+e.className+" ";k(n,function(t){B(e,t,i)})}):this},attr:function(e,i){if(e){if(d(e))return void 0===i?this[0]?this[0].getAttribute?this[0].getAttribute(e):this[0][e]:void 0:this.each(function(t){t.setAttribute?t.setAttribute(e,i):t[e]=i});for(var t in e)this.attr(t,e[t]);return this}},hasClass:function(t){var e=!1,i=T(t);return i&&i.length&&this.each(function(t){return!(e=$(t,i[0]))}),e},prop:function(e,i){if(d(e))return void 0===i?this[0][e]:this.each(function(t){t[e]=i});for(var t in e)this.prop(t,e[t]);return this},removeAttr:function(e){return this.each(function(t){t.removeAttribute?t.removeAttribute(e):delete t[e]})},removeClass:function(t){if(!arguments.length)return this.attr("class","");var i=T(t);return i?this.each(function(e){k(i,function(t){D(e,t)})}):this},removeProp:function(e){return this.each(function(t){delete t[e]})},toggleClass:function(t,e){if(void 0!==e)return this[e?"addClassLine truncated
|
||||
+172
-47
@@ -1,37 +1,106 @@
|
||||
var oven_status = "";
|
||||
var _run = 0;
|
||||
var _elapsedTime = 0;
|
||||
|
||||
function getParams() {
|
||||
const url = '/paraams';
|
||||
fetch(url)
|
||||
.then((respone)=>{
|
||||
return respone.json();
|
||||
})
|
||||
.then((data)=>{
|
||||
document.getElementById('Iim').value = data.Iim || -1;
|
||||
document.getElementById('Imp').value = data.Imp || -1;
|
||||
document.getElementById('Tu').value = data.Tu || -1;
|
||||
document.getElementById('Tl').value = data.Tl || -1;
|
||||
M.updateTextFields();
|
||||
})
|
||||
}
|
||||
|
||||
function setParams() {
|
||||
|
||||
const data = new URLSearchParams();
|
||||
|
||||
data.append('Iim',document.getElementById('Iim').value);
|
||||
data.append('Imp',document.getElementById('Imp').value);
|
||||
data.append('Tu',document.getElementById('Tu').value);
|
||||
data.append('Tl',document.getElementById('Tl').value);
|
||||
|
||||
fetch('/params', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded'
|
||||
},
|
||||
body: data
|
||||
setInterval(function () {
|
||||
const url = '/status';
|
||||
fetch(url)
|
||||
.then((respone)=>{
|
||||
return respone.json();
|
||||
})
|
||||
.then((data)=>{
|
||||
document.getElementById("tempinfo").value = data.temp || -1;
|
||||
document.getElementById("targetinfo").value = data.target || -1;
|
||||
document.getElementById("powerinfo").value = data.power || -1;
|
||||
_run = data.runProfile || 0;
|
||||
_elapsedTime = data.elapsedTime || 0;
|
||||
M.updateTextFields();
|
||||
})
|
||||
|
||||
if(_run == 1){
|
||||
myChart.data.datasets[1].data.push({
|
||||
x:_elapsedTime / 1000,
|
||||
y:document.getElementById("tempinfo").value
|
||||
});
|
||||
myChart.update();
|
||||
}
|
||||
}, 4000);
|
||||
|
||||
function setXmax() {
|
||||
myChart.data.datasets[0].data[9].x = document.getElementById('xmax').value;
|
||||
myChart.update();
|
||||
}
|
||||
function setTarget() {
|
||||
const data = new URLSearchParams();
|
||||
data.append('value',document.getElementById('target').value);
|
||||
fetch('/target', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded'
|
||||
},
|
||||
body: data
|
||||
})
|
||||
}
|
||||
|
||||
function getPID() {
|
||||
const url = '/pid';
|
||||
fetch(url)
|
||||
.then((respone)=>{
|
||||
return respone.json();
|
||||
})
|
||||
.then((data)=>{
|
||||
document.getElementById('kp').value = data.kp || -1;
|
||||
document.getElementById('ki').value = data.ki || -1;
|
||||
document.getElementById('kd').value = data.kd || -1;
|
||||
M.updateTextFields();
|
||||
})
|
||||
}
|
||||
|
||||
function setPID() {
|
||||
const data = new URLSearchParams();
|
||||
data.append('kp', document.getElementById('kp').value);
|
||||
data.append('ki', document.getElementById('ki').value);
|
||||
data.append('kd', document.getElementById('kd').value);
|
||||
fetch('/pid', {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded'
|
||||
},
|
||||
body: data
|
||||
})
|
||||
}
|
||||
function runProfile() {
|
||||
var btn = document.getElementById("btnRunProfile");
|
||||
const data = new URLSearchParams();
|
||||
if(_run == 1){
|
||||
//stop profile
|
||||
_run = 0;
|
||||
btn.classList.remove("red");
|
||||
btn.classList.add("teal");
|
||||
btn.innerHTML = "Run";
|
||||
data.append('run', _run);
|
||||
}else{
|
||||
//run profile
|
||||
_run = 1;
|
||||
data.append('run', _run);
|
||||
data.append('profile', JSON.stringify(myChart.data.datasets[0].data));
|
||||
btn.classList.remove("teal");
|
||||
btn.classList.add("red");
|
||||
btn.innerHTML = "Stop";
|
||||
_elapsedTime = 0;
|
||||
myChart.data.datasets[1].data.length = 0;
|
||||
myChart.update();
|
||||
}
|
||||
|
||||
fetch('/profile', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded'
|
||||
},
|
||||
body: data
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
function joinNetwork() {
|
||||
|
||||
@@ -61,24 +130,80 @@ async function scanNetworks() {
|
||||
document.getElementById("networks").innerHTML = listHTML;
|
||||
}
|
||||
|
||||
setInterval(function () {
|
||||
aja()
|
||||
.url('/sensors')
|
||||
.on('success', function (data) {
|
||||
document.getElementById("tempinfo").value = data.temperature || -1;
|
||||
document.getElementById("humidityinfo").value = data.humidity || -1;
|
||||
document.getElementById("pressureinfo").value = data.pressure || -1;
|
||||
//document.getElementById("targetinfo").value = data.target.toFixed(2) || -1;
|
||||
_run = data.runProfile || 0;
|
||||
_elapsedTime = data.elapsedTime || 0;
|
||||
M.updateTextFields();
|
||||
})
|
||||
.go();
|
||||
}, 4000);
|
||||
var ctx = document.getElementById("myChart");
|
||||
Chart.defaults.global.defaultFontColor = 'red';
|
||||
var myChart = new Chart(ctx, {
|
||||
type: 'scatter',
|
||||
data: {
|
||||
datasets: [{
|
||||
label: 'Temperature profile',
|
||||
data: [{
|
||||
x: 0, y: 25
|
||||
}, {
|
||||
x: 90, y: 150
|
||||
}, {
|
||||
x: 270, y: 200
|
||||
}, {
|
||||
x: 300, y: 235
|
||||
}, {
|
||||
x: 330, y: 250
|
||||
}, {
|
||||
x: 360, y: 217
|
||||
}, {
|
||||
x: 420, y: 25
|
||||
}, {
|
||||
x: 480, y: 25
|
||||
}, {
|
||||
x: 540, y: 25
|
||||
}, {
|
||||
x: 600, y: 25
|
||||
}],
|
||||
lineTension: 0,
|
||||
showLine: true
|
||||
},{
|
||||
label: 'History',
|
||||
data: [{
|
||||
x:0, y:0
|
||||
}],
|
||||
lineTension: 0,
|
||||
showLine: true,
|
||||
pointBackgroundColor: 'red'
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
layout: {
|
||||
padding: {
|
||||
bottom: 20
|
||||
}
|
||||
},
|
||||
responsive: true,
|
||||
scales: {
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
beginAtZero:true,
|
||||
min: 0,
|
||||
max: 280
|
||||
}
|
||||
}]
|
||||
},
|
||||
dragData: true,
|
||||
dragX: true,
|
||||
onDragStart: function (event, element) {},
|
||||
onDrag: function (event, datasetIndex, index, value) {},
|
||||
onDragEnd: function (event, datasetIndex, index, value) {}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var ttOptions = {
|
||||
enterDelay: 500,
|
||||
inDuration: 300
|
||||
};
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var elems = document.querySelectorAll('.tooltipped');
|
||||
var instances = M.Tooltip.init(elems, ttOptions);
|
||||
getPID();
|
||||
M.AutoInit();
|
||||
getParams();
|
||||
// var elems = document.querySelectorAll('.tooltipped');
|
||||
// var instances = M.Tooltip.init(elems, ttOptions);
|
||||
});
|
||||
|
||||
+11
-2
@@ -26,6 +26,9 @@ lib_deps =
|
||||
adafruit/Adafruit GFX Library@^1.11.9
|
||||
adafruit/Adafruit SSD1306@^2.5.9
|
||||
adafruit/MAX6675 library@^1.1.2
|
||||
br3ttb/PID@^1.2.1
|
||||
bblanchon/ArduinoJson@^7.0.3
|
||||
dlloydev/QuickPID@^3.1.9
|
||||
|
||||
[env:lolin32]
|
||||
board = lolin32
|
||||
@@ -33,10 +36,13 @@ lib_deps =
|
||||
adafruit/Adafruit GFX Library@^1.11.9
|
||||
adafruit/Adafruit SSD1306@^2.5.9
|
||||
https://github.com/me-no-dev/ESPAsyncWebServer.git
|
||||
me-no-dev/AsyncTCP@^1.1.1
|
||||
me-no-dev/AsyncTCP
|
||||
ayushsharma82/AsyncElegantOTA@^2.2.7
|
||||
arduino-libraries/Arduino_JSON@^0.1.0
|
||||
arduino-libraries/Arduino_JSON
|
||||
adafruit/MAX6675 library@^1.1.2
|
||||
bblanchon/ArduinoJson@^7.0.3
|
||||
; dlloydev/QuickPID@^3.1.9
|
||||
br3ttb/PID@^1.2.1
|
||||
build_flags =
|
||||
'-D ELEGANTOTA_USE_ASYNC_WEBSERVER=1'
|
||||
monitor_speed = 115200
|
||||
@@ -51,3 +57,6 @@ lib_deps =
|
||||
adafruit/Adafruit GFX Library@^1.11.9
|
||||
adafruit/Adafruit SSD1306@^2.5.9
|
||||
adafruit/MAX6675 library@^1.1.2
|
||||
br3ttb/PID@^1.2.1
|
||||
bblanchon/ArduinoJson@^7.0.3
|
||||
dlloydev/QuickPID@^3.1.9
|
||||
+234
-18
@@ -1,4 +1,5 @@
|
||||
#include <Arduino.h>
|
||||
#define DEBUG
|
||||
|
||||
//Peripherals includes
|
||||
#include <Wire.h>
|
||||
@@ -6,6 +7,8 @@
|
||||
#include <Adafruit_GFX.h>
|
||||
#include <Adafruit_SSD1306.h>
|
||||
#include <max6675.h>
|
||||
// #include <QuickPID.h>
|
||||
#include <PID_v1.h>
|
||||
|
||||
//Web server includes
|
||||
#include <AsyncElegantOTA.h>
|
||||
@@ -16,14 +19,49 @@
|
||||
#include <AsyncTCP.h>
|
||||
#include <ESPAsyncWebServer.h>
|
||||
#include <SPIFFSEditor.h>
|
||||
#include <Arduino_JSON.h>
|
||||
// #include <Arduino_JSON.h>
|
||||
#include "AsyncJson.h"
|
||||
#include <ArduinoJson.h>
|
||||
|
||||
#include <Preferences.h>
|
||||
Preferences settings;
|
||||
|
||||
#define MAX6675_SCLK 12
|
||||
#define MAX6675_CS 13
|
||||
#define MAX6675_MISO 15
|
||||
#define I2C_SDA 5//13
|
||||
#define I2C_SCL 4//15
|
||||
#define LED_PIN 5
|
||||
#define LED_PIN 16
|
||||
#define HEATER_PIN 14
|
||||
|
||||
//PID
|
||||
#define T_SAMPLE_PERIOD 1000 // in milliseconds.
|
||||
uint32_t temperature_sample_timer = 0;
|
||||
double target = 0;
|
||||
double temperature = 0;
|
||||
double power = 0;
|
||||
int runProfile = 0;
|
||||
long int profileStartTime = 0;
|
||||
long int elapsedTime = 0;
|
||||
|
||||
struct dataPoint{
|
||||
double time;
|
||||
double temp;
|
||||
};
|
||||
struct dataPoint sProfile[10];
|
||||
|
||||
double kp = 950;
|
||||
double ki = 0.05;
|
||||
double kd = 100;
|
||||
PID outputPID(&temperature, &power, &target, kp, ki, kd, DIRECT);
|
||||
int cycle = 10000; //WindowSize
|
||||
unsigned long duty = 0; //WindowStartTime
|
||||
|
||||
// boolean on_off = false;
|
||||
|
||||
//DATA
|
||||
// StaticJsonBuffer<JSON_OBJECT_SIZE(5)> jbStatus;
|
||||
// JsonObject& objStatus = jbStatus.createObject();
|
||||
|
||||
//*****
|
||||
// Display defines
|
||||
@@ -39,7 +77,6 @@ unsigned long lastScreenRefresh = 0;
|
||||
//MAX6675(int8_t SCLK, int8_t CS, int8_t MISO);
|
||||
MAX6675 tc(12, 13, 15);
|
||||
unsigned long lastTempTime = 0;
|
||||
float temperature;
|
||||
|
||||
//*********************************************************
|
||||
// Web server variable declarations
|
||||
@@ -51,7 +88,7 @@ AsyncWebServer server(80);
|
||||
// AsyncEventSource events("/events");
|
||||
|
||||
//Variables to save values from HTML form
|
||||
JSONVar scannedSSIDs;
|
||||
// JSONVar scannedSSIDs;
|
||||
String ssid;
|
||||
String pass;
|
||||
String ip;
|
||||
@@ -86,14 +123,43 @@ bool initWiFi();
|
||||
String getLEDState();
|
||||
// ----------------------------------------------
|
||||
|
||||
String getStatus(void)
|
||||
{
|
||||
// String json;
|
||||
JsonDocument jsonStatus;
|
||||
jsonStatus["temp"] = String(temperature);
|
||||
jsonStatus["target"] = String(target);
|
||||
jsonStatus["power"] = String(power);
|
||||
jsonStatus["runProfile"] = String(runProfile);
|
||||
jsonStatus["elapsedTime"] = String(elapsedTime);
|
||||
String out;
|
||||
serializeJson(jsonStatus,out);
|
||||
return out;
|
||||
// return JSON.stringify(jsonStatus);
|
||||
}
|
||||
|
||||
String getPID(AsyncWebServerRequest * request)
|
||||
{
|
||||
JsonDocument jsonPID;
|
||||
jsonPID["kp"] = String(kp);
|
||||
jsonPID["ki"] = String(ki);
|
||||
jsonPID["kd"] = String(kd);
|
||||
String out;
|
||||
serializeJson(jsonPID,out);
|
||||
return out;
|
||||
}
|
||||
|
||||
String getJSONTemp(){
|
||||
JSONVar jsonTemp;
|
||||
JsonDocument jsonTemp;
|
||||
jsonTemp["t"]=String(temperature);
|
||||
return JSON.stringify(jsonTemp);
|
||||
String out;
|
||||
serializeJson(jsonTemp,out);
|
||||
return out;
|
||||
}
|
||||
|
||||
void setup() {
|
||||
pinMode(LED_PIN, OUTPUT);
|
||||
pinMode(HEATER_PIN, OUTPUT);
|
||||
|
||||
Serial.begin(115200);
|
||||
|
||||
@@ -146,7 +212,7 @@ server.addHandler(new SPIFFSEditor(SPIFFS,http_username,http_password));
|
||||
server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest *request){
|
||||
String json = getJSONTemp();
|
||||
request->send(200, "application/json", json);
|
||||
json = String();
|
||||
// json = String();
|
||||
});
|
||||
|
||||
server.on("/scanNetworks", HTTP_GET, [](AsyncWebServerRequest *request){
|
||||
@@ -288,32 +354,182 @@ server.addHandler(new SPIFFSEditor(SPIFFS,http_username,http_password));
|
||||
ESP.restart();
|
||||
}
|
||||
});
|
||||
server.on("/heap", HTTP_GET, [](AsyncWebServerRequest *request){
|
||||
request->send(200, "text/plain", String(ESP.getFreeHeap()));
|
||||
});
|
||||
server.on("/status", HTTP_GET, [](AsyncWebServerRequest *request){
|
||||
request->send(200, "text/plain", getStatus());
|
||||
});
|
||||
server.on("/pid", HTTP_GET, [](AsyncWebServerRequest *request){
|
||||
request->send(200, "text/plain", getPID(request));
|
||||
});
|
||||
server.on("/pid",HTTP_POST, [](AsyncWebServerRequest *request){
|
||||
if (request->hasParam("kp",true))
|
||||
{
|
||||
kp = request->getParam("kp",true)->value().toFloat();
|
||||
#ifdef DEBUG
|
||||
Serial.print("kp=");
|
||||
Serial.print(kp,2);
|
||||
Serial.print("; ");
|
||||
#endif
|
||||
}
|
||||
if (request->hasParam("ki",true))
|
||||
{
|
||||
ki = request->getParam("ki",true)->value().toFloat();
|
||||
#ifdef DEBUG
|
||||
Serial.print("ki=");
|
||||
Serial.print(ki,2);
|
||||
Serial.print("; ");
|
||||
#endif
|
||||
}
|
||||
if (request->hasParam("kd",true))
|
||||
{
|
||||
kd = request->getParam("kd",true)->value().toFloat();
|
||||
#ifdef DEBUG
|
||||
Serial.print("kd=");
|
||||
Serial.print(kd,2);
|
||||
Serial.print("; ");
|
||||
#endif
|
||||
}
|
||||
#ifdef DEBUG
|
||||
Serial.print("\n");
|
||||
#endif
|
||||
outputPID.SetTunings(kp, ki, kd);
|
||||
|
||||
server.begin();
|
||||
request->send(200, "text/plain", getPID(request));
|
||||
});
|
||||
server.on("/target", HTTP_POST, [](AsyncWebServerRequest *request){
|
||||
int params = request->params();
|
||||
if(params > 0){
|
||||
// AsyncWebParameter* p = request->getParam("value",true)->value().toFloat();
|
||||
target = request->getParam("value",true)->value().toDouble();
|
||||
Serial.printf("Target: %3.2f\n",target);
|
||||
}else{
|
||||
target = -273;
|
||||
}
|
||||
// if(request->hasParam("value")){
|
||||
// target = request->getParam("value")->value().toFloat();
|
||||
// Serial.printf("Target: %d",target);
|
||||
// }
|
||||
request->send(200, "text/plain", (String)target);
|
||||
});
|
||||
server.on("/profile", HTTP_POST,[](AsyncWebServerRequest *request){
|
||||
// AsyncCallbackJsonWebHandler *handler = new AsyncCallbackJsonWebHandler("/profile", [](AsyncWebServerRequest *request, JsonVariant &json) {
|
||||
|
||||
int params = request->params();
|
||||
if(request->hasParam("profile",true)){
|
||||
JsonDocument jsonObj;
|
||||
Serial.println(request->getParam("profile",true)->value());
|
||||
|
||||
DeserializationError error = deserializeJson(jsonObj, request->getParam("profile",true)->value());
|
||||
if (error) {
|
||||
// Handle the error
|
||||
Serial.println(error.c_str()); request->send(400, "text/plain", "Invalid JSON payload"); return;
|
||||
}else{
|
||||
for(int i = 0;i<10;i++) {
|
||||
//double point[2];
|
||||
//int pointCount = jsonObj["profile"][i].as<JsonArray>().copyTo(point);
|
||||
sProfile[i].time = jsonObj[i]["x"];
|
||||
sProfile[i].temp = jsonObj[i]["y"];
|
||||
#ifdef DEBUG
|
||||
Serial.print("Point:");
|
||||
Serial.print(i);
|
||||
Serial.print(", Time:");
|
||||
Serial.print(sProfile[i].time);
|
||||
Serial.print(", Temp:");
|
||||
Serial.println(sProfile[i].temp);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(request->hasParam("run",true)){
|
||||
runProfile = request->getParam("run",true)->value().toInt();
|
||||
Serial.println(runProfile);
|
||||
if(runProfile == 1){
|
||||
profileStartTime = millis();
|
||||
elapsedTime = 0;
|
||||
}else{
|
||||
target = 0;
|
||||
}
|
||||
|
||||
}
|
||||
request->send(200, "text/plain", "{test: \"ok\"}");
|
||||
});
|
||||
|
||||
server.begin();
|
||||
duty = millis();
|
||||
outputPID.SetOutputLimits(0, cycle);
|
||||
outputPID.SetSampleTime(T_SAMPLE_PERIOD);
|
||||
outputPID.SetTunings(kp, ki, kd);
|
||||
outputPID.SetMode(AUTOMATIC);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void loop() {
|
||||
digitalWrite(LED_PIN,HIGH);
|
||||
temperature = tc.readCelsius();
|
||||
delay(500);
|
||||
digitalWrite(LED_PIN,LOW);
|
||||
delay(500);
|
||||
if ((millis() - lastScreenRefresh) > SCREEN_REFRESH) {
|
||||
long now = millis();
|
||||
if(now - temperature_sample_timer >= T_SAMPLE_PERIOD)
|
||||
{
|
||||
temperature = tc.readCelsius();
|
||||
temperature_sample_timer = now;
|
||||
//deal with profile
|
||||
if(runProfile == 1){
|
||||
elapsedTime = millis() - profileStartTime;
|
||||
if(sProfile[9].time * 1000 > elapsedTime){
|
||||
//find segment
|
||||
int segment = 0;
|
||||
for(segment;segment<10;segment++){
|
||||
if(sProfile[segment].time * 1000 < elapsedTime && sProfile[segment+1].time * 1000 >= elapsedTime){
|
||||
break;
|
||||
};
|
||||
}
|
||||
Serial.print("Segment:");
|
||||
Serial.print(segment);
|
||||
double t_t1 = elapsedTime - (sProfile[segment].time * 1000);
|
||||
double t2_t1 = (sProfile[segment+1].time - sProfile[segment].time) * 1000;
|
||||
double T2_T1 = sProfile[segment+1].temp - sProfile[segment].temp;
|
||||
|
||||
target = sProfile[segment].temp + (t_t1 / t2_t1) * T2_T1;
|
||||
Serial.print(", Target:");
|
||||
Serial.println(target);
|
||||
}else{
|
||||
runProfile = 0;
|
||||
target = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//set heater output
|
||||
outputPID.Compute();
|
||||
|
||||
unsigned long rightNow = millis();
|
||||
if (rightNow - duty > cycle)
|
||||
{ //time to shift the Relay Window
|
||||
duty += cycle;
|
||||
}
|
||||
if (power > rightNow - duty){
|
||||
digitalWrite(HEATER_PIN, HIGH);
|
||||
}else{
|
||||
digitalWrite(HEATER_PIN, LOW);
|
||||
}
|
||||
|
||||
if ((now - lastScreenRefresh) > SCREEN_REFRESH) {
|
||||
Serial.printf("T:%.2f\n", temperature);
|
||||
|
||||
display.clearDisplay();
|
||||
display.setTextSize(3);
|
||||
display.setCursor(0, 5);
|
||||
display.printf("T:%.1f\n", temperature);
|
||||
display.setTextSize(1);
|
||||
display.setCursor(0, 3);
|
||||
display.printf("T:%.1f/%.1f\n", temperature, target);
|
||||
display.setCursor(0,24);
|
||||
display.printf("P:%.1f\n", power);
|
||||
display.setCursor(0,48);
|
||||
display.printf("%s\n",ssid);
|
||||
display.printf("%s",ip);
|
||||
display.display();
|
||||
|
||||
lastScreenRefresh = millis();
|
||||
lastScreenRefresh = now;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user