PublishingJS:TheNewSocial: Difference between revisions
No edit summary |
No edit summary |
||
(39 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
const origin = window.location.origin | |||
const title = "TheNewSocial" | |||
const wikilink_rel = "mw:WikiLink" | |||
document.onreadystatechange = function () { | |||
window.onhashchange = function() { | console.log( 'Hello from PublishingJS namespace!' ) | ||
make_case_studies_header() | |||
make_case_studies_collapsible() | |||
make_principles_collapsible() | |||
hashify_all_wikilinks() | |||
} | shuffle_worker_ants() | ||
give_galleries_buttons() | |||
} | |||
} | |||
function $( selector ) { | |||
return document.querySelectorAll( selector ) | |||
} | |||
function make_case_studies_header() { | |||
const toctitle = document.querySelector( '.toctitle h2' ) | |||
if ( toctitle ) { | |||
toctitle.innerText = 'Case Studies' | |||
} | |||
} | |||
function make_case_studies_collapsible() { | |||
const nav_links = $('#toc a, #Principles a') | |||
window.onhashchange = function() { | |||
for (let i = 0; i < nav_links.length; i++) { | |||
if (nav_links[i].href.match(/(#.*)/)[1] == window.location.hash) { | |||
nav_links[i].className = 'selected' | |||
} else { | |||
nav_links[i].className = '' | |||
} | |||
} | |||
} | |||
} | |||
function hashify_all_wikilinks() { | |||
const wikilinks = $( `a[rel="${ wikilink_rel }"]` ) | |||
for ( const wikilink of wikilinks ) { | |||
if ( !wikilink.href.includes('#') ) { | |||
if ( wikilink.href.includes('/html/') ) { | |||
wikilink.href = wikilink.href.replace( `${ origin }/html/`, '#' ) | |||
} else { | |||
wikilink.href = wikilink.href.replace( `${ origin }/`, '#' ) | |||
} | |||
} | |||
} | |||
} | |||
function make_principles_collapsible() { | |||
const principles = $( '#Principles > section' ) | |||
for ( const principle of principles ) { | |||
const header = principle.querySelector( 'h3' ) | |||
if (!header.onclick) { | |||
header.onclick = function() { | |||
const p_array = Array.from( principles ) | |||
for ( let i=0; i < p_array.length; i++ ) { | |||
if ( principle != p_array[i] ) { | |||
p_array[i].classList.remove('selected') | |||
} | |||
} | |||
principle.classList.toggle( 'selected' ) | |||
} | |||
} | |||
} | |||
} | |||
function shuffle_worker_ants() { | |||
const ants = $( '.clippy_ant' ) | |||
for ( const ant of ants ) { | |||
ant.style.setProperty( '--index', Math.floor(Math.random() * 21 ) ) | |||
} | |||
} | |||
function give_galleries_buttons() { | |||
const galleries = $( 'ul.gallery' ) | |||
for ( const gallery of galleries ) { | |||
if ( gallery.querySelector( '.controls' ) ) { | |||
return | |||
} | |||
const controls = document.createElement( 'div' ) | |||
controls.classList.add( 'controls' ) | |||
controls.innerHTML = `<span class="left"><</span><span class="right">></span>` | |||
gallery.prepend( controls ) | |||
const left = gallery.querySelector( '.left' ) | |||
const right = gallery.querySelector( '.right' ) | |||
const rem = parseFloat(getComputedStyle(document.documentElement).fontSize) | |||
right.onclick = () => { gallery.scroll({ | |||
left: gallery.scrollLeft + gallery.offsetWidth - 1 * rem, | |||
behavior: "smooth" | |||
})} | |||
left.onclick = () => { gallery.scroll({ | |||
left: gallery.scrollLeft - gallery.offsetWidth + 1 * rem, | |||
behavior: "smooth" | |||
})} | |||
} | |||
} |
Latest revision as of 11:53, 15 June 2023
const origin = window.location.origin
const title = "TheNewSocial"
const wikilink_rel = "mw:WikiLink"
document.onreadystatechange = function () {
console.log( 'Hello from PublishingJS namespace!' )
make_case_studies_header()
make_case_studies_collapsible()
make_principles_collapsible()
hashify_all_wikilinks()
shuffle_worker_ants()
give_galleries_buttons()
}
function $( selector ) {
return document.querySelectorAll( selector )
}
function make_case_studies_header() {
const toctitle = document.querySelector( '.toctitle h2' )
if ( toctitle ) {
toctitle.innerText = 'Case Studies'
}
}
function make_case_studies_collapsible() {
const nav_links = $('#toc a, #Principles a')
window.onhashchange = function() {
for (let i = 0; i < nav_links.length; i++) {
if (nav_links[i].href.match(/(#.*)/)[1] == window.location.hash) {
nav_links[i].className = 'selected'
} else {
nav_links[i].className = ''
}
}
}
}
function hashify_all_wikilinks() {
const wikilinks = $( `a[rel="${ wikilink_rel }"]` )
for ( const wikilink of wikilinks ) {
if ( !wikilink.href.includes('#') ) {
if ( wikilink.href.includes('/html/') ) {
wikilink.href = wikilink.href.replace( `${ origin }/html/`, '#' )
} else {
wikilink.href = wikilink.href.replace( `${ origin }/`, '#' )
}
}
}
}
function make_principles_collapsible() {
const principles = $( '#Principles > section' )
for ( const principle of principles ) {
const header = principle.querySelector( 'h3' )
if (!header.onclick) {
header.onclick = function() {
const p_array = Array.from( principles )
for ( let i=0; i < p_array.length; i++ ) {
if ( principle != p_array[i] ) {
p_array[i].classList.remove('selected')
}
}
principle.classList.toggle( 'selected' )
}
}
}
}
function shuffle_worker_ants() {
const ants = $( '.clippy_ant' )
for ( const ant of ants ) {
ant.style.setProperty( '--index', Math.floor(Math.random() * 21 ) )
}
}
function give_galleries_buttons() {
const galleries = $( 'ul.gallery' )
for ( const gallery of galleries ) {
if ( gallery.querySelector( '.controls' ) ) {
return
}
const controls = document.createElement( 'div' )
controls.classList.add( 'controls' )
controls.innerHTML = `<span class="left"><</span><span class="right">></span>`
gallery.prepend( controls )
const left = gallery.querySelector( '.left' )
const right = gallery.querySelector( '.right' )
const rem = parseFloat(getComputedStyle(document.documentElement).fontSize)
right.onclick = () => { gallery.scroll({
left: gallery.scrollLeft + gallery.offsetWidth - 1 * rem,
behavior: "smooth"
})}
left.onclick = () => { gallery.scroll({
left: gallery.scrollLeft - gallery.offsetWidth + 1 * rem,
behavior: "smooth"
})}
}
}