on master help sign in
Fixed up the progress bar
commit0596a5d19995ee367d4190d54af1e0fa90fef7ea authorDevine Lu Linvega <aliceffekt@gmail.com> dateTue 13 Aug 2019, 07:10 (7 years ago) parent116557c
4 files changed+25−35
links/main.css−5 scripts/portal.js+2−2 scripts/progress.js+22−27 scripts/wiki.js+1−1
links/main.css−5
@@ -75,11 +75,6 @@ body #wiki #footer { padding-left: 60px; background-image: url(../icon.white.svg
7575
7676/* progress indicator */
7777body #progress { color: #777; }
78−body #progress .busy { cursor: wait; }
79−body #progress progress { -webkit-appearance: none; -moz-appearance: none; appearance: none; background: #ccc; color: #777; width: 100px; height: 5px; border: 1px solid #777; box-sizing: border-box; }
80−body #progress progress::-webkit-progress-bar { background: #ccc; }
81−body #progress progress::-webkit-progress-value { background: #777; } /* warning: don't merge this with -moz-progress-bar below, it will break in webkit! */
82−body #progress progress::-moz-progress-bar { background: #777; }
8378
8479@media (min-width: 630px) {
8580 body aside { display: block; }
scripts/portal.js+2−2
@@ -16,7 +16,7 @@ function Portal (sites) {
1616 }
1717
1818 function _directory (sites) {
19− const listItems= sites.reduce((acc, site, id) => `${acc}<li ${_type(site)} id='${id}'><a href='${site.url}'>${_name(site)}</a></li>`, '')
19+ const listItems = sites.reduce((acc, site, id) => `${acc}<li ${_type(site)} id='${id}'><a href='${site.url}'>${_name(site)}</a></li>`, '')
2020 return `<main><ul>${listItems}</ul></main><footer>${_readme()}${_buttons()}</footer>`
2121 }
2222
@@ -25,7 +25,7 @@ function Portal (sites) {
2525 }
2626
2727 function _type (site) {
28− return site.type ? `data-type="${site.type}"` : ''
28+ return site.type ? `data-type="${site.type}"` : ''
2929 }
3030
3131 function _redirect (site) {
scripts/progress.js+22−27
@@ -1,37 +1,33 @@
11'use strict'
22
33const Progress = keys => {
4− const allKeys = new Set(keys.filter(key => key))
5− const loadedKeys = new Set()
6− const failedKeys = new Set()
4+ const stack = new Set(keys.filter(key => key))
5+ const loaded = new Set()
6+ const failed = new Set()
77
8− const done = () => loadedKeys.size === allKeys.size
9−
10− const className = () => done() ? 'done' : 'busy'
11−
12− const formatPercentLoaded = () => `
13− ${Math.round(100 * loadedKeys.size / Math.max(allKeys.size, 1))}% loaded
14− `
15−
16− const formatFailureCount = () => failedKeys.size === 0
17− ? ''
18− : `(${failedKeys.size} failed)`
8+ this.ratio = () => {
9+ return loaded.size / stack.size
10+ }
1911
20− const formatProgress = () => done()
21− ? ''
22− : `<p><progress value='${loadedKeys.size}' max='${allKeys.size}'></progress></p>`
12+ this.percentage = () => {
13+ return (100 * this.ratio()).toFixed(2)
14+ }
2315
2416 const render = () => `
25− <div class='${className()}'>
26− <p>${formatPercentLoaded()} ${formatFailureCount()}</p>
27− ${formatProgress()}
28− </div>
29− `
17+ <div class='${loaded.size !== stack.size ? 'busy' : 'done'}'>
18+ <p>
19+ ${'|'.repeat(this.ratio() * 10)}
20+ ${loaded.size !== stack.size ? this.percentage() + '% ' : ''}
21+ ${loaded.size === stack.size ? 'Complete' : 'Loading'}
22+ ${failed.size !== 0 ? `(${failed.size} failed)` : ''}
23+ </p>
24+
25+ </div>`
3026
3127 const didLoad = (key, success) => new Promise((resolve, reject) => {
32− if (allKeys.has(key)) {
33− loadedKeys.add(key)
34− if (!success) failedKeys.add(key)
28+ if (stack.has(key)) {
29+ loaded.add(key)
30+ if (!success) failed.add(key)
3531 return resolve()
3632 } else {
3733 return reject()
@@ -41,7 +37,6 @@ const Progress = keys => {
4137 return {
4238 success: key => didLoad(key, true),
4339 failure: key => didLoad(key, false),
44− done,
45− render,
40+ toString: render
4641 }
4742}
scripts/wiki.js+1−1
@@ -130,7 +130,7 @@ const Wiki = sites => {
130130 }
131131
132132 const refreshProgress = () => {
133− progress.innerHTML = progressCounter.render()
133+ progress.innerHTML = `${progressCounter}`
134134 }
135135
136136 return {