Mercurial Hosting > linkmystyle
view src/admin.js @ 3:b016e4b7c8da default tip
add read_me
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sat, 12 Jul 2025 12:51:36 -0600 |
parents | 8f4df159f06b |
children |
line wrap: on
line source
'use strict'; let currentPulldown = null; let newPulldown = null; function clickMenu(clicked,display) { //console.log("clickMenu"); let pulldown = clicked.parentNode.querySelector('[pulldown_menu]'); if( pulldown !== currentPulldown ) { pulldown.style.display = display || "block"; newPulldown = pulldown; window.onclick = function() { //console.log("window.onclick"); if( currentPulldown ) { currentPulldown.style.display = "none"; if( !newPulldown ) window.onclick = null; } currentPulldown = newPulldown; newPulldown = null; }; pulldown.scrollIntoViewIfNeeded(false); } } function stopPropagation(event) { event.stopPropagation(); } window.addEventListener( 'load', function() { for( let pulldown of document.querySelectorAll('[pulldown_menu]') ) { pulldown.onclick = stopPropagation; } } ); function copyLink() { // avoid the paranoid security nonsense with navigator.clipboard let input = document.querySelector('input[clipboard]'); input.select(); document.execCommand('copy'); input.blur(); let span = document.querySelector('[pulldown_menu] span[copy]'); span.textContent = 'Copied!'; span.setAttribute('copy','copied'); setTimeout(function(){ span.textContent = 'Copy'; span.setAttribute('copy',''); } ,1000); } function logout() { document.cookie = 'user=; Max-Age=0; path=/;'; document.cookie = 'password=; Max-Age=0; path=/;'; location = '/'; } function uploadcareUrl(uuid) { return "https://ucarecdn.com/" + uuid + "/-/quality/smart/"; } if( typeof(uploadcare) !== 'undefined' ) { uploadcare.publicKey = window.uploadcarePubKey; uploadcare.imagesOnly = true; uploadcare.maxFileSize = 10000000; uploadcare.onError = function(status,text) { let err = 'upload failed: ' + status; if( text ) { err += '\n' + text; } console.log(err); ajax( '/error_log.js', 'err='+encodeURIComponent(err) ); }; } let dropSelector, iDragging; function indexOf(a,el) { for( let i=0; i<a.length; i++ ) { if( a[i] === el ) return i; } return -1; } if( typeof(dad) !== 'undefined' ) { dad.onStart = function(event) { let dragging = event.original; iDragging = indexOf(dragging.parentNode.querySelectorAll(dropSelector),dragging); } dad.onEnter = function(event) { let dropzone = event.dropzone let original = event.original let items = document.querySelectorAll(dropSelector); let iDropzone = indexOf(items,dropzone); let iOriginal = indexOf(items,original); let where = iDropzone < iOriginal ? 'beforebegin' : 'afterend'; dropzone.insertAdjacentElement(where,original); }; } function date(time) { document.write(new Date(time).toLocaleDateString()); } function ajaxForm(url,form) { let post = ''; for( let i=0; i<form.length; i++ ) { let input = form[i]; let name = input.name; if( name === '' ) continue; let type = input.type; if( (type==='radio' || type==='checkbox') && !input.checked ) continue; post += name + '=' + encodeURIComponent(input.value) + '&'; } ajax(url,post,{form:form}); } function clearErrors(form) { let divs = form.querySelectorAll('div[error]'); for( let i=0; i<divs.length; i++ ) { divs[i].textContent = ''; } } function showError(form,field,message) { clearErrors(form); let err = form.querySelector('[error="'+field+'"]'); err.textContent = message; err.scrollIntoViewIfNeeded(false); err.setAttribute('flash',''); setTimeout(function(){err.removeAttribute('flash')},2000); } function showPassword(div) { div.querySelector('img[show]').style.display = 'none'; div.querySelector('img[hide]').style.display = 'block'; let input = div.querySelector('input'); input.type = 'text'; input.focus(); } function hidePassword(div) { div.querySelector('img[show]').style.display = 'block'; div.querySelector('img[hide]').style.display = 'none'; let input = div.querySelector('input'); input.type = 'password'; input.focus(); } function isEmpty(obj) { for( let _ in obj ) { return false; } return true; } function barChartHeight(rows) { return 200 + 20*rows; } // Mixpanel if( window.UserEmail ) { mixpanel.ours.identify(window.UserEmail); mixpanel.ours.people.set({'$email':window.UserEmail,'$name':window.UserName}); } // A/B tests function setAbTest(name,values) { let props = {}; props[name] = cookies[name]; for( let i=1; i<=4; i++ ) { props[name+'-null-'+i] = values[ Math.floor( Math.random() * values.length ) ]; } mixpanel.ours.identify(); mixpanel.ours.people.set(props); } function removeAbTest(name) { let a = []; a.push(name); for( let i=1; i<=4; i++ ) { a.push(name+'-null-'+i); } mixpanel.ours.people.unset(a); } if( !location.pathname.match(/^\/private\//) ) { fbTrack( 'track', 'PageView' ); }