Skip to content

Latest commit

 

History

History
168 lines (153 loc) · 5.45 KB

contact.md

File metadata and controls

168 lines (153 loc) · 5.45 KB
layout page
title Contact
permalink /contact

Authors of this webpage are collaborators of the DQUEST project, and can be contacted through information provided at the top of each subproject page.

For general inquiries regarding the DQUEST project, please send a group email to the four co-leaders of this project listed below. Otherwise, you can also contact the team of your interest.

<style> .collab-filters { display: flex; gap: 0.75rem; margin-bottom: 1.75rem; flex-wrap: wrap; align-items: center; } .filter-btn { padding: 0.35rem 1.1rem; border: 2px solid #666; border-radius: 2rem; background: transparent; cursor: pointer; font-size: 0.88rem; font-weight: 600; color: #666; transition: background 0.18s, color 0.18s, border-color 0.18s; } .filter-btn.active { background: #444; border-color: #444; color: #fff; } .collab-section { margin-bottom: 2.5rem; } .collab-section__title { font-size: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: #555; margin: 0 0 1.1rem 0; padding-bottom: 0.4rem; border-bottom: 2px solid #ddd; } </style>
Co-leader Location
<script> (function () { var BASE_URL = "{{ '/' | relative_url }}"; var PEOPLE = [ {% for person in site.collaborators %} { name: {{ person.name | jsonify }}, initials: {{ person.initials | jsonify }}, role: {{ person.role | jsonify }}, subrole: {{ person.subrole | jsonify }}, photo: {{ person.photo | jsonify }}, institution: {{ person.institution | jsonify }}, city: {{ person.city | jsonify }}, country: {{ person.country | jsonify }}, email: {{ person.email | jsonify }}, website: {{ person.website | jsonify }}, coleader: {{ person.coleader }} }{% unless forloop.last %},{% endunless %} {% endfor %} ]; var activeFilter = 'coleader'; var btnColeader = document.getElementById('btn-coleader'); var btnLocation = document.getElementById('btn-location'); var container = document.getElementById('collab-container'); function esc(s) { return String(s || '') .replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); } function shuffle(arr) { for (var i = arr.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var t = arr[i]; arr[i] = arr[j]; arr[j] = t; } return arr; } function cardHtml(p) { var avatar = (p.photo && p.photo !== '') ? '

' + esc(p.name) + '

' : '' + esc(p.initials) + ''; var role = esc(p.role) + (p.subrole ? ' · ' + esc(p.subrole) : ''); var email = (p.email && p.email !== '') ? '' + ' ' + esc(p.email) + '' : ''; var site = (p.website && p.website !== '') ? '' + ' Website' : ''; return '
' + '
' + avatar + '
' + '
' + '

' + esc(p.name) + '

' + '

' + role + '

' + '

' + esc(p.city) + ' · ' + esc(p.country) + '

' + email + site + '
'; } function sectionHtml(title, people) { var header = title ? '

' + esc(title) + '

' : ''; return '
' + header + '
' + shuffle(people.slice()).map(cardHtml).join('') + '
'; } function render() { var html = ''; if (activeFilter === 'coleader') { var leaders = PEOPLE.filter(function (p) { return p.coleader; }); var others = PEOPLE.filter(function (p) { return !p.coleader; }); html += sectionHtml('Co-leaders', leaders); html += sectionHtml('Team and Collaborators', others); } else if (activeFilter === 'location') { var groups = {}; PEOPLE.forEach(function (p) { var key = p.institution || (p.city + ' · ' + p.country); (groups[key] = groups[key] || []).push(p); }); shuffle(Object.keys(groups)).forEach(function (inst) { html += sectionHtml(inst, groups[inst]); }); } else { html += sectionHtml(null, PEOPLE); } container.innerHTML = html; } btnColeader.addEventListener('click', function () { activeFilter = (activeFilter === 'coleader') ? null : 'coleader'; btnColeader.classList.toggle('active', activeFilter === 'coleader'); btnLocation.classList.remove('active'); render(); }); btnLocation.addEventListener('click', function () { activeFilter = (activeFilter === 'location') ? null : 'location'; btnLocation.classList.toggle('active', activeFilter === 'location'); btnColeader.classList.remove('active'); render(); }); btnColeader.classList.add('active'); render(); }()); </script>