, but this code // executes before the first paint, when

Â鶹Çø

is not yet present. The // classes are added to so styling immediately reflects the current // toolbar state. The classes are removed after the toolbar completes // initialization. const classesToAdd = ['toolbar-loading', 'toolbar-anti-flicker']; if (toolbarState) { const { orientation, hasActiveTab, isFixed, activeTray, activeTabId, isOriented, userButtonMinWidth } = toolbarState; classesToAdd.push( orientation ? `toolbar-` + orientation + `` : 'toolbar-horizontal', ); if (hasActiveTab !== false) { classesToAdd.push('toolbar-tray-open'); } if (isFixed) { classesToAdd.push('toolbar-fixed'); } if (isOriented) { classesToAdd.push('toolbar-oriented'); } if (activeTray) { // These styles are added so the active tab/tray styles are present // immediately instead of "flickering" on as the toolbar initializes. In // instances where a tray is lazy loaded, these styles facilitate the // lazy loaded tray appearing gracefully and without reflow. const styleContent = ` .toolbar-loading #` + activeTabId + ` { background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%); } .toolbar-loading #` + activeTabId + `-tray { display: block; box-shadow: -1px 0 5px 2px rgb(0 0 0 / 33%); border-right: 1px solid #aaa; background-color: #f5f5f5; z-index: 0; } .toolbar-loading.toolbar-vertical.toolbar-tray-open #` + activeTabId + `-tray { width: 15rem; height: 100vh; } .toolbar-loading.toolbar-horizontal :not(#` + activeTray + `) > .toolbar-lining {opacity: 0}`; const style = document.createElement('style'); style.textContent = styleContent; style.setAttribute('data-toolbar-anti-flicker-loading', true); document.querySelector('head').appendChild(style); if (userButtonMinWidth) { const userButtonStyle = document.createElement('style'); userButtonStyle.textContent = `#toolbar-item-user {min-width: ` + userButtonMinWidth +`px;}` document.querySelector('head').appendChild(userButtonStyle); } } } document.querySelector('html').classList.add(...classesToAdd); })(); David Wunder | Â鶹Çø

Â鶹Çø

Skip to main content

Dr. David Wunder

Dean for Faculty Development and Research Initiatives

Education

PhD, Environmental Engineering, University of Minnesota
MS, Civil and Environmental Engineering, University of Iowa
BS, Civil Engineering, Missouri University of Science and Technology

Professional Experience

  • Currently Professor of Engineering and Calvin’s Dean for Faculty Development: Research, Teaching, and Learning
  • Founding Executive Director, Clean Water Institute of Calvin College
  • Past research projects in the following areas:
    • The fate and impact of pharmaceutical antibiotics in biofiltration processes used for drinking water production
    • The production and capacity of bagasse charcoal for dual use as a water treatment media and a fuel supply for stoves
    • The role of divalent cations in wastewater treatments processes
  • Process engineering for varied municipal regional water projects, specializing in the optimization of biological treatment processes
  • 10 years of experience with evaluation, planning, design, and construction of drinking water and wastewater treatment systems (prior to joining the Calvin faculty in 2004)

Current research and scholarship

  • Reactivation of an ancient Roman water system for modern use in Umm al-Jimal, Jordan
  • Sustainable disinfection practices for rural community water supplies in Ecuador
  • Evaluation and assessment of novel and proven point-of-use drinking water filtration technologies

Research and Scholarship