mirror of
https://github.com/seigler/Dash-price-widget
synced 2025-07-26 23:56:10 +00:00
create project structure, using npm as a build tool
This commit is contained in:
parent
c13b0bdd2f
commit
4dd6e2020b
6 changed files with 124 additions and 1 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/node_modules/
|
14
assets/index.html
Normal file
14
assets/index.html
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
<style>
|
||||||
|
@import 'styles/styles.css';
|
||||||
|
</style>
|
||||||
|
<form class="dash-ticker">
|
||||||
|
<div class="dash-ticker--title">Dash Price</div>
|
||||||
|
<div id="dash-ticker--price-container" title="Click to change currency">
|
||||||
|
<input type="radio" name="currency" id="USD" checked />
|
||||||
|
<label>
|
||||||
|
<span class="dash-ticker--price">Loading...</span>
|
||||||
|
<span class="dash-ticker--currency"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<script src="scripts/app.js"></script>
|
32
assets/scripts/app.js
Normal file
32
assets/scripts/app.js
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
(function () {
|
||||||
|
"use strict";
|
||||||
|
window.JSON || document.write('<scr' + 'ipt src="//cdnjs.cloudflare.com/ajax/libs/json3/3.2.4/json3.min.js"><\/scr' + 'ipt>');
|
||||||
|
|
||||||
|
function fetchJSONFile(path, callback) {
|
||||||
|
var httpRequest = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
|
||||||
|
httpRequest.onreadystatechange = function () {
|
||||||
|
if (httpRequest.readyState === 4) {
|
||||||
|
if (httpRequest.status === 200) {
|
||||||
|
var data = JSON.parse(httpRequest.responseText);
|
||||||
|
if (callback) { callback(data); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
httpRequest.open('GET', path);
|
||||||
|
httpRequest.send();
|
||||||
|
}
|
||||||
|
|
||||||
|
// this requests the file and executes a callback with the parsed result once it is available
|
||||||
|
fetchJSONFile('https://coinmarketcap-nexuist.rhcloud.com/api/dash/price', function (data) {
|
||||||
|
var keys = Object.keys(data),
|
||||||
|
currencyListHTML = "";
|
||||||
|
for (var i = 0; i < keys.length; i++) {
|
||||||
|
var thisCurrency = keys[i];
|
||||||
|
var nextCurrency = keys[(i < keys.length - 1 ? i + 1 : 0)];
|
||||||
|
var currencyValue = data[keys[i]];
|
||||||
|
var currencyString = (currencyValue.toPrecision(3).length > currencyValue.toFixed(2) ? currencyValue.toPrecision(3) : currencyValue.toFixed(2));
|
||||||
|
currencyListHTML += '<input type="radio" name="currency" id="dash-ticker-currencies-' + thisCurrency + '"' + (i == 0 ? ' checked' : '') + ' /><label for="dash-ticker-currencies-' + nextCurrency + '"><span class="dash-ticker--price">' + currencyString + '</span> <span class="dash-ticker--currency">' + thisCurrency.toUpperCase() + '</span></label>';
|
||||||
|
}
|
||||||
|
document.getElementById('dash-ticker--price-container').innerHTML = currencyListHTML;
|
||||||
|
});
|
||||||
|
})();
|
54
assets/styles/styles.css
Normal file
54
assets/styles/styles.css
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
/* Micro reset so global styles don't interfere */
|
||||||
|
.dash-ticker,
|
||||||
|
.dash-ticker *,
|
||||||
|
.dash-ticker *:before,
|
||||||
|
.dash-ticker *:after {
|
||||||
|
box-sizing: inherit;
|
||||||
|
vertical-align: baseline;
|
||||||
|
font-weight: inherit;
|
||||||
|
font-family: inherit;
|
||||||
|
font-style: inherit;
|
||||||
|
font-size: 100%;
|
||||||
|
border: 0 none;
|
||||||
|
outline: 0;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dash-ticker {
|
||||||
|
display: block;
|
||||||
|
max-width: 20em;
|
||||||
|
margin: 0.5em auto;
|
||||||
|
border-radius: 0.5em;
|
||||||
|
background-color: rgba(0,0,0,0.125);
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: inherit;
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dash-ticker .dash-ticker--title {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1.5em;
|
||||||
|
padding-bottom: 0.125em;
|
||||||
|
border-bottom: 1px solid rgba(0,0,0,0.5);
|
||||||
|
margin-bottom: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#dash-ticker--price-container {
|
||||||
|
font-size: 2em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#dash-ticker--price-container > input {
|
||||||
|
position: fixed;
|
||||||
|
right: -200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#dash-ticker--price-container > input + label {
|
||||||
|
display: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
#dash-ticker--price-container > input:checked + label {
|
||||||
|
display: block;
|
||||||
|
}
|
2
Dash-price-ticker.html → dist/index.html
vendored
2
Dash-price-ticker.html → dist/index.html
vendored
|
@ -79,7 +79,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
httpRequest.open('GET', path);
|
httpRequest.open('GET', path);
|
||||||
httpRequest.send();
|
httpRequest.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
// this requests the file and executes a callback with the parsed result once it is available
|
// this requests the file and executes a callback with the parsed result once it is available
|
22
package.json
Normal file
22
package.json
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"name": "dash-price-ticker"
|
||||||
|
, "version": "1.0.0"
|
||||||
|
, "description": "Embeddable dash price widget"
|
||||||
|
, "scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"lint": "echo '=> linting' && jshint assets/scripts/*.js"
|
||||||
|
}
|
||||||
|
, "repository": {
|
||||||
|
"type": "git"
|
||||||
|
, "url": "git+https://github.com/seigler/Dash-html-ticker.git"
|
||||||
|
}
|
||||||
|
, "author": "Joshua Seigler"
|
||||||
|
, "license": "ISC"
|
||||||
|
, "bugs": {
|
||||||
|
"url": "https://github.com/seigler/Dash-html-ticker/issues"
|
||||||
|
}
|
||||||
|
, "homepage": "https://github.com/seigler/Dash-html-ticker#readme"
|
||||||
|
, "devDependencies": {
|
||||||
|
"jshint": "^2.9.2"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue