openvibers/openvibe.compare Commits

Reflect verified Network account on Compare arrival (#7)

OP OpenVibers committed 2 days ago · d1f27fabf2 · 2 files, +15 −1

Changes

ddiff --git a/public/compare-account.js b/public/compare-account.js
nnew file mode 100644
iindex 0000000..6f2249b
---- /dev/null
++++ b/public/compare-account.js
@@@ -0,0 +1,14 @@
++/* Compare has no local account actions. Reflect only a Network-verified account in its navbar. */
++(function () {
++ 'use strict';
++ document.addEventListener('DOMContentLoaded', () => {
++ try { if (localStorage.getItem('ov_sso_hint') === 'guest') return; } catch { /* no hint */ }
++ const nav = window.OpenVibeNavbar;
++ if (!nav || typeof nav.checkNetworkSession !== 'function') return;
++ nav.checkNetworkSession().then(state => {
++ if (!state || state.signedIn !== true) return;
++ const username = typeof state.username === 'string' && state.username.length <= 100 ? state.username : null;
++ nav.setUser(username ? { username } : { id: 'network-account' });
++ }).catch(() => {});
++ });
++})();
ddiff --git a/server/views.js b/server/views.js
iindex 3556b9e..595085a 100644
---- a/server/views.js
++++ b/server/views.js
@@@ -33,5 +33,5 @@ function home(all,q='',task='balanced',budget='') {
<div class="comparison-list">${all.filter(c=>(c.title+' '+c.summary).toLowerCase().includes(q.toLowerCase())).map(c=>`<article class="ovk-card"><h2><a href="/comparisons/${c.slug}">${esc(c.title)}</a></h2><p>${esc(c.summary)}</p>${rank(c).filter(r=>r.score!==null).slice(0,3).map(r=>`<div>${esc(r.thing.name)} <meter min="0" max="100" value="${r.score}">${r.score.toFixed(1)}</meter> ${score(r.score,c)}</div>`).join('') || '<p>No comparable measurements yet.</p>'}<p>${c.things.length} things · ${c.results.length} dated results</p></article>`).join('')}</div><section id="method"><h2>How picks are ranked</h2><p>${esc(c?.method || '')}</p></section>`;
}
function markdown(c){return `# ${c.title}\n\n${c.summary}\n\nUpdated: ${c.updated_at}\n\n`+c.things.map(t=>`## ${t.name}\n\n`+c.criteria.map(k=>{const r=c.results.find(r=>r.thing===t.id&&r.criterion===k.id);return `- ${k.label}: ${r?`${r.value} ${k.unit} — ${r.as_of} — [${r.source.label}](${r.source.url})`:'Not measured'}`;}).join('\n')).join('\n\n')+`\n\n## Method\n\n${c.method}\n`;}
--function page(title,body,path='/',ld=[]) {return shell.page({name:'OpenVibe.Compare',siteName:'OpenVibe.Compare',title,description:'Compare things with dated sources, transparent methods and your own priorities.',canonical:`https://openvibe.compare${path}`,robots:'index, follow',jsonLd:ld,navbar:{service:'compare',apiBase:'https://openvibe.network',links:[{label:'Comparisons',href:'/'}]},footer:{service:'compare',variant:'full',mount:'#ov-footer'},head:`<link rel="stylesheet" href="${serve.url('kit.css')}"><link rel="stylesheet" href="/compare.css">`,body:`<div id="navbar-mount"></div><main id="main" class="ovk-container">${body}</main>`});}
++function page(title,body,path='/',ld=[]) {return shell.page({name:'OpenVibe.Compare',siteName:'OpenVibe.Compare',title,description:'Compare things with dated sources, transparent methods and your own priorities.',canonical:`https://openvibe.compare${path}`,robots:'index, follow',jsonLd:ld,navbar:{service:'compare',apiBase:'https://openvibe.network',links:[{label:'Comparisons',href:'/'}]},footer:{service:'compare',variant:'full',mount:'#ov-footer'},head:`<link rel="stylesheet" href="${serve.url('kit.css')}"><link rel="stylesheet" href="/compare.css"><script src="/compare-account.js" defer></script>`,body:`<div id="navbar-mount"></div><main id="main" class="ovk-container">${body}</main>`});}
module.exports={comparison,home,page,markdown,esc,thingPath,number};