wowtoken.app

git clone https://git.emily.sh/wowtoken-app/wowtoken.app.git
Log | Files | Refs | README | LICENSE

commit 66ab04299568ef14c97f82b16e779e8f69903e90
parent 8cd9a2ddebc073833ad4aa1fa32e2318d837acd1
Author: Emily Doherty <git@emily.sh>
Date:   Sun, 15 Oct 2023 01:16:38 -0700

Changes to advanced options and styling in prep for future work

Diffstat:
Msrc/index.html | 96+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Msrc/index.js | 49+++++++++++++++++++++++++++++++++++++++++++++----
Msrc/style.css | 55++++++++++++++++++++++++++++++++++++++++++++++++-------
3 files changed, 150 insertions(+), 50 deletions(-)

diff --git a/src/index.html b/src/index.html @@ -17,29 +17,63 @@ <div class="lds-ripple" id="loader"><div></div><div></div></div> <canvas id="token-chart"></canvas> <div id="option_select"> - <p> - <label for="region">Region:</label> - <select name="region" id="region"> - <option value="us">US</option> - <option value="eu">EU</option> - <option value="kr">KR</option> - <option value="tw">TW</option> - </select> - </p> - <p> - <label for="time">Time Selection:</label> - <select name="time" id="time"> - <option value="72h">3 Days</option> - <option value="168h">7 Days</option> - <option value="336h">14 Days</option> - <option value="720h">1 Month</option> - <option value="90d">3 Months</option> - <option value="6m">6 Months</option> - <option value="1y">1 Year</option> - <option value="2y">2 Years</option> - <option value="all">All Available</option> - </select> - </p> + <fieldset id="basic-options"> + <legend>Basic chart options</legend> + <div> + <label for="region">Region:</label> + <select name="region" id="region"> + <option value="us">US</option> + <option value="eu">EU</option> + <option value="kr">KR</option> + <option value="tw">TW</option> + </select> + </div> + <div> + <label for="time">Time Selection:</label> + <select name="time" id="time"> + <option value="72h">3 Days</option> + <option value="168h">7 Days</option> + <option value="336h">14 Days</option> + <option value="720h">1 Month</option> + <option value="90d">3 Months</option> + <option value="6m">6 Months</option> + <option value="1y">1 Year</option> + <option value="2y">2 Years</option> + <option value="all">All Available</option> + </select> + </div> + <div> + <label for="enable-advanced">Enable advanced charting options:</label> + <input type="checkbox" id="enable-advanced" name="enable-advanced" /> + </div> + </fieldset> + <fieldset id="advanced-options"> + <legend>Advanced chart options</legend> + <fieldset id="advanced-region-options"> + <legend>Multi-Region Selection</legend> + <label for="adv-r-us">US:</label> + <input type="checkbox" id="adv-r-us" name="adv-r-us" value="enable" disabled /> + <label for="adv-r-eu">EU:</label> + <input type="checkbox" id="adv-r-eu" name="adv-r-eu" value="enable" disabled /> + <label for="adv-r-kr">KR:</label> + <input type="checkbox" id="adv-r-kr" name="adv-r-kr" value="enable" disabled /> + <label for="adv-r-tw">TW:</label> + <input type="checkbox" id="adv-r-tw" name="adv-r-tw" value="enable" disabled/> + </fieldset> + <fieldset id="basic-smoothing"> + <label for="aggregate">Smoothing Function:</label> + <select name="aggregate" id="aggregate"> + <option id='agg_none' value="none">None</option> + <option id='agg_davg' value="daily_mean">Daily Average</option> + <option id='agg_wavg' value="weekly_mean" disabled>Weekly Average</option> + </select> + </fieldset> + <fieldset id="y-start-options"> + <label for="y-start">Start y-axis at 0:</label> + <input type="checkbox" id="y-start" name="y-start" value="enable" disabled/> + </fieldset> + + </fieldset> <div class="tooltip"> <button id="copyURLButton"> <span class="tooltiptext" id="urlTooltip">Copy to clipboard</span> @@ -50,22 +84,6 @@ <p><em>Looking for the classic WoW Token price? Find it <a href="https://classic.wowtoken.app">here!</a></em></p> </div> </div> - <details id="advanced"> - <summary>Advanced Options</summary> - <p> - <label for="aggregate">Aggregate Function:</label> - <select name="aggregate" id="aggregate"> - <option id='agg_none' value="none">None</option> - <option id='agg_dmax' value="daily_max">Daily Maximum</option> - <option id='agg_dmin' value="daily_min">Daily Minimum</option> - <option id='agg_davg' value="daily_mean">Daily Average</option> - <option id='agg_wmax' value="weekly_max" disabled>Weekly Maximum</option> - <option id='agg_wmin' value="weekly_min" disabled>Weekly Minimum</option> - <option id='agg_wavg' value="weekly_mean" disabled>Weekly Average</option> - </select> - </p> - <em>More coming soon™</em> - </details> <details id="about"> <summary>About this Site</summary> This is a site developed to track the value of the World of Warcraft Token from various diff --git a/src/index.js b/src/index.js @@ -12,6 +12,8 @@ import { import 'chartjs-adapter-dayjs-3'; import "./style.css" +// TODO: This file should be seperated into multiple with better ownership + Chart.register( LineElement, PointElement, @@ -32,6 +34,26 @@ const currentPriceHash = { kr: 0, tw: 0 }; +let chartData = { + us: [], + eu: [], + kr: [], + tw: [] +} +let chartOptions = { + us: { + color: 'gold' + }, + eu: { + color: 'red' + }, + kr: { + color: 'white' + }, + tw: { + color: 'pink' + } +} let chartJsData; let ctx; let tokenChart; @@ -105,7 +127,7 @@ async function aggregateFunctionToggle() { // so if the need to be updated in the future we can do so easily const smallTimes = ['72h', '168h', '336h']; const longTimes = ['720h', '30d', '2190h', '90d', '1y', '2y', '6m', 'all']; - const idsToModify = ['agg_wmax', 'agg_wmin', 'agg_wavg'] + const idsToModify = ['agg_wavg'] if (smallTimes.includes(currentTimeSelection)) { for (const id of idsToModify) { let ele = document.getElementById(id); @@ -169,6 +191,18 @@ function updateAggregatePreference(newAggregate) { pullChartData().then(populateChart); } +function toggleAdvancedSetting() { + let element = document.getElementById('advanced-options') + if (document.getElementById('enable-advanced').checked) + { + element.style.display = 'flex'; + } + else + { + element.style.display = 'none'; + } +} + function urlBuilder() { let url = "https://data.wowtoken.app/token/history/"; if (currentAggregateSelection !== 'none') { @@ -233,7 +267,7 @@ function detectTimeQuery(urlSearchParams) { } function detectAggregateQuery(urlSearchParams) { - const validOperations = ['none', 'daily_max', 'daily_min', 'daily_mean', 'weekly_max', 'weekly_min', 'weekly_mean']; + const validOperations = ['none', 'daily_mean', 'weekly_mean']; if (validOperations.includes(urlSearchParams.get('aggregate').toLowerCase())) { currentAggregateSelection = urlSearchParams.get('aggregate').toLowerCase(); let aggregateDDL = document.getElementById('aggregate'); @@ -295,13 +329,20 @@ function toolTipMouseOut() { function registerEventHandles() { registerCopyHandlers(); registerOptionHandlers(); + registerAdvancedHandlers(); +} + +function registerAdvancedHandlers() { + document.getElementById('enable-advanced').addEventListener('change', () => { + toggleAdvancedSetting(); + }) } function registerCopyHandlers() { - document.getElementById('copyURLButton').addEventListener('click', function (event) { + document.getElementById('copyURLButton').addEventListener('click', function () { copyURL(); }) - document.getElementById('copyURLButton').addEventListener('mouseout', function (event) { + document.getElementById('copyURLButton').addEventListener('mouseout', function () { toolTipMouseOut(); }) } diff --git a/src/style.css b/src/style.css @@ -137,9 +137,6 @@ input[type="radio"] { padding: 0; } input[type="search"] { - -webkit-appearance: textfield; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; box-sizing: content-box; } input[type="search"]::-webkit-search-cancel-button, @@ -318,9 +315,28 @@ h6 { line-height: 75px; font-size: 30px; } +.adv-options-container { + display: flex; + padding: 20px; + flex-flow: row wrap; + align-items: center; + justify-content: space-around; +} +.box > div { + border: solid #bfbdbf; + border-radius: 40px; + padding: 20px; + margin: 20px; + width: 200px; + height: 200px; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; +} p { - margin: 0px; - padding: 0px; + margin: 0; + padding: 0; line-height: 3em; } @@ -353,6 +369,20 @@ details[open] summary { #option_select { font-size: 20px; + line-height: 40px; + display: flex; + flex-direction: column; + align-items: center; + align-content: center; +} + +#option_select > div { + padding: 10px; +} + +#option_select > fieldset { + padding-bottom: 20px; + max-width: fit-content; } #token { @@ -378,6 +408,17 @@ details[open] summary { flex-direction: column; } +#advanced-options { + display: none; + flex-direction: column; + align-items: center; + align-content: center; +} + +#advanced-options > fieldset { + margin: 10px; +} + .lds-ripple { position: relative; align-self: center; @@ -456,8 +497,8 @@ details[open] summary { opacity: 1; } 100% { - top: 0px; - left: 0px; + top: 0; + left: 0; width: 72px; height: 72px; opacity: 0;