From 362eae4af34b619803e566e67fdb40ecb898bbc4 Mon Sep 17 00:00:00 2001 From: samanthacsik Date: Fri, 6 Oct 2023 10:36:19 -0700 Subject: [PATCH 1/8] updating slide formatting (done slides 1- 77) --- .../quarto-ext/fontawesome/_extension.yml | 7 + .../quarto-ext/fontawesome/assets/css/all.css | 7971 +++++++++++++++++ .../fontawesome/assets/css/latex-fontsize.css | 30 + .../FontAwesome6Brands-Regular-400.ttf | Bin 0 -> 180104 bytes .../FontAwesome6Brands-Regular-400.woff2 | Bin 0 -> 92140 bytes .../webfonts/FontAwesome6Free-Regular-400.ttf | Bin 0 -> 76072 bytes .../FontAwesome6Free-Regular-400.woff2 | Bin 0 -> 25124 bytes .../webfonts/FontAwesome6Free-Solid-900.ttf | Bin 0 -> 384736 bytes .../webfonts/FontAwesome6Free-Solid-900.woff2 | Bin 0 -> 133940 bytes .../assets/webfonts/fa-brands-400.ttf | Bin 0 -> 181852 bytes .../assets/webfonts/fa-brands-400.woff2 | Bin 0 -> 105536 bytes .../assets/webfonts/fa-regular-400.ttf | Bin 0 -> 60520 bytes .../assets/webfonts/fa-regular-400.woff2 | Bin 0 -> 23940 bytes .../assets/webfonts/fa-solid-900.ttf | Bin 0 -> 388460 bytes .../assets/webfonts/fa-solid-900.woff2 | Bin 0 -> 154228 bytes .../assets/webfonts/fa-v4compatibility.ttf | Bin 0 -> 10556 bytes .../assets/webfonts/fa-v4compatibility.woff2 | Bin 0 -> 4960 bytes .../quarto-ext/fontawesome/fontawesome.lua | 84 + index.html | 1193 ++- index.qmd | 91 +- index_files/libs/clipboard/clipboard.min.js | 4 +- .../libs/htmlwidgets-1.6.2/htmlwidgets.js | 901 ++ .../libs/leaflet-binding-2.1.2/leaflet.js | 2785 ++++++ .../leaflet-providers-plugin.js | 3 + .../FontAwesome6Brands-Regular-400.ttf | Bin 0 -> 180104 bytes .../FontAwesome6Brands-Regular-400.woff2 | Bin 0 -> 92140 bytes .../1e21o67/FontAwesome6Free-Regular-400.ttf | Bin 0 -> 76072 bytes .../FontAwesome6Free-Regular-400.woff2 | Bin 0 -> 25124 bytes .../1e21o67/FontAwesome6Free-Solid-900.ttf | Bin 0 -> 384736 bytes .../1e21o67/FontAwesome6Free-Solid-900.woff2 | Bin 0 -> 133940 bytes .../30yblb/FontAwesome6Free-Regular-400.woff2 | Bin 0 -> 25124 bytes .../quarto-contrib/fontawesome6-0.1.0/all.css | 7971 +++++++++++++++++ .../fontawesome6-0.1.0/latex-fontsize.css | 30 + index_files/libs/quarto-html/light-border.css | 1 + .../quarto-syntax-highlighting.css | 35 + .../fonts/league-gothic/league-gothic.eot | Bin .../fonts/league-gothic/league-gothic.ttf | Bin .../fonts/league-gothic/league-gothic.woff | Bin .../source-sans-pro-italic.eot | Bin .../source-sans-pro-italic.woff | Bin .../source-sans-pro-regular.eot | Bin .../source-sans-pro-regular.woff | Bin .../source-sans-pro-semibold.eot | Bin .../source-sans-pro-semibold.woff | Bin .../source-sans-pro-semibolditalic.eot | Bin .../source-sans-pro-semibolditalic.woff | Bin .../libs/revealjs/dist/theme/quarto.css | 4 +- .../libs/revealjs/plugin/markdown/plugin.js | 0 .../libs/revealjs/plugin/math/katex.js | 0 .../revealjs/plugin/pdf-export/pdfexport.js | 3 + .../revealjs/plugin/quarto-support/footer.css | 1 + .../plugin/reveal-menu/quarto-menu.js | 3 + meds_styles.scss | 27 +- sections/0-prerequisites.qmd | 10 +- sections/1-what-is-shiny.qmd | 48 +- sections/2-setup.qmd | 24 +- sections/3-first-app.qmd | 188 +- sections/4.1-second-app-v1.qmd | 154 +- 58 files changed, 20694 insertions(+), 874 deletions(-) create mode 100644 _extensions/quarto-ext/fontawesome/_extension.yml create mode 100644 _extensions/quarto-ext/fontawesome/assets/css/all.css create mode 100644 _extensions/quarto-ext/fontawesome/assets/css/latex-fontsize.css create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Brands-Regular-400.ttf create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Brands-Regular-400.woff2 create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Regular-400.ttf create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Regular-400.woff2 create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Solid-900.ttf create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Solid-900.woff2 create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.ttf create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.woff2 create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.ttf create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.woff2 create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.ttf create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.woff2 create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.ttf create mode 100644 _extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.woff2 create mode 100644 _extensions/quarto-ext/fontawesome/fontawesome.lua create mode 100644 index_files/libs/htmlwidgets-1.6.2/htmlwidgets.js create mode 100644 index_files/libs/leaflet-binding-2.1.2/leaflet.js create mode 100644 index_files/libs/leaflet-providers-plugin-2.1.2/leaflet-providers-plugin.js create mode 100644 index_files/libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/FontAwesome6Brands-Regular-400.ttf create mode 100644 index_files/libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/FontAwesome6Brands-Regular-400.woff2 create mode 100644 index_files/libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/FontAwesome6Free-Regular-400.ttf create mode 100644 index_files/libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/FontAwesome6Free-Regular-400.woff2 create mode 100644 index_files/libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/FontAwesome6Free-Solid-900.ttf create mode 100644 index_files/libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/FontAwesome6Free-Solid-900.woff2 create mode 100644 index_files/libs/quarto-contrib/fontawesome6-0.1.0/30yblb/FontAwesome6Free-Regular-400.woff2 create mode 100644 index_files/libs/quarto-contrib/fontawesome6-0.1.0/all.css create mode 100644 index_files/libs/quarto-contrib/fontawesome6-0.1.0/latex-fontsize.css create mode 100644 index_files/libs/quarto-html/light-border.css mode change 100755 => 100644 index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot mode change 100755 => 100644 index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf mode change 100755 => 100644 index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff mode change 100755 => 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot mode change 100755 => 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff mode change 100755 => 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot mode change 100755 => 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff mode change 100755 => 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot mode change 100755 => 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff mode change 100755 => 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot mode change 100755 => 100644 index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff mode change 100755 => 100644 index_files/libs/revealjs/plugin/markdown/plugin.js mode change 100755 => 100644 index_files/libs/revealjs/plugin/math/katex.js diff --git a/_extensions/quarto-ext/fontawesome/_extension.yml b/_extensions/quarto-ext/fontawesome/_extension.yml new file mode 100644 index 0000000..c0787a8 --- /dev/null +++ b/_extensions/quarto-ext/fontawesome/_extension.yml @@ -0,0 +1,7 @@ +title: Font Awesome support +author: Carlos Scheidegger +version: 1.1.0 +quarto-required: ">=1.2.269" +contributes: + shortcodes: + - fontawesome.lua diff --git a/_extensions/quarto-ext/fontawesome/assets/css/all.css b/_extensions/quarto-ext/fontawesome/assets/css/all.css new file mode 100644 index 0000000..3e24980 --- /dev/null +++ b/_extensions/quarto-ext/fontawesome/assets/css/all.css @@ -0,0 +1,7971 @@ +/*! + * Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2023 Fonticons, Inc. + */ +.fa { + font-family: var(--fa-style-family, "Font Awesome 6 Free"); + font-weight: var(--fa-style, 900); } + +.fa, +.fa-classic, +.fa-sharp, +.fas, +.fa-solid, +.far, +.fa-regular, +.fab, +.fa-brands, +.fal, +.fa-light, +.fat, +.fa-thin, +.fad, +.fa-duotone { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--fa-display, inline-block); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; } + +.fas, +.fa-classic, +.fa-solid, +.far, +.fa-regular { + font-family: 'Font Awesome 6 Free'; } + +.fab, +.fa-brands { + font-family: 'Font Awesome 6 Brands'; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; } + +.fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; } + +.fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; } + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; } + +.fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; } + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: calc(var(--fa-li-width, 2em) * -1); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; } + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); } + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); } + +.fa-beat { + -webkit-animation-name: fa-beat; + animation-name: fa-beat; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-bounce { + -webkit-animation-name: fa-bounce; + animation-name: fa-bounce; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + +.fa-fade { + -webkit-animation-name: fa-fade; + animation-name: fa-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-beat-fade { + -webkit-animation-name: fa-beat-fade; + animation-name: fa-beat-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-flip { + -webkit-animation-name: fa-flip; + animation-name: fa-flip; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-shake { + -webkit-animation-name: fa-shake; + animation-name: fa-shake; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 2s); + animation-duration: var(--fa-animation-duration, 2s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin-reverse { + --fa-animation-direction: reverse; } + +.fa-pulse, +.fa-spin-pulse { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); + animation-timing-function: var(--fa-animation-timing, steps(8)); } + +@media (prefers-reduced-motion: reduce) { + .fa-beat, + .fa-bounce, + .fa-fade, + .fa-beat-fade, + .fa-flip, + .fa-pulse, + .fa-shake, + .fa-spin, + .fa-spin-pulse { + -webkit-animation-delay: -1ms; + animation-delay: -1ms; + -webkit-animation-duration: 1ms; + animation-duration: 1ms; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + -webkit-transition-delay: 0s; + transition-delay: 0s; + -webkit-transition-duration: 0s; + transition-duration: 0s; } } + +@-webkit-keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@-webkit-keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@-webkit-keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@-webkit-keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@-webkit-keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@-webkit-keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +.fa-rotate-by { + -webkit-transform: rotate(var(--fa-rotate-angle, none)); + transform: rotate(var(--fa-rotate-angle, none)); } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--fa-stack-z-index, auto); } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: var(--fa-inverse, #fff); } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ + +.fa-0::before { + content: "\30"; } + +.fa-1::before { + content: "\31"; } + +.fa-2::before { + content: "\32"; } + +.fa-3::before { + content: "\33"; } + +.fa-4::before { + content: "\34"; } + +.fa-5::before { + content: "\35"; } + +.fa-6::before { + content: "\36"; } + +.fa-7::before { + content: "\37"; } + +.fa-8::before { + content: "\38"; } + +.fa-9::before { + content: "\39"; } + +.fa-fill-drip::before { + content: "\f576"; } + +.fa-arrows-to-circle::before { + content: "\e4bd"; } + +.fa-circle-chevron-right::before { + content: "\f138"; } + +.fa-chevron-circle-right::before { + content: "\f138"; } + +.fa-at::before { + content: "\40"; } + +.fa-trash-can::before { + content: "\f2ed"; } + +.fa-trash-alt::before { + content: "\f2ed"; } + +.fa-text-height::before { + content: "\f034"; } + +.fa-user-xmark::before { + content: "\f235"; } + +.fa-user-times::before { + content: "\f235"; } + +.fa-stethoscope::before { + content: "\f0f1"; } + +.fa-message::before { + content: "\f27a"; } + +.fa-comment-alt::before { + content: "\f27a"; } + +.fa-info::before { + content: "\f129"; } + +.fa-down-left-and-up-right-to-center::before { + content: "\f422"; } + +.fa-compress-alt::before { + content: "\f422"; } + +.fa-explosion::before { + content: "\e4e9"; } + +.fa-file-lines::before { + content: "\f15c"; } + +.fa-file-alt::before { + content: "\f15c"; } + +.fa-file-text::before { + content: "\f15c"; } + +.fa-wave-square::before { + content: "\f83e"; } + +.fa-ring::before { + content: "\f70b"; } + +.fa-building-un::before { + content: "\e4d9"; } + +.fa-dice-three::before { + content: "\f527"; } + +.fa-calendar-days::before { + content: "\f073"; } + +.fa-calendar-alt::before { + content: "\f073"; } + +.fa-anchor-circle-check::before { + content: "\e4aa"; } + +.fa-building-circle-arrow-right::before { + content: "\e4d1"; } + +.fa-volleyball::before { + content: "\f45f"; } + +.fa-volleyball-ball::before { + content: "\f45f"; } + +.fa-arrows-up-to-line::before { + content: "\e4c2"; } + +.fa-sort-down::before { + content: "\f0dd"; } + +.fa-sort-desc::before { + content: "\f0dd"; } + +.fa-circle-minus::before { + content: "\f056"; } + +.fa-minus-circle::before { + content: "\f056"; } + +.fa-door-open::before { + content: "\f52b"; } + +.fa-right-from-bracket::before { + content: "\f2f5"; } + +.fa-sign-out-alt::before { + content: "\f2f5"; } + +.fa-atom::before { + content: "\f5d2"; } + +.fa-soap::before { + content: "\e06e"; } + +.fa-icons::before { + content: "\f86d"; } + +.fa-heart-music-camera-bolt::before { + content: "\f86d"; } + +.fa-microphone-lines-slash::before { + content: "\f539"; } + +.fa-microphone-alt-slash::before { + content: "\f539"; } + +.fa-bridge-circle-check::before { + content: "\e4c9"; } + +.fa-pump-medical::before { + content: "\e06a"; } + +.fa-fingerprint::before { + content: "\f577"; } + +.fa-hand-point-right::before { + content: "\f0a4"; } + +.fa-magnifying-glass-location::before { + content: "\f689"; } + +.fa-search-location::before { + content: "\f689"; } + +.fa-forward-step::before { + content: "\f051"; } + +.fa-step-forward::before { + content: "\f051"; } + +.fa-face-smile-beam::before { + content: "\f5b8"; } + +.fa-smile-beam::before { + content: "\f5b8"; } + +.fa-flag-checkered::before { + content: "\f11e"; } + +.fa-football::before { + content: "\f44e"; } + +.fa-football-ball::before { + content: "\f44e"; } + +.fa-school-circle-exclamation::before { + content: "\e56c"; } + +.fa-crop::before { + content: "\f125"; } + +.fa-angles-down::before { + content: "\f103"; } + +.fa-angle-double-down::before { + content: "\f103"; } + +.fa-users-rectangle::before { + content: "\e594"; } + +.fa-people-roof::before { + content: "\e537"; } + +.fa-people-line::before { + content: "\e534"; } + +.fa-beer-mug-empty::before { + content: "\f0fc"; } + +.fa-beer::before { + content: "\f0fc"; } + +.fa-diagram-predecessor::before { + content: "\e477"; } + +.fa-arrow-up-long::before { + content: "\f176"; } + +.fa-long-arrow-up::before { + content: "\f176"; } + +.fa-fire-flame-simple::before { + content: "\f46a"; } + +.fa-burn::before { + content: "\f46a"; } + +.fa-person::before { + content: "\f183"; } + +.fa-male::before { + content: "\f183"; } + +.fa-laptop::before { + content: "\f109"; } + +.fa-file-csv::before { + content: "\f6dd"; } + +.fa-menorah::before { + content: "\f676"; } + +.fa-truck-plane::before { + content: "\e58f"; } + +.fa-record-vinyl::before { + content: "\f8d9"; } + +.fa-face-grin-stars::before { + content: "\f587"; } + +.fa-grin-stars::before { + content: "\f587"; } + +.fa-bong::before { + content: "\f55c"; } + +.fa-spaghetti-monster-flying::before { + content: "\f67b"; } + +.fa-pastafarianism::before { + content: "\f67b"; } + +.fa-arrow-down-up-across-line::before { + content: "\e4af"; } + +.fa-spoon::before { + content: "\f2e5"; } + +.fa-utensil-spoon::before { + content: "\f2e5"; } + +.fa-jar-wheat::before { + content: "\e517"; } + +.fa-envelopes-bulk::before { + content: "\f674"; } + +.fa-mail-bulk::before { + content: "\f674"; } + +.fa-file-circle-exclamation::before { + content: "\e4eb"; } + +.fa-circle-h::before { + content: "\f47e"; } + +.fa-hospital-symbol::before { + content: "\f47e"; } + +.fa-pager::before { + content: "\f815"; } + +.fa-address-book::before { + content: "\f2b9"; } + +.fa-contact-book::before { + content: "\f2b9"; } + +.fa-strikethrough::before { + content: "\f0cc"; } + +.fa-k::before { + content: "\4b"; } + +.fa-landmark-flag::before { + content: "\e51c"; } + +.fa-pencil::before { + content: "\f303"; } + +.fa-pencil-alt::before { + content: "\f303"; } + +.fa-backward::before { + content: "\f04a"; } + +.fa-caret-right::before { + content: "\f0da"; } + +.fa-comments::before { + content: "\f086"; } + +.fa-paste::before { + content: "\f0ea"; } + +.fa-file-clipboard::before { + content: "\f0ea"; } + +.fa-code-pull-request::before { + content: "\e13c"; } + +.fa-clipboard-list::before { + content: "\f46d"; } + +.fa-truck-ramp-box::before { + content: "\f4de"; } + +.fa-truck-loading::before { + content: "\f4de"; } + +.fa-user-check::before { + content: "\f4fc"; } + +.fa-vial-virus::before { + content: "\e597"; } + +.fa-sheet-plastic::before { + content: "\e571"; } + +.fa-blog::before { + content: "\f781"; } + +.fa-user-ninja::before { + content: "\f504"; } + +.fa-person-arrow-up-from-line::before { + content: "\e539"; } + +.fa-scroll-torah::before { + content: "\f6a0"; } + +.fa-torah::before { + content: "\f6a0"; } + +.fa-broom-ball::before { + content: "\f458"; } + +.fa-quidditch::before { + content: "\f458"; } + +.fa-quidditch-broom-ball::before { + content: "\f458"; } + +.fa-toggle-off::before { + content: "\f204"; } + +.fa-box-archive::before { + content: "\f187"; } + +.fa-archive::before { + content: "\f187"; } + +.fa-person-drowning::before { + content: "\e545"; } + +.fa-arrow-down-9-1::before { + content: "\f886"; } + +.fa-sort-numeric-desc::before { + content: "\f886"; } + +.fa-sort-numeric-down-alt::before { + content: "\f886"; } + +.fa-face-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-spray-can::before { + content: "\f5bd"; } + +.fa-truck-monster::before { + content: "\f63b"; } + +.fa-w::before { + content: "\57"; } + +.fa-earth-africa::before { + content: "\f57c"; } + +.fa-globe-africa::before { + content: "\f57c"; } + +.fa-rainbow::before { + content: "\f75b"; } + +.fa-circle-notch::before { + content: "\f1ce"; } + +.fa-tablet-screen-button::before { + content: "\f3fa"; } + +.fa-tablet-alt::before { + content: "\f3fa"; } + +.fa-paw::before { + content: "\f1b0"; } + +.fa-cloud::before { + content: "\f0c2"; } + +.fa-trowel-bricks::before { + content: "\e58a"; } + +.fa-face-flushed::before { + content: "\f579"; } + +.fa-flushed::before { + content: "\f579"; } + +.fa-hospital-user::before { + content: "\f80d"; } + +.fa-tent-arrow-left-right::before { + content: "\e57f"; } + +.fa-gavel::before { + content: "\f0e3"; } + +.fa-legal::before { + content: "\f0e3"; } + +.fa-binoculars::before { + content: "\f1e5"; } + +.fa-microphone-slash::before { + content: "\f131"; } + +.fa-box-tissue::before { + content: "\e05b"; } + +.fa-motorcycle::before { + content: "\f21c"; } + +.fa-bell-concierge::before { + content: "\f562"; } + +.fa-concierge-bell::before { + content: "\f562"; } + +.fa-pen-ruler::before { + content: "\f5ae"; } + +.fa-pencil-ruler::before { + content: "\f5ae"; } + +.fa-people-arrows::before { + content: "\e068"; } + +.fa-people-arrows-left-right::before { + content: "\e068"; } + +.fa-mars-and-venus-burst::before { + content: "\e523"; } + +.fa-square-caret-right::before { + content: "\f152"; } + +.fa-caret-square-right::before { + content: "\f152"; } + +.fa-scissors::before { + content: "\f0c4"; } + +.fa-cut::before { + content: "\f0c4"; } + +.fa-sun-plant-wilt::before { + content: "\e57a"; } + +.fa-toilets-portable::before { + content: "\e584"; } + +.fa-hockey-puck::before { + content: "\f453"; } + +.fa-table::before { + content: "\f0ce"; } + +.fa-magnifying-glass-arrow-right::before { + content: "\e521"; } + +.fa-tachograph-digital::before { + content: "\f566"; } + +.fa-digital-tachograph::before { + content: "\f566"; } + +.fa-users-slash::before { + content: "\e073"; } + +.fa-clover::before { + content: "\e139"; } + +.fa-reply::before { + content: "\f3e5"; } + +.fa-mail-reply::before { + content: "\f3e5"; } + +.fa-star-and-crescent::before { + content: "\f699"; } + +.fa-house-fire::before { + content: "\e50c"; } + +.fa-square-minus::before { + content: "\f146"; } + +.fa-minus-square::before { + content: "\f146"; } + +.fa-helicopter::before { + content: "\f533"; } + +.fa-compass::before { + content: "\f14e"; } + +.fa-square-caret-down::before { + content: "\f150"; } + +.fa-caret-square-down::before { + content: "\f150"; } + +.fa-file-circle-question::before { + content: "\e4ef"; } + +.fa-laptop-code::before { + content: "\f5fc"; } + +.fa-swatchbook::before { + content: "\f5c3"; } + +.fa-prescription-bottle::before { + content: "\f485"; } + +.fa-bars::before { + content: "\f0c9"; } + +.fa-navicon::before { + content: "\f0c9"; } + +.fa-people-group::before { + content: "\e533"; } + +.fa-hourglass-end::before { + content: "\f253"; } + +.fa-hourglass-3::before { + content: "\f253"; } + +.fa-heart-crack::before { + content: "\f7a9"; } + +.fa-heart-broken::before { + content: "\f7a9"; } + +.fa-square-up-right::before { + content: "\f360"; } + +.fa-external-link-square-alt::before { + content: "\f360"; } + +.fa-face-kiss-beam::before { + content: "\f597"; } + +.fa-kiss-beam::before { + content: "\f597"; } + +.fa-film::before { + content: "\f008"; } + +.fa-ruler-horizontal::before { + content: "\f547"; } + +.fa-people-robbery::before { + content: "\e536"; } + +.fa-lightbulb::before { + content: "\f0eb"; } + +.fa-caret-left::before { + content: "\f0d9"; } + +.fa-circle-exclamation::before { + content: "\f06a"; } + +.fa-exclamation-circle::before { + content: "\f06a"; } + +.fa-school-circle-xmark::before { + content: "\e56d"; } + +.fa-arrow-right-from-bracket::before { + content: "\f08b"; } + +.fa-sign-out::before { + content: "\f08b"; } + +.fa-circle-chevron-down::before { + content: "\f13a"; } + +.fa-chevron-circle-down::before { + content: "\f13a"; } + +.fa-unlock-keyhole::before { + content: "\f13e"; } + +.fa-unlock-alt::before { + content: "\f13e"; } + +.fa-cloud-showers-heavy::before { + content: "\f740"; } + +.fa-headphones-simple::before { + content: "\f58f"; } + +.fa-headphones-alt::before { + content: "\f58f"; } + +.fa-sitemap::before { + content: "\f0e8"; } + +.fa-circle-dollar-to-slot::before { + content: "\f4b9"; } + +.fa-donate::before { + content: "\f4b9"; } + +.fa-memory::before { + content: "\f538"; } + +.fa-road-spikes::before { + content: "\e568"; } + +.fa-fire-burner::before { + content: "\e4f1"; } + +.fa-flag::before { + content: "\f024"; } + +.fa-hanukiah::before { + content: "\f6e6"; } + +.fa-feather::before { + content: "\f52d"; } + +.fa-volume-low::before { + content: "\f027"; } + +.fa-volume-down::before { + content: "\f027"; } + +.fa-comment-slash::before { + content: "\f4b3"; } + +.fa-cloud-sun-rain::before { + content: "\f743"; } + +.fa-compress::before { + content: "\f066"; } + +.fa-wheat-awn::before { + content: "\e2cd"; } + +.fa-wheat-alt::before { + content: "\e2cd"; } + +.fa-ankh::before { + content: "\f644"; } + +.fa-hands-holding-child::before { + content: "\e4fa"; } + +.fa-asterisk::before { + content: "\2a"; } + +.fa-square-check::before { + content: "\f14a"; } + +.fa-check-square::before { + content: "\f14a"; } + +.fa-peseta-sign::before { + content: "\e221"; } + +.fa-heading::before { + content: "\f1dc"; } + +.fa-header::before { + content: "\f1dc"; } + +.fa-ghost::before { + content: "\f6e2"; } + +.fa-list::before { + content: "\f03a"; } + +.fa-list-squares::before { + content: "\f03a"; } + +.fa-square-phone-flip::before { + content: "\f87b"; } + +.fa-phone-square-alt::before { + content: "\f87b"; } + +.fa-cart-plus::before { + content: "\f217"; } + +.fa-gamepad::before { + content: "\f11b"; } + +.fa-circle-dot::before { + content: "\f192"; } + +.fa-dot-circle::before { + content: "\f192"; } + +.fa-face-dizzy::before { + content: "\f567"; } + +.fa-dizzy::before { + content: "\f567"; } + +.fa-egg::before { + content: "\f7fb"; } + +.fa-house-medical-circle-xmark::before { + content: "\e513"; } + +.fa-campground::before { + content: "\f6bb"; } + +.fa-folder-plus::before { + content: "\f65e"; } + +.fa-futbol::before { + content: "\f1e3"; } + +.fa-futbol-ball::before { + content: "\f1e3"; } + +.fa-soccer-ball::before { + content: "\f1e3"; } + +.fa-paintbrush::before { + content: "\f1fc"; } + +.fa-paint-brush::before { + content: "\f1fc"; } + +.fa-lock::before { + content: "\f023"; } + +.fa-gas-pump::before { + content: "\f52f"; } + +.fa-hot-tub-person::before { + content: "\f593"; } + +.fa-hot-tub::before { + content: "\f593"; } + +.fa-map-location::before { + content: "\f59f"; } + +.fa-map-marked::before { + content: "\f59f"; } + +.fa-house-flood-water::before { + content: "\e50e"; } + +.fa-tree::before { + content: "\f1bb"; } + +.fa-bridge-lock::before { + content: "\e4cc"; } + +.fa-sack-dollar::before { + content: "\f81d"; } + +.fa-pen-to-square::before { + content: "\f044"; } + +.fa-edit::before { + content: "\f044"; } + +.fa-car-side::before { + content: "\f5e4"; } + +.fa-share-nodes::before { + content: "\f1e0"; } + +.fa-share-alt::before { + content: "\f1e0"; } + +.fa-heart-circle-minus::before { + content: "\e4ff"; } + +.fa-hourglass-half::before { + content: "\f252"; } + +.fa-hourglass-2::before { + content: "\f252"; } + +.fa-microscope::before { + content: "\f610"; } + +.fa-sink::before { + content: "\e06d"; } + +.fa-bag-shopping::before { + content: "\f290"; } + +.fa-shopping-bag::before { + content: "\f290"; } + +.fa-arrow-down-z-a::before { + content: "\f881"; } + +.fa-sort-alpha-desc::before { + content: "\f881"; } + +.fa-sort-alpha-down-alt::before { + content: "\f881"; } + +.fa-mitten::before { + content: "\f7b5"; } + +.fa-person-rays::before { + content: "\e54d"; } + +.fa-users::before { + content: "\f0c0"; } + +.fa-eye-slash::before { + content: "\f070"; } + +.fa-flask-vial::before { + content: "\e4f3"; } + +.fa-hand::before { + content: "\f256"; } + +.fa-hand-paper::before { + content: "\f256"; } + +.fa-om::before { + content: "\f679"; } + +.fa-worm::before { + content: "\e599"; } + +.fa-house-circle-xmark::before { + content: "\e50b"; } + +.fa-plug::before { + content: "\f1e6"; } + +.fa-chevron-up::before { + content: "\f077"; } + +.fa-hand-spock::before { + content: "\f259"; } + +.fa-stopwatch::before { + content: "\f2f2"; } + +.fa-face-kiss::before { + content: "\f596"; } + +.fa-kiss::before { + content: "\f596"; } + +.fa-bridge-circle-xmark::before { + content: "\e4cb"; } + +.fa-face-grin-tongue::before { + content: "\f589"; } + +.fa-grin-tongue::before { + content: "\f589"; } + +.fa-chess-bishop::before { + content: "\f43a"; } + +.fa-face-grin-wink::before { + content: "\f58c"; } + +.fa-grin-wink::before { + content: "\f58c"; } + +.fa-ear-deaf::before { + content: "\f2a4"; } + +.fa-deaf::before { + content: "\f2a4"; } + +.fa-deafness::before { + content: "\f2a4"; } + +.fa-hard-of-hearing::before { + content: "\f2a4"; } + +.fa-road-circle-check::before { + content: "\e564"; } + +.fa-dice-five::before { + content: "\f523"; } + +.fa-square-rss::before { + content: "\f143"; } + +.fa-rss-square::before { + content: "\f143"; } + +.fa-land-mine-on::before { + content: "\e51b"; } + +.fa-i-cursor::before { + content: "\f246"; } + +.fa-stamp::before { + content: "\f5bf"; } + +.fa-stairs::before { + content: "\e289"; } + +.fa-i::before { + content: "\49"; } + +.fa-hryvnia-sign::before { + content: "\f6f2"; } + +.fa-hryvnia::before { + content: "\f6f2"; } + +.fa-pills::before { + content: "\f484"; } + +.fa-face-grin-wide::before { + content: "\f581"; } + +.fa-grin-alt::before { + content: "\f581"; } + +.fa-tooth::before { + content: "\f5c9"; } + +.fa-v::before { + content: "\56"; } + +.fa-bangladeshi-taka-sign::before { + content: "\e2e6"; } + +.fa-bicycle::before { + content: "\f206"; } + +.fa-staff-snake::before { + content: "\e579"; } + +.fa-rod-asclepius::before { + content: "\e579"; } + +.fa-rod-snake::before { + content: "\e579"; } + +.fa-staff-aesculapius::before { + content: "\e579"; } + +.fa-head-side-cough-slash::before { + content: "\e062"; } + +.fa-truck-medical::before { + content: "\f0f9"; } + +.fa-ambulance::before { + content: "\f0f9"; } + +.fa-wheat-awn-circle-exclamation::before { + content: "\e598"; } + +.fa-snowman::before { + content: "\f7d0"; } + +.fa-mortar-pestle::before { + content: "\f5a7"; } + +.fa-road-barrier::before { + content: "\e562"; } + +.fa-school::before { + content: "\f549"; } + +.fa-igloo::before { + content: "\f7ae"; } + +.fa-joint::before { + content: "\f595"; } + +.fa-angle-right::before { + content: "\f105"; } + +.fa-horse::before { + content: "\f6f0"; } + +.fa-q::before { + content: "\51"; } + +.fa-g::before { + content: "\47"; } + +.fa-notes-medical::before { + content: "\f481"; } + +.fa-temperature-half::before { + content: "\f2c9"; } + +.fa-temperature-2::before { + content: "\f2c9"; } + +.fa-thermometer-2::before { + content: "\f2c9"; } + +.fa-thermometer-half::before { + content: "\f2c9"; } + +.fa-dong-sign::before { + content: "\e169"; } + +.fa-capsules::before { + content: "\f46b"; } + +.fa-poo-storm::before { + content: "\f75a"; } + +.fa-poo-bolt::before { + content: "\f75a"; } + +.fa-face-frown-open::before { + content: "\f57a"; } + +.fa-frown-open::before { + content: "\f57a"; } + +.fa-hand-point-up::before { + content: "\f0a6"; } + +.fa-money-bill::before { + content: "\f0d6"; } + +.fa-bookmark::before { + content: "\f02e"; } + +.fa-align-justify::before { + content: "\f039"; } + +.fa-umbrella-beach::before { + content: "\f5ca"; } + +.fa-helmet-un::before { + content: "\e503"; } + +.fa-bullseye::before { + content: "\f140"; } + +.fa-bacon::before { + content: "\f7e5"; } + +.fa-hand-point-down::before { + content: "\f0a7"; } + +.fa-arrow-up-from-bracket::before { + content: "\e09a"; } + +.fa-folder::before { + content: "\f07b"; } + +.fa-folder-blank::before { + content: "\f07b"; } + +.fa-file-waveform::before { + content: "\f478"; } + +.fa-file-medical-alt::before { + content: "\f478"; } + +.fa-radiation::before { + content: "\f7b9"; } + +.fa-chart-simple::before { + content: "\e473"; } + +.fa-mars-stroke::before { + content: "\f229"; } + +.fa-vial::before { + content: "\f492"; } + +.fa-gauge::before { + content: "\f624"; } + +.fa-dashboard::before { + content: "\f624"; } + +.fa-gauge-med::before { + content: "\f624"; } + +.fa-tachometer-alt-average::before { + content: "\f624"; } + +.fa-wand-magic-sparkles::before { + content: "\e2ca"; } + +.fa-magic-wand-sparkles::before { + content: "\e2ca"; } + +.fa-e::before { + content: "\45"; } + +.fa-pen-clip::before { + content: "\f305"; } + +.fa-pen-alt::before { + content: "\f305"; } + +.fa-bridge-circle-exclamation::before { + content: "\e4ca"; } + +.fa-user::before { + content: "\f007"; } + +.fa-school-circle-check::before { + content: "\e56b"; } + +.fa-dumpster::before { + content: "\f793"; } + +.fa-van-shuttle::before { + content: "\f5b6"; } + +.fa-shuttle-van::before { + content: "\f5b6"; } + +.fa-building-user::before { + content: "\e4da"; } + +.fa-square-caret-left::before { + content: "\f191"; } + +.fa-caret-square-left::before { + content: "\f191"; } + +.fa-highlighter::before { + content: "\f591"; } + +.fa-key::before { + content: "\f084"; } + +.fa-bullhorn::before { + content: "\f0a1"; } + +.fa-globe::before { + content: "\f0ac"; } + +.fa-synagogue::before { + content: "\f69b"; } + +.fa-person-half-dress::before { + content: "\e548"; } + +.fa-road-bridge::before { + content: "\e563"; } + +.fa-location-arrow::before { + content: "\f124"; } + +.fa-c::before { + content: "\43"; } + +.fa-tablet-button::before { + content: "\f10a"; } + +.fa-building-lock::before { + content: "\e4d6"; } + +.fa-pizza-slice::before { + content: "\f818"; } + +.fa-money-bill-wave::before { + content: "\f53a"; } + +.fa-chart-area::before { + content: "\f1fe"; } + +.fa-area-chart::before { + content: "\f1fe"; } + +.fa-house-flag::before { + content: "\e50d"; } + +.fa-person-circle-minus::before { + content: "\e540"; } + +.fa-ban::before { + content: "\f05e"; } + +.fa-cancel::before { + content: "\f05e"; } + +.fa-camera-rotate::before { + content: "\e0d8"; } + +.fa-spray-can-sparkles::before { + content: "\f5d0"; } + +.fa-air-freshener::before { + content: "\f5d0"; } + +.fa-star::before { + content: "\f005"; } + +.fa-repeat::before { + content: "\f363"; } + +.fa-cross::before { + content: "\f654"; } + +.fa-box::before { + content: "\f466"; } + +.fa-venus-mars::before { + content: "\f228"; } + +.fa-arrow-pointer::before { + content: "\f245"; } + +.fa-mouse-pointer::before { + content: "\f245"; } + +.fa-maximize::before { + content: "\f31e"; } + +.fa-expand-arrows-alt::before { + content: "\f31e"; } + +.fa-charging-station::before { + content: "\f5e7"; } + +.fa-shapes::before { + content: "\f61f"; } + +.fa-triangle-circle-square::before { + content: "\f61f"; } + +.fa-shuffle::before { + content: "\f074"; } + +.fa-random::before { + content: "\f074"; } + +.fa-person-running::before { + content: "\f70c"; } + +.fa-running::before { + content: "\f70c"; } + +.fa-mobile-retro::before { + content: "\e527"; } + +.fa-grip-lines-vertical::before { + content: "\f7a5"; } + +.fa-spider::before { + content: "\f717"; } + +.fa-hands-bound::before { + content: "\e4f9"; } + +.fa-file-invoice-dollar::before { + content: "\f571"; } + +.fa-plane-circle-exclamation::before { + content: "\e556"; } + +.fa-x-ray::before { + content: "\f497"; } + +.fa-spell-check::before { + content: "\f891"; } + +.fa-slash::before { + content: "\f715"; } + +.fa-computer-mouse::before { + content: "\f8cc"; } + +.fa-mouse::before { + content: "\f8cc"; } + +.fa-arrow-right-to-bracket::before { + content: "\f090"; } + +.fa-sign-in::before { + content: "\f090"; } + +.fa-shop-slash::before { + content: "\e070"; } + +.fa-store-alt-slash::before { + content: "\e070"; } + +.fa-server::before { + content: "\f233"; } + +.fa-virus-covid-slash::before { + content: "\e4a9"; } + +.fa-shop-lock::before { + content: "\e4a5"; } + +.fa-hourglass-start::before { + content: "\f251"; } + +.fa-hourglass-1::before { + content: "\f251"; } + +.fa-blender-phone::before { + content: "\f6b6"; } + +.fa-building-wheat::before { + content: "\e4db"; } + +.fa-person-breastfeeding::before { + content: "\e53a"; } + +.fa-right-to-bracket::before { + content: "\f2f6"; } + +.fa-sign-in-alt::before { + content: "\f2f6"; } + +.fa-venus::before { + content: "\f221"; } + +.fa-passport::before { + content: "\f5ab"; } + +.fa-heart-pulse::before { + content: "\f21e"; } + +.fa-heartbeat::before { + content: "\f21e"; } + +.fa-people-carry-box::before { + content: "\f4ce"; } + +.fa-people-carry::before { + content: "\f4ce"; } + +.fa-temperature-high::before { + content: "\f769"; } + +.fa-microchip::before { + content: "\f2db"; } + +.fa-crown::before { + content: "\f521"; } + +.fa-weight-hanging::before { + content: "\f5cd"; } + +.fa-xmarks-lines::before { + content: "\e59a"; } + +.fa-file-prescription::before { + content: "\f572"; } + +.fa-weight-scale::before { + content: "\f496"; } + +.fa-weight::before { + content: "\f496"; } + +.fa-user-group::before { + content: "\f500"; } + +.fa-user-friends::before { + content: "\f500"; } + +.fa-arrow-up-a-z::before { + content: "\f15e"; } + +.fa-sort-alpha-up::before { + content: "\f15e"; } + +.fa-chess-knight::before { + content: "\f441"; } + +.fa-face-laugh-squint::before { + content: "\f59b"; } + +.fa-laugh-squint::before { + content: "\f59b"; } + +.fa-wheelchair::before { + content: "\f193"; } + +.fa-circle-arrow-up::before { + content: "\f0aa"; } + +.fa-arrow-circle-up::before { + content: "\f0aa"; } + +.fa-toggle-on::before { + content: "\f205"; } + +.fa-person-walking::before { + content: "\f554"; } + +.fa-walking::before { + content: "\f554"; } + +.fa-l::before { + content: "\4c"; } + +.fa-fire::before { + content: "\f06d"; } + +.fa-bed-pulse::before { + content: "\f487"; } + +.fa-procedures::before { + content: "\f487"; } + +.fa-shuttle-space::before { + content: "\f197"; } + +.fa-space-shuttle::before { + content: "\f197"; } + +.fa-face-laugh::before { + content: "\f599"; } + +.fa-laugh::before { + content: "\f599"; } + +.fa-folder-open::before { + content: "\f07c"; } + +.fa-heart-circle-plus::before { + content: "\e500"; } + +.fa-code-fork::before { + content: "\e13b"; } + +.fa-city::before { + content: "\f64f"; } + +.fa-microphone-lines::before { + content: "\f3c9"; } + +.fa-microphone-alt::before { + content: "\f3c9"; } + +.fa-pepper-hot::before { + content: "\f816"; } + +.fa-unlock::before { + content: "\f09c"; } + +.fa-colon-sign::before { + content: "\e140"; } + +.fa-headset::before { + content: "\f590"; } + +.fa-store-slash::before { + content: "\e071"; } + +.fa-road-circle-xmark::before { + content: "\e566"; } + +.fa-user-minus::before { + content: "\f503"; } + +.fa-mars-stroke-up::before { + content: "\f22a"; } + +.fa-mars-stroke-v::before { + content: "\f22a"; } + +.fa-champagne-glasses::before { + content: "\f79f"; } + +.fa-glass-cheers::before { + content: "\f79f"; } + +.fa-clipboard::before { + content: "\f328"; } + +.fa-house-circle-exclamation::before { + content: "\e50a"; } + +.fa-file-arrow-up::before { + content: "\f574"; } + +.fa-file-upload::before { + content: "\f574"; } + +.fa-wifi::before { + content: "\f1eb"; } + +.fa-wifi-3::before { + content: "\f1eb"; } + +.fa-wifi-strong::before { + content: "\f1eb"; } + +.fa-bath::before { + content: "\f2cd"; } + +.fa-bathtub::before { + content: "\f2cd"; } + +.fa-underline::before { + content: "\f0cd"; } + +.fa-user-pen::before { + content: "\f4ff"; } + +.fa-user-edit::before { + content: "\f4ff"; } + +.fa-signature::before { + content: "\f5b7"; } + +.fa-stroopwafel::before { + content: "\f551"; } + +.fa-bold::before { + content: "\f032"; } + +.fa-anchor-lock::before { + content: "\e4ad"; } + +.fa-building-ngo::before { + content: "\e4d7"; } + +.fa-manat-sign::before { + content: "\e1d5"; } + +.fa-not-equal::before { + content: "\f53e"; } + +.fa-border-top-left::before { + content: "\f853"; } + +.fa-border-style::before { + content: "\f853"; } + +.fa-map-location-dot::before { + content: "\f5a0"; } + +.fa-map-marked-alt::before { + content: "\f5a0"; } + +.fa-jedi::before { + content: "\f669"; } + +.fa-square-poll-vertical::before { + content: "\f681"; } + +.fa-poll::before { + content: "\f681"; } + +.fa-mug-hot::before { + content: "\f7b6"; } + +.fa-car-battery::before { + content: "\f5df"; } + +.fa-battery-car::before { + content: "\f5df"; } + +.fa-gift::before { + content: "\f06b"; } + +.fa-dice-two::before { + content: "\f528"; } + +.fa-chess-queen::before { + content: "\f445"; } + +.fa-glasses::before { + content: "\f530"; } + +.fa-chess-board::before { + content: "\f43c"; } + +.fa-building-circle-check::before { + content: "\e4d2"; } + +.fa-person-chalkboard::before { + content: "\e53d"; } + +.fa-mars-stroke-right::before { + content: "\f22b"; } + +.fa-mars-stroke-h::before { + content: "\f22b"; } + +.fa-hand-back-fist::before { + content: "\f255"; } + +.fa-hand-rock::before { + content: "\f255"; } + +.fa-square-caret-up::before { + content: "\f151"; } + +.fa-caret-square-up::before { + content: "\f151"; } + +.fa-cloud-showers-water::before { + content: "\e4e4"; } + +.fa-chart-bar::before { + content: "\f080"; } + +.fa-bar-chart::before { + content: "\f080"; } + +.fa-hands-bubbles::before { + content: "\e05e"; } + +.fa-hands-wash::before { + content: "\e05e"; } + +.fa-less-than-equal::before { + content: "\f537"; } + +.fa-train::before { + content: "\f238"; } + +.fa-eye-low-vision::before { + content: "\f2a8"; } + +.fa-low-vision::before { + content: "\f2a8"; } + +.fa-crow::before { + content: "\f520"; } + +.fa-sailboat::before { + content: "\e445"; } + +.fa-window-restore::before { + content: "\f2d2"; } + +.fa-square-plus::before { + content: "\f0fe"; } + +.fa-plus-square::before { + content: "\f0fe"; } + +.fa-torii-gate::before { + content: "\f6a1"; } + +.fa-frog::before { + content: "\f52e"; } + +.fa-bucket::before { + content: "\e4cf"; } + +.fa-image::before { + content: "\f03e"; } + +.fa-microphone::before { + content: "\f130"; } + +.fa-cow::before { + content: "\f6c8"; } + +.fa-caret-up::before { + content: "\f0d8"; } + +.fa-screwdriver::before { + content: "\f54a"; } + +.fa-folder-closed::before { + content: "\e185"; } + +.fa-house-tsunami::before { + content: "\e515"; } + +.fa-square-nfi::before { + content: "\e576"; } + +.fa-arrow-up-from-ground-water::before { + content: "\e4b5"; } + +.fa-martini-glass::before { + content: "\f57b"; } + +.fa-glass-martini-alt::before { + content: "\f57b"; } + +.fa-rotate-left::before { + content: "\f2ea"; } + +.fa-rotate-back::before { + content: "\f2ea"; } + +.fa-rotate-backward::before { + content: "\f2ea"; } + +.fa-undo-alt::before { + content: "\f2ea"; } + +.fa-table-columns::before { + content: "\f0db"; } + +.fa-columns::before { + content: "\f0db"; } + +.fa-lemon::before { + content: "\f094"; } + +.fa-head-side-mask::before { + content: "\e063"; } + +.fa-handshake::before { + content: "\f2b5"; } + +.fa-gem::before { + content: "\f3a5"; } + +.fa-dolly::before { + content: "\f472"; } + +.fa-dolly-box::before { + content: "\f472"; } + +.fa-smoking::before { + content: "\f48d"; } + +.fa-minimize::before { + content: "\f78c"; } + +.fa-compress-arrows-alt::before { + content: "\f78c"; } + +.fa-monument::before { + content: "\f5a6"; } + +.fa-snowplow::before { + content: "\f7d2"; } + +.fa-angles-right::before { + content: "\f101"; } + +.fa-angle-double-right::before { + content: "\f101"; } + +.fa-cannabis::before { + content: "\f55f"; } + +.fa-circle-play::before { + content: "\f144"; } + +.fa-play-circle::before { + content: "\f144"; } + +.fa-tablets::before { + content: "\f490"; } + +.fa-ethernet::before { + content: "\f796"; } + +.fa-euro-sign::before { + content: "\f153"; } + +.fa-eur::before { + content: "\f153"; } + +.fa-euro::before { + content: "\f153"; } + +.fa-chair::before { + content: "\f6c0"; } + +.fa-circle-check::before { + content: "\f058"; } + +.fa-check-circle::before { + content: "\f058"; } + +.fa-circle-stop::before { + content: "\f28d"; } + +.fa-stop-circle::before { + content: "\f28d"; } + +.fa-compass-drafting::before { + content: "\f568"; } + +.fa-drafting-compass::before { + content: "\f568"; } + +.fa-plate-wheat::before { + content: "\e55a"; } + +.fa-icicles::before { + content: "\f7ad"; } + +.fa-person-shelter::before { + content: "\e54f"; } + +.fa-neuter::before { + content: "\f22c"; } + +.fa-id-badge::before { + content: "\f2c1"; } + +.fa-marker::before { + content: "\f5a1"; } + +.fa-face-laugh-beam::before { + content: "\f59a"; } + +.fa-laugh-beam::before { + content: "\f59a"; } + +.fa-helicopter-symbol::before { + content: "\e502"; } + +.fa-universal-access::before { + content: "\f29a"; } + +.fa-circle-chevron-up::before { + content: "\f139"; } + +.fa-chevron-circle-up::before { + content: "\f139"; } + +.fa-lari-sign::before { + content: "\e1c8"; } + +.fa-volcano::before { + content: "\f770"; } + +.fa-person-walking-dashed-line-arrow-right::before { + content: "\e553"; } + +.fa-sterling-sign::before { + content: "\f154"; } + +.fa-gbp::before { + content: "\f154"; } + +.fa-pound-sign::before { + content: "\f154"; } + +.fa-viruses::before { + content: "\e076"; } + +.fa-square-person-confined::before { + content: "\e577"; } + +.fa-user-tie::before { + content: "\f508"; } + +.fa-arrow-down-long::before { + content: "\f175"; } + +.fa-long-arrow-down::before { + content: "\f175"; } + +.fa-tent-arrow-down-to-line::before { + content: "\e57e"; } + +.fa-certificate::before { + content: "\f0a3"; } + +.fa-reply-all::before { + content: "\f122"; } + +.fa-mail-reply-all::before { + content: "\f122"; } + +.fa-suitcase::before { + content: "\f0f2"; } + +.fa-person-skating::before { + content: "\f7c5"; } + +.fa-skating::before { + content: "\f7c5"; } + +.fa-filter-circle-dollar::before { + content: "\f662"; } + +.fa-funnel-dollar::before { + content: "\f662"; } + +.fa-camera-retro::before { + content: "\f083"; } + +.fa-circle-arrow-down::before { + content: "\f0ab"; } + +.fa-arrow-circle-down::before { + content: "\f0ab"; } + +.fa-file-import::before { + content: "\f56f"; } + +.fa-arrow-right-to-file::before { + content: "\f56f"; } + +.fa-square-arrow-up-right::before { + content: "\f14c"; } + +.fa-external-link-square::before { + content: "\f14c"; } + +.fa-box-open::before { + content: "\f49e"; } + +.fa-scroll::before { + content: "\f70e"; } + +.fa-spa::before { + content: "\f5bb"; } + +.fa-location-pin-lock::before { + content: "\e51f"; } + +.fa-pause::before { + content: "\f04c"; } + +.fa-hill-avalanche::before { + content: "\e507"; } + +.fa-temperature-empty::before { + content: "\f2cb"; } + +.fa-temperature-0::before { + content: "\f2cb"; } + +.fa-thermometer-0::before { + content: "\f2cb"; } + +.fa-thermometer-empty::before { + content: "\f2cb"; } + +.fa-bomb::before { + content: "\f1e2"; } + +.fa-registered::before { + content: "\f25d"; } + +.fa-address-card::before { + content: "\f2bb"; } + +.fa-contact-card::before { + content: "\f2bb"; } + +.fa-vcard::before { + content: "\f2bb"; } + +.fa-scale-unbalanced-flip::before { + content: "\f516"; } + +.fa-balance-scale-right::before { + content: "\f516"; } + +.fa-subscript::before { + content: "\f12c"; } + +.fa-diamond-turn-right::before { + content: "\f5eb"; } + +.fa-directions::before { + content: "\f5eb"; } + +.fa-burst::before { + content: "\e4dc"; } + +.fa-house-laptop::before { + content: "\e066"; } + +.fa-laptop-house::before { + content: "\e066"; } + +.fa-face-tired::before { + content: "\f5c8"; } + +.fa-tired::before { + content: "\f5c8"; } + +.fa-money-bills::before { + content: "\e1f3"; } + +.fa-smog::before { + content: "\f75f"; } + +.fa-crutch::before { + content: "\f7f7"; } + +.fa-cloud-arrow-up::before { + content: "\f0ee"; } + +.fa-cloud-upload::before { + content: "\f0ee"; } + +.fa-cloud-upload-alt::before { + content: "\f0ee"; } + +.fa-palette::before { + content: "\f53f"; } + +.fa-arrows-turn-right::before { + content: "\e4c0"; } + +.fa-vest::before { + content: "\e085"; } + +.fa-ferry::before { + content: "\e4ea"; } + +.fa-arrows-down-to-people::before { + content: "\e4b9"; } + +.fa-seedling::before { + content: "\f4d8"; } + +.fa-sprout::before { + content: "\f4d8"; } + +.fa-left-right::before { + content: "\f337"; } + +.fa-arrows-alt-h::before { + content: "\f337"; } + +.fa-boxes-packing::before { + content: "\e4c7"; } + +.fa-circle-arrow-left::before { + content: "\f0a8"; } + +.fa-arrow-circle-left::before { + content: "\f0a8"; } + +.fa-group-arrows-rotate::before { + content: "\e4f6"; } + +.fa-bowl-food::before { + content: "\e4c6"; } + +.fa-candy-cane::before { + content: "\f786"; } + +.fa-arrow-down-wide-short::before { + content: "\f160"; } + +.fa-sort-amount-asc::before { + content: "\f160"; } + +.fa-sort-amount-down::before { + content: "\f160"; } + +.fa-cloud-bolt::before { + content: "\f76c"; } + +.fa-thunderstorm::before { + content: "\f76c"; } + +.fa-text-slash::before { + content: "\f87d"; } + +.fa-remove-format::before { + content: "\f87d"; } + +.fa-face-smile-wink::before { + content: "\f4da"; } + +.fa-smile-wink::before { + content: "\f4da"; } + +.fa-file-word::before { + content: "\f1c2"; } + +.fa-file-powerpoint::before { + content: "\f1c4"; } + +.fa-arrows-left-right::before { + content: "\f07e"; } + +.fa-arrows-h::before { + content: "\f07e"; } + +.fa-house-lock::before { + content: "\e510"; } + +.fa-cloud-arrow-down::before { + content: "\f0ed"; } + +.fa-cloud-download::before { + content: "\f0ed"; } + +.fa-cloud-download-alt::before { + content: "\f0ed"; } + +.fa-children::before { + content: "\e4e1"; } + +.fa-chalkboard::before { + content: "\f51b"; } + +.fa-blackboard::before { + content: "\f51b"; } + +.fa-user-large-slash::before { + content: "\f4fa"; } + +.fa-user-alt-slash::before { + content: "\f4fa"; } + +.fa-envelope-open::before { + content: "\f2b6"; } + +.fa-handshake-simple-slash::before { + content: "\e05f"; } + +.fa-handshake-alt-slash::before { + content: "\e05f"; } + +.fa-mattress-pillow::before { + content: "\e525"; } + +.fa-guarani-sign::before { + content: "\e19a"; } + +.fa-arrows-rotate::before { + content: "\f021"; } + +.fa-refresh::before { + content: "\f021"; } + +.fa-sync::before { + content: "\f021"; } + +.fa-fire-extinguisher::before { + content: "\f134"; } + +.fa-cruzeiro-sign::before { + content: "\e152"; } + +.fa-greater-than-equal::before { + content: "\f532"; } + +.fa-shield-halved::before { + content: "\f3ed"; } + +.fa-shield-alt::before { + content: "\f3ed"; } + +.fa-book-atlas::before { + content: "\f558"; } + +.fa-atlas::before { + content: "\f558"; } + +.fa-virus::before { + content: "\e074"; } + +.fa-envelope-circle-check::before { + content: "\e4e8"; } + +.fa-layer-group::before { + content: "\f5fd"; } + +.fa-arrows-to-dot::before { + content: "\e4be"; } + +.fa-archway::before { + content: "\f557"; } + +.fa-heart-circle-check::before { + content: "\e4fd"; } + +.fa-house-chimney-crack::before { + content: "\f6f1"; } + +.fa-house-damage::before { + content: "\f6f1"; } + +.fa-file-zipper::before { + content: "\f1c6"; } + +.fa-file-archive::before { + content: "\f1c6"; } + +.fa-square::before { + content: "\f0c8"; } + +.fa-martini-glass-empty::before { + content: "\f000"; } + +.fa-glass-martini::before { + content: "\f000"; } + +.fa-couch::before { + content: "\f4b8"; } + +.fa-cedi-sign::before { + content: "\e0df"; } + +.fa-italic::before { + content: "\f033"; } + +.fa-church::before { + content: "\f51d"; } + +.fa-comments-dollar::before { + content: "\f653"; } + +.fa-democrat::before { + content: "\f747"; } + +.fa-z::before { + content: "\5a"; } + +.fa-person-skiing::before { + content: "\f7c9"; } + +.fa-skiing::before { + content: "\f7c9"; } + +.fa-road-lock::before { + content: "\e567"; } + +.fa-a::before { + content: "\41"; } + +.fa-temperature-arrow-down::before { + content: "\e03f"; } + +.fa-temperature-down::before { + content: "\e03f"; } + +.fa-feather-pointed::before { + content: "\f56b"; } + +.fa-feather-alt::before { + content: "\f56b"; } + +.fa-p::before { + content: "\50"; } + +.fa-snowflake::before { + content: "\f2dc"; } + +.fa-newspaper::before { + content: "\f1ea"; } + +.fa-rectangle-ad::before { + content: "\f641"; } + +.fa-ad::before { + content: "\f641"; } + +.fa-circle-arrow-right::before { + content: "\f0a9"; } + +.fa-arrow-circle-right::before { + content: "\f0a9"; } + +.fa-filter-circle-xmark::before { + content: "\e17b"; } + +.fa-locust::before { + content: "\e520"; } + +.fa-sort::before { + content: "\f0dc"; } + +.fa-unsorted::before { + content: "\f0dc"; } + +.fa-list-ol::before { + content: "\f0cb"; } + +.fa-list-1-2::before { + content: "\f0cb"; } + +.fa-list-numeric::before { + content: "\f0cb"; } + +.fa-person-dress-burst::before { + content: "\e544"; } + +.fa-money-check-dollar::before { + content: "\f53d"; } + +.fa-money-check-alt::before { + content: "\f53d"; } + +.fa-vector-square::before { + content: "\f5cb"; } + +.fa-bread-slice::before { + content: "\f7ec"; } + +.fa-language::before { + content: "\f1ab"; } + +.fa-face-kiss-wink-heart::before { + content: "\f598"; } + +.fa-kiss-wink-heart::before { + content: "\f598"; } + +.fa-filter::before { + content: "\f0b0"; } + +.fa-question::before { + content: "\3f"; } + +.fa-file-signature::before { + content: "\f573"; } + +.fa-up-down-left-right::before { + content: "\f0b2"; } + +.fa-arrows-alt::before { + content: "\f0b2"; } + +.fa-house-chimney-user::before { + content: "\e065"; } + +.fa-hand-holding-heart::before { + content: "\f4be"; } + +.fa-puzzle-piece::before { + content: "\f12e"; } + +.fa-money-check::before { + content: "\f53c"; } + +.fa-star-half-stroke::before { + content: "\f5c0"; } + +.fa-star-half-alt::before { + content: "\f5c0"; } + +.fa-code::before { + content: "\f121"; } + +.fa-whiskey-glass::before { + content: "\f7a0"; } + +.fa-glass-whiskey::before { + content: "\f7a0"; } + +.fa-building-circle-exclamation::before { + content: "\e4d3"; } + +.fa-magnifying-glass-chart::before { + content: "\e522"; } + +.fa-arrow-up-right-from-square::before { + content: "\f08e"; } + +.fa-external-link::before { + content: "\f08e"; } + +.fa-cubes-stacked::before { + content: "\e4e6"; } + +.fa-won-sign::before { + content: "\f159"; } + +.fa-krw::before { + content: "\f159"; } + +.fa-won::before { + content: "\f159"; } + +.fa-virus-covid::before { + content: "\e4a8"; } + +.fa-austral-sign::before { + content: "\e0a9"; } + +.fa-f::before { + content: "\46"; } + +.fa-leaf::before { + content: "\f06c"; } + +.fa-road::before { + content: "\f018"; } + +.fa-taxi::before { + content: "\f1ba"; } + +.fa-cab::before { + content: "\f1ba"; } + +.fa-person-circle-plus::before { + content: "\e541"; } + +.fa-chart-pie::before { + content: "\f200"; } + +.fa-pie-chart::before { + content: "\f200"; } + +.fa-bolt-lightning::before { + content: "\e0b7"; } + +.fa-sack-xmark::before { + content: "\e56a"; } + +.fa-file-excel::before { + content: "\f1c3"; } + +.fa-file-contract::before { + content: "\f56c"; } + +.fa-fish-fins::before { + content: "\e4f2"; } + +.fa-building-flag::before { + content: "\e4d5"; } + +.fa-face-grin-beam::before { + content: "\f582"; } + +.fa-grin-beam::before { + content: "\f582"; } + +.fa-object-ungroup::before { + content: "\f248"; } + +.fa-poop::before { + content: "\f619"; } + +.fa-location-pin::before { + content: "\f041"; } + +.fa-map-marker::before { + content: "\f041"; } + +.fa-kaaba::before { + content: "\f66b"; } + +.fa-toilet-paper::before { + content: "\f71e"; } + +.fa-helmet-safety::before { + content: "\f807"; } + +.fa-hard-hat::before { + content: "\f807"; } + +.fa-hat-hard::before { + content: "\f807"; } + +.fa-eject::before { + content: "\f052"; } + +.fa-circle-right::before { + content: "\f35a"; } + +.fa-arrow-alt-circle-right::before { + content: "\f35a"; } + +.fa-plane-circle-check::before { + content: "\e555"; } + +.fa-face-rolling-eyes::before { + content: "\f5a5"; } + +.fa-meh-rolling-eyes::before { + content: "\f5a5"; } + +.fa-object-group::before { + content: "\f247"; } + +.fa-chart-line::before { + content: "\f201"; } + +.fa-line-chart::before { + content: "\f201"; } + +.fa-mask-ventilator::before { + content: "\e524"; } + +.fa-arrow-right::before { + content: "\f061"; } + +.fa-signs-post::before { + content: "\f277"; } + +.fa-map-signs::before { + content: "\f277"; } + +.fa-cash-register::before { + content: "\f788"; } + +.fa-person-circle-question::before { + content: "\e542"; } + +.fa-h::before { + content: "\48"; } + +.fa-tarp::before { + content: "\e57b"; } + +.fa-screwdriver-wrench::before { + content: "\f7d9"; } + +.fa-tools::before { + content: "\f7d9"; } + +.fa-arrows-to-eye::before { + content: "\e4bf"; } + +.fa-plug-circle-bolt::before { + content: "\e55b"; } + +.fa-heart::before { + content: "\f004"; } + +.fa-mars-and-venus::before { + content: "\f224"; } + +.fa-house-user::before { + content: "\e1b0"; } + +.fa-home-user::before { + content: "\e1b0"; } + +.fa-dumpster-fire::before { + content: "\f794"; } + +.fa-house-crack::before { + content: "\e3b1"; } + +.fa-martini-glass-citrus::before { + content: "\f561"; } + +.fa-cocktail::before { + content: "\f561"; } + +.fa-face-surprise::before { + content: "\f5c2"; } + +.fa-surprise::before { + content: "\f5c2"; } + +.fa-bottle-water::before { + content: "\e4c5"; } + +.fa-circle-pause::before { + content: "\f28b"; } + +.fa-pause-circle::before { + content: "\f28b"; } + +.fa-toilet-paper-slash::before { + content: "\e072"; } + +.fa-apple-whole::before { + content: "\f5d1"; } + +.fa-apple-alt::before { + content: "\f5d1"; } + +.fa-kitchen-set::before { + content: "\e51a"; } + +.fa-r::before { + content: "\52"; } + +.fa-temperature-quarter::before { + content: "\f2ca"; } + +.fa-temperature-1::before { + content: "\f2ca"; } + +.fa-thermometer-1::before { + content: "\f2ca"; } + +.fa-thermometer-quarter::before { + content: "\f2ca"; } + +.fa-cube::before { + content: "\f1b2"; } + +.fa-bitcoin-sign::before { + content: "\e0b4"; } + +.fa-shield-dog::before { + content: "\e573"; } + +.fa-solar-panel::before { + content: "\f5ba"; } + +.fa-lock-open::before { + content: "\f3c1"; } + +.fa-elevator::before { + content: "\e16d"; } + +.fa-money-bill-transfer::before { + content: "\e528"; } + +.fa-money-bill-trend-up::before { + content: "\e529"; } + +.fa-house-flood-water-circle-arrow-right::before { + content: "\e50f"; } + +.fa-square-poll-horizontal::before { + content: "\f682"; } + +.fa-poll-h::before { + content: "\f682"; } + +.fa-circle::before { + content: "\f111"; } + +.fa-backward-fast::before { + content: "\f049"; } + +.fa-fast-backward::before { + content: "\f049"; } + +.fa-recycle::before { + content: "\f1b8"; } + +.fa-user-astronaut::before { + content: "\f4fb"; } + +.fa-plane-slash::before { + content: "\e069"; } + +.fa-trademark::before { + content: "\f25c"; } + +.fa-basketball::before { + content: "\f434"; } + +.fa-basketball-ball::before { + content: "\f434"; } + +.fa-satellite-dish::before { + content: "\f7c0"; } + +.fa-circle-up::before { + content: "\f35b"; } + +.fa-arrow-alt-circle-up::before { + content: "\f35b"; } + +.fa-mobile-screen-button::before { + content: "\f3cd"; } + +.fa-mobile-alt::before { + content: "\f3cd"; } + +.fa-volume-high::before { + content: "\f028"; } + +.fa-volume-up::before { + content: "\f028"; } + +.fa-users-rays::before { + content: "\e593"; } + +.fa-wallet::before { + content: "\f555"; } + +.fa-clipboard-check::before { + content: "\f46c"; } + +.fa-file-audio::before { + content: "\f1c7"; } + +.fa-burger::before { + content: "\f805"; } + +.fa-hamburger::before { + content: "\f805"; } + +.fa-wrench::before { + content: "\f0ad"; } + +.fa-bugs::before { + content: "\e4d0"; } + +.fa-rupee-sign::before { + content: "\f156"; } + +.fa-rupee::before { + content: "\f156"; } + +.fa-file-image::before { + content: "\f1c5"; } + +.fa-circle-question::before { + content: "\f059"; } + +.fa-question-circle::before { + content: "\f059"; } + +.fa-plane-departure::before { + content: "\f5b0"; } + +.fa-handshake-slash::before { + content: "\e060"; } + +.fa-book-bookmark::before { + content: "\e0bb"; } + +.fa-code-branch::before { + content: "\f126"; } + +.fa-hat-cowboy::before { + content: "\f8c0"; } + +.fa-bridge::before { + content: "\e4c8"; } + +.fa-phone-flip::before { + content: "\f879"; } + +.fa-phone-alt::before { + content: "\f879"; } + +.fa-truck-front::before { + content: "\e2b7"; } + +.fa-cat::before { + content: "\f6be"; } + +.fa-anchor-circle-exclamation::before { + content: "\e4ab"; } + +.fa-truck-field::before { + content: "\e58d"; } + +.fa-route::before { + content: "\f4d7"; } + +.fa-clipboard-question::before { + content: "\e4e3"; } + +.fa-panorama::before { + content: "\e209"; } + +.fa-comment-medical::before { + content: "\f7f5"; } + +.fa-teeth-open::before { + content: "\f62f"; } + +.fa-file-circle-minus::before { + content: "\e4ed"; } + +.fa-tags::before { + content: "\f02c"; } + +.fa-wine-glass::before { + content: "\f4e3"; } + +.fa-forward-fast::before { + content: "\f050"; } + +.fa-fast-forward::before { + content: "\f050"; } + +.fa-face-meh-blank::before { + content: "\f5a4"; } + +.fa-meh-blank::before { + content: "\f5a4"; } + +.fa-square-parking::before { + content: "\f540"; } + +.fa-parking::before { + content: "\f540"; } + +.fa-house-signal::before { + content: "\e012"; } + +.fa-bars-progress::before { + content: "\f828"; } + +.fa-tasks-alt::before { + content: "\f828"; } + +.fa-faucet-drip::before { + content: "\e006"; } + +.fa-cart-flatbed::before { + content: "\f474"; } + +.fa-dolly-flatbed::before { + content: "\f474"; } + +.fa-ban-smoking::before { + content: "\f54d"; } + +.fa-smoking-ban::before { + content: "\f54d"; } + +.fa-terminal::before { + content: "\f120"; } + +.fa-mobile-button::before { + content: "\f10b"; } + +.fa-house-medical-flag::before { + content: "\e514"; } + +.fa-basket-shopping::before { + content: "\f291"; } + +.fa-shopping-basket::before { + content: "\f291"; } + +.fa-tape::before { + content: "\f4db"; } + +.fa-bus-simple::before { + content: "\f55e"; } + +.fa-bus-alt::before { + content: "\f55e"; } + +.fa-eye::before { + content: "\f06e"; } + +.fa-face-sad-cry::before { + content: "\f5b3"; } + +.fa-sad-cry::before { + content: "\f5b3"; } + +.fa-audio-description::before { + content: "\f29e"; } + +.fa-person-military-to-person::before { + content: "\e54c"; } + +.fa-file-shield::before { + content: "\e4f0"; } + +.fa-user-slash::before { + content: "\f506"; } + +.fa-pen::before { + content: "\f304"; } + +.fa-tower-observation::before { + content: "\e586"; } + +.fa-file-code::before { + content: "\f1c9"; } + +.fa-signal::before { + content: "\f012"; } + +.fa-signal-5::before { + content: "\f012"; } + +.fa-signal-perfect::before { + content: "\f012"; } + +.fa-bus::before { + content: "\f207"; } + +.fa-heart-circle-xmark::before { + content: "\e501"; } + +.fa-house-chimney::before { + content: "\e3af"; } + +.fa-home-lg::before { + content: "\e3af"; } + +.fa-window-maximize::before { + content: "\f2d0"; } + +.fa-face-frown::before { + content: "\f119"; } + +.fa-frown::before { + content: "\f119"; } + +.fa-prescription::before { + content: "\f5b1"; } + +.fa-shop::before { + content: "\f54f"; } + +.fa-store-alt::before { + content: "\f54f"; } + +.fa-floppy-disk::before { + content: "\f0c7"; } + +.fa-save::before { + content: "\f0c7"; } + +.fa-vihara::before { + content: "\f6a7"; } + +.fa-scale-unbalanced::before { + content: "\f515"; } + +.fa-balance-scale-left::before { + content: "\f515"; } + +.fa-sort-up::before { + content: "\f0de"; } + +.fa-sort-asc::before { + content: "\f0de"; } + +.fa-comment-dots::before { + content: "\f4ad"; } + +.fa-commenting::before { + content: "\f4ad"; } + +.fa-plant-wilt::before { + content: "\e5aa"; } + +.fa-diamond::before { + content: "\f219"; } + +.fa-face-grin-squint::before { + content: "\f585"; } + +.fa-grin-squint::before { + content: "\f585"; } + +.fa-hand-holding-dollar::before { + content: "\f4c0"; } + +.fa-hand-holding-usd::before { + content: "\f4c0"; } + +.fa-bacterium::before { + content: "\e05a"; } + +.fa-hand-pointer::before { + content: "\f25a"; } + +.fa-drum-steelpan::before { + content: "\f56a"; } + +.fa-hand-scissors::before { + content: "\f257"; } + +.fa-hands-praying::before { + content: "\f684"; } + +.fa-praying-hands::before { + content: "\f684"; } + +.fa-arrow-rotate-right::before { + content: "\f01e"; } + +.fa-arrow-right-rotate::before { + content: "\f01e"; } + +.fa-arrow-rotate-forward::before { + content: "\f01e"; } + +.fa-redo::before { + content: "\f01e"; } + +.fa-biohazard::before { + content: "\f780"; } + +.fa-location-crosshairs::before { + content: "\f601"; } + +.fa-location::before { + content: "\f601"; } + +.fa-mars-double::before { + content: "\f227"; } + +.fa-child-dress::before { + content: "\e59c"; } + +.fa-users-between-lines::before { + content: "\e591"; } + +.fa-lungs-virus::before { + content: "\e067"; } + +.fa-face-grin-tears::before { + content: "\f588"; } + +.fa-grin-tears::before { + content: "\f588"; } + +.fa-phone::before { + content: "\f095"; } + +.fa-calendar-xmark::before { + content: "\f273"; } + +.fa-calendar-times::before { + content: "\f273"; } + +.fa-child-reaching::before { + content: "\e59d"; } + +.fa-head-side-virus::before { + content: "\e064"; } + +.fa-user-gear::before { + content: "\f4fe"; } + +.fa-user-cog::before { + content: "\f4fe"; } + +.fa-arrow-up-1-9::before { + content: "\f163"; } + +.fa-sort-numeric-up::before { + content: "\f163"; } + +.fa-door-closed::before { + content: "\f52a"; } + +.fa-shield-virus::before { + content: "\e06c"; } + +.fa-dice-six::before { + content: "\f526"; } + +.fa-mosquito-net::before { + content: "\e52c"; } + +.fa-bridge-water::before { + content: "\e4ce"; } + +.fa-person-booth::before { + content: "\f756"; } + +.fa-text-width::before { + content: "\f035"; } + +.fa-hat-wizard::before { + content: "\f6e8"; } + +.fa-pen-fancy::before { + content: "\f5ac"; } + +.fa-person-digging::before { + content: "\f85e"; } + +.fa-digging::before { + content: "\f85e"; } + +.fa-trash::before { + content: "\f1f8"; } + +.fa-gauge-simple::before { + content: "\f629"; } + +.fa-gauge-simple-med::before { + content: "\f629"; } + +.fa-tachometer-average::before { + content: "\f629"; } + +.fa-book-medical::before { + content: "\f7e6"; } + +.fa-poo::before { + content: "\f2fe"; } + +.fa-quote-right::before { + content: "\f10e"; } + +.fa-quote-right-alt::before { + content: "\f10e"; } + +.fa-shirt::before { + content: "\f553"; } + +.fa-t-shirt::before { + content: "\f553"; } + +.fa-tshirt::before { + content: "\f553"; } + +.fa-cubes::before { + content: "\f1b3"; } + +.fa-divide::before { + content: "\f529"; } + +.fa-tenge-sign::before { + content: "\f7d7"; } + +.fa-tenge::before { + content: "\f7d7"; } + +.fa-headphones::before { + content: "\f025"; } + +.fa-hands-holding::before { + content: "\f4c2"; } + +.fa-hands-clapping::before { + content: "\e1a8"; } + +.fa-republican::before { + content: "\f75e"; } + +.fa-arrow-left::before { + content: "\f060"; } + +.fa-person-circle-xmark::before { + content: "\e543"; } + +.fa-ruler::before { + content: "\f545"; } + +.fa-align-left::before { + content: "\f036"; } + +.fa-dice-d6::before { + content: "\f6d1"; } + +.fa-restroom::before { + content: "\f7bd"; } + +.fa-j::before { + content: "\4a"; } + +.fa-users-viewfinder::before { + content: "\e595"; } + +.fa-file-video::before { + content: "\f1c8"; } + +.fa-up-right-from-square::before { + content: "\f35d"; } + +.fa-external-link-alt::before { + content: "\f35d"; } + +.fa-table-cells::before { + content: "\f00a"; } + +.fa-th::before { + content: "\f00a"; } + +.fa-file-pdf::before { + content: "\f1c1"; } + +.fa-book-bible::before { + content: "\f647"; } + +.fa-bible::before { + content: "\f647"; } + +.fa-o::before { + content: "\4f"; } + +.fa-suitcase-medical::before { + content: "\f0fa"; } + +.fa-medkit::before { + content: "\f0fa"; } + +.fa-user-secret::before { + content: "\f21b"; } + +.fa-otter::before { + content: "\f700"; } + +.fa-person-dress::before { + content: "\f182"; } + +.fa-female::before { + content: "\f182"; } + +.fa-comment-dollar::before { + content: "\f651"; } + +.fa-business-time::before { + content: "\f64a"; } + +.fa-briefcase-clock::before { + content: "\f64a"; } + +.fa-table-cells-large::before { + content: "\f009"; } + +.fa-th-large::before { + content: "\f009"; } + +.fa-book-tanakh::before { + content: "\f827"; } + +.fa-tanakh::before { + content: "\f827"; } + +.fa-phone-volume::before { + content: "\f2a0"; } + +.fa-volume-control-phone::before { + content: "\f2a0"; } + +.fa-hat-cowboy-side::before { + content: "\f8c1"; } + +.fa-clipboard-user::before { + content: "\f7f3"; } + +.fa-child::before { + content: "\f1ae"; } + +.fa-lira-sign::before { + content: "\f195"; } + +.fa-satellite::before { + content: "\f7bf"; } + +.fa-plane-lock::before { + content: "\e558"; } + +.fa-tag::before { + content: "\f02b"; } + +.fa-comment::before { + content: "\f075"; } + +.fa-cake-candles::before { + content: "\f1fd"; } + +.fa-birthday-cake::before { + content: "\f1fd"; } + +.fa-cake::before { + content: "\f1fd"; } + +.fa-envelope::before { + content: "\f0e0"; } + +.fa-angles-up::before { + content: "\f102"; } + +.fa-angle-double-up::before { + content: "\f102"; } + +.fa-paperclip::before { + content: "\f0c6"; } + +.fa-arrow-right-to-city::before { + content: "\e4b3"; } + +.fa-ribbon::before { + content: "\f4d6"; } + +.fa-lungs::before { + content: "\f604"; } + +.fa-arrow-up-9-1::before { + content: "\f887"; } + +.fa-sort-numeric-up-alt::before { + content: "\f887"; } + +.fa-litecoin-sign::before { + content: "\e1d3"; } + +.fa-border-none::before { + content: "\f850"; } + +.fa-circle-nodes::before { + content: "\e4e2"; } + +.fa-parachute-box::before { + content: "\f4cd"; } + +.fa-indent::before { + content: "\f03c"; } + +.fa-truck-field-un::before { + content: "\e58e"; } + +.fa-hourglass::before { + content: "\f254"; } + +.fa-hourglass-empty::before { + content: "\f254"; } + +.fa-mountain::before { + content: "\f6fc"; } + +.fa-user-doctor::before { + content: "\f0f0"; } + +.fa-user-md::before { + content: "\f0f0"; } + +.fa-circle-info::before { + content: "\f05a"; } + +.fa-info-circle::before { + content: "\f05a"; } + +.fa-cloud-meatball::before { + content: "\f73b"; } + +.fa-camera::before { + content: "\f030"; } + +.fa-camera-alt::before { + content: "\f030"; } + +.fa-square-virus::before { + content: "\e578"; } + +.fa-meteor::before { + content: "\f753"; } + +.fa-car-on::before { + content: "\e4dd"; } + +.fa-sleigh::before { + content: "\f7cc"; } + +.fa-arrow-down-1-9::before { + content: "\f162"; } + +.fa-sort-numeric-asc::before { + content: "\f162"; } + +.fa-sort-numeric-down::before { + content: "\f162"; } + +.fa-hand-holding-droplet::before { + content: "\f4c1"; } + +.fa-hand-holding-water::before { + content: "\f4c1"; } + +.fa-water::before { + content: "\f773"; } + +.fa-calendar-check::before { + content: "\f274"; } + +.fa-braille::before { + content: "\f2a1"; } + +.fa-prescription-bottle-medical::before { + content: "\f486"; } + +.fa-prescription-bottle-alt::before { + content: "\f486"; } + +.fa-landmark::before { + content: "\f66f"; } + +.fa-truck::before { + content: "\f0d1"; } + +.fa-crosshairs::before { + content: "\f05b"; } + +.fa-person-cane::before { + content: "\e53c"; } + +.fa-tent::before { + content: "\e57d"; } + +.fa-vest-patches::before { + content: "\e086"; } + +.fa-check-double::before { + content: "\f560"; } + +.fa-arrow-down-a-z::before { + content: "\f15d"; } + +.fa-sort-alpha-asc::before { + content: "\f15d"; } + +.fa-sort-alpha-down::before { + content: "\f15d"; } + +.fa-money-bill-wheat::before { + content: "\e52a"; } + +.fa-cookie::before { + content: "\f563"; } + +.fa-arrow-rotate-left::before { + content: "\f0e2"; } + +.fa-arrow-left-rotate::before { + content: "\f0e2"; } + +.fa-arrow-rotate-back::before { + content: "\f0e2"; } + +.fa-arrow-rotate-backward::before { + content: "\f0e2"; } + +.fa-undo::before { + content: "\f0e2"; } + +.fa-hard-drive::before { + content: "\f0a0"; } + +.fa-hdd::before { + content: "\f0a0"; } + +.fa-face-grin-squint-tears::before { + content: "\f586"; } + +.fa-grin-squint-tears::before { + content: "\f586"; } + +.fa-dumbbell::before { + content: "\f44b"; } + +.fa-rectangle-list::before { + content: "\f022"; } + +.fa-list-alt::before { + content: "\f022"; } + +.fa-tarp-droplet::before { + content: "\e57c"; } + +.fa-house-medical-circle-check::before { + content: "\e511"; } + +.fa-person-skiing-nordic::before { + content: "\f7ca"; } + +.fa-skiing-nordic::before { + content: "\f7ca"; } + +.fa-calendar-plus::before { + content: "\f271"; } + +.fa-plane-arrival::before { + content: "\f5af"; } + +.fa-circle-left::before { + content: "\f359"; } + +.fa-arrow-alt-circle-left::before { + content: "\f359"; } + +.fa-train-subway::before { + content: "\f239"; } + +.fa-subway::before { + content: "\f239"; } + +.fa-chart-gantt::before { + content: "\e0e4"; } + +.fa-indian-rupee-sign::before { + content: "\e1bc"; } + +.fa-indian-rupee::before { + content: "\e1bc"; } + +.fa-inr::before { + content: "\e1bc"; } + +.fa-crop-simple::before { + content: "\f565"; } + +.fa-crop-alt::before { + content: "\f565"; } + +.fa-money-bill-1::before { + content: "\f3d1"; } + +.fa-money-bill-alt::before { + content: "\f3d1"; } + +.fa-left-long::before { + content: "\f30a"; } + +.fa-long-arrow-alt-left::before { + content: "\f30a"; } + +.fa-dna::before { + content: "\f471"; } + +.fa-virus-slash::before { + content: "\e075"; } + +.fa-minus::before { + content: "\f068"; } + +.fa-subtract::before { + content: "\f068"; } + +.fa-chess::before { + content: "\f439"; } + +.fa-arrow-left-long::before { + content: "\f177"; } + +.fa-long-arrow-left::before { + content: "\f177"; } + +.fa-plug-circle-check::before { + content: "\e55c"; } + +.fa-street-view::before { + content: "\f21d"; } + +.fa-franc-sign::before { + content: "\e18f"; } + +.fa-volume-off::before { + content: "\f026"; } + +.fa-hands-asl-interpreting::before { + content: "\f2a3"; } + +.fa-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-asl-interpreting::before { + content: "\f2a3"; } + +.fa-hands-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-gear::before { + content: "\f013"; } + +.fa-cog::before { + content: "\f013"; } + +.fa-droplet-slash::before { + content: "\f5c7"; } + +.fa-tint-slash::before { + content: "\f5c7"; } + +.fa-mosque::before { + content: "\f678"; } + +.fa-mosquito::before { + content: "\e52b"; } + +.fa-star-of-david::before { + content: "\f69a"; } + +.fa-person-military-rifle::before { + content: "\e54b"; } + +.fa-cart-shopping::before { + content: "\f07a"; } + +.fa-shopping-cart::before { + content: "\f07a"; } + +.fa-vials::before { + content: "\f493"; } + +.fa-plug-circle-plus::before { + content: "\e55f"; } + +.fa-place-of-worship::before { + content: "\f67f"; } + +.fa-grip-vertical::before { + content: "\f58e"; } + +.fa-arrow-turn-up::before { + content: "\f148"; } + +.fa-level-up::before { + content: "\f148"; } + +.fa-u::before { + content: "\55"; } + +.fa-square-root-variable::before { + content: "\f698"; } + +.fa-square-root-alt::before { + content: "\f698"; } + +.fa-clock::before { + content: "\f017"; } + +.fa-clock-four::before { + content: "\f017"; } + +.fa-backward-step::before { + content: "\f048"; } + +.fa-step-backward::before { + content: "\f048"; } + +.fa-pallet::before { + content: "\f482"; } + +.fa-faucet::before { + content: "\e005"; } + +.fa-baseball-bat-ball::before { + content: "\f432"; } + +.fa-s::before { + content: "\53"; } + +.fa-timeline::before { + content: "\e29c"; } + +.fa-keyboard::before { + content: "\f11c"; } + +.fa-caret-down::before { + content: "\f0d7"; } + +.fa-house-chimney-medical::before { + content: "\f7f2"; } + +.fa-clinic-medical::before { + content: "\f7f2"; } + +.fa-temperature-three-quarters::before { + content: "\f2c8"; } + +.fa-temperature-3::before { + content: "\f2c8"; } + +.fa-thermometer-3::before { + content: "\f2c8"; } + +.fa-thermometer-three-quarters::before { + content: "\f2c8"; } + +.fa-mobile-screen::before { + content: "\f3cf"; } + +.fa-mobile-android-alt::before { + content: "\f3cf"; } + +.fa-plane-up::before { + content: "\e22d"; } + +.fa-piggy-bank::before { + content: "\f4d3"; } + +.fa-battery-half::before { + content: "\f242"; } + +.fa-battery-3::before { + content: "\f242"; } + +.fa-mountain-city::before { + content: "\e52e"; } + +.fa-coins::before { + content: "\f51e"; } + +.fa-khanda::before { + content: "\f66d"; } + +.fa-sliders::before { + content: "\f1de"; } + +.fa-sliders-h::before { + content: "\f1de"; } + +.fa-folder-tree::before { + content: "\f802"; } + +.fa-network-wired::before { + content: "\f6ff"; } + +.fa-map-pin::before { + content: "\f276"; } + +.fa-hamsa::before { + content: "\f665"; } + +.fa-cent-sign::before { + content: "\e3f5"; } + +.fa-flask::before { + content: "\f0c3"; } + +.fa-person-pregnant::before { + content: "\e31e"; } + +.fa-wand-sparkles::before { + content: "\f72b"; } + +.fa-ellipsis-vertical::before { + content: "\f142"; } + +.fa-ellipsis-v::before { + content: "\f142"; } + +.fa-ticket::before { + content: "\f145"; } + +.fa-power-off::before { + content: "\f011"; } + +.fa-right-long::before { + content: "\f30b"; } + +.fa-long-arrow-alt-right::before { + content: "\f30b"; } + +.fa-flag-usa::before { + content: "\f74d"; } + +.fa-laptop-file::before { + content: "\e51d"; } + +.fa-tty::before { + content: "\f1e4"; } + +.fa-teletype::before { + content: "\f1e4"; } + +.fa-diagram-next::before { + content: "\e476"; } + +.fa-person-rifle::before { + content: "\e54e"; } + +.fa-house-medical-circle-exclamation::before { + content: "\e512"; } + +.fa-closed-captioning::before { + content: "\f20a"; } + +.fa-person-hiking::before { + content: "\f6ec"; } + +.fa-hiking::before { + content: "\f6ec"; } + +.fa-venus-double::before { + content: "\f226"; } + +.fa-images::before { + content: "\f302"; } + +.fa-calculator::before { + content: "\f1ec"; } + +.fa-people-pulling::before { + content: "\e535"; } + +.fa-n::before { + content: "\4e"; } + +.fa-cable-car::before { + content: "\f7da"; } + +.fa-tram::before { + content: "\f7da"; } + +.fa-cloud-rain::before { + content: "\f73d"; } + +.fa-building-circle-xmark::before { + content: "\e4d4"; } + +.fa-ship::before { + content: "\f21a"; } + +.fa-arrows-down-to-line::before { + content: "\e4b8"; } + +.fa-download::before { + content: "\f019"; } + +.fa-face-grin::before { + content: "\f580"; } + +.fa-grin::before { + content: "\f580"; } + +.fa-delete-left::before { + content: "\f55a"; } + +.fa-backspace::before { + content: "\f55a"; } + +.fa-eye-dropper::before { + content: "\f1fb"; } + +.fa-eye-dropper-empty::before { + content: "\f1fb"; } + +.fa-eyedropper::before { + content: "\f1fb"; } + +.fa-file-circle-check::before { + content: "\e5a0"; } + +.fa-forward::before { + content: "\f04e"; } + +.fa-mobile::before { + content: "\f3ce"; } + +.fa-mobile-android::before { + content: "\f3ce"; } + +.fa-mobile-phone::before { + content: "\f3ce"; } + +.fa-face-meh::before { + content: "\f11a"; } + +.fa-meh::before { + content: "\f11a"; } + +.fa-align-center::before { + content: "\f037"; } + +.fa-book-skull::before { + content: "\f6b7"; } + +.fa-book-dead::before { + content: "\f6b7"; } + +.fa-id-card::before { + content: "\f2c2"; } + +.fa-drivers-license::before { + content: "\f2c2"; } + +.fa-outdent::before { + content: "\f03b"; } + +.fa-dedent::before { + content: "\f03b"; } + +.fa-heart-circle-exclamation::before { + content: "\e4fe"; } + +.fa-house::before { + content: "\f015"; } + +.fa-home::before { + content: "\f015"; } + +.fa-home-alt::before { + content: "\f015"; } + +.fa-home-lg-alt::before { + content: "\f015"; } + +.fa-calendar-week::before { + content: "\f784"; } + +.fa-laptop-medical::before { + content: "\f812"; } + +.fa-b::before { + content: "\42"; } + +.fa-file-medical::before { + content: "\f477"; } + +.fa-dice-one::before { + content: "\f525"; } + +.fa-kiwi-bird::before { + content: "\f535"; } + +.fa-arrow-right-arrow-left::before { + content: "\f0ec"; } + +.fa-exchange::before { + content: "\f0ec"; } + +.fa-rotate-right::before { + content: "\f2f9"; } + +.fa-redo-alt::before { + content: "\f2f9"; } + +.fa-rotate-forward::before { + content: "\f2f9"; } + +.fa-utensils::before { + content: "\f2e7"; } + +.fa-cutlery::before { + content: "\f2e7"; } + +.fa-arrow-up-wide-short::before { + content: "\f161"; } + +.fa-sort-amount-up::before { + content: "\f161"; } + +.fa-mill-sign::before { + content: "\e1ed"; } + +.fa-bowl-rice::before { + content: "\e2eb"; } + +.fa-skull::before { + content: "\f54c"; } + +.fa-tower-broadcast::before { + content: "\f519"; } + +.fa-broadcast-tower::before { + content: "\f519"; } + +.fa-truck-pickup::before { + content: "\f63c"; } + +.fa-up-long::before { + content: "\f30c"; } + +.fa-long-arrow-alt-up::before { + content: "\f30c"; } + +.fa-stop::before { + content: "\f04d"; } + +.fa-code-merge::before { + content: "\f387"; } + +.fa-upload::before { + content: "\f093"; } + +.fa-hurricane::before { + content: "\f751"; } + +.fa-mound::before { + content: "\e52d"; } + +.fa-toilet-portable::before { + content: "\e583"; } + +.fa-compact-disc::before { + content: "\f51f"; } + +.fa-file-arrow-down::before { + content: "\f56d"; } + +.fa-file-download::before { + content: "\f56d"; } + +.fa-caravan::before { + content: "\f8ff"; } + +.fa-shield-cat::before { + content: "\e572"; } + +.fa-bolt::before { + content: "\f0e7"; } + +.fa-zap::before { + content: "\f0e7"; } + +.fa-glass-water::before { + content: "\e4f4"; } + +.fa-oil-well::before { + content: "\e532"; } + +.fa-vault::before { + content: "\e2c5"; } + +.fa-mars::before { + content: "\f222"; } + +.fa-toilet::before { + content: "\f7d8"; } + +.fa-plane-circle-xmark::before { + content: "\e557"; } + +.fa-yen-sign::before { + content: "\f157"; } + +.fa-cny::before { + content: "\f157"; } + +.fa-jpy::before { + content: "\f157"; } + +.fa-rmb::before { + content: "\f157"; } + +.fa-yen::before { + content: "\f157"; } + +.fa-ruble-sign::before { + content: "\f158"; } + +.fa-rouble::before { + content: "\f158"; } + +.fa-rub::before { + content: "\f158"; } + +.fa-ruble::before { + content: "\f158"; } + +.fa-sun::before { + content: "\f185"; } + +.fa-guitar::before { + content: "\f7a6"; } + +.fa-face-laugh-wink::before { + content: "\f59c"; } + +.fa-laugh-wink::before { + content: "\f59c"; } + +.fa-horse-head::before { + content: "\f7ab"; } + +.fa-bore-hole::before { + content: "\e4c3"; } + +.fa-industry::before { + content: "\f275"; } + +.fa-circle-down::before { + content: "\f358"; } + +.fa-arrow-alt-circle-down::before { + content: "\f358"; } + +.fa-arrows-turn-to-dots::before { + content: "\e4c1"; } + +.fa-florin-sign::before { + content: "\e184"; } + +.fa-arrow-down-short-wide::before { + content: "\f884"; } + +.fa-sort-amount-desc::before { + content: "\f884"; } + +.fa-sort-amount-down-alt::before { + content: "\f884"; } + +.fa-less-than::before { + content: "\3c"; } + +.fa-angle-down::before { + content: "\f107"; } + +.fa-car-tunnel::before { + content: "\e4de"; } + +.fa-head-side-cough::before { + content: "\e061"; } + +.fa-grip-lines::before { + content: "\f7a4"; } + +.fa-thumbs-down::before { + content: "\f165"; } + +.fa-user-lock::before { + content: "\f502"; } + +.fa-arrow-right-long::before { + content: "\f178"; } + +.fa-long-arrow-right::before { + content: "\f178"; } + +.fa-anchor-circle-xmark::before { + content: "\e4ac"; } + +.fa-ellipsis::before { + content: "\f141"; } + +.fa-ellipsis-h::before { + content: "\f141"; } + +.fa-chess-pawn::before { + content: "\f443"; } + +.fa-kit-medical::before { + content: "\f479"; } + +.fa-first-aid::before { + content: "\f479"; } + +.fa-person-through-window::before { + content: "\e5a9"; } + +.fa-toolbox::before { + content: "\f552"; } + +.fa-hands-holding-circle::before { + content: "\e4fb"; } + +.fa-bug::before { + content: "\f188"; } + +.fa-credit-card::before { + content: "\f09d"; } + +.fa-credit-card-alt::before { + content: "\f09d"; } + +.fa-car::before { + content: "\f1b9"; } + +.fa-automobile::before { + content: "\f1b9"; } + +.fa-hand-holding-hand::before { + content: "\e4f7"; } + +.fa-book-open-reader::before { + content: "\f5da"; } + +.fa-book-reader::before { + content: "\f5da"; } + +.fa-mountain-sun::before { + content: "\e52f"; } + +.fa-arrows-left-right-to-line::before { + content: "\e4ba"; } + +.fa-dice-d20::before { + content: "\f6cf"; } + +.fa-truck-droplet::before { + content: "\e58c"; } + +.fa-file-circle-xmark::before { + content: "\e5a1"; } + +.fa-temperature-arrow-up::before { + content: "\e040"; } + +.fa-temperature-up::before { + content: "\e040"; } + +.fa-medal::before { + content: "\f5a2"; } + +.fa-bed::before { + content: "\f236"; } + +.fa-square-h::before { + content: "\f0fd"; } + +.fa-h-square::before { + content: "\f0fd"; } + +.fa-podcast::before { + content: "\f2ce"; } + +.fa-temperature-full::before { + content: "\f2c7"; } + +.fa-temperature-4::before { + content: "\f2c7"; } + +.fa-thermometer-4::before { + content: "\f2c7"; } + +.fa-thermometer-full::before { + content: "\f2c7"; } + +.fa-bell::before { + content: "\f0f3"; } + +.fa-superscript::before { + content: "\f12b"; } + +.fa-plug-circle-xmark::before { + content: "\e560"; } + +.fa-star-of-life::before { + content: "\f621"; } + +.fa-phone-slash::before { + content: "\f3dd"; } + +.fa-paint-roller::before { + content: "\f5aa"; } + +.fa-handshake-angle::before { + content: "\f4c4"; } + +.fa-hands-helping::before { + content: "\f4c4"; } + +.fa-location-dot::before { + content: "\f3c5"; } + +.fa-map-marker-alt::before { + content: "\f3c5"; } + +.fa-file::before { + content: "\f15b"; } + +.fa-greater-than::before { + content: "\3e"; } + +.fa-person-swimming::before { + content: "\f5c4"; } + +.fa-swimmer::before { + content: "\f5c4"; } + +.fa-arrow-down::before { + content: "\f063"; } + +.fa-droplet::before { + content: "\f043"; } + +.fa-tint::before { + content: "\f043"; } + +.fa-eraser::before { + content: "\f12d"; } + +.fa-earth-americas::before { + content: "\f57d"; } + +.fa-earth::before { + content: "\f57d"; } + +.fa-earth-america::before { + content: "\f57d"; } + +.fa-globe-americas::before { + content: "\f57d"; } + +.fa-person-burst::before { + content: "\e53b"; } + +.fa-dove::before { + content: "\f4ba"; } + +.fa-battery-empty::before { + content: "\f244"; } + +.fa-battery-0::before { + content: "\f244"; } + +.fa-socks::before { + content: "\f696"; } + +.fa-inbox::before { + content: "\f01c"; } + +.fa-section::before { + content: "\e447"; } + +.fa-gauge-high::before { + content: "\f625"; } + +.fa-tachometer-alt::before { + content: "\f625"; } + +.fa-tachometer-alt-fast::before { + content: "\f625"; } + +.fa-envelope-open-text::before { + content: "\f658"; } + +.fa-hospital::before { + content: "\f0f8"; } + +.fa-hospital-alt::before { + content: "\f0f8"; } + +.fa-hospital-wide::before { + content: "\f0f8"; } + +.fa-wine-bottle::before { + content: "\f72f"; } + +.fa-chess-rook::before { + content: "\f447"; } + +.fa-bars-staggered::before { + content: "\f550"; } + +.fa-reorder::before { + content: "\f550"; } + +.fa-stream::before { + content: "\f550"; } + +.fa-dharmachakra::before { + content: "\f655"; } + +.fa-hotdog::before { + content: "\f80f"; } + +.fa-person-walking-with-cane::before { + content: "\f29d"; } + +.fa-blind::before { + content: "\f29d"; } + +.fa-drum::before { + content: "\f569"; } + +.fa-ice-cream::before { + content: "\f810"; } + +.fa-heart-circle-bolt::before { + content: "\e4fc"; } + +.fa-fax::before { + content: "\f1ac"; } + +.fa-paragraph::before { + content: "\f1dd"; } + +.fa-check-to-slot::before { + content: "\f772"; } + +.fa-vote-yea::before { + content: "\f772"; } + +.fa-star-half::before { + content: "\f089"; } + +.fa-boxes-stacked::before { + content: "\f468"; } + +.fa-boxes::before { + content: "\f468"; } + +.fa-boxes-alt::before { + content: "\f468"; } + +.fa-link::before { + content: "\f0c1"; } + +.fa-chain::before { + content: "\f0c1"; } + +.fa-ear-listen::before { + content: "\f2a2"; } + +.fa-assistive-listening-systems::before { + content: "\f2a2"; } + +.fa-tree-city::before { + content: "\e587"; } + +.fa-play::before { + content: "\f04b"; } + +.fa-font::before { + content: "\f031"; } + +.fa-rupiah-sign::before { + content: "\e23d"; } + +.fa-magnifying-glass::before { + content: "\f002"; } + +.fa-search::before { + content: "\f002"; } + +.fa-table-tennis-paddle-ball::before { + content: "\f45d"; } + +.fa-ping-pong-paddle-ball::before { + content: "\f45d"; } + +.fa-table-tennis::before { + content: "\f45d"; } + +.fa-person-dots-from-line::before { + content: "\f470"; } + +.fa-diagnoses::before { + content: "\f470"; } + +.fa-trash-can-arrow-up::before { + content: "\f82a"; } + +.fa-trash-restore-alt::before { + content: "\f82a"; } + +.fa-naira-sign::before { + content: "\e1f6"; } + +.fa-cart-arrow-down::before { + content: "\f218"; } + +.fa-walkie-talkie::before { + content: "\f8ef"; } + +.fa-file-pen::before { + content: "\f31c"; } + +.fa-file-edit::before { + content: "\f31c"; } + +.fa-receipt::before { + content: "\f543"; } + +.fa-square-pen::before { + content: "\f14b"; } + +.fa-pen-square::before { + content: "\f14b"; } + +.fa-pencil-square::before { + content: "\f14b"; } + +.fa-suitcase-rolling::before { + content: "\f5c1"; } + +.fa-person-circle-exclamation::before { + content: "\e53f"; } + +.fa-chevron-down::before { + content: "\f078"; } + +.fa-battery-full::before { + content: "\f240"; } + +.fa-battery::before { + content: "\f240"; } + +.fa-battery-5::before { + content: "\f240"; } + +.fa-skull-crossbones::before { + content: "\f714"; } + +.fa-code-compare::before { + content: "\e13a"; } + +.fa-list-ul::before { + content: "\f0ca"; } + +.fa-list-dots::before { + content: "\f0ca"; } + +.fa-school-lock::before { + content: "\e56f"; } + +.fa-tower-cell::before { + content: "\e585"; } + +.fa-down-long::before { + content: "\f309"; } + +.fa-long-arrow-alt-down::before { + content: "\f309"; } + +.fa-ranking-star::before { + content: "\e561"; } + +.fa-chess-king::before { + content: "\f43f"; } + +.fa-person-harassing::before { + content: "\e549"; } + +.fa-brazilian-real-sign::before { + content: "\e46c"; } + +.fa-landmark-dome::before { + content: "\f752"; } + +.fa-landmark-alt::before { + content: "\f752"; } + +.fa-arrow-up::before { + content: "\f062"; } + +.fa-tv::before { + content: "\f26c"; } + +.fa-television::before { + content: "\f26c"; } + +.fa-tv-alt::before { + content: "\f26c"; } + +.fa-shrimp::before { + content: "\e448"; } + +.fa-list-check::before { + content: "\f0ae"; } + +.fa-tasks::before { + content: "\f0ae"; } + +.fa-jug-detergent::before { + content: "\e519"; } + +.fa-circle-user::before { + content: "\f2bd"; } + +.fa-user-circle::before { + content: "\f2bd"; } + +.fa-user-shield::before { + content: "\f505"; } + +.fa-wind::before { + content: "\f72e"; } + +.fa-car-burst::before { + content: "\f5e1"; } + +.fa-car-crash::before { + content: "\f5e1"; } + +.fa-y::before { + content: "\59"; } + +.fa-person-snowboarding::before { + content: "\f7ce"; } + +.fa-snowboarding::before { + content: "\f7ce"; } + +.fa-truck-fast::before { + content: "\f48b"; } + +.fa-shipping-fast::before { + content: "\f48b"; } + +.fa-fish::before { + content: "\f578"; } + +.fa-user-graduate::before { + content: "\f501"; } + +.fa-circle-half-stroke::before { + content: "\f042"; } + +.fa-adjust::before { + content: "\f042"; } + +.fa-clapperboard::before { + content: "\e131"; } + +.fa-circle-radiation::before { + content: "\f7ba"; } + +.fa-radiation-alt::before { + content: "\f7ba"; } + +.fa-baseball::before { + content: "\f433"; } + +.fa-baseball-ball::before { + content: "\f433"; } + +.fa-jet-fighter-up::before { + content: "\e518"; } + +.fa-diagram-project::before { + content: "\f542"; } + +.fa-project-diagram::before { + content: "\f542"; } + +.fa-copy::before { + content: "\f0c5"; } + +.fa-volume-xmark::before { + content: "\f6a9"; } + +.fa-volume-mute::before { + content: "\f6a9"; } + +.fa-volume-times::before { + content: "\f6a9"; } + +.fa-hand-sparkles::before { + content: "\e05d"; } + +.fa-grip::before { + content: "\f58d"; } + +.fa-grip-horizontal::before { + content: "\f58d"; } + +.fa-share-from-square::before { + content: "\f14d"; } + +.fa-share-square::before { + content: "\f14d"; } + +.fa-child-combatant::before { + content: "\e4e0"; } + +.fa-child-rifle::before { + content: "\e4e0"; } + +.fa-gun::before { + content: "\e19b"; } + +.fa-square-phone::before { + content: "\f098"; } + +.fa-phone-square::before { + content: "\f098"; } + +.fa-plus::before { + content: "\2b"; } + +.fa-add::before { + content: "\2b"; } + +.fa-expand::before { + content: "\f065"; } + +.fa-computer::before { + content: "\e4e5"; } + +.fa-xmark::before { + content: "\f00d"; } + +.fa-close::before { + content: "\f00d"; } + +.fa-multiply::before { + content: "\f00d"; } + +.fa-remove::before { + content: "\f00d"; } + +.fa-times::before { + content: "\f00d"; } + +.fa-arrows-up-down-left-right::before { + content: "\f047"; } + +.fa-arrows::before { + content: "\f047"; } + +.fa-chalkboard-user::before { + content: "\f51c"; } + +.fa-chalkboard-teacher::before { + content: "\f51c"; } + +.fa-peso-sign::before { + content: "\e222"; } + +.fa-building-shield::before { + content: "\e4d8"; } + +.fa-baby::before { + content: "\f77c"; } + +.fa-users-line::before { + content: "\e592"; } + +.fa-quote-left::before { + content: "\f10d"; } + +.fa-quote-left-alt::before { + content: "\f10d"; } + +.fa-tractor::before { + content: "\f722"; } + +.fa-trash-arrow-up::before { + content: "\f829"; } + +.fa-trash-restore::before { + content: "\f829"; } + +.fa-arrow-down-up-lock::before { + content: "\e4b0"; } + +.fa-lines-leaning::before { + content: "\e51e"; } + +.fa-ruler-combined::before { + content: "\f546"; } + +.fa-copyright::before { + content: "\f1f9"; } + +.fa-equals::before { + content: "\3d"; } + +.fa-blender::before { + content: "\f517"; } + +.fa-teeth::before { + content: "\f62e"; } + +.fa-shekel-sign::before { + content: "\f20b"; } + +.fa-ils::before { + content: "\f20b"; } + +.fa-shekel::before { + content: "\f20b"; } + +.fa-sheqel::before { + content: "\f20b"; } + +.fa-sheqel-sign::before { + content: "\f20b"; } + +.fa-map::before { + content: "\f279"; } + +.fa-rocket::before { + content: "\f135"; } + +.fa-photo-film::before { + content: "\f87c"; } + +.fa-photo-video::before { + content: "\f87c"; } + +.fa-folder-minus::before { + content: "\f65d"; } + +.fa-store::before { + content: "\f54e"; } + +.fa-arrow-trend-up::before { + content: "\e098"; } + +.fa-plug-circle-minus::before { + content: "\e55e"; } + +.fa-sign-hanging::before { + content: "\f4d9"; } + +.fa-sign::before { + content: "\f4d9"; } + +.fa-bezier-curve::before { + content: "\f55b"; } + +.fa-bell-slash::before { + content: "\f1f6"; } + +.fa-tablet::before { + content: "\f3fb"; } + +.fa-tablet-android::before { + content: "\f3fb"; } + +.fa-school-flag::before { + content: "\e56e"; } + +.fa-fill::before { + content: "\f575"; } + +.fa-angle-up::before { + content: "\f106"; } + +.fa-drumstick-bite::before { + content: "\f6d7"; } + +.fa-holly-berry::before { + content: "\f7aa"; } + +.fa-chevron-left::before { + content: "\f053"; } + +.fa-bacteria::before { + content: "\e059"; } + +.fa-hand-lizard::before { + content: "\f258"; } + +.fa-notdef::before { + content: "\e1fe"; } + +.fa-disease::before { + content: "\f7fa"; } + +.fa-briefcase-medical::before { + content: "\f469"; } + +.fa-genderless::before { + content: "\f22d"; } + +.fa-chevron-right::before { + content: "\f054"; } + +.fa-retweet::before { + content: "\f079"; } + +.fa-car-rear::before { + content: "\f5de"; } + +.fa-car-alt::before { + content: "\f5de"; } + +.fa-pump-soap::before { + content: "\e06b"; } + +.fa-video-slash::before { + content: "\f4e2"; } + +.fa-battery-quarter::before { + content: "\f243"; } + +.fa-battery-2::before { + content: "\f243"; } + +.fa-radio::before { + content: "\f8d7"; } + +.fa-baby-carriage::before { + content: "\f77d"; } + +.fa-carriage-baby::before { + content: "\f77d"; } + +.fa-traffic-light::before { + content: "\f637"; } + +.fa-thermometer::before { + content: "\f491"; } + +.fa-vr-cardboard::before { + content: "\f729"; } + +.fa-hand-middle-finger::before { + content: "\f806"; } + +.fa-percent::before { + content: "\25"; } + +.fa-percentage::before { + content: "\25"; } + +.fa-truck-moving::before { + content: "\f4df"; } + +.fa-glass-water-droplet::before { + content: "\e4f5"; } + +.fa-display::before { + content: "\e163"; } + +.fa-face-smile::before { + content: "\f118"; } + +.fa-smile::before { + content: "\f118"; } + +.fa-thumbtack::before { + content: "\f08d"; } + +.fa-thumb-tack::before { + content: "\f08d"; } + +.fa-trophy::before { + content: "\f091"; } + +.fa-person-praying::before { + content: "\f683"; } + +.fa-pray::before { + content: "\f683"; } + +.fa-hammer::before { + content: "\f6e3"; } + +.fa-hand-peace::before { + content: "\f25b"; } + +.fa-rotate::before { + content: "\f2f1"; } + +.fa-sync-alt::before { + content: "\f2f1"; } + +.fa-spinner::before { + content: "\f110"; } + +.fa-robot::before { + content: "\f544"; } + +.fa-peace::before { + content: "\f67c"; } + +.fa-gears::before { + content: "\f085"; } + +.fa-cogs::before { + content: "\f085"; } + +.fa-warehouse::before { + content: "\f494"; } + +.fa-arrow-up-right-dots::before { + content: "\e4b7"; } + +.fa-splotch::before { + content: "\f5bc"; } + +.fa-face-grin-hearts::before { + content: "\f584"; } + +.fa-grin-hearts::before { + content: "\f584"; } + +.fa-dice-four::before { + content: "\f524"; } + +.fa-sim-card::before { + content: "\f7c4"; } + +.fa-transgender::before { + content: "\f225"; } + +.fa-transgender-alt::before { + content: "\f225"; } + +.fa-mercury::before { + content: "\f223"; } + +.fa-arrow-turn-down::before { + content: "\f149"; } + +.fa-level-down::before { + content: "\f149"; } + +.fa-person-falling-burst::before { + content: "\e547"; } + +.fa-award::before { + content: "\f559"; } + +.fa-ticket-simple::before { + content: "\f3ff"; } + +.fa-ticket-alt::before { + content: "\f3ff"; } + +.fa-building::before { + content: "\f1ad"; } + +.fa-angles-left::before { + content: "\f100"; } + +.fa-angle-double-left::before { + content: "\f100"; } + +.fa-qrcode::before { + content: "\f029"; } + +.fa-clock-rotate-left::before { + content: "\f1da"; } + +.fa-history::before { + content: "\f1da"; } + +.fa-face-grin-beam-sweat::before { + content: "\f583"; } + +.fa-grin-beam-sweat::before { + content: "\f583"; } + +.fa-file-export::before { + content: "\f56e"; } + +.fa-arrow-right-from-file::before { + content: "\f56e"; } + +.fa-shield::before { + content: "\f132"; } + +.fa-shield-blank::before { + content: "\f132"; } + +.fa-arrow-up-short-wide::before { + content: "\f885"; } + +.fa-sort-amount-up-alt::before { + content: "\f885"; } + +.fa-house-medical::before { + content: "\e3b2"; } + +.fa-golf-ball-tee::before { + content: "\f450"; } + +.fa-golf-ball::before { + content: "\f450"; } + +.fa-circle-chevron-left::before { + content: "\f137"; } + +.fa-chevron-circle-left::before { + content: "\f137"; } + +.fa-house-chimney-window::before { + content: "\e00d"; } + +.fa-pen-nib::before { + content: "\f5ad"; } + +.fa-tent-arrow-turn-left::before { + content: "\e580"; } + +.fa-tents::before { + content: "\e582"; } + +.fa-wand-magic::before { + content: "\f0d0"; } + +.fa-magic::before { + content: "\f0d0"; } + +.fa-dog::before { + content: "\f6d3"; } + +.fa-carrot::before { + content: "\f787"; } + +.fa-moon::before { + content: "\f186"; } + +.fa-wine-glass-empty::before { + content: "\f5ce"; } + +.fa-wine-glass-alt::before { + content: "\f5ce"; } + +.fa-cheese::before { + content: "\f7ef"; } + +.fa-yin-yang::before { + content: "\f6ad"; } + +.fa-music::before { + content: "\f001"; } + +.fa-code-commit::before { + content: "\f386"; } + +.fa-temperature-low::before { + content: "\f76b"; } + +.fa-person-biking::before { + content: "\f84a"; } + +.fa-biking::before { + content: "\f84a"; } + +.fa-broom::before { + content: "\f51a"; } + +.fa-shield-heart::before { + content: "\e574"; } + +.fa-gopuram::before { + content: "\f664"; } + +.fa-earth-oceania::before { + content: "\e47b"; } + +.fa-globe-oceania::before { + content: "\e47b"; } + +.fa-square-xmark::before { + content: "\f2d3"; } + +.fa-times-square::before { + content: "\f2d3"; } + +.fa-xmark-square::before { + content: "\f2d3"; } + +.fa-hashtag::before { + content: "\23"; } + +.fa-up-right-and-down-left-from-center::before { + content: "\f424"; } + +.fa-expand-alt::before { + content: "\f424"; } + +.fa-oil-can::before { + content: "\f613"; } + +.fa-t::before { + content: "\54"; } + +.fa-hippo::before { + content: "\f6ed"; } + +.fa-chart-column::before { + content: "\e0e3"; } + +.fa-infinity::before { + content: "\f534"; } + +.fa-vial-circle-check::before { + content: "\e596"; } + +.fa-person-arrow-down-to-line::before { + content: "\e538"; } + +.fa-voicemail::before { + content: "\f897"; } + +.fa-fan::before { + content: "\f863"; } + +.fa-person-walking-luggage::before { + content: "\e554"; } + +.fa-up-down::before { + content: "\f338"; } + +.fa-arrows-alt-v::before { + content: "\f338"; } + +.fa-cloud-moon-rain::before { + content: "\f73c"; } + +.fa-calendar::before { + content: "\f133"; } + +.fa-trailer::before { + content: "\e041"; } + +.fa-bahai::before { + content: "\f666"; } + +.fa-haykal::before { + content: "\f666"; } + +.fa-sd-card::before { + content: "\f7c2"; } + +.fa-dragon::before { + content: "\f6d5"; } + +.fa-shoe-prints::before { + content: "\f54b"; } + +.fa-circle-plus::before { + content: "\f055"; } + +.fa-plus-circle::before { + content: "\f055"; } + +.fa-face-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-hand-holding::before { + content: "\f4bd"; } + +.fa-plug-circle-exclamation::before { + content: "\e55d"; } + +.fa-link-slash::before { + content: "\f127"; } + +.fa-chain-broken::before { + content: "\f127"; } + +.fa-chain-slash::before { + content: "\f127"; } + +.fa-unlink::before { + content: "\f127"; } + +.fa-clone::before { + content: "\f24d"; } + +.fa-person-walking-arrow-loop-left::before { + content: "\e551"; } + +.fa-arrow-up-z-a::before { + content: "\f882"; } + +.fa-sort-alpha-up-alt::before { + content: "\f882"; } + +.fa-fire-flame-curved::before { + content: "\f7e4"; } + +.fa-fire-alt::before { + content: "\f7e4"; } + +.fa-tornado::before { + content: "\f76f"; } + +.fa-file-circle-plus::before { + content: "\e494"; } + +.fa-book-quran::before { + content: "\f687"; } + +.fa-quran::before { + content: "\f687"; } + +.fa-anchor::before { + content: "\f13d"; } + +.fa-border-all::before { + content: "\f84c"; } + +.fa-face-angry::before { + content: "\f556"; } + +.fa-angry::before { + content: "\f556"; } + +.fa-cookie-bite::before { + content: "\f564"; } + +.fa-arrow-trend-down::before { + content: "\e097"; } + +.fa-rss::before { + content: "\f09e"; } + +.fa-feed::before { + content: "\f09e"; } + +.fa-draw-polygon::before { + content: "\f5ee"; } + +.fa-scale-balanced::before { + content: "\f24e"; } + +.fa-balance-scale::before { + content: "\f24e"; } + +.fa-gauge-simple-high::before { + content: "\f62a"; } + +.fa-tachometer::before { + content: "\f62a"; } + +.fa-tachometer-fast::before { + content: "\f62a"; } + +.fa-shower::before { + content: "\f2cc"; } + +.fa-desktop::before { + content: "\f390"; } + +.fa-desktop-alt::before { + content: "\f390"; } + +.fa-m::before { + content: "\4d"; } + +.fa-table-list::before { + content: "\f00b"; } + +.fa-th-list::before { + content: "\f00b"; } + +.fa-comment-sms::before { + content: "\f7cd"; } + +.fa-sms::before { + content: "\f7cd"; } + +.fa-book::before { + content: "\f02d"; } + +.fa-user-plus::before { + content: "\f234"; } + +.fa-check::before { + content: "\f00c"; } + +.fa-battery-three-quarters::before { + content: "\f241"; } + +.fa-battery-4::before { + content: "\f241"; } + +.fa-house-circle-check::before { + content: "\e509"; } + +.fa-angle-left::before { + content: "\f104"; } + +.fa-diagram-successor::before { + content: "\e47a"; } + +.fa-truck-arrow-right::before { + content: "\e58b"; } + +.fa-arrows-split-up-and-left::before { + content: "\e4bc"; } + +.fa-hand-fist::before { + content: "\f6de"; } + +.fa-fist-raised::before { + content: "\f6de"; } + +.fa-cloud-moon::before { + content: "\f6c3"; } + +.fa-briefcase::before { + content: "\f0b1"; } + +.fa-person-falling::before { + content: "\e546"; } + +.fa-image-portrait::before { + content: "\f3e0"; } + +.fa-portrait::before { + content: "\f3e0"; } + +.fa-user-tag::before { + content: "\f507"; } + +.fa-rug::before { + content: "\e569"; } + +.fa-earth-europe::before { + content: "\f7a2"; } + +.fa-globe-europe::before { + content: "\f7a2"; } + +.fa-cart-flatbed-suitcase::before { + content: "\f59d"; } + +.fa-luggage-cart::before { + content: "\f59d"; } + +.fa-rectangle-xmark::before { + content: "\f410"; } + +.fa-rectangle-times::before { + content: "\f410"; } + +.fa-times-rectangle::before { + content: "\f410"; } + +.fa-window-close::before { + content: "\f410"; } + +.fa-baht-sign::before { + content: "\e0ac"; } + +.fa-book-open::before { + content: "\f518"; } + +.fa-book-journal-whills::before { + content: "\f66a"; } + +.fa-journal-whills::before { + content: "\f66a"; } + +.fa-handcuffs::before { + content: "\e4f8"; } + +.fa-triangle-exclamation::before { + content: "\f071"; } + +.fa-exclamation-triangle::before { + content: "\f071"; } + +.fa-warning::before { + content: "\f071"; } + +.fa-database::before { + content: "\f1c0"; } + +.fa-share::before { + content: "\f064"; } + +.fa-arrow-turn-right::before { + content: "\f064"; } + +.fa-mail-forward::before { + content: "\f064"; } + +.fa-bottle-droplet::before { + content: "\e4c4"; } + +.fa-mask-face::before { + content: "\e1d7"; } + +.fa-hill-rockslide::before { + content: "\e508"; } + +.fa-right-left::before { + content: "\f362"; } + +.fa-exchange-alt::before { + content: "\f362"; } + +.fa-paper-plane::before { + content: "\f1d8"; } + +.fa-road-circle-exclamation::before { + content: "\e565"; } + +.fa-dungeon::before { + content: "\f6d9"; } + +.fa-align-right::before { + content: "\f038"; } + +.fa-money-bill-1-wave::before { + content: "\f53b"; } + +.fa-money-bill-wave-alt::before { + content: "\f53b"; } + +.fa-life-ring::before { + content: "\f1cd"; } + +.fa-hands::before { + content: "\f2a7"; } + +.fa-sign-language::before { + content: "\f2a7"; } + +.fa-signing::before { + content: "\f2a7"; } + +.fa-calendar-day::before { + content: "\f783"; } + +.fa-water-ladder::before { + content: "\f5c5"; } + +.fa-ladder-water::before { + content: "\f5c5"; } + +.fa-swimming-pool::before { + content: "\f5c5"; } + +.fa-arrows-up-down::before { + content: "\f07d"; } + +.fa-arrows-v::before { + content: "\f07d"; } + +.fa-face-grimace::before { + content: "\f57f"; } + +.fa-grimace::before { + content: "\f57f"; } + +.fa-wheelchair-move::before { + content: "\e2ce"; } + +.fa-wheelchair-alt::before { + content: "\e2ce"; } + +.fa-turn-down::before { + content: "\f3be"; } + +.fa-level-down-alt::before { + content: "\f3be"; } + +.fa-person-walking-arrow-right::before { + content: "\e552"; } + +.fa-square-envelope::before { + content: "\f199"; } + +.fa-envelope-square::before { + content: "\f199"; } + +.fa-dice::before { + content: "\f522"; } + +.fa-bowling-ball::before { + content: "\f436"; } + +.fa-brain::before { + content: "\f5dc"; } + +.fa-bandage::before { + content: "\f462"; } + +.fa-band-aid::before { + content: "\f462"; } + +.fa-calendar-minus::before { + content: "\f272"; } + +.fa-circle-xmark::before { + content: "\f057"; } + +.fa-times-circle::before { + content: "\f057"; } + +.fa-xmark-circle::before { + content: "\f057"; } + +.fa-gifts::before { + content: "\f79c"; } + +.fa-hotel::before { + content: "\f594"; } + +.fa-earth-asia::before { + content: "\f57e"; } + +.fa-globe-asia::before { + content: "\f57e"; } + +.fa-id-card-clip::before { + content: "\f47f"; } + +.fa-id-card-alt::before { + content: "\f47f"; } + +.fa-magnifying-glass-plus::before { + content: "\f00e"; } + +.fa-search-plus::before { + content: "\f00e"; } + +.fa-thumbs-up::before { + content: "\f164"; } + +.fa-user-clock::before { + content: "\f4fd"; } + +.fa-hand-dots::before { + content: "\f461"; } + +.fa-allergies::before { + content: "\f461"; } + +.fa-file-invoice::before { + content: "\f570"; } + +.fa-window-minimize::before { + content: "\f2d1"; } + +.fa-mug-saucer::before { + content: "\f0f4"; } + +.fa-coffee::before { + content: "\f0f4"; } + +.fa-brush::before { + content: "\f55d"; } + +.fa-mask::before { + content: "\f6fa"; } + +.fa-magnifying-glass-minus::before { + content: "\f010"; } + +.fa-search-minus::before { + content: "\f010"; } + +.fa-ruler-vertical::before { + content: "\f548"; } + +.fa-user-large::before { + content: "\f406"; } + +.fa-user-alt::before { + content: "\f406"; } + +.fa-train-tram::before { + content: "\e5b4"; } + +.fa-user-nurse::before { + content: "\f82f"; } + +.fa-syringe::before { + content: "\f48e"; } + +.fa-cloud-sun::before { + content: "\f6c4"; } + +.fa-stopwatch-20::before { + content: "\e06f"; } + +.fa-square-full::before { + content: "\f45c"; } + +.fa-magnet::before { + content: "\f076"; } + +.fa-jar::before { + content: "\e516"; } + +.fa-note-sticky::before { + content: "\f249"; } + +.fa-sticky-note::before { + content: "\f249"; } + +.fa-bug-slash::before { + content: "\e490"; } + +.fa-arrow-up-from-water-pump::before { + content: "\e4b6"; } + +.fa-bone::before { + content: "\f5d7"; } + +.fa-user-injured::before { + content: "\f728"; } + +.fa-face-sad-tear::before { + content: "\f5b4"; } + +.fa-sad-tear::before { + content: "\f5b4"; } + +.fa-plane::before { + content: "\f072"; } + +.fa-tent-arrows-down::before { + content: "\e581"; } + +.fa-exclamation::before { + content: "\21"; } + +.fa-arrows-spin::before { + content: "\e4bb"; } + +.fa-print::before { + content: "\f02f"; } + +.fa-turkish-lira-sign::before { + content: "\e2bb"; } + +.fa-try::before { + content: "\e2bb"; } + +.fa-turkish-lira::before { + content: "\e2bb"; } + +.fa-dollar-sign::before { + content: "\24"; } + +.fa-dollar::before { + content: "\24"; } + +.fa-usd::before { + content: "\24"; } + +.fa-x::before { + content: "\58"; } + +.fa-magnifying-glass-dollar::before { + content: "\f688"; } + +.fa-search-dollar::before { + content: "\f688"; } + +.fa-users-gear::before { + content: "\f509"; } + +.fa-users-cog::before { + content: "\f509"; } + +.fa-person-military-pointing::before { + content: "\e54a"; } + +.fa-building-columns::before { + content: "\f19c"; } + +.fa-bank::before { + content: "\f19c"; } + +.fa-institution::before { + content: "\f19c"; } + +.fa-museum::before { + content: "\f19c"; } + +.fa-university::before { + content: "\f19c"; } + +.fa-umbrella::before { + content: "\f0e9"; } + +.fa-trowel::before { + content: "\e589"; } + +.fa-d::before { + content: "\44"; } + +.fa-stapler::before { + content: "\e5af"; } + +.fa-masks-theater::before { + content: "\f630"; } + +.fa-theater-masks::before { + content: "\f630"; } + +.fa-kip-sign::before { + content: "\e1c4"; } + +.fa-hand-point-left::before { + content: "\f0a5"; } + +.fa-handshake-simple::before { + content: "\f4c6"; } + +.fa-handshake-alt::before { + content: "\f4c6"; } + +.fa-jet-fighter::before { + content: "\f0fb"; } + +.fa-fighter-jet::before { + content: "\f0fb"; } + +.fa-square-share-nodes::before { + content: "\f1e1"; } + +.fa-share-alt-square::before { + content: "\f1e1"; } + +.fa-barcode::before { + content: "\f02a"; } + +.fa-plus-minus::before { + content: "\e43c"; } + +.fa-video::before { + content: "\f03d"; } + +.fa-video-camera::before { + content: "\f03d"; } + +.fa-graduation-cap::before { + content: "\f19d"; } + +.fa-mortar-board::before { + content: "\f19d"; } + +.fa-hand-holding-medical::before { + content: "\e05c"; } + +.fa-person-circle-check::before { + content: "\e53e"; } + +.fa-turn-up::before { + content: "\f3bf"; } + +.fa-level-up-alt::before { + content: "\f3bf"; } + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } +:root, :host { + --fa-style-family-brands: 'Font Awesome 6 Brands'; + --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/FontAwesome6Brands-Regular-400.woff2") format("woff2"), url("../webfonts/FontAwesome6Brands-Regular-400.ttf") format("truetype"); } + +.fab, +.fa-brands { + font-weight: 400; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-redhat:before { + content: "\f7bc"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-cloudflare:before { + content: "\e07d"; } + +.fa-ups:before { + content: "\f7e0"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-stackpath:before { + content: "\f842"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-guilded:before { + content: "\e07e"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-square-js:before { + content: "\f3b9"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-orcid:before { + content: "\f8d2"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-invision:before { + content: "\f7b0"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-unity:before { + content: "\e049"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-square-reddit:before { + content: "\f1a2"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-square-font-awesome:before { + content: "\e5ad"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-square-instagram:before { + content: "\e055"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-square-hacker-news:before { + content: "\f3af"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-threads:before { + content: "\e618"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-square-snapchat:before { + content: "\f2ad"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-artstation:before { + content: "\f77a"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-sourcetree:before { + content: "\f7d3"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-diaspora:before { + content: "\f791"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-square-font-awesome-stroke:before { + content: "\f35c"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-atlassian:before { + content: "\f77b"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-chromecast:before { + content: "\f838"; } + +.fa-evernote:before { + content: "\f839"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-watchman-monitoring:before { + content: "\e087"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-git-alt:before { + content: "\f841"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wizards-of-the-coast:before { + content: "\f730"; } + +.fa-square-viadeo:before { + content: "\f2aa"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-centos:before { + content: "\f789"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-square-dribbble:before { + content: "\f397"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-node:before { + content: "\f419"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-debian:before { + content: "\e60b"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-instalod:before { + content: "\e081"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-square-twitter:before { + content: "\f081"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-golang:before { + content: "\e40f"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-uncharted:before { + content: "\e084"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-square-youtube:before { + content: "\f431"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-rendact:before { + content: "\f3e4"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-nfc-directional:before { + content: "\e530"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-fedora:before { + content: "\f798"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-meta:before { + content: "\e49b"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-creative-commons-zero:before { + content: "\f4f3"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-confluence:before { + content: "\f78d"; } + +.fa-mdb:before { + content: "\f8ca"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-unsplash:before { + content: "\e07c"; } + +.fa-yarn:before { + content: "\f7e3"; } + +.fa-square-steam:before { + content: "\f1b7"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-500px:before { + content: "\f26e"; } + +.fa-square-vimeo:before { + content: "\f194"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-flag:before { + content: "\f2b4"; } + +.fa-font-awesome-logo-full:before { + content: "\f2b4"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-hive:before { + content: "\e07f"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-padlet:before { + content: "\e4a0"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-square-github:before { + content: "\f092"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-fedex:before { + content: "\f797"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-shopify:before { + content: "\e057"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-square-threads:before { + content: "\e619"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-swift:before { + content: "\f8e1"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-square-gitlab:before { + content: "\e5ae"; } + +.fa-gitlab-square:before { + content: "\e5ae"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-square-odnoklassniki:before { + content: "\f264"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-hashnode:before { + content: "\e499"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-itch-io:before { + content: "\f83a"; } + +.fa-umbraco:before { + content: "\f8e8"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-ubuntu:before { + content: "\f7df"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-dhl:before { + content: "\f790"; } + +.fa-square-pinterest:before { + content: "\f0d3"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-dailymotion:before { + content: "\e052"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-bootstrap:before { + content: "\f836"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-nfc-symbol:before { + content: "\e531"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-speaker-deck:before { + content: "\f83c"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-square-google-plus:before { + content: "\f0d4"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-d-and-d-beyond:before { + content: "\f6ca"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-square-xing:before { + content: "\f169"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-usps:before { + content: "\f7e1"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-symfony:before { + content: "\f83d"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-think-peaks:before { + content: "\f731"; } + +.fa-bilibili:before { + content: "\e3d9"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-x-twitter:before { + content: "\e61b"; } + +.fa-cotton-bureau:before { + content: "\f89e"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-42-group:before { + content: "\e080"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-square-pied-piper:before { + content: "\e01e"; } + +.fa-pied-piper-square:before { + content: "\e01e"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-square-facebook:before { + content: "\f082"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-mixer:before { + content: "\e056"; } + +.fa-square-lastfm:before { + content: "\f203"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-mendeley:before { + content: "\f7b3"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-figma:before { + content: "\f799"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-cmplid:before { + content: "\e360"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-deezer:before { + content: "\e077"; } + +.fa-raspberry-pi:before { + content: "\f7bb"; } + +.fa-jira:before { + content: "\f7b1"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-screenpal:before { + content: "\e570"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-microblog:before { + content: "\e01a"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-wirsindhandwerk:before { + content: "\e2d0"; } + +.fa-wsh:before { + content: "\e2d0"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-salesforce:before { + content: "\f83b"; } + +.fa-octopus-deploy:before { + content: "\e082"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-waze:before { + content: "\f83f"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-square-behance:before { + content: "\f1b5"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-space-awesome:before { + content: "\e5ac"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-square-git:before { + content: "\f1d2"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-square-tumblr:before { + content: "\f174"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-perbyte:before { + content: "\e083"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-bots:before { + content: "\e340"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-ideal:before { + content: "\e013"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-dev:before { + content: "\f6cc"; } + +.fa-sketch:before { + content: "\f7c6"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-php:before { + content: "\f457"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-firefox-browser:before { + content: "\e007"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-suse:before { + content: "\f7d6"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-buffer:before { + content: "\f837"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-yammer:before { + content: "\f840"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-stubber:before { + content: "\e5c7"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f2c6"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-odysee:before { + content: "\e5c6"; } + +.fa-square-whatsapp:before { + content: "\f40c"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f198"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-square-x-twitter:before { + content: "\e61a"; } + +.fa-reacteurope:before { + content: "\f75d"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f23a"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-critical-role:before { + content: "\f6c9"; } + +.fa-sitrox:before { + content: "\e44a"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-airbnb:before { + content: "\f834"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-buy-n-large:before { + content: "\f8a6"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-canadian-maple-leaf:before { + content: "\f785"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-wodu:before { + content: "\e088"; } + +.fa-google-pay:before { + content: "\e079"; } + +.fa-intercom:before { + content: "\f7af"; } + +.fa-zhihu:before { + content: "\f63f"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-pix:before { + content: "\e43a"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/FontAwesome6Free-Regular-400.woff2") format("woff2"), url("../webfonts/FontAwesome6Free-Regular-400.ttf") format("truetype"); } + +.far, +.fa-regular { + font-weight: 400; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../webfonts/FontAwesome6Free-Solid-900.woff2") format("woff2"), url("../webfonts/FontAwesome6Free-Solid-900.ttf") format("truetype"); } + +.fas, +.fa-solid { + font-weight: 900; } +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-display: block; + font-weight: 400; + src: url("../webfonts/FontAwesome6Brands-Regular-400.woff2") format("woff2"), url("../webfonts/FontAwesome6Brands-Regular-400.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-display: block; + font-weight: 900; + src: url("../webfonts/FontAwesome6Free-Solid-900.woff2") format("woff2"), url("../webfonts/FontAwesome6Free-Solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-display: block; + font-weight: 400; + src: url("../webfonts/../webfonts/FontAwesome6Free-Regular-400.woff2") format("woff2"), url("../webfonts/FontAwesome6Free-Regular-400.ttf") format("truetype"); } +@font-face { + font-family: 'Font Awesome 6 Free'; + font-display: block; + src: url("../webfonts/FontAwesome6Free-Solid-900.woff2") format("woff2"), url("../webfonts/FontAwesome6Free-Solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-display: block; + src: url("../webfonts/FontAwesome6Brands-Regular-400.woff2") format("woff2"), url("../webfonts/FontAwesome6Brands-Regular-400.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-display: block; + src: url("../webfonts/FontAwesome6Free-Regular-400.woff2") format("woff2"), url("../../webfonts/FontAwesome6Free-Regular-400.ttf") format("truetype"); + unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; } + diff --git a/_extensions/quarto-ext/fontawesome/assets/css/latex-fontsize.css b/_extensions/quarto-ext/fontawesome/assets/css/latex-fontsize.css new file mode 100644 index 0000000..45545ec --- /dev/null +++ b/_extensions/quarto-ext/fontawesome/assets/css/latex-fontsize.css @@ -0,0 +1,30 @@ +.fa-tiny { + font-size: 0.5em; +} +.fa-scriptsize { + font-size: 0.7em; +} +.fa-footnotesize { + font-size: 0.8em; +} +.fa-small { + font-size: 0.9em; +} +.fa-normalsize { + font-size: 1em; +} +.fa-large { + font-size: 1.2em; +} +.fa-Large { + font-size: 1.5em; +} +.fa-LARGE { + font-size: 1.75em; +} +.fa-huge { + font-size: 2em; +} +.fa-Huge { + font-size: 2.5em; +} diff --git a/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Brands-Regular-400.ttf b/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Brands-Regular-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..34a1436b2c20630c5ecec03d760e02aa61ae75fd GIT binary patch literal 180104 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%0AsAb*I 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 z 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≤=Q+zF9#=@O#GIZz7Cagl;mfa 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

G2G~kvHl@4&Aw<^yK4|ZAS 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�j5 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 E2jhpYTmS$7 literal 0 HcmV?d00001 diff --git a/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Regular-400.woff2 b/_extensions/quarto-ext/fontawesome/assets/webfonts/FontAwesome6Free-Regular-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f3918d2b23e96c19c305b476afe17a2d1024b183 GIT binary patch literal 25124 zcmV)8K*qm!Pew8T0RR910AeHn4*&oF0VyN^0Aa%b0RR9100000000000000000000 z0000#Mn+Uk92z_uARM_a24Dbzu{aS33WB?Ef`9@GgERmEHUcCAhGGOD1&Is?lTcfK z2$2TrhD}#hVJMvIysaVH%JbmrfU^6P5R|*_(QlTJf(6_dx?$r0gQtH{+5i9l|No!A zEM#o=Ki2*KwhaXh6e_Jia}lL@D7CqFMnNeyW`u}gXcX?zE+`dO5h)i}V>YdGa#AhT zoMNc~$0~0(mv_{d?2{^6@;0-06{hW=Mo=TD5!8tOi08J9l*dTiL5-lsDMr6q?=9u% zi6^KL)Cg)!scSc3DPQgws5yUAopt7SQmy%#sb~I6zK5&#e1A+W`Jef&u6n*NQ{w~Z zq6ns$c24Np3vW_VKbhSx_9g}#zSByt@3Mq%7+Z}fVxM=%jz1gquLlY?n^&wRoXTy* z8+UQ+(UgE`1XDTP{O?71y89uwP+Lmx63onHOl<|Q5{k~i6SSleT)blm(I0g5tz@qNi`2@hR zywBpW)W_%I%0&@I>3qD|e83~9pq#g#=D%d`qNv?cqxWt)cz!+~Ki6dv%b{^~;j*F5_`j14OT7!Ef$x7Pw53M5aRdU2Utz(du5 zhakpU%dv}SWV$zo(A1`TX;eZZb(4QD`AhgL5CA{`#??w|2m3|BZId^r|DNvU9K}&= zS$4Mbk~jVs6Ls(7v>DBuEOZj>oN*s!S|~3@R*4)757xFDeNzP*4B`7{P5lR$?&*iJnPlMRD+7t>yc(8$fad zdUjJMMSxsi$XFu9el8Uip%SOM1p)xPGk}B1{pqsA{vuw*Kcy4UdHxwXd1iOCnzIhC zEXz1||IgBj_nUX`!oBt#PpPo6DCl8IgHZqu3JakDJOJe5Q!Opt|nsAdK#@PRv zS|;fndbu1U%Q@#M>w?IcB+^r)^s?&uRp{=jt_IMJ#sFwy2m<6j5CC~iaJT~!LoFL< zf&e(P0^JTr#@Ra$5^HE=Xk@(2&ilyQAXK_RcIT5oL3SpHE={gmNPqzvG6ozEn+0I& zl|TdZ|NcRxeP9R&HYou6G@ZNf_^1Bl)qfxce_kZcUCCT)X#q<>J2`^~!9cPKFoN#7 z&NJ;i9MDJy8<=g8O=?L6nE@#DItQ83%gb+dy5wXj6 ziP)y6K|?cq5|IU2DhnINrrLXju&@d+pk;l?oc|wp$Mh++YAb3LFd#|-8F$Hr@r`n` zsFil84*Gt^0!ANG%zDIL%0A8>@-YG!Bu_9fNQ9dgA_xf? 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

BmFx3;X;of;ZS^E^Ji-ilCCh#LMnCj%N76v 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℘k@kUInlLOc0)M4!segxaAwmq^mZ?92- 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

%2NHKpN>D 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

V+nX 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

W)6a&Ua1EGQKfY)QwwV{%lF=d31ScAH&d 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

3#sN8Pr!Qz=q~QxSnL9Tl)GOSlu|0b{v2Uk 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 literal 0 HcmV?d00001 diff --git a/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.ttf b/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e9545ed579e6d86383c254713e8bd17356f72e6c GIT binary patch literal 10556 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 literal 0 HcmV?d00001 diff --git a/_extensions/quarto-ext/fontawesome/fontawesome.lua b/_extensions/quarto-ext/fontawesome/fontawesome.lua new file mode 100644 index 0000000..ff64dca --- /dev/null +++ b/_extensions/quarto-ext/fontawesome/fontawesome.lua @@ -0,0 +1,84 @@ +local function ensureLatexDeps() + quarto.doc.use_latex_package("fontawesome5") +end + +local function ensureHtmlDeps() + quarto.doc.add_html_dependency({ + name = 'fontawesome6', + version = '0.1.0', + stylesheets = {'assets/css/all.css', 'assets/css/latex-fontsize.css'} + }) +end + +local function isEmpty(s) + return s == nil or s == '' +end + +local function isValidSize(size) + local validSizes = { + "tiny", + "scriptsize", + "footnotesize", + "small", + "normalsize", + "large", + "Large", + "LARGE", + "huge", + "Huge" + } + for _, v in ipairs(validSizes) do + if v == size then + return size + end + end + return "" +end + +return { + ["fa"] = function(args, kwargs) + + local group = "solid" + local icon = pandoc.utils.stringify(args[1]) + if #args > 1 then + group = icon + icon = pandoc.utils.stringify(args[2]) + end + + local title = pandoc.utils.stringify(kwargs["title"]) + if not isEmpty(title) then + title = " title=\"" .. title .. "\"" + end + + local label = pandoc.utils.stringify(kwargs["label"]) + if isEmpty(label) then + label = " aria-label=\"" .. icon .. "\"" + else + label = " aria-label=\"" .. label .. "\"" + end + + local size = pandoc.utils.stringify(kwargs["size"]) + + -- detect html (excluding epub which won't handle fa) + if quarto.doc.is_format("html:js") then + ensureHtmlDeps() + if not isEmpty(size) then + size = " fa-" .. size + end + return pandoc.RawInline( + 'html', + "" + ) + -- detect pdf / beamer / latex / etc + elseif quarto.doc.is_format("pdf") then + ensureLatexDeps() + if isEmpty(isValidSize(size)) then + return pandoc.RawInline('tex', "\\faIcon{" .. icon .. "}") + else + return pandoc.RawInline('tex', "{\\" .. size .. "\\faIcon{" .. icon .. "}}") + end + else + return pandoc.Null() + end + end +} diff --git a/index.html b/index.html index c21e4fb..7833a1e 100644 --- a/index.html +++ b/index.html @@ -5,10 +5,13 @@ + - + + + - + index @@ -24,9 +27,10 @@ ul.task-list{list-style: none;} ul.task-list li input[type="checkbox"] { width: 0.8em; - margin: 0 0.8em 0.2em -1.6em; + margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ vertical-align: middle; } + /* CSS for syntax highlighting */ pre > code.sourceCode { white-space: pre; position: relative; } pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } @@ -92,7 +96,7 @@ code span.vs { color: #008000; } /* VerbatimString */ code span.wa { color: #696969; font-style: italic; } /* Warning */ - + @@ -137,44 +141,44 @@ font-weight: 400; } - .callout.callout-captioned.callout-style-simple .callout-body { + .callout.callout-titled.callout-style-simple .callout-body { margin-top: 0.2em; } - .callout:not(.callout-captioned) .callout-body { + .callout:not(.callout-titled) .callout-body { display: flex; } - .callout:not(.no-icon).callout-captioned.callout-style-simple .callout-content { + .callout:not(.no-icon).callout-titled.callout-style-simple .callout-content { padding-left: 1.6em; } - .callout.callout-captioned .callout-header { + .callout.callout-titled .callout-header { padding-top: 0.2em; margin-bottom: -0.2em; } - .callout.callout-captioned .callout-caption p { + .callout.callout-titled .callout-title p { margin-top: 0.5em; margin-bottom: 0.5em; } - .callout.callout-captioned.callout-style-simple .callout-content p { + .callout.callout-titled.callout-style-simple .callout-content p { margin-top: 0; } - .callout.callout-captioned.callout-style-default .callout-content p { + .callout.callout-titled.callout-style-default .callout-content p { margin-top: 0.7em; } - .callout.callout-style-simple div.callout-caption { + .callout.callout-style-simple div.callout-title { border-bottom: none; font-size: .9rem; font-weight: 600; opacity: 75%; } - .callout.callout-style-default div.callout-caption { + .callout.callout-style-default div.callout-title { border-bottom: none; font-weight: 600; opacity: 85%; @@ -206,7 +210,7 @@ background-size: 0.9rem 0.9rem; } - .callout-caption { + .callout-title { display: flex } @@ -219,16 +223,16 @@ display: none !important; } - .callout.callout-captioned .callout-body > .callout-content > :last-child { + .callout.callout-titled .callout-body > .callout-content > :last-child { margin-bottom: 0.5rem; } - .callout.callout-captioned .callout-icon::before { + .callout.callout-titled .callout-icon::before { margin-top: .5rem; padding-right: .5rem; } - .callout:not(.callout-captioned) .callout-icon::before { + .callout:not(.callout-titled) .callout-icon::before { margin-top: 1rem; padding-right: .5rem; } @@ -243,7 +247,7 @@ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAEU0lEQVRYCcVXTWhcVRQ+586kSUMMxkyaElstCto2SIhitS5Ek8xUKV2poatCcVHtUlFQk8mbaaziwpWgglJwVaquitBOfhQXFlqlzSJpFSpIYyXNjBNiTCck7x2/8/LeNDOZxDuEkgOXe++553zfefee+/OYLOXFk3+1LLrRdiO81yNqZ6K9cG0P3MeFaMIQjXssE8Z1JzLO9ls20MBZX7oG8w9GxB0goaPrW5aNMp1yOZIa7Wv6o2ykpLtmAPs/vrG14Z+6d4jpbSKuhdcSyq9wGMPXjonwmESXrriLzFGOdDBLB8Y6MNYBu0dRokSygMA/mrun8MGFN3behm6VVAwg4WR3i6FvYK1T7MHo9BK7ydH+1uurECoouk5MPRyVSBrBHMYwVobG2aOXM07sWrn5qgB60rc6mcwIDJtQrnrEr44kmy+UO9r0u9O5/YbkS9juQckLed3DyW2XV/qWBBB3ptvI8EUY3I9p/67OW+g967TNr3Sotn3IuVlfMLVnsBwH4fsnebJvyGm5GeIUA3jljERmrv49SizPYuq+z7c2H/jlGC+Ghhupn/hcapqmcudB9jwJ/3jvnvu6vu5lVzF1fXyZuZZ7U8nRmVzytvT+H3kilYvH09mLWrQdwFSsFEsxFVs5fK7A0g8gMZjbif4ACpKbjv7gNGaD8bUrlk8x+KRflttr22JEMRUbTUwwDQScyzPgedQHZT0xnx7ujw2jfVfExwYHwOsDTjLdJ2ebmeQIlJ7neo41s/DrsL3kl+W2lWvAga0tR3zueGr6GL78M3ifH0rGXrBC2aAR8uYcIA5gwV8zIE8onoh8u0Fca/ciF7j1uOzEnqcIm59sEXoGc0+z6+H45V1CvAvHcD7THztu669cnp+L0okAeIc6zjbM/24LgGM1gZk7jnRu1aQWoU9sfUOuhrmtaPIO3YY1KLLWZaEO5TKUbMY5zx8W9UJ6elpLwKXbsaZ4EFl7B4bMtDv0iRipKoDQT2sNQI9b1utXFdYisi+wzZ/ri/1m7QfDgEuvgUUEIJPq3DhX/5DWNqIXDOweC2wvIR90Oq3lDpdMIgD2r0dXvGdsEW5H6x6HLRJYU7C69VefO1x8Gde1ZFSJLfWS1jbCnhtOPxmpfv2LXOA2Xk2tvnwKKPFuZ/oRmwBwqRQDcKNeVQkYcOjtWVBuM/JuYw5b6isojIkYxyYAFn5K7ZBF10fea52y8QltAg6jnMqNHFBmGkQ1j+U43HMi2xMar1Nv0zGsf1s8nUsmUtPOOrbFIR8bHFDMB5zL13Gmr/kGlCkUzedTzzmzsaJXhYawnA3UmARpiYj5ooJZiUoxFRtK3X6pgNPv+IZVPcnwbOl6f+aBaO1CNvPW9n9LmCp01nuSaTRF2YxHqZ8DYQT6WsXT+RD6eUztwYLZ8rM+rcPxamv1VQzFUkzFXvkiVrySGQgJNvXHJAxiU3/NwiC03rSf05VBaPtu/Z7/B8Yn/w7eguloAAAAAElFTkSuQmCC'); } - div.callout-note.callout-style-default .callout-caption { + div.callout-note.callout-style-default .callout-title { background-color: #dae6fb } @@ -255,7 +259,7 @@ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAEKklEQVRYCcVXTWhcVRS+575MJym48A+hSRFr00ySRQhURRfd2HYjk2SSTokuBCkU2o0LoSKKraKIBTcuFCoidGFD08nkBzdREbpQ1EDNIv8qSGMFUboImMSZd4/f9zJv8ibJMC8xJQfO3HPPPef7zrvvvnvviIkpC9nsw0UttFunbUhpFzFtarSd6WJkStVMw5xyVqYTvkwfzuf/5FgtkVoB0729j1rjXwThS7Vio+Mo6DNnvLfahoZ+i/o32lULuJ3NNiz7q6+pyAUkJaFF6JwaM2lUJlV0MlnQn5aTRbEu0SEqHUa0A4AdiGuB1kFXRfVyg5d87+Dg4DL6m2TLAub60ilj7A1Ec4odSAc8X95sHh7+ZRPCFo6Fnp7HfU/fBng/hi10CjCnWnJjsxvDNxWw0NfV6Rv5GgP3I3jGWXumdTD/3cbEOP2ZbOZp69yniG3FQ9z1jD7bnBu9Fc2tKGC2q+uAJOQHBDRiZX1x36o7fWBs7J9ownbtO+n0/qWkvW7UPIfc37WgT6ZGR++EOJyeQDSb9UB+DZ1G6DdLDzyS+b/kBCYGsYgJbSQHuThGKRcw5xdeQf8YdNHsc6ePXrlSYMBuSIAFTGAtQo+VuALo4BX83N190NWZWbynBjhOHsmNfFWLeL6v+ynsA58zDvvAC8j5PkbOcXCMg2PZFk3q8MjI7WAG/Dp9AwP7jdGBOOQkAvlFUB+irtm16I1Zw9YBcpGTGXYmk3kQIC/Cds55l+iMI3jqhjAuaoe+am2Jw5GT3Nbz3CkE12NavmzN5+erJW7046n/CH1RO/RVa8lBLozXk9uqykkGAyRXLWlLv5jyp4RFsG5vGVzpDLnIjTWgnRy2Rr+tDKvRc7Y8AyZq10jj8DqXdnIRNtFZb+t/ZRtXcDiVnzpqx8mPcDWxgARUqx0W1QB9MeUZiNrV4qP+Ehc+BpNgATsTX8ozYKL2NtFYAHc84fG7ndxUPr+AR/iQSns7uSUufAymwDOb2+NjK27lEFocm/EE2WpyIy/Hi66MWuMKJn8RvxIcj87IM5Vh9663ziW36kR0HNenXuxmfaD8JC7tfKbrhFr7LiZCrMjrzTeGx+PmkosrkNzW94ObzwocJ7A1HokLolY+AvkTiD/q1H0cN48c5EL8Crkttsa/AXQVDmutfyku0E7jShx49XqV3MFK8IryDhYVbj7Sj2P2eBxwcXoe8T8idsKKPRcnZw1b+slFTubwUwhktrfnAt7J++jwQtLZcm3sr9LQrjRzz6cfMv9aLvgmnAGvpoaGLxM4mAEaLV7iAzQ3oU0IvD5x9ix3yF2RAAuYAOO2f7PEFWCXZ4C9Pb2UsgDeVnFSpbFK7/IWu7TPTvBqzbGdCHOJQSxiEjt6IyZmxQyEJHv6xyQsYk//moVFsN2zP6fRImjfq7/n/wFDguUQFNEwugAAAABJRU5ErkJggg=='); } - div.callout-important.callout-style-default .callout-caption { + div.callout-important.callout-style-default .callout-title { background-color: #f7dddc } @@ -267,7 +271,7 @@ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAETklEQVRYCeVWW2gcVRg+58yaTUnizqbipZeX4uWhBEniBaoUX1Ioze52t7sRq6APio9V9MEaoWlVsFasRq0gltaAPuxms8lu0gcviE/FFOstVbSIxgcv6SU7EZqmdc7v9+9mJtNks51NTUH84ed889/PP+cmxP+d5FIbMJmNbpREu4WUkiTtCicKny0l1pIKmBzovF2S+hIJHX8iEu3hZJ5lNZGqyRrGSIQpq15AzF28jgpeY6yk6GVdrfFqdrD6Iw+QlB8g0YS2g7dyQmXM/IDhBhT0UCiRf59lfqmmDvzRt6kByV/m4JjtzuaujMUM2c5Z2d6JdKrRb3K2q6mA+oYVz8JnDdKPmmNthzkAk/lN63sYPgevrguc72aZX/L9C6x09GYyxBgCX4NlvyGUHOKELlm5rXeR1kchuChJt4SSwyddZRXgvwMGvYo4QSlk3/zkHD8UHxwVJA6zjZZqP8v8kK8OWLnIZtLyCAJagYC4rTGW/9Pqj92N/c+LUaAj27movwbi19tk/whRCIE7Q9vyI6yvRpftAKVTdUjOW40X3h5OXsKCdmFcx0xlLJoSuQngnrJe7Kcjm4OMq9FlC7CMmScQANuNvjfP3PjGXDBaUQmbp296S5L4DrpbrHN1T87ZVEZVCzg1FF0Ft+dKrlLukI+/c9ENo+TvlTDbYFvuKPtQ9+l052rXrgKoWkDAFnvh0wTOmYn8R5f4k/jN/fZiCM1tQx9jQQ4ANhqG4hiL0qIFTGViG9DKB7GYzgubnpofgYRwO+DFjh0Zin2m4b/97EDkXkc+f6xYAPX0KK2I/7fUQuwzuwo/L3AkcjugPNixC8cHf0FyPjWlItmLxWw4Ou9YsQCr5fijMGoD/zpdRy95HRysyXA74MWOnscpO4j2y3HAVisw85hX5+AFBRSHt4ShfLFkIMXTqyKFc46xdzQM6XbAi702a7sy04J0+feReMFKp5q9esYLCqAZYw/k14E/xcLLsFElaornTuJB0svMuJINy8xkIYuL+xPAlWRceH6+HX7THJ0djLUom46zREu7tTkxwmf/FdOZ/sh6Q8qvEAiHpm4PJ4a/doJe0gH1t+aHRgCzOvBvJedEK5OFE5jpm4AGP2a8Dxe3gGJ/pAutug9Gp6he92CsSsWBaEcxGx0FHytmIpuqGkOpldqNYQK8cSoXvd+xLxXADw0kf6UkJNFtdo5MOgaLjiQOQHcn+A6h5NuL2s0qsC2LOM75PcF3yr5STuBSAcGG+meA14K/CI21HcS4LBT6tv0QAh8Dr5l93AhZzG5ZJ4VxAqdZUEl9z7WJ4aN+svMvwHHL21UKTd1mqvChH7/Za5xzXBBKrUcB0TQ+Ulgkfbi/H/YT5EptrGzsEK7tR1B7ln9BBwckYfMiuSqklSznIuoIIOM42MQO+QnduCoFCI0bpkzjCjddHPN/F+2Yu+sd9bKNpVwHhbS3LluK/0zgfwD0xYI5dXuzlQAAAABJRU5ErkJggg=='); } - div.callout-warning.callout-style-default .callout-caption { + div.callout-warning.callout-style-default .callout-title { background-color: #fcefdc } @@ -279,7 +283,7 @@ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAADr0lEQVRYCe1XTWgTQRj9ZjZV8a9SPIkKgj8I1bMHsUWrqYLVg4Ue6v9BwZOxSYsIerFao7UiUryIqJcqgtpimhbBXoSCVxUFe9CTiogUrUp2Pt+3aUI2u5vdNh4dmMzOzHvvezuz8xNFM0mjnbXaNu1MvFWRXkXEyE6aYOYJpdW4IXuA4r0fo8qqSMDBU0v1HJUgVieAXxzCsdE/YJTdFcVIZQNMyhruOMJKXYFoLfIfIvVIMWdsrd+Rpd86ZmyzzjJmLStqRn0v8lzkb4rVIXvnpScOJuAn2ACC65FkPzEdEy4TPWRLJ2h7z4cArXzzaOdKlbOvKKX25Wl00jSnrwVxAg3o4dRxhO13RBSdNvH0xSARv3adTXbBdTf64IWO2vH0LT+cv4GR1DJt+DUItaQogeBX/chhbTBxEiZ6gftlDNXTrvT7co4ub5A6gp9HIcHvzTa46OS5fBeP87Qm0fQkr4FsYgVQ7Qg+ZayaDg9jhg1GkWj8RG6lkeSacrrHgDaxdoBiZPg+NXV/KifMuB6//JmYH4CntVEHy/keA6x4h4CU5oFy8GzrBS18cLJMXcljAKB6INjWsRcuZBWVaS3GDrqB7rdapVIeA+isQ57Eev9eCqzqOa81CY05VLd6SamW2wA2H3SiTbnbSxmzfp7WtKZkqy4mdyAlGx7ennghYf8voqp9cLSgKdqNfa6RdRsAAkPwRuJZNbpByn+RrJi1RXTwdi8RQF6ymDwGMAtZ6TVE+4uoKh+MYkcLsT0Hk8eAienbiGdjJHZTpmNjlbFJNKDVAp2fJlYju6IreQxQ08UJDNYdoLSl6AadO+fFuCQqVMB1NJwPm69T04Wv5WhfcWyfXQB+wXRs1pt+nCknRa0LVzSA/2B+a9+zQJadb7IyyV24YAxKp2Jqs3emZTuNnKxsah+uabKbMk7CbTgJx/zIgQYErIeTKRQ9yD9wxVof5YolPHqaWo7TD6tJlh7jQnK5z2n3+fGdggIOx2kaa2YI9QWarc5Ce1ipNWMKeSG4DysFF52KBmTNMmn5HqCFkwy34rDg05gDwgH3bBi+sgFhN/e8QvRn8kbamCOhgrZ9GJhFDgfcMHzFb6BAtjKpFhzTjwv1KCVuxHvCbsSiEz4CANnj84cwHdFXAbAOJ4LTSAawGWFn5tDhLMYz6nWeU2wJfIhmIJBefcd/A5FWQWGgrWzyORZ3Q6HuV+Jf0Bj+BTX69fm1zWgK7By1YTXchFDORywnfQ7GpzOo6S+qECrsx2ifVQAAAABJRU5ErkJggg=='); } - div.callout-tip.callout-style-default .callout-caption { + div.callout-tip.callout-style-default .callout-title { background-color: #ccf1e3 } @@ -291,7 +295,7 @@ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAACV0lEQVRYCdVWzWoUQRCuqp2ICBLJXgITZL1EfQDBW/bkzUMUD7klD+ATSHBEfAIfQO+iXsWDxJsHL96EHAwhgzlkg8nBg25XWb0zIb0zs9muYYWkoKeru+vn664fBqElyZNuyh167NXJ8Ut8McjbmEraKHkd7uAnAFku+VWdb3reSmRV8PKSLfZ0Gjn3a6Xlcq9YGb6tADjn+lUfTXtVmaZ1KwBIvFI11rRXlWlatwIAAv2asaa9mlB9wwygiDX26qaw1yYPzFXg2N1GgG0FMF8Oj+VIx7E/03lHx8UhvYyNZLN7BwSPgekXXLribw7w5/c8EF+DBK5idvDVYtEEwMeYefjjLAdEyQ3M9nfOkgnPTEkYU+sxMq0BxNR6jExrAI31H1rzvLEfRIdgcv1XEdj6QTQAS2wtstEALLG1yEZ3QhH6oDX7ExBSFEkFINXH98NTrme5IOaaA7kIfiu2L8A3qhH9zRbukdCqdsA98TdElyeMe5BI8Rs2xHRIsoTSSVFfCFCWGPn9XHb4cdobRIWABNf0add9jakDjQJpJ1bTXOJXnnRXHRf+dNL1ZV1MBRCXhMbaHqGI1JkKIL7+i8uffuP6wVQAzO7+qVEbF6NbS0LJureYcWXUUhH66nLR5rYmva+2tjRFtojkM2aD76HEGAD3tPtKM309FJg5j/K682ywcWJ3PASCcycH/22u+Bh7Aa0ehM2Fu4z0SAE81HF9RkB21c5bEn4Dzw+/qNOyXr3DCTQDMBOdhi4nAgiFDGCinIa2owCEChUwD8qzd03PG+qdW/4fDzjUMcE1ZpIAAAAASUVORK5CYII='); } - div.callout-caution.callout-style-default .callout-caption { + div.callout-caution.callout-style-default .callout-title { background-color: #ffe5d0 } @@ -384,10 +388,10 @@ } - + - + @@ -395,15 +399,22 @@

-
-Run your app -
+

Run your app

+

Once you have saved your app.R file, the “Run” code button should turn into a “Run App” button that looks like: A green, right facing triangular arrow next to the words 'Run App'. Click that button to run your app (alternatively, run runApp("directory-name") in your console – for me, that looks like, runApp("single-file-app"))!

@@ -788,9 +761,8 @@

-
-Create a two-file Shiny app -
+

Create a two-file Shiny app

+

In practice, you will likely find yourself opting for the the two-file format – code expands quickly, even when building relatively small apps. This two-file approach (well, three if you use a global.R file, which is encouraged) will help to keep your code a bit more manageable.

@@ -840,77 +812,61 @@

-

-Star - Part 2: Building shiny apps & dashboards -

-


+

Part 2: Building shiny apps & dashboards

+

-angle-right - Setting up your repo & files + Setting up your repo & files

-angle-right - App #1 (single-file app) - source code + App #1 (single-file app) - source code

-angle-right - App #2 (two-file app) - source code + App #2 (two-file app) - source code

-angle-right - App #3 (shinydashboard) - source code + App #3 (shinydashboard) - source code

-angle-right - Deploying (& redeploying) apps + Deploying (& redeploying) apps

-Screwdriver wrench - Building out your 1st app + Building out your 1st app

Here, we’ll create our first reactive objects and establish a general Shiny coding workflow.

-
-Book Open - Learning Objectives - App #1 (single-file app) -
+

Learning Objectives - App #1 (single-file app)

+

By the end of building out this first app, you should be a bit more familiar with:

-angle-right - writing a single-file (app.R) shiny app + writing a single-file (app.R) shiny app

-angle-right - adding and styling text in the UI using tags + adding and styling text in the UI using tags

-angle-right - practicing data wrangling and visualization outside of your shiny app + practicing data wrangling and visualization outside of your shiny app

-angle-right - following a general workflow for building reactive apps, which includes adding inputs and outputs to the UI, then writing the server instructions on how to assemble user input values into outputs + following a general workflow for building reactive apps, which includes adding inputs and outputs to the UI, then writing the server instructions on how to assemble user input values into outputs

-angle-right - running and quitting apps in RStudio + running and quitting apps in RStudio

@@ -920,32 +876,27 @@

-Box Open -shiny: framework for building our reactive app + standard widgets + shiny: framework for building our reactive app + standard widgets

-Box Open -DT: interactive datatable widgets (that can be made reactive using shiny!) + DT: interactive datatable widgets (that can be made reactive using shiny!)

-Box Open -tidyverse: collection of packages for wrangling & visualizing data + tidyverse: collection of packages for wrangling & visualizing data

-Box Open -palmerpenguins: data + palmerpenguins: data

-
-Roadmap for App #1 -
+

Roadmap for App #1

+

We’ll start by building a small single-file app using data from the palmerpenguins package. We’ll build out the the following features:

@@ -970,9 +921,8 @@

-
-Add text in the UI -
+

Add text in the UI

+

We’ll do this in the UI within fluidPage(), a layout function that sets up the basic visual structure of the page and scales components in real time to fill all available browser width. Add a title and subtitle to your app (be sure to separate each with a comma, ,), save, and run:

@@ -1006,9 +956,8 @@

-
-What are inputs and outputs? -
+

What are inputs and outputs?

+

Next, we will begin to add some inputs and outputs to our UI inside fluidPage() (anything that you put into fluidPage() will appear in our app’s user interface…and we want inputs and outputs to show up there!).

@@ -1024,44 +973,34 @@ Examples of Input Functions:

-angle-right -actionButton() + actionButton()

-angle-right -checkboxInput() + checkboxInput()

-angle-right -checkboxGroupInput() + checkboxGroupInput()

-angle-right -dateInput() + dateInput()

-angle-right -dateRangeInput() + dateRangeInput()

-angle-right -radioButtons() + radioButtons()

-angle-right -selectInput() + selectInput()

-angle-right -sliderInput() + sliderInput()

-angle-right -textInput() + textInput()

-angle-right - See full list of shiny input functions here + See full list of shiny input functions here

@@ -1070,35 +1009,28 @@ Examples of Output Functions:

-angle-right -dataTableOutput() (inserts an interactive table) + dataTableOutput() (inserts an interactive table)

-angle-right -imageOutput() (inserts an image) + imageOutput() (inserts an image)

-angle-right -plotOutput() (inserts a plot) + plotOutput() (inserts a plot)

-angle-right -tableOutput() (inserts a table) + tableOutput() (inserts a table)

-angle-right -textOutput() (inserts text) + textOutput() (inserts text)

-angle-right - See full list of shiny output functions here + See full list of shiny output functions here

-
-Adding our reactive plot -
+

Adding our reactive plot

+

Next, we’ll create a scatterplot of penguin bill lengths vs. penguin flipper lengths using the penguins data set from the {palmerpengiuns} package. We will make this scatterplot reactive by adding a sliderInput that allows users to filter the displayed data points by selecting a range of penguin body masses (e.g. only plot bill and flipper lengths for penguins with body masses ranging from 4,500 grams to 6,000 grams).

@@ -1125,20 +1057,16 @@

-
-Input function syntax -
+

Input function syntax

+

-angle-right -All input functions have the same first argument, inputId (NOTE: Id not ID), which is used to connect the front end of your app (the UI) with the back end (the server). For example, if your UI has an inputId = "name", the server function will access that input value using the syntax input$name. The inputId has two constraints: (1) it must be a simple string containing only letters, numbers, and underscores, (2) it must be unique within your app. + All input functions have the same first argument, inputId (NOTE: Id not ID), which is used to connect the front end of your app (the UI) with the back end (the server). For example, if your UI has an inputId = "name", the server function will access that input value using the syntax input$name. The inputId has two constraints: (1) it must be a simple string containing only letters, numbers, and underscores, (2) it must be unique within your app.

-angle-right - Most input functions have a second parameter called label, which is used to create a human-readable label for the control, which will appear in the UI. + Most input functions have a second parameter called label, which is used to create a human-readable label for the control, which will appear in the UI.

-angle-right - The remaining arguments are unique to each input function. Oftentimes, these include a value parameter, which lets you set the default value of your widget, where applicable. + The remaining arguments are unique to each input function. Oftentimes, these include a value parameter, which lets you set the default value of your widget, where applicable.

A couple examples: @@ -1152,9 +1080,8 @@ Check out the interactive Shiny Widgets Gallery to learn how to implement the most common widgets.

-
-Step 1: Add an input to your app -
+

Step 1: Add an input to your app

+

First let’s add a sliderInput() that will allow users to select a range of penguin body masses (g).

@@ -1178,9 +1105,8 @@

-
-Output function syntax -
+

Output function syntax

+

Outputs in the UI create placeholders which are later filled by the server function.

@@ -1197,9 +1123,8 @@ dataTableOutput(outputId = "penguin_data")

-
-Step 2: Add an output to your app -
+

Step 2: Add an output to your app

+

Let’s now add a plotOutput(), which will be updated based on the user inputs via the sliderInput(), then run the app.

@@ -1234,12 +1159,12 @@

-
-Rendering outputs -
+

Rendering outputs

+

Each *Output() function in the UI is coupled with a render*() function in the server, which contains the “instructions” for creating the output based on user inputs (or in other words, the instructions for making your output reactive).

+


Examples of *Output() functions and their corresponding render*() functions: @@ -1273,9 +1198,8 @@

-
-Step 3: Tell the server how to assemble inputs into outputs -
+

Step 3: Tell the server how to assemble inputs into outputs

+

Now that we’ve designed our input/output in the UI, we need to write the server instructions (i.e. write the server function) on how to use the input value(s) (i.e. penguin body mass range via a slider input) to update the output (scatter plot).

@@ -1300,9 +1224,8 @@

-
-Rule 1: Save objects you want to display to output$<id> -
+

Rule 1: Save objects you want to display to output$<id>

+
@@ -1343,9 +1266,8 @@

-
-Rule 2: Build reactive objects with render*() -
+

Rule 2: Build reactive objects with render*()

+

Use the appropriate render*() function to make your output reactive (e.g. if you have a plotOutput in your UI, you will need to use renderPlot() in your server).

@@ -1382,9 +1304,8 @@ }

-
-An Aside: Draft objects (e.g. plots) in a separate script first -
+

An Aside: Draft objects (e.g. plots) in a separate script first

+

I find it easier to experiment and draft my objects (e.g. plots) first in a separate script, then copy the code over to the server after. I want to make a plot that looks like this:

@@ -1420,9 +1341,8 @@ Tip: Save your practice script in a separate directory (i.e. not inside your app directory) – I typically save mine to something like ~/scratch/practice_script.R.

-
-Copy your plot code into the server -
+

Copy your plot code into the server

+

Copy your code over to your app, placing it inside the {} (and make sure to add any additional required packages to the top of your app.R script). Run your app. What do you notice?

@@ -1465,9 +1385,8 @@ })

-
-A non-reactive plot now lives in our plotOutput() placeholder -
+

A non-reactive plot now lives in our plotOutput() placeholder

+

We have a plot (yay!), but it isn’t reactive. We have not yet told the server how to update the plot based on user inputs via the sliderInput() in the UI. Let’s do that next…

@@ -1475,9 +1394,8 @@ A user changes the sliderInput meant associated with the penguin data scatterplot, but the plot does not update (i.e. it is not yet reactive).

-
-Practice filtering data in our separate script -
+

Practice filtering data in our separate script

+

First, create a new data frame where we filter the body_mass_g column for observations within a specific range of values (in this example, values ranging from 3000 - 4000):

@@ -1522,9 +1440,8 @@

-
-Which part of our code needs to be updated when a user changes the slider range input? -
+

Which part of our code needs to be updated when a user changes the slider range input?

+
body_mass_df <- penguins |> 
@@ -1558,9 +1475,8 @@
 

-
-Rule 3: Access input values with input$<id> -
+

Rule 3: Access input values with input$<id>

+

Recall that in our UI, we gave our sliderInput() an inputId = "body_mass_input".

@@ -1592,9 +1508,8 @@ }

-
-Rule 3: Access input values with input$<id> -
+

Rule 3: Access input values with input$<id>

+

In our server, we can access the values of that slider input using the syntax, input$body_mass_input. If you want your output to change according to the input values, substitute hard-coded values (e.g. 3725:5191) with the input values from the UI (e.g. input$body_mass_input[1]:input$body_mass_input[2]).

@@ -1635,9 +1550,8 @@ }

-
-Okay, RUN THAT APP! -
+

Okay, RUN THAT APP!

+

You should now have a reactive Shiny app! Note that reactivity automatically occurs whenever you use an input value to render an output object.

@@ -1645,9 +1559,8 @@ A gif of our current Shiny app, demonstrating reactivity. At the top left of our app is the title, 'My App Title' in large header font. Beneath it is a subtitle, 'Exploring Antarctic Penguins and Temperatures'. Below the subtitle is the slider input with the label, 'Select a range of body masses (g)'. A gray horizontal slider bar ranges from the values 2,700 to 6,300. The interactive slider value selectors are two round white circles, which, when moved apart from one another highlight the selected value range in blue. The user is adjusting the slider value selectors and the scatterplot of penguin bill length (mm) vs. flipper length (mm) is automatically updating.

-
-Recap: We created our first reactive Shiny app following these steps: -
+

Recap: We created our first reactive Shiny app following these steps:

+

1. We created an app.R file in it’s own directory and began our app with the template, though you can also create a two-file Shiny app by using separate ui.R and server.R files. @@ -1668,30 +1581,26 @@ 4. We wrote the server instructions for how to assemble inputs into outputs, following these rules:

-angle-right - save objects that you want to display to output$<id> + save objects that you want to display to output$<id>

-angle-right - build reactive objects using a render*() function (and similarly, build reactive data frames using reactive() + build reactive objects using a render*() function (and similarly, build reactive data frames using reactive()

-angle-right - access input values with input$<id> + access input values with input$<id>

-

+

And we saw that reactivity automatically occurs whenever we use an input value to render an output object.

-
-Question - Exercise 1: Add another reactive widget -
+

Question + Exercise 1: Add another reactive widget

+

The {DT} package provides an R interface to the JavaScript library DataTables (you may have already used the DT package in your knitted RMarkdown/Quarto HTML documents). DT datatables allow for filtering, pagination, sorting, and lots of other neat features for tables on your HTML pages.

@@ -1718,24 +1627,20 @@

-
-Lightbulb - Exercise 1: Tips -
+

Lightbulb + Exercise 1: Tips

+

Tips:

-angle-right - Use ?checkboxGroupInput to learn more about which arguments you need (remember, all inputs require an inputId and oftentimes a label, but there are others required to make this work as well) + Use ?checkboxGroupInput to learn more about which arguments you need (remember, all inputs require an inputId and oftentimes a label, but there are others required to make this work as well)

-angle-right - Both shiny and DT packages have functions named dataTableOutput() and renderDataTable()DT::renderDataTable() allows you to create both server-side and client-side DataTables and supports additional DataTables features while shiny::renderDataTable() only provides server-side DataTables. Be sure to use the one from the DT package using the syntax packageName::functionName(). + Both shiny and DT packages have functions named dataTableOutput() and renderDataTable()DT::renderDataTable() allows you to create both server-side and client-side DataTables and supports additional DataTables features while shiny::renderDataTable() only provides server-side DataTables. Be sure to use the one from the DT package using the syntax packageName::functionName().

-angle-right - There are lots of ways to customize DT tables, but to create a basic one, all you need is to DT::dataTable(your_dataframe) + There are lots of ways to customize DT tables, but to create a basic one, all you need is to DT::dataTable(your_dataframe)

@@ -1778,10 +1683,8 @@

-
-Check - Exercise 1: A solution -
+

Exercise 1: A solution

+

Press the right arrow key to advance through the newly added lines of code.

@@ -1866,9 +1769,8 @@ shinyApp(ui = ui, server = server)

-
-Common mistakes to look out for -
+

Common mistakes to look out for

+

It’s inevitable that you’ll make mistakes here and there as you build out your app…and they can be frustrating to catch. A few that I find myself making over and over again are:

@@ -1876,24 +1778,19 @@

-angle-right - misspelling inputId as inputID (or outputId as outputID) + misspelling inputId as inputID (or outputId as outputID)

-angle-right - misspelling your inputId (or outputId) name in the server (e.g. UI: inputId = "myInputID", server: input$my_Input_ID) + misspelling your inputId (or outputId) name in the server (e.g. UI: inputId = "myInputID", server: input$my_Input_ID)

-angle-right - repeating inputIds (each must be unique) + repeating inputIds (each must be unique)

-angle-right - forgetting to separate UI elements with a comma, , + forgetting to separate UI elements with a comma, ,

-angle-right - forgetting the set of parentheses when calling the name of a reactive data frame in a plot (e.g. ggplot(my_reactive_df(), aes(...))) + forgetting the set of parentheses when calling the name of a reactive data frame in a plot (e.g. ggplot(my_reactive_df(), aes(...)))

@@ -1906,8 +1803,7 @@

-Mug Hot - Break + Break

Give your eyes a break from the computer screen! @@ -1915,7 +1811,7 @@

-
+
@@ -1926,55 +1822,46 @@

-Screwdriver wrench - Building out your 2nd app + Building out your 2nd app

Up until now, we’ve been adding our text and widgets in a pretty unstructured way – elements are stacked on top of one another within a single column. Next, we’ll learn how to customize the layout of our app to make it a bit more visually pleasing.

-
-Book Open - Learning Objectives - App #2v1 (two-file app) -
+

Learning Objectives - App #2v1 (two-file app)

+

By the end of building out this second app, you should:

-angle-right - be comfortable creating a shiny app using the two-file (ui.R & server.R) format along with a global.R file +be comfortable creating a shiny app using the two-file (ui.R&server.R) format along with aglobal.R` file

-angle-right - understand how to use layout functions to customize the visual structure of your app’s UI + understand how to use layout functions to customize the visual structure of your app’s UI

-angle-right - have more practice building reactive outputs – and placing them within the layout structure of your app + have more practice building reactive outputs – and placing them within the layout structure of your app

-angle-right - be able to create multiple inputs that control a given output + be able to create multiple inputs that control a given output

-angle-right - know how to import larger bodies of text using includeMarkdown() (rather than writing & styling text within your UI) + know how to import larger bodies of text using includeMarkdown() (rather than writing & styling text within your UI)

-angle-right - successfully publish an app using shinyapps.io + successfully publish an app using shinyapps.io

@@ -1984,20 +1871,17 @@

-Box Open -shinyWidgets: extend shiny widgets with some different, fun options + shinyWidgets: extend shiny widgets with some different, fun options

-Box Open -lterdatasampler: data +]{.teal-text} lterdatasampler: data

-
-Roadmap for App #2v1 -
+

Roadmap for App #2v1

+

We’ll be building out our two-file app using data from the lterdatasampler and palmerpenguins packages. We’ll focus on creating a functional app that has a more visually pleasing UI layout (and we’ll refine it’s appearance even further in v2). By the end of v1, we’ll have created:

@@ -2026,9 +1910,8 @@

-
-Two files? Try two panes! -
+

Two files? Try two panes!

+

We’ll be building out a two-file shiny app this time around. You can open multiple scripts up side-by-side by navigating to Tools > Global Options > Pane Layout > Add Column

@@ -2039,9 +1922,8 @@ This setup is certainly not required/necessary – organize your IDE however you work best!

-
-Practice data wrangling, filtering & viz first! -
+

Practice data wrangling, filtering & viz first!

+

Here’s what I’ve done in my ~scratch/practice_script_app2_lter.R file:

@@ -2155,36 +2037,29 @@

-
-A global.R file can help you keep code organized -
+

A global.R file can help you keep code organized

+

While not a requirement of a shiny app, a global.R file will help reduce redundant code, increase your app’s speed, and help keep code more clearly organized. It works by running once when your app is first launched, making any logic, objects, etc. contained in it available to both the ui.R and server.R files (or, in the case of a single-file shiny app, the app.R file). It’s a great place for things like:

-angle-right - loading packages + loading packages

-angle-right - importing data + importing data

-angle-right - sourcing scripts (particularly functions – we’ll talk more about functions later) + sourcing scripts (particularly functions – we’ll talk more about functions later)

-angle-right - data wrangling (though you’ll want to do any major data cleaning before bringing your data into your app) + data wrangling (though you’ll want to do any major data cleaning before bringing your data into your app)

-angle-right - building custom ggplot themes + building custom ggplot themes

-angle-right - etc. + etc.


@@ -2194,22 +2069,18 @@

-
-We created a perfectly functional first app, but it’s not so visually pleasing -
+

We created a perfectly functional first app, but it’s not so visually pleasing

+


-angle-right - nothing really grabs your eye + nothing really grabs your eye

-angle-right - inputs & outputs are stacked vertically on top of one another (which requires a lot of vertical scrolling) + inputs & outputs are stacked vertically on top of one another (which requires a lot of vertical scrolling)

-angle-right - widget label text is difficult to distinguish from other text + widget label text is difficult to distinguish from other text

@@ -2224,9 +2095,8 @@ Before we jump into adding reactive outputs to our next app, we’ll first plan out the visual structure of our UI – first on paper, then with layout functions.

-
-Layout functions provide the high-level visual structure of your app -
+

Layout functions provide the high-level visual structure of your app

+

Layouts are created using a hierarchy of function calls (typically) inside fluidPage(). Layouts often require a series functions – container functions establish the larger area within which other layout elements are placed. See a few minimal examples of layout functions on the following slides (though more exist!).

@@ -2254,9 +2124,8 @@ )

-
-Example UI layouts -
+

Example UI layouts

+

Note: You can combine multiple layout function groups to really customize your UI – for example, you can create a navbar, include tabs, and also establish sidebar and main panel areas for inputs and outputs.

@@ -2391,17 +2260,14 @@

-
-Overview of layout functions used in App #2 -
-


+

Overview of layout functions used in App #2

+

-
-Build a navbar with two pages -
+

Build a navbar with two pages

+

First, let’s build a UI that has a navigation bar with two tabs – one for background information and one to contain our data visualizations. To do this, we’ll use navbarPage() instead of fluidPage() to create our webpage.

@@ -2430,9 +2296,8 @@ ) # END navbarPage

-
-Add two tabs to the “Explore the Data” page -
+

Add two tabs to the “Explore the Data” page

+

Give your tabs the following titles: Trout and Penguins.

@@ -2475,9 +2340,8 @@ ) # END navbarPage

-
-Question - Exercise 2: Add sidebar and main panels to the Penguins tab -
+

Exercise 2: Add sidebar and main panels to the Penguins tab

+


@@ -2561,10 +2423,7 @@

-
-Check - Exercise 2: A solution -
+

Exercise 2: A solution

ui <- navbarPage(
   
@@ -2638,43 +2497,36 @@
 ) # END navbarPage

-
-Some important things to remember when building your UI’s layout: -
+

Some important things to remember when building your UI’s layout:

+

-angle-right - try creating a rough sketch of your intended layout before hitting the keyboard (I like to think of this as UI layout “pseudocode”) + try creating a rough sketch of your intended layout before hitting the keyboard (I like to think of this as UI layout “pseudocode”)

-angle-right - keeping clean code is important – we haven’t even any added any content yet and our UI is already >70 lines of code! + keeping clean code is important – we haven’t even any added any content yet and our UI is already >70 lines of code!

-angle-right - use rainbow parentheses, code comments and plenty of space between lines to keep things looking manageable and navigable + use rainbow parentheses, code comments and plenty of space between lines to keep things looking manageable and navigable

-angle-right - use the keyboard shortcut, command + I (Mac) or control + I (Windows), to align messy code – this helps put those off-alignment parentheses back where they belong + use the keyboard shortcut, command + I (Mac) or control + I (Windows), to align messy code – this helps put those off-alignment parentheses back where they belong

-angle-right - things can get out of hand quickly – add one layout section at a time, run your app to check that things look as you intend, then continue + things can get out of hand quickly – add one layout section at a time, run your app to check that things look as you intend, then continue

-

-Add data viz: First up, trout -

+

Add data viz: First up, trout

+

We’ll be using the and_vertebrates dataset from the {lterdatasampler} package to create our first reactive plot. These data contain coastal cutthroat trout (Oncorhynchus clarkii clarkii) lengths and weights collected in Mack Creek, Andrews Forest LTER. Original data can be found on the EDI Data Portal. Refer back to this slide to revisit our practice data wrangling & visualization script.

@@ -2687,9 +2539,8 @@ Image Source: Joseph R. Tomelleri, as found on the Western Native Trout Initiative

-
-Add packages & wrangle data in global.R -
+

Add packages & wrangle data in global.R

+

In addition to the {lterdatasampler} package, we’ll also be using the tidyverse for data wrangling/visualization, and the {shinyWidgets} package to add a pickerInput and a checkboxGroupInput to our app.

@@ -2704,9 +2555,8 @@ library(shinyWidgets)

-
-Add packages & wrangle data in global.R -
+

Add packages & wrangle data in global.R

+

We can also do the bulk of our data wrangling here, rather than in the server (to keep our server code a bit more manageable). If we were reading in a data file (e.g. .csv), we would do that here too. Our new data object clean_trout, will now be available for us to call directly in our server.

@@ -2740,9 +2590,8 @@ drop_na()

-
-Add a pickerInput for selecting channel_type to your UI -
+

Add a pickerInput for selecting channel_type to your UI<

+

The channel_type variable (originally called unittype – we updated the name when wrangling data (see line 9 on previous slide)) represents the type of water body (cascade, riffle, isolated pool, pool, rapid, step (small falls), or side channel) data were collected in. We’ll start by building a shinyWidgets::pickerInput() to allow users to filter data based on channel_type.

@@ -2763,13 +2612,12 @@


-A shinyWidgets::pickerInput() is functionally equivalent to shiny::selectInput(), though it allows for greater customization and looks (in my opinion) a bit nicer. +A shinyWidgets::pickerInput() is functionally equivalent to shiny::selectInput(), though it allows for greater customization and looks (in my opinion) a bit nicer.

-
-Add a plot output to your UI -
+

Add a plot output to your UI

+

Next, we need to create a placeholder in our UI for our trout scatterplot to live. Because we’ll be creating a reactive plot, we can use the plotOutput() function to do so.

@@ -2788,9 +2636,8 @@

-
-Tell the server how to assemble pickerInput values into your plotOutput -
+

Tell the server how to assemble pickerInput values into your plotOutput

+

Remember the three rules for building reactive outputs: (1) save objects you want to display to output$<id>, (2) build reactive objects using a render*() function, and (3) access input values with input$<id>. When complete, your server should contain the following code:

@@ -2832,23 +2679,19 @@ A couple notes/reminders:

-angle-right - If needed, reference your practice script to remind yourself how you planned to filter and plot your data + If needed, reference your practice script to remind yourself how you planned to filter and plot your data

-angle-right - Reactive data frames need a set of parentheses, (), following the name of the df (see ggplot(trout_filtered_df() ...)) + Reactive data frames need a set of parentheses, (), following the name of the df (see ggplot(trout_filtered_df() ...))

-angle-right - For a cohesive appearance, save your ggplot theme parameters to a named object in global.R (here, myCustomTheme), then apply to all plots in your app. See the following slide for code. + For a cohesive appearance, save your ggplot theme parameters to a named object in global.R (here, myCustomTheme), then apply to all plots in your app. See the following slide for code.

-
-Save a custom ggplot theme to global.R -
+

Save a custom ggplot theme to global.R

+

Rather than re-typing your ggplot theme parameters out for every plot in your app, do so once in global.R, and save to an object name. You can then easily add your custom theme as a layer to each of your ggplots. Bonus: If you decide to modify your plot theme, you only have to do so in one place!

@@ -2889,16 +2732,14 @@ panel.border = element_rect(colour = "black", fill = NA, linewidth = 0.7))

-
-Run your app and try out your pickerInput widget! -
+

Run your app and try out your pickerInput widget!

+
A user navigates to the 'Explore the Data' tab of our app, 'LTER Animal Data Explorer.' There is a scatterplot with Trout Length (mm) on the x-axis, and Trout Weight (g) on the y-axis. Points are colored and shaped by channel type. There is a pickerWidget to the left of the plot with the channel_types 'cascade' and 'pool' already selected. The user clicks other channel types on/off to see how the data points on the plot change.

-
-Add a second input that will update the same output -
+

Add a second input that will update the same output

+

You can have more than one input control the same output. Let’s now add a checkboxGroupButtons widget to our UI for selecting forest section (either clear cut forest or old growth forest). Check out the function documentation for more information on how to customize the appearance of your buttons.

@@ -2926,9 +2767,8 @@ ) # END trout plot sidebarPanel

-
-Update your reactive df to also filter based on the new checkboxGroupInput -
+

Update your reactive df to also filter based on the new checkboxGroupInput

+

Return to your server to modify trout_filtered_df – our data frame needs to be updated based on both the pickerInput, which selects for channel_type, and the checkboxGrouptInput, which selects for forest section:

@@ -2959,17 +2799,15 @@ })

-
-Run your app and try out your pickerInput & checkboxGrouptInput widgets! -
+

Run your app and try out your pickerInput & checkboxGrouptInput widgets!

+
Our updated app, which includes the same trout scatterplot, but this time, two inputs: one selectInput that allows the user to filter for channel_type, and one checkboxGroupInput, which includes two buttons to select/deselect data collected from the clear cut forest section and the old growth forest section.

-Mug Hot - Break + Break

Up next: your turn to add a reactive penguin plot to our “Penguin” tab! @@ -2977,7 +2815,7 @@

-
+
@@ -3003,7 +2841,7 @@

Question - Exercise 3: Add a reactive plot to the ‘Penguins’ tab + Exercise 3: Add a reactive plot to the ‘Penguins’ tab

Working alone or in groups, add a reactive histogram of penguin flipper lengths (using the penguins data set from the {palmerpenguins} package) to the Penguins tab. Your plot should have the following features and look like the example below, when complete: @@ -3011,19 +2849,19 @@

-angle-right +Angle Right data colored by penguin species

-angle-right +Angle Right a shinyWidgets::pickerInput that allows users to filter data based on island, and that includes buttons to Select All / Deselect All island options at once

-angle-right - a shiny::sliderInput that allows users to change the number of histogram bins and that by default, displays a histogram with 25 bins +Angle Right + a shiny::sliderInput that allows users to change the number of histogram bins and that by default, displays a histogram with 25 bins

-angle-right +Angle Right the two widgets should be placed in the sidebarPanel and the reactive histogram should be placed in the mainPanel of the Penguins tab

@@ -3042,21 +2880,21 @@

Lightbulb - Exercise 3: Tips + Exercise 3: Tips

Tips:

-angle-right +Angle Right Remember to load the palmerpenguins package at the top of global.R so that your app can find the data

-angle-right +Angle Right Add your widgets to the sidebarPanel and your plot output to the mainPanel of the Penguins tab – look for that placeholder text we added earlier to help place your new code in the correct spot within your UI!

-angle-right +Angle Right Try changing the histogram bin number in your practice code script first, before attempting to make it reactive

@@ -3070,8 +2908,8 @@

-Check - Exercise 3: A solution +Check + Exercise 3: A solution
    @@ -3271,8 +3109,7 @@

-Mug Hot - Break + Break

Next, we’ll finish up v1 of our app by adding some intro text to the landing page @@ -3280,7 +3117,7 @@

-
+
@@ -3308,15 +3145,15 @@ Some important pieces for information to consider adding:

-angle-right +Angle Right motivation for building the app

-angle-right +Angle Right brief instructions for exploring the data

-angle-right +Angle Right who maintains the app, where the code lives, how to submit issues/suggestions

@@ -3815,7 +3652,7 @@

Upload - Deploying apps with shinyapps.io + Deploying apps with shinyapps.io

Sharing your Shiny app with others isn’t so easy when it just lives on your computer (and your R session has to act as the server that powers it). We’ll now learn how to host your app using shinyapps.io, a free service for sharing your Shiny apps online. @@ -3868,11 +3705,11 @@ Posit also offers the following:

-angle-right +Angle Right Shiny server is an open source server which you can deploy for free on your own hardware. It requires more setup and configuration, but can be used without a fee. The Bren and NCEAS servers are configured with Shiny Server for hosting for some in-house apps.

-angle-right +Angle Right Posit connect is a paid product that provides an advanced suite of services for hosting Shiny apps, Quarto and R Markdown reports, APIs, and more.

@@ -3889,11 +3726,11 @@

-angle-right +Angle Right Preferred: Stick with the free tier of shinyapps.io, if you can! This is by far the most straightforward option that requires no server maintenance for you or your client. If your app exceeds the limitations set by the free tier (e.g. requires more active hours, needs more RAM or instances to support high traffic usage, etc.), you/your client have the option to upgrade to a paid tier – there are 5 paid plan types. Check out the shinyapps.io user guide for more information. Consider setting aside your allocated capstone/GP funds to help support a paid shinyapps.io plan.

-angle-right +Angle Right If you have a server-savvy client, they may want to deploy/host your app using their own infrastructure. If your client plans to pursue this option, but does not yet have a their own server configured to do so, we recommend directing them to the online instructions for getting started with Shiny Server. PLEASE NOTE that Bren staff (including the compute team) are unable to provide technical support for clients in server configuration and app deployment/maintenance.

@@ -3906,7 +3743,7 @@

Users - Improving user experience + Improving user experience

Our two-file-app is looking pretty good! It’s functional and deployed via shinyapps.io. Next, we’ll focus on making some minor tweaks that can help to improve usability @@ -3915,32 +3752,32 @@

Book Open - Learning Objectives - App #2v2 (two-file app) + Learning Objectives - App #2v2 (two-file app)

By the end of this section, you should:

-angle-right +Angle Right understand how to provide users with helpful error messages using validate()

-angle-right +Angle Right know how to add customizable loading animations to alert users when reactive objects are re-rendering

-angle-right +Angle Right know how to add alternate (alt) text to rendered plots

-angle-right +Angle Right understand how to republish an app using shinyapps.io

@@ -4036,15 +3873,15 @@

Question - & Lightbulb - Exercise 4: Add a validation test for your penguin histogram + & Lightbulb + Exercise 4: Add a validation test for your penguin histogram


To Do:

-angle-right +Angle Right Construct a validation test that displays a clear but succinct message when a user deselects all islands using the pickerWidget


@@ -4052,7 +3889,7 @@ Tips:

-angle-right +Angle Right Despite having two inputs, we only need one validation test for our Penguins plot. Why is this?



@@ -4063,8 +3900,8 @@

-Check - Exercise 4: A solution +Check + Exercise 4: A solution
server <- function(input, output) {
@@ -4221,7 +4058,7 @@
 

Upload - Redeploying apps with shinyapps.io + Redeploying apps with shinyapps.io

Now that we’ve added some updates to our app, it’s time to redeploy our newest version. @@ -4264,7 +4101,7 @@

-
+
@@ -4275,8 +4112,8 @@

-Gauge med - Building dashboards with shinydashboard +Gauge + Building dashboards with shinydashboard

Shiny alone is powerful and flexible, however it can take a lot of work to create a sleek/modern UI. shinydashboard provides a “template” for quickly building visually appealing dashboard apps. @@ -4285,32 +4122,32 @@

Book Open - Learning Objectives - App #3 (shinydashboard) + Learning Objectives - App #3 (shinydashboard)

After this section, you should:

-angle-right +Angle Right understand the general workflow for pre-processing, saving & reading data into an app

-angle-right +Angle Right be comfortable building out a dashboard UI using shinydashboard layout functions

-angle-right +Angle Right understand how to add static images to your app

-angle-right +Angle Right feel comfortable creating a basic reactive leaflet map

@@ -4412,19 +4249,19 @@

Example shiny dashboards built by some familiar folks Face Smile - +

School Bren Student Data Explorer (source code), by MEDS 2022 alum, Halina Do-Linh, during her Bren Summer Fellowship (and continued by future MEDS students!) – explore Bren school student demographics and career outcomes

-Person hiking -Sam’s Strava Stats (source code), by yours truly, Sam Csik – a new and ongoing side project exploring my Strava hiking/biking/walking data +Person Hiking +Sam’s Strava Stats (source code), by yours truly, Sam Csik – a new and ongoing side project exploring my Strava hiking/biking/walking data

Fish -Channel Islands National Park’s Kelp Forest Monitoring Program (source code), by MEDS 2022 alum, Cullen Molitor – explore subtidal monitoring data collected from our closest National Park +Channel Islands National Park’s Kelp Forest Monitoring Program (source code), by MEDS 2022 alum, Cullen Molitor – explore subtidal monitoring data collected from our closest National Park

Campground @@ -4432,7 +4269,7 @@

Fish Fins -Visualizing human impacts on at-risk marine biodiversity (source code, developed by MESM 2022 alum, Ian Brunjes & Dr. Casey O’Hara) – explore how human activities and climate change impact marine biodiversity worldwide +Visualizing human impacts on at-risk marine biodiversity (source code, developed by MESM 2022 alum, Ian Brunjes & Dr. Casey O’Hara) – explore how human activities and climate change impact marine biodiversity worldwide

@@ -4620,8 +4457,8 @@
-
- +
+
@@ -4671,8 +4508,8 @@
-
- +
+
@@ -5214,17 +5051,17 @@

Question - Exercise 5: Add two more sliderInputs to filter for AvgDepth & AvgTemp + Exercise 5: Add two more sliderInputs to filter for AvgDepth & AvgTemp

To Do:

-angle-right +Angle Right Add two more sliderInputs, one for AvgDepth and one for AvgTemp beneath our first Elevation sliderInput in the UI

-angle-right +Angle Right Update our reactive data frame so that all three widgets filter the leaflet map





@@ -5235,8 +5072,8 @@

-Check - Exercise 5: A solution +Check + Exercise 5: A solution
    @@ -5416,8 +5253,7 @@

-Mug Hot - Break + Break

Up next: Adding background information and an image to our Welcome tab @@ -5425,7 +5261,7 @@

-
+
@@ -5436,18 +5272,18 @@

Question - & Lightbulb - Exercise 6: Add titles & text to Welcome page boxes + & Lightbulb + Exercise 6: Add titles & text to Welcome page boxes

To Do:

-angle-right +Angle Right Add titles to each box

-angle-right +Angle Right Create a /text folder within your app’s directory and add three markdown (.md) files. Write/format text for the background info (left), data citation (top-right), and disclaimer (bottom-right) boxes. Example text below:

@@ -5481,13 +5317,13 @@ Tips:

-angle-right +Angle Right Titles can include icons! For example: title = tagList(icon("icon-name"), strong("title text here"))

-Check - Exercise 6: A solution +Check + Exercise 6: A solution

Press the right arrow key to advance through the newly added lines of code. @@ -6142,40 +5978,34 @@

-

-Star - Part 3: Beautifying your user interface (UI) -

-


+

Part 3: Beautifying your user interface (UI)

+

-angle-right - Custom themes with bslib + Custom themes with bslib

-angle-right - Custom themes with fresh + Custom themes with fresh

-angle-right - Styling with CSS & Sass + Styling with CSS & Sass

Book Open - Learning Objectives - Themeing/Styling Apps + Learning Objectives - Themeing/Styling Apps

By the end of this section, you should be equipped with:

-angle-right +Angle Right a number of different approaches for themeing and styling your shiny apps and dashboards

-angle-right +Angle Right a basic understanding of how to apply CSS & Sass styling to your app

@@ -6221,20 +6051,20 @@

-Check - easy to use +Check + easy to use

-Check - includes a real-time themeing widget to try out themes before applying them to your own app +Check + includes a real-time themeing widget to try out themes before applying them to your own app

-Check - plays well with the thematic package for matching plot styling to app +Check + plays well with the thematic package for matching plot styling to app

-Check -bslib does more than just themeing! Check out the December 2022 announcement of new UI components made possible with the latest package release +Check +bslib does more than just themeing! Check out the December 2022 announcement of new UI components made possible with the latest package release

@@ -6245,12 +6075,12 @@

-X Mark - does not work with shinydashboard (bslib is only intended for use with shiny apps) +Xmark + does not work with shinydashboard (bslib is only intended for use with shiny apps)

-X Mark - styling is constrained by the arguments available to bs_theme() +Xmark + styling is constrained by the arguments available to bs_theme()

@@ -6383,12 +6213,12 @@

-Check - easy to use +Check + easy to use

-Check - supports theme creation for both shiny apps and dashboards (and also flexdashboards and {b4dash} applications) +Check + supports theme creation for both shiny apps and dashboards (and also flexdashboards and {b4dash} applications)

@@ -6399,8 +6229,8 @@

-X Mark - styling is constrained by the variables available to create_theme() +Xmark + styling is constrained by the variables available to create_theme()

@@ -6442,7 +6272,7 @@

Of course, these color combos are not recommended, but chosen purely for demonstration purposes Face Smile Wink -. +.

# in a separate script: ~/R/create_fresh_theme_shiny.R
@@ -6581,8 +6411,8 @@
 

-Paint Brush - Styling apps with CSS & Sass +Paintbrush + Styling apps with CSS & Sass

bslib & fresh are great ways to get started on your app customization journeys, but knowing some CSS & Sass can help you really fine-tune the appearance of your apps @@ -6604,16 +6434,16 @@

-Check - applies to any web page (not just shiny apps) +Check + applies to any web page (not just shiny apps)

-Check - allows you to customize pretty much any aspect of your app +Check + allows you to customize pretty much any aspect of your app

-Check - can be combined with themes generated using bslib or fresh to fine-tune your app’s styling +Check + can be combined with themes generated using bslib or fresh to fine-tune your app’s styling

@@ -6624,8 +6454,8 @@

-X Mark - a steeper learning curve/generally more complex than packages like bslib and fresh +Xmark + a steeper learning curve/generally more complex than packages like bslib and fresh

@@ -6697,15 +6527,15 @@

-angle-right +Angle Right Selectors select the HTML element(s) you want to style (e.g. level one headings, <h1>)

-angle-right +Angle Right Declarations sit inside curly brackets, {}, and are made up of property and value pairs. Each pair specifies the property of the HTML element(s) you’re selecting (e.g. the color property of the element <h1>), and a value you’d like to assign to that property (e.g. green)

-angle-right +Angle Right A property and it’s corresponding value are separated by a colon, :. Declarations end with a semicolon, ;

@@ -7392,23 +7222,20 @@

-Star - Part 4: Improving your app’s user experience (UX) + Part 4: Improving your app’s user experience (UX)


-angle-right - Important UX considerations + Important UX considerations

-angle-right - Web accessibility + Web accessibility

Users - UX/UI matters + UX/UI matters

When designing your app, it’s critically important that you consider your user’s needs and how they will interact with your app – it doesn’t matter how innovative you back-end computations are if people don’t understand how to use your app! @@ -7417,20 +7244,20 @@

Book Open - Learning Objectives - UX/UI Design + Learning Objectives - UX/UI Design

After this section, you should:

-angle-right +Angle Right have a checklist of considerations to reference each time you build an app

-angle-right +Angle Right have a few additional resources to dive deeper into UX/UI design

@@ -7443,25 +7270,25 @@

-angle-right +Angle Right Simplicity is gold: using the application shouldn’t require reading a manual, and interfaces should be as self-explanatory as possible.

-angle-right +Angle Right Adapt a defensive programming mindset: your app should always fail gracefully and informatively (e.g. provide users with a helpful error message)

-angle-right +Angle Right Build a self-explanatory app: consider the following three suggestions for doing so – (a) remember the rule of least surprise (in UI design, always do the least surprising thing e.g. we often assume that underlined text is clickable, so if you include underlined text in your UI, there’s a good chance a user will try clicking on it). (b) think about progression (design a clear pattern of moving forward for your user), and (c) related to b, make sure that if an input is necessary, it is made clear to your user. Check out the {shinyjs} package for implementing nifty ways to improve the user experience of your shiny apps.

-angle-right +Angle Right Avoid feature-creep: feature-creep is the process of adding features to an app that complicates its usage and maintenance – this includes adding too much reactivity and too much interactivity (e.g. plotly) – interactivity adds visual noise, so it’s best to not make elements interactive if there is no value is gained.

@@ -7470,22 +7297,22 @@ Additional UX/UI resources

-angle-right +Angle Right Outstanding User Interfaces with Shiny, by David Granjon

-angle-right +Angle Right Shiny Developer Series, Episode 20: Outstanding User Interfaces with David Granjon

-angle-right +Angle Right 15 User Experience Principles and Theories, by Pathum Goonawardene

Universal Access - Building accessible apps + Building accessible apps

Consider web accessibilty guidelines to ensure that your app is usable by all @@ -7494,33 +7321,33 @@

Book Open - Learning Objectives - Accessibility + Learning Objectives - Accessibility

By the end of this section, you should:

-angle-right +Angle Right have a general understanding of what web accessibility means and who it can benefit (spoiler alert: it benefits us all!)

-angle-right +Angle Right know how to make a few small tweaks/updates to your application to make it more accessible for all users

-angle-right +Angle Right have a few great resources to turn to to learn more

Universal Access - What is web accessibility and why is it important? + What is web accessibility and why is it important?

From the World Wide Web Consortium (W3C)’s Introduction to Web Accessibility: @@ -7530,11 +7357,11 @@ Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them. More specifically, people can:

-angle-right +Angle Right perceive, understand, navigate, and interact with the Web

-angle-right +Angle Right contribute to the Web

@@ -7544,23 +7371,23 @@ Web accessibility also benefits people without disabilities, for example:

-angle-right +Angle Right people using mobile phones, smart watches, smart TVs, and other devices with small screens, different input modes, etc.

-angle-right +Angle Right older people with changing abilities due to ageing

-angle-right +Angle Right people with “temporary disabilities” such as a broken arm or lost glasses

-angle-right +Angle Right people with “situational limitations” such as in bright sunlight or in an environment where they cannot listen to audio

-angle-right +Angle Right people using a slow Internet connection, or who have limited or expensive bandwidth

@@ -7580,19 +7407,19 @@

-angle-right +Angle Right Use HTML elements appropriately (e.g. consider hierarchy)

-angle-right +Angle Right Include alt text for graphical elements

-angle-right +Angle Right Consider navigation from a mobility perspective

-angle-right +Angle Right Use colorblind-friendly palettes

@@ -7765,17 +7592,14 @@

-Star - Part 5: Debugging & testing + Part 5: Debugging & testing


-angle-right - Debugging approaches + Debugging approaches

-angle-right - Testing apps + Testing apps

@@ -7790,20 +7614,20 @@

Book Open - Learning Objectives - Debugging + Learning Objectives - Debugging

After this section, you should:

-angle-right +Angle Right understand some of the challenges associated with debugging shiny applications

-angle-right +Angle Right be introduced to a few approaches and tools for debugging shiny applications, including using diagnostic messages and the reactlog package.

@@ -7826,11 +7650,11 @@ Shiny apps can be particularly challenging to debug for a few reasons:

-angle-right +Angle Right Shiny is reactive, so code execution isn’t as linear as other code that you’re likely more familiar with (e.g. analytical pipelines written in “normal” R scripts, where each line of code is executed in succession)

-angle-right +Angle Right Shiny code runs behind a web server and the Shiny framework itself, which can obscure what’s going on

@@ -7838,19 +7662,19 @@ While there are a number of different tools/strategies for debugging Shiny apps, I find myself turning to one (or more) of these approaches most often:

-angle-right +Angle Right isolating pesky errors (typos, missing commas, unmatched parentheses) in the UI by commenting out code from the outside in

-angle-right +Angle Right reducing your app to just problematic code by commenting out as much correctly-functioning code as possible

-angle-right +Angle Right adding diagnostic messages to my reactives

-angle-right +Angle Right using reactlog to visualize reactivity errors

@@ -8260,7 +8084,7 @@ 3. Run your app, interact with it, then quit your app

-4. Launch reactlog by running shiny::reactlogShow() in your console (or use the keyboard shortcut cmd/ctrl + F3) +4. Launch reactlog by running shiny::reactlogShow() in your console (or use the keyboard shortcut cmd/ctrl + F3)

5. Use your <- and -> arrow keys (or A gray, left-facing play button and A gray, right-facing play button) to move forward and backward through your app’s reactive life cycle @@ -8274,7 +8098,7 @@ Using reactlog to visualize reactivity in a correctly-functioning app

-To visualize the reactive life cycle of the reactlog-working app, I’ll first load the reactlog library, then call reactlog_enable() in my console. Next, I’ll run my app and interact with it. By default, All penguins is selected. For demonstration purposes, I’ll click down the list (Sassy chinstrap, Staring gentoo, and finally Adorable adelie). When done, I’ll stop my app, then run shiny::reactlogShow() in the console to open the reactlog visualizer in a browser window. +To visualize the reactive life cycle of the reactlog-working app, I’ll first load the reactlog library, then call reactlog_enable() in my console. Next, I’ll run my app and interact with it. By default, All penguins is selected. For demonstration purposes, I’ll click down the list (Sassy chinstrap, Staring gentoo, and finally Adorable adelie). When done, I’ll stop my app, then run shiny::reactlogShow() in the console to open the reactlog visualizer in a browser window.

Note: I’ve left the scatter plot on Tab 2 (and it’s related UI elements) commented out (as we practiced in the earlier few slides) for this demo – the reactlog package has many features that allow you to explore reactive dependencies across your whole app, but it can get complicated quickly. For demo purposes, we’re going to work with this “smaller” version of our app, which contains just the problematic code. @@ -8372,8 +8196,8 @@

-Code File - Testing +File Code + Testing

Creating automated tests for your apps can save time and effort, ensuring that they continue working as expected. @@ -8382,26 +8206,26 @@

Book Open - Learning Objectives for Testing + Learning Objectives for Testing

After this section, you should:

-angle-right +Angle Right understand some of the reasons why apps break and the benefit of having automated tests

-angle-right +Angle Right have a basic understanding of how to use the shinytest2 package to create regression tests

-angle-right +Angle Right know how to rerun tests

@@ -8425,19 +8249,19 @@

-angle-right +Angle Right an upgraded R package(s) has a different behavior (this includes shiny) – this is especially relevant for those apps hosted on servers, where server software (including packages) may be updated by system administrators

-angle-right +Angle Right you make changes to your app

-angle-right +Angle Right an external data source stops working or returns data in a different format than expected by your app

@@ -8485,15 +8309,15 @@ Additional resources:

-angle-right +Angle Right Barret Schloerke’s rstudio::conf(2022) talk, {shinytest2}: Unit testing for Shiny applications (recording)

-angle-right +Angle Right Barret Schloerke’s 2022 Appsilon Shiny Confernce talk, {shinytest2} Testing Shiny with {testthat} (recording & GitHub repo)

-angle-right +Angle Right Shiny testing overview, by Winston Chang – this article discussed the shinytest2 predecessor, shinytest (which is now entering maintenance mode), but provides some helpful context and is worth a read

@@ -8654,15 +8478,15 @@ Tips for testing

-angle-right +Angle Right Record subsequent tests following the same workflow, giving each a unique name. Run test_app("path/to/app") to run all test scripts in your app’s tests/testhat directory.

-angle-right +Angle Right Use record_test() fairly often – Barret Schloerke argues that you should make a test recording for each feature of your app (many little recordings are encouraged!)

-angle-right +Angle Right Limit testing to objects under your control. For example, let’s say you have a reactive data frame that you then send to a DT::datatable – if package maintainers update the DT package, your output might change which could lead to false positive failed tests. Instead, test just your data frame that gets sent to DT.

@@ -8675,17 +8499,14 @@

-Star - Part 6: Streamlining code + Part 6: Streamlining code


-angle-right - Writing functions + Writing functions

-angle-right - Shiny modules + Shiny modules

@@ -8700,32 +8521,32 @@

Book Open - Learning Objectives - Functions + Learning Objectives - Functions

By the end of this section, you should:

-angle-right +Angle Right understand the benefits of turning UI elements and server logic into functions

-angle-right +Angle Right know where to write/save your functions

-angle-right +Angle Right successfully turn a repeated input into a function

-angle-right +Angle Right successfully turn a piece of server logic into a function

@@ -8737,19 +8558,19 @@ Functions are useful for a wide variety of reasons. Most notably:

-angle-right +Angle Right reducing redundancy

-angle-right +Angle Right reducing complexity

-angle-right +Angle Right increasing code comprehension

-angle-right +Angle Right increasing testability

@@ -9245,26 +9066,26 @@

Book Open - Learning Objectives - Modules + Learning Objectives - Modules

By the end of this section, you should have an intro-level understanding of:

-angle-right +Angle Right what is a shiny module and when it might make sense to build one

-angle-right +Angle Right the structure of a shiny module

-angle-right +Angle Right how to use a module

@@ -9628,7 +9449,7 @@ Taking a closer look at the gapminder app code, we’ll see that the following sections of code are repeated for each region (6 times total; only code sections for “all” regions shown below):

-angle-right +Angle Right tabPanel (UI)

@@ -9640,7 +9461,7 @@ animate = animationOptions(interval = 500)))

-angle-right +Angle Right reactive data frame (server)

@@ -9650,7 +9471,7 @@ })

-angle-right +Angle Right reactive data frame (server)

@@ -9660,7 +9481,7 @@ })

-angle-right +Angle Right calculating date ranges (server)

@@ -9673,7 +9494,7 @@ Repeated code sections (cont.)

-angle-right +Angle Right renderPlot({}) (server)

@@ -9714,18 +9535,18 @@ Enter Shiny modules

-angle-right +Angle Right A shiny module is a piece of a shiny app – it can’t be run directly, but instead is included as part of a larger app. While functions work well for code that that is either completely on the client (UI) side or completely on the server side, modules can be written for code that spans both.

-angle-right +Angle Right Modules can represent inputs, outputs, or both (we’ll be building a module that represents both). Motivation for building modules can range from enabling reuse of code (once created, modules can be reused within the same app or even across different apps), to breaking up a large, complex app into smaller, separate components.

-angle-right +Angle Right Modules help to solve a namespacing problem – recall that all Ids (e.g. inputIds) must be unique across your app. Namespacing is a system for organizing objects with identical names (similar to namespacing functions from particular packages using the syntax package::function() e.g. plyr::arrange() vs dplyr::arrange()).

@@ -10012,47 +9833,43 @@ We’ve barely scratched the surface of modules. Continue on with some of the following resources:

-angle-right +Angle Right Modularizing Shiny App Code & associated materials, by Garrett Grolemund & Joe Cheng at the 2016 Shiny Developer’s Conference – NOTE: This 2016 talk is an excellent introduction to modules and is definitely worth a watch, especially because we just explored the exact example demoed by G. Grolemund. Please note, however, that Shiny modules were overhauled in 2020 with the introduction of moduleServer(). The code on the previous slides has been updated to reflect those changes, and therefore differs slightly from what’s taught in this video.

-angle-right +Angle Right Mastering Shiny, Ch. 19 - Shiny Modules, by Hadley Wickham

-angle-right +Angle Right Modularizing Shiny app code, by Winston Chang

-angle-right +Angle Right Effective use of Shiny modules in application development, by Eric Nantz at rstudio::conf(2019)

-angle-right +Angle Right A beginners guide to Shiny modules, by Emily Riederer

-Star - Part 7: Wrap-up + Part 7: Wrap-up


-angle-right - Shiny alternatives + Shiny alternatives

-angle-right - Words of wisdom + Words of wisdom

-angle-right - More resources + More resources

-Arrows left right +Arrows Left Right Consider if you need Shiny at all

@@ -10068,19 +9885,19 @@

-angle-right +Angle Right Widgets aren’t only for Shiny! Embed interactive htmlwidgets into your R Markdown documents that range from geo-spatial mapping with leaflet to generating network graph diagrams with DiagrammeR. Check out the htmlwidgets for R - gallery for many more options.

-angle-right +Angle Right Compose multiple widgets into a dashboard using flexdashboard. Based in R Markdown, this framework allows you to produce dynamic dashboards using tools you are already familiar with. Find example projects and their source code here.

-angle-right +Angle Right Embed reactive shiny components (e.g. inputs & outputs) in Quarto documents. By using some fun new code chunk options, you can instruct Quarto to spin up it’s own self-contained shiny server to run your reactives. Read the Quarto documentation to learn more and check out some teaching examples here.

@@ -10090,21 +9907,21 @@

Example flexdashboards built by some familiar folks Face Smile - +

Sun -Energy Siting Dashboard (source code), developed by MEDS 2022 alumni Paloma Cartwright, Joe DeCesaro, Daniel Kerstan & Desik Somasundaram as part of their MEDS capstone project – explore predictions of the most suitable locations for large, utility-scale wind and solar projects across the United States +Energy Siting Dashboard (source code), developed by MEDS 2022 alumni Paloma Cartwright, Joe DeCesaro, Daniel Kerstan & Desik Somasundaram as part of their MEDS capstone project – explore predictions of the most suitable locations for large, utility-scale wind and solar projects across the United States

Handshake -@ADELPHIRESEARCH TWEETS Dashboard (source code), developed by R-Lady Shannon Pileggi as part of a job interview – read about this clever approach to showcasing your skills to a potential employer in Shannon’s blogpost, A job interview presentation inspired by the R community. +@ADELPHIRESEARCH TWEETS Dashboard (source code), developed by R-Lady Shannon Pileggi as part of a job interview – read about this clever approach to showcasing your skills to a potential employer in Shannon’s blogpost, A job interview presentation inspired by the R community.

Lightbulb - Final Thoughts & Additional Resources + Final Thoughts & Additional Resources

We’ve covered a lot in this workshop, and we’ve only just begun to scratch the surface – we’ll end with some final thoughts/words of wisdom, along with some resources that are worth returning to as you begin your deep dive into shiny app development. @@ -10120,7 +9937,7 @@

-table +Table Get your data in the most wrangled form possible before loading it into your app to avoid unnecessary slowdowns.

@@ -10133,13 +9950,13 @@

Users - Keep in mind the considerations for good UX/UI design. You’re building an app for the user first and foremost – be sure to assess often if your app is going to meet their needs. + Keep in mind the considerations for good UX/UI design. You’re building an app for the user first and foremost – be sure to assess often if your app is going to meet their needs.

Question - Before taking the plunge, consider if you really need shiny at all – maintaining apps can be challenging. What other options might you have for sharing your data with end users? + Before taking the plunge, consider if you really need shiny at all – maintaining apps can be challenging. What other options might you have for sharing your data with end users?

@@ -10153,45 +9970,45 @@ Books

-angle-right +Angle Right Mastering Shiny, by Hadley Wickham

-angle-right +Angle Right Engineering Production-Grade Shiny Apps, by Colin Fay, Sébastien Rochette, Vincent Guyader & Cervan Girard.

-angle-right +Angle Right Building Web Apps with R, by Lisa DeBruine – an short course (paired with an online book with instructions, resources, etc.)

Tutorials

-angle-right +Angle Right Building Shiny apps - an interactive tutorial, by Dean Attali

-angle-right +Angle Right Speeding Up R Shiny, by Jakub Sobolewski in R bloggers – details methods on improving app performance

-angle-right +Angle Right Allison Horst’s The Basics of Building Shiny Apps in R workshop

Tools

-angle-right +Angle Right R Shiny & FontAwesome Icons – How to Use Them in Your Dashboards, by Dario Radečić in R Bloggers – instructions for setting up your fontawesome kit

-angle-right +Angle Right Shiny UI Editor and Nick Strayer’s rstudio::conf(2022) talk introducing it – a visual tool for building the UI portion of a Shiny application that generates clean and human-readable code (currently in Alpha, as of January 2023)

-angle-right +Angle Right The {golem} package provides an opinionated framework for building production-grade shiny applications and is a part of a growing ecosystem of packages called the {golemverse}. There are lots of accompanying learning materials, including the book, Engineering Production Grade Shiny Apps, by Colin Fay, Sébastien Rochette, Vincent Guyader, and Cervan Girard.

@@ -10202,15 +10019,15 @@ Posit/RStudio’s great instructional resources, examples, and help documentation:

-angle-right +Angle Right A thoughtfully organized Articles page

-angle-right +Angle Right The Shiny User Showcase, a collection of Shiny apps and their source code developed by the Shiny developer community – many of these featured apps are winners or honorable mentions of the annual Shiny contest!

-angle-right +Angle Right Shiny Demos, a series of apps created by the Shiny developers to highlight specific features of the shiny package – these are excellent resources to turn to when you are learning how to implement a new type of widget, working on the layout of your app, and more.

@@ -10249,7 +10066,7 @@ 'autoAnimateEasing': "ease", 'autoAnimateDuration': 1, 'autoAnimateUnmatched': true, -'menu': {"side":"left","useTextContentForMissingTitles":true,"markers":false,"loadIcons":false,"custom":[{"title":"Tools","icon":"","content":""}],"openButton":true}, +'menu': {"side":"left","useTextContentForMissingTitles":true,"markers":false,"loadIcons":false,"custom":[{"title":"Tools","icon":"","content":""}],"openButton":true}, 'chalkboard': {"buttons":true}, 'smaller': false, @@ -10488,9 +10305,23 @@ tabsets.forEach(function(tabset) { const tabby = new Tabby('#' + tabset.id); }); + const isCodeAnnotation = (el) => { + for (const clz of el.classList) { + if (clz.startsWith('code-annotation-')) { + return true; + } + } + return false; + } const clipboard = new window.ClipboardJS('.code-copy-button', { - target: function(trigger) { - return trigger.previousElementSibling; + text: function(trigger) { + const codeEl = trigger.previousElementSibling.cloneNode(true); + for (const childEl of codeEl.children) { + if (isCodeAnnotation(childEl)) { + childEl.remove(); + } + } + return codeEl.innerText; } }); clipboard.on('success', function(e) { @@ -10538,7 +10369,7 @@ }, interactive: true, interactiveBorder: 10, - theme: 'quarto-reveal', + theme: 'light-border', placement: 'bottom-start' }; config['offset'] = [0,0]; diff --git a/index.qmd b/index.qmd index be9b560..6f88d74 100644 --- a/index.qmd +++ b/index.qmd @@ -9,14 +9,25 @@ format: - meds_styles.scss --- -## {#title-slide data-menu-title="~~~ Title Slide ~~~" background="images/title_background.png"} +## {#title-slide data-menu-title="~~~ Title Slide ~~~" background="#053660"} [EDS 430 - Intro to The word 'Shiny' in cursive lettering, which is the logo used by Posit for the shiny package.]{.custom-title} [*Building reactive apps & dashboards*]{.custom-subtitle} -
-
+:::: {.columns} + +::: {.column width="50%"} +[**Published:** Oct 10, 2022]{.body-text .baby-blue-text} +::: + +::: {.column width="50%"} +[**Last updated:** `r format(Sys.time(), '%b %d, %Y')`]{.body-text .baby-blue-text} +::: + +:::: + +
:::: {.columns} @@ -28,7 +39,7 @@ format: ::: {.column width="50%"} [Master of Environmental Data Science |]{.custom-subtitle2}
-[Winter 2023]{.custom-subtitle2}
+ [*Bren School of Environmental Science & Management*]{.custom-subtitle3} ::: @@ -46,7 +57,9 @@ format: ## {#toc data-menu-title="Table of Contents"} -
`r fontawesome::fa("star", fill = "#05859B", a11y = "sem")` Table of Contents `r fontawesome::fa("star", fill = "#05859B", a11y = "sem")`
+[{{< fa star title="star" >}} Table of Contents {{< fa star title="star" >}}]{.slide-title-smaller} + +

We're going to pack a lot into two days. Here's what to expect:

@@ -77,15 +90,15 @@ format: ## {#1-shiny-overview data-menu-title="!! (1) High-level overview of Shiny !!" background="#374F50"} -

`r fontawesome::fa("star", fill = "#F7F7F7", a11y = "sem")` Part 1: High-level overview of Shiny

+[{{< fa star title="star" >}} Part 1: High-level overview of Shiny]{.slide-title-dark} -
+
-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` What is Shiny?

+

{{< fa angle-right title="a bullet point" >}} What is Shiny?

-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Anatomy of a shiny app

+

{{< fa angle-right title="a bullet point" >}} Anatomy of a shiny app

-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Where to find examples

+

{{< fa angle-right title="a bullet point" >}} Where to find examples

--- @@ -99,19 +112,19 @@ format: ## {#2-building-apps data-menu-title="!! (2) Building shiny apps & dashboards !!" background="#374F50"} -

`r fontawesome::fa("star", fill = "#F7F7F7", a11y = "sem")` Part 2: Building shiny apps & dashboards

+[{{< fa star title="star" >}} Part 2: Building shiny apps & dashboards]{.slide-title-dark} -
+
-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Setting up your repo & files

+

{{< fa angle-right title="a bullet point" >}} Setting up your repo & files

-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` App #1 (single-file app) - [source code](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/single-file-app)

+

{{< fa angle-right title="a bullet point" >}} App #1 (single-file app) - [source code](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/single-file-app)

-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` App #2 (two-file app) - [source code](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/two-file-app)

+

{{< fa angle-right title="a bullet point" >}} App #2 (two-file app) - [source code](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/two-file-app)

-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` App #3 (shinydashboard) - [source code](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/shinydashboard)

+

{{< fa angle-right title="a bullet point" >}} App #3 (shinydashboard) - [source code](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/shinydashboard)

-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Deploying (& redeploying) apps

+

{{< fa angle-right title="a bullet point" >}} Deploying (& redeploying) apps

--- @@ -122,7 +135,7 @@ format: ## {#break1 data-menu-title="# Break #" background="#047C90"}
-

`r fontawesome::fa("mug-hot", fill = "#d2e3f3", a11y = "sem")` Break

+

{{< fa mug-hot title="a steaming coffee mug" >}} Break

*Give your eyes a break from the computer screen!*

@@ -151,7 +164,7 @@ countdown::countdown( ## {#break2 data-menu-title="# Break #" background="#047C90"}
-

`r fontawesome::fa("mug-hot", fill = "#d2e3f3", a11y = "sem")` Break

+

{{< fa mug-hot title="a steaming coffee mug" >}} Break

*Up next: your turn to add a reactive penguin plot to our "Penguin" tab!*

@@ -180,7 +193,7 @@ countdown::countdown( ## {#break3 data-menu-title="# Break #" background="#047C90"}
-

`r fontawesome::fa("mug-hot", fill = "#d2e3f3", a11y = "sem")` Break

+

{{< fa mug-hot title="a steaming coffee mug" >}} Break

*Next, we'll finish up v1 of our app by adding some intro text to the landing page*

@@ -250,7 +263,7 @@ countdown::countdown( ## {#mini-break3 data-menu-title="# Break #" background="#047C90"}
-

`r fontawesome::fa("mug-hot", fill = "#d2e3f3", a11y = "sem")` Break

+

{{< fa mug-hot title="a steaming coffee mug" >}} Break

*Up next: Adding background information and an image to our Welcome tab*

@@ -278,15 +291,15 @@ countdown::countdown( ## {#3-beautifying-ui data-menu-title="!! (3) Beautifying your UI !!" background="#374F50"} -

`r fontawesome::fa("star", fill = "#F7F7F7", a11y = "sem")` Part 3: Beautifying your user interface (UI)

+[{{< fa star title="star" >}} Part 3: Beautifying your user interface (UI)]{.slide-title-dark} -
+
-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Custom themes with `bslib`

+

{{< fa angle-right title="a bullet point" >}} Custom themes with `bslib`

-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Custom themes with `fresh`

+

{{< fa angle-right title="a bullet point" >}} Custom themes with `fresh`

-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Styling with CSS & Sass

+

{{< fa angle-right title="a bullet point" >}} Styling with CSS & Sass

--- @@ -296,13 +309,13 @@ countdown::countdown( ## {#4-improving-ux data-menu-title="!! (4) Improving UX !!" background="#374F50"} -

`r fontawesome::fa("star", fill = "#F7F7F7", a11y = "sem")` Part 4: Improving your app's user experience (UX)

+

{{< fa star title="star" >}} Part 4: Improving your app's user experience (UX)


-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Important UX considerations

+

{{< fa angle-right title="a bullet point" >}} Important UX considerations

-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Web accessibility

+

{{< fa angle-right title="a bullet point" >}} Web accessibility

--- @@ -316,13 +329,13 @@ countdown::countdown( ## {#5-debugging-testing data-menu-title="!! (5) Debugging & Testing !!" background="#374F50"} -

`r fontawesome::fa("star", fill = "#F7F7F7", a11y = "sem")` Part 5: Debugging & testing

+

{{< fa star title="star" >}} Part 5: Debugging & testing


-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Debugging approaches

+

{{< fa angle-right title="a bullet point" >}} Debugging approaches

-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Testing apps

+

{{< fa angle-right title="a bullet point" >}} Testing apps

--- @@ -336,13 +349,13 @@ countdown::countdown( ## {#6-streamlining-code data-menu-title="!! (6) Streamlining Code !!" background="#374F50"} -

`r fontawesome::fa("star", fill = "#F7F7F7", a11y = "sem")` Part 6: Streamlining code

+

{{< fa star title="star" >}} Part 6: Streamlining code


-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Writing functions

+

{{< fa angle-right title="a bullet point" >}} Writing functions

-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Shiny modules

+

{{< fa angle-right title="a bullet point" >}} Shiny modules

--- @@ -356,15 +369,15 @@ countdown::countdown( ## {#7-wrap-up data-menu-title="!! (7) Wrap-up !!" background="#374F50"} -

`r fontawesome::fa("star", fill = "#F7F7F7", a11y = "sem")` Part 7: Wrap-up

+

{{< fa star title="star" >}} Part 7: Wrap-up


-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Shiny alternatives

+

{{< fa angle-right title="a bullet point" >}} Shiny alternatives

-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` Words of wisdom

+

{{< fa angle-right title="a bullet point" >}} Words of wisdom

-

`r fontawesome::fa("angle-right", fill = "#F7F7F7", a11y = "sem")` More resources

+

{{< fa angle-right title="a bullet point" >}} More resources

--- diff --git a/index_files/libs/clipboard/clipboard.min.js b/index_files/libs/clipboard/clipboard.min.js index 41c6a0f..1103f81 100644 --- a/index_files/libs/clipboard/clipboard.min.js +++ b/index_files/libs/clipboard/clipboard.min.js @@ -1,7 +1,7 @@ /*! - * clipboard.js v2.0.10 + * clipboard.js v2.0.11 * https://clipboardjs.com/ * * Licensed MIT © Zeno Rocha */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1").addClass(errClass); + errorSpan.text(err.message); + $el.after(errorSpan); + } + } else if (display === "block") { + // If block, add an error just after the el, set visibility:none on the + // el, and position the error to be on top of the el. + // Mark it with a unique ID and CSS class so we can remove it later. + $el.css("visibility", "hidden"); + if (err.message !== "") { + var errorDiv = $("
").addClass(errClass).css("position", "absolute") + .css("top", el.offsetTop) + .css("left", el.offsetLeft) + // setting width can push out the page size, forcing otherwise + // unnecessary scrollbars to appear and making it impossible for + // the element to shrink; so use max-width instead + .css("maxWidth", el.offsetWidth) + .css("height", el.offsetHeight); + errorDiv.text(err.message); + $el.after(errorDiv); + + // Really dumb way to keep the size/position of the error in sync with + // the parent element as the window is resized or whatever. + var intId = setInterval(function() { + if (!errorDiv[0].parentElement) { + clearInterval(intId); + return; + } + errorDiv + .css("top", el.offsetTop) + .css("left", el.offsetLeft) + .css("maxWidth", el.offsetWidth) + .css("height", el.offsetHeight); + }, 500); + } + } + }, + clearError: function(el) { + var $el = $(el); + var display = $el.data("restore-display-mode"); + $el.data("restore-display-mode", null); + + if (display === "inline" || display === "inline-block") { + if (display) + $el.css("display", display); + $(el.nextSibling).filter(".htmlwidgets-error").remove(); + } else if (display === "block"){ + $el.css("visibility", "inherit"); + $(el.nextSibling).filter(".htmlwidgets-error").remove(); + } + }, + sizing: {} + }; + + // Called by widget bindings to register a new type of widget. The definition + // object can contain the following properties: + // - name (required) - A string indicating the binding name, which will be + // used by default as the CSS classname to look for. + // - initialize (optional) - A function(el) that will be called once per + // widget element; if a value is returned, it will be passed as the third + // value to renderValue. + // - renderValue (required) - A function(el, data, initValue) that will be + // called with data. Static contexts will cause this to be called once per + // element; Shiny apps will cause this to be called multiple times per + // element, as the data changes. + window.HTMLWidgets.widget = function(definition) { + if (!definition.name) { + throw new Error("Widget must have a name"); + } + if (!definition.type) { + throw new Error("Widget must have a type"); + } + // Currently we only support output widgets + if (definition.type !== "output") { + throw new Error("Unrecognized widget type '" + definition.type + "'"); + } + // TODO: Verify that .name is a valid CSS classname + + // Support new-style instance-bound definitions. Old-style class-bound + // definitions have one widget "object" per widget per type/class of + // widget; the renderValue and resize methods on such widget objects + // take el and instance arguments, because the widget object can't + // store them. New-style instance-bound definitions have one widget + // object per widget instance; the definition that's passed in doesn't + // provide renderValue or resize methods at all, just the single method + // factory(el, width, height) + // which returns an object that has renderValue(x) and resize(w, h). + // This enables a far more natural programming style for the widget + // author, who can store per-instance state using either OO-style + // instance fields or functional-style closure variables (I guess this + // is in contrast to what can only be called C-style pseudo-OO which is + // what we required before). + if (definition.factory) { + definition = createLegacyDefinitionAdapter(definition); + } + + if (!definition.renderValue) { + throw new Error("Widget must have a renderValue function"); + } + + // For static rendering (non-Shiny), use a simple widget registration + // scheme. We also use this scheme for Shiny apps/documents that also + // contain static widgets. + window.HTMLWidgets.widgets = window.HTMLWidgets.widgets || []; + // Merge defaults into the definition; don't mutate the original definition. + var staticBinding = extend({}, defaults, definition); + overrideMethod(staticBinding, "find", function(superfunc) { + return function(scope) { + var results = superfunc(scope); + // Filter out Shiny outputs, we only want the static kind + return filterByClass(results, "html-widget-output", false); + }; + }); + window.HTMLWidgets.widgets.push(staticBinding); + + if (shinyMode) { + // Shiny is running. Register the definition with an output binding. + // The definition itself will not be the output binding, instead + // we will make an output binding object that delegates to the + // definition. This is because we foolishly used the same method + // name (renderValue) for htmlwidgets definition and Shiny bindings + // but they actually have quite different semantics (the Shiny + // bindings receive data that includes lots of metadata that it + // strips off before calling htmlwidgets renderValue). We can't + // just ignore the difference because in some widgets it's helpful + // to call this.renderValue() from inside of resize(), and if + // we're not delegating, then that call will go to the Shiny + // version instead of the htmlwidgets version. + + // Merge defaults with definition, without mutating either. + var bindingDef = extend({}, defaults, definition); + + // This object will be our actual Shiny binding. + var shinyBinding = new Shiny.OutputBinding(); + + // With a few exceptions, we'll want to simply use the bindingDef's + // version of methods if they are available, otherwise fall back to + // Shiny's defaults. NOTE: If Shiny's output bindings gain additional + // methods in the future, and we want them to be overrideable by + // HTMLWidget binding definitions, then we'll need to add them to this + // list. + delegateMethod(shinyBinding, bindingDef, "getId"); + delegateMethod(shinyBinding, bindingDef, "onValueChange"); + delegateMethod(shinyBinding, bindingDef, "onValueError"); + delegateMethod(shinyBinding, bindingDef, "renderError"); + delegateMethod(shinyBinding, bindingDef, "clearError"); + delegateMethod(shinyBinding, bindingDef, "showProgress"); + + // The find, renderValue, and resize are handled differently, because we + // want to actually decorate the behavior of the bindingDef methods. + + shinyBinding.find = function(scope) { + var results = bindingDef.find(scope); + + // Only return elements that are Shiny outputs, not static ones + var dynamicResults = results.filter(".html-widget-output"); + + // It's possible that whatever caused Shiny to think there might be + // new dynamic outputs, also caused there to be new static outputs. + // Since there might be lots of different htmlwidgets bindings, we + // schedule execution for later--no need to staticRender multiple + // times. + if (results.length !== dynamicResults.length) + scheduleStaticRender(); + + return dynamicResults; + }; + + // Wrap renderValue to handle initialization, which unfortunately isn't + // supported natively by Shiny at the time of this writing. + + shinyBinding.renderValue = function(el, data) { + Shiny.renderDependencies(data.deps); + // Resolve strings marked as javascript literals to objects + if (!(data.evals instanceof Array)) data.evals = [data.evals]; + for (var i = 0; data.evals && i < data.evals.length; i++) { + window.HTMLWidgets.evaluateStringMember(data.x, data.evals[i]); + } + if (!bindingDef.renderOnNullValue) { + if (data.x === null) { + el.style.visibility = "hidden"; + return; + } else { + el.style.visibility = "inherit"; + } + } + if (!elementData(el, "initialized")) { + initSizing(el); + + elementData(el, "initialized", true); + if (bindingDef.initialize) { + var rect = el.getBoundingClientRect(); + var result = bindingDef.initialize(el, rect.width, rect.height); + elementData(el, "init_result", result); + } + } + bindingDef.renderValue(el, data.x, elementData(el, "init_result")); + evalAndRun(data.jsHooks.render, elementData(el, "init_result"), [el, data.x]); + }; + + // Only override resize if bindingDef implements it + if (bindingDef.resize) { + shinyBinding.resize = function(el, width, height) { + // Shiny can call resize before initialize/renderValue have been + // called, which doesn't make sense for widgets. + if (elementData(el, "initialized")) { + bindingDef.resize(el, width, height, elementData(el, "init_result")); + } + }; + } + + Shiny.outputBindings.register(shinyBinding, bindingDef.name); + } + }; + + var scheduleStaticRenderTimerId = null; + function scheduleStaticRender() { + if (!scheduleStaticRenderTimerId) { + scheduleStaticRenderTimerId = setTimeout(function() { + scheduleStaticRenderTimerId = null; + window.HTMLWidgets.staticRender(); + }, 1); + } + } + + // Render static widgets after the document finishes loading + // Statically render all elements that are of this widget's class + window.HTMLWidgets.staticRender = function() { + var bindings = window.HTMLWidgets.widgets || []; + forEach(bindings, function(binding) { + var matches = binding.find(document.documentElement); + forEach(matches, function(el) { + var sizeObj = initSizing(el, binding); + + var getSize = function(el) { + if (sizeObj) { + return {w: sizeObj.getWidth(), h: sizeObj.getHeight()} + } else { + var rect = el.getBoundingClientRect(); + return {w: rect.width, h: rect.height} + } + }; + + if (hasClass(el, "html-widget-static-bound")) + return; + el.className = el.className + " html-widget-static-bound"; + + var initResult; + if (binding.initialize) { + var size = getSize(el); + initResult = binding.initialize(el, size.w, size.h); + elementData(el, "init_result", initResult); + } + + if (binding.resize) { + var lastSize = getSize(el); + var resizeHandler = function(e) { + var size = getSize(el); + if (size.w === 0 && size.h === 0) + return; + if (size.w === lastSize.w && size.h === lastSize.h) + return; + lastSize = size; + binding.resize(el, size.w, size.h, initResult); + }; + + on(window, "resize", resizeHandler); + + // This is needed for cases where we're running in a Shiny + // app, but the widget itself is not a Shiny output, but + // rather a simple static widget. One example of this is + // an rmarkdown document that has runtime:shiny and widget + // that isn't in a render function. Shiny only knows to + // call resize handlers for Shiny outputs, not for static + // widgets, so we do it ourselves. + if (window.jQuery) { + window.jQuery(document).on( + "shown.htmlwidgets shown.bs.tab.htmlwidgets shown.bs.collapse.htmlwidgets", + resizeHandler + ); + window.jQuery(document).on( + "hidden.htmlwidgets hidden.bs.tab.htmlwidgets hidden.bs.collapse.htmlwidgets", + resizeHandler + ); + } + + // This is needed for the specific case of ioslides, which + // flips slides between display:none and display:block. + // Ideally we would not have to have ioslide-specific code + // here, but rather have ioslides raise a generic event, + // but the rmarkdown package just went to CRAN so the + // window to getting that fixed may be long. + if (window.addEventListener) { + // It's OK to limit this to window.addEventListener + // browsers because ioslides itself only supports + // such browsers. + on(document, "slideenter", resizeHandler); + on(document, "slideleave", resizeHandler); + } + } + + var scriptData = document.querySelector("script[data-for='" + el.id + "'][type='application/json']"); + if (scriptData) { + var data = JSON.parse(scriptData.textContent || scriptData.text); + // Resolve strings marked as javascript literals to objects + if (!(data.evals instanceof Array)) data.evals = [data.evals]; + for (var k = 0; data.evals && k < data.evals.length; k++) { + window.HTMLWidgets.evaluateStringMember(data.x, data.evals[k]); + } + binding.renderValue(el, data.x, initResult); + evalAndRun(data.jsHooks.render, initResult, [el, data.x]); + } + }); + }); + + invokePostRenderHandlers(); + } + + + function has_jQuery3() { + if (!window.jQuery) { + return false; + } + var $version = window.jQuery.fn.jquery; + var $major_version = parseInt($version.split(".")[0]); + return $major_version >= 3; + } + + /* + / Shiny 1.4 bumped jQuery from 1.x to 3.x which means jQuery's + / on-ready handler (i.e., $(fn)) is now asyncronous (i.e., it now + / really means $(setTimeout(fn)). + / https://jquery.com/upgrade-guide/3.0/#breaking-change-document-ready-handlers-are-now-asynchronous + / + / Since Shiny uses $() to schedule initShiny, shiny>=1.4 calls initShiny + / one tick later than it did before, which means staticRender() is + / called renderValue() earlier than (advanced) widget authors might be expecting. + / https://github.com/rstudio/shiny/issues/2630 + / + / For a concrete example, leaflet has some methods (e.g., updateBounds) + / which reference Shiny methods registered in initShiny (e.g., setInputValue). + / Since leaflet is privy to this life-cycle, it knows to use setTimeout() to + / delay execution of those methods (until Shiny methods are ready) + / https://github.com/rstudio/leaflet/blob/18ec981/javascript/src/index.js#L266-L268 + / + / Ideally widget authors wouldn't need to use this setTimeout() hack that + / leaflet uses to call Shiny methods on a staticRender(). In the long run, + / the logic initShiny should be broken up so that method registration happens + / right away, but binding happens later. + */ + function maybeStaticRenderLater() { + if (shinyMode && has_jQuery3()) { + window.jQuery(window.HTMLWidgets.staticRender); + } else { + window.HTMLWidgets.staticRender(); + } + } + + if (document.addEventListener) { + document.addEventListener("DOMContentLoaded", function() { + document.removeEventListener("DOMContentLoaded", arguments.callee, false); + maybeStaticRenderLater(); + }, false); + } else if (document.attachEvent) { + document.attachEvent("onreadystatechange", function() { + if (document.readyState === "complete") { + document.detachEvent("onreadystatechange", arguments.callee); + maybeStaticRenderLater(); + } + }); + } + + + window.HTMLWidgets.getAttachmentUrl = function(depname, key) { + // If no key, default to the first item + if (typeof(key) === "undefined") + key = 1; + + var link = document.getElementById(depname + "-" + key + "-attachment"); + if (!link) { + throw new Error("Attachment " + depname + "/" + key + " not found in document"); + } + return link.getAttribute("href"); + }; + + window.HTMLWidgets.dataframeToD3 = function(df) { + var names = []; + var length; + for (var name in df) { + if (df.hasOwnProperty(name)) + names.push(name); + if (typeof(df[name]) !== "object" || typeof(df[name].length) === "undefined") { + throw new Error("All fields must be arrays"); + } else if (typeof(length) !== "undefined" && length !== df[name].length) { + throw new Error("All fields must be arrays of the same length"); + } + length = df[name].length; + } + var results = []; + var item; + for (var row = 0; row < length; row++) { + item = {}; + for (var col = 0; col < names.length; col++) { + item[names[col]] = df[names[col]][row]; + } + results.push(item); + } + return results; + }; + + window.HTMLWidgets.transposeArray2D = function(array) { + if (array.length === 0) return array; + var newArray = array[0].map(function(col, i) { + return array.map(function(row) { + return row[i] + }) + }); + return newArray; + }; + // Split value at splitChar, but allow splitChar to be escaped + // using escapeChar. Any other characters escaped by escapeChar + // will be included as usual (including escapeChar itself). + function splitWithEscape(value, splitChar, escapeChar) { + var results = []; + var escapeMode = false; + var currentResult = ""; + for (var pos = 0; pos < value.length; pos++) { + if (!escapeMode) { + if (value[pos] === splitChar) { + results.push(currentResult); + currentResult = ""; + } else if (value[pos] === escapeChar) { + escapeMode = true; + } else { + currentResult += value[pos]; + } + } else { + currentResult += value[pos]; + escapeMode = false; + } + } + if (currentResult !== "") { + results.push(currentResult); + } + return results; + } + // Function authored by Yihui/JJ Allaire + window.HTMLWidgets.evaluateStringMember = function(o, member) { + var parts = splitWithEscape(member, '.', '\\'); + for (var i = 0, l = parts.length; i < l; i++) { + var part = parts[i]; + // part may be a character or 'numeric' member name + if (o !== null && typeof o === "object" && part in o) { + if (i == (l - 1)) { // if we are at the end of the line then evalulate + if (typeof o[part] === "string") + o[part] = tryEval(o[part]); + } else { // otherwise continue to next embedded object + o = o[part]; + } + } + } + }; + + // Retrieve the HTMLWidget instance (i.e. the return value of an + // HTMLWidget binding's initialize() or factory() function) + // associated with an element, or null if none. + window.HTMLWidgets.getInstance = function(el) { + return elementData(el, "init_result"); + }; + + // Finds the first element in the scope that matches the selector, + // and returns the HTMLWidget instance (i.e. the return value of + // an HTMLWidget binding's initialize() or factory() function) + // associated with that element, if any. If no element matches the + // selector, or the first matching element has no HTMLWidget + // instance associated with it, then null is returned. + // + // The scope argument is optional, and defaults to window.document. + window.HTMLWidgets.find = function(scope, selector) { + if (arguments.length == 1) { + selector = scope; + scope = document; + } + + var el = scope.querySelector(selector); + if (el === null) { + return null; + } else { + return window.HTMLWidgets.getInstance(el); + } + }; + + // Finds all elements in the scope that match the selector, and + // returns the HTMLWidget instances (i.e. the return values of + // an HTMLWidget binding's initialize() or factory() function) + // associated with the elements, in an array. If elements that + // match the selector don't have an associated HTMLWidget + // instance, the returned array will contain nulls. + // + // The scope argument is optional, and defaults to window.document. + window.HTMLWidgets.findAll = function(scope, selector) { + if (arguments.length == 1) { + selector = scope; + scope = document; + } + + var nodes = scope.querySelectorAll(selector); + var results = []; + for (var i = 0; i < nodes.length; i++) { + results.push(window.HTMLWidgets.getInstance(nodes[i])); + } + return results; + }; + + var postRenderHandlers = []; + function invokePostRenderHandlers() { + while (postRenderHandlers.length) { + var handler = postRenderHandlers.shift(); + if (handler) { + handler(); + } + } + } + + // Register the given callback function to be invoked after the + // next time static widgets are rendered. + window.HTMLWidgets.addPostRenderHandler = function(callback) { + postRenderHandlers.push(callback); + }; + + // Takes a new-style instance-bound definition, and returns an + // old-style class-bound definition. This saves us from having + // to rewrite all the logic in this file to accomodate both + // types of definitions. + function createLegacyDefinitionAdapter(defn) { + var result = { + name: defn.name, + type: defn.type, + initialize: function(el, width, height) { + return defn.factory(el, width, height); + }, + renderValue: function(el, x, instance) { + return instance.renderValue(x); + }, + resize: function(el, width, height, instance) { + return instance.resize(width, height); + } + }; + + if (defn.find) + result.find = defn.find; + if (defn.renderError) + result.renderError = defn.renderError; + if (defn.clearError) + result.clearError = defn.clearError; + + return result; + } +})(); diff --git a/index_files/libs/leaflet-binding-2.1.2/leaflet.js b/index_files/libs/leaflet-binding-2.1.2/leaflet.js new file mode 100644 index 0000000..1eafcbe --- /dev/null +++ b/index_files/libs/leaflet-binding-2.1.2/leaflet.js @@ -0,0 +1,2785 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i this.effectiveLength) throw new Error("Row argument was out of bounds: " + row + " > " + this.effectiveLength); + var colIndex = -1; + + if (typeof col === "undefined") { + var rowData = {}; + this.colnames.forEach(function (name, i) { + rowData[name] = _this3.columns[i][row % _this3.columns[i].length]; + }); + return rowData; + } else if (typeof col === "string") { + colIndex = this._colIndex(col); + } else if (typeof col === "number") { + colIndex = col; + } + + if (colIndex < 0 || colIndex > this.columns.length) { + if (missingOK) return void 0;else throw new Error("Unknown column index: " + col); + } + + return this.columns[colIndex][row % this.columns[colIndex].length]; + } + }, { + key: "nrow", + value: function nrow() { + return this.effectiveLength; + } + }]); + + return DataFrame; +}(); + +exports["default"] = DataFrame; + + +},{"./util":17}],5:[function(require,module,exports){ +"use strict"; + +var _leaflet = require("./global/leaflet"); + +var _leaflet2 = _interopRequireDefault(_leaflet); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// In RMarkdown's self-contained mode, we don't have a way to carry around the +// images that Leaflet needs but doesn't load into the page. Instead, we'll use +// the unpkg CDN. +if (typeof _leaflet2["default"].Icon.Default.imagePath === "undefined") { + _leaflet2["default"].Icon.Default.imagePath = "https://unpkg.com/leaflet@1.3.1/dist/images/"; +} + + +},{"./global/leaflet":10}],6:[function(require,module,exports){ +"use strict"; + +var _leaflet = require("./global/leaflet"); + +var _leaflet2 = _interopRequireDefault(_leaflet); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// add texxtsize, textOnly, and style +_leaflet2["default"].Tooltip.prototype.options.textsize = "10px"; +_leaflet2["default"].Tooltip.prototype.options.textOnly = false; +_leaflet2["default"].Tooltip.prototype.options.style = null; // copy original layout to not completely stomp it. + +var initLayoutOriginal = _leaflet2["default"].Tooltip.prototype._initLayout; + +_leaflet2["default"].Tooltip.prototype._initLayout = function () { + initLayoutOriginal.call(this); + this._container.style.fontSize = this.options.textsize; + + if (this.options.textOnly) { + _leaflet2["default"].DomUtil.addClass(this._container, "leaflet-tooltip-text-only"); + } + + if (this.options.style) { + for (var property in this.options.style) { + this._container.style[property] = this.options.style[property]; + } + } +}; + + +},{"./global/leaflet":10}],7:[function(require,module,exports){ +"use strict"; + +var _leaflet = require("./global/leaflet"); + +var _leaflet2 = _interopRequireDefault(_leaflet); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var protocolRegex = /^\/\//; + +var upgrade_protocol = function upgrade_protocol(urlTemplate) { + if (protocolRegex.test(urlTemplate)) { + if (window.location.protocol === "file:") { + // if in a local file, support http + // http should auto upgrade if necessary + urlTemplate = "http:" + urlTemplate; + } + } + + return urlTemplate; +}; + +var originalLTileLayerInitialize = _leaflet2["default"].TileLayer.prototype.initialize; + +_leaflet2["default"].TileLayer.prototype.initialize = function (urlTemplate, options) { + urlTemplate = upgrade_protocol(urlTemplate); + originalLTileLayerInitialize.call(this, urlTemplate, options); +}; + +var originalLTileLayerWMSInitialize = _leaflet2["default"].TileLayer.WMS.prototype.initialize; + +_leaflet2["default"].TileLayer.WMS.prototype.initialize = function (urlTemplate, options) { + urlTemplate = upgrade_protocol(urlTemplate); + originalLTileLayerWMSInitialize.call(this, urlTemplate, options); +}; + + +},{"./global/leaflet":10}],8:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = global.HTMLWidgets; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],9:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = global.jQuery; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],10:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = global.L; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],11:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = global.L.Proj; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],12:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = global.Shiny; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],13:[function(require,module,exports){ +"use strict"; + +var _jquery = require("./global/jquery"); + +var _jquery2 = _interopRequireDefault(_jquery); + +var _leaflet = require("./global/leaflet"); + +var _leaflet2 = _interopRequireDefault(_leaflet); + +var _shiny = require("./global/shiny"); + +var _shiny2 = _interopRequireDefault(_shiny); + +var _htmlwidgets = require("./global/htmlwidgets"); + +var _htmlwidgets2 = _interopRequireDefault(_htmlwidgets); + +var _util = require("./util"); + +var _crs_utils = require("./crs_utils"); + +var _controlStore = require("./control-store"); + +var _controlStore2 = _interopRequireDefault(_controlStore); + +var _layerManager = require("./layer-manager"); + +var _layerManager2 = _interopRequireDefault(_layerManager); + +var _methods = require("./methods"); + +var _methods2 = _interopRequireDefault(_methods); + +require("./fixup-default-icon"); + +require("./fixup-default-tooltip"); + +require("./fixup-url-protocol"); + +var _dataframe = require("./dataframe"); + +var _dataframe2 = _interopRequireDefault(_dataframe); + +var _clusterLayerStore = require("./cluster-layer-store"); + +var _clusterLayerStore2 = _interopRequireDefault(_clusterLayerStore); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +window.LeafletWidget = {}; +window.LeafletWidget.utils = {}; + +var methods = window.LeafletWidget.methods = _jquery2["default"].extend({}, _methods2["default"]); + +window.LeafletWidget.DataFrame = _dataframe2["default"]; +window.LeafletWidget.ClusterLayerStore = _clusterLayerStore2["default"]; +window.LeafletWidget.utils.getCRS = _crs_utils.getCRS; // Send updated bounds back to app. Takes a leaflet event object as input. + +function updateBounds(map) { + var id = map.getContainer().id; + var bounds = map.getBounds(); + + _shiny2["default"].onInputChange(id + "_bounds", { + north: bounds.getNorthEast().lat, + east: bounds.getNorthEast().lng, + south: bounds.getSouthWest().lat, + west: bounds.getSouthWest().lng + }); + + _shiny2["default"].onInputChange(id + "_center", { + lng: map.getCenter().lng, + lat: map.getCenter().lat + }); + + _shiny2["default"].onInputChange(id + "_zoom", map.getZoom()); +} + +function preventUnintendedZoomOnScroll(map) { + // Prevent unwanted scroll capturing. Similar in purpose to + // https://github.com/CliffCloud/Leaflet.Sleep but with a + // different set of heuristics. + // The basic idea is that when a mousewheel/DOMMouseScroll + // event is seen, we disable scroll wheel zooming until the + // user moves their mouse cursor or clicks on the map. This + // is slightly trickier than just listening for mousemove, + // because mousemove is fired when the page is scrolled, + // even if the user did not physically move the mouse. We + // handle this by examining the mousemove event's screenX + // and screenY properties; if they change, we know it's a + // "true" move. + // lastScreen can never be null, but its x and y can. + var lastScreen = { + x: null, + y: null + }; + (0, _jquery2["default"])(document).on("mousewheel DOMMouseScroll", "*", function (e) { + // Disable zooming (until the mouse moves or click) + map.scrollWheelZoom.disable(); // Any mousemove events at this screen position will be ignored. + + lastScreen = { + x: e.originalEvent.screenX, + y: e.originalEvent.screenY + }; + }); + (0, _jquery2["default"])(document).on("mousemove", "*", function (e) { + // Did the mouse really move? + if (lastScreen.x !== null && e.screenX !== lastScreen.x || e.screenY !== lastScreen.y) { + // It really moved. Enable zooming. + map.scrollWheelZoom.enable(); + lastScreen = { + x: null, + y: null + }; + } + }); + (0, _jquery2["default"])(document).on("mousedown", ".leaflet", function (e) { + // Clicking always enables zooming. + map.scrollWheelZoom.enable(); + lastScreen = { + x: null, + y: null + }; + }); +} + +_htmlwidgets2["default"].widget({ + name: "leaflet", + type: "output", + factory: function factory(el, width, height) { + var map = null; + return { + // we need to store our map in our returned object. + getMap: function getMap() { + return map; + }, + renderValue: function renderValue(data) { + // Create an appropriate CRS Object if specified + if (data && data.options && data.options.crs) { + data.options.crs = (0, _crs_utils.getCRS)(data.options.crs); + } // As per https://github.com/rstudio/leaflet/pull/294#discussion_r79584810 + + + if (map) { + map.remove(); + + map = function () { + return; + }(); // undefine map + + } + + if (data.options.mapFactory && typeof data.options.mapFactory === "function") { + map = data.options.mapFactory(el, data.options); + } else { + map = _leaflet2["default"].map(el, data.options); + } + + preventUnintendedZoomOnScroll(map); // Store some state in the map object + + map.leafletr = { + // Has the map ever rendered successfully? + hasRendered: false, + // Data to be rendered when resize is called with area != 0 + pendingRenderData: null + }; // Check if the map is rendered statically (no output binding) + + if (_htmlwidgets2["default"].shinyMode && /\bshiny-bound-output\b/.test(el.className)) { + map.id = el.id; // Store the map on the element so we can find it later by ID + + (0, _jquery2["default"])(el).data("leaflet-map", map); // When the map is clicked, send the coordinates back to the app + + map.on("click", function (e) { + _shiny2["default"].onInputChange(map.id + "_click", { + lat: e.latlng.lat, + lng: e.latlng.lng, + ".nonce": Math.random() // Force reactivity if lat/lng hasn't changed + + }); + }); + var groupTimerId = null; + map.on("moveend", function (e) { + updateBounds(e.target); + }).on("layeradd layerremove", function (e) { + // If the layer that's coming or going is a group we created, tell + // the server. + if (map.layerManager.getGroupNameFromLayerGroup(e.layer)) { + // But to avoid chattiness, coalesce events + if (groupTimerId) { + clearTimeout(groupTimerId); + groupTimerId = null; + } + + groupTimerId = setTimeout(function () { + groupTimerId = null; + + _shiny2["default"].onInputChange(map.id + "_groups", map.layerManager.getVisibleGroups()); + }, 100); + } + }); + } + + this.doRenderValue(data, map); + }, + doRenderValue: function doRenderValue(data, map) { + // Leaflet does not behave well when you set up a bunch of layers when + // the map is not visible (width/height == 0). Popups get misaligned + // relative to their owning markers, and the fitBounds calculations + // are off. Therefore we wait until the map is actually showing to + // render the value (we rely on the resize() callback being invoked + // at the appropriate time). + if (el.offsetWidth === 0 || el.offsetHeight === 0) { + map.leafletr.pendingRenderData = data; + return; + } + + map.leafletr.pendingRenderData = null; // Merge data options into defaults + + var options = _jquery2["default"].extend({ + zoomToLimits: "always" + }, data.options); + + if (!map.layerManager) { + map.controls = new _controlStore2["default"](map); + map.layerManager = new _layerManager2["default"](map); + } else { + map.controls.clear(); + map.layerManager.clear(); + } + + var explicitView = false; + + if (data.setView) { + explicitView = true; + map.setView.apply(map, data.setView); + } + + if (data.fitBounds) { + explicitView = true; + methods.fitBounds.apply(map, data.fitBounds); + } + + if (data.flyTo) { + if (!explicitView && !map.leafletr.hasRendered) { + // must be done to give a initial starting point + map.fitWorld(); + } + + explicitView = true; + map.flyTo.apply(map, data.flyTo); + } + + if (data.flyToBounds) { + if (!explicitView && !map.leafletr.hasRendered) { + // must be done to give a initial starting point + map.fitWorld(); + } + + explicitView = true; + methods.flyToBounds.apply(map, data.flyToBounds); + } + + if (data.options.center) { + explicitView = true; + } // Returns true if the zoomToLimits option says that the map should be + // zoomed to map elements. + + + function needsZoom() { + return options.zoomToLimits === "always" || options.zoomToLimits === "first" && !map.leafletr.hasRendered; + } + + if (!explicitView && needsZoom() && !map.getZoom()) { + if (data.limits && !_jquery2["default"].isEmptyObject(data.limits)) { + // Use the natural limits of what's being drawn on the map + // If the size of the bounding box is 0, leaflet gets all weird + var pad = 0.006; + + if (data.limits.lat[0] === data.limits.lat[1]) { + data.limits.lat[0] = data.limits.lat[0] - pad; + data.limits.lat[1] = data.limits.lat[1] + pad; + } + + if (data.limits.lng[0] === data.limits.lng[1]) { + data.limits.lng[0] = data.limits.lng[0] - pad; + data.limits.lng[1] = data.limits.lng[1] + pad; + } + + map.fitBounds([[data.limits.lat[0], data.limits.lng[0]], [data.limits.lat[1], data.limits.lng[1]]]); + } else { + map.fitWorld(); + } + } + + for (var i = 0; data.calls && i < data.calls.length; i++) { + var call = data.calls[i]; + if (methods[call.method]) methods[call.method].apply(map, call.args);else (0, _util.log)("Unknown method " + call.method); + } + + map.leafletr.hasRendered = true; + + if (_htmlwidgets2["default"].shinyMode) { + setTimeout(function () { + updateBounds(map); + }, 1); + } + }, + resize: function resize(width, height) { + if (map) { + map.invalidateSize(); + + if (map.leafletr.pendingRenderData) { + this.doRenderValue(map.leafletr.pendingRenderData, map); + } + } + } + }; + } +}); + +if (_htmlwidgets2["default"].shinyMode) { + _shiny2["default"].addCustomMessageHandler("leaflet-calls", function (data) { + var id = data.id; + var el = document.getElementById(id); + var map = el ? (0, _jquery2["default"])(el).data("leaflet-map") : null; + + if (!map) { + (0, _util.log)("Couldn't find map with id " + id); + return; + } // If the map has not rendered, stash the proposed `leafletProxy()` calls + // in `pendingRenderData.calls` to be run on display via `doRenderValue()`. + // This is necessary if the map has not been rendered. + // If new pendingRenderData is set via a new `leaflet()`, the previous calls will be discarded. + + + if (!map.leafletr.hasRendered) { + map.leafletr.pendingRenderData.calls = map.leafletr.pendingRenderData.calls.concat(data.calls); + return; + } + + for (var i = 0; i < data.calls.length; i++) { + var call = data.calls[i]; + var args = call.args; + + for (var _i = 0; _i < call.evals.length; _i++) { + window.HTMLWidgets.evaluateStringMember(args, call.evals[_i]); + } + + if (call.dependencies) { + _shiny2["default"].renderDependencies(call.dependencies); + } + + if (methods[call.method]) methods[call.method].apply(map, args);else (0, _util.log)("Unknown method " + call.method); + } + }); +} + + +},{"./cluster-layer-store":1,"./control-store":2,"./crs_utils":3,"./dataframe":4,"./fixup-default-icon":5,"./fixup-default-tooltip":6,"./fixup-url-protocol":7,"./global/htmlwidgets":8,"./global/jquery":9,"./global/leaflet":10,"./global/shiny":12,"./layer-manager":14,"./methods":15,"./util":17}],14:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = undefined; + +var _jquery = require("./global/jquery"); + +var _jquery2 = _interopRequireDefault(_jquery); + +var _leaflet = require("./global/leaflet"); + +var _leaflet2 = _interopRequireDefault(_leaflet); + +var _util = require("./util"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var LayerManager = /*#__PURE__*/function () { + function LayerManager(map) { + _classCallCheck(this, LayerManager); + + this._map = map; // BEGIN layer indices + // {: {: layer}} + + this._byGroup = {}; // {: {: layer}} + + this._byCategory = {}; // {: layer} + + this._byLayerId = {}; // {: { + // "group": , + // "layerId": , + // "category": , + // "container": + // } + // } + + this._byStamp = {}; // {: {: [, , ...], ...}} + + this._byCrosstalkGroup = {}; // END layer indices + // {: L.layerGroup} + + this._categoryContainers = {}; // {: L.layerGroup} + + this._groupContainers = {}; + } + + _createClass(LayerManager, [{ + key: "addLayer", + value: function addLayer(layer, category, layerId, group, ctGroup, ctKey) { + var _this = this; + + // Was a group provided? + var hasId = typeof layerId === "string"; + var grouped = typeof group === "string"; + var stamp = _leaflet2["default"].Util.stamp(layer) + ""; // This will be the default layer group to add the layer to. + // We may overwrite this let before using it (i.e. if a group is assigned). + // This one liner creates the _categoryContainers[category] entry if it + // doesn't already exist. + + var container = this._categoryContainers[category] = this._categoryContainers[category] || _leaflet2["default"].layerGroup().addTo(this._map); + + var oldLayer = null; + + if (hasId) { + // First, remove any layer with the same category and layerId + var prefixedLayerId = this._layerIdKey(category, layerId); + + oldLayer = this._byLayerId[prefixedLayerId]; + + if (oldLayer) { + this._removeLayer(oldLayer); + } // Update layerId index + + + this._byLayerId[prefixedLayerId] = layer; + } // Update group index + + + if (grouped) { + this._byGroup[group] = this._byGroup[group] || {}; + this._byGroup[group][stamp] = layer; // Since a group is assigned, don't add the layer to the category's layer + // group; instead, use the group's layer group. + // This one liner creates the _groupContainers[group] entry if it doesn't + // already exist. + + container = this.getLayerGroup(group, true); + } // Update category index + + + this._byCategory[category] = this._byCategory[category] || {}; + this._byCategory[category][stamp] = layer; // Update stamp index + + var layerInfo = this._byStamp[stamp] = { + layer: layer, + group: group, + ctGroup: ctGroup, + ctKey: ctKey, + layerId: layerId, + category: category, + container: container, + hidden: false + }; // Update crosstalk group index + + if (ctGroup) { + if (layer.setStyle) { + // Need to save this info so we know what to set opacity to later + layer.options.origOpacity = typeof layer.options.opacity !== "undefined" ? layer.options.opacity : 0.5; + layer.options.origFillOpacity = typeof layer.options.fillOpacity !== "undefined" ? layer.options.fillOpacity : 0.2; + } + + var ctg = this._byCrosstalkGroup[ctGroup]; + + if (!ctg) { + ctg = this._byCrosstalkGroup[ctGroup] = {}; + var crosstalk = global.crosstalk; + + var handleFilter = function handleFilter(e) { + if (!e.value) { + var groupKeys = Object.keys(ctg); + + for (var i = 0; i < groupKeys.length; i++) { + var key = groupKeys[i]; + var _layerInfo = _this._byStamp[ctg[key]]; + + _this._setVisibility(_layerInfo, true); + } + } else { + var selectedKeys = {}; + + for (var _i = 0; _i < e.value.length; _i++) { + selectedKeys[e.value[_i]] = true; + } + + var _groupKeys = Object.keys(ctg); + + for (var _i2 = 0; _i2 < _groupKeys.length; _i2++) { + var _key = _groupKeys[_i2]; + var _layerInfo2 = _this._byStamp[ctg[_key]]; + + _this._setVisibility(_layerInfo2, selectedKeys[_groupKeys[_i2]]); + } + } + }; + + var filterHandle = new crosstalk.FilterHandle(ctGroup); + filterHandle.on("change", handleFilter); + + var handleSelection = function handleSelection(e) { + if (!e.value || !e.value.length) { + var groupKeys = Object.keys(ctg); + + for (var i = 0; i < groupKeys.length; i++) { + var key = groupKeys[i]; + var _layerInfo3 = _this._byStamp[ctg[key]]; + + _this._setOpacity(_layerInfo3, 1.0); + } + } else { + var selectedKeys = {}; + + for (var _i3 = 0; _i3 < e.value.length; _i3++) { + selectedKeys[e.value[_i3]] = true; + } + + var _groupKeys2 = Object.keys(ctg); + + for (var _i4 = 0; _i4 < _groupKeys2.length; _i4++) { + var _key2 = _groupKeys2[_i4]; + var _layerInfo4 = _this._byStamp[ctg[_key2]]; + + _this._setOpacity(_layerInfo4, selectedKeys[_groupKeys2[_i4]] ? 1.0 : 0.2); + } + } + }; + + var selHandle = new crosstalk.SelectionHandle(ctGroup); + selHandle.on("change", handleSelection); + setTimeout(function () { + handleFilter({ + value: filterHandle.filteredKeys + }); + handleSelection({ + value: selHandle.value + }); + }, 100); + } + + if (!ctg[ctKey]) ctg[ctKey] = []; + ctg[ctKey].push(stamp); + } // Add to container + + + if (!layerInfo.hidden) container.addLayer(layer); + return oldLayer; + } + }, { + key: "brush", + value: function brush(bounds, extraInfo) { + var _this2 = this; + + /* eslint-disable no-console */ + // For each Crosstalk group... + Object.keys(this._byCrosstalkGroup).forEach(function (ctGroupName) { + var ctg = _this2._byCrosstalkGroup[ctGroupName]; + var selection = []; // ...iterate over each Crosstalk key (each of which may have multiple + // layers)... + + Object.keys(ctg).forEach(function (ctKey) { + // ...and for each layer... + ctg[ctKey].forEach(function (stamp) { + var layerInfo = _this2._byStamp[stamp]; // ...if it's something with a point... + + if (layerInfo.layer.getLatLng) { + // ... and it's inside the selection bounds... + // TODO: Use pixel containment, not lat/lng containment + if (bounds.contains(layerInfo.layer.getLatLng())) { + // ...add the key to the selection. + selection.push(ctKey); + } + } + }); + }); + new global.crosstalk.SelectionHandle(ctGroupName).set(selection, extraInfo); + }); + } + }, { + key: "unbrush", + value: function unbrush(extraInfo) { + Object.keys(this._byCrosstalkGroup).forEach(function (ctGroupName) { + new global.crosstalk.SelectionHandle(ctGroupName).clear(extraInfo); + }); + } + }, { + key: "_setVisibility", + value: function _setVisibility(layerInfo, visible) { + if (layerInfo.hidden ^ visible) { + return; + } else if (visible) { + layerInfo.container.addLayer(layerInfo.layer); + layerInfo.hidden = false; + } else { + layerInfo.container.removeLayer(layerInfo.layer); + layerInfo.hidden = true; + } + } + }, { + key: "_setOpacity", + value: function _setOpacity(layerInfo, opacity) { + if (layerInfo.layer.setOpacity) { + layerInfo.layer.setOpacity(opacity); + } else if (layerInfo.layer.setStyle) { + layerInfo.layer.setStyle({ + opacity: opacity * layerInfo.layer.options.origOpacity, + fillOpacity: opacity * layerInfo.layer.options.origFillOpacity + }); + } + } + }, { + key: "getLayer", + value: function getLayer(category, layerId) { + return this._byLayerId[this._layerIdKey(category, layerId)]; + } + }, { + key: "removeLayer", + value: function removeLayer(category, layerIds) { + var _this3 = this; + + // Find layer info + _jquery2["default"].each((0, _util.asArray)(layerIds), function (i, layerId) { + var layer = _this3._byLayerId[_this3._layerIdKey(category, layerId)]; + + if (layer) { + _this3._removeLayer(layer); + } + }); + } + }, { + key: "clearLayers", + value: function clearLayers(category) { + var _this4 = this; + + // Find all layers in _byCategory[category] + var catTable = this._byCategory[category]; + + if (!catTable) { + return false; + } // Remove all layers. Make copy of keys to avoid mutating the collection + // behind the iterator you're accessing. + + + var stamps = []; + + _jquery2["default"].each(catTable, function (k, v) { + stamps.push(k); + }); + + _jquery2["default"].each(stamps, function (i, stamp) { + _this4._removeLayer(stamp); + }); + } + }, { + key: "getLayerGroup", + value: function getLayerGroup(group, ensureExists) { + var g = this._groupContainers[group]; + + if (ensureExists && !g) { + this._byGroup[group] = this._byGroup[group] || {}; + g = this._groupContainers[group] = _leaflet2["default"].featureGroup(); + g.groupname = group; + g.addTo(this._map); + } + + return g; + } + }, { + key: "getGroupNameFromLayerGroup", + value: function getGroupNameFromLayerGroup(layerGroup) { + return layerGroup.groupname; + } + }, { + key: "getVisibleGroups", + value: function getVisibleGroups() { + var _this5 = this; + + var result = []; + + _jquery2["default"].each(this._groupContainers, function (k, v) { + if (_this5._map.hasLayer(v)) { + result.push(k); + } + }); + + return result; + } + }, { + key: "getAllGroupNames", + value: function getAllGroupNames() { + var result = []; + + _jquery2["default"].each(this._groupContainers, function (k, v) { + result.push(k); + }); + + return result; + } + }, { + key: "clearGroup", + value: function clearGroup(group) { + var _this6 = this; + + // Find all layers in _byGroup[group] + var groupTable = this._byGroup[group]; + + if (!groupTable) { + return false; + } // Remove all layers. Make copy of keys to avoid mutating the collection + // behind the iterator you're accessing. + + + var stamps = []; + + _jquery2["default"].each(groupTable, function (k, v) { + stamps.push(k); + }); + + _jquery2["default"].each(stamps, function (i, stamp) { + _this6._removeLayer(stamp); + }); + } + }, { + key: "clear", + value: function clear() { + function clearLayerGroup(key, layerGroup) { + layerGroup.clearLayers(); + } // Clear all indices and layerGroups + + + this._byGroup = {}; + this._byCategory = {}; + this._byLayerId = {}; + this._byStamp = {}; + this._byCrosstalkGroup = {}; + + _jquery2["default"].each(this._categoryContainers, clearLayerGroup); + + this._categoryContainers = {}; + + _jquery2["default"].each(this._groupContainers, clearLayerGroup); + + this._groupContainers = {}; + } + }, { + key: "_removeLayer", + value: function _removeLayer(layer) { + var stamp; + + if (typeof layer === "string") { + stamp = layer; + } else { + stamp = _leaflet2["default"].Util.stamp(layer); + } + + var layerInfo = this._byStamp[stamp]; + + if (!layerInfo) { + return false; + } + + layerInfo.container.removeLayer(stamp); + + if (typeof layerInfo.group === "string") { + delete this._byGroup[layerInfo.group][stamp]; + } + + if (typeof layerInfo.layerId === "string") { + delete this._byLayerId[this._layerIdKey(layerInfo.category, layerInfo.layerId)]; + } + + delete this._byCategory[layerInfo.category][stamp]; + delete this._byStamp[stamp]; + + if (layerInfo.ctGroup) { + var ctGroup = this._byCrosstalkGroup[layerInfo.ctGroup]; + var layersForKey = ctGroup[layerInfo.ctKey]; + var idx = layersForKey ? layersForKey.indexOf(stamp) : -1; + + if (idx >= 0) { + if (layersForKey.length === 1) { + delete ctGroup[layerInfo.ctKey]; + } else { + layersForKey.splice(idx, 1); + } + } + } + } + }, { + key: "_layerIdKey", + value: function _layerIdKey(category, layerId) { + return category + "\n" + layerId; + } + }]); + + return LayerManager; +}(); + +exports["default"] = LayerManager; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./global/jquery":9,"./global/leaflet":10,"./util":17}],15:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _jquery = require("./global/jquery"); + +var _jquery2 = _interopRequireDefault(_jquery); + +var _leaflet = require("./global/leaflet"); + +var _leaflet2 = _interopRequireDefault(_leaflet); + +var _shiny = require("./global/shiny"); + +var _shiny2 = _interopRequireDefault(_shiny); + +var _htmlwidgets = require("./global/htmlwidgets"); + +var _htmlwidgets2 = _interopRequireDefault(_htmlwidgets); + +var _util = require("./util"); + +var _crs_utils = require("./crs_utils"); + +var _dataframe = require("./dataframe"); + +var _dataframe2 = _interopRequireDefault(_dataframe); + +var _clusterLayerStore = require("./cluster-layer-store"); + +var _clusterLayerStore2 = _interopRequireDefault(_clusterLayerStore); + +var _mipmapper = require("./mipmapper"); + +var _mipmapper2 = _interopRequireDefault(_mipmapper); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var methods = {}; +exports["default"] = methods; + +function mouseHandler(mapId, layerId, group, eventName, extraInfo) { + return function (e) { + if (!_htmlwidgets2["default"].shinyMode) return; + var latLng = e.target.getLatLng ? e.target.getLatLng() : e.latlng; + + if (latLng) { + // retrieve only lat, lon values to remove prototype + // and extra parameters added by 3rd party modules + // these objects are for json serialization, not javascript + var latLngVal = _leaflet2["default"].latLng(latLng); // make sure it has consistent shape + + + latLng = { + lat: latLngVal.lat, + lng: latLngVal.lng + }; + } + + var eventInfo = _jquery2["default"].extend({ + id: layerId, + ".nonce": Math.random() // force reactivity + + }, group !== null ? { + group: group + } : null, latLng, extraInfo); + + _shiny2["default"].onInputChange(mapId + "_" + eventName, eventInfo); + }; +} + +methods.mouseHandler = mouseHandler; + +methods.clearGroup = function (group) { + var _this = this; + + _jquery2["default"].each((0, _util.asArray)(group), function (i, v) { + _this.layerManager.clearGroup(v); + }); +}; + +methods.setView = function (center, zoom, options) { + this.setView(center, zoom, options); +}; + +methods.fitBounds = function (lat1, lng1, lat2, lng2, options) { + this.fitBounds([[lat1, lng1], [lat2, lng2]], options); +}; + +methods.flyTo = function (center, zoom, options) { + this.flyTo(center, zoom, options); +}; + +methods.flyToBounds = function (lat1, lng1, lat2, lng2, options) { + this.flyToBounds([[lat1, lng1], [lat2, lng2]], options); +}; + +methods.setMaxBounds = function (lat1, lng1, lat2, lng2) { + this.setMaxBounds([[lat1, lng1], [lat2, lng2]]); +}; + +methods.addPopups = function (lat, lng, popup, layerId, group, options) { + var _this2 = this; + + var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("popup", popup).col("layerId", layerId).col("group", group).cbind(options); + + var _loop = function _loop(i) { + if (_jquery2["default"].isNumeric(df.get(i, "lat")) && _jquery2["default"].isNumeric(df.get(i, "lng"))) { + (function () { + var popup = _leaflet2["default"].popup(df.get(i)).setLatLng([df.get(i, "lat"), df.get(i, "lng")]).setContent(df.get(i, "popup")); + + var thisId = df.get(i, "layerId"); + var thisGroup = df.get(i, "group"); + this.layerManager.addLayer(popup, "popup", thisId, thisGroup); + }).call(_this2); + } + }; + + for (var i = 0; i < df.nrow(); i++) { + _loop(i); + } +}; + +methods.removePopup = function (layerId) { + this.layerManager.removeLayer("popup", layerId); +}; + +methods.clearPopups = function () { + this.layerManager.clearLayers("popup"); +}; + +methods.addTiles = function (urlTemplate, layerId, group, options) { + this.layerManager.addLayer(_leaflet2["default"].tileLayer(urlTemplate, options), "tile", layerId, group); +}; + +methods.removeTiles = function (layerId) { + this.layerManager.removeLayer("tile", layerId); +}; + +methods.clearTiles = function () { + this.layerManager.clearLayers("tile"); +}; + +methods.addWMSTiles = function (baseUrl, layerId, group, options) { + if (options && options.crs) { + options.crs = (0, _crs_utils.getCRS)(options.crs); + } + + this.layerManager.addLayer(_leaflet2["default"].tileLayer.wms(baseUrl, options), "tile", layerId, group); +}; // Given: +// {data: ["a", "b", "c"], index: [0, 1, 0, 2]} +// returns: +// ["a", "b", "a", "c"] + + +function unpackStrings(iconset) { + if (!iconset) { + return iconset; + } + + if (typeof iconset.index === "undefined") { + return iconset; + } + + iconset.data = (0, _util.asArray)(iconset.data); + iconset.index = (0, _util.asArray)(iconset.index); + return _jquery2["default"].map(iconset.index, function (e, i) { + return iconset.data[e]; + }); +} + +function addMarkers(map, df, group, clusterOptions, clusterId, markerFunc) { + (function () { + var _this3 = this; + + var clusterGroup = this.layerManager.getLayer("cluster", clusterId), + cluster = clusterOptions !== null; + + if (cluster && !clusterGroup) { + clusterGroup = _leaflet2["default"].markerClusterGroup.layerSupport(clusterOptions); + + if (clusterOptions.freezeAtZoom) { + var freezeAtZoom = clusterOptions.freezeAtZoom; + delete clusterOptions.freezeAtZoom; + clusterGroup.freezeAtZoom(freezeAtZoom); + } + + clusterGroup.clusterLayerStore = new _clusterLayerStore2["default"](clusterGroup); + } + + var extraInfo = cluster ? { + clusterId: clusterId + } : {}; + + var _loop2 = function _loop2(i) { + if (_jquery2["default"].isNumeric(df.get(i, "lat")) && _jquery2["default"].isNumeric(df.get(i, "lng"))) { + (function () { + var marker = markerFunc(df, i); + var thisId = df.get(i, "layerId"); + var thisGroup = cluster ? null : df.get(i, "group"); + + if (cluster) { + clusterGroup.clusterLayerStore.add(marker, thisId); + } else { + this.layerManager.addLayer(marker, "marker", thisId, thisGroup, df.get(i, "ctGroup", true), df.get(i, "ctKey", true)); + } + + var popup = df.get(i, "popup"); + var popupOptions = df.get(i, "popupOptions"); + + if (popup !== null) { + if (popupOptions !== null) { + marker.bindPopup(popup, popupOptions); + } else { + marker.bindPopup(popup); + } + } + + var label = df.get(i, "label"); + var labelOptions = df.get(i, "labelOptions"); + + if (label !== null) { + if (labelOptions !== null) { + if (labelOptions.permanent) { + marker.bindTooltip(label, labelOptions).openTooltip(); + } else { + marker.bindTooltip(label, labelOptions); + } + } else { + marker.bindTooltip(label); + } + } + + marker.on("click", mouseHandler(this.id, thisId, thisGroup, "marker_click", extraInfo), this); + marker.on("mouseover", mouseHandler(this.id, thisId, thisGroup, "marker_mouseover", extraInfo), this); + marker.on("mouseout", mouseHandler(this.id, thisId, thisGroup, "marker_mouseout", extraInfo), this); + marker.on("dragend", mouseHandler(this.id, thisId, thisGroup, "marker_dragend", extraInfo), this); + }).call(_this3); + } + }; + + for (var i = 0; i < df.nrow(); i++) { + _loop2(i); + } + + if (cluster) { + this.layerManager.addLayer(clusterGroup, "cluster", clusterId, group); + } + }).call(map); +} + +methods.addGenericMarkers = addMarkers; + +methods.addMarkers = function (lat, lng, icon, layerId, group, options, popup, popupOptions, clusterOptions, clusterId, label, labelOptions, crosstalkOptions) { + var icondf; + var getIcon; + + if (icon) { + // Unpack icons + icon.iconUrl = unpackStrings(icon.iconUrl); + icon.iconRetinaUrl = unpackStrings(icon.iconRetinaUrl); + icon.shadowUrl = unpackStrings(icon.shadowUrl); + icon.shadowRetinaUrl = unpackStrings(icon.shadowRetinaUrl); // This cbinds the icon URLs and any other icon options; they're all + // present on the icon object. + + icondf = new _dataframe2["default"]().cbind(icon); // Constructs an icon from a specified row of the icon dataframe. + + getIcon = function getIcon(i) { + var opts = icondf.get(i); + + if (!opts.iconUrl) { + return new _leaflet2["default"].Icon.Default(); + } // Composite options (like points or sizes) are passed from R with each + // individual component as its own option. We need to combine them now + // into their composite form. + + + if (opts.iconWidth) { + opts.iconSize = [opts.iconWidth, opts.iconHeight]; + } + + if (opts.shadowWidth) { + opts.shadowSize = [opts.shadowWidth, opts.shadowHeight]; + } + + if (opts.iconAnchorX) { + opts.iconAnchor = [opts.iconAnchorX, opts.iconAnchorY]; + } + + if (opts.shadowAnchorX) { + opts.shadowAnchor = [opts.shadowAnchorX, opts.shadowAnchorY]; + } + + if (opts.popupAnchorX) { + opts.popupAnchor = [opts.popupAnchorX, opts.popupAnchorY]; + } + + return new _leaflet2["default"].Icon(opts); + }; + } + + if (!(_jquery2["default"].isEmptyObject(lat) || _jquery2["default"].isEmptyObject(lng)) || _jquery2["default"].isNumeric(lat) && _jquery2["default"].isNumeric(lng)) { + var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).cbind(options).cbind(crosstalkOptions || {}); + if (icon) icondf.effectiveLength = df.nrow(); + addMarkers(this, df, group, clusterOptions, clusterId, function (df, i) { + var options = df.get(i); + if (icon) options.icon = getIcon(i); + return _leaflet2["default"].marker([df.get(i, "lat"), df.get(i, "lng")], options); + }); + } +}; + +methods.addAwesomeMarkers = function (lat, lng, icon, layerId, group, options, popup, popupOptions, clusterOptions, clusterId, label, labelOptions, crosstalkOptions) { + var icondf; + var getIcon; + + if (icon) { + // This cbinds the icon URLs and any other icon options; they're all + // present on the icon object. + icondf = new _dataframe2["default"]().cbind(icon); // Constructs an icon from a specified row of the icon dataframe. + + getIcon = function getIcon(i) { + var opts = icondf.get(i); + + if (!opts) { + return new _leaflet2["default"].AwesomeMarkers.icon(); + } + + if (opts.squareMarker) { + opts.className = "awesome-marker awesome-marker-square"; + } + + return new _leaflet2["default"].AwesomeMarkers.icon(opts); + }; + } + + if (!(_jquery2["default"].isEmptyObject(lat) || _jquery2["default"].isEmptyObject(lng)) || _jquery2["default"].isNumeric(lat) && _jquery2["default"].isNumeric(lng)) { + var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).cbind(options).cbind(crosstalkOptions || {}); + if (icon) icondf.effectiveLength = df.nrow(); + addMarkers(this, df, group, clusterOptions, clusterId, function (df, i) { + var options = df.get(i); + if (icon) options.icon = getIcon(i); + return _leaflet2["default"].marker([df.get(i, "lat"), df.get(i, "lng")], options); + }); + } +}; + +function addLayers(map, category, df, layerFunc) { + var _loop3 = function _loop3(i) { + (function () { + var layer = layerFunc(df, i); + + if (!_jquery2["default"].isEmptyObject(layer)) { + var thisId = df.get(i, "layerId"); + var thisGroup = df.get(i, "group"); + this.layerManager.addLayer(layer, category, thisId, thisGroup, df.get(i, "ctGroup", true), df.get(i, "ctKey", true)); + + if (layer.bindPopup) { + var popup = df.get(i, "popup"); + var popupOptions = df.get(i, "popupOptions"); + + if (popup !== null) { + if (popupOptions !== null) { + layer.bindPopup(popup, popupOptions); + } else { + layer.bindPopup(popup); + } + } + } + + if (layer.bindTooltip) { + var label = df.get(i, "label"); + var labelOptions = df.get(i, "labelOptions"); + + if (label !== null) { + if (labelOptions !== null) { + layer.bindTooltip(label, labelOptions); + } else { + layer.bindTooltip(label); + } + } + } + + layer.on("click", mouseHandler(this.id, thisId, thisGroup, category + "_click"), this); + layer.on("mouseover", mouseHandler(this.id, thisId, thisGroup, category + "_mouseover"), this); + layer.on("mouseout", mouseHandler(this.id, thisId, thisGroup, category + "_mouseout"), this); + var highlightStyle = df.get(i, "highlightOptions"); + + if (!_jquery2["default"].isEmptyObject(highlightStyle)) { + var defaultStyle = {}; + + _jquery2["default"].each(highlightStyle, function (k, v) { + if (k != "bringToFront" && k != "sendToBack") { + if (df.get(i, k)) { + defaultStyle[k] = df.get(i, k); + } + } + }); + + layer.on("mouseover", function (e) { + this.setStyle(highlightStyle); + + if (highlightStyle.bringToFront) { + this.bringToFront(); + } + }); + layer.on("mouseout", function (e) { + this.setStyle(defaultStyle); + + if (highlightStyle.sendToBack) { + this.bringToBack(); + } + }); + } + } + }).call(map); + }; + + for (var i = 0; i < df.nrow(); i++) { + _loop3(i); + } +} + +methods.addGenericLayers = addLayers; + +methods.addCircles = function (lat, lng, radius, layerId, group, options, popup, popupOptions, label, labelOptions, highlightOptions, crosstalkOptions) { + if (!(_jquery2["default"].isEmptyObject(lat) || _jquery2["default"].isEmptyObject(lng)) || _jquery2["default"].isNumeric(lat) && _jquery2["default"].isNumeric(lng)) { + var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("radius", radius).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).col("highlightOptions", highlightOptions).cbind(options).cbind(crosstalkOptions || {}); + addLayers(this, "shape", df, function (df, i) { + if (_jquery2["default"].isNumeric(df.get(i, "lat")) && _jquery2["default"].isNumeric(df.get(i, "lng")) && _jquery2["default"].isNumeric(df.get(i, "radius"))) { + return _leaflet2["default"].circle([df.get(i, "lat"), df.get(i, "lng")], df.get(i, "radius"), df.get(i)); + } else { + return null; + } + }); + } +}; + +methods.addCircleMarkers = function (lat, lng, radius, layerId, group, options, clusterOptions, clusterId, popup, popupOptions, label, labelOptions, crosstalkOptions) { + if (!(_jquery2["default"].isEmptyObject(lat) || _jquery2["default"].isEmptyObject(lng)) || _jquery2["default"].isNumeric(lat) && _jquery2["default"].isNumeric(lng)) { + var df = new _dataframe2["default"]().col("lat", lat).col("lng", lng).col("radius", radius).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).cbind(crosstalkOptions || {}).cbind(options); + addMarkers(this, df, group, clusterOptions, clusterId, function (df, i) { + return _leaflet2["default"].circleMarker([df.get(i, "lat"), df.get(i, "lng")], df.get(i)); + }); + } +}; +/* + * @param lat Array of arrays of latitude coordinates for polylines + * @param lng Array of arrays of longitude coordinates for polylines + */ + + +methods.addPolylines = function (polygons, layerId, group, options, popup, popupOptions, label, labelOptions, highlightOptions) { + if (polygons.length > 0) { + var df = new _dataframe2["default"]().col("shapes", polygons).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).col("highlightOptions", highlightOptions).cbind(options); + addLayers(this, "shape", df, function (df, i) { + var shapes = df.get(i, "shapes"); + shapes = shapes.map(function (shape) { + return _htmlwidgets2["default"].dataframeToD3(shape[0]); + }); + + if (shapes.length > 1) { + return _leaflet2["default"].polyline(shapes, df.get(i)); + } else { + return _leaflet2["default"].polyline(shapes[0], df.get(i)); + } + }); + } +}; + +methods.removeMarker = function (layerId) { + this.layerManager.removeLayer("marker", layerId); +}; + +methods.clearMarkers = function () { + this.layerManager.clearLayers("marker"); +}; + +methods.removeMarkerCluster = function (layerId) { + this.layerManager.removeLayer("cluster", layerId); +}; + +methods.removeMarkerFromCluster = function (layerId, clusterId) { + var cluster = this.layerManager.getLayer("cluster", clusterId); + if (!cluster) return; + cluster.clusterLayerStore.remove(layerId); +}; + +methods.clearMarkerClusters = function () { + this.layerManager.clearLayers("cluster"); +}; + +methods.removeShape = function (layerId) { + this.layerManager.removeLayer("shape", layerId); +}; + +methods.clearShapes = function () { + this.layerManager.clearLayers("shape"); +}; + +methods.addRectangles = function (lat1, lng1, lat2, lng2, layerId, group, options, popup, popupOptions, label, labelOptions, highlightOptions) { + var df = new _dataframe2["default"]().col("lat1", lat1).col("lng1", lng1).col("lat2", lat2).col("lng2", lng2).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).col("highlightOptions", highlightOptions).cbind(options); + addLayers(this, "shape", df, function (df, i) { + if (_jquery2["default"].isNumeric(df.get(i, "lat1")) && _jquery2["default"].isNumeric(df.get(i, "lng1")) && _jquery2["default"].isNumeric(df.get(i, "lat2")) && _jquery2["default"].isNumeric(df.get(i, "lng2"))) { + return _leaflet2["default"].rectangle([[df.get(i, "lat1"), df.get(i, "lng1")], [df.get(i, "lat2"), df.get(i, "lng2")]], df.get(i)); + } else { + return null; + } + }); +}; +/* + * @param lat Array of arrays of latitude coordinates for polygons + * @param lng Array of arrays of longitude coordinates for polygons + */ + + +methods.addPolygons = function (polygons, layerId, group, options, popup, popupOptions, label, labelOptions, highlightOptions) { + if (polygons.length > 0) { + var df = new _dataframe2["default"]().col("shapes", polygons).col("layerId", layerId).col("group", group).col("popup", popup).col("popupOptions", popupOptions).col("label", label).col("labelOptions", labelOptions).col("highlightOptions", highlightOptions).cbind(options); + addLayers(this, "shape", df, function (df, i) { + // This code used to use L.multiPolygon, but that caused + // double-click on a multipolygon to fail to zoom in on the + // map. Surprisingly, putting all the rings in a single + // polygon seems to still work; complicated multipolygons + // are still rendered correctly. + var shapes = df.get(i, "shapes").map(function (polygon) { + return polygon.map(_htmlwidgets2["default"].dataframeToD3); + }).reduce(function (acc, val) { + return acc.concat(val); + }, []); + return _leaflet2["default"].polygon(shapes, df.get(i)); + }); + } +}; + +methods.addGeoJSON = function (data, layerId, group, style) { + // This time, self is actually needed because the callbacks below need + // to access both the inner and outer senses of "this" + var self = this; + + if (typeof data === "string") { + data = JSON.parse(data); + } + + var globalStyle = _jquery2["default"].extend({}, style, data.style || {}); + + var gjlayer = _leaflet2["default"].geoJson(data, { + style: function style(feature) { + if (feature.style || feature.properties.style) { + return _jquery2["default"].extend({}, globalStyle, feature.style, feature.properties.style); + } else { + return globalStyle; + } + }, + onEachFeature: function onEachFeature(feature, layer) { + var extraInfo = { + featureId: feature.id, + properties: feature.properties + }; + var popup = feature.properties ? feature.properties.popup : null; + if (typeof popup !== "undefined" && popup !== null) layer.bindPopup(popup); + layer.on("click", mouseHandler(self.id, layerId, group, "geojson_click", extraInfo), this); + layer.on("mouseover", mouseHandler(self.id, layerId, group, "geojson_mouseover", extraInfo), this); + layer.on("mouseout", mouseHandler(self.id, layerId, group, "geojson_mouseout", extraInfo), this); + } + }); + + this.layerManager.addLayer(gjlayer, "geojson", layerId, group); +}; + +methods.removeGeoJSON = function (layerId) { + this.layerManager.removeLayer("geojson", layerId); +}; + +methods.clearGeoJSON = function () { + this.layerManager.clearLayers("geojson"); +}; + +methods.addTopoJSON = function (data, layerId, group, style) { + // This time, self is actually needed because the callbacks below need + // to access both the inner and outer senses of "this" + var self = this; + + if (typeof data === "string") { + data = JSON.parse(data); + } + + var globalStyle = _jquery2["default"].extend({}, style, data.style || {}); + + var gjlayer = _leaflet2["default"].geoJson(null, { + style: function style(feature) { + if (feature.style || feature.properties.style) { + return _jquery2["default"].extend({}, globalStyle, feature.style, feature.properties.style); + } else { + return globalStyle; + } + }, + onEachFeature: function onEachFeature(feature, layer) { + var extraInfo = { + featureId: feature.id, + properties: feature.properties + }; + var popup = feature.properties.popup; + if (typeof popup !== "undefined" && popup !== null) layer.bindPopup(popup); + layer.on("click", mouseHandler(self.id, layerId, group, "topojson_click", extraInfo), this); + layer.on("mouseover", mouseHandler(self.id, layerId, group, "topojson_mouseover", extraInfo), this); + layer.on("mouseout", mouseHandler(self.id, layerId, group, "topojson_mouseout", extraInfo), this); + } + }); + + global.omnivore.topojson.parse(data, null, gjlayer); + this.layerManager.addLayer(gjlayer, "topojson", layerId, group); +}; + +methods.removeTopoJSON = function (layerId) { + this.layerManager.removeLayer("topojson", layerId); +}; + +methods.clearTopoJSON = function () { + this.layerManager.clearLayers("topojson"); +}; + +methods.addControl = function (html, position, layerId, classes) { + function onAdd(map) { + var div = _leaflet2["default"].DomUtil.create("div", classes); + + if (typeof layerId !== "undefined" && layerId !== null) { + div.setAttribute("id", layerId); + } + + this._div = div; // It's possible for window.Shiny to be true but Shiny.initializeInputs to + // not be, when a static leaflet widget is included as part of the shiny + // UI directly (not through leafletOutput or uiOutput). In this case we + // don't do the normal Shiny stuff as that will all happen when Shiny + // itself loads and binds the entire doc. + + if (window.Shiny && _shiny2["default"].initializeInputs) { + _shiny2["default"].renderHtml(html, this._div); + + _shiny2["default"].initializeInputs(this._div); + + _shiny2["default"].bindAll(this._div); + } else { + this._div.innerHTML = html; + } + + return this._div; + } + + function onRemove(map) { + if (window.Shiny && _shiny2["default"].unbindAll) { + _shiny2["default"].unbindAll(this._div); + } + } + + var Control = _leaflet2["default"].Control.extend({ + options: { + position: position + }, + onAdd: onAdd, + onRemove: onRemove + }); + + this.controls.add(new Control(), layerId, html); +}; + +methods.addCustomControl = function (control, layerId) { + this.controls.add(control, layerId); +}; + +methods.removeControl = function (layerId) { + this.controls.remove(layerId); +}; + +methods.getControl = function (layerId) { + this.controls.get(layerId); +}; + +methods.clearControls = function () { + this.controls.clear(); +}; + +methods.addLegend = function (options) { + var legend = _leaflet2["default"].control({ + position: options.position + }); + + var gradSpan; + + legend.onAdd = function (map) { + var div = _leaflet2["default"].DomUtil.create("div", options.className), + colors = options.colors, + labels = options.labels, + legendHTML = ""; + + if (options.type === "numeric") { + // # Formatting constants. + var singleBinHeight = 20; // The distance between tick marks, in px + + var vMargin = 8; // If 1st tick mark starts at top of gradient, how + // many extra px are needed for the top half of the + // 1st label? (ditto for last tick mark/label) + + var tickWidth = 4; // How wide should tick marks be, in px? + + var labelPadding = 6; // How much distance to reserve for tick mark? + // (Must be >= tickWidth) + // # Derived formatting parameters. + // What's the height of a single bin, in percentage (of gradient height)? + // It might not just be 1/(n-1), if the gradient extends past the tick + // marks (which can be the case for pretty cut points). + + var singleBinPct = (options.extra.p_n - options.extra.p_1) / (labels.length - 1); // Each bin is `singleBinHeight` high. How tall is the gradient? + + var totalHeight = 1 / singleBinPct * singleBinHeight + 1; // How far should the first tick be shifted down, relative to the top + // of the gradient? + + var tickOffset = singleBinHeight / singleBinPct * options.extra.p_1; + gradSpan = (0, _jquery2["default"])("").css({ + "background": "linear-gradient(" + colors + ")", + "opacity": options.opacity, + "height": totalHeight + "px", + "width": "18px", + "display": "block", + "margin-top": vMargin + "px" + }); + var leftDiv = (0, _jquery2["default"])("
").css("float", "left"), + rightDiv = (0, _jquery2["default"])("
").css("float", "left"); + leftDiv.append(gradSpan); + (0, _jquery2["default"])(div).append(leftDiv).append(rightDiv).append((0, _jquery2["default"])("
")); // Have to attach the div to the body at this early point, so that the + // svg text getComputedTextLength() actually works, below. + + document.body.appendChild(div); + var ns = "http://www.w3.org/2000/svg"; + var svg = document.createElementNS(ns, "svg"); + rightDiv.append(svg); + var g = document.createElementNS(ns, "g"); + (0, _jquery2["default"])(g).attr("transform", "translate(0, " + vMargin + ")"); + svg.appendChild(g); // max label width needed to set width of svg, and right-justify text + + var maxLblWidth = 0; // Create tick marks and labels + + _jquery2["default"].each(labels, function (i, label) { + var y = tickOffset + i * singleBinHeight + 0.5; + var thisLabel = document.createElementNS(ns, "text"); + (0, _jquery2["default"])(thisLabel).text(labels[i]).attr("y", y).attr("dx", labelPadding).attr("dy", "0.5ex"); + g.appendChild(thisLabel); + maxLblWidth = Math.max(maxLblWidth, thisLabel.getComputedTextLength()); + var thisTick = document.createElementNS(ns, "line"); + (0, _jquery2["default"])(thisTick).attr("x1", 0).attr("x2", tickWidth).attr("y1", y).attr("y2", y).attr("stroke-width", 1); + g.appendChild(thisTick); + }); // Now that we know the max label width, we can right-justify + + + (0, _jquery2["default"])(svg).find("text").attr("dx", labelPadding + maxLblWidth).attr("text-anchor", "end"); // Final size for + + (0, _jquery2["default"])(svg).css({ + width: maxLblWidth + labelPadding + "px", + height: totalHeight + vMargin * 2 + "px" + }); + + if (options.na_color && _jquery2["default"].inArray(options.na_label, labels) < 0) { + (0, _jquery2["default"])(div).append("
" + options.na_label + "
"); + } + } else { + if (options.na_color && _jquery2["default"].inArray(options.na_label, labels) < 0) { + colors.push(options.na_color); + labels.push(options.na_label); + } + + for (var i = 0; i < colors.length; i++) { + legendHTML += " " + labels[i] + "
"; + } + + div.innerHTML = legendHTML; + } + + if (options.title) (0, _jquery2["default"])(div).prepend("
" + options.title + "
"); + return div; + }; + + if (options.group) { + // Auto generate a layerID if not provided + if (!options.layerId) { + options.layerId = _leaflet2["default"].Util.stamp(legend); + } + + var map = this; + map.on("overlayadd", function (e) { + if (e.name === options.group) { + map.controls.add(legend, options.layerId); + } + }); + map.on("overlayremove", function (e) { + if (e.name === options.group) { + map.controls.remove(options.layerId); + } + }); + map.on("groupadd", function (e) { + if (e.name === options.group) { + map.controls.add(legend, options.layerId); + } + }); + map.on("groupremove", function (e) { + if (e.name === options.group) { + map.controls.remove(options.layerId); + } + }); + } + + this.controls.add(legend, options.layerId); +}; + +methods.addLayersControl = function (baseGroups, overlayGroups, options) { + var _this4 = this; + + // Only allow one layers control at a time + methods.removeLayersControl.call(this); + var firstLayer = true; + var base = {}; + + _jquery2["default"].each((0, _util.asArray)(baseGroups), function (i, g) { + var layer = _this4.layerManager.getLayerGroup(g, true); + + if (layer) { + base[g] = layer; // Check if >1 base layers are visible; if so, hide all but the first one + + if (_this4.hasLayer(layer)) { + if (firstLayer) { + firstLayer = false; + } else { + _this4.removeLayer(layer); + } + } + } + }); + + var overlay = {}; + + _jquery2["default"].each((0, _util.asArray)(overlayGroups), function (i, g) { + var layer = _this4.layerManager.getLayerGroup(g, true); + + if (layer) { + overlay[g] = layer; + } + }); + + this.currentLayersControl = _leaflet2["default"].control.layers(base, overlay, options); + this.addControl(this.currentLayersControl); +}; + +methods.removeLayersControl = function () { + if (this.currentLayersControl) { + this.removeControl(this.currentLayersControl); + this.currentLayersControl = null; + } +}; + +methods.addScaleBar = function (options) { + // Only allow one scale bar at a time + methods.removeScaleBar.call(this); + + var scaleBar = _leaflet2["default"].control.scale(options).addTo(this); + + this.currentScaleBar = scaleBar; +}; + +methods.removeScaleBar = function () { + if (this.currentScaleBar) { + this.currentScaleBar.remove(); + this.currentScaleBar = null; + } +}; + +methods.hideGroup = function (group) { + var _this5 = this; + + _jquery2["default"].each((0, _util.asArray)(group), function (i, g) { + var layer = _this5.layerManager.getLayerGroup(g, true); + + if (layer) { + _this5.removeLayer(layer); + } + }); +}; + +methods.showGroup = function (group) { + var _this6 = this; + + _jquery2["default"].each((0, _util.asArray)(group), function (i, g) { + var layer = _this6.layerManager.getLayerGroup(g, true); + + if (layer) { + _this6.addLayer(layer); + } + }); +}; + +function setupShowHideGroupsOnZoom(map) { + if (map.leafletr._hasInitializedShowHideGroups) { + return; + } + + map.leafletr._hasInitializedShowHideGroups = true; + + function setVisibility(layer, visible, group) { + if (visible !== map.hasLayer(layer)) { + if (visible) { + map.addLayer(layer); + map.fire("groupadd", { + "name": group, + "layer": layer + }); + } else { + map.removeLayer(layer); + map.fire("groupremove", { + "name": group, + "layer": layer + }); + } + } + } + + function showHideGroupsOnZoom() { + if (!map.layerManager) return; + var zoom = map.getZoom(); + map.layerManager.getAllGroupNames().forEach(function (group) { + var layer = map.layerManager.getLayerGroup(group, false); + + if (layer && typeof layer.zoomLevels !== "undefined") { + setVisibility(layer, layer.zoomLevels === true || layer.zoomLevels.indexOf(zoom) >= 0, group); + } + }); + } + + map.showHideGroupsOnZoom = showHideGroupsOnZoom; + map.on("zoomend", showHideGroupsOnZoom); +} + +methods.setGroupOptions = function (group, options) { + var _this7 = this; + + _jquery2["default"].each((0, _util.asArray)(group), function (i, g) { + var layer = _this7.layerManager.getLayerGroup(g, true); // This slightly tortured check is because 0 is a valid value for zoomLevels + + + if (typeof options.zoomLevels !== "undefined" && options.zoomLevels !== null) { + layer.zoomLevels = (0, _util.asArray)(options.zoomLevels); + } + }); + + setupShowHideGroupsOnZoom(this); + this.showHideGroupsOnZoom(); +}; + +methods.addRasterImage = function (uri, bounds, opacity, attribution, layerId, group) { + // uri is a data URI containing an image. We want to paint this image as a + // layer at (top-left) bounds[0] to (bottom-right) bounds[1]. + // We can't simply use ImageOverlay, as it uses bilinear scaling which looks + // awful as you zoom in (and sometimes shifts positions or disappears). + // Instead, we'll use a TileLayer.Canvas to draw pieces of the image. + // First, some helper functions. + // degree2tile converts latitude, longitude, and zoom to x and y tile + // numbers. The tile numbers returned can be non-integral, as there's no + // reason to expect that the lat/lng inputs are exactly on the border of two + // tiles. + // + // We'll use this to convert the bounds we got from the server, into coords + // in tile-space at a given zoom level. Note that once we do the conversion, + // we don't to do any more trigonometry to convert between pixel coordinates + // and tile coordinates; the source image pixel coords, destination canvas + // pixel coords, and tile coords all can be scaled linearly. + function degree2tile(lat, lng, zoom) { + // See http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames + var latRad = lat * Math.PI / 180; + var n = Math.pow(2, zoom); + var x = (lng + 180) / 360 * n; + var y = (1 - Math.log(Math.tan(latRad) + 1 / Math.cos(latRad)) / Math.PI) / 2 * n; + return { + x: x, + y: y + }; + } // Given a range [from,to) and either one or two numbers, returns true if + // there is any overlap between [x,x1) and the range--or if x1 is omitted, + // then returns true if x is within [from,to). + + + function overlap(from, to, x, + /* optional */ + x1) { + if (arguments.length == 3) x1 = x; + return x < to && x1 >= from; + } + + function getCanvasSmoothingProperty(ctx) { + var candidates = ["imageSmoothingEnabled", "mozImageSmoothingEnabled", "webkitImageSmoothingEnabled", "msImageSmoothingEnabled"]; + + for (var i = 0; i < candidates.length; i++) { + if (typeof ctx[candidates[i]] !== "undefined") { + return candidates[i]; + } + } + + return null; + } // Our general strategy is to: + // 1. Load the data URI in an Image() object, so we can get its pixel + // dimensions and the underlying image data. (We could have done this + // by not encoding as PNG at all but just send an array of RGBA values + // from the server, but that would inflate the JSON too much.) + // 2. Create a hidden canvas that we use just to extract the image data + // from the Image (using Context2D.getImageData()). + // 3. Create a TileLayer.Canvas and add it to the map. + // We want to synchronously create and attach the TileLayer.Canvas (so an + // immediate call to clearRasters() will be respected, for example), but + // Image loads its data asynchronously. Fortunately we can resolve this + // by putting TileLayer.Canvas into async mode, which will let us create + // and attach the layer but have it wait until the image is loaded before + // it actually draws anything. + // These are the variables that we will populate once the image is loaded. + + + var imgData = null; // 1d row-major array, four [0-255] integers per pixel + + var imgDataMipMapper = null; + var w = null; // image width in pixels + + var h = null; // image height in pixels + // We'll use this array to store callbacks that need to be invoked once + // imgData, w, and h have been resolved. + + var imgDataCallbacks = []; // Consumers of imgData, w, and h can call this to be notified when data + // is available. + + function getImageData(callback) { + if (imgData != null) { + // Must not invoke the callback immediately; it's too confusing and + // fragile to have a function invoke the callback *either* immediately + // or in the future. Better to be consistent here. + setTimeout(function () { + callback(imgData, w, h, imgDataMipMapper); + }, 0); + } else { + imgDataCallbacks.push(callback); + } + } + + var img = new Image(); + + img.onload = function () { + // Save size + w = img.width; + h = img.height; // Create a dummy canvas to extract the image data + + var imgDataCanvas = document.createElement("canvas"); + imgDataCanvas.width = w; + imgDataCanvas.height = h; + imgDataCanvas.style.display = "none"; + document.body.appendChild(imgDataCanvas); + var imgDataCtx = imgDataCanvas.getContext("2d"); + imgDataCtx.drawImage(img, 0, 0); // Save the image data. + + imgData = imgDataCtx.getImageData(0, 0, w, h).data; + imgDataMipMapper = new _mipmapper2["default"](img); // Done with the canvas, remove it from the page so it can be gc'd. + + document.body.removeChild(imgDataCanvas); // Alert any getImageData callers who are waiting. + + for (var i = 0; i < imgDataCallbacks.length; i++) { + imgDataCallbacks[i](imgData, w, h, imgDataMipMapper); + } + + imgDataCallbacks = []; + }; + + img.src = uri; + + var canvasTiles = _leaflet2["default"].gridLayer({ + opacity: opacity, + attribution: attribution, + detectRetina: true, + async: true + }); // NOTE: The done() function MUST NOT be invoked until after the current + // tick; done() looks in Leaflet's tile cache for the current tile, and + // since it's still being constructed, it won't be found. + + + canvasTiles.createTile = function (tilePoint, done) { + var zoom = tilePoint.z; + + var canvas = _leaflet2["default"].DomUtil.create("canvas"); + + var error; // setup tile width and height according to the options + + var size = this.getTileSize(); + canvas.width = size.x; + canvas.height = size.y; + getImageData(function (imgData, w, h, mipmapper) { + try { + // The Context2D we'll being drawing onto. It's always 256x256. + var ctx = canvas.getContext("2d"); // Convert our image data's top-left and bottom-right locations into + // x/y tile coordinates. This is essentially doing a spherical mercator + // projection, then multiplying by 2^zoom. + + var topLeft = degree2tile(bounds[0][0], bounds[0][1], zoom); + var bottomRight = degree2tile(bounds[1][0], bounds[1][1], zoom); // The size of the image in x/y tile coordinates. + + var extent = { + x: bottomRight.x - topLeft.x, + y: bottomRight.y - topLeft.y + }; // Short circuit if tile is totally disjoint from image. + + if (!overlap(tilePoint.x, tilePoint.x + 1, topLeft.x, bottomRight.x)) return; + if (!overlap(tilePoint.y, tilePoint.y + 1, topLeft.y, bottomRight.y)) return; // The linear resolution of the tile we're drawing is always 256px per tile unit. + // If the linear resolution (in either direction) of the image is less than 256px + // per tile unit, then use nearest neighbor; otherwise, use the canvas's built-in + // scaling. + + var imgRes = { + x: w / extent.x, + y: h / extent.y + }; // We can do the actual drawing in one of three ways: + // - Call drawImage(). This is easy and fast, and results in smooth + // interpolation (bilinear?). This is what we want when we are + // reducing the image from its native size. + // - Call drawImage() with imageSmoothingEnabled=false. This is easy + // and fast and gives us nearest-neighbor interpolation, which is what + // we want when enlarging the image. However, it's unsupported on many + // browsers (including QtWebkit). + // - Do a manual nearest-neighbor interpolation. This is what we'll fall + // back to when enlarging, and imageSmoothingEnabled isn't supported. + // In theory it's slower, but still pretty fast on my machine, and the + // results look the same AFAICT. + // Is imageSmoothingEnabled supported? If so, we can let canvas do + // nearest-neighbor interpolation for us. + + var smoothingProperty = getCanvasSmoothingProperty(ctx); + + if (smoothingProperty || imgRes.x >= 256 && imgRes.y >= 256) { + // Use built-in scaling + // Turn off anti-aliasing if necessary + if (smoothingProperty) { + ctx[smoothingProperty] = imgRes.x >= 256 && imgRes.y >= 256; + } // Don't necessarily draw with the full-size image; if we're + // downscaling, use the mipmapper to get a pre-downscaled image + // (see comments on Mipmapper class for why this matters). + + + mipmapper.getBySize(extent.x * 256, extent.y * 256, function (mip) { + // It's possible that the image will go off the edge of the canvas-- + // that's OK, the canvas should clip appropriately. + ctx.drawImage(mip, // Convert abs tile coords to rel tile coords, then *256 to convert + // to rel pixel coords + (topLeft.x - tilePoint.x) * 256, (topLeft.y - tilePoint.y) * 256, // Always draw the whole thing and let canvas clip; so we can just + // convert from size in tile coords straight to pixels + extent.x * 256, extent.y * 256); + }); + } else { + // Use manual nearest-neighbor interpolation + // Calculate the source image pixel coordinates that correspond with + // the top-left and bottom-right of this tile. (If the source image + // only partially overlaps the tile, we use max/min to limit the + // sourceStart/End to only reflect the overlapping portion.) + var sourceStart = { + x: Math.max(0, Math.floor((tilePoint.x - topLeft.x) * imgRes.x)), + y: Math.max(0, Math.floor((tilePoint.y - topLeft.y) * imgRes.y)) + }; + var sourceEnd = { + x: Math.min(w, Math.ceil((tilePoint.x + 1 - topLeft.x) * imgRes.x)), + y: Math.min(h, Math.ceil((tilePoint.y + 1 - topLeft.y) * imgRes.y)) + }; // The size, in dest pixels, that each source pixel should occupy. + // This might be greater or less than 1 (e.g. if x and y resolution + // are very different). + + var pixelSize = { + x: 256 / imgRes.x, + y: 256 / imgRes.y + }; // For each pixel in the source image that overlaps the tile... + + for (var row = sourceStart.y; row < sourceEnd.y; row++) { + for (var col = sourceStart.x; col < sourceEnd.x; col++) { + // ...extract the pixel data... + var i = (row * w + col) * 4; + var r = imgData[i]; + var g = imgData[i + 1]; + var b = imgData[i + 2]; + var a = imgData[i + 3]; + ctx.fillStyle = "rgba(" + [r, g, b, a / 255].join(",") + ")"; // ...calculate the corresponding pixel coord in the dest image + // where it should be drawn... + + var pixelPos = { + x: (col / imgRes.x + topLeft.x - tilePoint.x) * 256, + y: (row / imgRes.y + topLeft.y - tilePoint.y) * 256 + }; // ...and draw a rectangle there. + + ctx.fillRect(Math.round(pixelPos.x), Math.round(pixelPos.y), // Looks crazy, but this is necessary to prevent rounding from + // causing overlap between this rect and its neighbors. The + // minuend is the location of the next pixel, while the + // subtrahend is the position of the current pixel (to turn an + // absolute coordinate to a width/height). Yes, I had to look + // up minuend and subtrahend. + Math.round(pixelPos.x + pixelSize.x) - Math.round(pixelPos.x), Math.round(pixelPos.y + pixelSize.y) - Math.round(pixelPos.y)); + } + } + } + } catch (e) { + error = e; + } finally { + done(error, canvas); + } + }); + return canvas; + }; + + this.layerManager.addLayer(canvasTiles, "image", layerId, group); +}; + +methods.removeImage = function (layerId) { + this.layerManager.removeLayer("image", layerId); +}; + +methods.clearImages = function () { + this.layerManager.clearLayers("image"); +}; + +methods.addMeasure = function (options) { + // if a measureControl already exists, then remove it and + // replace with a new one + methods.removeMeasure.call(this); + this.measureControl = _leaflet2["default"].control.measure(options); + this.addControl(this.measureControl); +}; + +methods.removeMeasure = function () { + if (this.measureControl) { + this.removeControl(this.measureControl); + this.measureControl = null; + } +}; + +methods.addSelect = function (ctGroup) { + var _this8 = this; + + methods.removeSelect.call(this); + this._selectButton = _leaflet2["default"].easyButton({ + states: [{ + stateName: "select-inactive", + icon: "ion-qr-scanner", + title: "Make a selection", + onClick: function onClick(btn, map) { + btn.state("select-active"); + _this8._locationFilter = new _leaflet2["default"].LocationFilter2(); + + if (ctGroup) { + var selectionHandle = new global.crosstalk.SelectionHandle(ctGroup); + selectionHandle.on("change", function (e) { + if (e.sender !== selectionHandle) { + if (_this8._locationFilter) { + _this8._locationFilter.disable(); + + btn.state("select-inactive"); + } + } + }); + + var handler = function handler(e) { + _this8.layerManager.brush(_this8._locationFilter.getBounds(), { + sender: selectionHandle + }); + }; + + _this8._locationFilter.on("enabled", handler); + + _this8._locationFilter.on("change", handler); + + _this8._locationFilter.on("disabled", function () { + selectionHandle.close(); + _this8._locationFilter = null; + }); + } + + _this8._locationFilter.addTo(map); + } + }, { + stateName: "select-active", + icon: "ion-close-round", + title: "Dismiss selection", + onClick: function onClick(btn, map) { + btn.state("select-inactive"); + + _this8._locationFilter.disable(); // If explicitly dismissed, clear the crosstalk selections + + + _this8.layerManager.unbrush(); + } + }] + }); + + this._selectButton.addTo(this); +}; + +methods.removeSelect = function () { + if (this._locationFilter) { + this._locationFilter.disable(); + } + + if (this._selectButton) { + this.removeControl(this._selectButton); + this._selectButton = null; + } +}; + +methods.createMapPane = function (name, zIndex) { + this.createPane(name); + this.getPane(name).style.zIndex = zIndex; +}; + + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./cluster-layer-store":1,"./crs_utils":3,"./dataframe":4,"./global/htmlwidgets":8,"./global/jquery":9,"./global/leaflet":10,"./global/shiny":12,"./mipmapper":16,"./util":17}],16:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// This class simulates a mipmap, which shrinks images by powers of two. This +// stepwise reduction results in "pixel-perfect downscaling" (where every +// pixel of the original image has some contribution to the downscaled image) +// as opposed to a single-step downscaling which will discard a lot of data +// (and with sparse images at small scales can give very surprising results). +var Mipmapper = /*#__PURE__*/function () { + function Mipmapper(img) { + _classCallCheck(this, Mipmapper); + + this._layers = [img]; + } // The various functions on this class take a callback function BUT MAY OR MAY + // NOT actually behave asynchronously. + + + _createClass(Mipmapper, [{ + key: "getBySize", + value: function getBySize(desiredWidth, desiredHeight, callback) { + var _this = this; + + var i = 0; + var lastImg = this._layers[0]; + + var testNext = function testNext() { + _this.getByIndex(i, function (img) { + // If current image is invalid (i.e. too small to be rendered) or + // it's smaller than what we wanted, return the last known good image. + if (!img || img.width < desiredWidth || img.height < desiredHeight) { + callback(lastImg); + return; + } else { + lastImg = img; + i++; + testNext(); + return; + } + }); + }; + + testNext(); + } + }, { + key: "getByIndex", + value: function getByIndex(i, callback) { + var _this2 = this; + + if (this._layers[i]) { + callback(this._layers[i]); + return; + } + + this.getByIndex(i - 1, function (prevImg) { + if (!prevImg) { + // prevImg could not be calculated (too small, possibly) + callback(null); + return; + } + + if (prevImg.width < 2 || prevImg.height < 2) { + // Can't reduce this image any further + callback(null); + return; + } // If reduce ever becomes truly asynchronous, we should stuff a promise or + // something into this._layers[i] before calling this.reduce(), to prevent + // redundant reduce operations from happening. + + + _this2.reduce(prevImg, function (reducedImg) { + _this2._layers[i] = reducedImg; + callback(reducedImg); + return; + }); + }); + } + }, { + key: "reduce", + value: function reduce(img, callback) { + var imgDataCanvas = document.createElement("canvas"); + imgDataCanvas.width = Math.ceil(img.width / 2); + imgDataCanvas.height = Math.ceil(img.height / 2); + imgDataCanvas.style.display = "none"; + document.body.appendChild(imgDataCanvas); + + try { + var imgDataCtx = imgDataCanvas.getContext("2d"); + imgDataCtx.drawImage(img, 0, 0, img.width / 2, img.height / 2); + callback(imgDataCanvas); + } finally { + document.body.removeChild(imgDataCanvas); + } + } + }]); + + return Mipmapper; +}(); + +exports["default"] = Mipmapper; + + +},{}],17:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.log = log; +exports.recycle = recycle; +exports.asArray = asArray; + +function log(message) { + /* eslint-disable no-console */ + if (console && console.log) console.log(message); + /* eslint-enable no-console */ +} + +function recycle(values, length, inPlace) { + if (length === 0 && !inPlace) return []; + + if (!(values instanceof Array)) { + if (inPlace) { + throw new Error("Can't do in-place recycling of a non-Array value"); + } + + values = [values]; + } + + if (typeof length === "undefined") length = values.length; + var dest = inPlace ? values : []; + var origLength = values.length; + + while (dest.length < length) { + dest.push(values[dest.length % origLength]); + } + + if (dest.length > length) { + dest.splice(length, dest.length - length); + } + + return dest; +} + +function asArray(value) { + if (value instanceof Array) return value;else return [value]; +} + + +},{}]},{},[13]); diff --git a/index_files/libs/leaflet-providers-plugin-2.1.2/leaflet-providers-plugin.js b/index_files/libs/leaflet-providers-plugin-2.1.2/leaflet-providers-plugin.js new file mode 100644 index 0000000..82cd630 --- /dev/null +++ b/index_files/libs/leaflet-providers-plugin-2.1.2/leaflet-providers-plugin.js @@ -0,0 +1,3 @@ +LeafletWidget.methods.addProviderTiles = function(provider, layerId, group, options) { + this.layerManager.addLayer(L.tileLayer.provider(provider, options), "tile", layerId, group); +}; diff --git a/index_files/libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/FontAwesome6Brands-Regular-400.ttf b/index_files/libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/FontAwesome6Brands-Regular-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..34a1436b2c20630c5ecec03d760e02aa61ae75fd GIT binary patch literal 180104 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%0AsAb*I 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 z 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≤=Q+zF9#=@O#GIZz7Cagl;mfa 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

G2G~kvHl@4&Aw<^yK4|ZAS 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�j5 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 E2jhpYTmS$7 literal 0 HcmV?d00001 diff --git a/index_files/libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/FontAwesome6Free-Regular-400.woff2 b/index_files/libs/quarto-contrib/fontawesome6-0.1.0/1e21o67/FontAwesome6Free-Regular-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f3918d2b23e96c19c305b476afe17a2d1024b183 GIT binary patch literal 25124 zcmV)8K*qm!Pew8T0RR910AeHn4*&oF0VyN^0Aa%b0RR9100000000000000000000 z0000#Mn+Uk92z_uARM_a24Dbzu{aS33WB?Ef`9@GgERmEHUcCAhGGOD1&Is?lTcfK z2$2TrhD}#hVJMvIysaVH%JbmrfU^6P5R|*_(QlTJf(6_dx?$r0gQtH{+5i9l|No!A zEM#o=Ki2*KwhaXh6e_Jia}lL@D7CqFMnNeyW`u}gXcX?zE+`dO5h)i}V>YdGa#AhT zoMNc~$0~0(mv_{d?2{^6@;0-06{hW=Mo=TD5!8tOi08J9l*dTiL5-lsDMr6q?=9u% zi6^KL)Cg)!scSc3DPQgws5yUAopt7SQmy%#sb~I6zK5&#e1A+W`Jef&u6n*NQ{w~Z zq6ns$c24Np3vW_VKbhSx_9g}#zSByt@3Mq%7+Z}fVxM=%jz1gquLlY?n^&wRoXTy* z8+UQ+(UgE`1XDTP{O?71y89uwP+Lmx63onHOl<|Q5{k~i6SSleT)blm(I0g5tz@qNi`2@hR zywBpW)W_%I%0&@I>3qD|e83~9pq#g#=D%d`qNv?cqxWt)cz!+~Ki6dv%b{^~;j*F5_`j14OT7!Ef$x7Pw53M5aRdU2Utz(du5 zhakpU%dv}SWV$zo(A1`TX;eZZb(4QD`AhgL5CA{`#??w|2m3|BZId^r|DNvU9K}&= zS$4Mbk~jVs6Ls(7v>DBuEOZj>oN*s!S|~3@R*4)757xFDeNzP*4B`7{P5lR$?&*iJnPlMRD+7t>yc(8$fad zdUjJMMSxsi$XFu9el8Uip%SOM1p)xPGk}B1{pqsA{vuw*Kcy4UdHxwXd1iOCnzIhC zEXz1||IgBj_nUX`!oBt#PpPo6DCl8IgHZqu3JakDJOJe5Q!Opt|nsAdK#@PRv zS|;fndbu1U%Q@#M>w?IcB+^r)^s?&uRp{=jt_IMJ#sFwy2m<6j5CC~iaJT~!LoFL< zf&e(P0^JTr#@Ra$5^HE=Xk@(2&ilyQAXK_RcIT5oL3SpHE={gmNPqzvG6ozEn+0I& zl|TdZ|NcRxeP9R&HYou6G@ZNf_^1Bl)qfxce_kZcUCCT)X#q<>J2`^~!9cPKFoN#7 z&NJ;i9MDJy8<=g8O=?L6nE@#DItQ83%gb+dy5wXj6 ziP)y6K|?cq5|IU2DhnINrrLXju&@d+pk;l?oc|wp$Mh++YAb3LFd#|-8F$Hr@r`n` zsFil84*Gt^0!ANG%zDIL%0A8>@-YG!Bu_9fNQ9dgA_xf? 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

BmFx3;X;of;ZS^E^Ji-ilCCh#LMnCj%N76v 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 e3MgMs@_yoF!zFs%u$A7?TFfDWy{YdGa#AhT zoMNc~$0~0(mv_{d?2{^6@;0-06{hW=Mo=TD5!8tOi08J9l*dTiL5-lsDMr6q?=9u% zi6^KL)Cg)!scSc3DPQgws5yUAopt7SQmy%#sb~I6zK5&#e1A+W`Jef&u6n*NQ{w~Z zq6ns$c24Np3vW_VKbhSx_9g}#zSByt@3Mq%7+Z}fVxM=%jz1gquLlY?n^&wRoXTy* z8+UQ+(UgE`1XDTP{O?71y89uwP+Lmx63onHOl<|Q5{k~i6SSleT)blm(I0g5tz@qNi`2@hR zywBpW)W_%I%0&@I>3qD|e83~9pq#g#=D%d`qNv?cqxWt)cz!+~Ki6dv%b{^~;j*F5_`j14OT7!Ef$x7Pw53M5aRdU2Utz(du5 zhakpU%dv}SWV$zo(A1`TX;eZZb(4QD`AhgL5CA{`#??w|2m3|BZId^r|DNvU9K}&= zS$4Mbk~jVs6Ls(7v>DBuEOZj>oN*s!S|~3@R*4)757xFDeNzP*4B`7{P5lR$?&*iJnPlMRD+7t>yc(8$fad zdUjJMMSxsi$XFu9el8Uip%SOM1p)xPGk}B1{pqsA{vuw*Kcy4UdHxwXd1iOCnzIhC zEXz1||IgBj_nUX`!oBt#PpPo6DCl8IgHZqu3JakDJOJe5Q!Opt|nsAdK#@PRv zS|;fndbu1U%Q@#M>w?IcB+^r)^s?&uRp{=jt_IMJ#sFwy2m<6j5CC~iaJT~!LoFL< zf&e(P0^JTr#@Ra$5^HE=Xk@(2&ilyQAXK_RcIT5oL3SpHE={gmNPqzvG6ozEn+0I& zl|TdZ|NcRxeP9R&HYou6G@ZNf_^1Bl)qfxce_kZcUCCT)X#q<>J2`^~!9cPKFoN#7 z&NJ;i9MDJy8<=g8O=?L6nE@#DItQ83%gb+dy5wXj6 ziP)y6K|?cq5|IU2DhnINrrLXju&@d+pk;l?oc|wp$Mh++YAb3LFd#|-8F$Hr@r`n` zsFil84*Gt^0!ANG%zDIL%0A8>@-YG!Bu_9fNQ9dgA_xf? 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 XfI%Cx7mS li { + position: relative; } + +.fa-li { + left: calc(var(--fa-li-width, 2em) * -1); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; } + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); } + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); } + +.fa-beat { + -webkit-animation-name: fa-beat; + animation-name: fa-beat; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-bounce { + -webkit-animation-name: fa-bounce; + animation-name: fa-bounce; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + +.fa-fade { + -webkit-animation-name: fa-fade; + animation-name: fa-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-beat-fade { + -webkit-animation-name: fa-beat-fade; + animation-name: fa-beat-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-flip { + -webkit-animation-name: fa-flip; + animation-name: fa-flip; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-shake { + -webkit-animation-name: fa-shake; + animation-name: fa-shake; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 2s); + animation-duration: var(--fa-animation-duration, 2s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin-reverse { + --fa-animation-direction: reverse; } + +.fa-pulse, +.fa-spin-pulse { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); + animation-timing-function: var(--fa-animation-timing, steps(8)); } + +@media (prefers-reduced-motion: reduce) { + .fa-beat, + .fa-bounce, + .fa-fade, + .fa-beat-fade, + .fa-flip, + .fa-pulse, + .fa-shake, + .fa-spin, + .fa-spin-pulse { + -webkit-animation-delay: -1ms; + animation-delay: -1ms; + -webkit-animation-duration: 1ms; + animation-duration: 1ms; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + -webkit-transition-delay: 0s; + transition-delay: 0s; + -webkit-transition-duration: 0s; + transition-duration: 0s; } } + +@-webkit-keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@-webkit-keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@-webkit-keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@-webkit-keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@-webkit-keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@-webkit-keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +.fa-rotate-by { + -webkit-transform: rotate(var(--fa-rotate-angle, none)); + transform: rotate(var(--fa-rotate-angle, none)); } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--fa-stack-z-index, auto); } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: var(--fa-inverse, #fff); } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ + +.fa-0::before { + content: "\30"; } + +.fa-1::before { + content: "\31"; } + +.fa-2::before { + content: "\32"; } + +.fa-3::before { + content: "\33"; } + +.fa-4::before { + content: "\34"; } + +.fa-5::before { + content: "\35"; } + +.fa-6::before { + content: "\36"; } + +.fa-7::before { + content: "\37"; } + +.fa-8::before { + content: "\38"; } + +.fa-9::before { + content: "\39"; } + +.fa-fill-drip::before { + content: "\f576"; } + +.fa-arrows-to-circle::before { + content: "\e4bd"; } + +.fa-circle-chevron-right::before { + content: "\f138"; } + +.fa-chevron-circle-right::before { + content: "\f138"; } + +.fa-at::before { + content: "\40"; } + +.fa-trash-can::before { + content: "\f2ed"; } + +.fa-trash-alt::before { + content: "\f2ed"; } + +.fa-text-height::before { + content: "\f034"; } + +.fa-user-xmark::before { + content: "\f235"; } + +.fa-user-times::before { + content: "\f235"; } + +.fa-stethoscope::before { + content: "\f0f1"; } + +.fa-message::before { + content: "\f27a"; } + +.fa-comment-alt::before { + content: "\f27a"; } + +.fa-info::before { + content: "\f129"; } + +.fa-down-left-and-up-right-to-center::before { + content: "\f422"; } + +.fa-compress-alt::before { + content: "\f422"; } + +.fa-explosion::before { + content: "\e4e9"; } + +.fa-file-lines::before { + content: "\f15c"; } + +.fa-file-alt::before { + content: "\f15c"; } + +.fa-file-text::before { + content: "\f15c"; } + +.fa-wave-square::before { + content: "\f83e"; } + +.fa-ring::before { + content: "\f70b"; } + +.fa-building-un::before { + content: "\e4d9"; } + +.fa-dice-three::before { + content: "\f527"; } + +.fa-calendar-days::before { + content: "\f073"; } + +.fa-calendar-alt::before { + content: "\f073"; } + +.fa-anchor-circle-check::before { + content: "\e4aa"; } + +.fa-building-circle-arrow-right::before { + content: "\e4d1"; } + +.fa-volleyball::before { + content: "\f45f"; } + +.fa-volleyball-ball::before { + content: "\f45f"; } + +.fa-arrows-up-to-line::before { + content: "\e4c2"; } + +.fa-sort-down::before { + content: "\f0dd"; } + +.fa-sort-desc::before { + content: "\f0dd"; } + +.fa-circle-minus::before { + content: "\f056"; } + +.fa-minus-circle::before { + content: "\f056"; } + +.fa-door-open::before { + content: "\f52b"; } + +.fa-right-from-bracket::before { + content: "\f2f5"; } + +.fa-sign-out-alt::before { + content: "\f2f5"; } + +.fa-atom::before { + content: "\f5d2"; } + +.fa-soap::before { + content: "\e06e"; } + +.fa-icons::before { + content: "\f86d"; } + +.fa-heart-music-camera-bolt::before { + content: "\f86d"; } + +.fa-microphone-lines-slash::before { + content: "\f539"; } + +.fa-microphone-alt-slash::before { + content: "\f539"; } + +.fa-bridge-circle-check::before { + content: "\e4c9"; } + +.fa-pump-medical::before { + content: "\e06a"; } + +.fa-fingerprint::before { + content: "\f577"; } + +.fa-hand-point-right::before { + content: "\f0a4"; } + +.fa-magnifying-glass-location::before { + content: "\f689"; } + +.fa-search-location::before { + content: "\f689"; } + +.fa-forward-step::before { + content: "\f051"; } + +.fa-step-forward::before { + content: "\f051"; } + +.fa-face-smile-beam::before { + content: "\f5b8"; } + +.fa-smile-beam::before { + content: "\f5b8"; } + +.fa-flag-checkered::before { + content: "\f11e"; } + +.fa-football::before { + content: "\f44e"; } + +.fa-football-ball::before { + content: "\f44e"; } + +.fa-school-circle-exclamation::before { + content: "\e56c"; } + +.fa-crop::before { + content: "\f125"; } + +.fa-angles-down::before { + content: "\f103"; } + +.fa-angle-double-down::before { + content: "\f103"; } + +.fa-users-rectangle::before { + content: "\e594"; } + +.fa-people-roof::before { + content: "\e537"; } + +.fa-people-line::before { + content: "\e534"; } + +.fa-beer-mug-empty::before { + content: "\f0fc"; } + +.fa-beer::before { + content: "\f0fc"; } + +.fa-diagram-predecessor::before { + content: "\e477"; } + +.fa-arrow-up-long::before { + content: "\f176"; } + +.fa-long-arrow-up::before { + content: "\f176"; } + +.fa-fire-flame-simple::before { + content: "\f46a"; } + +.fa-burn::before { + content: "\f46a"; } + +.fa-person::before { + content: "\f183"; } + +.fa-male::before { + content: "\f183"; } + +.fa-laptop::before { + content: "\f109"; } + +.fa-file-csv::before { + content: "\f6dd"; } + +.fa-menorah::before { + content: "\f676"; } + +.fa-truck-plane::before { + content: "\e58f"; } + +.fa-record-vinyl::before { + content: "\f8d9"; } + +.fa-face-grin-stars::before { + content: "\f587"; } + +.fa-grin-stars::before { + content: "\f587"; } + +.fa-bong::before { + content: "\f55c"; } + +.fa-spaghetti-monster-flying::before { + content: "\f67b"; } + +.fa-pastafarianism::before { + content: "\f67b"; } + +.fa-arrow-down-up-across-line::before { + content: "\e4af"; } + +.fa-spoon::before { + content: "\f2e5"; } + +.fa-utensil-spoon::before { + content: "\f2e5"; } + +.fa-jar-wheat::before { + content: "\e517"; } + +.fa-envelopes-bulk::before { + content: "\f674"; } + +.fa-mail-bulk::before { + content: "\f674"; } + +.fa-file-circle-exclamation::before { + content: "\e4eb"; } + +.fa-circle-h::before { + content: "\f47e"; } + +.fa-hospital-symbol::before { + content: "\f47e"; } + +.fa-pager::before { + content: "\f815"; } + +.fa-address-book::before { + content: "\f2b9"; } + +.fa-contact-book::before { + content: "\f2b9"; } + +.fa-strikethrough::before { + content: "\f0cc"; } + +.fa-k::before { + content: "\4b"; } + +.fa-landmark-flag::before { + content: "\e51c"; } + +.fa-pencil::before { + content: "\f303"; } + +.fa-pencil-alt::before { + content: "\f303"; } + +.fa-backward::before { + content: "\f04a"; } + +.fa-caret-right::before { + content: "\f0da"; } + +.fa-comments::before { + content: "\f086"; } + +.fa-paste::before { + content: "\f0ea"; } + +.fa-file-clipboard::before { + content: "\f0ea"; } + +.fa-code-pull-request::before { + content: "\e13c"; } + +.fa-clipboard-list::before { + content: "\f46d"; } + +.fa-truck-ramp-box::before { + content: "\f4de"; } + +.fa-truck-loading::before { + content: "\f4de"; } + +.fa-user-check::before { + content: "\f4fc"; } + +.fa-vial-virus::before { + content: "\e597"; } + +.fa-sheet-plastic::before { + content: "\e571"; } + +.fa-blog::before { + content: "\f781"; } + +.fa-user-ninja::before { + content: "\f504"; } + +.fa-person-arrow-up-from-line::before { + content: "\e539"; } + +.fa-scroll-torah::before { + content: "\f6a0"; } + +.fa-torah::before { + content: "\f6a0"; } + +.fa-broom-ball::before { + content: "\f458"; } + +.fa-quidditch::before { + content: "\f458"; } + +.fa-quidditch-broom-ball::before { + content: "\f458"; } + +.fa-toggle-off::before { + content: "\f204"; } + +.fa-box-archive::before { + content: "\f187"; } + +.fa-archive::before { + content: "\f187"; } + +.fa-person-drowning::before { + content: "\e545"; } + +.fa-arrow-down-9-1::before { + content: "\f886"; } + +.fa-sort-numeric-desc::before { + content: "\f886"; } + +.fa-sort-numeric-down-alt::before { + content: "\f886"; } + +.fa-face-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-spray-can::before { + content: "\f5bd"; } + +.fa-truck-monster::before { + content: "\f63b"; } + +.fa-w::before { + content: "\57"; } + +.fa-earth-africa::before { + content: "\f57c"; } + +.fa-globe-africa::before { + content: "\f57c"; } + +.fa-rainbow::before { + content: "\f75b"; } + +.fa-circle-notch::before { + content: "\f1ce"; } + +.fa-tablet-screen-button::before { + content: "\f3fa"; } + +.fa-tablet-alt::before { + content: "\f3fa"; } + +.fa-paw::before { + content: "\f1b0"; } + +.fa-cloud::before { + content: "\f0c2"; } + +.fa-trowel-bricks::before { + content: "\e58a"; } + +.fa-face-flushed::before { + content: "\f579"; } + +.fa-flushed::before { + content: "\f579"; } + +.fa-hospital-user::before { + content: "\f80d"; } + +.fa-tent-arrow-left-right::before { + content: "\e57f"; } + +.fa-gavel::before { + content: "\f0e3"; } + +.fa-legal::before { + content: "\f0e3"; } + +.fa-binoculars::before { + content: "\f1e5"; } + +.fa-microphone-slash::before { + content: "\f131"; } + +.fa-box-tissue::before { + content: "\e05b"; } + +.fa-motorcycle::before { + content: "\f21c"; } + +.fa-bell-concierge::before { + content: "\f562"; } + +.fa-concierge-bell::before { + content: "\f562"; } + +.fa-pen-ruler::before { + content: "\f5ae"; } + +.fa-pencil-ruler::before { + content: "\f5ae"; } + +.fa-people-arrows::before { + content: "\e068"; } + +.fa-people-arrows-left-right::before { + content: "\e068"; } + +.fa-mars-and-venus-burst::before { + content: "\e523"; } + +.fa-square-caret-right::before { + content: "\f152"; } + +.fa-caret-square-right::before { + content: "\f152"; } + +.fa-scissors::before { + content: "\f0c4"; } + +.fa-cut::before { + content: "\f0c4"; } + +.fa-sun-plant-wilt::before { + content: "\e57a"; } + +.fa-toilets-portable::before { + content: "\e584"; } + +.fa-hockey-puck::before { + content: "\f453"; } + +.fa-table::before { + content: "\f0ce"; } + +.fa-magnifying-glass-arrow-right::before { + content: "\e521"; } + +.fa-tachograph-digital::before { + content: "\f566"; } + +.fa-digital-tachograph::before { + content: "\f566"; } + +.fa-users-slash::before { + content: "\e073"; } + +.fa-clover::before { + content: "\e139"; } + +.fa-reply::before { + content: "\f3e5"; } + +.fa-mail-reply::before { + content: "\f3e5"; } + +.fa-star-and-crescent::before { + content: "\f699"; } + +.fa-house-fire::before { + content: "\e50c"; } + +.fa-square-minus::before { + content: "\f146"; } + +.fa-minus-square::before { + content: "\f146"; } + +.fa-helicopter::before { + content: "\f533"; } + +.fa-compass::before { + content: "\f14e"; } + +.fa-square-caret-down::before { + content: "\f150"; } + +.fa-caret-square-down::before { + content: "\f150"; } + +.fa-file-circle-question::before { + content: "\e4ef"; } + +.fa-laptop-code::before { + content: "\f5fc"; } + +.fa-swatchbook::before { + content: "\f5c3"; } + +.fa-prescription-bottle::before { + content: "\f485"; } + +.fa-bars::before { + content: "\f0c9"; } + +.fa-navicon::before { + content: "\f0c9"; } + +.fa-people-group::before { + content: "\e533"; } + +.fa-hourglass-end::before { + content: "\f253"; } + +.fa-hourglass-3::before { + content: "\f253"; } + +.fa-heart-crack::before { + content: "\f7a9"; } + +.fa-heart-broken::before { + content: "\f7a9"; } + +.fa-square-up-right::before { + content: "\f360"; } + +.fa-external-link-square-alt::before { + content: "\f360"; } + +.fa-face-kiss-beam::before { + content: "\f597"; } + +.fa-kiss-beam::before { + content: "\f597"; } + +.fa-film::before { + content: "\f008"; } + +.fa-ruler-horizontal::before { + content: "\f547"; } + +.fa-people-robbery::before { + content: "\e536"; } + +.fa-lightbulb::before { + content: "\f0eb"; } + +.fa-caret-left::before { + content: "\f0d9"; } + +.fa-circle-exclamation::before { + content: "\f06a"; } + +.fa-exclamation-circle::before { + content: "\f06a"; } + +.fa-school-circle-xmark::before { + content: "\e56d"; } + +.fa-arrow-right-from-bracket::before { + content: "\f08b"; } + +.fa-sign-out::before { + content: "\f08b"; } + +.fa-circle-chevron-down::before { + content: "\f13a"; } + +.fa-chevron-circle-down::before { + content: "\f13a"; } + +.fa-unlock-keyhole::before { + content: "\f13e"; } + +.fa-unlock-alt::before { + content: "\f13e"; } + +.fa-cloud-showers-heavy::before { + content: "\f740"; } + +.fa-headphones-simple::before { + content: "\f58f"; } + +.fa-headphones-alt::before { + content: "\f58f"; } + +.fa-sitemap::before { + content: "\f0e8"; } + +.fa-circle-dollar-to-slot::before { + content: "\f4b9"; } + +.fa-donate::before { + content: "\f4b9"; } + +.fa-memory::before { + content: "\f538"; } + +.fa-road-spikes::before { + content: "\e568"; } + +.fa-fire-burner::before { + content: "\e4f1"; } + +.fa-flag::before { + content: "\f024"; } + +.fa-hanukiah::before { + content: "\f6e6"; } + +.fa-feather::before { + content: "\f52d"; } + +.fa-volume-low::before { + content: "\f027"; } + +.fa-volume-down::before { + content: "\f027"; } + +.fa-comment-slash::before { + content: "\f4b3"; } + +.fa-cloud-sun-rain::before { + content: "\f743"; } + +.fa-compress::before { + content: "\f066"; } + +.fa-wheat-awn::before { + content: "\e2cd"; } + +.fa-wheat-alt::before { + content: "\e2cd"; } + +.fa-ankh::before { + content: "\f644"; } + +.fa-hands-holding-child::before { + content: "\e4fa"; } + +.fa-asterisk::before { + content: "\2a"; } + +.fa-square-check::before { + content: "\f14a"; } + +.fa-check-square::before { + content: "\f14a"; } + +.fa-peseta-sign::before { + content: "\e221"; } + +.fa-heading::before { + content: "\f1dc"; } + +.fa-header::before { + content: "\f1dc"; } + +.fa-ghost::before { + content: "\f6e2"; } + +.fa-list::before { + content: "\f03a"; } + +.fa-list-squares::before { + content: "\f03a"; } + +.fa-square-phone-flip::before { + content: "\f87b"; } + +.fa-phone-square-alt::before { + content: "\f87b"; } + +.fa-cart-plus::before { + content: "\f217"; } + +.fa-gamepad::before { + content: "\f11b"; } + +.fa-circle-dot::before { + content: "\f192"; } + +.fa-dot-circle::before { + content: "\f192"; } + +.fa-face-dizzy::before { + content: "\f567"; } + +.fa-dizzy::before { + content: "\f567"; } + +.fa-egg::before { + content: "\f7fb"; } + +.fa-house-medical-circle-xmark::before { + content: "\e513"; } + +.fa-campground::before { + content: "\f6bb"; } + +.fa-folder-plus::before { + content: "\f65e"; } + +.fa-futbol::before { + content: "\f1e3"; } + +.fa-futbol-ball::before { + content: "\f1e3"; } + +.fa-soccer-ball::before { + content: "\f1e3"; } + +.fa-paintbrush::before { + content: "\f1fc"; } + +.fa-paint-brush::before { + content: "\f1fc"; } + +.fa-lock::before { + content: "\f023"; } + +.fa-gas-pump::before { + content: "\f52f"; } + +.fa-hot-tub-person::before { + content: "\f593"; } + +.fa-hot-tub::before { + content: "\f593"; } + +.fa-map-location::before { + content: "\f59f"; } + +.fa-map-marked::before { + content: "\f59f"; } + +.fa-house-flood-water::before { + content: "\e50e"; } + +.fa-tree::before { + content: "\f1bb"; } + +.fa-bridge-lock::before { + content: "\e4cc"; } + +.fa-sack-dollar::before { + content: "\f81d"; } + +.fa-pen-to-square::before { + content: "\f044"; } + +.fa-edit::before { + content: "\f044"; } + +.fa-car-side::before { + content: "\f5e4"; } + +.fa-share-nodes::before { + content: "\f1e0"; } + +.fa-share-alt::before { + content: "\f1e0"; } + +.fa-heart-circle-minus::before { + content: "\e4ff"; } + +.fa-hourglass-half::before { + content: "\f252"; } + +.fa-hourglass-2::before { + content: "\f252"; } + +.fa-microscope::before { + content: "\f610"; } + +.fa-sink::before { + content: "\e06d"; } + +.fa-bag-shopping::before { + content: "\f290"; } + +.fa-shopping-bag::before { + content: "\f290"; } + +.fa-arrow-down-z-a::before { + content: "\f881"; } + +.fa-sort-alpha-desc::before { + content: "\f881"; } + +.fa-sort-alpha-down-alt::before { + content: "\f881"; } + +.fa-mitten::before { + content: "\f7b5"; } + +.fa-person-rays::before { + content: "\e54d"; } + +.fa-users::before { + content: "\f0c0"; } + +.fa-eye-slash::before { + content: "\f070"; } + +.fa-flask-vial::before { + content: "\e4f3"; } + +.fa-hand::before { + content: "\f256"; } + +.fa-hand-paper::before { + content: "\f256"; } + +.fa-om::before { + content: "\f679"; } + +.fa-worm::before { + content: "\e599"; } + +.fa-house-circle-xmark::before { + content: "\e50b"; } + +.fa-plug::before { + content: "\f1e6"; } + +.fa-chevron-up::before { + content: "\f077"; } + +.fa-hand-spock::before { + content: "\f259"; } + +.fa-stopwatch::before { + content: "\f2f2"; } + +.fa-face-kiss::before { + content: "\f596"; } + +.fa-kiss::before { + content: "\f596"; } + +.fa-bridge-circle-xmark::before { + content: "\e4cb"; } + +.fa-face-grin-tongue::before { + content: "\f589"; } + +.fa-grin-tongue::before { + content: "\f589"; } + +.fa-chess-bishop::before { + content: "\f43a"; } + +.fa-face-grin-wink::before { + content: "\f58c"; } + +.fa-grin-wink::before { + content: "\f58c"; } + +.fa-ear-deaf::before { + content: "\f2a4"; } + +.fa-deaf::before { + content: "\f2a4"; } + +.fa-deafness::before { + content: "\f2a4"; } + +.fa-hard-of-hearing::before { + content: "\f2a4"; } + +.fa-road-circle-check::before { + content: "\e564"; } + +.fa-dice-five::before { + content: "\f523"; } + +.fa-square-rss::before { + content: "\f143"; } + +.fa-rss-square::before { + content: "\f143"; } + +.fa-land-mine-on::before { + content: "\e51b"; } + +.fa-i-cursor::before { + content: "\f246"; } + +.fa-stamp::before { + content: "\f5bf"; } + +.fa-stairs::before { + content: "\e289"; } + +.fa-i::before { + content: "\49"; } + +.fa-hryvnia-sign::before { + content: "\f6f2"; } + +.fa-hryvnia::before { + content: "\f6f2"; } + +.fa-pills::before { + content: "\f484"; } + +.fa-face-grin-wide::before { + content: "\f581"; } + +.fa-grin-alt::before { + content: "\f581"; } + +.fa-tooth::before { + content: "\f5c9"; } + +.fa-v::before { + content: "\56"; } + +.fa-bangladeshi-taka-sign::before { + content: "\e2e6"; } + +.fa-bicycle::before { + content: "\f206"; } + +.fa-staff-snake::before { + content: "\e579"; } + +.fa-rod-asclepius::before { + content: "\e579"; } + +.fa-rod-snake::before { + content: "\e579"; } + +.fa-staff-aesculapius::before { + content: "\e579"; } + +.fa-head-side-cough-slash::before { + content: "\e062"; } + +.fa-truck-medical::before { + content: "\f0f9"; } + +.fa-ambulance::before { + content: "\f0f9"; } + +.fa-wheat-awn-circle-exclamation::before { + content: "\e598"; } + +.fa-snowman::before { + content: "\f7d0"; } + +.fa-mortar-pestle::before { + content: "\f5a7"; } + +.fa-road-barrier::before { + content: "\e562"; } + +.fa-school::before { + content: "\f549"; } + +.fa-igloo::before { + content: "\f7ae"; } + +.fa-joint::before { + content: "\f595"; } + +.fa-angle-right::before { + content: "\f105"; } + +.fa-horse::before { + content: "\f6f0"; } + +.fa-q::before { + content: "\51"; } + +.fa-g::before { + content: "\47"; } + +.fa-notes-medical::before { + content: "\f481"; } + +.fa-temperature-half::before { + content: "\f2c9"; } + +.fa-temperature-2::before { + content: "\f2c9"; } + +.fa-thermometer-2::before { + content: "\f2c9"; } + +.fa-thermometer-half::before { + content: "\f2c9"; } + +.fa-dong-sign::before { + content: "\e169"; } + +.fa-capsules::before { + content: "\f46b"; } + +.fa-poo-storm::before { + content: "\f75a"; } + +.fa-poo-bolt::before { + content: "\f75a"; } + +.fa-face-frown-open::before { + content: "\f57a"; } + +.fa-frown-open::before { + content: "\f57a"; } + +.fa-hand-point-up::before { + content: "\f0a6"; } + +.fa-money-bill::before { + content: "\f0d6"; } + +.fa-bookmark::before { + content: "\f02e"; } + +.fa-align-justify::before { + content: "\f039"; } + +.fa-umbrella-beach::before { + content: "\f5ca"; } + +.fa-helmet-un::before { + content: "\e503"; } + +.fa-bullseye::before { + content: "\f140"; } + +.fa-bacon::before { + content: "\f7e5"; } + +.fa-hand-point-down::before { + content: "\f0a7"; } + +.fa-arrow-up-from-bracket::before { + content: "\e09a"; } + +.fa-folder::before { + content: "\f07b"; } + +.fa-folder-blank::before { + content: "\f07b"; } + +.fa-file-waveform::before { + content: "\f478"; } + +.fa-file-medical-alt::before { + content: "\f478"; } + +.fa-radiation::before { + content: "\f7b9"; } + +.fa-chart-simple::before { + content: "\e473"; } + +.fa-mars-stroke::before { + content: "\f229"; } + +.fa-vial::before { + content: "\f492"; } + +.fa-gauge::before { + content: "\f624"; } + +.fa-dashboard::before { + content: "\f624"; } + +.fa-gauge-med::before { + content: "\f624"; } + +.fa-tachometer-alt-average::before { + content: "\f624"; } + +.fa-wand-magic-sparkles::before { + content: "\e2ca"; } + +.fa-magic-wand-sparkles::before { + content: "\e2ca"; } + +.fa-e::before { + content: "\45"; } + +.fa-pen-clip::before { + content: "\f305"; } + +.fa-pen-alt::before { + content: "\f305"; } + +.fa-bridge-circle-exclamation::before { + content: "\e4ca"; } + +.fa-user::before { + content: "\f007"; } + +.fa-school-circle-check::before { + content: "\e56b"; } + +.fa-dumpster::before { + content: "\f793"; } + +.fa-van-shuttle::before { + content: "\f5b6"; } + +.fa-shuttle-van::before { + content: "\f5b6"; } + +.fa-building-user::before { + content: "\e4da"; } + +.fa-square-caret-left::before { + content: "\f191"; } + +.fa-caret-square-left::before { + content: "\f191"; } + +.fa-highlighter::before { + content: "\f591"; } + +.fa-key::before { + content: "\f084"; } + +.fa-bullhorn::before { + content: "\f0a1"; } + +.fa-globe::before { + content: "\f0ac"; } + +.fa-synagogue::before { + content: "\f69b"; } + +.fa-person-half-dress::before { + content: "\e548"; } + +.fa-road-bridge::before { + content: "\e563"; } + +.fa-location-arrow::before { + content: "\f124"; } + +.fa-c::before { + content: "\43"; } + +.fa-tablet-button::before { + content: "\f10a"; } + +.fa-building-lock::before { + content: "\e4d6"; } + +.fa-pizza-slice::before { + content: "\f818"; } + +.fa-money-bill-wave::before { + content: "\f53a"; } + +.fa-chart-area::before { + content: "\f1fe"; } + +.fa-area-chart::before { + content: "\f1fe"; } + +.fa-house-flag::before { + content: "\e50d"; } + +.fa-person-circle-minus::before { + content: "\e540"; } + +.fa-ban::before { + content: "\f05e"; } + +.fa-cancel::before { + content: "\f05e"; } + +.fa-camera-rotate::before { + content: "\e0d8"; } + +.fa-spray-can-sparkles::before { + content: "\f5d0"; } + +.fa-air-freshener::before { + content: "\f5d0"; } + +.fa-star::before { + content: "\f005"; } + +.fa-repeat::before { + content: "\f363"; } + +.fa-cross::before { + content: "\f654"; } + +.fa-box::before { + content: "\f466"; } + +.fa-venus-mars::before { + content: "\f228"; } + +.fa-arrow-pointer::before { + content: "\f245"; } + +.fa-mouse-pointer::before { + content: "\f245"; } + +.fa-maximize::before { + content: "\f31e"; } + +.fa-expand-arrows-alt::before { + content: "\f31e"; } + +.fa-charging-station::before { + content: "\f5e7"; } + +.fa-shapes::before { + content: "\f61f"; } + +.fa-triangle-circle-square::before { + content: "\f61f"; } + +.fa-shuffle::before { + content: "\f074"; } + +.fa-random::before { + content: "\f074"; } + +.fa-person-running::before { + content: "\f70c"; } + +.fa-running::before { + content: "\f70c"; } + +.fa-mobile-retro::before { + content: "\e527"; } + +.fa-grip-lines-vertical::before { + content: "\f7a5"; } + +.fa-spider::before { + content: "\f717"; } + +.fa-hands-bound::before { + content: "\e4f9"; } + +.fa-file-invoice-dollar::before { + content: "\f571"; } + +.fa-plane-circle-exclamation::before { + content: "\e556"; } + +.fa-x-ray::before { + content: "\f497"; } + +.fa-spell-check::before { + content: "\f891"; } + +.fa-slash::before { + content: "\f715"; } + +.fa-computer-mouse::before { + content: "\f8cc"; } + +.fa-mouse::before { + content: "\f8cc"; } + +.fa-arrow-right-to-bracket::before { + content: "\f090"; } + +.fa-sign-in::before { + content: "\f090"; } + +.fa-shop-slash::before { + content: "\e070"; } + +.fa-store-alt-slash::before { + content: "\e070"; } + +.fa-server::before { + content: "\f233"; } + +.fa-virus-covid-slash::before { + content: "\e4a9"; } + +.fa-shop-lock::before { + content: "\e4a5"; } + +.fa-hourglass-start::before { + content: "\f251"; } + +.fa-hourglass-1::before { + content: "\f251"; } + +.fa-blender-phone::before { + content: "\f6b6"; } + +.fa-building-wheat::before { + content: "\e4db"; } + +.fa-person-breastfeeding::before { + content: "\e53a"; } + +.fa-right-to-bracket::before { + content: "\f2f6"; } + +.fa-sign-in-alt::before { + content: "\f2f6"; } + +.fa-venus::before { + content: "\f221"; } + +.fa-passport::before { + content: "\f5ab"; } + +.fa-heart-pulse::before { + content: "\f21e"; } + +.fa-heartbeat::before { + content: "\f21e"; } + +.fa-people-carry-box::before { + content: "\f4ce"; } + +.fa-people-carry::before { + content: "\f4ce"; } + +.fa-temperature-high::before { + content: "\f769"; } + +.fa-microchip::before { + content: "\f2db"; } + +.fa-crown::before { + content: "\f521"; } + +.fa-weight-hanging::before { + content: "\f5cd"; } + +.fa-xmarks-lines::before { + content: "\e59a"; } + +.fa-file-prescription::before { + content: "\f572"; } + +.fa-weight-scale::before { + content: "\f496"; } + +.fa-weight::before { + content: "\f496"; } + +.fa-user-group::before { + content: "\f500"; } + +.fa-user-friends::before { + content: "\f500"; } + +.fa-arrow-up-a-z::before { + content: "\f15e"; } + +.fa-sort-alpha-up::before { + content: "\f15e"; } + +.fa-chess-knight::before { + content: "\f441"; } + +.fa-face-laugh-squint::before { + content: "\f59b"; } + +.fa-laugh-squint::before { + content: "\f59b"; } + +.fa-wheelchair::before { + content: "\f193"; } + +.fa-circle-arrow-up::before { + content: "\f0aa"; } + +.fa-arrow-circle-up::before { + content: "\f0aa"; } + +.fa-toggle-on::before { + content: "\f205"; } + +.fa-person-walking::before { + content: "\f554"; } + +.fa-walking::before { + content: "\f554"; } + +.fa-l::before { + content: "\4c"; } + +.fa-fire::before { + content: "\f06d"; } + +.fa-bed-pulse::before { + content: "\f487"; } + +.fa-procedures::before { + content: "\f487"; } + +.fa-shuttle-space::before { + content: "\f197"; } + +.fa-space-shuttle::before { + content: "\f197"; } + +.fa-face-laugh::before { + content: "\f599"; } + +.fa-laugh::before { + content: "\f599"; } + +.fa-folder-open::before { + content: "\f07c"; } + +.fa-heart-circle-plus::before { + content: "\e500"; } + +.fa-code-fork::before { + content: "\e13b"; } + +.fa-city::before { + content: "\f64f"; } + +.fa-microphone-lines::before { + content: "\f3c9"; } + +.fa-microphone-alt::before { + content: "\f3c9"; } + +.fa-pepper-hot::before { + content: "\f816"; } + +.fa-unlock::before { + content: "\f09c"; } + +.fa-colon-sign::before { + content: "\e140"; } + +.fa-headset::before { + content: "\f590"; } + +.fa-store-slash::before { + content: "\e071"; } + +.fa-road-circle-xmark::before { + content: "\e566"; } + +.fa-user-minus::before { + content: "\f503"; } + +.fa-mars-stroke-up::before { + content: "\f22a"; } + +.fa-mars-stroke-v::before { + content: "\f22a"; } + +.fa-champagne-glasses::before { + content: "\f79f"; } + +.fa-glass-cheers::before { + content: "\f79f"; } + +.fa-clipboard::before { + content: "\f328"; } + +.fa-house-circle-exclamation::before { + content: "\e50a"; } + +.fa-file-arrow-up::before { + content: "\f574"; } + +.fa-file-upload::before { + content: "\f574"; } + +.fa-wifi::before { + content: "\f1eb"; } + +.fa-wifi-3::before { + content: "\f1eb"; } + +.fa-wifi-strong::before { + content: "\f1eb"; } + +.fa-bath::before { + content: "\f2cd"; } + +.fa-bathtub::before { + content: "\f2cd"; } + +.fa-underline::before { + content: "\f0cd"; } + +.fa-user-pen::before { + content: "\f4ff"; } + +.fa-user-edit::before { + content: "\f4ff"; } + +.fa-signature::before { + content: "\f5b7"; } + +.fa-stroopwafel::before { + content: "\f551"; } + +.fa-bold::before { + content: "\f032"; } + +.fa-anchor-lock::before { + content: "\e4ad"; } + +.fa-building-ngo::before { + content: "\e4d7"; } + +.fa-manat-sign::before { + content: "\e1d5"; } + +.fa-not-equal::before { + content: "\f53e"; } + +.fa-border-top-left::before { + content: "\f853"; } + +.fa-border-style::before { + content: "\f853"; } + +.fa-map-location-dot::before { + content: "\f5a0"; } + +.fa-map-marked-alt::before { + content: "\f5a0"; } + +.fa-jedi::before { + content: "\f669"; } + +.fa-square-poll-vertical::before { + content: "\f681"; } + +.fa-poll::before { + content: "\f681"; } + +.fa-mug-hot::before { + content: "\f7b6"; } + +.fa-car-battery::before { + content: "\f5df"; } + +.fa-battery-car::before { + content: "\f5df"; } + +.fa-gift::before { + content: "\f06b"; } + +.fa-dice-two::before { + content: "\f528"; } + +.fa-chess-queen::before { + content: "\f445"; } + +.fa-glasses::before { + content: "\f530"; } + +.fa-chess-board::before { + content: "\f43c"; } + +.fa-building-circle-check::before { + content: "\e4d2"; } + +.fa-person-chalkboard::before { + content: "\e53d"; } + +.fa-mars-stroke-right::before { + content: "\f22b"; } + +.fa-mars-stroke-h::before { + content: "\f22b"; } + +.fa-hand-back-fist::before { + content: "\f255"; } + +.fa-hand-rock::before { + content: "\f255"; } + +.fa-square-caret-up::before { + content: "\f151"; } + +.fa-caret-square-up::before { + content: "\f151"; } + +.fa-cloud-showers-water::before { + content: "\e4e4"; } + +.fa-chart-bar::before { + content: "\f080"; } + +.fa-bar-chart::before { + content: "\f080"; } + +.fa-hands-bubbles::before { + content: "\e05e"; } + +.fa-hands-wash::before { + content: "\e05e"; } + +.fa-less-than-equal::before { + content: "\f537"; } + +.fa-train::before { + content: "\f238"; } + +.fa-eye-low-vision::before { + content: "\f2a8"; } + +.fa-low-vision::before { + content: "\f2a8"; } + +.fa-crow::before { + content: "\f520"; } + +.fa-sailboat::before { + content: "\e445"; } + +.fa-window-restore::before { + content: "\f2d2"; } + +.fa-square-plus::before { + content: "\f0fe"; } + +.fa-plus-square::before { + content: "\f0fe"; } + +.fa-torii-gate::before { + content: "\f6a1"; } + +.fa-frog::before { + content: "\f52e"; } + +.fa-bucket::before { + content: "\e4cf"; } + +.fa-image::before { + content: "\f03e"; } + +.fa-microphone::before { + content: "\f130"; } + +.fa-cow::before { + content: "\f6c8"; } + +.fa-caret-up::before { + content: "\f0d8"; } + +.fa-screwdriver::before { + content: "\f54a"; } + +.fa-folder-closed::before { + content: "\e185"; } + +.fa-house-tsunami::before { + content: "\e515"; } + +.fa-square-nfi::before { + content: "\e576"; } + +.fa-arrow-up-from-ground-water::before { + content: "\e4b5"; } + +.fa-martini-glass::before { + content: "\f57b"; } + +.fa-glass-martini-alt::before { + content: "\f57b"; } + +.fa-rotate-left::before { + content: "\f2ea"; } + +.fa-rotate-back::before { + content: "\f2ea"; } + +.fa-rotate-backward::before { + content: "\f2ea"; } + +.fa-undo-alt::before { + content: "\f2ea"; } + +.fa-table-columns::before { + content: "\f0db"; } + +.fa-columns::before { + content: "\f0db"; } + +.fa-lemon::before { + content: "\f094"; } + +.fa-head-side-mask::before { + content: "\e063"; } + +.fa-handshake::before { + content: "\f2b5"; } + +.fa-gem::before { + content: "\f3a5"; } + +.fa-dolly::before { + content: "\f472"; } + +.fa-dolly-box::before { + content: "\f472"; } + +.fa-smoking::before { + content: "\f48d"; } + +.fa-minimize::before { + content: "\f78c"; } + +.fa-compress-arrows-alt::before { + content: "\f78c"; } + +.fa-monument::before { + content: "\f5a6"; } + +.fa-snowplow::before { + content: "\f7d2"; } + +.fa-angles-right::before { + content: "\f101"; } + +.fa-angle-double-right::before { + content: "\f101"; } + +.fa-cannabis::before { + content: "\f55f"; } + +.fa-circle-play::before { + content: "\f144"; } + +.fa-play-circle::before { + content: "\f144"; } + +.fa-tablets::before { + content: "\f490"; } + +.fa-ethernet::before { + content: "\f796"; } + +.fa-euro-sign::before { + content: "\f153"; } + +.fa-eur::before { + content: "\f153"; } + +.fa-euro::before { + content: "\f153"; } + +.fa-chair::before { + content: "\f6c0"; } + +.fa-circle-check::before { + content: "\f058"; } + +.fa-check-circle::before { + content: "\f058"; } + +.fa-circle-stop::before { + content: "\f28d"; } + +.fa-stop-circle::before { + content: "\f28d"; } + +.fa-compass-drafting::before { + content: "\f568"; } + +.fa-drafting-compass::before { + content: "\f568"; } + +.fa-plate-wheat::before { + content: "\e55a"; } + +.fa-icicles::before { + content: "\f7ad"; } + +.fa-person-shelter::before { + content: "\e54f"; } + +.fa-neuter::before { + content: "\f22c"; } + +.fa-id-badge::before { + content: "\f2c1"; } + +.fa-marker::before { + content: "\f5a1"; } + +.fa-face-laugh-beam::before { + content: "\f59a"; } + +.fa-laugh-beam::before { + content: "\f59a"; } + +.fa-helicopter-symbol::before { + content: "\e502"; } + +.fa-universal-access::before { + content: "\f29a"; } + +.fa-circle-chevron-up::before { + content: "\f139"; } + +.fa-chevron-circle-up::before { + content: "\f139"; } + +.fa-lari-sign::before { + content: "\e1c8"; } + +.fa-volcano::before { + content: "\f770"; } + +.fa-person-walking-dashed-line-arrow-right::before { + content: "\e553"; } + +.fa-sterling-sign::before { + content: "\f154"; } + +.fa-gbp::before { + content: "\f154"; } + +.fa-pound-sign::before { + content: "\f154"; } + +.fa-viruses::before { + content: "\e076"; } + +.fa-square-person-confined::before { + content: "\e577"; } + +.fa-user-tie::before { + content: "\f508"; } + +.fa-arrow-down-long::before { + content: "\f175"; } + +.fa-long-arrow-down::before { + content: "\f175"; } + +.fa-tent-arrow-down-to-line::before { + content: "\e57e"; } + +.fa-certificate::before { + content: "\f0a3"; } + +.fa-reply-all::before { + content: "\f122"; } + +.fa-mail-reply-all::before { + content: "\f122"; } + +.fa-suitcase::before { + content: "\f0f2"; } + +.fa-person-skating::before { + content: "\f7c5"; } + +.fa-skating::before { + content: "\f7c5"; } + +.fa-filter-circle-dollar::before { + content: "\f662"; } + +.fa-funnel-dollar::before { + content: "\f662"; } + +.fa-camera-retro::before { + content: "\f083"; } + +.fa-circle-arrow-down::before { + content: "\f0ab"; } + +.fa-arrow-circle-down::before { + content: "\f0ab"; } + +.fa-file-import::before { + content: "\f56f"; } + +.fa-arrow-right-to-file::before { + content: "\f56f"; } + +.fa-square-arrow-up-right::before { + content: "\f14c"; } + +.fa-external-link-square::before { + content: "\f14c"; } + +.fa-box-open::before { + content: "\f49e"; } + +.fa-scroll::before { + content: "\f70e"; } + +.fa-spa::before { + content: "\f5bb"; } + +.fa-location-pin-lock::before { + content: "\e51f"; } + +.fa-pause::before { + content: "\f04c"; } + +.fa-hill-avalanche::before { + content: "\e507"; } + +.fa-temperature-empty::before { + content: "\f2cb"; } + +.fa-temperature-0::before { + content: "\f2cb"; } + +.fa-thermometer-0::before { + content: "\f2cb"; } + +.fa-thermometer-empty::before { + content: "\f2cb"; } + +.fa-bomb::before { + content: "\f1e2"; } + +.fa-registered::before { + content: "\f25d"; } + +.fa-address-card::before { + content: "\f2bb"; } + +.fa-contact-card::before { + content: "\f2bb"; } + +.fa-vcard::before { + content: "\f2bb"; } + +.fa-scale-unbalanced-flip::before { + content: "\f516"; } + +.fa-balance-scale-right::before { + content: "\f516"; } + +.fa-subscript::before { + content: "\f12c"; } + +.fa-diamond-turn-right::before { + content: "\f5eb"; } + +.fa-directions::before { + content: "\f5eb"; } + +.fa-burst::before { + content: "\e4dc"; } + +.fa-house-laptop::before { + content: "\e066"; } + +.fa-laptop-house::before { + content: "\e066"; } + +.fa-face-tired::before { + content: "\f5c8"; } + +.fa-tired::before { + content: "\f5c8"; } + +.fa-money-bills::before { + content: "\e1f3"; } + +.fa-smog::before { + content: "\f75f"; } + +.fa-crutch::before { + content: "\f7f7"; } + +.fa-cloud-arrow-up::before { + content: "\f0ee"; } + +.fa-cloud-upload::before { + content: "\f0ee"; } + +.fa-cloud-upload-alt::before { + content: "\f0ee"; } + +.fa-palette::before { + content: "\f53f"; } + +.fa-arrows-turn-right::before { + content: "\e4c0"; } + +.fa-vest::before { + content: "\e085"; } + +.fa-ferry::before { + content: "\e4ea"; } + +.fa-arrows-down-to-people::before { + content: "\e4b9"; } + +.fa-seedling::before { + content: "\f4d8"; } + +.fa-sprout::before { + content: "\f4d8"; } + +.fa-left-right::before { + content: "\f337"; } + +.fa-arrows-alt-h::before { + content: "\f337"; } + +.fa-boxes-packing::before { + content: "\e4c7"; } + +.fa-circle-arrow-left::before { + content: "\f0a8"; } + +.fa-arrow-circle-left::before { + content: "\f0a8"; } + +.fa-group-arrows-rotate::before { + content: "\e4f6"; } + +.fa-bowl-food::before { + content: "\e4c6"; } + +.fa-candy-cane::before { + content: "\f786"; } + +.fa-arrow-down-wide-short::before { + content: "\f160"; } + +.fa-sort-amount-asc::before { + content: "\f160"; } + +.fa-sort-amount-down::before { + content: "\f160"; } + +.fa-cloud-bolt::before { + content: "\f76c"; } + +.fa-thunderstorm::before { + content: "\f76c"; } + +.fa-text-slash::before { + content: "\f87d"; } + +.fa-remove-format::before { + content: "\f87d"; } + +.fa-face-smile-wink::before { + content: "\f4da"; } + +.fa-smile-wink::before { + content: "\f4da"; } + +.fa-file-word::before { + content: "\f1c2"; } + +.fa-file-powerpoint::before { + content: "\f1c4"; } + +.fa-arrows-left-right::before { + content: "\f07e"; } + +.fa-arrows-h::before { + content: "\f07e"; } + +.fa-house-lock::before { + content: "\e510"; } + +.fa-cloud-arrow-down::before { + content: "\f0ed"; } + +.fa-cloud-download::before { + content: "\f0ed"; } + +.fa-cloud-download-alt::before { + content: "\f0ed"; } + +.fa-children::before { + content: "\e4e1"; } + +.fa-chalkboard::before { + content: "\f51b"; } + +.fa-blackboard::before { + content: "\f51b"; } + +.fa-user-large-slash::before { + content: "\f4fa"; } + +.fa-user-alt-slash::before { + content: "\f4fa"; } + +.fa-envelope-open::before { + content: "\f2b6"; } + +.fa-handshake-simple-slash::before { + content: "\e05f"; } + +.fa-handshake-alt-slash::before { + content: "\e05f"; } + +.fa-mattress-pillow::before { + content: "\e525"; } + +.fa-guarani-sign::before { + content: "\e19a"; } + +.fa-arrows-rotate::before { + content: "\f021"; } + +.fa-refresh::before { + content: "\f021"; } + +.fa-sync::before { + content: "\f021"; } + +.fa-fire-extinguisher::before { + content: "\f134"; } + +.fa-cruzeiro-sign::before { + content: "\e152"; } + +.fa-greater-than-equal::before { + content: "\f532"; } + +.fa-shield-halved::before { + content: "\f3ed"; } + +.fa-shield-alt::before { + content: "\f3ed"; } + +.fa-book-atlas::before { + content: "\f558"; } + +.fa-atlas::before { + content: "\f558"; } + +.fa-virus::before { + content: "\e074"; } + +.fa-envelope-circle-check::before { + content: "\e4e8"; } + +.fa-layer-group::before { + content: "\f5fd"; } + +.fa-arrows-to-dot::before { + content: "\e4be"; } + +.fa-archway::before { + content: "\f557"; } + +.fa-heart-circle-check::before { + content: "\e4fd"; } + +.fa-house-chimney-crack::before { + content: "\f6f1"; } + +.fa-house-damage::before { + content: "\f6f1"; } + +.fa-file-zipper::before { + content: "\f1c6"; } + +.fa-file-archive::before { + content: "\f1c6"; } + +.fa-square::before { + content: "\f0c8"; } + +.fa-martini-glass-empty::before { + content: "\f000"; } + +.fa-glass-martini::before { + content: "\f000"; } + +.fa-couch::before { + content: "\f4b8"; } + +.fa-cedi-sign::before { + content: "\e0df"; } + +.fa-italic::before { + content: "\f033"; } + +.fa-church::before { + content: "\f51d"; } + +.fa-comments-dollar::before { + content: "\f653"; } + +.fa-democrat::before { + content: "\f747"; } + +.fa-z::before { + content: "\5a"; } + +.fa-person-skiing::before { + content: "\f7c9"; } + +.fa-skiing::before { + content: "\f7c9"; } + +.fa-road-lock::before { + content: "\e567"; } + +.fa-a::before { + content: "\41"; } + +.fa-temperature-arrow-down::before { + content: "\e03f"; } + +.fa-temperature-down::before { + content: "\e03f"; } + +.fa-feather-pointed::before { + content: "\f56b"; } + +.fa-feather-alt::before { + content: "\f56b"; } + +.fa-p::before { + content: "\50"; } + +.fa-snowflake::before { + content: "\f2dc"; } + +.fa-newspaper::before { + content: "\f1ea"; } + +.fa-rectangle-ad::before { + content: "\f641"; } + +.fa-ad::before { + content: "\f641"; } + +.fa-circle-arrow-right::before { + content: "\f0a9"; } + +.fa-arrow-circle-right::before { + content: "\f0a9"; } + +.fa-filter-circle-xmark::before { + content: "\e17b"; } + +.fa-locust::before { + content: "\e520"; } + +.fa-sort::before { + content: "\f0dc"; } + +.fa-unsorted::before { + content: "\f0dc"; } + +.fa-list-ol::before { + content: "\f0cb"; } + +.fa-list-1-2::before { + content: "\f0cb"; } + +.fa-list-numeric::before { + content: "\f0cb"; } + +.fa-person-dress-burst::before { + content: "\e544"; } + +.fa-money-check-dollar::before { + content: "\f53d"; } + +.fa-money-check-alt::before { + content: "\f53d"; } + +.fa-vector-square::before { + content: "\f5cb"; } + +.fa-bread-slice::before { + content: "\f7ec"; } + +.fa-language::before { + content: "\f1ab"; } + +.fa-face-kiss-wink-heart::before { + content: "\f598"; } + +.fa-kiss-wink-heart::before { + content: "\f598"; } + +.fa-filter::before { + content: "\f0b0"; } + +.fa-question::before { + content: "\3f"; } + +.fa-file-signature::before { + content: "\f573"; } + +.fa-up-down-left-right::before { + content: "\f0b2"; } + +.fa-arrows-alt::before { + content: "\f0b2"; } + +.fa-house-chimney-user::before { + content: "\e065"; } + +.fa-hand-holding-heart::before { + content: "\f4be"; } + +.fa-puzzle-piece::before { + content: "\f12e"; } + +.fa-money-check::before { + content: "\f53c"; } + +.fa-star-half-stroke::before { + content: "\f5c0"; } + +.fa-star-half-alt::before { + content: "\f5c0"; } + +.fa-code::before { + content: "\f121"; } + +.fa-whiskey-glass::before { + content: "\f7a0"; } + +.fa-glass-whiskey::before { + content: "\f7a0"; } + +.fa-building-circle-exclamation::before { + content: "\e4d3"; } + +.fa-magnifying-glass-chart::before { + content: "\e522"; } + +.fa-arrow-up-right-from-square::before { + content: "\f08e"; } + +.fa-external-link::before { + content: "\f08e"; } + +.fa-cubes-stacked::before { + content: "\e4e6"; } + +.fa-won-sign::before { + content: "\f159"; } + +.fa-krw::before { + content: "\f159"; } + +.fa-won::before { + content: "\f159"; } + +.fa-virus-covid::before { + content: "\e4a8"; } + +.fa-austral-sign::before { + content: "\e0a9"; } + +.fa-f::before { + content: "\46"; } + +.fa-leaf::before { + content: "\f06c"; } + +.fa-road::before { + content: "\f018"; } + +.fa-taxi::before { + content: "\f1ba"; } + +.fa-cab::before { + content: "\f1ba"; } + +.fa-person-circle-plus::before { + content: "\e541"; } + +.fa-chart-pie::before { + content: "\f200"; } + +.fa-pie-chart::before { + content: "\f200"; } + +.fa-bolt-lightning::before { + content: "\e0b7"; } + +.fa-sack-xmark::before { + content: "\e56a"; } + +.fa-file-excel::before { + content: "\f1c3"; } + +.fa-file-contract::before { + content: "\f56c"; } + +.fa-fish-fins::before { + content: "\e4f2"; } + +.fa-building-flag::before { + content: "\e4d5"; } + +.fa-face-grin-beam::before { + content: "\f582"; } + +.fa-grin-beam::before { + content: "\f582"; } + +.fa-object-ungroup::before { + content: "\f248"; } + +.fa-poop::before { + content: "\f619"; } + +.fa-location-pin::before { + content: "\f041"; } + +.fa-map-marker::before { + content: "\f041"; } + +.fa-kaaba::before { + content: "\f66b"; } + +.fa-toilet-paper::before { + content: "\f71e"; } + +.fa-helmet-safety::before { + content: "\f807"; } + +.fa-hard-hat::before { + content: "\f807"; } + +.fa-hat-hard::before { + content: "\f807"; } + +.fa-eject::before { + content: "\f052"; } + +.fa-circle-right::before { + content: "\f35a"; } + +.fa-arrow-alt-circle-right::before { + content: "\f35a"; } + +.fa-plane-circle-check::before { + content: "\e555"; } + +.fa-face-rolling-eyes::before { + content: "\f5a5"; } + +.fa-meh-rolling-eyes::before { + content: "\f5a5"; } + +.fa-object-group::before { + content: "\f247"; } + +.fa-chart-line::before { + content: "\f201"; } + +.fa-line-chart::before { + content: "\f201"; } + +.fa-mask-ventilator::before { + content: "\e524"; } + +.fa-arrow-right::before { + content: "\f061"; } + +.fa-signs-post::before { + content: "\f277"; } + +.fa-map-signs::before { + content: "\f277"; } + +.fa-cash-register::before { + content: "\f788"; } + +.fa-person-circle-question::before { + content: "\e542"; } + +.fa-h::before { + content: "\48"; } + +.fa-tarp::before { + content: "\e57b"; } + +.fa-screwdriver-wrench::before { + content: "\f7d9"; } + +.fa-tools::before { + content: "\f7d9"; } + +.fa-arrows-to-eye::before { + content: "\e4bf"; } + +.fa-plug-circle-bolt::before { + content: "\e55b"; } + +.fa-heart::before { + content: "\f004"; } + +.fa-mars-and-venus::before { + content: "\f224"; } + +.fa-house-user::before { + content: "\e1b0"; } + +.fa-home-user::before { + content: "\e1b0"; } + +.fa-dumpster-fire::before { + content: "\f794"; } + +.fa-house-crack::before { + content: "\e3b1"; } + +.fa-martini-glass-citrus::before { + content: "\f561"; } + +.fa-cocktail::before { + content: "\f561"; } + +.fa-face-surprise::before { + content: "\f5c2"; } + +.fa-surprise::before { + content: "\f5c2"; } + +.fa-bottle-water::before { + content: "\e4c5"; } + +.fa-circle-pause::before { + content: "\f28b"; } + +.fa-pause-circle::before { + content: "\f28b"; } + +.fa-toilet-paper-slash::before { + content: "\e072"; } + +.fa-apple-whole::before { + content: "\f5d1"; } + +.fa-apple-alt::before { + content: "\f5d1"; } + +.fa-kitchen-set::before { + content: "\e51a"; } + +.fa-r::before { + content: "\52"; } + +.fa-temperature-quarter::before { + content: "\f2ca"; } + +.fa-temperature-1::before { + content: "\f2ca"; } + +.fa-thermometer-1::before { + content: "\f2ca"; } + +.fa-thermometer-quarter::before { + content: "\f2ca"; } + +.fa-cube::before { + content: "\f1b2"; } + +.fa-bitcoin-sign::before { + content: "\e0b4"; } + +.fa-shield-dog::before { + content: "\e573"; } + +.fa-solar-panel::before { + content: "\f5ba"; } + +.fa-lock-open::before { + content: "\f3c1"; } + +.fa-elevator::before { + content: "\e16d"; } + +.fa-money-bill-transfer::before { + content: "\e528"; } + +.fa-money-bill-trend-up::before { + content: "\e529"; } + +.fa-house-flood-water-circle-arrow-right::before { + content: "\e50f"; } + +.fa-square-poll-horizontal::before { + content: "\f682"; } + +.fa-poll-h::before { + content: "\f682"; } + +.fa-circle::before { + content: "\f111"; } + +.fa-backward-fast::before { + content: "\f049"; } + +.fa-fast-backward::before { + content: "\f049"; } + +.fa-recycle::before { + content: "\f1b8"; } + +.fa-user-astronaut::before { + content: "\f4fb"; } + +.fa-plane-slash::before { + content: "\e069"; } + +.fa-trademark::before { + content: "\f25c"; } + +.fa-basketball::before { + content: "\f434"; } + +.fa-basketball-ball::before { + content: "\f434"; } + +.fa-satellite-dish::before { + content: "\f7c0"; } + +.fa-circle-up::before { + content: "\f35b"; } + +.fa-arrow-alt-circle-up::before { + content: "\f35b"; } + +.fa-mobile-screen-button::before { + content: "\f3cd"; } + +.fa-mobile-alt::before { + content: "\f3cd"; } + +.fa-volume-high::before { + content: "\f028"; } + +.fa-volume-up::before { + content: "\f028"; } + +.fa-users-rays::before { + content: "\e593"; } + +.fa-wallet::before { + content: "\f555"; } + +.fa-clipboard-check::before { + content: "\f46c"; } + +.fa-file-audio::before { + content: "\f1c7"; } + +.fa-burger::before { + content: "\f805"; } + +.fa-hamburger::before { + content: "\f805"; } + +.fa-wrench::before { + content: "\f0ad"; } + +.fa-bugs::before { + content: "\e4d0"; } + +.fa-rupee-sign::before { + content: "\f156"; } + +.fa-rupee::before { + content: "\f156"; } + +.fa-file-image::before { + content: "\f1c5"; } + +.fa-circle-question::before { + content: "\f059"; } + +.fa-question-circle::before { + content: "\f059"; } + +.fa-plane-departure::before { + content: "\f5b0"; } + +.fa-handshake-slash::before { + content: "\e060"; } + +.fa-book-bookmark::before { + content: "\e0bb"; } + +.fa-code-branch::before { + content: "\f126"; } + +.fa-hat-cowboy::before { + content: "\f8c0"; } + +.fa-bridge::before { + content: "\e4c8"; } + +.fa-phone-flip::before { + content: "\f879"; } + +.fa-phone-alt::before { + content: "\f879"; } + +.fa-truck-front::before { + content: "\e2b7"; } + +.fa-cat::before { + content: "\f6be"; } + +.fa-anchor-circle-exclamation::before { + content: "\e4ab"; } + +.fa-truck-field::before { + content: "\e58d"; } + +.fa-route::before { + content: "\f4d7"; } + +.fa-clipboard-question::before { + content: "\e4e3"; } + +.fa-panorama::before { + content: "\e209"; } + +.fa-comment-medical::before { + content: "\f7f5"; } + +.fa-teeth-open::before { + content: "\f62f"; } + +.fa-file-circle-minus::before { + content: "\e4ed"; } + +.fa-tags::before { + content: "\f02c"; } + +.fa-wine-glass::before { + content: "\f4e3"; } + +.fa-forward-fast::before { + content: "\f050"; } + +.fa-fast-forward::before { + content: "\f050"; } + +.fa-face-meh-blank::before { + content: "\f5a4"; } + +.fa-meh-blank::before { + content: "\f5a4"; } + +.fa-square-parking::before { + content: "\f540"; } + +.fa-parking::before { + content: "\f540"; } + +.fa-house-signal::before { + content: "\e012"; } + +.fa-bars-progress::before { + content: "\f828"; } + +.fa-tasks-alt::before { + content: "\f828"; } + +.fa-faucet-drip::before { + content: "\e006"; } + +.fa-cart-flatbed::before { + content: "\f474"; } + +.fa-dolly-flatbed::before { + content: "\f474"; } + +.fa-ban-smoking::before { + content: "\f54d"; } + +.fa-smoking-ban::before { + content: "\f54d"; } + +.fa-terminal::before { + content: "\f120"; } + +.fa-mobile-button::before { + content: "\f10b"; } + +.fa-house-medical-flag::before { + content: "\e514"; } + +.fa-basket-shopping::before { + content: "\f291"; } + +.fa-shopping-basket::before { + content: "\f291"; } + +.fa-tape::before { + content: "\f4db"; } + +.fa-bus-simple::before { + content: "\f55e"; } + +.fa-bus-alt::before { + content: "\f55e"; } + +.fa-eye::before { + content: "\f06e"; } + +.fa-face-sad-cry::before { + content: "\f5b3"; } + +.fa-sad-cry::before { + content: "\f5b3"; } + +.fa-audio-description::before { + content: "\f29e"; } + +.fa-person-military-to-person::before { + content: "\e54c"; } + +.fa-file-shield::before { + content: "\e4f0"; } + +.fa-user-slash::before { + content: "\f506"; } + +.fa-pen::before { + content: "\f304"; } + +.fa-tower-observation::before { + content: "\e586"; } + +.fa-file-code::before { + content: "\f1c9"; } + +.fa-signal::before { + content: "\f012"; } + +.fa-signal-5::before { + content: "\f012"; } + +.fa-signal-perfect::before { + content: "\f012"; } + +.fa-bus::before { + content: "\f207"; } + +.fa-heart-circle-xmark::before { + content: "\e501"; } + +.fa-house-chimney::before { + content: "\e3af"; } + +.fa-home-lg::before { + content: "\e3af"; } + +.fa-window-maximize::before { + content: "\f2d0"; } + +.fa-face-frown::before { + content: "\f119"; } + +.fa-frown::before { + content: "\f119"; } + +.fa-prescription::before { + content: "\f5b1"; } + +.fa-shop::before { + content: "\f54f"; } + +.fa-store-alt::before { + content: "\f54f"; } + +.fa-floppy-disk::before { + content: "\f0c7"; } + +.fa-save::before { + content: "\f0c7"; } + +.fa-vihara::before { + content: "\f6a7"; } + +.fa-scale-unbalanced::before { + content: "\f515"; } + +.fa-balance-scale-left::before { + content: "\f515"; } + +.fa-sort-up::before { + content: "\f0de"; } + +.fa-sort-asc::before { + content: "\f0de"; } + +.fa-comment-dots::before { + content: "\f4ad"; } + +.fa-commenting::before { + content: "\f4ad"; } + +.fa-plant-wilt::before { + content: "\e5aa"; } + +.fa-diamond::before { + content: "\f219"; } + +.fa-face-grin-squint::before { + content: "\f585"; } + +.fa-grin-squint::before { + content: "\f585"; } + +.fa-hand-holding-dollar::before { + content: "\f4c0"; } + +.fa-hand-holding-usd::before { + content: "\f4c0"; } + +.fa-bacterium::before { + content: "\e05a"; } + +.fa-hand-pointer::before { + content: "\f25a"; } + +.fa-drum-steelpan::before { + content: "\f56a"; } + +.fa-hand-scissors::before { + content: "\f257"; } + +.fa-hands-praying::before { + content: "\f684"; } + +.fa-praying-hands::before { + content: "\f684"; } + +.fa-arrow-rotate-right::before { + content: "\f01e"; } + +.fa-arrow-right-rotate::before { + content: "\f01e"; } + +.fa-arrow-rotate-forward::before { + content: "\f01e"; } + +.fa-redo::before { + content: "\f01e"; } + +.fa-biohazard::before { + content: "\f780"; } + +.fa-location-crosshairs::before { + content: "\f601"; } + +.fa-location::before { + content: "\f601"; } + +.fa-mars-double::before { + content: "\f227"; } + +.fa-child-dress::before { + content: "\e59c"; } + +.fa-users-between-lines::before { + content: "\e591"; } + +.fa-lungs-virus::before { + content: "\e067"; } + +.fa-face-grin-tears::before { + content: "\f588"; } + +.fa-grin-tears::before { + content: "\f588"; } + +.fa-phone::before { + content: "\f095"; } + +.fa-calendar-xmark::before { + content: "\f273"; } + +.fa-calendar-times::before { + content: "\f273"; } + +.fa-child-reaching::before { + content: "\e59d"; } + +.fa-head-side-virus::before { + content: "\e064"; } + +.fa-user-gear::before { + content: "\f4fe"; } + +.fa-user-cog::before { + content: "\f4fe"; } + +.fa-arrow-up-1-9::before { + content: "\f163"; } + +.fa-sort-numeric-up::before { + content: "\f163"; } + +.fa-door-closed::before { + content: "\f52a"; } + +.fa-shield-virus::before { + content: "\e06c"; } + +.fa-dice-six::before { + content: "\f526"; } + +.fa-mosquito-net::before { + content: "\e52c"; } + +.fa-bridge-water::before { + content: "\e4ce"; } + +.fa-person-booth::before { + content: "\f756"; } + +.fa-text-width::before { + content: "\f035"; } + +.fa-hat-wizard::before { + content: "\f6e8"; } + +.fa-pen-fancy::before { + content: "\f5ac"; } + +.fa-person-digging::before { + content: "\f85e"; } + +.fa-digging::before { + content: "\f85e"; } + +.fa-trash::before { + content: "\f1f8"; } + +.fa-gauge-simple::before { + content: "\f629"; } + +.fa-gauge-simple-med::before { + content: "\f629"; } + +.fa-tachometer-average::before { + content: "\f629"; } + +.fa-book-medical::before { + content: "\f7e6"; } + +.fa-poo::before { + content: "\f2fe"; } + +.fa-quote-right::before { + content: "\f10e"; } + +.fa-quote-right-alt::before { + content: "\f10e"; } + +.fa-shirt::before { + content: "\f553"; } + +.fa-t-shirt::before { + content: "\f553"; } + +.fa-tshirt::before { + content: "\f553"; } + +.fa-cubes::before { + content: "\f1b3"; } + +.fa-divide::before { + content: "\f529"; } + +.fa-tenge-sign::before { + content: "\f7d7"; } + +.fa-tenge::before { + content: "\f7d7"; } + +.fa-headphones::before { + content: "\f025"; } + +.fa-hands-holding::before { + content: "\f4c2"; } + +.fa-hands-clapping::before { + content: "\e1a8"; } + +.fa-republican::before { + content: "\f75e"; } + +.fa-arrow-left::before { + content: "\f060"; } + +.fa-person-circle-xmark::before { + content: "\e543"; } + +.fa-ruler::before { + content: "\f545"; } + +.fa-align-left::before { + content: "\f036"; } + +.fa-dice-d6::before { + content: "\f6d1"; } + +.fa-restroom::before { + content: "\f7bd"; } + +.fa-j::before { + content: "\4a"; } + +.fa-users-viewfinder::before { + content: "\e595"; } + +.fa-file-video::before { + content: "\f1c8"; } + +.fa-up-right-from-square::before { + content: "\f35d"; } + +.fa-external-link-alt::before { + content: "\f35d"; } + +.fa-table-cells::before { + content: "\f00a"; } + +.fa-th::before { + content: "\f00a"; } + +.fa-file-pdf::before { + content: "\f1c1"; } + +.fa-book-bible::before { + content: "\f647"; } + +.fa-bible::before { + content: "\f647"; } + +.fa-o::before { + content: "\4f"; } + +.fa-suitcase-medical::before { + content: "\f0fa"; } + +.fa-medkit::before { + content: "\f0fa"; } + +.fa-user-secret::before { + content: "\f21b"; } + +.fa-otter::before { + content: "\f700"; } + +.fa-person-dress::before { + content: "\f182"; } + +.fa-female::before { + content: "\f182"; } + +.fa-comment-dollar::before { + content: "\f651"; } + +.fa-business-time::before { + content: "\f64a"; } + +.fa-briefcase-clock::before { + content: "\f64a"; } + +.fa-table-cells-large::before { + content: "\f009"; } + +.fa-th-large::before { + content: "\f009"; } + +.fa-book-tanakh::before { + content: "\f827"; } + +.fa-tanakh::before { + content: "\f827"; } + +.fa-phone-volume::before { + content: "\f2a0"; } + +.fa-volume-control-phone::before { + content: "\f2a0"; } + +.fa-hat-cowboy-side::before { + content: "\f8c1"; } + +.fa-clipboard-user::before { + content: "\f7f3"; } + +.fa-child::before { + content: "\f1ae"; } + +.fa-lira-sign::before { + content: "\f195"; } + +.fa-satellite::before { + content: "\f7bf"; } + +.fa-plane-lock::before { + content: "\e558"; } + +.fa-tag::before { + content: "\f02b"; } + +.fa-comment::before { + content: "\f075"; } + +.fa-cake-candles::before { + content: "\f1fd"; } + +.fa-birthday-cake::before { + content: "\f1fd"; } + +.fa-cake::before { + content: "\f1fd"; } + +.fa-envelope::before { + content: "\f0e0"; } + +.fa-angles-up::before { + content: "\f102"; } + +.fa-angle-double-up::before { + content: "\f102"; } + +.fa-paperclip::before { + content: "\f0c6"; } + +.fa-arrow-right-to-city::before { + content: "\e4b3"; } + +.fa-ribbon::before { + content: "\f4d6"; } + +.fa-lungs::before { + content: "\f604"; } + +.fa-arrow-up-9-1::before { + content: "\f887"; } + +.fa-sort-numeric-up-alt::before { + content: "\f887"; } + +.fa-litecoin-sign::before { + content: "\e1d3"; } + +.fa-border-none::before { + content: "\f850"; } + +.fa-circle-nodes::before { + content: "\e4e2"; } + +.fa-parachute-box::before { + content: "\f4cd"; } + +.fa-indent::before { + content: "\f03c"; } + +.fa-truck-field-un::before { + content: "\e58e"; } + +.fa-hourglass::before { + content: "\f254"; } + +.fa-hourglass-empty::before { + content: "\f254"; } + +.fa-mountain::before { + content: "\f6fc"; } + +.fa-user-doctor::before { + content: "\f0f0"; } + +.fa-user-md::before { + content: "\f0f0"; } + +.fa-circle-info::before { + content: "\f05a"; } + +.fa-info-circle::before { + content: "\f05a"; } + +.fa-cloud-meatball::before { + content: "\f73b"; } + +.fa-camera::before { + content: "\f030"; } + +.fa-camera-alt::before { + content: "\f030"; } + +.fa-square-virus::before { + content: "\e578"; } + +.fa-meteor::before { + content: "\f753"; } + +.fa-car-on::before { + content: "\e4dd"; } + +.fa-sleigh::before { + content: "\f7cc"; } + +.fa-arrow-down-1-9::before { + content: "\f162"; } + +.fa-sort-numeric-asc::before { + content: "\f162"; } + +.fa-sort-numeric-down::before { + content: "\f162"; } + +.fa-hand-holding-droplet::before { + content: "\f4c1"; } + +.fa-hand-holding-water::before { + content: "\f4c1"; } + +.fa-water::before { + content: "\f773"; } + +.fa-calendar-check::before { + content: "\f274"; } + +.fa-braille::before { + content: "\f2a1"; } + +.fa-prescription-bottle-medical::before { + content: "\f486"; } + +.fa-prescription-bottle-alt::before { + content: "\f486"; } + +.fa-landmark::before { + content: "\f66f"; } + +.fa-truck::before { + content: "\f0d1"; } + +.fa-crosshairs::before { + content: "\f05b"; } + +.fa-person-cane::before { + content: "\e53c"; } + +.fa-tent::before { + content: "\e57d"; } + +.fa-vest-patches::before { + content: "\e086"; } + +.fa-check-double::before { + content: "\f560"; } + +.fa-arrow-down-a-z::before { + content: "\f15d"; } + +.fa-sort-alpha-asc::before { + content: "\f15d"; } + +.fa-sort-alpha-down::before { + content: "\f15d"; } + +.fa-money-bill-wheat::before { + content: "\e52a"; } + +.fa-cookie::before { + content: "\f563"; } + +.fa-arrow-rotate-left::before { + content: "\f0e2"; } + +.fa-arrow-left-rotate::before { + content: "\f0e2"; } + +.fa-arrow-rotate-back::before { + content: "\f0e2"; } + +.fa-arrow-rotate-backward::before { + content: "\f0e2"; } + +.fa-undo::before { + content: "\f0e2"; } + +.fa-hard-drive::before { + content: "\f0a0"; } + +.fa-hdd::before { + content: "\f0a0"; } + +.fa-face-grin-squint-tears::before { + content: "\f586"; } + +.fa-grin-squint-tears::before { + content: "\f586"; } + +.fa-dumbbell::before { + content: "\f44b"; } + +.fa-rectangle-list::before { + content: "\f022"; } + +.fa-list-alt::before { + content: "\f022"; } + +.fa-tarp-droplet::before { + content: "\e57c"; } + +.fa-house-medical-circle-check::before { + content: "\e511"; } + +.fa-person-skiing-nordic::before { + content: "\f7ca"; } + +.fa-skiing-nordic::before { + content: "\f7ca"; } + +.fa-calendar-plus::before { + content: "\f271"; } + +.fa-plane-arrival::before { + content: "\f5af"; } + +.fa-circle-left::before { + content: "\f359"; } + +.fa-arrow-alt-circle-left::before { + content: "\f359"; } + +.fa-train-subway::before { + content: "\f239"; } + +.fa-subway::before { + content: "\f239"; } + +.fa-chart-gantt::before { + content: "\e0e4"; } + +.fa-indian-rupee-sign::before { + content: "\e1bc"; } + +.fa-indian-rupee::before { + content: "\e1bc"; } + +.fa-inr::before { + content: "\e1bc"; } + +.fa-crop-simple::before { + content: "\f565"; } + +.fa-crop-alt::before { + content: "\f565"; } + +.fa-money-bill-1::before { + content: "\f3d1"; } + +.fa-money-bill-alt::before { + content: "\f3d1"; } + +.fa-left-long::before { + content: "\f30a"; } + +.fa-long-arrow-alt-left::before { + content: "\f30a"; } + +.fa-dna::before { + content: "\f471"; } + +.fa-virus-slash::before { + content: "\e075"; } + +.fa-minus::before { + content: "\f068"; } + +.fa-subtract::before { + content: "\f068"; } + +.fa-chess::before { + content: "\f439"; } + +.fa-arrow-left-long::before { + content: "\f177"; } + +.fa-long-arrow-left::before { + content: "\f177"; } + +.fa-plug-circle-check::before { + content: "\e55c"; } + +.fa-street-view::before { + content: "\f21d"; } + +.fa-franc-sign::before { + content: "\e18f"; } + +.fa-volume-off::before { + content: "\f026"; } + +.fa-hands-asl-interpreting::before { + content: "\f2a3"; } + +.fa-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-asl-interpreting::before { + content: "\f2a3"; } + +.fa-hands-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-gear::before { + content: "\f013"; } + +.fa-cog::before { + content: "\f013"; } + +.fa-droplet-slash::before { + content: "\f5c7"; } + +.fa-tint-slash::before { + content: "\f5c7"; } + +.fa-mosque::before { + content: "\f678"; } + +.fa-mosquito::before { + content: "\e52b"; } + +.fa-star-of-david::before { + content: "\f69a"; } + +.fa-person-military-rifle::before { + content: "\e54b"; } + +.fa-cart-shopping::before { + content: "\f07a"; } + +.fa-shopping-cart::before { + content: "\f07a"; } + +.fa-vials::before { + content: "\f493"; } + +.fa-plug-circle-plus::before { + content: "\e55f"; } + +.fa-place-of-worship::before { + content: "\f67f"; } + +.fa-grip-vertical::before { + content: "\f58e"; } + +.fa-arrow-turn-up::before { + content: "\f148"; } + +.fa-level-up::before { + content: "\f148"; } + +.fa-u::before { + content: "\55"; } + +.fa-square-root-variable::before { + content: "\f698"; } + +.fa-square-root-alt::before { + content: "\f698"; } + +.fa-clock::before { + content: "\f017"; } + +.fa-clock-four::before { + content: "\f017"; } + +.fa-backward-step::before { + content: "\f048"; } + +.fa-step-backward::before { + content: "\f048"; } + +.fa-pallet::before { + content: "\f482"; } + +.fa-faucet::before { + content: "\e005"; } + +.fa-baseball-bat-ball::before { + content: "\f432"; } + +.fa-s::before { + content: "\53"; } + +.fa-timeline::before { + content: "\e29c"; } + +.fa-keyboard::before { + content: "\f11c"; } + +.fa-caret-down::before { + content: "\f0d7"; } + +.fa-house-chimney-medical::before { + content: "\f7f2"; } + +.fa-clinic-medical::before { + content: "\f7f2"; } + +.fa-temperature-three-quarters::before { + content: "\f2c8"; } + +.fa-temperature-3::before { + content: "\f2c8"; } + +.fa-thermometer-3::before { + content: "\f2c8"; } + +.fa-thermometer-three-quarters::before { + content: "\f2c8"; } + +.fa-mobile-screen::before { + content: "\f3cf"; } + +.fa-mobile-android-alt::before { + content: "\f3cf"; } + +.fa-plane-up::before { + content: "\e22d"; } + +.fa-piggy-bank::before { + content: "\f4d3"; } + +.fa-battery-half::before { + content: "\f242"; } + +.fa-battery-3::before { + content: "\f242"; } + +.fa-mountain-city::before { + content: "\e52e"; } + +.fa-coins::before { + content: "\f51e"; } + +.fa-khanda::before { + content: "\f66d"; } + +.fa-sliders::before { + content: "\f1de"; } + +.fa-sliders-h::before { + content: "\f1de"; } + +.fa-folder-tree::before { + content: "\f802"; } + +.fa-network-wired::before { + content: "\f6ff"; } + +.fa-map-pin::before { + content: "\f276"; } + +.fa-hamsa::before { + content: "\f665"; } + +.fa-cent-sign::before { + content: "\e3f5"; } + +.fa-flask::before { + content: "\f0c3"; } + +.fa-person-pregnant::before { + content: "\e31e"; } + +.fa-wand-sparkles::before { + content: "\f72b"; } + +.fa-ellipsis-vertical::before { + content: "\f142"; } + +.fa-ellipsis-v::before { + content: "\f142"; } + +.fa-ticket::before { + content: "\f145"; } + +.fa-power-off::before { + content: "\f011"; } + +.fa-right-long::before { + content: "\f30b"; } + +.fa-long-arrow-alt-right::before { + content: "\f30b"; } + +.fa-flag-usa::before { + content: "\f74d"; } + +.fa-laptop-file::before { + content: "\e51d"; } + +.fa-tty::before { + content: "\f1e4"; } + +.fa-teletype::before { + content: "\f1e4"; } + +.fa-diagram-next::before { + content: "\e476"; } + +.fa-person-rifle::before { + content: "\e54e"; } + +.fa-house-medical-circle-exclamation::before { + content: "\e512"; } + +.fa-closed-captioning::before { + content: "\f20a"; } + +.fa-person-hiking::before { + content: "\f6ec"; } + +.fa-hiking::before { + content: "\f6ec"; } + +.fa-venus-double::before { + content: "\f226"; } + +.fa-images::before { + content: "\f302"; } + +.fa-calculator::before { + content: "\f1ec"; } + +.fa-people-pulling::before { + content: "\e535"; } + +.fa-n::before { + content: "\4e"; } + +.fa-cable-car::before { + content: "\f7da"; } + +.fa-tram::before { + content: "\f7da"; } + +.fa-cloud-rain::before { + content: "\f73d"; } + +.fa-building-circle-xmark::before { + content: "\e4d4"; } + +.fa-ship::before { + content: "\f21a"; } + +.fa-arrows-down-to-line::before { + content: "\e4b8"; } + +.fa-download::before { + content: "\f019"; } + +.fa-face-grin::before { + content: "\f580"; } + +.fa-grin::before { + content: "\f580"; } + +.fa-delete-left::before { + content: "\f55a"; } + +.fa-backspace::before { + content: "\f55a"; } + +.fa-eye-dropper::before { + content: "\f1fb"; } + +.fa-eye-dropper-empty::before { + content: "\f1fb"; } + +.fa-eyedropper::before { + content: "\f1fb"; } + +.fa-file-circle-check::before { + content: "\e5a0"; } + +.fa-forward::before { + content: "\f04e"; } + +.fa-mobile::before { + content: "\f3ce"; } + +.fa-mobile-android::before { + content: "\f3ce"; } + +.fa-mobile-phone::before { + content: "\f3ce"; } + +.fa-face-meh::before { + content: "\f11a"; } + +.fa-meh::before { + content: "\f11a"; } + +.fa-align-center::before { + content: "\f037"; } + +.fa-book-skull::before { + content: "\f6b7"; } + +.fa-book-dead::before { + content: "\f6b7"; } + +.fa-id-card::before { + content: "\f2c2"; } + +.fa-drivers-license::before { + content: "\f2c2"; } + +.fa-outdent::before { + content: "\f03b"; } + +.fa-dedent::before { + content: "\f03b"; } + +.fa-heart-circle-exclamation::before { + content: "\e4fe"; } + +.fa-house::before { + content: "\f015"; } + +.fa-home::before { + content: "\f015"; } + +.fa-home-alt::before { + content: "\f015"; } + +.fa-home-lg-alt::before { + content: "\f015"; } + +.fa-calendar-week::before { + content: "\f784"; } + +.fa-laptop-medical::before { + content: "\f812"; } + +.fa-b::before { + content: "\42"; } + +.fa-file-medical::before { + content: "\f477"; } + +.fa-dice-one::before { + content: "\f525"; } + +.fa-kiwi-bird::before { + content: "\f535"; } + +.fa-arrow-right-arrow-left::before { + content: "\f0ec"; } + +.fa-exchange::before { + content: "\f0ec"; } + +.fa-rotate-right::before { + content: "\f2f9"; } + +.fa-redo-alt::before { + content: "\f2f9"; } + +.fa-rotate-forward::before { + content: "\f2f9"; } + +.fa-utensils::before { + content: "\f2e7"; } + +.fa-cutlery::before { + content: "\f2e7"; } + +.fa-arrow-up-wide-short::before { + content: "\f161"; } + +.fa-sort-amount-up::before { + content: "\f161"; } + +.fa-mill-sign::before { + content: "\e1ed"; } + +.fa-bowl-rice::before { + content: "\e2eb"; } + +.fa-skull::before { + content: "\f54c"; } + +.fa-tower-broadcast::before { + content: "\f519"; } + +.fa-broadcast-tower::before { + content: "\f519"; } + +.fa-truck-pickup::before { + content: "\f63c"; } + +.fa-up-long::before { + content: "\f30c"; } + +.fa-long-arrow-alt-up::before { + content: "\f30c"; } + +.fa-stop::before { + content: "\f04d"; } + +.fa-code-merge::before { + content: "\f387"; } + +.fa-upload::before { + content: "\f093"; } + +.fa-hurricane::before { + content: "\f751"; } + +.fa-mound::before { + content: "\e52d"; } + +.fa-toilet-portable::before { + content: "\e583"; } + +.fa-compact-disc::before { + content: "\f51f"; } + +.fa-file-arrow-down::before { + content: "\f56d"; } + +.fa-file-download::before { + content: "\f56d"; } + +.fa-caravan::before { + content: "\f8ff"; } + +.fa-shield-cat::before { + content: "\e572"; } + +.fa-bolt::before { + content: "\f0e7"; } + +.fa-zap::before { + content: "\f0e7"; } + +.fa-glass-water::before { + content: "\e4f4"; } + +.fa-oil-well::before { + content: "\e532"; } + +.fa-vault::before { + content: "\e2c5"; } + +.fa-mars::before { + content: "\f222"; } + +.fa-toilet::before { + content: "\f7d8"; } + +.fa-plane-circle-xmark::before { + content: "\e557"; } + +.fa-yen-sign::before { + content: "\f157"; } + +.fa-cny::before { + content: "\f157"; } + +.fa-jpy::before { + content: "\f157"; } + +.fa-rmb::before { + content: "\f157"; } + +.fa-yen::before { + content: "\f157"; } + +.fa-ruble-sign::before { + content: "\f158"; } + +.fa-rouble::before { + content: "\f158"; } + +.fa-rub::before { + content: "\f158"; } + +.fa-ruble::before { + content: "\f158"; } + +.fa-sun::before { + content: "\f185"; } + +.fa-guitar::before { + content: "\f7a6"; } + +.fa-face-laugh-wink::before { + content: "\f59c"; } + +.fa-laugh-wink::before { + content: "\f59c"; } + +.fa-horse-head::before { + content: "\f7ab"; } + +.fa-bore-hole::before { + content: "\e4c3"; } + +.fa-industry::before { + content: "\f275"; } + +.fa-circle-down::before { + content: "\f358"; } + +.fa-arrow-alt-circle-down::before { + content: "\f358"; } + +.fa-arrows-turn-to-dots::before { + content: "\e4c1"; } + +.fa-florin-sign::before { + content: "\e184"; } + +.fa-arrow-down-short-wide::before { + content: "\f884"; } + +.fa-sort-amount-desc::before { + content: "\f884"; } + +.fa-sort-amount-down-alt::before { + content: "\f884"; } + +.fa-less-than::before { + content: "\3c"; } + +.fa-angle-down::before { + content: "\f107"; } + +.fa-car-tunnel::before { + content: "\e4de"; } + +.fa-head-side-cough::before { + content: "\e061"; } + +.fa-grip-lines::before { + content: "\f7a4"; } + +.fa-thumbs-down::before { + content: "\f165"; } + +.fa-user-lock::before { + content: "\f502"; } + +.fa-arrow-right-long::before { + content: "\f178"; } + +.fa-long-arrow-right::before { + content: "\f178"; } + +.fa-anchor-circle-xmark::before { + content: "\e4ac"; } + +.fa-ellipsis::before { + content: "\f141"; } + +.fa-ellipsis-h::before { + content: "\f141"; } + +.fa-chess-pawn::before { + content: "\f443"; } + +.fa-kit-medical::before { + content: "\f479"; } + +.fa-first-aid::before { + content: "\f479"; } + +.fa-person-through-window::before { + content: "\e5a9"; } + +.fa-toolbox::before { + content: "\f552"; } + +.fa-hands-holding-circle::before { + content: "\e4fb"; } + +.fa-bug::before { + content: "\f188"; } + +.fa-credit-card::before { + content: "\f09d"; } + +.fa-credit-card-alt::before { + content: "\f09d"; } + +.fa-car::before { + content: "\f1b9"; } + +.fa-automobile::before { + content: "\f1b9"; } + +.fa-hand-holding-hand::before { + content: "\e4f7"; } + +.fa-book-open-reader::before { + content: "\f5da"; } + +.fa-book-reader::before { + content: "\f5da"; } + +.fa-mountain-sun::before { + content: "\e52f"; } + +.fa-arrows-left-right-to-line::before { + content: "\e4ba"; } + +.fa-dice-d20::before { + content: "\f6cf"; } + +.fa-truck-droplet::before { + content: "\e58c"; } + +.fa-file-circle-xmark::before { + content: "\e5a1"; } + +.fa-temperature-arrow-up::before { + content: "\e040"; } + +.fa-temperature-up::before { + content: "\e040"; } + +.fa-medal::before { + content: "\f5a2"; } + +.fa-bed::before { + content: "\f236"; } + +.fa-square-h::before { + content: "\f0fd"; } + +.fa-h-square::before { + content: "\f0fd"; } + +.fa-podcast::before { + content: "\f2ce"; } + +.fa-temperature-full::before { + content: "\f2c7"; } + +.fa-temperature-4::before { + content: "\f2c7"; } + +.fa-thermometer-4::before { + content: "\f2c7"; } + +.fa-thermometer-full::before { + content: "\f2c7"; } + +.fa-bell::before { + content: "\f0f3"; } + +.fa-superscript::before { + content: "\f12b"; } + +.fa-plug-circle-xmark::before { + content: "\e560"; } + +.fa-star-of-life::before { + content: "\f621"; } + +.fa-phone-slash::before { + content: "\f3dd"; } + +.fa-paint-roller::before { + content: "\f5aa"; } + +.fa-handshake-angle::before { + content: "\f4c4"; } + +.fa-hands-helping::before { + content: "\f4c4"; } + +.fa-location-dot::before { + content: "\f3c5"; } + +.fa-map-marker-alt::before { + content: "\f3c5"; } + +.fa-file::before { + content: "\f15b"; } + +.fa-greater-than::before { + content: "\3e"; } + +.fa-person-swimming::before { + content: "\f5c4"; } + +.fa-swimmer::before { + content: "\f5c4"; } + +.fa-arrow-down::before { + content: "\f063"; } + +.fa-droplet::before { + content: "\f043"; } + +.fa-tint::before { + content: "\f043"; } + +.fa-eraser::before { + content: "\f12d"; } + +.fa-earth-americas::before { + content: "\f57d"; } + +.fa-earth::before { + content: "\f57d"; } + +.fa-earth-america::before { + content: "\f57d"; } + +.fa-globe-americas::before { + content: "\f57d"; } + +.fa-person-burst::before { + content: "\e53b"; } + +.fa-dove::before { + content: "\f4ba"; } + +.fa-battery-empty::before { + content: "\f244"; } + +.fa-battery-0::before { + content: "\f244"; } + +.fa-socks::before { + content: "\f696"; } + +.fa-inbox::before { + content: "\f01c"; } + +.fa-section::before { + content: "\e447"; } + +.fa-gauge-high::before { + content: "\f625"; } + +.fa-tachometer-alt::before { + content: "\f625"; } + +.fa-tachometer-alt-fast::before { + content: "\f625"; } + +.fa-envelope-open-text::before { + content: "\f658"; } + +.fa-hospital::before { + content: "\f0f8"; } + +.fa-hospital-alt::before { + content: "\f0f8"; } + +.fa-hospital-wide::before { + content: "\f0f8"; } + +.fa-wine-bottle::before { + content: "\f72f"; } + +.fa-chess-rook::before { + content: "\f447"; } + +.fa-bars-staggered::before { + content: "\f550"; } + +.fa-reorder::before { + content: "\f550"; } + +.fa-stream::before { + content: "\f550"; } + +.fa-dharmachakra::before { + content: "\f655"; } + +.fa-hotdog::before { + content: "\f80f"; } + +.fa-person-walking-with-cane::before { + content: "\f29d"; } + +.fa-blind::before { + content: "\f29d"; } + +.fa-drum::before { + content: "\f569"; } + +.fa-ice-cream::before { + content: "\f810"; } + +.fa-heart-circle-bolt::before { + content: "\e4fc"; } + +.fa-fax::before { + content: "\f1ac"; } + +.fa-paragraph::before { + content: "\f1dd"; } + +.fa-check-to-slot::before { + content: "\f772"; } + +.fa-vote-yea::before { + content: "\f772"; } + +.fa-star-half::before { + content: "\f089"; } + +.fa-boxes-stacked::before { + content: "\f468"; } + +.fa-boxes::before { + content: "\f468"; } + +.fa-boxes-alt::before { + content: "\f468"; } + +.fa-link::before { + content: "\f0c1"; } + +.fa-chain::before { + content: "\f0c1"; } + +.fa-ear-listen::before { + content: "\f2a2"; } + +.fa-assistive-listening-systems::before { + content: "\f2a2"; } + +.fa-tree-city::before { + content: "\e587"; } + +.fa-play::before { + content: "\f04b"; } + +.fa-font::before { + content: "\f031"; } + +.fa-rupiah-sign::before { + content: "\e23d"; } + +.fa-magnifying-glass::before { + content: "\f002"; } + +.fa-search::before { + content: "\f002"; } + +.fa-table-tennis-paddle-ball::before { + content: "\f45d"; } + +.fa-ping-pong-paddle-ball::before { + content: "\f45d"; } + +.fa-table-tennis::before { + content: "\f45d"; } + +.fa-person-dots-from-line::before { + content: "\f470"; } + +.fa-diagnoses::before { + content: "\f470"; } + +.fa-trash-can-arrow-up::before { + content: "\f82a"; } + +.fa-trash-restore-alt::before { + content: "\f82a"; } + +.fa-naira-sign::before { + content: "\e1f6"; } + +.fa-cart-arrow-down::before { + content: "\f218"; } + +.fa-walkie-talkie::before { + content: "\f8ef"; } + +.fa-file-pen::before { + content: "\f31c"; } + +.fa-file-edit::before { + content: "\f31c"; } + +.fa-receipt::before { + content: "\f543"; } + +.fa-square-pen::before { + content: "\f14b"; } + +.fa-pen-square::before { + content: "\f14b"; } + +.fa-pencil-square::before { + content: "\f14b"; } + +.fa-suitcase-rolling::before { + content: "\f5c1"; } + +.fa-person-circle-exclamation::before { + content: "\e53f"; } + +.fa-chevron-down::before { + content: "\f078"; } + +.fa-battery-full::before { + content: "\f240"; } + +.fa-battery::before { + content: "\f240"; } + +.fa-battery-5::before { + content: "\f240"; } + +.fa-skull-crossbones::before { + content: "\f714"; } + +.fa-code-compare::before { + content: "\e13a"; } + +.fa-list-ul::before { + content: "\f0ca"; } + +.fa-list-dots::before { + content: "\f0ca"; } + +.fa-school-lock::before { + content: "\e56f"; } + +.fa-tower-cell::before { + content: "\e585"; } + +.fa-down-long::before { + content: "\f309"; } + +.fa-long-arrow-alt-down::before { + content: "\f309"; } + +.fa-ranking-star::before { + content: "\e561"; } + +.fa-chess-king::before { + content: "\f43f"; } + +.fa-person-harassing::before { + content: "\e549"; } + +.fa-brazilian-real-sign::before { + content: "\e46c"; } + +.fa-landmark-dome::before { + content: "\f752"; } + +.fa-landmark-alt::before { + content: "\f752"; } + +.fa-arrow-up::before { + content: "\f062"; } + +.fa-tv::before { + content: "\f26c"; } + +.fa-television::before { + content: "\f26c"; } + +.fa-tv-alt::before { + content: "\f26c"; } + +.fa-shrimp::before { + content: "\e448"; } + +.fa-list-check::before { + content: "\f0ae"; } + +.fa-tasks::before { + content: "\f0ae"; } + +.fa-jug-detergent::before { + content: "\e519"; } + +.fa-circle-user::before { + content: "\f2bd"; } + +.fa-user-circle::before { + content: "\f2bd"; } + +.fa-user-shield::before { + content: "\f505"; } + +.fa-wind::before { + content: "\f72e"; } + +.fa-car-burst::before { + content: "\f5e1"; } + +.fa-car-crash::before { + content: "\f5e1"; } + +.fa-y::before { + content: "\59"; } + +.fa-person-snowboarding::before { + content: "\f7ce"; } + +.fa-snowboarding::before { + content: "\f7ce"; } + +.fa-truck-fast::before { + content: "\f48b"; } + +.fa-shipping-fast::before { + content: "\f48b"; } + +.fa-fish::before { + content: "\f578"; } + +.fa-user-graduate::before { + content: "\f501"; } + +.fa-circle-half-stroke::before { + content: "\f042"; } + +.fa-adjust::before { + content: "\f042"; } + +.fa-clapperboard::before { + content: "\e131"; } + +.fa-circle-radiation::before { + content: "\f7ba"; } + +.fa-radiation-alt::before { + content: "\f7ba"; } + +.fa-baseball::before { + content: "\f433"; } + +.fa-baseball-ball::before { + content: "\f433"; } + +.fa-jet-fighter-up::before { + content: "\e518"; } + +.fa-diagram-project::before { + content: "\f542"; } + +.fa-project-diagram::before { + content: "\f542"; } + +.fa-copy::before { + content: "\f0c5"; } + +.fa-volume-xmark::before { + content: "\f6a9"; } + +.fa-volume-mute::before { + content: "\f6a9"; } + +.fa-volume-times::before { + content: "\f6a9"; } + +.fa-hand-sparkles::before { + content: "\e05d"; } + +.fa-grip::before { + content: "\f58d"; } + +.fa-grip-horizontal::before { + content: "\f58d"; } + +.fa-share-from-square::before { + content: "\f14d"; } + +.fa-share-square::before { + content: "\f14d"; } + +.fa-child-combatant::before { + content: "\e4e0"; } + +.fa-child-rifle::before { + content: "\e4e0"; } + +.fa-gun::before { + content: "\e19b"; } + +.fa-square-phone::before { + content: "\f098"; } + +.fa-phone-square::before { + content: "\f098"; } + +.fa-plus::before { + content: "\2b"; } + +.fa-add::before { + content: "\2b"; } + +.fa-expand::before { + content: "\f065"; } + +.fa-computer::before { + content: "\e4e5"; } + +.fa-xmark::before { + content: "\f00d"; } + +.fa-close::before { + content: "\f00d"; } + +.fa-multiply::before { + content: "\f00d"; } + +.fa-remove::before { + content: "\f00d"; } + +.fa-times::before { + content: "\f00d"; } + +.fa-arrows-up-down-left-right::before { + content: "\f047"; } + +.fa-arrows::before { + content: "\f047"; } + +.fa-chalkboard-user::before { + content: "\f51c"; } + +.fa-chalkboard-teacher::before { + content: "\f51c"; } + +.fa-peso-sign::before { + content: "\e222"; } + +.fa-building-shield::before { + content: "\e4d8"; } + +.fa-baby::before { + content: "\f77c"; } + +.fa-users-line::before { + content: "\e592"; } + +.fa-quote-left::before { + content: "\f10d"; } + +.fa-quote-left-alt::before { + content: "\f10d"; } + +.fa-tractor::before { + content: "\f722"; } + +.fa-trash-arrow-up::before { + content: "\f829"; } + +.fa-trash-restore::before { + content: "\f829"; } + +.fa-arrow-down-up-lock::before { + content: "\e4b0"; } + +.fa-lines-leaning::before { + content: "\e51e"; } + +.fa-ruler-combined::before { + content: "\f546"; } + +.fa-copyright::before { + content: "\f1f9"; } + +.fa-equals::before { + content: "\3d"; } + +.fa-blender::before { + content: "\f517"; } + +.fa-teeth::before { + content: "\f62e"; } + +.fa-shekel-sign::before { + content: "\f20b"; } + +.fa-ils::before { + content: "\f20b"; } + +.fa-shekel::before { + content: "\f20b"; } + +.fa-sheqel::before { + content: "\f20b"; } + +.fa-sheqel-sign::before { + content: "\f20b"; } + +.fa-map::before { + content: "\f279"; } + +.fa-rocket::before { + content: "\f135"; } + +.fa-photo-film::before { + content: "\f87c"; } + +.fa-photo-video::before { + content: "\f87c"; } + +.fa-folder-minus::before { + content: "\f65d"; } + +.fa-store::before { + content: "\f54e"; } + +.fa-arrow-trend-up::before { + content: "\e098"; } + +.fa-plug-circle-minus::before { + content: "\e55e"; } + +.fa-sign-hanging::before { + content: "\f4d9"; } + +.fa-sign::before { + content: "\f4d9"; } + +.fa-bezier-curve::before { + content: "\f55b"; } + +.fa-bell-slash::before { + content: "\f1f6"; } + +.fa-tablet::before { + content: "\f3fb"; } + +.fa-tablet-android::before { + content: "\f3fb"; } + +.fa-school-flag::before { + content: "\e56e"; } + +.fa-fill::before { + content: "\f575"; } + +.fa-angle-up::before { + content: "\f106"; } + +.fa-drumstick-bite::before { + content: "\f6d7"; } + +.fa-holly-berry::before { + content: "\f7aa"; } + +.fa-chevron-left::before { + content: "\f053"; } + +.fa-bacteria::before { + content: "\e059"; } + +.fa-hand-lizard::before { + content: "\f258"; } + +.fa-notdef::before { + content: "\e1fe"; } + +.fa-disease::before { + content: "\f7fa"; } + +.fa-briefcase-medical::before { + content: "\f469"; } + +.fa-genderless::before { + content: "\f22d"; } + +.fa-chevron-right::before { + content: "\f054"; } + +.fa-retweet::before { + content: "\f079"; } + +.fa-car-rear::before { + content: "\f5de"; } + +.fa-car-alt::before { + content: "\f5de"; } + +.fa-pump-soap::before { + content: "\e06b"; } + +.fa-video-slash::before { + content: "\f4e2"; } + +.fa-battery-quarter::before { + content: "\f243"; } + +.fa-battery-2::before { + content: "\f243"; } + +.fa-radio::before { + content: "\f8d7"; } + +.fa-baby-carriage::before { + content: "\f77d"; } + +.fa-carriage-baby::before { + content: "\f77d"; } + +.fa-traffic-light::before { + content: "\f637"; } + +.fa-thermometer::before { + content: "\f491"; } + +.fa-vr-cardboard::before { + content: "\f729"; } + +.fa-hand-middle-finger::before { + content: "\f806"; } + +.fa-percent::before { + content: "\25"; } + +.fa-percentage::before { + content: "\25"; } + +.fa-truck-moving::before { + content: "\f4df"; } + +.fa-glass-water-droplet::before { + content: "\e4f5"; } + +.fa-display::before { + content: "\e163"; } + +.fa-face-smile::before { + content: "\f118"; } + +.fa-smile::before { + content: "\f118"; } + +.fa-thumbtack::before { + content: "\f08d"; } + +.fa-thumb-tack::before { + content: "\f08d"; } + +.fa-trophy::before { + content: "\f091"; } + +.fa-person-praying::before { + content: "\f683"; } + +.fa-pray::before { + content: "\f683"; } + +.fa-hammer::before { + content: "\f6e3"; } + +.fa-hand-peace::before { + content: "\f25b"; } + +.fa-rotate::before { + content: "\f2f1"; } + +.fa-sync-alt::before { + content: "\f2f1"; } + +.fa-spinner::before { + content: "\f110"; } + +.fa-robot::before { + content: "\f544"; } + +.fa-peace::before { + content: "\f67c"; } + +.fa-gears::before { + content: "\f085"; } + +.fa-cogs::before { + content: "\f085"; } + +.fa-warehouse::before { + content: "\f494"; } + +.fa-arrow-up-right-dots::before { + content: "\e4b7"; } + +.fa-splotch::before { + content: "\f5bc"; } + +.fa-face-grin-hearts::before { + content: "\f584"; } + +.fa-grin-hearts::before { + content: "\f584"; } + +.fa-dice-four::before { + content: "\f524"; } + +.fa-sim-card::before { + content: "\f7c4"; } + +.fa-transgender::before { + content: "\f225"; } + +.fa-transgender-alt::before { + content: "\f225"; } + +.fa-mercury::before { + content: "\f223"; } + +.fa-arrow-turn-down::before { + content: "\f149"; } + +.fa-level-down::before { + content: "\f149"; } + +.fa-person-falling-burst::before { + content: "\e547"; } + +.fa-award::before { + content: "\f559"; } + +.fa-ticket-simple::before { + content: "\f3ff"; } + +.fa-ticket-alt::before { + content: "\f3ff"; } + +.fa-building::before { + content: "\f1ad"; } + +.fa-angles-left::before { + content: "\f100"; } + +.fa-angle-double-left::before { + content: "\f100"; } + +.fa-qrcode::before { + content: "\f029"; } + +.fa-clock-rotate-left::before { + content: "\f1da"; } + +.fa-history::before { + content: "\f1da"; } + +.fa-face-grin-beam-sweat::before { + content: "\f583"; } + +.fa-grin-beam-sweat::before { + content: "\f583"; } + +.fa-file-export::before { + content: "\f56e"; } + +.fa-arrow-right-from-file::before { + content: "\f56e"; } + +.fa-shield::before { + content: "\f132"; } + +.fa-shield-blank::before { + content: "\f132"; } + +.fa-arrow-up-short-wide::before { + content: "\f885"; } + +.fa-sort-amount-up-alt::before { + content: "\f885"; } + +.fa-house-medical::before { + content: "\e3b2"; } + +.fa-golf-ball-tee::before { + content: "\f450"; } + +.fa-golf-ball::before { + content: "\f450"; } + +.fa-circle-chevron-left::before { + content: "\f137"; } + +.fa-chevron-circle-left::before { + content: "\f137"; } + +.fa-house-chimney-window::before { + content: "\e00d"; } + +.fa-pen-nib::before { + content: "\f5ad"; } + +.fa-tent-arrow-turn-left::before { + content: "\e580"; } + +.fa-tents::before { + content: "\e582"; } + +.fa-wand-magic::before { + content: "\f0d0"; } + +.fa-magic::before { + content: "\f0d0"; } + +.fa-dog::before { + content: "\f6d3"; } + +.fa-carrot::before { + content: "\f787"; } + +.fa-moon::before { + content: "\f186"; } + +.fa-wine-glass-empty::before { + content: "\f5ce"; } + +.fa-wine-glass-alt::before { + content: "\f5ce"; } + +.fa-cheese::before { + content: "\f7ef"; } + +.fa-yin-yang::before { + content: "\f6ad"; } + +.fa-music::before { + content: "\f001"; } + +.fa-code-commit::before { + content: "\f386"; } + +.fa-temperature-low::before { + content: "\f76b"; } + +.fa-person-biking::before { + content: "\f84a"; } + +.fa-biking::before { + content: "\f84a"; } + +.fa-broom::before { + content: "\f51a"; } + +.fa-shield-heart::before { + content: "\e574"; } + +.fa-gopuram::before { + content: "\f664"; } + +.fa-earth-oceania::before { + content: "\e47b"; } + +.fa-globe-oceania::before { + content: "\e47b"; } + +.fa-square-xmark::before { + content: "\f2d3"; } + +.fa-times-square::before { + content: "\f2d3"; } + +.fa-xmark-square::before { + content: "\f2d3"; } + +.fa-hashtag::before { + content: "\23"; } + +.fa-up-right-and-down-left-from-center::before { + content: "\f424"; } + +.fa-expand-alt::before { + content: "\f424"; } + +.fa-oil-can::before { + content: "\f613"; } + +.fa-t::before { + content: "\54"; } + +.fa-hippo::before { + content: "\f6ed"; } + +.fa-chart-column::before { + content: "\e0e3"; } + +.fa-infinity::before { + content: "\f534"; } + +.fa-vial-circle-check::before { + content: "\e596"; } + +.fa-person-arrow-down-to-line::before { + content: "\e538"; } + +.fa-voicemail::before { + content: "\f897"; } + +.fa-fan::before { + content: "\f863"; } + +.fa-person-walking-luggage::before { + content: "\e554"; } + +.fa-up-down::before { + content: "\f338"; } + +.fa-arrows-alt-v::before { + content: "\f338"; } + +.fa-cloud-moon-rain::before { + content: "\f73c"; } + +.fa-calendar::before { + content: "\f133"; } + +.fa-trailer::before { + content: "\e041"; } + +.fa-bahai::before { + content: "\f666"; } + +.fa-haykal::before { + content: "\f666"; } + +.fa-sd-card::before { + content: "\f7c2"; } + +.fa-dragon::before { + content: "\f6d5"; } + +.fa-shoe-prints::before { + content: "\f54b"; } + +.fa-circle-plus::before { + content: "\f055"; } + +.fa-plus-circle::before { + content: "\f055"; } + +.fa-face-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-hand-holding::before { + content: "\f4bd"; } + +.fa-plug-circle-exclamation::before { + content: "\e55d"; } + +.fa-link-slash::before { + content: "\f127"; } + +.fa-chain-broken::before { + content: "\f127"; } + +.fa-chain-slash::before { + content: "\f127"; } + +.fa-unlink::before { + content: "\f127"; } + +.fa-clone::before { + content: "\f24d"; } + +.fa-person-walking-arrow-loop-left::before { + content: "\e551"; } + +.fa-arrow-up-z-a::before { + content: "\f882"; } + +.fa-sort-alpha-up-alt::before { + content: "\f882"; } + +.fa-fire-flame-curved::before { + content: "\f7e4"; } + +.fa-fire-alt::before { + content: "\f7e4"; } + +.fa-tornado::before { + content: "\f76f"; } + +.fa-file-circle-plus::before { + content: "\e494"; } + +.fa-book-quran::before { + content: "\f687"; } + +.fa-quran::before { + content: "\f687"; } + +.fa-anchor::before { + content: "\f13d"; } + +.fa-border-all::before { + content: "\f84c"; } + +.fa-face-angry::before { + content: "\f556"; } + +.fa-angry::before { + content: "\f556"; } + +.fa-cookie-bite::before { + content: "\f564"; } + +.fa-arrow-trend-down::before { + content: "\e097"; } + +.fa-rss::before { + content: "\f09e"; } + +.fa-feed::before { + content: "\f09e"; } + +.fa-draw-polygon::before { + content: "\f5ee"; } + +.fa-scale-balanced::before { + content: "\f24e"; } + +.fa-balance-scale::before { + content: "\f24e"; } + +.fa-gauge-simple-high::before { + content: "\f62a"; } + +.fa-tachometer::before { + content: "\f62a"; } + +.fa-tachometer-fast::before { + content: "\f62a"; } + +.fa-shower::before { + content: "\f2cc"; } + +.fa-desktop::before { + content: "\f390"; } + +.fa-desktop-alt::before { + content: "\f390"; } + +.fa-m::before { + content: "\4d"; } + +.fa-table-list::before { + content: "\f00b"; } + +.fa-th-list::before { + content: "\f00b"; } + +.fa-comment-sms::before { + content: "\f7cd"; } + +.fa-sms::before { + content: "\f7cd"; } + +.fa-book::before { + content: "\f02d"; } + +.fa-user-plus::before { + content: "\f234"; } + +.fa-check::before { + content: "\f00c"; } + +.fa-battery-three-quarters::before { + content: "\f241"; } + +.fa-battery-4::before { + content: "\f241"; } + +.fa-house-circle-check::before { + content: "\e509"; } + +.fa-angle-left::before { + content: "\f104"; } + +.fa-diagram-successor::before { + content: "\e47a"; } + +.fa-truck-arrow-right::before { + content: "\e58b"; } + +.fa-arrows-split-up-and-left::before { + content: "\e4bc"; } + +.fa-hand-fist::before { + content: "\f6de"; } + +.fa-fist-raised::before { + content: "\f6de"; } + +.fa-cloud-moon::before { + content: "\f6c3"; } + +.fa-briefcase::before { + content: "\f0b1"; } + +.fa-person-falling::before { + content: "\e546"; } + +.fa-image-portrait::before { + content: "\f3e0"; } + +.fa-portrait::before { + content: "\f3e0"; } + +.fa-user-tag::before { + content: "\f507"; } + +.fa-rug::before { + content: "\e569"; } + +.fa-earth-europe::before { + content: "\f7a2"; } + +.fa-globe-europe::before { + content: "\f7a2"; } + +.fa-cart-flatbed-suitcase::before { + content: "\f59d"; } + +.fa-luggage-cart::before { + content: "\f59d"; } + +.fa-rectangle-xmark::before { + content: "\f410"; } + +.fa-rectangle-times::before { + content: "\f410"; } + +.fa-times-rectangle::before { + content: "\f410"; } + +.fa-window-close::before { + content: "\f410"; } + +.fa-baht-sign::before { + content: "\e0ac"; } + +.fa-book-open::before { + content: "\f518"; } + +.fa-book-journal-whills::before { + content: "\f66a"; } + +.fa-journal-whills::before { + content: "\f66a"; } + +.fa-handcuffs::before { + content: "\e4f8"; } + +.fa-triangle-exclamation::before { + content: "\f071"; } + +.fa-exclamation-triangle::before { + content: "\f071"; } + +.fa-warning::before { + content: "\f071"; } + +.fa-database::before { + content: "\f1c0"; } + +.fa-share::before { + content: "\f064"; } + +.fa-arrow-turn-right::before { + content: "\f064"; } + +.fa-mail-forward::before { + content: "\f064"; } + +.fa-bottle-droplet::before { + content: "\e4c4"; } + +.fa-mask-face::before { + content: "\e1d7"; } + +.fa-hill-rockslide::before { + content: "\e508"; } + +.fa-right-left::before { + content: "\f362"; } + +.fa-exchange-alt::before { + content: "\f362"; } + +.fa-paper-plane::before { + content: "\f1d8"; } + +.fa-road-circle-exclamation::before { + content: "\e565"; } + +.fa-dungeon::before { + content: "\f6d9"; } + +.fa-align-right::before { + content: "\f038"; } + +.fa-money-bill-1-wave::before { + content: "\f53b"; } + +.fa-money-bill-wave-alt::before { + content: "\f53b"; } + +.fa-life-ring::before { + content: "\f1cd"; } + +.fa-hands::before { + content: "\f2a7"; } + +.fa-sign-language::before { + content: "\f2a7"; } + +.fa-signing::before { + content: "\f2a7"; } + +.fa-calendar-day::before { + content: "\f783"; } + +.fa-water-ladder::before { + content: "\f5c5"; } + +.fa-ladder-water::before { + content: "\f5c5"; } + +.fa-swimming-pool::before { + content: "\f5c5"; } + +.fa-arrows-up-down::before { + content: "\f07d"; } + +.fa-arrows-v::before { + content: "\f07d"; } + +.fa-face-grimace::before { + content: "\f57f"; } + +.fa-grimace::before { + content: "\f57f"; } + +.fa-wheelchair-move::before { + content: "\e2ce"; } + +.fa-wheelchair-alt::before { + content: "\e2ce"; } + +.fa-turn-down::before { + content: "\f3be"; } + +.fa-level-down-alt::before { + content: "\f3be"; } + +.fa-person-walking-arrow-right::before { + content: "\e552"; } + +.fa-square-envelope::before { + content: "\f199"; } + +.fa-envelope-square::before { + content: "\f199"; } + +.fa-dice::before { + content: "\f522"; } + +.fa-bowling-ball::before { + content: "\f436"; } + +.fa-brain::before { + content: "\f5dc"; } + +.fa-bandage::before { + content: "\f462"; } + +.fa-band-aid::before { + content: "\f462"; } + +.fa-calendar-minus::before { + content: "\f272"; } + +.fa-circle-xmark::before { + content: "\f057"; } + +.fa-times-circle::before { + content: "\f057"; } + +.fa-xmark-circle::before { + content: "\f057"; } + +.fa-gifts::before { + content: "\f79c"; } + +.fa-hotel::before { + content: "\f594"; } + +.fa-earth-asia::before { + content: "\f57e"; } + +.fa-globe-asia::before { + content: "\f57e"; } + +.fa-id-card-clip::before { + content: "\f47f"; } + +.fa-id-card-alt::before { + content: "\f47f"; } + +.fa-magnifying-glass-plus::before { + content: "\f00e"; } + +.fa-search-plus::before { + content: "\f00e"; } + +.fa-thumbs-up::before { + content: "\f164"; } + +.fa-user-clock::before { + content: "\f4fd"; } + +.fa-hand-dots::before { + content: "\f461"; } + +.fa-allergies::before { + content: "\f461"; } + +.fa-file-invoice::before { + content: "\f570"; } + +.fa-window-minimize::before { + content: "\f2d1"; } + +.fa-mug-saucer::before { + content: "\f0f4"; } + +.fa-coffee::before { + content: "\f0f4"; } + +.fa-brush::before { + content: "\f55d"; } + +.fa-mask::before { + content: "\f6fa"; } + +.fa-magnifying-glass-minus::before { + content: "\f010"; } + +.fa-search-minus::before { + content: "\f010"; } + +.fa-ruler-vertical::before { + content: "\f548"; } + +.fa-user-large::before { + content: "\f406"; } + +.fa-user-alt::before { + content: "\f406"; } + +.fa-train-tram::before { + content: "\e5b4"; } + +.fa-user-nurse::before { + content: "\f82f"; } + +.fa-syringe::before { + content: "\f48e"; } + +.fa-cloud-sun::before { + content: "\f6c4"; } + +.fa-stopwatch-20::before { + content: "\e06f"; } + +.fa-square-full::before { + content: "\f45c"; } + +.fa-magnet::before { + content: "\f076"; } + +.fa-jar::before { + content: "\e516"; } + +.fa-note-sticky::before { + content: "\f249"; } + +.fa-sticky-note::before { + content: "\f249"; } + +.fa-bug-slash::before { + content: "\e490"; } + +.fa-arrow-up-from-water-pump::before { + content: "\e4b6"; } + +.fa-bone::before { + content: "\f5d7"; } + +.fa-user-injured::before { + content: "\f728"; } + +.fa-face-sad-tear::before { + content: "\f5b4"; } + +.fa-sad-tear::before { + content: "\f5b4"; } + +.fa-plane::before { + content: "\f072"; } + +.fa-tent-arrows-down::before { + content: "\e581"; } + +.fa-exclamation::before { + content: "\21"; } + +.fa-arrows-spin::before { + content: "\e4bb"; } + +.fa-print::before { + content: "\f02f"; } + +.fa-turkish-lira-sign::before { + content: "\e2bb"; } + +.fa-try::before { + content: "\e2bb"; } + +.fa-turkish-lira::before { + content: "\e2bb"; } + +.fa-dollar-sign::before { + content: "\24"; } + +.fa-dollar::before { + content: "\24"; } + +.fa-usd::before { + content: "\24"; } + +.fa-x::before { + content: "\58"; } + +.fa-magnifying-glass-dollar::before { + content: "\f688"; } + +.fa-search-dollar::before { + content: "\f688"; } + +.fa-users-gear::before { + content: "\f509"; } + +.fa-users-cog::before { + content: "\f509"; } + +.fa-person-military-pointing::before { + content: "\e54a"; } + +.fa-building-columns::before { + content: "\f19c"; } + +.fa-bank::before { + content: "\f19c"; } + +.fa-institution::before { + content: "\f19c"; } + +.fa-museum::before { + content: "\f19c"; } + +.fa-university::before { + content: "\f19c"; } + +.fa-umbrella::before { + content: "\f0e9"; } + +.fa-trowel::before { + content: "\e589"; } + +.fa-d::before { + content: "\44"; } + +.fa-stapler::before { + content: "\e5af"; } + +.fa-masks-theater::before { + content: "\f630"; } + +.fa-theater-masks::before { + content: "\f630"; } + +.fa-kip-sign::before { + content: "\e1c4"; } + +.fa-hand-point-left::before { + content: "\f0a5"; } + +.fa-handshake-simple::before { + content: "\f4c6"; } + +.fa-handshake-alt::before { + content: "\f4c6"; } + +.fa-jet-fighter::before { + content: "\f0fb"; } + +.fa-fighter-jet::before { + content: "\f0fb"; } + +.fa-square-share-nodes::before { + content: "\f1e1"; } + +.fa-share-alt-square::before { + content: "\f1e1"; } + +.fa-barcode::before { + content: "\f02a"; } + +.fa-plus-minus::before { + content: "\e43c"; } + +.fa-video::before { + content: "\f03d"; } + +.fa-video-camera::before { + content: "\f03d"; } + +.fa-graduation-cap::before { + content: "\f19d"; } + +.fa-mortar-board::before { + content: "\f19d"; } + +.fa-hand-holding-medical::before { + content: "\e05c"; } + +.fa-person-circle-check::before { + content: "\e53e"; } + +.fa-turn-up::before { + content: "\f3bf"; } + +.fa-level-up-alt::before { + content: "\f3bf"; } + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } +:root, :host { + --fa-style-family-brands: 'Font Awesome 6 Brands'; + --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("1e21o67/FontAwesome6Brands-Regular-400.woff2") format("woff2"), url("1e21o67/FontAwesome6Brands-Regular-400.ttf") format("truetype"); } + +.fab, +.fa-brands { + font-weight: 400; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-redhat:before { + content: "\f7bc"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-cloudflare:before { + content: "\e07d"; } + +.fa-ups:before { + content: "\f7e0"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-stackpath:before { + content: "\f842"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-guilded:before { + content: "\e07e"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-square-js:before { + content: "\f3b9"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-orcid:before { + content: "\f8d2"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-invision:before { + content: "\f7b0"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-unity:before { + content: "\e049"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-square-reddit:before { + content: "\f1a2"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-square-font-awesome:before { + content: "\e5ad"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-square-instagram:before { + content: "\e055"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-square-hacker-news:before { + content: "\f3af"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-threads:before { + content: "\e618"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-square-snapchat:before { + content: "\f2ad"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-artstation:before { + content: "\f77a"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-sourcetree:before { + content: "\f7d3"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-diaspora:before { + content: "\f791"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-square-font-awesome-stroke:before { + content: "\f35c"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-atlassian:before { + content: "\f77b"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-chromecast:before { + content: "\f838"; } + +.fa-evernote:before { + content: "\f839"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-watchman-monitoring:before { + content: "\e087"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-git-alt:before { + content: "\f841"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wizards-of-the-coast:before { + content: "\f730"; } + +.fa-square-viadeo:before { + content: "\f2aa"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-centos:before { + content: "\f789"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-square-dribbble:before { + content: "\f397"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-node:before { + content: "\f419"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-debian:before { + content: "\e60b"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-instalod:before { + content: "\e081"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-square-twitter:before { + content: "\f081"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-golang:before { + content: "\e40f"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-uncharted:before { + content: "\e084"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-square-youtube:before { + content: "\f431"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-rendact:before { + content: "\f3e4"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-nfc-directional:before { + content: "\e530"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-fedora:before { + content: "\f798"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-meta:before { + content: "\e49b"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-creative-commons-zero:before { + content: "\f4f3"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-confluence:before { + content: "\f78d"; } + +.fa-mdb:before { + content: "\f8ca"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-unsplash:before { + content: "\e07c"; } + +.fa-yarn:before { + content: "\f7e3"; } + +.fa-square-steam:before { + content: "\f1b7"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-500px:before { + content: "\f26e"; } + +.fa-square-vimeo:before { + content: "\f194"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-flag:before { + content: "\f2b4"; } + +.fa-font-awesome-logo-full:before { + content: "\f2b4"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-hive:before { + content: "\e07f"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-padlet:before { + content: "\e4a0"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-square-github:before { + content: "\f092"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-fedex:before { + content: "\f797"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-shopify:before { + content: "\e057"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-square-threads:before { + content: "\e619"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-swift:before { + content: "\f8e1"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-square-gitlab:before { + content: "\e5ae"; } + +.fa-gitlab-square:before { + content: "\e5ae"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-square-odnoklassniki:before { + content: "\f264"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-hashnode:before { + content: "\e499"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-itch-io:before { + content: "\f83a"; } + +.fa-umbraco:before { + content: "\f8e8"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-ubuntu:before { + content: "\f7df"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-dhl:before { + content: "\f790"; } + +.fa-square-pinterest:before { + content: "\f0d3"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-dailymotion:before { + content: "\e052"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-bootstrap:before { + content: "\f836"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-nfc-symbol:before { + content: "\e531"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-speaker-deck:before { + content: "\f83c"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-square-google-plus:before { + content: "\f0d4"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-d-and-d-beyond:before { + content: "\f6ca"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-square-xing:before { + content: "\f169"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-usps:before { + content: "\f7e1"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-symfony:before { + content: "\f83d"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-think-peaks:before { + content: "\f731"; } + +.fa-bilibili:before { + content: "\e3d9"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-x-twitter:before { + content: "\e61b"; } + +.fa-cotton-bureau:before { + content: "\f89e"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-42-group:before { + content: "\e080"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-square-pied-piper:before { + content: "\e01e"; } + +.fa-pied-piper-square:before { + content: "\e01e"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-square-facebook:before { + content: "\f082"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-mixer:before { + content: "\e056"; } + +.fa-square-lastfm:before { + content: "\f203"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-mendeley:before { + content: "\f7b3"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-figma:before { + content: "\f799"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-cmplid:before { + content: "\e360"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-deezer:before { + content: "\e077"; } + +.fa-raspberry-pi:before { + content: "\f7bb"; } + +.fa-jira:before { + content: "\f7b1"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-screenpal:before { + content: "\e570"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-microblog:before { + content: "\e01a"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-wirsindhandwerk:before { + content: "\e2d0"; } + +.fa-wsh:before { + content: "\e2d0"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-salesforce:before { + content: "\f83b"; } + +.fa-octopus-deploy:before { + content: "\e082"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-waze:before { + content: "\f83f"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-square-behance:before { + content: "\f1b5"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-space-awesome:before { + content: "\e5ac"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-square-git:before { + content: "\f1d2"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-square-tumblr:before { + content: "\f174"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-perbyte:before { + content: "\e083"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-bots:before { + content: "\e340"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-ideal:before { + content: "\e013"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-dev:before { + content: "\f6cc"; } + +.fa-sketch:before { + content: "\f7c6"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-php:before { + content: "\f457"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-firefox-browser:before { + content: "\e007"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-suse:before { + content: "\f7d6"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-buffer:before { + content: "\f837"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-yammer:before { + content: "\f840"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-stubber:before { + content: "\e5c7"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f2c6"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-odysee:before { + content: "\e5c6"; } + +.fa-square-whatsapp:before { + content: "\f40c"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f198"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-square-x-twitter:before { + content: "\e61a"; } + +.fa-reacteurope:before { + content: "\f75d"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f23a"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-critical-role:before { + content: "\f6c9"; } + +.fa-sitrox:before { + content: "\e44a"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-airbnb:before { + content: "\f834"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-buy-n-large:before { + content: "\f8a6"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-canadian-maple-leaf:before { + content: "\f785"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-wodu:before { + content: "\e088"; } + +.fa-google-pay:before { + content: "\e079"; } + +.fa-intercom:before { + content: "\f7af"; } + +.fa-zhihu:before { + content: "\f63f"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-pix:before { + content: "\e43a"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("1e21o67/FontAwesome6Free-Regular-400.woff2") format("woff2"), url("1e21o67/FontAwesome6Free-Regular-400.ttf") format("truetype"); } + +.far, +.fa-regular { + font-weight: 400; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("1e21o67/FontAwesome6Free-Solid-900.woff2") format("woff2"), url("1e21o67/FontAwesome6Free-Solid-900.ttf") format("truetype"); } + +.fas, +.fa-solid { + font-weight: 900; } +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-display: block; + font-weight: 400; + src: url("1e21o67/FontAwesome6Brands-Regular-400.woff2") format("woff2"), url("1e21o67/FontAwesome6Brands-Regular-400.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-display: block; + font-weight: 900; + src: url("1e21o67/FontAwesome6Free-Solid-900.woff2") format("woff2"), url("1e21o67/FontAwesome6Free-Solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-display: block; + font-weight: 400; + src: url("30yblb/FontAwesome6Free-Regular-400.woff2") format("woff2"), url("1e21o67/FontAwesome6Free-Regular-400.ttf") format("truetype"); } +@font-face { + font-family: 'Font Awesome 6 Free'; + font-display: block; + src: url("1e21o67/FontAwesome6Free-Solid-900.woff2") format("woff2"), url("1e21o67/FontAwesome6Free-Solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-display: block; + src: url("1e21o67/FontAwesome6Brands-Regular-400.woff2") format("woff2"), url("1e21o67/FontAwesome6Brands-Regular-400.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-display: block; + src: url("1e21o67/FontAwesome6Free-Regular-400.woff2") format("woff2"), url("../../webfonts/FontAwesome6Free-Regular-400.ttf") format("truetype"); + unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; } + diff --git a/index_files/libs/quarto-contrib/fontawesome6-0.1.0/latex-fontsize.css b/index_files/libs/quarto-contrib/fontawesome6-0.1.0/latex-fontsize.css new file mode 100644 index 0000000..45545ec --- /dev/null +++ b/index_files/libs/quarto-contrib/fontawesome6-0.1.0/latex-fontsize.css @@ -0,0 +1,30 @@ +.fa-tiny { + font-size: 0.5em; +} +.fa-scriptsize { + font-size: 0.7em; +} +.fa-footnotesize { + font-size: 0.8em; +} +.fa-small { + font-size: 0.9em; +} +.fa-normalsize { + font-size: 1em; +} +.fa-large { + font-size: 1.2em; +} +.fa-Large { + font-size: 1.5em; +} +.fa-LARGE { + font-size: 1.75em; +} +.fa-huge { + font-size: 2em; +} +.fa-Huge { + font-size: 2.5em; +} diff --git a/index_files/libs/quarto-html/light-border.css b/index_files/libs/quarto-html/light-border.css new file mode 100644 index 0000000..2b25c61 --- /dev/null +++ b/index_files/libs/quarto-html/light-border.css @@ -0,0 +1 @@ +.tippy-box[data-theme~=light-border]{background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,8,16,.15);color:#333;box-shadow:0 4px 14px -2px rgba(0,8,16,.08)}.tippy-box[data-theme~=light-border]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light-border]>.tippy-arrow:after,.tippy-box[data-theme~=light-border]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=light-border]>.tippy-arrow:after{border-color:transparent;border-style:solid}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-arrow:after{border-top-color:rgba(0,8,16,.2);border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:rgba(0,8,16,.2);border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:16px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-arrow:after{border-left-color:rgba(0,8,16,.2);border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:rgba(0,8,16,.2)}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=light-border]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-theme~=light-border]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px} \ No newline at end of file diff --git a/index_files/libs/quarto-html/quarto-syntax-highlighting.css b/index_files/libs/quarto-html/quarto-syntax-highlighting.css index 5aecf09..1540484 100644 --- a/index_files/libs/quarto-html/quarto-syntax-highlighting.css +++ b/index_files/libs/quarto-html/quarto-syntax-highlighting.css @@ -55,62 +55,85 @@ div.sourceCode pre.sourceCode { code span.ot { color: #d91e18; + font-style: inherit; } code span.at { color: #a55a00; + font-style: inherit; } code span.ss { color: #008000; + font-style: inherit; } code span.an { color: #696969; + font-style: inherit; } code span.fu { color: #06287e; + font-style: inherit; } code span.st { color: #008000; + font-style: inherit; } code span.cf { color: #d91e18; + font-style: inherit; } code span.op { color: #00769e; + font-style: inherit; } code span.er { color: #7928a1; + font-style: inherit; } code span.bn { color: #7928a1; + font-style: inherit; } code span.al { color: #7928a1; + font-style: inherit; } code span.va { color: #a55a00; + font-style: inherit; +} + +code span.bu { + font-style: inherit; +} + +code span.ex { + font-style: inherit; } code span.pp { color: #7928a1; + font-style: inherit; } code span.in { color: #696969; + font-style: inherit; } code span.vs { color: #008000; + font-style: inherit; } code span.wa { @@ -123,20 +146,28 @@ code span.do { font-style: italic; } +code span.im { + font-style: inherit; +} + code span.ch { color: #008000; + font-style: inherit; } code span.dt { color: #7928a1; + font-style: inherit; } code span.fl { color: #a55a00; + font-style: inherit; } code span.co { color: #696969; + font-style: inherit; } code span.cv { @@ -146,18 +177,22 @@ code span.cv { code span.cn { color: #d91e18; + font-style: inherit; } code span.sc { color: #00769e; + font-style: inherit; } code span.dv { color: #7928a1; + font-style: inherit; } code span.kw { color: #d91e18; + font-style: inherit; } .prevent-inlining { diff --git a/index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot b/index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot old mode 100755 new mode 100644 diff --git a/index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf b/index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf old mode 100755 new mode 100644 diff --git a/index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff b/index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff old mode 100755 new mode 100644 diff --git a/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot b/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot old mode 100755 new mode 100644 diff --git a/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff b/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff old mode 100755 new mode 100644 diff --git a/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot b/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot old mode 100755 new mode 100644 diff --git a/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff b/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff old mode 100755 new mode 100644 diff --git a/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot b/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot old mode 100755 new mode 100644 diff --git a/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff b/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff old mode 100755 new mode 100644 diff --git a/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot b/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot old mode 100755 new mode 100644 diff --git a/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff b/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff old mode 100755 new mode 100644 diff --git a/index_files/libs/revealjs/dist/theme/quarto.css b/index_files/libs/revealjs/dist/theme/quarto.css index 353e737..5904ec2 100644 --- a/index_files/libs/revealjs/dist/theme/quarto.css +++ b/index_files/libs/revealjs/dist/theme/quarto.css @@ -1,5 +1,5 @@ -@import"https://fonts.googleapis.com/css2?family=Lato&family=Montserrat&family=Nunito+Sans:wght@200&family=Roboto+Mono:wght@300&family=Sanchez&display=swap";@import"./fonts/source-sans-pro/source-sans-pro.css";:root{--r-background-color: #FFFFFF;--r-main-font: Montserrat, sans-serif;--r-main-font-size: 40px;--r-main-color: #222;--r-block-margin: 12px;--r-heading-margin: 0 0 12px 0;--r-heading-font: Montserrat, sans-serif;--r-heading-color: #222;--r-heading-line-height: 1.2;--r-heading-letter-spacing: normal;--r-heading-text-transform: none;--r-heading-text-shadow: none;--r-heading-font-weight: 600;--r-heading1-text-shadow: none;--r-heading1-size: 2.5em;--r-heading2-size: 1.6em;--r-heading3-size: 1.3em;--r-heading4-size: 1em;--r-code-font: Roboto Mono, monospace;--r-link-color: #78A540;--r-link-color-dark: #506e2b;--r-link-color-hover: #92bf59;--r-selection-background-color: #b6d490;--r-selection-color: #FFFFFF}.reveal-viewport{background:#fff;background-color:var(--r-background-color)}.reveal{font-family:var(--r-main-font);font-size:var(--r-main-font-size);font-weight:normal;color:var(--r-main-color)}.reveal ::selection{color:var(--r-selection-color);background:var(--r-selection-background-color);text-shadow:none}.reveal ::-moz-selection{color:var(--r-selection-color);background:var(--r-selection-background-color);text-shadow:none}.reveal .slides section,.reveal .slides section>section{line-height:1.3;font-weight:inherit}.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6{margin:var(--r-heading-margin);color:var(--r-heading-color);font-family:var(--r-heading-font);font-weight:var(--r-heading-font-weight);line-height:var(--r-heading-line-height);letter-spacing:var(--r-heading-letter-spacing);text-transform:var(--r-heading-text-transform);text-shadow:var(--r-heading-text-shadow);word-wrap:break-word}.reveal h1{font-size:var(--r-heading1-size)}.reveal h2{font-size:var(--r-heading2-size)}.reveal h3{font-size:var(--r-heading3-size)}.reveal h4{font-size:var(--r-heading4-size)}.reveal h1{text-shadow:var(--r-heading1-text-shadow)}.reveal p{margin:var(--r-block-margin) 0;line-height:1.3}.reveal h1:last-child,.reveal h2:last-child,.reveal h3:last-child,.reveal h4:last-child,.reveal h5:last-child,.reveal h6:last-child{margin-bottom:0}.reveal img,.reveal video,.reveal iframe{max-width:95%;max-height:95%}.reveal strong,.reveal b{font-weight:bold}.reveal em{font-style:italic}.reveal ol,.reveal dl,.reveal ul{display:inline-block;text-align:left;margin:0 0 0 1em}.reveal ol{list-style-type:decimal}.reveal ul{list-style-type:disc}.reveal ul ul{list-style-type:square}.reveal ul ul ul{list-style-type:circle}.reveal ul ul,.reveal ul ol,.reveal ol ol,.reveal ol ul{display:block;margin-left:40px}.reveal dt{font-weight:bold}.reveal dd{margin-left:40px}.reveal blockquote{display:block;position:relative;width:70%;margin:var(--r-block-margin) auto;padding:5px;font-style:italic;background:rgba(255,255,255,.05);box-shadow:0px 0px 2px rgba(0,0,0,.2)}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:inline-block}.reveal q{font-style:italic}.reveal pre{display:block;position:relative;width:90%;margin:var(--r-block-margin) auto;text-align:left;font-size:.55em;font-family:var(--r-code-font);line-height:1.2em;word-wrap:break-word;box-shadow:0px 5px 15px rgba(0,0,0,.15)}.reveal code{font-family:var(--r-code-font);text-transform:none;tab-size:2}.reveal pre code{display:block;padding:5px;overflow:auto;max-height:400px;word-wrap:normal}.reveal .code-wrapper{white-space:normal}.reveal .code-wrapper code{white-space:pre}.reveal table{margin:auto;border-collapse:collapse;border-spacing:0}.reveal table th{font-weight:bold}.reveal table th,.reveal table td{text-align:left;padding:.2em .5em .2em .5em;border-bottom:1px solid}.reveal table th[align=center],.reveal table td[align=center]{text-align:center}.reveal table th[align=right],.reveal table td[align=right]{text-align:right}.reveal table tbody tr:last-child th,.reveal table tbody tr:last-child td{border-bottom:none}.reveal sup{vertical-align:super;font-size:smaller}.reveal sub{vertical-align:sub;font-size:smaller}.reveal small{display:inline-block;font-size:.6em;line-height:1.2em;vertical-align:top}.reveal small *{vertical-align:top}.reveal img{margin:var(--r-block-margin) 0}.reveal a{color:var(--r-link-color);text-decoration:none;transition:color .15s ease}.reveal a:hover{color:var(--r-link-color-hover);text-shadow:none;border:none}.reveal .roll span:after{color:#fff;background:var(--r-link-color-dark)}.reveal .r-frame{border:4px solid var(--r-main-color);box-shadow:0 0 10px rgba(0,0,0,.15)}.reveal a .r-frame{transition:all .15s linear}.reveal a:hover .r-frame{border-color:var(--r-link-color);box-shadow:0 0 20px rgba(0,0,0,.55)}.reveal .controls{color:var(--r-link-color)}.reveal .progress{background:rgba(0,0,0,.2);color:var(--r-link-color)}@media print{.backgrounds{background-color:var(--r-background-color)}}.top-right{position:absolute;top:1em;right:1em}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:inline-block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p{text-align:left}.quarto-figure-center>figure>p{text-align:center}.quarto-figure-right>figure>p{text-align:right}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link,div[id^=tbl-]>.anchorjs-link{position:absolute;top:0;right:0}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}tr.header>th>p:last-of-type{margin-bottom:0px}table,.table{caption-side:top;margin-bottom:1.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6f6f6f}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}div.ansi-escaped-output{font-family:monospace;display:block}/*! +@import"https://fonts.googleapis.com/css2?family=Montserrat:wght@300;700&family=Nunito:wght@400;700&family=Roboto+Mono:wght@300;400&family=Sanchez&display=swap";@import"./fonts/source-sans-pro/source-sans-pro.css";:root{--r-background-color: #FFFFFF;--r-main-font: Montserrat, sans-serif;--r-main-font-size: 40px;--r-main-color: #222;--r-block-margin: 12px;--r-heading-margin: 0 0 12px 0;--r-heading-font: Montserrat, sans-serif;--r-heading-color: #222;--r-heading-line-height: 1.2;--r-heading-letter-spacing: normal;--r-heading-text-transform: none;--r-heading-text-shadow: none;--r-heading-font-weight: 600;--r-heading1-text-shadow: none;--r-heading1-size: 2.5em;--r-heading2-size: 1.6em;--r-heading3-size: 1.3em;--r-heading4-size: 1em;--r-code-font: Roboto Mono, monospace;--r-link-color: #78A540;--r-link-color-dark: #506e2b;--r-link-color-hover: #92bf59;--r-selection-background-color: #b6d490;--r-selection-color: #FFFFFF}.reveal-viewport{background:#fff;background-color:var(--r-background-color)}.reveal{font-family:var(--r-main-font);font-size:var(--r-main-font-size);font-weight:normal;color:var(--r-main-color)}.reveal ::selection{color:var(--r-selection-color);background:var(--r-selection-background-color);text-shadow:none}.reveal ::-moz-selection{color:var(--r-selection-color);background:var(--r-selection-background-color);text-shadow:none}.reveal .slides section,.reveal .slides section>section{line-height:1.3;font-weight:inherit}.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6{margin:var(--r-heading-margin);color:var(--r-heading-color);font-family:var(--r-heading-font);font-weight:var(--r-heading-font-weight);line-height:var(--r-heading-line-height);letter-spacing:var(--r-heading-letter-spacing);text-transform:var(--r-heading-text-transform);text-shadow:var(--r-heading-text-shadow);word-wrap:break-word}.reveal h1{font-size:var(--r-heading1-size)}.reveal h2{font-size:var(--r-heading2-size)}.reveal h3{font-size:var(--r-heading3-size)}.reveal h4{font-size:var(--r-heading4-size)}.reveal h1{text-shadow:var(--r-heading1-text-shadow)}.reveal p{margin:var(--r-block-margin) 0;line-height:1.3}.reveal h1:last-child,.reveal h2:last-child,.reveal h3:last-child,.reveal h4:last-child,.reveal h5:last-child,.reveal h6:last-child{margin-bottom:0}.reveal img,.reveal video,.reveal iframe{max-width:95%;max-height:95%}.reveal strong,.reveal b{font-weight:bold}.reveal em{font-style:italic}.reveal ol,.reveal dl,.reveal ul{display:inline-block;text-align:left;margin:0 0 0 1em}.reveal ol{list-style-type:decimal}.reveal ul{list-style-type:disc}.reveal ul ul{list-style-type:square}.reveal ul ul ul{list-style-type:circle}.reveal ul ul,.reveal ul ol,.reveal ol ol,.reveal ol ul{display:block;margin-left:40px}.reveal dt{font-weight:bold}.reveal dd{margin-left:40px}.reveal blockquote{display:block;position:relative;width:70%;margin:var(--r-block-margin) auto;padding:5px;font-style:italic;background:rgba(255,255,255,.05);box-shadow:0px 0px 2px rgba(0,0,0,.2)}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:inline-block}.reveal q{font-style:italic}.reveal pre{display:block;position:relative;width:90%;margin:var(--r-block-margin) auto;text-align:left;font-size:.55em;font-family:var(--r-code-font);line-height:1.2em;word-wrap:break-word;box-shadow:0px 5px 15px rgba(0,0,0,.15)}.reveal code{font-family:var(--r-code-font);text-transform:none;tab-size:2}.reveal pre code{display:block;padding:5px;overflow:auto;max-height:400px;word-wrap:normal}.reveal .code-wrapper{white-space:normal}.reveal .code-wrapper code{white-space:pre}.reveal table{margin:auto;border-collapse:collapse;border-spacing:0}.reveal table th{font-weight:bold}.reveal table th,.reveal table td{text-align:left;padding:.2em .5em .2em .5em;border-bottom:1px solid}.reveal table th[align=center],.reveal table td[align=center]{text-align:center}.reveal table th[align=right],.reveal table td[align=right]{text-align:right}.reveal table tbody tr:last-child th,.reveal table tbody tr:last-child td{border-bottom:none}.reveal sup{vertical-align:super;font-size:smaller}.reveal sub{vertical-align:sub;font-size:smaller}.reveal small{display:inline-block;font-size:.6em;line-height:1.2em;vertical-align:top}.reveal small *{vertical-align:top}.reveal img{margin:var(--r-block-margin) 0}.reveal a{color:var(--r-link-color);text-decoration:none;transition:color .15s ease}.reveal a:hover{color:var(--r-link-color-hover);text-shadow:none;border:none}.reveal .roll span:after{color:#fff;background:var(--r-link-color-dark)}.reveal .r-frame{border:4px solid var(--r-main-color);box-shadow:0 0 10px rgba(0,0,0,.15)}.reveal a .r-frame{transition:all .15s linear}.reveal a:hover .r-frame{border-color:var(--r-link-color);box-shadow:0 0 20px rgba(0,0,0,.55)}.reveal .controls{color:var(--r-link-color)}.reveal .progress{background:rgba(0,0,0,.2);color:var(--r-link-color)}@media print{.backgrounds{background-color:var(--r-background-color)}}.top-right{position:absolute;top:1em;right:1em}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:inline-block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}tr.header>th>p:last-of-type{margin-bottom:0px}table,.table{caption-side:top;margin-bottom:1.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6f6f6f}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}div.ansi-escaped-output{font-family:monospace;display:block}/*! * * ansi colors from IPython notebook's * -*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #FFFFFF;--quarto-body-color: #222;--quarto-text-muted: #6f6f6f;--quarto-border-color: #bbbbbb;--quarto-border-width: 1px;--quarto-border-radius: 4px}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:transparent;border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:transparent;border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:transparent}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:transparent}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}pre.sourceCode:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}pre.sourceCode:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}.panel-tabset [role=tablist]{border-bottom:1px solid #bbb;list-style:none;margin:0;padding:0;width:100%}.panel-tabset [role=tablist] *{-webkit-box-sizing:border-box;box-sizing:border-box}@media(min-width: 30em){.panel-tabset [role=tablist] li{display:inline-block}}.panel-tabset [role=tab]{border:1px solid transparent;border-top-color:#bbb;display:block;padding:.5em 1em;text-decoration:none}@media(min-width: 30em){.panel-tabset [role=tab]{border-top-color:transparent;display:inline-block;margin-bottom:-1px}}.panel-tabset [role=tab][aria-selected=true]{background-color:#bbb}@media(min-width: 30em){.panel-tabset [role=tab][aria-selected=true]{background-color:transparent;border:1px solid #bbb;border-bottom-color:#fff}}@media(min-width: 30em){.panel-tabset [role=tab]:hover:not([aria-selected=true]){border:1px solid #bbb}}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file,.code-with-filename .code-with-filename-file pre{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file,.quarto-dark .code-with-filename .code-with-filename-file pre{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}section.has-light-background,section.has-light-background h1,section.has-light-background h2,section.has-light-background h3,section.has-light-background h4,section.has-light-background h5,section.has-light-background h6{color:#222}section.has-light-background a,section.has-light-background a:hover{color:#2a76dd}section.has-light-background code{color:#4758ab}section.has-dark-background,section.has-dark-background h1,section.has-dark-background h2,section.has-dark-background h3,section.has-dark-background h4,section.has-dark-background h5,section.has-dark-background h6{color:#fff}section.has-dark-background a,section.has-dark-background a:hover{color:#42affa}section.has-dark-background code{color:#ffa07a}#title-slide{text-align:"left"}#title-slide .subtitle{margin-bottom:2.5rem}.reveal .slides{text-align:left}.reveal .title-slide h1{font-size:1.6em}.reveal[data-navigation-mode=linear] .title-slide h1{font-size:2.5em}.reveal div.sourceCode{border:1px solid #bbb;border-radius:4px}.reveal pre{width:100%;box-shadow:none;background-color:#f7f7f7;border:none;margin:0;font-size:.4em}.reveal code{color:#900c3f;background-color:#f7f7f7;white-space:pre-wrap}.reveal pre.sourceCode code{background-color:#f7f7f7;padding:6px 9px;max-height:500px;white-space:pre}.reveal pre code{background-color:#fff;color:#222}.reveal .column-output-location{display:flex;align-items:stretch}.reveal .column-output-location .column:first-of-type div.sourceCode{height:100%;background-color:#f7f7f7}.reveal blockquote{display:block;position:relative;color:#6f6f6f;width:unset;margin:var(--r-block-margin) auto;padding:.625rem 1.75rem;border-left:.25rem solid #6f6f6f;font-style:normal;background:none;box-shadow:none}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:block}.reveal .slide aside,.reveal .slide div.aside{position:absolute;bottom:20px;font-size:0.7em;color:#6f6f6f}.reveal .slide sup{font-size:0.7em}.reveal .slide.scrollable aside,.reveal .slide.scrollable div.aside{position:relative;margin-top:1em}.reveal .slide aside .aside-footnotes{margin-bottom:0}.reveal .slide aside .aside-footnotes li:first-of-type{margin-top:0}.reveal .layout-sidebar{display:flex;width:100%;margin-top:.8em}.reveal .layout-sidebar .panel-sidebar{width:270px}.reveal .layout-sidebar-left .panel-sidebar{margin-right:calc(0.5em * 2)}.reveal .layout-sidebar-right .panel-sidebar{margin-left:calc(0.5em * 2)}.reveal .layout-sidebar .panel-fill,.reveal .layout-sidebar .panel-center,.reveal .layout-sidebar .panel-tabset{flex:1}.reveal .panel-input,.reveal .panel-sidebar{font-size:.5em;padding:.5em;border-style:solid;border-color:#bbb;border-width:1px;border-radius:4px;background-color:#f8f9fa}.reveal .panel-sidebar :first-child,.reveal .panel-fill :first-child{margin-top:0}.reveal .panel-sidebar :last-child,.reveal .panel-fill :last-child{margin-bottom:0}.panel-input>div,.panel-input>div>div{vertical-align:middle;padding-right:1em}.reveal p,.reveal .slides section,.reveal .slides section>section{line-height:1.3}.reveal.smaller .slides section,.reveal .slides section.smaller,.reveal .slides section .callout{font-size:0.7em}.reveal.smaller .slides h1,.reveal .slides section.smaller h1{font-size:calc(2.5em / 0.7)}.reveal.smaller .slides h2,.reveal .slides section.smaller h2{font-size:calc(1.6em / 0.7)}.reveal.smaller .slides h3,.reveal .slides section.smaller h3{font-size:calc(1.3em / 0.7)}.reveal .columns>.column>:not(ul,ol){margin-left:.25em;margin-right:.25em}.reveal .columns>.column:first-child>:not(ul,ol){margin-right:.5em;margin-left:0}.reveal .columns>.column:last-child>:not(ul,ol){margin-right:0;margin-left:.5em}.reveal .slide-number{color:#92bf59;background-color:#fff}.reveal .footer{color:#6f6f6f}.reveal .footer a{color:#78a540}.reveal .slide-number{color:#6f6f6f}.reveal .slide figure>figcaption,.reveal .slide img.stretch+p.caption,.reveal .slide img.r-stretch+p.caption{font-size:0.7em}@media screen and (min-width: 500px){.reveal .controls[data-controls-layout=edges] .navigate-left{left:.2em}.reveal .controls[data-controls-layout=edges] .navigate-right{right:.2em}.reveal .controls[data-controls-layout=edges] .navigate-up{top:.4em}.reveal .controls[data-controls-layout=edges] .navigate-down{bottom:2.3em}}.tippy-box[data-theme~=quarto-reveal]{background-color:#fff;color:#222;border-radius:4px;border:solid 1px #6f6f6f;font-size:.6em}.tippy-box[data-theme~=quarto-reveal] .tippy-arrow{color:#6f6f6f}.tippy-box[data-placement^=bottom]>.tippy-content{padding:7px 10px;z-index:1}.reveal .callout.callout-style-simple .callout-body,.reveal .callout.callout-style-default .callout-body,.reveal .callout.callout-style-simple div.callout-caption,.reveal .callout.callout-style-default div.callout-caption{font-size:inherit}.reveal .callout.callout-style-default .callout-icon::before,.reveal .callout.callout-style-simple .callout-icon::before{height:2rem;width:2rem;background-size:2rem 2rem}.reveal .callout.callout-captioned .callout-caption p{margin-top:.5em}.reveal .callout.callout-captioned .callout-icon::before{margin-top:1rem}.reveal .callout.callout-captioned .callout-body>.callout-content>:last-child{margin-bottom:1rem}.reveal .panel-tabset [role=tab]{padding:.25em .7em}.reveal .slide-menu-button .fa-bars::before{background-image:url('data:image/svg+xml,')}.reveal .slide-chalkboard-buttons .fa-easel2::before{background-image:url('data:image/svg+xml,')}.reveal .slide-chalkboard-buttons .fa-brush::before{background-image:url('data:image/svg+xml,')}/*! light */.reveal ol[type=a]{list-style-type:lower-alpha}.reveal ol[type=a s]{list-style-type:lower-alpha}.reveal ol[type=A s]{list-style-type:upper-alpha}.reveal ol[type=i]{list-style-type:lower-roman}.reveal ol[type=i s]{list-style-type:lower-roman}.reveal ol[type=I s]{list-style-type:upper-roman}.reveal ol[type="1"]{list-style-type:decimal}.reveal ul.task-list{list-style:none}.reveal ul.task-list li input[type=checkbox]{width:2em;height:2em;margin:0 1em .5em -1.6em;vertical-align:middle}.reveal .quarto-title-block .quarto-title-authors{display:flex;justify-content:center}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author{padding-left:.5em;padding-right:.5em}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a,.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a:hover,.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a:visited,.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a:active{color:inherit;text-decoration:none}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-author-name{margin-bottom:.1rem}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-author-email{margin-top:0px;margin-bottom:.4em;font-size:.6em}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-author-orcid img{margin-bottom:4px}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-affiliation{font-size:.7em;margin-top:0px;margin-bottom:8px}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-affiliation:first{margin-top:12px}strong,b{font-weight:900;color:#047c90}th{font-size:35px}td{font-size:20px}.custom-title{font-family:"Sanchez",serif;color:#d2e3f3;font-size:1.7em;left:20px}.custom-subtitle{font-family:"Montserrat",sans-serif;color:#d2e3f3;font-size:1.2em;font-weight:900;left:20px}.custom-subtitle-orange{font-family:"Montserrat",sans-serif;color:#a2520e;font-size:1.2em;font-weight:900;left:20px}.custom-subtitle2{font-family:"Montserrat",sans-serif;color:#d2e3f3;font-size:1em;left:20px}.custom-subtitle3{font-family:"Montserrat",sans-serif;color:#d2e3f3;font-size:.8em;left:20px}.title-footer{text-align:center !important;color:#d2e3f3;font-size:.4em !important}.slide-title{font-family:"Sanchez",serif;color:#047c90;font-size:1.4em;font-weight:700;margin-bottom:.5em}.slide-title-dark{font-family:"Sanchez",serif;color:#f7f7f7;font-size:1.4em;font-weight:700;margin-bottom:.5em}.slide-title-smaller-white{font-family:"Sanchez",serif;color:#fff;font-size:1.2em;font-weight:700;margin-bottom:.5em}.slide-title-smaller{font-family:"Sanchez",serif;color:#047c90;font-size:1.2em;font-weight:700;margin-bottom:.5em}.large-body-text{font-family:"Montserrat",sans-serif;color:#047c90;font-size:1em}.medium-body-text{font-family:"Montserrat",sans-serif;color:#047c90;font-size:.8em}.medium-body-text-white{font-family:"Montserrat",sans-serif;color:#f7f7f7;font-size:.8em}.body-text{font-size:23px;line-height:1.7em;margin-bottom:1em}.small-text{font-size:19px;line-height:1.5em}.smaller-text{font-size:16px;line-height:1.5em}.smallest-text{font-size:14px;line-height:1.5em}.gray-text{color:#adadad}.white-text{color:#f7f7f7}.important-text-bg{background-color:rgba(217,178,189,.5);padding-top:5px;padding-bottom:5px;padding-right:5px;padding-left:8px;border-radius:25px}.quote-text-bg{background-color:rgba(218,224,224,.5);padding-top:5px;padding-bottom:5px;padding-right:5px;padding-left:8px;border-radius:15px}.vertical-center{margin:0;position:absolute;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%)}.page-center{line-height:700px;text-align:center}.topbr{display:inline-block;margin-top:1em}.bottombr{display:block;margin-bottom:1em}.panel-tabset{font-size:30px}/*# sourceMappingURL=f95d2bded9c28492b788fe14c3e9f347.css.map */ +*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #FFFFFF;--quarto-body-color: #222;--quarto-text-muted: #6f6f6f;--quarto-border-color: #bbbbbb;--quarto-border-width: 1px;--quarto-border-radius: 4px}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:absolute;right:.5em;left:inherit;background-color:rgba(0,0,0,0)}:root{--mermaid-bg-color: #FFFFFF;--mermaid-edge-color: #999;--mermaid-node-fg-color: #222;--mermaid-fg-color: #222;--mermaid-fg-color--lighter: #3c3c3c;--mermaid-fg-color--lightest: #555555;--mermaid-font-family: Montserrat, sans-serif;--mermaid-label-bg-color: #FFFFFF;--mermaid-label-fg-color: #468;--mermaid-node-bg-color: rgba(68, 102, 136, 0.1);--mermaid-node-fg-color: #222}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}pre.sourceCode:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}pre.sourceCode:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}.panel-tabset [role=tablist]{border-bottom:1px solid #bbb;list-style:none;margin:0;padding:0;width:100%}.panel-tabset [role=tablist] *{-webkit-box-sizing:border-box;box-sizing:border-box}@media(min-width: 30em){.panel-tabset [role=tablist] li{display:inline-block}}.panel-tabset [role=tab]{border:1px solid rgba(0,0,0,0);border-top-color:#bbb;display:block;padding:.5em 1em;text-decoration:none}@media(min-width: 30em){.panel-tabset [role=tab]{border-top-color:rgba(0,0,0,0);display:inline-block;margin-bottom:-1px}}.panel-tabset [role=tab][aria-selected=true]{background-color:#bbb}@media(min-width: 30em){.panel-tabset [role=tab][aria-selected=true]{background-color:rgba(0,0,0,0);border:1px solid #bbb;border-bottom-color:#fff}}@media(min-width: 30em){.panel-tabset [role=tab]:hover:not([aria-selected=true]){border:1px solid #bbb}}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file,.code-with-filename .code-with-filename-file pre{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file,.quarto-dark .code-with-filename .code-with-filename-file pre{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.reveal.center .slide aside,.reveal.center .slide div.aside{position:initial}section.has-light-background,section.has-light-background h1,section.has-light-background h2,section.has-light-background h3,section.has-light-background h4,section.has-light-background h5,section.has-light-background h6{color:#222}section.has-light-background a,section.has-light-background a:hover{color:#2a76dd}section.has-light-background code{color:#4758ab}section.has-dark-background,section.has-dark-background h1,section.has-dark-background h2,section.has-dark-background h3,section.has-dark-background h4,section.has-dark-background h5,section.has-dark-background h6{color:#fff}section.has-dark-background a,section.has-dark-background a:hover{color:#42affa}section.has-dark-background code{color:#ffa07a}#title-slide,div.reveal div.slides section.quarto-title-block{text-align:"left"}#title-slide .subtitle,div.reveal div.slides section.quarto-title-block .subtitle{margin-bottom:2.5rem}.reveal .slides{text-align:left}.reveal .title-slide h1{font-size:1.6em}.reveal[data-navigation-mode=linear] .title-slide h1{font-size:2.5em}.reveal div.sourceCode{border:1px solid #bbb;border-radius:4px}.reveal pre{width:100%;box-shadow:none;background-color:#f7f7f7;border:none;margin:0;font-size:.4em}.reveal code{color:#900c3f;background-color:#f7f7f7;white-space:pre-wrap}.reveal pre.sourceCode code{background-color:#f7f7f7;padding:6px 9px;max-height:500px;white-space:pre}.reveal pre code{background-color:#fff;color:#222}.reveal .column-output-location{display:flex;align-items:stretch}.reveal .column-output-location .column:first-of-type div.sourceCode{height:100%;background-color:#f7f7f7}.reveal blockquote{display:block;position:relative;color:#6f6f6f;width:unset;margin:var(--r-block-margin) auto;padding:.625rem 1.75rem;border-left:.25rem solid #6f6f6f;font-style:normal;background:none;box-shadow:none}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:block}.reveal .slide aside,.reveal .slide div.aside{position:absolute;bottom:20px;font-size:0.7em;color:#6f6f6f}.reveal .slide sup{font-size:0.7em}.reveal .slide.scrollable aside,.reveal .slide.scrollable div.aside{position:relative;margin-top:1em}.reveal .slide aside .aside-footnotes{margin-bottom:0}.reveal .slide aside .aside-footnotes li:first-of-type{margin-top:0}.reveal .layout-sidebar{display:flex;width:100%;margin-top:.8em}.reveal .layout-sidebar .panel-sidebar{width:270px}.reveal .layout-sidebar-left .panel-sidebar{margin-right:calc(0.5em * 2)}.reveal .layout-sidebar-right .panel-sidebar{margin-left:calc(0.5em * 2)}.reveal .layout-sidebar .panel-fill,.reveal .layout-sidebar .panel-center,.reveal .layout-sidebar .panel-tabset{flex:1}.reveal .panel-input,.reveal .panel-sidebar{font-size:.5em;padding:.5em;border-style:solid;border-color:#bbb;border-width:1px;border-radius:4px;background-color:#f8f9fa}.reveal .panel-sidebar :first-child,.reveal .panel-fill :first-child{margin-top:0}.reveal .panel-sidebar :last-child,.reveal .panel-fill :last-child{margin-bottom:0}.panel-input>div,.panel-input>div>div{vertical-align:middle;padding-right:1em}.reveal p,.reveal .slides section,.reveal .slides section>section{line-height:1.3}.reveal.smaller .slides section,.reveal .slides section.smaller,.reveal .slides section .callout{font-size:0.7em}.reveal.smaller .slides h1,.reveal .slides section.smaller h1{font-size:calc(2.5em / 0.7)}.reveal.smaller .slides h2,.reveal .slides section.smaller h2{font-size:calc(1.6em / 0.7)}.reveal.smaller .slides h3,.reveal .slides section.smaller h3{font-size:calc(1.3em / 0.7)}.reveal .columns>.column>:not(ul,ol){margin-left:.25em;margin-right:.25em}.reveal .columns>.column:first-child>:not(ul,ol){margin-right:.5em;margin-left:0}.reveal .columns>.column:last-child>:not(ul,ol){margin-right:0;margin-left:.5em}.reveal .slide-number{color:#92bf59;background-color:#fff}.reveal .footer{color:#6f6f6f}.reveal .footer a{color:#78a540}.reveal .slide-number{color:#6f6f6f}.reveal .slide figure>figcaption,.reveal .slide img.stretch+p.caption,.reveal .slide img.r-stretch+p.caption{font-size:0.7em}@media screen and (min-width: 500px){.reveal .controls[data-controls-layout=edges] .navigate-left{left:.2em}.reveal .controls[data-controls-layout=edges] .navigate-right{right:.2em}.reveal .controls[data-controls-layout=edges] .navigate-up{top:.4em}.reveal .controls[data-controls-layout=edges] .navigate-down{bottom:2.3em}}.tippy-box[data-theme~=light-border]{background-color:#fff;color:#222;border-radius:4px;border:solid 1px #6f6f6f;font-size:.6em}.tippy-box[data-theme~=light-border] .tippy-arrow{color:#6f6f6f}.tippy-box[data-placement^=bottom]>.tippy-content{padding:7px 10px;z-index:1}.reveal .callout.callout-style-simple .callout-body,.reveal .callout.callout-style-default .callout-body,.reveal .callout.callout-style-simple div.callout-title,.reveal .callout.callout-style-default div.callout-title{font-size:inherit}.reveal .callout.callout-style-default .callout-icon::before,.reveal .callout.callout-style-simple .callout-icon::before{height:2rem;width:2rem;background-size:2rem 2rem}.reveal .callout.callout-titled .callout-title p{margin-top:.5em}.reveal .callout.callout-titled .callout-icon::before{margin-top:1rem}.reveal .callout.callout-titled .callout-body>.callout-content>:last-child{margin-bottom:1rem}.reveal .panel-tabset [role=tab]{padding:.25em .7em}.reveal .slide-menu-button .fa-bars::before{background-image:url('data:image/svg+xml,')}.reveal .slide-chalkboard-buttons .fa-easel2::before{background-image:url('data:image/svg+xml,')}.reveal .slide-chalkboard-buttons .fa-brush::before{background-image:url('data:image/svg+xml,')}/*! light */.reveal ol[type=a]{list-style-type:lower-alpha}.reveal ol[type=a s]{list-style-type:lower-alpha}.reveal ol[type=A s]{list-style-type:upper-alpha}.reveal ol[type=i]{list-style-type:lower-roman}.reveal ol[type=i s]{list-style-type:lower-roman}.reveal ol[type=I s]{list-style-type:upper-roman}.reveal ol[type="1"]{list-style-type:decimal}.reveal ul.task-list{list-style:none}.reveal ul.task-list li input[type=checkbox]{width:2em;height:2em;margin:0 1em .5em -1.6em;vertical-align:middle}div.cell-output-display div.pagedtable-wrapper table.table{font-size:.6em}.reveal .code-annotation-container-hidden{display:none}.reveal code.sourceCode button.code-annotation-anchor,.reveal code.sourceCode .code-annotation-anchor{font-family:"Roboto Mono",monospace;color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;font-size:.7em;line-height:1.2em;margin-top:2px}.reveal code.sourceCode button.code-annotation-anchor{cursor:pointer}.reveal code.sourceCode a.code-annotation-anchor{text-align:center;vertical-align:middle;text-decoration:none;cursor:default;height:1.2em;width:1.2em}.reveal #code-annotation-line-highlight-gutter{width:100%;border-top:solid var(--quarto-hl-co-color) 1px;border-bottom:solid var(--quarto-hl-co-color) 1px;z-index:2}.reveal #code-annotation-line-highlight{margin-left:-8em;width:calc(100% + 4em);border-top:solid var(--quarto-hl-co-color) 1px;border-bottom:solid var(--quarto-hl-co-color) 1px;z-index:2;margin-bottom:-2px}.reveal code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#f7f7f7;font-weight:bolder}.reveal pre.code-annotation-code{padding-top:0;padding-bottom:0}.reveal pre.code-annotation-code code{z-index:3;padding-left:0px}.reveal dl.code-annotation-container-grid{margin-left:.1em}.reveal dl.code-annotation-container-grid dt{margin-top:.65rem;font-family:"Roboto Mono",monospace;border:solid #222 1px;border-radius:50%;height:1.3em;width:1.3em;line-height:1.3em;font-size:.5em;text-align:center;vertical-align:middle;text-decoration:none}.reveal dl.code-annotation-container-grid dd{margin-left:.25em}.reveal .scrollable ol li:first-child:nth-last-child(n+10),.reveal .scrollable ol li:first-child:nth-last-child(n+10)~li{margin-left:1em}.reveal .quarto-title-block .quarto-title-authors{display:flex;justify-content:"left"}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author{padding-left:0;padding-right:.5em}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a,.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a:hover,.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a:visited,.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a:active{color:inherit;text-decoration:none}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-author-name{margin-bottom:.1rem}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-author-email{margin-top:0px;margin-bottom:.4em;font-size:.6em}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-author-orcid img{margin-bottom:4px}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-affiliation{font-size:.7em;margin-top:0px;margin-bottom:8px}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-affiliation:first{margin-top:12px}strong,b{font-weight:900;color:#047c90}th{font-size:35px}td{font-size:20px}hr{border:4px solid #003660;border-radius:5px;margin-bottom:30px}.hr-teal{border:4px solid #047c90}.custom-title{font-family:"Sanchez",serif;color:#d2e3f3;font-size:1.7em;left:20px}.custom-subtitle{font-family:"Montserrat",sans-serif;color:#d2e3f3;font-size:1.2em;font-weight:900;left:20px}.custom-subtitle-orange{font-family:"Montserrat",sans-serif;color:#a2520e;font-size:1.2em;font-weight:900;left:20px}.custom-subtitle2{font-family:"Montserrat",sans-serif;color:#d2e3f3;font-size:.9em;left:20px}.custom-subtitle3{font-family:"Montserrat",sans-serif;color:#d2e3f3;font-size:.8em;left:20px}.title-footer{text-align:center !important;color:#d2e3f3;font-size:.4em !important}.slide-title{font-family:"Sanchez",serif;color:#047c90;font-size:1.4em;font-weight:700;margin-bottom:.5em}.slide-title-dark{font-family:"Sanchez",serif;color:#f7f7f7;font-size:1.4em;font-weight:700;margin-bottom:.5em}.slide-title-smaller-white{font-family:"Sanchez",serif;color:#fff;font-size:1.2em;font-weight:700;margin-bottom:.5em}.slide-title-smaller{font-family:"Sanchez",serif;color:#047c90;font-size:1.2em;font-weight:700;margin-bottom:.5em}.slide-title-smallest{font-family:"Sanchez",serif;color:#047c90;font-size:1.1em;font-weight:700}.large-body-text{font-family:"Montserrat",sans-serif;color:#047c90;font-size:1em}.medium-body-text{font-family:"Montserrat",sans-serif;color:#047c90;font-size:.8em}.medium-body-text-white{font-family:"Montserrat",sans-serif;color:#f7f7f7;font-size:.8em}.body-text{font-size:23px;line-height:1.7em;margin-bottom:1em}.small-text{font-size:19px;line-height:1.5em}.smaller-text{font-size:16px;line-height:1.5em}.smallest-text{font-size:14px;line-height:1.5em}.gray-text{color:#adadad}.white-text{color:#f7f7f7}.teal-text{color:#047c90}.important-text-bg{background-color:rgba(217,178,189,.5);padding-top:5px;padding-bottom:5px;padding-right:5px;padding-left:8px;border-radius:25px}.quote-text-bg{background-color:rgba(218,224,224,.5);padding-top:5px;padding-bottom:5px;padding-right:5px;padding-left:8px;border-radius:15px}.vertical-center{margin:0;position:absolute;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%)}.page-center{line-height:700px;text-align:center}.topbr{display:inline-block;margin-top:1em}.bottombr{display:block;margin-bottom:1em}.panel-tabset{font-size:30px}/*# sourceMappingURL=f95d2bded9c28492b788fe14c3e9f347.css.map */ diff --git a/index_files/libs/revealjs/plugin/markdown/plugin.js b/index_files/libs/revealjs/plugin/markdown/plugin.js old mode 100755 new mode 100644 diff --git a/index_files/libs/revealjs/plugin/math/katex.js b/index_files/libs/revealjs/plugin/math/katex.js old mode 100755 new mode 100644 diff --git a/index_files/libs/revealjs/plugin/pdf-export/pdfexport.js b/index_files/libs/revealjs/plugin/pdf-export/pdfexport.js index c399fa9..bf9104c 100644 --- a/index_files/libs/revealjs/plugin/pdf-export/pdfexport.js +++ b/index_files/libs/revealjs/plugin/pdf-export/pdfexport.js @@ -101,6 +101,9 @@ var PdfExport = ( function( _Reveal ){ Reveal = _Reveal; install(); }; + Plugin.togglePdfExport = function () { + togglePdfExport(); + }; } return Plugin; diff --git a/index_files/libs/revealjs/plugin/quarto-support/footer.css b/index_files/libs/revealjs/plugin/quarto-support/footer.css index 385473d..390d5b3 100644 --- a/index_files/libs/revealjs/plugin/quarto-support/footer.css +++ b/index_files/libs/revealjs/plugin/quarto-support/footer.css @@ -6,6 +6,7 @@ max-height: 2.2rem; height: 100%; width: auto; + z-index: 2; } .reveal .footer { diff --git a/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js b/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js index 1245b0d..9674053 100644 --- a/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js +++ b/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js @@ -37,4 +37,7 @@ window.RevealMenuToolHandlers = { downloadDrawings: revealMenuToolHandler(function () { RevealChalkboard.download(); }), + togglePdfExport: revealMenuToolHandler(function () { + PdfExport.togglePdfExport(); + }), }; diff --git a/meds_styles.scss b/meds_styles.scss index 9243dc1..07fd9b5 100644 --- a/meds_styles.scss +++ b/meds_styles.scss @@ -2,7 +2,8 @@ // fonts //@import url('https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@200&family=Roboto+Mono:wght@300&family=Sanchez&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Lato&family=Montserrat&family=Nunito+Sans:wght@200&family=Roboto+Mono:wght@300&family=Sanchez&display=swap'); +//@import url('https://fonts.googleapis.com/css2?family=Lato&family=Montserrat&family=Nunito+Sans:wght@200&family=Roboto+Mono:wght@300&family=Sanchez&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;700&family=Nunito:wght@400;700&family=Roboto+Mono:wght@300;400&family=Sanchez&display=swap'); // Fonts (CSS rules) //$font-family-sans-serif: 'Nunito Sans', sans-serif; @@ -49,6 +50,17 @@ td { font-size: 20px; } +hr { // horizontal line + border: 4px solid $dark-blue; + border-radius: 5px; + margin-bottom: 30px; +} + + +.hr-teal { // horizontal line + border: 4px solid $teal; +} + /* h3 { font-family: $font-family-serif; color: $teal; @@ -87,7 +99,7 @@ td { .custom-subtitle2 { font-family: $font-family-sans-serif; color: $baby-blue; - font-size: 1em; + font-size: 0.9em; //position: absolute; left: 20px; } @@ -138,6 +150,13 @@ td { margin-bottom: 0.5em; } +.slide-title-smallest { + font-family: $font-family-serif; + color: $teal; + font-size: 1.1em; + font-weight: 700; +} + .large-body-text { font-family: $font-family-sans-serif; color: $teal; @@ -185,6 +204,10 @@ td { color: $off-white; } +.teal-text { + color: $teal; +} + .important-text-bg { background-color: rgba(217, 178, 189, 0.5); padding-top: 5px; diff --git a/sections/0-prerequisites.qmd b/sections/0-prerequisites.qmd index a62b724..4504122 100644 --- a/sections/0-prerequisites.qmd +++ b/sections/0-prerequisites.qmd @@ -4,16 +4,18 @@ format: revealjs ## {#prerequisites data-menu-title="Prerequisites"} -

`r fontawesome::fa("check", fill = "#047C90", a11y = "sem")` Prerequisites
+[{{< fa check title="check mark" >}} Prerequisites]{.slide-title} + +
:::: {.columns} ::: {.column width="70%"}

*This workshop assumes that participants have the following:*

-
`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` R/RStudio installed & a basic familiarity with the language
+
[{{< fa angle-right title="a bullet point" >}}]{.teal-text} R/RStudio installed & a basic familiarity with the language
-
`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` A GitHub profile & git installed/configured
+
[{{< fa angle-right title="a bullet point" >}}]{.teal-text} A GitHub profile & git installed/configured
::: ::: {.column width="30%"} @@ -22,7 +24,7 @@ format: revealjs :::: -
`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` You have the required R packages installed. You can install/update them all at once by running:
+
[{{< fa angle-right title="a bullet point" >}}]{.teal-text} You have the required R packages installed. You can install/update them all at once by running:
```{r} #| eval: false diff --git a/sections/1-what-is-shiny.qmd b/sections/1-what-is-shiny.qmd index 067cb1f..a7efbe8 100644 --- a/sections/1-what-is-shiny.qmd +++ b/sections/1-what-is-shiny.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#what-is-shiny data-menu-title="~~~ What is Shiny? ~~~" background="#053660"}
-

`r fontawesome::fa("r-project", fill = "#d2e3f3", a11y = "sem")` What is Shiny?

+

{{< fa brands r-project title="R logo" >}} What is Shiny?

*Think interactive web pages built by people who love to code in R (i.e. hopefully many of you!), no JavaScript experience necessary.*

@@ -13,7 +13,9 @@ format: revealjs ## {#easy-web-apps data-menu-title="Shiny = easy web apps"} -
Shiny makes building web apps easy
+[Shiny makes building web apps easy]{.slide-title} + +

*"**Shiny is an R package that makes it easy to build interactive web apps straight from R.** You can host standalone apps on a webpage or embed them in [R Markdown](https://rmarkdown.rstudio.com/?_ga=2.5356915.1997816511.1640293283-2019993402.1637352626) documents or build [dashboards](http://rstudio.github.io/shinydashboard/?_ga=2.242738759.492023234.1673556996-309155161.1666221806). You can also extend your Shiny apps with [CSS themes](http://rstudio.github.io/shinythemes/?_ga=2.162383609.492023234.1673556996-309155161.1666221806), [htmlwidgets](http://www.htmlwidgets.org/), and JavaScript [actions.](https://github.com/daattali/shinyjs/blob/master/README.md)"* **- RStudio**

@@ -26,7 +28,7 @@ format: revealjs ## {#app-anatomy data-menu-title="~~~ Anatomy of an app ~~~" background="#053660"}
-

`r fontawesome::fa("puzzle-piece", fill = "#d2e3f3", a11y = "sem")` The anatomy of a Shiny app

+

{{< fa puzzle-piece title="puzzle piece" >}} The anatomy of a Shiny app

*What does a Shiny app look like under the hood?*

@@ -34,7 +36,9 @@ format: revealjs ## {#basic-anatomy data-menu-title="Basic Anatomy"} -
The basic anatomy of a Shiny app
+[The basic anatomy of a Shiny app]{.slide-title} + +

Shiny apps are composed in *two* parts: (1) a **web page** that displays the app to a user (i.e. the **user interface**, or **UI** for short), and (2) a **computer** that powers the app (i.e. the **server**)

@@ -46,7 +50,9 @@ format: revealjs ## {#widgets data-menu-title="Widgets"} -
Widgets are web elements that users can interact with via the UI
+[Widgets are web elements that users can interact with via the UI]{.slide-title-smaller} + +
::::{.columns} @@ -60,9 +66,9 @@ format: revealjs ::: {.column width="35%"}
-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Widgets collect information from the user which is then used to update outputs created in the server.

+

{{< fa angle-right title="a bullet point" >}} Widgets collect information from the user which is then used to update outputs created in the server.

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Shiny comes with a set of of [standard widgets](https://shiny.rstudio.com/tutorial/written-tutorial/lesson3/) (see left), but you can also explore widget extensions using a variety of other packages (e.g. [`{shinyWidgets}`](https://github.com/dreamRs/shinyWidgets), [`{DT}`](https://rstudio.github.io/DT/), [`{plotly}`](https://plotly.com/r/))

+

{{< fa angle-right title="a bullet point" >}} Shiny comes with a set of of [standard widgets](https://shiny.rstudio.com/tutorial/written-tutorial/lesson3/) (see left), but you can also explore widget extensions using a variety of other packages (e.g. [`{shinyWidgets}`](https://github.com/dreamRs/shinyWidgets), [`{DT}`](https://rstudio.github.io/DT/), [`{plotly}`](https://plotly.com/r/))

::: :::: @@ -71,7 +77,9 @@ format: revealjs ## {#reactivity-intro data-menu-title="Reactivity Intro"} -
Reactivity: a brief intro
+[Reactivity: a brief intro]{.slide-title} + +

Reactivity is what makes Shiny apps responsive i.e. it lets the app instantly update itself whenever the user makes a change. At a very basic level, it looks something like this:

@@ -84,7 +92,7 @@ format: revealjs ## {#examples-please data-menu-title="~~~ Examples Please? ~~~" background="#053660"}
-

`r fontawesome::fa("laptop-code", fill = "#d2e3f3", a11y = "sem")` Can I see an example please?

+

{{< fa laptop-code title="a laptop computer with the code symbol, , on the screen" >}} Can I see an example please?

*I'm glad you asked! There are lots of great examples online, including those developed by Bren alumni, as well as built-in teaching examples.*

@@ -92,23 +100,27 @@ format: revealjs ## {#shinyapp-examples data-menu-title="Examples of shiny apps"} -
Example shiny apps built by some familiar folks `r fontawesome::fa("face-smile", fill = "#05859B", a11y = "sem")`
+[Example shiny apps built by some familiar folks {{< fa face-smile title="smiling face" >}}]{.slide-title} + +
-

`r fontawesome::fa("droplet", fill = "#05859B", a11y = "sem")` [HydroTech Helper](https://danielkerstan.shinyapps.io/usgs_water_data/) ([video tutorial](https://www.youtube.com/watch?v=t8AUNpIb4eE)), *by MEDS 2022 alumn, [Daniel Kerstan](https://www.linkedin.com/in/daniel-kerstan-5b162321b/), developed during his time as a USGS Hydrologic Technician* -- access real-time monitoring of USGS hydrology sites and equipment

+

[{{< fa droplet title="a water droplet" >}}]{.teal-text} [HydroTech Helper](https://danielkerstan.shinyapps.io/usgs_water_data/) ([video tutorial](https://www.youtube.com/watch?v=t8AUNpIb4eE)), *by MEDS 2022 alumn, [Daniel Kerstan](https://www.linkedin.com/in/daniel-kerstan-5b162321b/), developed during his time as a USGS Hydrologic Technician* -- access real-time monitoring of USGS hydrology sites and equipment

-

`r fontawesome::fa("fish-fins", fill = "#05859B", a11y = "sem")` [Moorea Coral Reef LTER Shiny Application](https://shinyapps.bren.ucsb.edu/ShinyAppMooreaViz/) ([source code](https://shinyapps.bren.ucsb.edu/ShinyAppMooreaViz/)), *by MEDS 2022 alumni, [Allie Cole](https://www.linkedin.com/in/allie-ingrid-cole-60351a1ba/), [Felicia Cruz](https://www.linkedin.com/in/cruz-felicia/), [Jake Eisaguirre](https://jake-eisaguirre.github.io/) & [Charles Henrickson](https://www.linkedin.com/in/charles-hendrickson-0001a0223/) as part of their MEDS capstone project* -- visualize spatial and temporal patterns of coral reef stressors surrounding Moorea, French Polynesia

+

[{{< fa fish-fins title="a fish with fins" >}}]{.teal-text} [Moorea Coral Reef LTER Shiny Application](https://shinyapps.bren.ucsb.edu/ShinyAppMooreaViz/) ([source code](https://shinyapps.bren.ucsb.edu/ShinyAppMooreaViz/)), *by MEDS 2022 alumni, [Allie Cole](https://www.linkedin.com/in/allie-ingrid-cole-60351a1ba/), [Felicia Cruz](https://www.linkedin.com/in/cruz-felicia/), [Jake Eisaguirre](https://jake-eisaguirre.github.io/) & [Charles Henrickson](https://www.linkedin.com/in/charles-hendrickson-0001a0223/) as part of their MEDS capstone project* -- visualize spatial and temporal patterns of coral reef stressors surrounding Moorea, French Polynesia

-

`r fontawesome::fa("water", fill = "#05859B", a11y = "sem")` [Marine Mammal Bycatch Impacts Exploration Tool](https://msiple.shinyapps.io/mmrefpoints/) ([source code](https://github.com/mcsiple/mmrefpoints)) *by [Dr. Megsie Siple](https://www.linkedin.com/in/margaret-siple-66157211/) and colleagues* -- compute population projections under different bycatch mortality levels

+

[{{< fa water title="three water waves" >}}]{.teal-text} [Marine Mammal Bycatch Impacts Exploration Tool](https://msiple.shinyapps.io/mmrefpoints/) ([source code](https://github.com/mcsiple/mmrefpoints)) *by [Dr. Megsie Siple](https://www.linkedin.com/in/margaret-siple-66157211/) and colleagues* -- compute population projections under different bycatch mortality levels

-

`r fontawesome::fa("book-open-reader", fill = "#05859B", a11y = "sem")` [Novel-gazing](https://msiple.shinyapps.io/NovelGazingApp/) ([source code](https://github.com/mcsiple/novelgazing)) *by [Dr. Megsie Siple](https://www.linkedin.com/in/margaret-siple-66157211/)* -- a fun app for exploring your Goodreads data, inspired by community ecology

+

[{{< fa book-open-reader title="a person holding a book up to their face" >}}]{.teal-text} [Novel-gazing](https://msiple.shinyapps.io/NovelGazingApp/) ([source code](https://github.com/mcsiple/novelgazing)) *by [Dr. Megsie Siple](https://www.linkedin.com/in/margaret-siple-66157211/)* -- a fun app for exploring your Goodreads data, inspired by community ecology

--- ## {#built-in-examples data-menu-title="Built-in Examples"} -
The Shiny packages comes with 11 built-in examples
+[The Shiny packages comes with 11 built-in examples]{.slide-title-smaller} + +
-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Check out the available Shiny app examples by running this code in your console:

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Check out the available Shiny app examples by running this code in your console:

```{r} #| eval: false @@ -119,7 +131,7 @@ runExample(example = NA) . . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Run the first example, which plots R’s built-in `faithful` data set with a configurable number of bins:

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Run the first example, which plots R’s built-in `faithful` data set with a configurable number of bins:

```{r} #| eval: false @@ -131,7 +143,7 @@ runExample("01_hello") . . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` These working examples also come paired with source code for you to see how the app is built. For example, the `sliderInput` is built with the following code:

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} These working examples also come paired with source code for you to see how the app is built. For example, the `sliderInput` is built with the following code:

```{r} #| eval: false diff --git a/sections/2-setup.qmd b/sections/2-setup.qmd index bc055f6..b0c54a7 100644 --- a/sections/2-setup.qmd +++ b/sections/2-setup.qmd @@ -13,7 +13,9 @@ format: revealjs ## {#github-repo data-menu-title="Create GitHub Repo"} -
Create your GitHub repo
+[Create your GitHub repo]{.slide-title} + +

Let's start by creating a GitHub repo to house our soon-to-be app(s), then we'll clone our repo to our computer. I'm using RStudio to clone my repo in the example below, but you can also do this via the command line using `git clone `.

@@ -23,7 +25,9 @@ format: revealjs ## {#repo-structure data-menu-title="Repo Structure"} -
Shiny app repo structure
+[Shiny app repo structure]{.slide-title} + +

Not much is *required* to make a functional app (which is awesome) -- for a basic app, you really just need an `app.R` file where you'll write the code for your UI and server. To stay organized, we'll place `app.R` into a subdirectory (e.g. `/myapp`), which will also house any dependencies (e.g. other scripts/files/etc.) used by `app.R`.

@@ -33,7 +37,9 @@ format: revealjs ## {#begin-the-same data-menu-title="All Apps Begin the Same"} -
All Shiny apps begin (in almost) the same way
+[All Shiny apps begin (in almost) the same way]{.slide-title-smaller} + +

You have the option of creating either a **single-file app** or **two-file app**, and they look nearly the same (we'll see both formats in the coming slides).

@@ -45,7 +51,9 @@ format: revealjs ## {#single-file data-menu-title="Single-file App"} -
Create a single-file Shiny app
+[Create a single-file Shiny app]{.slide-title} + +

You can create a single-file app using RStudio's built-in Shiny app template (e.g. File > New Project... > New Directory > Shiny Application), but it's just as easy to create it from scratch (and you'll memorize the structure faster!). Let's do that now.

@@ -79,7 +87,9 @@ shinyApp(ui = ui, server = server) ## {#run-app data-menu-title="Run Your App"} -
Run your app
+[Run your app]{.slide-title-smaller} + +

Once you have saved your `app.R` file, the "Run" code button should turn into a "Run App" button that looks like: A green, right facing triangular arrow next to the words 'Run App'. Click that button to run your app (alternatively, run `runApp("directory-name")` in your console -- for me, that looks like, `runApp("single-file-app")`)!

@@ -105,7 +115,9 @@ shinyApp(ui = ui, server = server) ## {#two-file data-menu-title="Two-file App"} -
Create a two-file Shiny app
+[Create a two-file Shiny app]{.slide-title-smaller} + +

In practice, you will likely find yourself opting for the the two-file format -- code expands quickly, even when building relatively small apps. This two-file approach (well, three if you use a `global.R` file, which is encouraged) will help to keep your code a bit more manageable.

diff --git a/sections/3-first-app.qmd b/sections/3-first-app.qmd index 215c58d..a10f237 100644 --- a/sections/3-first-app.qmd +++ b/sections/3-first-app.qmd @@ -7,7 +7,7 @@ editor_options: ## {#build-app1 data-menu-title="~~~ Building App #1 ~~~" background="#053660"}
-

`r fontawesome::fa("tools", fill = "#d2e3f3", a11y = "sem")` Building out your 1st app

+

{{< fa tools title="a wrench and screwdriver" >}} Building out your 1st app

*Here, we'll create our first reactive objects and establish a general Shiny coding workflow.*

@@ -15,29 +15,31 @@ editor_options: ## {#LO-app1 data-menu-title="Learning Objectives - App #1"} -
`r fontawesome::fa("book-open", fill = "#05859B", a11y = "sem")` Learning Objectives - App #1 (single-file app)
+[{{< fa book-open title="an open book" >}} Learning Objectives - App #1 (single-file app)]{.slide-title-smaller} + +

By the end of building out this first app, you should be a bit more familiar with:

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` writing a single-file (`app.R`) shiny app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} writing a single-file (`app.R`) shiny app

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` adding and styling text in the UI using `tags`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} adding and styling text in the UI using `tags`

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` practicing data wrangling and visualization *outside* of your shiny app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} practicing data wrangling and visualization *outside* of your shiny app

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` following a general workflow for building reactive apps, which includes adding **inputs** and **outputs** to the **UI**, then writing the **server instructions** on how to assemble user input values into outputs

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} following a general workflow for building reactive apps, which includes adding **inputs** and **outputs** to the **UI**, then writing the **server instructions** on how to assemble user input values into outputs

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` running and quitting apps in RStudio

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} running and quitting apps in RStudio

. . . @@ -45,25 +47,27 @@ editor_options: . . . -

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{shiny}`: framework for building our reactive app + standard widgets

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{shiny}`: framework for building our reactive app + standard widgets

. . . -

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{DT}`: interactive datatable widgets (that can be made reactive using shiny!)

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{DT}`: interactive datatable widgets (that can be made reactive using shiny!)

. . . -

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{tidyverse}`: collection of packages for wrangling & visualizing data

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{tidyverse}`: collection of packages for wrangling & visualizing data

. . . -

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{palmerpenguins}`: data

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{palmerpenguins}`: data

--- ## {#roadmap-app1 data-menu-title="Roadmap App#1"} -
Roadmap for App #1
+[Roadmap for App #1]{.slide-title} + +

We'll start by building a small **single-file app** using data from the `{palmerpenguins}` package. We'll build out the the following features:

@@ -93,7 +97,9 @@ editor_options: ## {#adding-text data-menu-title="Adding text"} -
Add text in the UI
+[Add text in the UI]{.slide-title-smaller} + +

We'll do this in the **UI** within `fluidPage()`, a layout function that sets up the basic visual structure of the page and scales components in real time to fill all available browser width. Add a title and subtitle to your app (be sure to separate each with a comma, `,`), save, and run:

@@ -135,7 +141,9 @@ ui <- fluidPage( ## {#inputs-outputs data-menu-title="Inputs & Outputs"} -
What are inputs and outputs?
+[What are inputs and outputs?]{.slide-title} + +

Next, we will begin to add some inputs and outputs to our UI inside `fluidPage()` (anything that you put into `fluidPage()` will appear in our app's user interface...and we want inputs and outputs to show up there!).

@@ -147,16 +155,16 @@ ui <- fluidPage( ::: {.column width="45%"}

**Examples of Input Functions:**

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `actionButton()`

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `checkboxInput()`

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `checkboxGroupInput()`

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `dateInput()`

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `dateRangeInput()`

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `radioButtons()`

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `selectInput()`

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `sliderInput()`

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `textInput()`

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` See full list of `shiny` input functions [here](https://shiny.rstudio.com/tutorial/written-tutorial/lesson3/)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `actionButton()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `checkboxInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `checkboxGroupInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `dateInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `dateRangeInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `radioButtons()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `selectInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `sliderInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `textInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} See full list of `shiny` input functions [here](https://shiny.rstudio.com/tutorial/written-tutorial/lesson3/)

::: ::: {.column width="5%"} @@ -164,12 +172,12 @@ ui <- fluidPage( ::: {.column width="45%"}

**Examples of Output Functions:**

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `dataTableOutput()` (inserts an interactive table)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `imageOutput()` (inserts an image)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `plotOutput()` (inserts a plot)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `tableOutput()` (inserts a table)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `textOutput()` (inserts text)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` See full list of `shiny` output functions [here](https://shiny.rstudio.com/tutorial/written-tutorial/lesson4/)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `dataTableOutput()` (inserts an interactive table)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `imageOutput()` (inserts an image)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `plotOutput()` (inserts a plot)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `tableOutput()` (inserts a table)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `textOutput()` (inserts text)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} See full list of `shiny` output functions [here](https://shiny.rstudio.com/tutorial/written-tutorial/lesson4/)

::: :::: @@ -178,7 +186,9 @@ ui <- fluidPage( ## {#reactive-plot-app1 data-menu-title="Adding reactive plot (app #1)"} -
Adding our reactive plot
+[Adding our reactive plot]{.slide-title} + +

Next, we'll create a **scatterplot of penguin bill lengths vs. penguin flipper lengths** using the `penguins` data set from the `{palmerpengiuns}` package. We will make this scatterplot *reactive* by adding a `sliderInput` that allows users to filter the displayed data points by **selecting a range of penguin body masses** (e.g. only plot bill and flipper lengths for penguins with body masses ranging from 4,500 grams to 6,000 grams).

@@ -205,13 +215,15 @@ ui <- fluidPage( ## {#input-syntax data-menu-title="Input Syntax"} -
Input function syntax
+[Input function syntax]{.slide-title} + +
-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` **All input functions have the same first argument, `inputId`** (**NOTE:** `Id` *not* `ID`), **which is used to connect the front end of your app (the UI) with the back end (the server).** For example, if your UI has an `inputId = "name"`, the server function will access that input value using the syntax `input$name`. The `inputId` has two constraints: **(1)** it must be a simple string containing only letters, numbers, and underscores, **(2)** it must be unique within your app.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **All input functions have the same first argument, `inputId`** (**NOTE:** `Id` *not* `ID`), **which is used to connect the front end of your app (the UI) with the back end (the server).** For example, if your UI has an `inputId = "name"`, the server function will access that input value using the syntax `input$name`. The `inputId` has two constraints: **(1)** it must be a simple string containing only letters, numbers, and underscores, **(2)** it must be unique within your app.

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Most input functions have a second parameter called `label`, which is used to create a human-readable label for the control, which will appear in the UI.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Most input functions have a second parameter called `label`, which is used to create a human-readable label for the control, which will appear in the UI.

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` The remaining arguments are unique to each input function. Oftentimes, these include a `value` parameter, which lets you set the default value of your widget, where applicable.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} The remaining arguments are unique to each input function. Oftentimes, these include a `value` parameter, which lets you set the default value of your widget, where applicable.

**A couple examples:**

```{r} @@ -228,7 +240,9 @@ selectInput(inputId = "island_input", label = "Choose and island:", ...) ## {#add-input data-menu-title="Add an Input"} -
**Step 1:** Add an input to your app
+[**Step 1:** Add an input to your app]{.slide-title-smaller} + +

First let's add a `sliderInput()` that will allow users to select a range of penguin body masses (g).

@@ -257,7 +271,9 @@ ui <- fluidPage( ## {#output-syntax data-menu-title="Output Syntax"} -
Output function syntax
+[Output function syntax]{.slide-title} + +

Outputs in the UI create **placeholders** which are later filled by the server function.

@@ -278,7 +294,9 @@ dataTableOutput(outputId = "penguin_data") ## {#add-output data-menu-title="Add Output"} -
**Step 2:** Add an output to your app
+[**Step 2:** Add an output to your app]{.slide-title-smaller} + +

Let's now add a `plotOutput()`, which will be updated based on the user inputs via the `sliderInput()`, then run the app.

@@ -324,10 +342,14 @@ ui <- fluidPage( ## {#rendering-outputs data-menu-title="Rendering outputs"} -
Rendering outputs
+[Rendering outputs]{.slide-title} + +

Each `*Output()` function in the UI is coupled with a `render*()` function in the server, which contains the "instructions" for creating the output based on user inputs (or in other words, the instructions for making your output *reactive*).

+
+

**Examples of `*Output()` functions and their corresponding `render*()` functions:**

| Output function | Render function | @@ -342,7 +364,9 @@ ui <- fluidPage( ## {#assemble data-menu-title="Assemble Inputs into Outputs"} -
**Step 3:** Tell the server how to assemble inputs into outputs
+[**Step 3:** Tell the server how to assemble inputs into outputs]{.slide-title} + +

Now that we've designed our input/output in the UI, we need to write the server instructions (i.e. write the server function) on how to use the input value(s) (i.e. penguin body mass range via a slider input) to update the output (scatter plot).

@@ -364,7 +388,9 @@ ui <- fluidPage( ## {#rule1 data-menu-title="Rule #1"} -
**Rule 1:** Save objects you want to display to `output$`
+[**Rule 1:** Save objects you want to display to `output$`]{.slide-title-smaller} + +
:::: {.columns} @@ -417,7 +443,9 @@ server <- function(input, output) { ## {#rule2.1 data-menu-title="Rule #2a"} -
**Rule 2:** Build reactive objects with `render*()`
+[**Rule 2:** Build reactive objects with `render*()`]{.slide-title-smallest} + +

Use the appropriate `render*()` function to make your output reactive (e.g. if you have a `plotOutput` in your UI, you will need to use `renderPlot()` in your server).

@@ -461,7 +489,9 @@ server <- function(input, output) { ## {#rule2.2 data-menu-title="Practice in seperate script"} -
**An Aside:** Draft objects (e.g. plots) in a separate script first
+[**An Aside:** Draft objects (e.g. plots) in a separate script first]{.slide-title-smaller} + +

I find it easier to experiment and draft my objects (e.g. plots) first in a separate script, then copy the code over to the server after. I want to make a plot that looks like this:

@@ -506,7 +536,9 @@ ggplot(na.omit(penguins), ## {#rule2.3 data-menu-title="Copy code into server"} -
Copy your plot code into the server
+[Copy your plot code into the server]{.slide-title-smaller} + +

Copy your code over to your app, placing it inside the `{}` (and make sure to add any additional required packages to the top of your `app.R` script). Run your app. What do you notice?

@@ -557,7 +589,9 @@ server <- function(input, output) { ## {#non-reactive-plot data-menu-title="Non-reactive plot appears"} -
A non-reactive plot now lives in our `plotOutput()` placeholder
+[A non-reactive plot now lives in our `plotOutput()` placeholder]{.slide-title-smaller} + +

We have a plot (yay!), but it isn't reactive. We have not yet told the server how to update the plot based on user inputs via the `sliderInput()` in the UI. Let's do that next...

@@ -567,7 +601,9 @@ server <- function(input, output) { ## {#practice-filtering data-menu-title="Practice filtering data"} -
Practice filtering data in our separate script
+[Practice filtering data in our separate script]{.slide-title-smaller} + +

First, create a new data frame where we filter the `body_mass_g` column for observations within a specific range of values (in this example, values ranging from 3000 - 4000):

@@ -625,7 +661,9 @@ ggplot(na.omit(body_mass_df), # plot 'body_mass_df' rather than 'penguins' df ## {#what-needs-updating data-menu-title="What needs to be reactive?"} -
Which part of our code needs to be updated when a user changes the slider range input?
+[Which part of our code needs to be updated when a user changes the slider range input?]{.slide-title-smaller} + +
. . . @@ -674,7 +712,9 @@ body_mass_df <- penguins |> ## {#rule3.1 data-menu-title="Rule #3a"} -
**Rule 3:** Access input values with `input$`
+[**Rule 3:** Access input values with `input$`]{.slide-title-smaller} + +

Recall that in our **UI**, we gave our `sliderInput()` an `inputId = "body_mass_input"`.

@@ -714,7 +754,9 @@ server <- function(input, output) { ## {#rule3.2 data-menu-title="Rule #3b"} -
**Rule 3:** Access input values with `input$`
+[**Rule 3:** Access input values with `input$`]{.slide-title-smallest} + +

In our server, we can access the values of that slider input using the syntax, `input$body_mass_input`. *If you want your output to change according to the input values, substitute hard-coded values (e.g. 3725:5191) with the input values from the UI (e.g. `input$body_mass_input[1]:input$body_mass_input[2]`)*.

@@ -762,7 +804,9 @@ server <- function(input, output) { ## {#run-that-app data-menu-title="Run that app!"} -
Okay, RUN THAT APP!
+[Okay, RUN THAT APP!]{.slide-title} + +

You should now have a reactive Shiny app! *Note that reactivity automatically occurs whenever you use an **input value** to **render** an **output object**.*

@@ -772,7 +816,9 @@ server <- function(input, output) { ## {#recapp-app1 data-menu-title="Recap: app #1"} -
Recap: We created our first *reactive* Shiny app following these steps:
+[Recap: We created our first *reactive* Shiny app following these steps:]{.slide-title-smallest} + +
. . . @@ -790,19 +836,21 @@ server <- function(input, output) {

**4.** We wrote the **server** instructions for how to assemble inputs into outputs, following these rules:

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` save objects that you want to display to `output$`

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` build reactive objects using a `render*()` function (and similarly, build reactive data frames using `reactive()`

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` access input values with `input$`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} save objects that you want to display to `output$`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} build reactive objects using a `render*()` function (and similarly, build reactive data frames using `reactive()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} access input values with `input$`

. . . -

And we saw that reactivity automatically occurs whenever we use an ***input value*** to ***render*** an ***output object***.

+

And we saw that reactivity automatically occurs whenever we use an ***input value*** to ***render*** an ***output object***.

--- ## {#app1-ex1 data-menu-title="** Exercise 1 Prompt **"} -
`r fontawesome::fa("question", fill = "#05859B", a11y = "sem")` Exercise 1: Add another reactive widget
+[`r fontawesome::fa("question", fill = "#05859B", a11y = "sem")` Exercise 1: Add another reactive widget]{.slide-title-smaller} + +

The [`{DT}` package](https://rstudio.github.io/DT/) provides an R interface to the JavaScript library [DataTables](https://datatables.net/) (you may have already used the DT package in your knitted RMarkdown/Quarto HTML documents). DT datatables allow for filtering, pagination, sorting, and lots of other neat features for tables on your HTML pages.

@@ -831,12 +879,14 @@ server <- function(input, output) { ## {#app1-ex1-tips data-menu-title="** Exercise 1 Tips **"} -
`r fontawesome::fa("lightbulb", fill = "#05859B", a11y = "sem")` Exercise 1: Tips
+[`r fontawesome::fa("lightbulb", fill = "#05859B", a11y = "sem")` Exercise 1: Tips]{.slide-title-smallest} + +

**Tips:**

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Use `?checkboxGroupInput` to learn more about which arguments you need (remember, all inputs require an `inputId` and oftentimes a `label`, but there are others required to make this work as well)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Both `{shiny}` and `{DT}` packages have functions named `dataTableOutput()` and `renderDataTable()` -- `DT::renderDataTable()` allows you to create both server-side and client-side DataTables and supports additional DataTables features while `shiny::renderDataTable()` only provides server-side DataTables. Be sure to use the one from the `{DT}` package using the syntax `packageName::functionName()`.

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` There are lots of ways to customize DT tables, but to create a basic one, all you need is to `DT::dataTable(your_dataframe)`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Use `?checkboxGroupInput` to learn more about which arguments you need (remember, all inputs require an `inputId` and oftentimes a `label`, but there are others required to make this work as well)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Both `{shiny}` and `{DT}` packages have functions named `dataTableOutput()` and `renderDataTable()` -- `DT::renderDataTable()` allows you to create both server-side and client-side DataTables and supports additional DataTables features while `shiny::renderDataTable()` only provides server-side DataTables. Be sure to use the one from the `{DT}` package using the syntax `packageName::functionName()`.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} There are lots of ways to customize DT tables, but to create a basic one, all you need is to `DT::dataTable(your_dataframe)`

**And remember** to follow the steps outlined on the previous slides (jump back to [slide 27](https://ucsb-meds.github.io/EDS430-Shiny/#/reactive-plot-app1)):

@@ -854,7 +904,9 @@ server <- function(input, output) { ## {#app1-ex1-solution data-menu-title="** Exercise 1 Solution **"} -
`r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` Exercise 1: A solution
+[{{< fa check title="check mark" >}} Exercise 1: A solution]{.slide-title-smaller} + +

Press the right arrow key to advance through the newly added lines of code.

@@ -946,7 +998,9 @@ shinyApp(ui = ui, server = server) ## {#common-mistakes data-menu-title="Common Mistakes"} -
Common mistakes to look out for
+[Common mistakes to look out for]{.slide-title-smaller} + +

It's inevitable that you'll make mistakes here and there as you build out your app...and they can be frustrating to catch. A few that I find myself making over and over again are:

@@ -955,16 +1009,16 @@ shinyApp(ui = ui, server = server) :::: {.columns} ::: {.column width="45%"} -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` misspelling `inputId` as `inputID` (or `outputId` as `outputID`)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} misspelling `inputId` as `inputID` (or `outputId` as `outputID`)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` misspelling your inputId (or outputId) name in the server (e.g. UI: `inputId = "myInputID"`, server: `input$my_Input_ID`)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} misspelling your inputId (or outputId) name in the server (e.g. UI: `inputId = "myInputID"`, server: `input$my_Input_ID`)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` repeating `inputId`s (each *must* be unique)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} repeating `inputId`s (each *must* be unique)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` forgetting to separate UI elements with a comma, `,`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} forgetting to separate UI elements with a comma, `,`

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` forgetting the set of parentheses when calling the name of a reactive data frame in a plot (e.g. `ggplot(my_reactive_df(), aes(...))`)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} forgetting the set of parentheses when calling the name of a reactive data frame in a plot (e.g. `ggplot(my_reactive_df(), aes(...))`)

::: ::: {.column width="5%"} diff --git a/sections/4.1-second-app-v1.qmd b/sections/4.1-second-app-v1.qmd index 502be76..2b8f9f2 100644 --- a/sections/4.1-second-app-v1.qmd +++ b/sections/4.1-second-app-v1.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#build-app2 data-menu-title="~~~ Building App #2 ~~~" background="#053660"}
-

`r fontawesome::fa("tools", fill = "#d2e3f3", a11y = "sem")` Building out your 2nd app

+

{{< fa tools title="a wrench and screwdriver" >}} Building out your 2nd app

*Up until now, we've been adding our text and widgets in a pretty unstructured way -- elements are stacked on top of one another within a single column. Next, we'll learn how to customize the layout of our app to make it a bit more visually pleasing.*

@@ -13,33 +13,35 @@ format: revealjs ## {#LO-app2v1 data-menu-title="Learning Objectives - App #2v1"} -
`r fontawesome::fa("book-open", fill = "#05859B", a11y = "sem")` Learning Objectives - App #2v1 (two-file app)
+[{{< fa book-open title="an open book" >}} Learning Objectives - App #2v1 (two-file app)]{.slide-title} + +

By the end of building out this second app, you should:

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` be comfortable creating a shiny app using the two-file (`ui.R` & `server.R`) format along with a `global.R` file

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text}` be comfortable creating a shiny app using the two-file (`ui.R` & `server.R`) format along with a `global.R` file

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` understand how to use layout functions to customize the visual structure of your app's UI

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand how to use layout functions to customize the visual structure of your app's UI

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` have more practice building reactive outputs -- and placing them within the layout structure of your app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have more practice building reactive outputs -- and placing them within the layout structure of your app

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` be able to create multiple inputs that control a given output

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} be able to create multiple inputs that control a given output

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` know how to import larger bodies of text using `includeMarkdown()` (rather than writing & styling text within your UI)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to import larger bodies of text using `includeMarkdown()` (rather than writing & styling text within your UI)

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` successfully publish an app using [shinyapps.io](https://www.shinyapps.io/)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} successfully publish an app using [shinyapps.io](https://www.shinyapps.io/)

. . . @@ -47,17 +49,19 @@ format: revealjs . . . -

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{shinyWidgets}`: extend shiny widgets with some different, fun options

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{shinyWidgets}`: extend shiny widgets with some different, fun options

. . . -

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{lterdatasampler}`: data

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{lterdatasampler}`: data

--- ## {#roadmap-app2v1 data-menu-title="Roadmap App #2v1"} -
Roadmap for App #2v1
+[Roadmap for App #2v1]{.slide-title-smaller} + +

We'll be building out our **two-file app** using data from the `{lterdatasampler}` and `{palmerpenguins}` packages. We'll focus on creating a functional app that has a more visually pleasing UI layout (and we'll refine it's appearance even further in [v2]()). By the end of v1, we'll have created:

@@ -88,7 +92,9 @@ format: revealjs ## {#two-source data-menu-title="Two source panes"} -
Two files? Try two panes!
+[Two files? Try two panes!]{.slide-title} + +

We'll be building out a **two-file shiny app** this time around. You can open multiple scripts up side-by-side by navigating to **Tools** > **Global Options** > **Pane Layout** > **Add Column**

@@ -100,7 +106,9 @@ format: revealjs ## {#app2-plots data-menu-title="Draft Plots (app#2)"} -
Practice data wrangling, filtering & viz first!
+[Practice data wrangling, filtering & viz first!]{.slide-title-smallest} + +

Here's what I've done in my `~scratch/practice_script_app2_lter.R` file:

@@ -217,18 +225,20 @@ ggplot(na.omit(island_df), aes(x = flipper_length_mm, fill = species)) + ## {#global.R data-menu-title="global.R"} -
A `global.R` file can help you keep code organized
+[A `global.R` file can help you keep code organized]{.slide-title-smaller} + +

While not a requirement of a shiny app, a `global.R` file will help reduce redundant code, increase your app's speed, and help keep code more clearly organized. It works by running once when your app is first launched, making any logic, objects, etc. contained in it available to both the `ui.R` and `server.R` files (or, in the case of a single-file shiny app, the `app.R` file). It's a great place for things like:

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` loading packages

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` importing data

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` sourcing scripts (particularly functions -- we'll talk more about functions later)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` data wrangling (though you'll want to do any major data cleaning before bringing your data into your app)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` building custom `ggplot` themes

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` etc.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} loading packages

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} importing data

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} sourcing scripts (particularly functions -- we'll talk more about functions later)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} data wrangling (though you'll want to do any major data cleaning before bringing your data into your app)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} building custom `ggplot` themes

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} etc.


@@ -240,16 +250,18 @@ ggplot(na.omit(island_df), aes(x = flipper_length_mm, fill = species)) + ## {#unstructured-app1 data-menu-title="Unstructured first app"} -
We created a perfectly functional first app, but it's not so visually pleasing
+[We created a perfectly functional first app, but it's not so visually pleasing]{.slide-title-smaller} + +
:::: {.columns} ::: {.column width="45%"}

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` nothing really grabs your eye

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` inputs & outputs are stacked vertically on top of one another (which requires a lot of vertical scrolling)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` widget label text is difficult to distinguish from other text

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} nothing really grabs your eye

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} inputs & outputs are stacked vertically on top of one another (which requires a lot of vertical scrolling)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} widget label text is difficult to distinguish from other text

::: ::: {.column width="5%"} @@ -269,7 +281,9 @@ ggplot(na.omit(island_df), aes(x = flipper_length_mm, fill = species)) + ## {#layout-functions data-menu-title="Layout functions"} -
Layout functions provide the high-level visual structure of your app
+[Layout functions provide the high-level visual structure of your app]{.slide-title-smaller} + +

Layouts are created using a **hierarchy** of function calls (typically) *inside* `fluidPage()`. Layouts often require a series functions -- **container** functions establish the larger area within which other layout elements are placed. See a few minimal examples of layout functions on the following slides (though [more exist](https://shiny.rstudio.com/articles/layout-guide.html)!).

@@ -301,7 +315,9 @@ navbarPage( ## {#layout-function-examples data-menu-title="Layout Examples"} -
Example UI layouts
+[Example UI layouts]{.slide-title} + +

**Note:** You can combine multiple layout function groups to really customize your UI -- for example, you can create a navbar, include tabs, and also establish sidebar and main panel areas for inputs and outputs.

@@ -451,9 +467,9 @@ navbarPage( ## {#layout-fxns-app2 data-menu-title="Overview of App #2 Layout"} -
Overview of layout functions used in App #2
+[Overview of layout functions used in App #2]{.slide-title-smaller} -
+
@@ -461,7 +477,9 @@ navbarPage( ## {#build-navbar data-menu-title="Build navbar"} -
Build a navbar with two pages
+[Build a navbar with two pages]{.slide-title-smaller} + +

First, let's build a UI that has a navigation bar with two tabs -- one for background information and one to contain our data visualizations. To do this, we'll use `navbarPage()` instead of `fluidPage()` to create our webpage.

@@ -494,7 +512,9 @@ ui <- navbarPage( ## {#add-tabs data-menu-title="Add tabs"} -
Add two tabs to the "Explore the Data" page
+[Add two tabs to the "Explore the Data" page]{.slide-title-smaller} + +

Give your tabs the following titles: `Trout` and `Penguins`.

@@ -544,7 +564,9 @@ ui <- navbarPage( ## {#sidebar-main-panels data-menu-title="Create sidebar & main panels"} -
Add sidebar & main panels to the `Trout` tab
+[Add sidebar & main panels to the `Trout` tab]{.slide-title-smaller} + +

We'll eventually place our input in the sidebar and output in the main panel.

@@ -611,7 +633,9 @@ ui <- navbarPage( ## {#exercise2-prompt data-menu-title="** Exercise 2 Prompt **"} -
`r fontawesome::fa("question", fill = "#05859B", a11y = "sem")` Exercise 2: Add sidebar and main panels to the `Penguins` tab
+[{{< fa question title="question mark" >}} Exercise 2: Add sidebar and main panels to the `Penguins` tab]{.slide-title-smaller} + +
:::: {.columns} @@ -638,7 +662,7 @@ ui <- navbarPage( ## {#exercise2-solution data-menu-title="** Exercise 2 Solution **"} -
`r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` Exercise 2: A solution
+[{{< fa check title="a check mark" >}} Exercise 2: A solution]{.slide-title-smaller} ```{r} #| eval: false @@ -720,33 +744,37 @@ ui <- navbarPage( ## {#layout-review data-menu-title="Layout review"} -
Some important things to remember when building your UI's layout:
+[Some important things to remember when building your UI's layout:]{.slide-title} + +
. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` try creating a **rough sketch** of your intended layout *before* hitting the keyboard (I like to think of this as UI layout "pseudocode")

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} try creating a **rough sketch** of your intended layout *before* hitting the keyboard (I like to think of this as UI layout "pseudocode")

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` keeping **clean code is important** -- we haven't even any added any content yet and our UI is already >70 lines of code!

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} keeping **clean code is important** -- we haven't even any added any content yet and our UI is already >70 lines of code!

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` use **rainbow parentheses**, **code comments** and plenty of **space between lines** to keep things looking manageable and navigable

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} use **rainbow parentheses**, **code comments** and plenty of **space between lines** to keep things looking manageable and navigable

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` use the keyboard shortcut, `command` + `I` (Mac) or `control` + `I` (Windows), to align messy code -- this helps put those off-alignment parentheses back where they belong

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} use the keyboard shortcut, `command` + `I` (Mac) or `control` + `I` (Windows), to align messy code -- this helps put those off-alignment parentheses back where they belong

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` things can get out of hand quickly -- **add one layout section at a time**, run your app to check that things look as you intend, then continue

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} things can get out of hand quickly -- **add one layout section at a time**, run your app to check that things look as you intend, then continue

--- ## {#first-trout data-menu-title="First up, trout"} -

Add data viz: First up, trout

+[Add data viz: First up, trout]{.slide-title} + +

We'll be using the [`and_vertebrates` dataset](https://lter.github.io/lterdatasampler/reference/and_vertebrates.html) from the [`{lterdatasampler}` package](https://lter.github.io/lterdatasampler/) to create our first reactive plot. These data contain coastal cutthroat trout (*Oncorhynchus clarkii clarkii*) lengths and weights collected in Mack Creek, [Andrews Forest LTER](https://andrewsforest.oregonstate.edu/). Original data can be found on the [EDI Data Portal](https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-and.4027.14). Refer back to [this slide](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots) to revisit our practice data wrangling & visualization script.

@@ -760,7 +788,9 @@ ui <- navbarPage( ## {#import-packages-global data-menu-title="Import packages in global.R"} -
Add packages & wrangle data in `global.R`
+[Add packages & wrangle data in `global.R`]{.slide-title-smallest} + +

In addition to the [`{lterdatasampler}` package](https://lter.github.io/lterdatasampler/), we'll also be using the `{tidyverse}` for data wrangling/visualization, and the [`{shinyWidgets}` package ](https://github.com/dreamRs/shinyWidgets) to add a `pickerInput` and a `checkboxGroupInput` to our app.

@@ -781,7 +811,9 @@ library(shinyWidgets) ## {#wrangle-data-global data-menu-title="Wrangle data in global.R"} -
Add packages & wrangle data in `global.R`
+[Add packages & wrangle data in `global.R`]{.slide-title-smallest} + +

We can also do the bulk of our data wrangling here, rather than in the server (to keep our server code a bit more manageable). If we were reading in a data file (e.g. .csv), we would do that here too. Our new data object `clean_trout`, will now be available for us to call directly in our server.

@@ -820,7 +852,9 @@ clean_trout <- and_vertebrates |> ## {#trout-pickerInput data-menu-title="Add Trout pickerInput()"} -
Add a `pickerInput` for selecting `channel_type` to your UI
+[Add a `pickerInput` for selecting `channel_type` to your UI]{.slide-title-smaller} + +

The `channel_type` variable (originally called `unittype` -- we updated the name when wrangling data (see line 9 on [previous slide](https://ucsb-meds.github.io/EDS430-Shiny/#/wrangle-data-global))) represents the type of water body (*cascade, riffle, isolated pool, pool, rapid, step (small falls), or side channel*) data were collected in. We'll start by building a `shinyWidgets::pickerInput()` to allow users to filter data based on `channel_type`.

@@ -849,7 +883,9 @@ pickerInput(inputId = "channel_type_input", label = "Select channel type(s):", ## {#trout-output data-menu-title="Add Trout output"} -
Add a plot output to your UI
+[Add a plot output to your UI]{.slide-title} + +

Next, we need to create a placeholder in our UI for our trout scatterplot to live. Because we'll be creating a reactive plot, we can use the `plotOutput()` function to do so.

@@ -871,7 +907,9 @@ plotOutput(outputId = "trout_scatterplot") ## {#trout-plot data-menu-title="Trout Reactive Plot"} -
Tell the server how to assemble `pickerInput` values into your `plotOutput`
+[Tell the server how to assemble `pickerInput` values into your `plotOutput`]{.slide-title-smallest} + +

**Remember the three rules for building reactive outputs:** **(1)** save objects you want to display to `output$`, **(2)** build reactive objects using a `render*()` function, and **(3)** access input values with `input$`. When complete, your server should contain the following code:

@@ -918,11 +956,11 @@ server <- function(input, output) { ::: {.column width="35%"}

**A couple notes/reminders:**

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` If needed, reference your [practice script](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots) to remind yourself how you planned to filter and plot your data

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} If needed, reference your [practice script](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots) to remind yourself how you planned to filter and plot your data

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Reactive data frames need a set of parentheses, `()`, following the name of the df (see `ggplot(trout_filtered_df() ...)`)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Reactive data frames need a set of parentheses, `()`, following the name of the df (see `ggplot(trout_filtered_df() ...)`)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` For a cohesive appearance, save your ggplot theme parameters to a named object in `global.R` (here, `myCustomTheme`), then apply to all plots in your app. See the [following slide](https://ucsb-meds.github.io/EDS430-Shiny/#/ggplot-theme) for code.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} For a cohesive appearance, save your ggplot theme parameters to a named object in `global.R` (here, `myCustomTheme`), then apply to all plots in your app. See the [following slide](https://ucsb-meds.github.io/EDS430-Shiny/#/ggplot-theme) for code.

::: :::: @@ -931,7 +969,9 @@ server <- function(input, output) { ## {#ggplot-theme data-menu-title="Save theme to global.R"} -
Save a custom `ggplot` theme to `global.R`
+[Save a custom `ggplot` theme to `global.R`]{.slide-title-smaller} + +

Rather than re-typing your ggplot theme parameters out for every plot in your app, do so once in `global.R`, and save to an object name. You can then easily add your custom theme as a layer to each of your ggplots. **Bonus:** If you decide to modify your plot theme, you only have to do so in one place!

@@ -979,7 +1019,9 @@ myCustomTheme <- theme_light() + ## {#run-app2v1-first-widget data-menu-title="Run the App (trout pickerInput)"} -
Run your app and try out your `pickerInput` widget!
+[Run your app and try out your `pickerInput` widget!]{.slide-title} + +
A user navigates to the 'Explore the Data' tab of our app, 'LTER Animal Data Explorer.' There is a scatterplot with Trout Length (mm) on the x-axis, and Trout Weight (g) on the y-axis. Points are colored and shaped by channel type. There is a pickerWidget to the left of the plot with the channel_types 'cascade' and 'pool' already selected. The user clicks other channel types on/off to see how the data points on the plot change.
@@ -987,7 +1029,9 @@ myCustomTheme <- theme_light() + ## {#second-input-ui data-menu-title="Add a second input"} -
Add a second input that will update the same output
+[Add a second input that will update the same output]{.slide-title} + +

You can have more than one input control the same output. Let's now add a `checkboxGroupButtons` widget to our **UI** for selecting forest `section` (either clear cut forest or old growth forest). Check out the [function documentation](https://dreamrs.github.io/shinyWidgets/reference/checkboxGroupButtons.html) for more information on how to customize the appearance of your buttons.

@@ -1021,7 +1065,9 @@ sidebarPanel( ## {#second-input-server data-menu-title="Update reactive trout df"} -
Update your reactive df to *also* filter based on the new `checkboxGroupInput`
+[Update your reactive df to *also* filter based on the new `checkboxGroupInput`]{.slide-title-smaller} + +

Return to your **server** to modify `trout_filtered_df` -- our data frame needs to be updated based on both the `pickerInput`, which selects for `channel_type`, *and* the `checkboxGrouptInput`, which selects for forest `section`:

@@ -1059,7 +1105,9 @@ output$trout_scatterplot <- renderPlot({ ## {#run-app2v1-second-widget data-menu-title="Run the App"} -
Run your app and try out your `pickerInput` & `checkboxGrouptInput` widgets!
+[Run your app and try out your `pickerInput` & `checkboxGrouptInput` widgets!]{.slide-title-smaller} + +
Our updated app, which includes the same trout scatterplot, but this time, two inputs: one selectInput that allows the user to filter for channel_type, and one checkboxGroupInput, which includes two buttons to select/deselect data collected from the clear cut forest section and the old growth forest section.
From d113272bcfa833e123fb668483ea9c0b9ad5eb44 Mon Sep 17 00:00:00 2001 From: samanthacsik Date: Fri, 6 Oct 2023 14:55:15 -0700 Subject: [PATCH 2/8] updated titles & fa syntax through section 8 --- index.html | 445 ++++++++++++-------------------- sections/4.2-second-app-v1.qmd | 40 ++- sections/4.3-second-app-v1.qmd | 26 +- sections/5-deploy-app.qmd | 30 ++- sections/6-second-app-v2.qmd | 46 ++-- sections/7-redeploy-app.qmd | 6 +- sections/8.1-shinydashboard.qmd | 136 +++++++--- sections/8.2-shinydashboard.qmd | 34 ++- 8 files changed, 386 insertions(+), 377 deletions(-) diff --git a/index.html b/index.html index 7833a1e..befc8d3 100644 --- a/index.html +++ b/index.html @@ -1811,7 +1811,7 @@

@@ -2590,7 +2590,7 @@ drop_na()

-

Add a pickerInput for selecting channel_type to your UI<

+

Add a pickerInput for selecting channel_type to your UI


The channel_type variable (originally called unittype – we updated the name when wrangling data (see line 9 on previous slide)) represents the type of water body (cascade, riffle, isolated pool, pool, rapid, step (small falls), or side channel) data were collected in. We’ll start by building a shinyWidgets::pickerInput() to allow users to filter data based on channel_type. @@ -2815,7 +2815,7 @@

-
+
@@ -2824,45 +2824,36 @@

-

-Add data viz: Next up, penguins -

+

Add data viz: Next up, penguins

+

We’ll be using the penguins dataset from the {palmerpenguins} package to create our second reactive plot. These data contain penguin (genus Pygoscelis) body size measurements collected from three islands in the Palmer Archipelago, Antarctica, as part of the Palmer Station LTER. Original data can be found on the EDI Data Portal (Adélie data, Gentoo data, and Chinstrap data). Refer back to this slide to revisit our practice data wrangling & visualization script.


-
-A cartoon drawing of Chinstrap (atop a purple background), Gentoo (atop a green background) and Adélie (atop an orange background) penguins. -
-
+ +A cartoon drawing of Chinstrap (atop a purple background), Gentoo (atop a green background) and Adélie (atop an orange background) penguins.

Artwork by @allison_horst

-
-Question - Exercise 3: Add a reactive plot to the ‘Penguins’ tab -
+

Exercise 3: Add a reactive plot to the ‘Penguins’ tab

+

Working alone or in groups, add a reactive histogram of penguin flipper lengths (using the penguins data set from the {palmerpenguins} package) to the Penguins tab. Your plot should have the following features and look like the example below, when complete:

-Angle Right - data colored by penguin species + data colored by penguin species

-Angle Right - a shinyWidgets::pickerInput that allows users to filter data based on island, and that includes buttons to Select All / Deselect All island options at once + a shinyWidgets::pickerInput that allows users to filter data based on island, and that includes buttons to Select All / Deselect All island options at once

-Angle Right - a shiny::sliderInput that allows users to change the number of histogram bins and that by default, displays a histogram with 25 bins + a shiny::sliderInput that allows users to change the number of histogram bins and that by default, displays a histogram with 25 bins

-Angle Right - the two widgets should be placed in the sidebarPanel and the reactive histogram should be placed in the mainPanel of the Penguins tab + the two widgets should be placed in the sidebarPanel and the reactive histogram should be placed in the mainPanel of the Penguins tab

@@ -2878,24 +2869,19 @@

-
-Lightbulb - Exercise 3: Tips -
+

Exercise 3: Tips

+

Tips:

-Angle Right - Remember to load the palmerpenguins package at the top of global.R so that your app can find the data + Remember to load the palmerpenguins package at the top of global.R so that your app can find the data

-Angle Right - Add your widgets to the sidebarPanel and your plot output to the mainPanel of the Penguins tab – look for that placeholder text we added earlier to help place your new code in the correct spot within your UI! + Add your widgets to the sidebarPanel and your plot output to the mainPanel of the Penguins tab – look for that placeholder text we added earlier to help place your new code in the correct spot within your UI!

-Angle Right - Try changing the histogram bin number in your practice code script first, before attempting to make it reactive + Try changing the histogram bin number in your practice code script first, before attempting to make it reactive

And remember to follow the our three steps for building reactive outputs (1. add input to UI, 2. add output to UI, 3. tell server how to assemble inputs into outputs)! @@ -2907,10 +2893,8 @@

-
-Check - Exercise 3: A solution -
+

Exercise 3: A solution

+
-
+
@@ -3126,9 +3110,8 @@

-
-Lastly: add background/other important information text -
+

Lastly: add background/other important information text

+

It’s usually valuable (and important) to provide some background information/context for your app – the landing page of your app can be a great place for this. We’re going to add text to our app’s landing page (i.e. the About this App page) so that it looks like the example below:

@@ -3145,23 +3128,19 @@ Some important pieces for information to consider adding:

-Angle Right - motivation for building the app + motivation for building the app

-Angle Right - brief instructions for exploring the data + brief instructions for exploring the data

-Angle Right - who maintains the app, where the code lives, how to submit issues/suggestions + who maintains the app, where the code lives, how to submit issues/suggestions

-
-Adding long text to the UI can get unruly -
+

Adding long text to the UI can get unruly

+

For example, I’ve added and formatted my landing page’s text directly in the UI using lots of nested tags – I’ve done this inside the tabPanel titled About this App (Note: I’ve formatted the layout of this page a bit using fluidRow and columns to create some white space around the edges. I’ve also created a faint gray horizontal line, using hr(), beneath which I added a footnote):

@@ -3275,9 +3254,8 @@ ) # END navbarPage

-
-Instead, use includeMarkdown() to read in text from separate .md files -
+

Instead, use includeMarkdown() to read in text from separate .md files

+

To maintain readability and an overall tidier-looking UI, you can write and style long bodies of text in separate markdown (.md) files that you then read into your UI using the includeMarkdown() function (Important: the includeMarkdown() function requires the markdown package – be sure to add library(markdown) to your global.R file!).

@@ -3424,9 +3402,8 @@

-
-Run your app one more time to admire your beautiful creation! -
+

Run your app one more time to admire your beautiful creation!

+
An app titled 'LTER Animal Data Explorer'. The user starts on the 'About this App' page, which includes a couple paragraphs of intro text. The user then clicks on the 'Explore the Data' page which has two tabs: Trout and Penguins. On the Trout tab, we see a scatterplot with Trout Length (mm) on the x-axis and Trout Weight (g) on the y-axis. The user first filters data by Channel Type using a drop down list selector widget, then by Forest Section using two buttons that toggle on data from clear cut vs. old growth forest. In the Penguin tab, we see a histogram displaying Flipper Lengths (mm) of three penguin species. The user uses a drop down list selector widget to filter data by Island, then uses a slider widget to adjust the number of histogram bins.
@@ -3434,9 +3411,8 @@ Again, we have some UX/UI quirks to fix (most notably, blank plots when all widget options are deselected), which we’ll handle soon. But for now, we have a functioning app that we can practice deploying for the first time!

-
-Code recap for app #2v1, so far: -
+

Code recap for app #2v1, so far:

+

Additionally, you should have a /text folder within your app’s directory (/two-file-app, if you named it as I did) that contains two markdown files, about.md and footer.md.

@@ -3651,17 +3627,15 @@

-Upload - Deploying apps with shinyapps.io + Deploying apps with shinyapps.io

Sharing your Shiny app with others isn’t so easy when it just lives on your computer (and your R session has to act as the server that powers it). We’ll now learn how to host your app using shinyapps.io, a free service for sharing your Shiny apps online.

-
-Connect your shinyapps.io account to RStudio -
+

Connect your shinyapps.io account to RStudio

+

Go to shinyapps.io and login or create an account (if you don’t already have one) – I created my account and login with GitHub. To use shinyapps.io, you first need to link your account with RStudio on your computer. Follow the instructions on shinyapps.io when you first create your account to install the {rsconnect} package and authorize your account:

@@ -3669,9 +3643,8 @@ shinyapps.io displays setup instructions: (1) INSTALL RSCONNECT: The `rsconnect` package can be installed directly from CRAN. To make sure you have the latest version run following code in your R console: `install.packages('rsconnect')`. (2) AUTHORIZE ACCOUNT: The `rsconnect` package must be authorized to your account using a token and secret. To do this, click the copy button below and we'll copy the whole command you need to your clipboard. Just paste it into your console to authorize your account. Once you've entered the command successfully in R, that computer is now authorized to deploy applications to your shinyapps.io account. (3) DEPLOY: Once the `rsconnect` package has been configured, you're ready to deploy your first application. If you haven't written any applications yet, you can also checkout the Getting Started Guide for instruction son how to deploy our demo application. Run the following code in your R console: `library(rsconnect)`, then `rsconnect::deployApp('path/to/your/app')`.

-
-Deploy your app to shinyapps.io -
+

Deploy your app to shinyapps.io

+

Once your account has been authorized, run rsconnect::deployApp("<app_directory_name>") in your console to deploy your app to shinyapps.io. Here, we’ll run rsconnect::deployApp("two-file-app") to deploy the app we’ve been working on.

@@ -3682,9 +3655,8 @@ Our shiny app, now hosted at the URL https://samanthacsik.shinyapps.io/two-file-app which functions the same as when it was hosted locally.

-
-The shinyapps.io dashboard -
+

The shinyapps.io dashboard

+

Your shinyapps.io dashboard provides tons of information about your application metrics, instance (the virtualized server that your app is hosted on) and worker (a special type of R process that an Application Instance runs to service requests to an application) settings, plan management, and more. The free plan (the plan we’re using here today) allows you to deploy five Shiny apps. You are able to archive and/or delete once-deployed apps to make space for new ones.

@@ -3695,9 +3667,8 @@ Check out the shinyapps.io user guide for more information on hosting your apps on shinyapps.io.

-
-Other ways to host your Shiny apps -
+

Other ways to host your Shiny apps

+

shinyapps.io is not the only Shiny app hosting service (though it’s the easiest to get started with and the only one we’ll be covering in detail in this workshop).

@@ -3705,17 +3676,14 @@ Posit also offers the following:

-Angle Right -Shiny server is an open source server which you can deploy for free on your own hardware. It requires more setup and configuration, but can be used without a fee. The Bren and NCEAS servers are configured with Shiny Server for hosting for some in-house apps. + Shiny server is an open source server which you can deploy for free on your own hardware. It requires more setup and configuration, but can be used without a fee. The Bren and NCEAS servers are configured with Shiny Server for hosting for some in-house apps.

-Angle Right -Posit connect is a paid product that provides an advanced suite of services for hosting Shiny apps, Quarto and R Markdown reports, APIs, and more. + Posit connect is a paid product that provides an advanced suite of services for hosting Shiny apps, Quarto and R Markdown reports, APIs, and more.

-
-So how should I host my app? -
+

So how should I host my app?

+

The Bren compute team will work with groups to deploy and maintain apps on in-house servers for up to 6 months after capstone/GP presentations or until they break.

@@ -3726,12 +3694,10 @@

-Angle Right -Preferred: Stick with the free tier of shinyapps.io, if you can! This is by far the most straightforward option that requires no server maintenance for you or your client. If your app exceeds the limitations set by the free tier (e.g. requires more active hours, needs more RAM or instances to support high traffic usage, etc.), you/your client have the option to upgrade to a paid tier – there are 5 paid plan types. Check out the shinyapps.io user guide for more information. Consider setting aside your allocated capstone/GP funds to help support a paid shinyapps.io plan. + Preferred: Stick with the free tier of shinyapps.io, if you can! This is by far the most straightforward option that requires no server maintenance for you or your client. If your app exceeds the limitations set by the free tier (e.g. requires more active hours, needs more RAM or instances to support high traffic usage, etc.), you/your client have the option to upgrade to a paid tier – there are 5 paid plan types. Check out the shinyapps.io user guide for more information. Consider setting aside your allocated capstone/GP funds to help support a paid shinyapps.io plan.

-Angle Right - If you have a server-savvy client, they may want to deploy/host your app using their own infrastructure. If your client plans to pursue this option, but does not yet have a their own server configured to do so, we recommend directing them to the online instructions for getting started with Shiny Server. PLEASE NOTE that Bren staff (including the compute team) are unable to provide technical support for clients in server configuration and app deployment/maintenance. + If you have a server-savvy client, they may want to deploy/host your app using their own infrastructure. If your client plans to pursue this option, but does not yet have a their own server configured to do so, we recommend directing them to the online instructions for getting started with Shiny Server. PLEASE NOTE that Bren staff (including the compute team) are unable to provide technical support for clients in server configuration and app deployment/maintenance.

@@ -3742,43 +3708,36 @@

-Users - Improving user experience + Improving user experience

Our two-file-app is looking pretty good! It’s functional and deployed via shinyapps.io. Next, we’ll focus on making some minor tweaks that can help to improve usability

-
-Book Open - Learning Objectives - App #2v2 (two-file app) -
+

Learning Objectives - App #2v2 (two-file app)

+

By the end of this section, you should:

-Angle Right - understand how to provide users with helpful error messages using validate() + understand how to provide users with helpful error messages using validate()

-Angle Right - know how to add customizable loading animations to alert users when reactive objects are re-rendering + know how to add customizable loading animations to alert users when reactive objects are re-rendering

-Angle Right - know how to add alternate (alt) text to rendered plots + know how to add alternate (alt) text to rendered plots

-Angle Right - understand how to republish an app using shinyapps.io + understand how to republish an app using shinyapps.io

@@ -3793,9 +3752,8 @@

-
-Roadmap for App #2v2 -
+

Roadmap for App #2v2

+

We’ll be refining our two-file app with a focus on creating a more user-friendly experience. When finished with v2, we’ll have added:

@@ -3820,9 +3778,8 @@

-
-Take out any guesswork for your app’s users -
+

Take out any guesswork for your app’s users

+

It’s important to remove any possible points of confusion for successfully using your app.

@@ -3843,9 +3800,8 @@

-
-Writing validation tests -
+

Writing validation tests

+

validate() tests a condition and returns an error if that conditions fails. It’s used in conjunction with need(), which takes an expression that returns TRUE or FALSE, along with a character string to return if the condition is FALSE.

@@ -3871,26 +3827,21 @@ }

-
-Question - & Lightbulb - Exercise 4: Add a validation test for your penguin histogram -
+

& Exercise 4: Add a validation test for your penguin histogram

+


To Do:

-Angle Right - Construct a validation test that displays a clear but succinct message when a user deselects all islands using the pickerWidget + Construct a validation test that displays a clear but succinct message when a user deselects all islands using the pickerWidget


Tips:

-Angle Right - Despite having two inputs, we only need one validation test for our Penguins plot. Why is this? + Despite having two inputs, we only need one validation test for our Penguins plot. Why is this?



@@ -3899,10 +3850,8 @@

-
-Check - Exercise 4: A solution -
+

Exercise 4: A solution

+
server <- function(input, output) {
   
@@ -3966,9 +3915,8 @@
 } # END server

-
-Add loading animations to re-rendering outputs -
+

Add loading animations to re-rendering outputs

+

The {shinycssloaders} package makes it easy to add visual indicators to outputs as they’re loading or re-rendering. This can be particularly helpful if you have outputs that take a few seconds to render – it alerts users that their updated inputs were recognized and that the app is working to re-render outputs.

@@ -3998,9 +3946,8 @@

-
-Include alt text for all data visualizations -
+

Include alt text for all data visualizations

+

Alt text are written descriptions added to images, and importantly, to data visualizations, to help more users understand the content. Assistive technologies (e.g. screen readers) read alt text out loud for users to hear. When alt text is successfully added, the alt tag (along with your text) should appear in the HTML (right click on your app’s data viz to Inspect and ensure that it was added).

@@ -4057,17 +4004,15 @@

-Upload - Redeploying apps with shinyapps.io + Redeploying apps with shinyapps.io

Now that we’ve added some updates to our app, it’s time to redeploy our newest version.

-
-Redeploying is similar to deploying for the first time -
+

Redeploying is similar to deploying for the first time

+

Just a few quick steps before your updates are live at your URL from earlier:

@@ -4101,7 +4046,7 @@
-
+
@@ -4112,43 +4057,36 @@

-Gauge - Building dashboards with shinydashboard + Building dashboards with shinydashboard

Shiny alone is powerful and flexible, however it can take a lot of work to create a sleek/modern UI. shinydashboard provides a “template” for quickly building visually appealing dashboard apps.

-
-Book Open - Learning Objectives - App #3 (shinydashboard) -
+

Learning Objectives - App #3 (shinydashboard)

+

After this section, you should:

-Angle Right - understand the general workflow for pre-processing, saving & reading data into an app + understand the general workflow for pre-processing, saving & reading data into an app

-Angle Right - be comfortable building out a dashboard UI using shinydashboard layout functions + be comfortable building out a dashboard UI using shinydashboard layout functions

-Angle Right - understand how to add static images to your app + understand how to add static images to your app

-Angle Right - feel comfortable creating a basic reactive leaflet map + feel comfortable creating a basic reactive leaflet map

@@ -4158,20 +4096,17 @@

-Box Open -shinydashboard: provides an alternative UI framework for easily building dashboard-style shiny applications + shinydashboard: provides an alternative UI framework for easily building dashboard-style shiny applications

-Box Open -leaflet: for building interactive maps + leaflet: for building interactive maps

-
-Roadmap for App #3 -
+

Roadmap for App #3

+

In this section, we’ll be building a shinydashboard using data downloaded from the Arctic Data Center. We’ll be building out the following features:

@@ -4200,9 +4135,8 @@

-
-But first, what do we mean by a shiny “dashboard”? -
+

But first, what do we mean by a shiny “dashboard”?

+

shinydashboard is just an alternative framework for building shiny apps. In other words, shiny dashboards are just shiny apps, but with some different UI elements that make building apps with a classic “dashboard” feel to them a little bit easier.

@@ -4210,9 +4144,8 @@ A simple shinydashboard with two boxes (one containing a histogram and one containing a sliderInput) in the body. The header reads 'Basic tabs' and the sidebar has two menu items: Dashboard and Widgets.

-
-The most basic shinydashboard is made up of a header, a sidebar, and a body -
+

The most basic shinydashboard is made up of a header, a sidebar, and a body

+

The main difference between a shiny app and a shinydashboard are the UI elements. Rather than a fluidPage() (as used in our previous shiny apps), we’ll create a dashboardPage(), which expects three main parts: a header, a sidebar, and a body. Below is the most minimal possible UI for a shinydashboard page (you can run this code in an app.R file, if you wish).

@@ -4247,34 +4180,26 @@

-
-Example shiny dashboards built by some familiar folks Face Smile - -
+

Example shiny dashboards built by some familiar folks

+

-School -Bren Student Data Explorer (source code), by MEDS 2022 alum, Halina Do-Linh, during her Bren Summer Fellowship (and continued by future MEDS students!) – explore Bren school student demographics and career outcomes + Bren Student Data Explorer (source code), by MEDS 2022 alum, Halina Do-Linh, during her Bren Summer Fellowship (and continued by future MEDS students!) – explore Bren school student demographics and career outcomes

-Person Hiking -Sam’s Strava Stats (source code), by yours truly, Sam Csik – a new and ongoing side project exploring my Strava hiking/biking/walking data + Sam’s Strava Stats (source code), by yours truly, Sam Csik – a new and ongoing side project exploring my Strava hiking/biking/walking data

-Fish -Channel Islands National Park’s Kelp Forest Monitoring Program (source code), by MEDS 2022 alum, Cullen Molitor – explore subtidal monitoring data collected from our closest National Park + Channel Islands National Park’s Kelp Forest Monitoring Program (source code), by MEDS 2022 alum, Cullen Molitor – explore subtidal monitoring data collected from our closest National Park

-Campground -The Outdoor Equity App (source code), developed by MEDS 2022 alumni Halina Do-Linh & Clarissa Boyajian as part of their MEDS capstone project – analyze patterns in the access and demand of visitors at reservable overnight sites + The Outdoor Equity App (source code), developed by MEDS 2022 alumni Halina Do-Linh & Clarissa Boyajian as part of their MEDS capstone project – analyze patterns in the access and demand of visitors at reservable overnight sites

-Fish Fins -Visualizing human impacts on at-risk marine biodiversity (source code, developed by MESM 2022 alum, Ian Brunjes & Dr. Casey O’Hara) – explore how human activities and climate change impact marine biodiversity worldwide + Visualizing human impacts on at-risk marine biodiversity (source code, developed by MESM 2022 alum, Ian Brunjes & Dr. Casey O’Hara) – explore how human activities and climate change impact marine biodiversity worldwide

-
-Setup our shiny dashboard -
+

Setup our shiny dashboard

+

First, create a subdirectory called /shinydashboard and add a ui.R, server.R, and global.R file.

@@ -4321,9 +4246,8 @@

-
-As always, let’s start with the data -
+

As always, let’s start with the data

+

Building an app doesn’t make much sense if we don’t know what we’re going to put in it. So, just like the last two apps, we’ll start with some data wrangling and practice data visualization.

@@ -4347,9 +4271,8 @@

-
-Pre-processing data is critical -
+

Pre-processing data is critical

+

Where you choose to store the data used by your Shiny app will depend largely on the type and size of the file(s) and who “owns” those data. It is likely that you’ll be working with data stored in a database or on a server. This is outside the scope of this workshop, but I suggest reading Dean Attali’s article, Persistent data storage in Shiny apps to start. Because we are going to be working with a relatively small data set, we’ll be downloading and storing our data locally (i.e. on our machines and in our GitHub repo).

@@ -4359,23 +4282,26 @@
-


FCWO_lakemonitoringdata_2011_2022_daily.csv contains 8 attributes (variables) and 18,894 observations collected from a set of 11 lakes located in the Fish Creek Watershed in northern Alaska between 2011-2022. We’ll download and save the file to a raw_data/ folder in the root directory of our repository. We’ll then pre-process the data in a separate script(s) saved to scratch/ and save a cleaned/processed version of the data to our app’s directory, /shinydashboard/data/lake_data_processed.csv. Your repository structure should look similar to example on the right:

-
-A schematic of the repository structure, as described. -
+
+
+
+

A schematic of the repository structure, as described.

+
-

-
-The Goal:
+ + +

+

The Goal:

+
@@ -4391,9 +4317,8 @@

-
-Process lake data & save new file -
+

Process lake data & save new file

+

NOTE: In this example exercise, I’ve removed all rows with missing values (i.e. NaNs in the Depth column & NAs in the BedTemperature column) before calculating averages. This is NOT good practice – exploring and thinking critically about missing data is an important part of data analysis, and in a real-life scenario, you should consider the most appropriate method for handling them.

@@ -4429,9 +4354,8 @@ write_csv(unique_lakes, "shinydashboard/data/lake_data_processed.csv")

-
-A note on file types -
+

A note on file types

+

Oftentimes, you may choose to save your processed data frame as a .rds file (a data file format, native to R, which stores a single R object). .rds file are relatively small (and therefore take up little storage space), take less time to import/export, and preserve data types and classes (e.g. factors and dates), eliminating the need to redefine data types after loading the file. Bear in mind that this increased speed and space-saving may come at the cost of generality – you can’t open a .rds file outside of R or read it in with another programming language (e.g. Python).

@@ -4442,9 +4366,8 @@ The R language logo overlaid on top of a database stack -- often used to represent the rds data file format.

-
-Draft leaflet map -
+

Draft leaflet map

+

There are lots of ways to customize leaflet maps. We’ll be keeping ours relatively simple, but check out the Leaflet for R documentation for more ways to get creative with your maps.

@@ -4457,8 +4380,8 @@
-
- +
+
@@ -4493,9 +4416,8 @@

-
-Practice filtering leaflet observations -
+

Practice filtering leaflet observations

+

We’ll eventually build three sliderInputs to filter lake makers by Elevation, AvgDepth, and AvgTemp. Practice filtering here first (and be sure to update the data frame name in your leaflet code!):

@@ -4508,8 +4430,8 @@
-
- +
+
@@ -4552,9 +4474,8 @@

-
-Sketch out our dashboard UI -
+

Sketch out our dashboard UI

+

I want my dashboard to have two menu items: a welcome page with some background information, and a dashboard page with my reactive map. All elements will be placed inside boxes, the primary building blocks of shinydashboards (more on that soon).

@@ -4571,9 +4492,8 @@

-
-Add a title & menuItems -
+

Add a title & menuItems

+

First, add a title to dashboardHeader() and make more space using titleWidth, if necessary.

@@ -4610,9 +4530,8 @@ dashboardPage(header, sidebar, body)

-
-Add tabItems to your dashboardBody -
+

Add tabItems to your dashboardBody

+

Next, we’ll create tabItems in our dashboardBody – we’ll make a tabItem (singular) for each menuItem in our dashboardSidebar. In order to match a menuItem and a tabItem, ensure that they have matching a tabName (e.g. any content added to the dashboard tabItem will appear under the dashboard menuItem).

@@ -4667,9 +4586,8 @@ dashboardPage(header, sidebar, body)

-
-Add boxes to contain UI content (part 1) -
+

Add boxes to contain UI content (part 1)

+

Boxes are the primary building blocks of shinydashboards and can contain almost any Shiny UI element (e.g. text, inputs, outputs). Start by adding two side-by-side boxes to our dashboard tab inside a fluidRow(). Together, their widths will add up to 12 (the total width of a browser page). These boxes will eventually contain our sliderInputs and our leafletOutput.

@@ -4741,9 +4659,8 @@ dashboardPage(header, sidebar, body)

-
-Add boxes to contain UI content (part 2) -
+

Add boxes to contain UI content (part 2)

+

Lastly, add boxes to our welcome tab We’ll use columns to place one box on the left-hand side of our page, and two stacked boxes on the right-hand side. Each column will take up half the page (Note: For column-based layouts, use NULL for the box width, as the width is set by the column that contains the box). We can create two fluidRows within the right-hand column to stack two boxes vertically.

@@ -4854,9 +4771,8 @@ dashboardPage(header, sidebar, body)

-
-Read data into global.R & add necessary packages -
+

Read data into global.R & add necessary packages

+

Remember to load your pre-processed data, which should live in the /data folder within your app’s directory.

@@ -4872,9 +4788,8 @@ lake_data <- read_csv("data/lake_data_processed.csv")

-
-Add a sliderInput & leafletOutput to the UI -
+

Add a sliderInput & leafletOutput to the UI

+

Start by adding just one sliderInput (for selecting a range of lake Elevations) to the left-hand box in the dashboard tab. Then, add a leafletOutput to create a placeholder space for our map, along with a Spinner animation (from the shinycssloaders package). While we’re here, we can also add titles to each box.

@@ -4993,9 +4908,8 @@ dashboardPage(header, sidebar, body)

-
-Assemble inputs & outputs in server.R -
+

Assemble inputs & outputs in server.R

+

Remember to reference your practice data viz script and to follow our three steps for creating reactive outputs. And don’t forget to add () following each reactive data frame called in your leaflet map!

@@ -5039,9 +4953,8 @@ }

-
-Run your app & test out your first widget -
+

Run your app & test out your first widget

+

If all is good, you should see something similar to this:

@@ -5049,20 +4962,16 @@ Our Fish Creek Watershed Lake Monitoring dashboard. The 'Welcome' page has a box on the left for background info, and two stacked boxes on the right for data citation and disclaimer info. The 'Dashboard' tab has a sliderInput in the left-hand box, where users can select a range of elevations. When a range is selected, the blue markers on the leaflet map in the right-hand box are filtered accordingly. Clicking on the markers reveals more information about the specific site, including Site Name, Elevation, Avg Depth, and AvgTemp.

-
-Question - Exercise 5: Add two more sliderInputs to filter for AvgDepth & AvgTemp -
+

Exercise 5: Add two more sliderInputs to filter for AvgDepth & AvgTemp

+

To Do:

-Angle Right - Add two more sliderInputs, one for AvgDepth and one for AvgTemp beneath our first Elevation sliderInput in the UI + Add two more sliderInputs, one for AvgDepth and one for AvgTemp beneath our first Elevation sliderInput in the UI

-Angle Right - Update our reactive data frame so that all three widgets filter the leaflet map + Update our reactive data frame so that all three widgets filter the leaflet map





@@ -5071,10 +4980,8 @@

-
-Check - Exercise 5: A solution -
+

Exercise 5: A solution

+
  • ui.R
  • @@ -5261,7 +5168,7 @@
-
+
@@ -5270,21 +5177,16 @@

-
-Question - & Lightbulb - Exercise 6: Add titles & text to Welcome page boxes -
+

& Exercise 6: Add titles & text to Welcome page boxes

+

To Do:

-Angle Right - Add titles to each box + Add titles to each box

-Angle Right - Create a /text folder within your app’s directory and add three markdown (.md) files. Write/format text for the background info (left), data citation (top-right), and disclaimer (bottom-right) boxes. Example text below: + Create a /text folder within your app’s directory and add three markdown (.md) files. Write/format text for the background info (left), data citation (top-right), and disclaimer (bottom-right) boxes. Example text below:

    @@ -5317,14 +5219,11 @@ Tips:

    -Angle Right -Titles can include icons! For example: title = tagList(icon("icon-name"), strong("title text here")) + Titles can include icons! For example: title = tagList(icon("icon-name"), strong("title text here"))

-
-Check - Exercise 6: A solution -
+

Exercise 6: A solution

+

Press the right arrow key to advance through the newly added lines of code.

@@ -5478,9 +5377,8 @@

-
-Add a static image -
+

Add a static image

+

As a final touch, let’s add an image to the Welcome page, inside the left-hand box beneath our intro text. First, create a /www folder inside your app’s directory (refer back to this slide for a description of this special directory). Download the map of the Fish Creek Watershed from FCWO’s website here and save it to your /www directory.

@@ -5615,17 +5513,14 @@ dashboardPage(header, sidebar, body)

-
-Unfortunately, our image doesn’t look so great as-is… -
-


+

Unfortunately, our image doesn’t look so great as-is…

+
Our Welcome page, with a map of Fish Creek Watershed beneath the intro text. The image is extremely large, spilling out of the box and across the page.

-
-Use in-line CSS to adjust the image size -
+

Use in-line CSS to adjust the image size

+

We can use in-line CSS to style our image element, as shown below (see style argument). It’s okay if you don’t fully understand what’s going on here for now – we’ll talk in greater detail about how CSS (and Sass) can be used to customize the appearance of your apps in just a bit.

@@ -5763,9 +5658,8 @@ dashboardPage(header, sidebar, body)

-
-Check out your finished dashboard! -
+

Check out your finished dashboard!

+
Our completed dashboard, with our image styled so that it fits within the background info box on the Welcome page, and three functional sliderInputs that update the leaflet map on the Dashboard page.
@@ -5773,9 +5667,8 @@ There’s a ton more to learn about building shinydashboards. Check out the documentation to find instructions on adding components like infoBoxes and valueBoxes, building inputs in the sidebar, easy ways to update the color theme using skins, and more.

-
-Complete code for our dashboard thus far: -
+

Complete code for our dashboard thus far:

+
  • ui.R
  • diff --git a/sections/4.2-second-app-v1.qmd b/sections/4.2-second-app-v1.qmd index 76ebd70..d50b683 100644 --- a/sections/4.2-second-app-v1.qmd +++ b/sections/4.2-second-app-v1.qmd @@ -4,35 +4,45 @@ format: revealjs ## {#second-penguins data-menu-title="Next up, penguins"} -

    Add data viz: Next up, penguins

    +[Add data viz: Next up, penguins]{.slide-title-smaller} + +

    We'll be using the `penguins` dataset from the [`{palmerpenguins}` package](https://allisonhorst.github.io/palmerpenguins/) to create our second reactive plot. These data contain penguin (genus *Pygoscelis*) body size measurements collected from three islands in the Palmer Archipelago, Antarctica, as part of the [Palmer Station LTER](https://pallter.marine.rutgers.edu/). Original data can be found on the EDI Data Portal ([Adélie data](https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-pal.219.5), [Gentoo data](https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-pal.220.5), and [Chinstrap data](https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-pal.221.6)). Refer back to [this slide](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots) to revisit our practice data wrangling & visualization script.


    -
    A cartoon drawing of Chinstrap (atop a purple background), Gentoo (atop a green background) and Adélie (atop an orange background) penguins.
    +```{r} +#| eval: true +#| echo: false +#| fig-align: "center" +#| out-width: "80%" +#| fig-alt: "A cartoon drawing of Chinstrap (atop a purple background), Gentoo (atop a green background) and Adélie (atop an orange background) penguins." +knitr::include_graphics("images/meet_the_penguins.png") +```

    Artwork by [@allison_horst](https://allisonhorst.com/)

    - --- ## {#exercise3-prompt data-menu-title="** Exercise 3 Prompt **"} -
    `r fontawesome::fa("question", fill = "#05859B", a11y = "sem")` Exercise 3: Add a reactive plot to the 'Penguins' tab
    +[{{< fa question title="question mark" >}} Exercise 3: Add a reactive plot to the 'Penguins' tab]{.slide-title-smaller} + +

    Working alone or in groups, add a reactive histogram of penguin flipper lengths (using the `penguins` data set from the [`{palmerpenguins}` package](https://allisonhorst.github.io/palmerpenguins/)) to the **Penguins** tab. Your plot should have the following features and look like the example below, when complete:

    :::: {.columns} ::: {.column width="45%"} -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` data colored by penguin `species`

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} data colored by penguin `species`

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` a `shinyWidgets::pickerInput` that allows users to filter data based on `island`, and that includes buttons to **Select All** / **Deselect All** island options at once

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} a `shinyWidgets::pickerInput` that allows users to filter data based on `island`, and that includes buttons to **Select All** / **Deselect All** island options at once

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` a `shiny::sliderInput` that allows users to change the number of histogram bins and that by default, displays a histogram with **25** bins

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} a `shiny::sliderInput` that allows users to change the number of histogram bins and that by default, displays a histogram with **25** bins

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` the two widgets should be placed in the `sidebarPanel` and the reactive histogram should be placed in the `mainPanel` of the **Penguins** tab

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} the two widgets should be placed in the `sidebarPanel` and the reactive histogram should be placed in the `mainPanel` of the **Penguins** tab

    ::: ::: {.column width="5%"} @@ -50,15 +60,17 @@ format: revealjs ## {#exercise3-tips data-menu-title="** Exercise 3 Tips **"} -
    `r fontawesome::fa("lightbulb", fill = "#05859B", a11y = "sem")` Exercise 3: Tips
    +[{{< fa lightbulb title="a lightbulb" >}} Exercise 3: Tips]{.slide-title-smaller} + +

    **Tips:**

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Remember to load the `palmerpenguins` package at the top of `global.R` so that your app can find the data

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} Remember to load the `palmerpenguins` package at the top of `global.R` so that your app can find the data

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Add your widgets to the `sidebarPanel` and your plot output to the `mainPanel` of the **Penguins** tab -- look for that placeholder text we added earlier to help place your new code in the correct spot within your UI!

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} Add your widgets to the `sidebarPanel` and your plot output to the `mainPanel` of the **Penguins** tab -- look for that placeholder text we added earlier to help place your new code in the correct spot within your UI!

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Try changing the histogram bin number in your practice code script first, before attempting to make it reactive

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} Try changing the histogram bin number in your practice code script first, before attempting to make it reactive

    **And remember** to follow the our three steps for building reactive outputs (1. add input to UI, 2. add output to UI, 3. tell server how to assemble inputs into outputs)!

    @@ -72,7 +84,9 @@ format: revealjs ## {#exercise3-solution data-menu-title="** Exercise 3 Solution **"} -
    `r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` Exercise 3: A solution
    +[{{< fa check title="check mark" >}} Exercise 3: A solution]{.slide-title-smaller} + +
    ::: {.panel-tabset} diff --git a/sections/4.3-second-app-v1.qmd b/sections/4.3-second-app-v1.qmd index 6501e66..1b64216 100644 --- a/sections/4.3-second-app-v1.qmd +++ b/sections/4.3-second-app-v1.qmd @@ -5,7 +5,9 @@ format: revealjs ## {#lastly-text data-menu-title="Lastly, text"} -
    Lastly: add background/other important information text
    +[Lastly: add background/other important information text]{.slide-title-smaller} + +

    It's usually valuable (and important) to provide some background information/context for your app -- the landing page of your app can be a great place for this. We're going to add text to our app's landing page (i.e. the **About this App** page) so that it looks like the example below:

    @@ -24,9 +26,9 @@ format: revealjs

    **Some important pieces for information to consider adding:**

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` motivation for building the app

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` brief instructions for exploring the data

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` who maintains the app, where the code lives, how to submit issues/suggestions

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} motivation for building the app

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} brief instructions for exploring the data

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} who maintains the app, where the code lives, how to submit issues/suggestions

    ::: :::: @@ -36,7 +38,9 @@ format: revealjs ## {#unruly-text data-menu-title="Unruly text in the UI"} -
    Adding long text to the UI can get unruly
    +[Adding long text to the UI can get unruly]{.slide-title-smaller} + +

    For example, I've added and formatted my landing page's text directly in the **UI** using lots of nested `tags` -- I've done this inside the `tabPanel` titled **About this App** (**Note:** I've formatted the layout of this page a bit using `fluidRow` and `column`s to create some white space around the edges. I've also created a faint gray horizontal line, using `hr()`, beneath which I added a footnote):

    @@ -157,7 +161,9 @@ ui <- navbarPage( ## {#includeMarkdown data-menu-title="includeMarkdown()"} -
    Instead, use `includeMarkdown()` to read in text from separate `.md` files
    +[Instead, use `includeMarkdown()` to read in text from separate `.md` files]{.slide-title-smaller} + +

    To maintain readability and an overall tidier-looking UI, you can write and style long bodies of text in separate markdown (`.md`) files that you then read into your UI using the `includeMarkdown()` function (**Important:** the `includeMarkdown()` function requires the `{markdown}` package -- be sure to add `library(markdown)` to your `global.R` file!).

    @@ -308,7 +314,9 @@ Check out the **Explore the Data** page to find interactive data visualizations ## {#last-run data-menu-title="Check out your full app!"} -
    Run your app one more time to admire your beautiful creation!
    +[Run your app one more time to admire your beautiful creation!]{.slide-title-smallest} + +
    An app titled 'LTER Animal Data Explorer'. The user starts on the 'About this App' page, which includes a couple paragraphs of intro text. The user then clicks on the 'Explore the Data' page which has two tabs: Trout and Penguins. On the Trout tab, we see a scatterplot with Trout Length (mm) on the x-axis and Trout Weight (g) on the y-axis. The user first filters data by Channel Type using a drop down list selector widget, then by Forest Section using two buttons that toggle on data from clear cut vs. old growth forest. In the Penguin tab, we see a histogram displaying Flipper Lengths (mm) of three penguin species. The user uses a drop down list selector widget to filter data by Island, then uses a slider widget to adjust the number of histogram bins.
    @@ -318,7 +326,9 @@ Check out the **Explore the Data** page to find interactive data visualizations ## {#app2-code data-menu-title="App #2 code (so far)"} -
    Code recap for app #2v1, so far:
    +[Code recap for app #2v1, so far:]{.slide-title-smaller} + +

    Additionally, you should have a `/text` folder within your app's directory (`/two-file-app`, if you named it as I did) that contains two markdown files, `about.md` and `footer.md`.

    diff --git a/sections/5-deploy-app.qmd b/sections/5-deploy-app.qmd index 8f229f6..b11418d 100644 --- a/sections/5-deploy-app.qmd +++ b/sections/5-deploy-app.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#deploying-apps data-menu-title="Deploying apps with shinyapps.io" background="#053660"}
    -

    `r fontawesome::fa("upload", fill = "#d2e3f3", a11y = "sem")` Deploying apps with [shinyapps.io](https://www.shinyapps.io/)

    +

    {{< fa upload title="a symbol for uploading files -- a server with an upward facing arrow that originates at the server" >}} Deploying apps with [shinyapps.io](https://www.shinyapps.io/)

    *Sharing your Shiny app with others isn't so easy when it just lives on your computer (and your R session has to act as the server that powers it). We'll now learn how to host your app using [shinyapps.io](https://www.shinyapps.io/), a free service for sharing your Shiny apps online.*

    @@ -13,7 +13,9 @@ format: revealjs ## {#shinyapps-account data-menu-title="Set up shinyapps.io account"} -
    Connect your shinyapps.io account to RStudio
    +[Connect your shinyapps.io account to RStudio]{.slide-title-smallest} + +

    Go to [shinyapps.io](https://www.shinyapps.io/) and login or create an account (if you don't already have one) -- I created my account and login with GitHub. To use shinyapps.io, you first need to link your account with RStudio on your computer. Follow the instructions on shinyapps.io when you first create your account to install the [`{rsconnect}` package](https://github.com/rstudio/rsconnect) and authorize your account:

    @@ -23,7 +25,9 @@ format: revealjs ## {#deploy-app data-menu-title="~~~ Deploy your app ~~~"} -
    Deploy your app to shinyapps.io
    +[Deploy your app to shinyapps.io]{.slide-title-smallest} + +

    Once your account has been authorized, run `rsconnect::deployApp("")` in your console to deploy your app to shinyapps.io. Here, we'll run `rsconnect::deployApp("two-file-app")` to deploy the app we've been working on.

    @@ -35,7 +39,9 @@ format: revealjs ## {#shinyapps-dashboard data-menu-title="shinyapps.io dashboard"} -
    The shinyapps.io dashboard
    +[The shinyapps.io dashboard]{.slide-title-smaller} + +

    Your shinyapps.io dashboard provides tons of information about your application metrics, instance (the virtualized server that your app is hosted on) and worker (a special type of R process that an Application Instance runs to service requests to an application) settings, plan management, and more. The free plan (the plan we're using here today) allows you to deploy **five** Shiny apps. You are able to archive and/or delete once-deployed apps to make space for new ones.

    @@ -47,21 +53,25 @@ format: revealjs ## {#other-hosting-options data-menu-title="Alternative ways to host apps"} -
    Other ways to host your Shiny apps
    +[Other ways to host your Shiny apps]{.slide-title} + +

    [shinyapps.io](https://www.shinyapps.io/) is not the only Shiny app hosting service (though it's the easiest to get started with and the only one we'll be covering in detail in this workshop).

    **Posit also offers the following:**

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Shiny server](https://posit.co/products/open-source/shinyserver/) is an open source server which you can deploy for free on your own hardware. It requires more setup and configuration, but can be used without a fee. The Bren and NCEAS servers are configured with Shiny Server for hosting for some in-house apps.

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Shiny server](https://posit.co/products/open-source/shinyserver/) is an open source server which you can deploy for free on your own hardware. It requires more setup and configuration, but can be used without a fee. The Bren and NCEAS servers are configured with Shiny Server for hosting for some in-house apps.

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Posit connect](https://posit.co/products/enterprise/connect/) is a paid product that provides an advanced suite of services for hosting Shiny apps, Quarto and R Markdown reports, APIs, and more.

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Posit connect](https://posit.co/products/enterprise/connect/) is a paid product that provides an advanced suite of services for hosting Shiny apps, Quarto and R Markdown reports, APIs, and more.

    --- ## {#hosting-recommendations data-menu-title="App hosting recommendations"} -
    So how should *I* host my app?
    +[So how should *I* host my app?]{.slide-title-smaller} + +

    The Bren compute team will work with groups to deploy and maintain apps on in-house servers for up to 6 months after capstone/GP presentations *or until they break*.

    @@ -71,10 +81,10 @@ format: revealjs . . . -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` **Preferred:** Stick with the **free** tier of [shinyapps.io](https://www.shinyapps.io/), if you can! This is by far the most straightforward option that requires no server maintenance for you or your client. If your app exceeds the limitations set by the free tier (e.g. requires more active hours, needs more RAM or instances to support high traffic usage, etc.), you/your client have the option to upgrade to a paid tier -- there are [5 paid plan types](https://docs.posit.co/shinyapps.io/billing-and-account-management.html#plan-types). Check out the [shinyapps.io user guide](https://docs.posit.co/shinyapps.io/index.html) for more information. **Consider setting aside your allocated capstone/GP funds to help support a paid shinyapps.io plan.**

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Preferred:** Stick with the **free** tier of [shinyapps.io](https://www.shinyapps.io/), if you can! This is by far the most straightforward option that requires no server maintenance for you or your client. If your app exceeds the limitations set by the free tier (e.g. requires more active hours, needs more RAM or instances to support high traffic usage, etc.), you/your client have the option to upgrade to a paid tier -- there are [5 paid plan types](https://docs.posit.co/shinyapps.io/billing-and-account-management.html#plan-types). Check out the [shinyapps.io user guide](https://docs.posit.co/shinyapps.io/index.html) for more information. **Consider setting aside your allocated capstone/GP funds to help support a paid shinyapps.io plan.**

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` If you have a server-savvy client, they may want to deploy/host your app using their own infrastructure. If your client plans to pursue this option, but does not yet have a their own server configured to do so, we recommend directing them to the [online instructions](https://posit.co/download/shiny-server/) for getting started with Shiny Server. **PLEASE NOTE that Bren staff (including the compute team) are unable to provide technical support for clients in server configuration and app deployment/maintenance.**

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} If you have a server-savvy client, they may want to deploy/host your app using their own infrastructure. If your client plans to pursue this option, but does not yet have a their own server configured to do so, we recommend directing them to the [online instructions](https://posit.co/download/shiny-server/) for getting started with Shiny Server. **PLEASE NOTE that Bren staff (including the compute team) are unable to provide technical support for clients in server configuration and app deployment/maintenance.**

    . . . diff --git a/sections/6-second-app-v2.qmd b/sections/6-second-app-v2.qmd index 61f0170..23b20ee 100644 --- a/sections/6-second-app-v2.qmd +++ b/sections/6-second-app-v2.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#improving-app2 data-menu-title="~~~ Improving App #2 UX ~~~" background="#053660"}
    -

    `r fontawesome::fa("users", fill = "#d2e3f3", a11y = "sem")` Improving user experience

    +

    {{< fa users title="three people" >}} Improving user experience

    *Our two-file-app is looking pretty good! It's functional and deployed via shinyapps.io. Next, we'll focus on making some minor tweaks that can help to improve usability*

    @@ -13,25 +13,27 @@ format: revealjs ## {#LO-app2v2 data-menu-title="Learning Objectives - App #2v2"} -
    `r fontawesome::fa("book-open", fill = "#05859B", a11y = "sem")` Learning Objectives - App #2v2 (two-file app)
    +[{{< fa book-open title="an open book" >}} Learning Objectives - App #2v2 (two-file app)]{.slide-title} + +

    By the end of this section, you should:

    . . . -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` understand how to provide users with helpful error messages using `validate()`

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand how to provide users with helpful error messages using `validate()`

    . . . -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` know how to add customizable loading animations to alert users when reactive objects are re-rendering

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to add customizable loading animations to alert users when reactive objects are re-rendering

    . . . -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` know how to add alternate (alt) text to rendered plots

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to add alternate (alt) text to rendered plots

    . . . -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` understand how to *republish* an app using [shinyapps.io](https://www.shinyapps.io/)

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand how to *republish* an app using [shinyapps.io](https://www.shinyapps.io/)

    . . . @@ -45,7 +47,9 @@ format: revealjs ## {#roadmap-app2v2 data-menu-title="Roadmap App #2v2"} -
    Roadmap for App #2v2
    +[Roadmap for App #2v2]{.slide-title-smaller} + +

    We'll be refining our **two-file app** with a focus on creating a more user-friendly experience. When finished with v2, we'll have added:

    @@ -73,7 +77,9 @@ format: revealjs ## {#no-guesswork data-menu-title="No guesswork!"} -
    Take out any guesswork for your app's users
    +[Take out any guesswork for your app's users]{.slide-title} + +

    *It's important to remove any possible points of confusion for successfully using your app.*

    @@ -98,7 +104,9 @@ format: revealjs ## {#using-validate data-menu-title="Using validate()"} -
    Writing validation tests
    +[Writing validation tests]{.slide-title} + +

    `validate()` tests a condition and returns an error if that conditions fails. It's used in conjunction with `need()`, which takes an expression that returns `TRUE` or `FALSE`, along with a character string to return if the condition is `FALSE`.

    @@ -130,19 +138,21 @@ server <- function(input, output) { ## {#exercise4-prompt-tips data-menu-title="** Exercise 4 Prompt & Tips **"} -
    `r fontawesome::fa("question", fill = "#05859B", a11y = "sem")` & `r fontawesome::fa("lightbulb", fill = "#05859B", a11y = "sem")` Exercise 4: Add a validation test for your penguin histogram
    +[{{< fa question title="question mark" >}} & {{< fa lightbulb title="a lightbulb" >}} Exercise 4: Add a validation test for your penguin histogram]{.slide-title-smaller} + +

    **To Do:**

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Construct a validation test that displays a clear but succinct message when a user deselects all islands using the `pickerWidget`

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} Construct a validation test that displays a clear but succinct message when a user deselects all islands using the `pickerWidget`


    **Tips:**

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Despite having **two** inputs, we only need **one** validation test for our Penguins plot. Why is this?

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} Despite having **two** inputs, we only need **one** validation test for our Penguins plot. Why is this?



    @@ -153,7 +163,9 @@ server <- function(input, output) { ## {#exercise4-solution data-menu-title="** Exercise 4 Solution **"} -
    `r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` Exercise 4: A solution
    +[{{< fa check title="check mark" >}} Exercise 4: A solution]{.slide-title-smaller} + +
    ```{r} #| eval: false @@ -223,7 +235,9 @@ server <- function(input, output) { ## {#loading-animations data-menu-title="Add loading animations"} -
    Add loading animations to re-rendering outputs
    +[Add loading animations to re-rendering outputs]{.slide-title-smaller} + +

    The [`{shinycssloaders}` package](https://github.com/daattali/shinycssloaders) makes it easy to add visual indicators to outputs as they're loading or re-rendering. This can be particularly helpful if you have outputs that take a few seconds to render -- it alerts users that their updated inputs were recognized and that the app is working to re-render outputs.

    @@ -262,7 +276,9 @@ plotOutput(outputId = "flipperLength_histogram") |> ## {#include-alt-text data-menu-title="Include alt text"} -
    Include alt text for all data visualizations
    +[Include alt text for all data visualizations]{.slide-title-smallest} + +

    Alt text are **written descriptions** added to images, and importantly, to data visualizations, to **help more users understand the content**. Assistive technologies (e.g. screen readers) read alt text out loud for users to hear. When alt text is successfully added, the `alt` tag (along with your text) should appear in the HTML (right click on your app's data viz to **Inspect** and ensure that it was added).

    diff --git a/sections/7-redeploy-app.qmd b/sections/7-redeploy-app.qmd index 9803290..f34f6a2 100644 --- a/sections/7-redeploy-app.qmd +++ b/sections/7-redeploy-app.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#redeploying-apps data-menu-title="~~~ Redeploying apps ~~~" background="#053660"}
    -

    `r fontawesome::fa("upload", fill = "#d2e3f3", a11y = "sem")` Redeploying apps with [shinyapps.io](https://www.shinyapps.io/)

    +

    {{< fa upload title="a symbol for uploading files -- a server with an upward facing arrow that originates at the server" >}} Redeploying apps with [shinyapps.io](https://www.shinyapps.io/)

    *Now that we've added some updates to our app, it's time to redeploy our newest version.*

    @@ -13,7 +13,9 @@ format: revealjs ## {#howto-redeploy data-menu-title="How to Redeploy"} -
    Redeploying is similar to deploying for the first time
    +[Redeploying is similar to deploying for the first time]{.slide-title-smaller} + +

    Just a few quick steps before your updates are live at your URL from earlier:

    diff --git a/sections/8.1-shinydashboard.qmd b/sections/8.1-shinydashboard.qmd index 09cc68b..907c9a3 100644 --- a/sections/8.1-shinydashboard.qmd +++ b/sections/8.1-shinydashboard.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#building-dashboards data-menu-title="~~~ Building Dashboards ~~~" background="#053660"}
    -

    `r fontawesome::fa("gauge", fill = "#d2e3f3", a11y = "sem")` Building dashboards with `{shinydashboard}`

    +

    {{< fa gauge title="a gauge" >}} Building dashboards with `{shinydashboard}`

    *Shiny alone is powerful and flexible, however it can take a lot of work to create a sleek/modern UI. `{shinydashboard}` provides a "template" for quickly building visually appealing dashboard apps.*

    @@ -13,25 +13,27 @@ format: revealjs ## {#LO-app3 data-menu-title="Learning Objectives - App #3"} -
    `r fontawesome::fa("book-open", fill = "#05859B", a11y = "sem")` Learning Objectives - App #3 (shinydashboard)
    +[{{< fa book-open title="an open book" >}} Learning Objectives - App #3 (shinydashboard)]{.slide-title} + +

    After this section, you should:

    . . . -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` understand the general workflow for pre-processing, saving & reading data into an app

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand the general workflow for pre-processing, saving & reading data into an app

    . . . -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` be comfortable building out a dashboard UI using `{shinydashboard}` layout functions

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} be comfortable building out a dashboard UI using `{shinydashboard}` layout functions

    . . . -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` understand how to add static images to your app

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand how to add static images to your app

    . . . -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` feel comfortable creating a basic reactive `leaflet` map

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} feel comfortable creating a basic reactive `leaflet` map

    . . . @@ -39,17 +41,19 @@ format: revealjs . . . -

    `r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{shinydashboard}`: provides an alternative UI framework for easily building dashboard-style shiny applications

    +

    [{{< fa box-open title="an open box" >}}]{.teal-text} `{shinydashboard}`: provides an alternative UI framework for easily building dashboard-style shiny applications

    . . . -

    `r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{leaflet}`: for building interactive maps

    +

    [{{< fa box-open title="an open box" >}}]{.teal-text} `{leaflet}`: for building interactive maps

    --- ## {#roadmap-dashboard data-menu-title="Roadmap App #3"} -
    Roadmap for App #3
    +[Roadmap for App #3]{.slide-title} + +

    In this section, we'll be building a **shinydashboard** using data downloaded from the [Arctic Data Center](https://arcticdata.io/). We'll be building out the following features:

    @@ -80,7 +84,9 @@ format: revealjs ## {#what-is-a-dashboard data-menu-title="What is a dashboard?"} -
    But first, what do we mean by a shiny "dashboard"?
    +[But first, what do we mean by a shiny "dashboard"?]{.slide-title-smaller} + +

    [`shinydashboard`](https://rstudio.github.io/shinydashboard/) is just an alternative framework for building shiny apps. In other words, shiny dashboards are just shiny apps, but with some different UI elements that make building apps with a classic "dashboard" feel to them a little bit easier.

    @@ -90,7 +96,9 @@ format: revealjs ## {#dashboardPage data-menu-title="dashboardPage()"} -
    The most basic shinydashboard is made up of a header, a sidebar, and a body
    +[The most basic shinydashboard is made up of a header, a sidebar, and a body]{.slide-title-smaller} + +

    The main difference between a **shiny app** and a **shinydashboard** are the UI elements. Rather than a `fluidPage()` (as used in our previous shiny apps), we'll create a `dashboardPage()`, which expects three main parts: a header, a sidebar, and a body. Below is the most minimal possible UI for a `{shinydashboard}` page (you can run this code in an `app.R` file, if you wish).

    @@ -134,23 +142,27 @@ shinyApp(ui, server) ## {#shinydashboard-examples data-menu-title="Examples of shinydashboards"} -
    Example shiny dashboards built by some familiar folks `r fontawesome::fa("face-smile", fill = "#05859B", a11y = "sem")`
    +[Example shiny dashboards built by some familiar folks {{< fa face-smile title="a smiling face" >}}]{.slide-title} -

    `r fontawesome::fa("school", fill = "#05859B", a11y = "sem")` [Bren Student Data Explorer](https://shinyapps.bren.ucsb.edu/student-data-explorer/) ([source code](https://github.com/UCSB-MEDS/shiny-dashboard)), *by MEDS 2022 alum, [Halina Do-Linh](https://www.linkedin.com/in/halinadolinh/), during her Bren Summer Fellowship (and continued by future MEDS students!)* -- explore Bren school student demographics and career outcomes

    +
    -

    `r fontawesome::fa("person-hiking", fill = "#05859B", a11y = "sem")` [Sam's Strava Stats](https://samanthacsik.shinyapps.io/strava_dashboard/) ([source code](https://github.com/samanthacsik/strava-dashboard)), *by yours truly, [Sam Csik](https://samanthacsik.github.io/)* -- a new and ongoing side project exploring my Strava hiking/biking/walking data

    +

    [{{< fa school title="a school house" >}}]{.teal-text} [Bren Student Data Explorer](https://shinyapps.bren.ucsb.edu/student-data-explorer/) ([source code](https://github.com/UCSB-MEDS/shiny-dashboard)), *by MEDS 2022 alum, [Halina Do-Linh](https://www.linkedin.com/in/halinadolinh/), during her Bren Summer Fellowship (and continued by future MEDS students!)* -- explore Bren school student demographics and career outcomes

    -

    `r fontawesome::fa("fish", fill = "#05859B", a11y = "sem")` [Channel Islands National Park's Kelp Forest Monitoring Program](http://34.94.133.101/) ([source code](https://github.com/cullen-molitor/KFM_Shiny_App)), *by MEDS 2022 alum, [Cullen Molitor](https://cullen-molitor.github.io/)* -- explore subtidal monitoring data collected from our closest National Park

    +

    [{{< fa person-hiking title="a person hiking with a backpack on" >}}]{.teal-text} [Sam's Strava Stats](https://samanthacsik.shinyapps.io/strava_dashboard/) ([source code](https://github.com/samanthacsik/strava-dashboard)), *by yours truly, [Sam Csik](https://samanthacsik.github.io/)* -- a new and ongoing side project exploring my Strava hiking/biking/walking data

    -

    `r fontawesome::fa("campground", fill = "#05859B", a11y = "sem")` [The Outdoor Equity App](https://shinyapps.bren.ucsb.edu/oe_app/) ([source code](https://github.com/outdoor-equity/outdoor-equity)), *developed by MEDS 2022 alumni [Halina Do-Linh](https://www.linkedin.com/in/halinadolinh/) & [Clarissa Boyajian](https://cboyajian.github.io/) as part of their MEDS capstone project* -- analyze patterns in the access and demand of visitors at reservable overnight sites

    +

    [{{< fa fish title="a fish" >}}]{.teal-text} [Channel Islands National Park's Kelp Forest Monitoring Program](http://34.94.133.101/) ([source code](https://github.com/cullen-molitor/KFM_Shiny_App)), *by MEDS 2022 alum, [Cullen Molitor](https://cullen-molitor.github.io/)* -- explore subtidal monitoring data collected from our closest National Park

    -

    `r fontawesome::fa("fish-fins", fill = "#05859B", a11y = "sem")` [Visualizing human impacts on at-risk marine biodiversity](http://ohi-science.nceas.ucsb.edu/visualizing_human_impacts/) ([source code](https://github.com/BrennieDev/CHI_shiny_app), *developed by MESM 2022 alum, [Ian Brunjes](https://github.com/BrennieDev) & [Dr. Casey O'Hara](http://oharascience.com/index.html))* -- explore how human activities and climate change impact marine biodiversity worldwide

    +

    [{{< fa campground title="a camping tent" >}}]{.teal-text} [The Outdoor Equity App](https://shinyapps.bren.ucsb.edu/oe_app/) ([source code](https://github.com/outdoor-equity/outdoor-equity)), *developed by MEDS 2022 alumni [Halina Do-Linh](https://www.linkedin.com/in/halinadolinh/) & [Clarissa Boyajian](https://cboyajian.github.io/) as part of their MEDS capstone project* -- analyze patterns in the access and demand of visitors at reservable overnight sites

    + +

    [{{< fa fish-fins title="a fish with fins" >}}]{.teal-text} [Visualizing human impacts on at-risk marine biodiversity](http://ohi-science.nceas.ucsb.edu/visualizing_human_impacts/) ([source code](https://github.com/BrennieDev/CHI_shiny_app), *developed by MESM 2022 alum, [Ian Brunjes](https://github.com/BrennieDev) & [Dr. Casey O'Hara](http://oharascience.com/index.html))* -- explore how human activities and climate change impact marine biodiversity worldwide

    --- ## {#setup-dashboard-directory data-menu-title="Dashboard Setup"} -
    Setup our shiny dashboard
    +[Setup our shiny dashboard]{.slide-title-smaller} + +

    First, create a subdirectory called `/shinydashboard` and add a `ui.R`, `server.R`, and `global.R` file.

    @@ -203,7 +215,9 @@ library(shinydashboard) ## {#begin-with-data data-menu-title="Begin with Data"} -
    As always, let's start with the data
    +[As always, let's start with the data]{.slide-title} + +

    Building an app doesn't make much sense if we don't know what we're going to put in it. So, just like the last two apps, we'll start with some data wrangling and practice data visualization.

    @@ -231,7 +245,9 @@ library(shinydashboard) ## {#processing-storing-data data-menu-title="Processing & Storing Data"} -
    Pre-processing data is critical
    +[Pre-processing data is critical]{.slide-title-smallest} + +

    Where you choose to store the data used by your Shiny app will depend largely on the type and size of the file(s) and who "owns" those data. It is likely that you'll be working with data stored in a database or on a server. This is outside the scope of this workshop, but I suggest reading Dean Attali's article, [Persistent data storage in Shiny apps](https://shiny.rstudio.com/articles/persistent-data-storage.html) to start. Because we are going to be working with a relatively small data set, we'll be downloading and storing our data locally (i.e. on our machines and in our GitHub repo).

    @@ -242,9 +258,6 @@ library(shinydashboard) :::: {.columns} ::: {.column width="35%"} - -
    -

    [`FCWO_lakemonitoringdata_2011_2022_daily.csv`](https://arcticdata.io/metacat/d1/mn/v2/object/urn%3Auuid%3A73800a2e-7617-470a-83aa-b530a01f32e3) contains **8 attributes** (variables) and **18,894 observations** collected from a set of **11 lakes** located in the Fish Creek Watershed in northern Alaska between 2011-2022. We'll download and save the file to a `raw_data/` folder in the root directory of our repository. We'll then pre-process the data in a separate script(s) saved to `scratch/` and save a cleaned/processed version of the data to our app's directory, `/shinydashboard/data/lake_data_processed.csv`. Your repository structure should look similar to example on the right:

    ::: @@ -252,7 +265,14 @@ library(shinydashboard) ::: ::: {.column width="55%"} -
    A schematic of the repository structure, as described.
    +```{r} +#| eval: true +#| echo: false +#| fig-align: "center" +#| out-width: "73%" +#| fig-alt: "A schematic of the repository structure, as described." +knitr::include_graphics("images/shinydashboard-directory-structure.png") +``` ::: :::: @@ -261,7 +281,9 @@ library(shinydashboard) ## {#lake-data-goal data-menu-title="Lake Data End Goal"} -
    The Goal:
    +[The Goal:]{.slide-title} + +
    :::: {.columns} @@ -284,7 +306,9 @@ library(shinydashboard) ## {#process-lake-data data-menu-title="Process Lake Data"} -
    Process lake data & save new file
    +[Process lake data & save new file]{.slide-title-smallest} + +

    **NOTE:** In this example exercise, I've removed all rows with missing values (i.e. `NaN`s in the `Depth` column & `NA`s in the `BedTemperature` column) before calculating averages. *This is NOT good practice -- exploring and thinking critically about missing data is an important part of data analysis, and in a real-life scenario, you should consider the most appropriate method for handling them.*

    @@ -326,7 +350,9 @@ write_csv(unique_lakes, "shinydashboard/data/lake_data_processed.csv") ## {#file-types data-menu-title="File Types"} -
    A note on file types
    +[A note on file types]{.slide-title} + +

    Oftentimes, you may choose to save your processed data frame as a `.rds` file (a data file format, native to R, which stores a single R object). `.rds` file are relatively small (and therefore take up little storage space), take less time to import/export, and preserve data types and classes (e.g. factors and dates), eliminating the need to redefine data types after loading the file. Bear in mind that this increased speed and space-saving may come at the cost of generality -- you can't open a `.rds` file outside of R or read it in with another programming language (e.g. Python).

    @@ -338,7 +364,9 @@ write_csv(unique_lakes, "shinydashboard/data/lake_data_processed.csv") ## {#draft-leaflet data-menu-title="Draft Leaflet"} -
    Draft `leaflet` map
    +[Draft `leaflet` map]{.slide-title-smaller} + +

    There are lots of ways to customize `leaflet` maps. We'll be keeping ours relatively simple, but check out the [Leaflet for R](https://rstudio.github.io/leaflet/) documentation for more ways to get creative with your maps.

    @@ -415,7 +443,9 @@ leaflet() |> ## {#filter-leaflet data-menu-title="Filter Leaflet"} -
    Practice filtering `leaflet` observations
    +[Practice filtering `leaflet` observations]{.slide-title-smaller} + +

    We'll eventually build three `sliderInput`s to filter lake makers by `Elevation`, `AvgDepth`, and `AvgTemp`. Practice filtering here first (and be sure to update the data frame name in your leaflet code!):

    @@ -508,7 +538,9 @@ leaflet() |> ## {#sketch-ui data-menu-title="Sketch the UI"} -
    Sketch out our dashboard UI
    +[Sketch out our dashboard UI]{.slide-title-smaller} + +

    I want my dashboard to have two menu items: a welcome page with some background information, and a dashboard page with my reactive map. All elements will be placed inside `box`es, the primary building blocks of shinydashboards (more on that soon).

    @@ -530,7 +562,9 @@ leaflet() |> ## {#title-menuItems data-menu-title="Title & menuItems"} -
    Add a `title` & `menuItem`s
    +[Add a `title` & `menuItem`s]{.slide-title-smaller} + +

    First, add a title to `dashboardHeader()` and make more space using `titleWidth`, if necessary.

    @@ -573,7 +607,9 @@ dashboardPage(header, sidebar, body) ## {#tabItems data-menu-title="tabItems"} -
    Add `tabItems` to your `dashboardBody`
    +[Add `tabItems` to your `dashboardBody`]{.slide-title-smaller} + +

    Next, we'll create `tabItems` in our `dashboardBody` -- we'll make a `tabItem` (singular) for each `menuItem` in our `dashboardSidebar`. In order to match a `menuItem` and a `tabItem`, ensure that they have matching a `tabName` (e.g. any content added to the **dashboard** `tabItem` will appear under the **dashboard** `menuItem`).

    @@ -635,7 +671,9 @@ dashboardPage(header, sidebar, body) ## {#boxes data-menu-title="boxes"} -
    Add `box`es to contain UI content (part 1)
    +[Add `box`es to contain UI content (part 1)]{.slide-title-smaller} + +

    [Boxes](https://rstudio.github.io/shinydashboard/structure.html#boxes) are the primary building blocks of shinydashboards and can contain almost any Shiny UI element (e.g. text, inputs, outputs). Start by adding two side-by-side boxes to our **dashboard** tab inside a `fluidRow()`. Together, their widths will add up to 12 (the total width of a browser page). These boxes will eventually contain our `sliderInput`s and our `leafletOutput`.

    @@ -712,7 +750,9 @@ dashboardPage(header, sidebar, body) ## {#columns data-menu-title="Columns"} -
    Add `box`es to contain UI content (part 2)
    +[Add `box`es to contain UI content (part 2)]{.slide-title-smaller} + +

    Lastly, add boxes to our **welcome** tab We'll use `column`s to place one box on the left-hand side of our page, and two stacked boxes on the right-hand side. Each `column` will take up half the page (**Note:** *For column-based layouts, use `NULL` for the box width, as the width is set by the column that contains the box*). We can create two `fluidRow`s within the right-hand column to stack two boxes vertically.

    @@ -830,7 +870,9 @@ dashboardPage(header, sidebar, body) ## {#import-data data-menu-title="Read in data"} -
    Read data into `global.R` & add necessary packages
    +[Read data into `global.R` & add necessary packages]{.slide-title-smaller} + +

    Remember to load your *pre-processed* data, which should live in the `/data` folder within your app's directory.

    ```{r} @@ -852,7 +894,9 @@ lake_data <- read_csv("data/lake_data_processed.csv") ## {#add-sliderInput-leafletMap data-menu-title="Add Widget & Leaflet Map"} -
    Add a `sliderInput` & `leafletOutput` to the UI
    +[Add a `sliderInput` & `leafletOutput` to the UI]{.slide-title-smaller} + +

    Start by adding just one `sliderInput` (for selecting a range of lake `Elevation`s) to the left-hand box in the **dashboard** tab. Then, add a `leafletOutput` to create a placeholder space for our map, along with a Spinner animation (from the `{shinycssloaders}` package). While we're here, we can also add `title`s to each box.

    @@ -978,7 +1022,9 @@ dashboardPage(header, sidebar, body) ## {#build-map-server data-menu-title="Build map in server.R"} -
    Assemble inputs & outputs in `server.R`
    +[Assemble inputs & outputs in `server.R`]{.slide-title-smaller} + +

    Remember to reference your practice data viz script and to follow our three steps for creating reactive outputs. And don't forget to add `()` following each reactive data frame called in your leaflet map!

    @@ -1029,7 +1075,9 @@ server <- function(input, output) { ## {#working-elev-widget data-menu-title="Test Elevation Widget"} -
    Run your app & test out your first widget
    +[Run your app & test out your first widget]{.slide-title-smaller} + +

    If all is good, you should see something similar to this:

    @@ -1039,12 +1087,14 @@ server <- function(input, output) { ## {#exercise5-prompt data-menu-title="** Exercise 5 Prompt **"} -
    `r fontawesome::fa("question", fill = "#05859B", a11y = "sem")` Exercise 5: Add two more `sliderInput`s to filter for `AvgDepth` & `AvgTemp`
    +[{{< fa question title="question mark" >}} Exercise 5: Add two more `sliderInput`s to filter for `AvgDepth` & `AvgTemp`]{.slide-title-smaller} + +

    **To Do:** -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Add two more `sliderInput`s, one for `AvgDepth` and one for `AvgTemp` beneath our first Elevation `sliderInput` in the UI

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Update our reactive data frame so that all three widgets filter the leaflet map

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} Add two more `sliderInput`s, one for `AvgDepth` and one for `AvgTemp` beneath our first Elevation `sliderInput` in the UI

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} Update our reactive data frame so that all three widgets filter the leaflet map



    @@ -1057,7 +1107,9 @@ server <- function(input, output) { ## {#exercise5-solution data-menu-title="** Exercise 5 Solution **"} -
    `r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` Exercise 5: A solution
    +[{{< fa check title="check mark" >}} Exercise 5: A solution]{.slide-title-smaller} + +
    ::: {.panel-tabset} diff --git a/sections/8.2-shinydashboard.qmd b/sections/8.2-shinydashboard.qmd index 390b242..caa6f38 100644 --- a/sections/8.2-shinydashboard.qmd +++ b/sections/8.2-shinydashboard.qmd @@ -4,12 +4,14 @@ format: revealjs ## {#exercise6-prompt-tips data-menu-title="** Exercise 6 Prompt & Tips **"} -
    `r fontawesome::fa("question", fill = "#05859B", a11y = "sem")` & `r fontawesome::fa("lightbulb", fill = "#05859B", a11y = "sem")` Exercise 6: Add titles & text to Welcome page boxes
    +[{{< fa question title="question mark" >}} & {{< fa lightbulb title="a lightbulb" >}} Exercise 6: Add titles & text to Welcome page boxes]{.slide-title-smaller} + +

    **To Do:**

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Add titles to each box

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Create a `/text` folder within your app's directory and add three markdown (`.md`) files. Write/format text for the background info (left), data citation (top-right), and disclaimer (bottom-right) boxes. Example text below:

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} Add titles to each box

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} Create a `/text` folder within your app's directory and add three markdown (`.md`) files. Write/format text for the background info (left), data citation (top-right), and disclaimer (bottom-right) boxes. Example text below:

    ::: {.panel-tabset} @@ -42,13 +44,15 @@ This app is build for demonstration/teaching purposes only and is not paid for o

    **Tips:**

    -

    `r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")`Titles can include icons! For example: `title = tagList(icon("icon-name"), strong("title text here"))`

    +

    [{{< fa angle-right title="a bullet point" >}}]{.teal-text} Titles can include icons! For example: `title = tagList(icon("icon-name"), strong("title text here"))`

    --- ## {#exercise6-solution data-menu-title="** Exercise 6 Solution **"} -
    `r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` Exercise 6: A solution
    +[{{< fa check title="check mark" >}} Exercise 6: A solution]{.slide-title-smaller} + +

    Press the right arrow key to advance through the newly added lines of code.

    @@ -208,7 +212,9 @@ lake_data <- read_csv("data/lake_data_processed.csv") ## {#add-image data-menu-title="Add Static Image"} -
    Add a static image
    +[Add a static image]{.slide-title-smaller} + +

    As a final touch, let's add an image to the Welcome page, inside the left-hand box beneath our intro text. First, **create a `/www` folder inside your app's directory** (refer back to [this slide](https://ucsb-meds.github.io/EDS430-Shiny/#/repo-structure) for a description of this special directory). Download the map of the Fish Creek Watershed from FCWO's website [here](http://www.fishcreekwatershed.org/images/FishCreekWatershedSiteMap_2020.jpg) and save it to your `/www` directory.

    @@ -349,9 +355,9 @@ dashboardPage(header, sidebar, body) ## {#large-image data-menu-title="Image is too large"} -
    Unfortunately, our image doesn't look so great as-is...
    +[Unfortunately, our image doesn't look so great as-is...]{.slide-title-smaller} -
    +
    Our Welcome page, with a map of Fish Creek Watershed beneath the intro text. The image is extremely large, spilling out of the box and across the page.
    @@ -359,7 +365,9 @@ dashboardPage(header, sidebar, body) ## {#adjust-image-size data-menu-title="Adjust Image Size"} -
    Use in-line CSS to adjust the image size
    +[Use in-line CSS to adjust the image size]{.slide-title-smaller} + +

    We can use in-line CSS to style our image element, as shown below (see `style` argument). It's okay if you don't fully understand what's going on here for now -- we'll talk in greater detail about how CSS (and Sass) can be used to customize the appearance of your apps in just a bit.

    @@ -503,7 +511,9 @@ dashboardPage(header, sidebar, body) ## {#final-dashboard data-menu-title="Final Dashboard"} -
    Check out your finished dashboard!
    +[Check out your finished dashboard!]{.slide-title-smaller} + +
    Our completed dashboard, with our image styled so that it fits within the background info box on the Welcome page, and three functional sliderInputs that update the leaflet map on the Dashboard page.
    @@ -511,7 +521,9 @@ dashboardPage(header, sidebar, body) ## {#final-dashboard-code data-menu-title="Complete dashboard code"} -
    Complete code for our dashboard thus far:
    +[Complete code for our dashboard thus far:]{.slide-title-smaller} + +
    ::: {.panel-tabset} From d5f466a2a1eb38cc7aa2e91d44367967e950424a Mon Sep 17 00:00:00 2001 From: samanthacsik Date: Fri, 6 Oct 2023 15:42:25 -0700 Subject: [PATCH 3/8] slide titles & fa updates through section 13 --- index.html | 554 ++++++++++----------------- index.qmd | 16 +- sections/10-user-centered-design.qmd | 32 +- sections/11-accessibility.qmd | 62 +-- sections/12-debugging.qmd | 76 ++-- sections/13-testing.qmd | 60 +-- sections/9-themeing-apps.qmd | 146 ++++--- 7 files changed, 458 insertions(+), 488 deletions(-) diff --git a/index.html b/index.html index befc8d3..519592c 100644 --- a/index.html +++ b/index.html @@ -1811,7 +1811,7 @@
-
+
@@ -2815,7 +2815,7 @@
-
+
@@ -3101,7 +3101,7 @@
-
+
@@ -4046,7 +4046,7 @@
-
+
@@ -4380,8 +4380,8 @@
-
- +
+
@@ -4430,8 +4430,8 @@
-
- +
+
@@ -5168,7 +5168,7 @@
-
+
@@ -5883,23 +5883,19 @@ Styling with CSS & Sass

-
-Book Open - Learning Objectives - Themeing/Styling Apps -
+

Learning Objectives - Themeing/Styling Apps

+

By the end of this section, you should be equipped with:

-Angle Right - a number of different approaches for themeing and styling your shiny apps and dashboards + a number of different approaches for themeing and styling your shiny apps and dashboards

-Angle Right - a basic understanding of how to apply CSS & Sass styling to your app + a basic understanding of how to apply CSS & Sass styling to your app

@@ -5909,30 +5905,26 @@

-Box Open -bslib: provides tools for customizing Bootstrap themes directly from R for shiny apps and RMarkdowns + bslib: provides tools for customizing Bootstrap themes directly from R for shiny apps and RMarkdowns

-Box Open -fresh: provides tools for creating custom themes for use with shiny, shinydashboard, and bs4Dash apps + fresh: provides tools for creating custom themes for use with shiny, shinydashboard, and bs4Dash apps

-Paint Roller - Creating custom themes + Creating custom themes

We’ve built some really cool apps so far, but they all have a pretty standard and similar appearance. In this section, we’ll explore two packages for creating custom themes for your apps.

-
-Using the {bslib} package to theme Shiny apps -
+

Using the {bslib} package to theme Shiny apps

+

The {bslib} package provides tools for customizing Bootstrap themes directly from R, making custom themeing for Shiny apps (and R Markdown docs!) quite easy.

@@ -5944,20 +5936,16 @@

-Check - easy to use + easy to use

-Check - includes a real-time themeing widget to try out themes before applying them to your own app + includes a real-time themeing widget to try out themes before applying them to your own app

-Check - plays well with the thematic package for matching plot styling to app + plays well with the thematic package for matching plot styling to app

-Check -bslib does more than just themeing! Check out the December 2022 announcement of new UI components made possible with the latest package release + bslib does more than just themeing! Check out the December 2022 announcement of new UI components made possible with the latest package release

@@ -5968,12 +5956,10 @@

-Xmark - does not work with shinydashboard (bslib is only intended for use with shiny apps) + does not work with shinydashboard (bslib is only intended for use with shiny apps)

-Xmark - styling is constrained by the arguments available to bs_theme() + styling is constrained by the arguments available to bs_theme()

@@ -5985,9 +5971,8 @@

-
-Apply a pre-built theme with {bslib} -
+

Apply a pre-built theme with {bslib}

+

By default, Shiny uses the Bootstrap v3 theme (which is not so exciting). Change the theme to a slightly more modern Bootstrap v5 theme by setting the theme argument of fluidPage() to bslib::bs_theme(version = 5), or supply bs_theme() with a pre-built bootswatch theme, as shown below (for a list of theme names, run bootswatch_themes() in your console):

@@ -6015,9 +6000,8 @@

-
-Create a custom theme with {bslib} -
+

Create a custom theme with {bslib}

+

Alternatively, you can fully customize your own theme. Explore the bslib vignette for detailed instructions. A small example here:

@@ -6052,9 +6036,8 @@ Be sure to check out the interactive themeing widget to test custom color/font/etc. combos by running bs_theme_preview() in your console, or visit the hosted version here. You can also call bs_themer() within your server function to open the theme customization UI alongside your own app.

-
-Use {thematic} to extend your theme to plots -
+

Use {thematic} to extend your theme to plots

+

You probably noticed that our scatterplot looks a little silly against the darker background of our themed app. Enter the {thematic} package, which is built to help simplify plot themeing. Call thematic_shiny() before launching your app to generate plots that reflect your application’s bs_theme(). For example:

@@ -6091,9 +6074,8 @@ Read the vignette to learn more about using the thematic package to help match plot fonts to the fonts applied across your app.

-
-Using the {fresh} package to theme Shiny apps & dashboards -
+

Using the {fresh} package to theme Shiny apps & dashboards

+

The {fresh} package provides tools for creating custom themes to use in Shiny apps and dashboards – set parameters of your theme using create_theme(), generate a stylesheet based off your specifications, and apply your stylesheet to your app.

@@ -6106,12 +6088,10 @@

-Check - easy to use + easy to use

-Check - supports theme creation for both shiny apps and dashboards (and also flexdashboards and {b4dash} applications) + supports theme creation for both shiny apps and dashboards (and also flexdashboards and {b4dash} applications)

@@ -6122,8 +6102,7 @@

-Xmark - styling is constrained by the variables available to create_theme() + styling is constrained by the variables available to create_theme()

@@ -6136,9 +6115,8 @@

-
-A general workflow for using fresh themes -
+

A general workflow for using fresh themes

+

Whether you’re working on a shiny app or a shiny dashboard, you’ll need the following:

@@ -6157,15 +6135,13 @@

-
-Creating a fresh theme for two-file-app -
+

Creating a fresh theme for two-file-app

+

In this example, we update the colors of our app’s body, navbar, and tabPanels using the appropriate fresh variables for shiny apps. We specify a file path, two-file-app/www (you’ll need to create the /www directory, since we don’t have one yet), where our stylesheet (e.g. shiny_fresh_themes.css, as shown here) file will be saved to.

-Of course, these color combos are not recommended, but chosen purely for demonstration purposes Face Smile Wink -. +Of course, these color combos are not recommended, but chosen purely for demonstration purposes .

# in a separate script: ~/R/create_fresh_theme_shiny.R
@@ -6200,9 +6176,8 @@
 )

-
-Apply a fresh theme to our app -
+

Apply a fresh theme to our app

+

To apply our theme, provide the theme argument of your fluidPage() or navbarPage() with the name of our stylesheet. Note: shiny knows to look in the /www directory, so you can omit that from your file path, as shown below:

@@ -6232,9 +6207,8 @@

-
-Creating a fresh theme for our shinydashboard -
+

Creating a fresh theme for our shinydashboard

+

In this example, we update the colors of our app’s header, body, and sidebar using the appropriate fresh variables for shiny dashboards. We specify a file path, shinydashboard/www where our stylesheet (e.g. shinydashboard_fresh_themes.css, as shown here) file will be saved to. Again, these color combos are not recommended, but chosen purely for demonstration purposes.

@@ -6270,9 +6244,8 @@ )

-
-Apply a fresh theme to our dashboard -
+

Apply a fresh theme to our dashboard

+

To apply our theme, use the fresh::use_theme() function inside your dashboardBody, providing it with the name of your stylesheet. Note: shiny knows to look in the /www directory, so you can omit that from your file path, as shown below:

@@ -6304,17 +6277,15 @@

-Paintbrush - Styling apps with CSS & Sass + Styling apps with CSS & Sass

bslib & fresh are great ways to get started on your app customization journeys, but knowing some CSS & Sass can help you really fine-tune the appearance of your apps

-
-Using Sass & CSS to style Shiny apps & dashboards -
+

Using Sass & CSS to style Shiny apps & dashboards

+

You can write your own stylesheets using CSS and Sass to fully customize your apps, from background colors, to font styles, to size and shape of elements, and more. Unlike bslib and fresh, these are languages, meaning they can be a bit more challenging to get started with (but the payoff it big!).

@@ -6327,16 +6298,13 @@

-Check - applies to any web page (not just shiny apps) + applies to any web page (not just shiny apps)

-Check - allows you to customize pretty much any aspect of your app + allows you to customize pretty much any aspect of your app

-Check - can be combined with themes generated using bslib or fresh to fine-tune your app’s styling + can be combined with themes generated using bslib or fresh to fine-tune your app’s styling

@@ -6347,8 +6315,7 @@

-Xmark - a steeper learning curve/generally more complex than packages like bslib and fresh + a steeper learning curve/generally more complex than packages like bslib and fresh

@@ -6360,9 +6327,8 @@

-
-Resources for a deeper dive -
+

Resources for a deeper dive

+

We’ll be doing a rather high-level and quick overview of Sass & CSS today, though I encourage you to check out the Customizing Quarto Websites workshop, which takes a much deeper dive (the information in that workshop is largely applicable here).

@@ -6376,9 +6342,8 @@

-
-What even is CSS? Sass? -
+

What even is CSS? Sass?

+
@@ -6404,9 +6369,8 @@

-
-CSS is a rule-based language -
+

CSS is a rule-based language

+

CSS is a rule-based language, meaning that it allows you to define groups of styles that should be applied to particular elements or groups of elements on a web page. For example, “I want all level one headings (<h1> or tags$h1() as written in Shiny) in my app to be green with a bit of extra space between each letter” could be coded as:

@@ -6420,16 +6384,13 @@

-Angle Right -Selectors select the HTML element(s) you want to style (e.g. level one headings, <h1>) + Selectors select the HTML element(s) you want to style (e.g. level one headings, <h1>)

-Angle Right -Declarations sit inside curly brackets, {}, and are made up of property and value pairs. Each pair specifies the property of the HTML element(s) you’re selecting (e.g. the color property of the element <h1>), and a value you’d like to assign to that property (e.g. green) + Declarations sit inside curly brackets, {}, and are made up of property and value pairs. Each pair specifies the property of the HTML element(s) you’re selecting (e.g. the color property of the element <h1>), and a value you’d like to assign to that property (e.g. green)

-Angle Right - A property and it’s corresponding value are separated by a colon, :. Declarations end with a semicolon, ; + A property and it’s corresponding value are separated by a colon, :. Declarations end with a semicolon, ;

@@ -6437,9 +6398,8 @@ There are a variety of CSS selectors – check out some of the basics that will take you far in styling your apps, starting on this slide of the Customizing Quarto Websites workshop.

-
-3 ways to add CSS styling to your apps -
+

3 ways to add CSS styling to your apps

+

You can (1) add styling directly to tags, (2) add CSS rules to your header, and/or (3) build a stylesheet that is applied to your app. Creating a stylesheet is the preferred approach, and you should do this whenever possible.

@@ -6619,9 +6579,8 @@

-
-Let’s practice on a small dashboard first: -
+

Let’s practice on a small dashboard first:

+

-
-What if I want to style an element, but don’t know how to target it? -
+

What if I want to style an element, but don’t know how to target it?

+

Oftentimes, you’ll have to do a bit of exploration to determine how to target specific elements for styling. In either your app viewer or web browser, right click on an element of interest and choose Inspect (or Inspect Element) to open up the underlying HTML and CSS. You can make temporary edits to your app (e.g. adding a background color, changing font sizes, etc.) to see how they look first, then copy the appropriate CSS rule into your stylesheet to apply to your app.

@@ -6749,9 +6707,8 @@ A shiny dashboard, opened in the RStudio viewer, with the Inspect pane open to the right. The top half of the inspect pane shows the underlying HTML and the bottom half shows the underlying CSS styles.

-
-Inspect & identify how to update box styling -
+

Inspect & identify how to update box styling

+

For example, let’s say I want to change the color of this shinydashboard’s boxes and the color of the box text.

@@ -6765,9 +6722,8 @@

-
-Finally, apply box styling to our dashboard -
+

Finally, apply box styling to our dashboard

+

Now that we know that we can use the box-body class to customize the appearance of our boxes, let’s create a stylesheet and add our new rules. The shinydashboard framework already provides the “standard” styling for boxes, contained in the box-body class. Anything we specify in our own stylesheet will build upon or modify existing styling.

@@ -6879,9 +6835,8 @@

-
-What about Sass? -
+

What about Sass?

+

Okay, we wrote and applied some CSS styling to our apps, but what about Sass? You don’t need to write any Sass at all, however, it provides a number of benefits, including helping to reduce repetition.

@@ -6895,9 +6850,8 @@ You might imagine how often you’ll need to type those HEX codes out as you developing your stylesheet…it can get annoying rather quickly.

-
-We can define and reference Sass variables throughout our stylesheet -
+

We can define and reference Sass variables throughout our stylesheet

+

Sass allows us to define variables (in the form $var-name: value;) for our colors to reference instead of writing out their HEX codes each time:

@@ -6924,9 +6878,8 @@ If you decide that you actually like a different shade of teal better, you’ll only need to update the hex code where you first define the $teal Sass variable, saving lots of time.

-
-Sass for Shiny workflow -
+

Sass for Shiny workflow

+

To style apps using both Sass and CSS, you’ll follow this general workflow:

@@ -6943,9 +6896,8 @@ A chart showing the Sass to CSS workflow -- begin with writing Sass variables and CSS rule in a .scss file, then use the sass R package to compile sass to css, and finally use your compiled .css file to apply your styles to your app.

-
-Let’s build our Sass file -
+

Let’s build our Sass file

+

We’ll practice on our two-file-app – first, remove any reference to your bslib or fresh themes that we practiced applying earlier so that we’re starting off with just the default shiny styling.

@@ -7010,9 +6962,8 @@

-
-Then, compile Sass to CSS -
+

Then, compile Sass to CSS

+

Because web browsers can only interpret CSS (not Sass), we need to compile our Sass to CSS. To do this, we can use the sass() function from the {sass} package. We can do this in global.R. The sass() function requires two arguments: a sass file input and a file path + named .css file output.

@@ -7114,10 +7065,8 @@

-

- Part 4: Improving your app’s user experience (UX) -

-


+

Part 4: Improving your app’s user experience (UX)

+

Important UX considerations

@@ -7127,121 +7076,99 @@

-Users - UX/UI matters + UX/UI matters

When designing your app, it’s critically important that you consider your user’s needs and how they will interact with your app – it doesn’t matter how innovative you back-end computations are if people don’t understand how to use your app!

-
-Book Open - Learning Objectives - UX/UI Design -
+

Learning Objectives - UX/UI Design

+

After this section, you should:

-Angle Right - have a checklist of considerations to reference each time you build an app + have a checklist of considerations to reference each time you build an app

-Angle Right - have a few additional resources to dive deeper into UX/UI design + have a few additional resources to dive deeper into UX/UI design

-
-Tips for designing your Shiny apps -
+

Tips for designing your Shiny apps

+

Chapters 6 and 7 of Engineering Production-Grade Shiny Apps, by Colin Fay, Sébastien Rochette, Vincent Guyader, and Cervan Girard provide a list of considerations as you embark on your app-building journey. Some of their suggestions are summarized below, but check out the book for greater detail, examples, and additional considerations:

-Angle Right -Simplicity is gold: using the application shouldn’t require reading a manual, and interfaces should be as self-explanatory as possible. + Simplicity is gold: using the application shouldn’t require reading a manual, and interfaces should be as self-explanatory as possible.

-Angle Right -Adapt a defensive programming mindset: your app should always fail gracefully and informatively (e.g. provide users with a helpful error message) + Adapt a defensive programming mindset: your app should always fail gracefully and informatively (e.g. provide users with a helpful error message)

-Angle Right -Build a self-explanatory app: consider the following three suggestions for doing so – (a) remember the rule of least surprise (in UI design, always do the least surprising thing e.g. we often assume that underlined text is clickable, so if you include underlined text in your UI, there’s a good chance a user will try clicking on it). (b) think about progression (design a clear pattern of moving forward for your user), and (c) related to b, make sure that if an input is necessary, it is made clear to your user. Check out the {shinyjs} package for implementing nifty ways to improve the user experience of your shiny apps. + Build a self-explanatory app: consider the following three suggestions for doing so – (a) remember the rule of least surprise (in UI design, always do the least surprising thing e.g. we often assume that underlined text is clickable, so if you include underlined text in your UI, there’s a good chance a user will try clicking on it). (b) think about progression (design a clear pattern of moving forward for your user), and (c) related to b, make sure that if an input is necessary, it is made clear to your user. Check out the {shinyjs} package for implementing nifty ways to improve the user experience of your shiny apps.

-Angle Right -Avoid feature-creep: feature-creep is the process of adding features to an app that complicates its usage and maintenance – this includes adding too much reactivity and too much interactivity (e.g. plotly) – interactivity adds visual noise, so it’s best to not make elements interactive if there is no value is gained. + Avoid feature-creep: feature-creep is the process of adding features to an app that complicates its usage and maintenance – this includes adding too much reactivity and too much interactivity (e.g. plotly) – interactivity adds visual noise, so it’s best to not make elements interactive if there is no value is gained.

-
-Additional UX/UI resources -
+

Additional UX/UI resources

+

-Angle Right -Outstanding User Interfaces with Shiny, by David Granjon + Outstanding User Interfaces with Shiny, by David Granjon

-Angle Right -Shiny Developer Series, Episode 20: Outstanding User Interfaces with David Granjon + Shiny Developer Series, Episode 20: Outstanding User Interfaces with David Granjon

-Angle Right -15 User Experience Principles and Theories, by Pathum Goonawardene + 15 User Experience Principles and Theories, by Pathum Goonawardene

-Universal Access - Building accessible apps + Building accessible apps

Consider web accessibilty guidelines to ensure that your app is usable by all

-
-Book Open - Learning Objectives - Accessibility -
+

Learning Objectives - Accessibility

+

By the end of this section, you should:

-Angle Right - have a general understanding of what web accessibility means and who it can benefit (spoiler alert: it benefits us all!) + have a general understanding of what web accessibility means and who it can benefit (spoiler alert: it benefits us all!)

-Angle Right - know how to make a few small tweaks/updates to your application to make it more accessible for all users + know how to make a few small tweaks/updates to your application to make it more accessible for all users

-Angle Right - have a few great resources to turn to to learn more + have a few great resources to turn to to learn more

-
-Universal Access - What is web accessibility and why is it important? -
+

What is web accessibility and why is it important?

+

From the World Wide Web Consortium (W3C)’s Introduction to Web Accessibility:

@@ -7250,12 +7177,10 @@ Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them. More specifically, people can:

-Angle Right - perceive, understand, navigate, and interact with the Web + perceive, understand, navigate, and interact with the Web

-Angle Right - contribute to the Web + contribute to the Web

Web accessibility encompasses all disabilities that affect access to the Web, including: auditory, cognitive, neurological, physical, speech, and visual @@ -7264,33 +7189,27 @@ Web accessibility also benefits people without disabilities, for example:

-Angle Right - people using mobile phones, smart watches, smart TVs, and other devices with small screens, different input modes, etc. + people using mobile phones, smart watches, smart TVs, and other devices with small screens, different input modes, etc.

-Angle Right - older people with changing abilities due to ageing + older people with changing abilities due to ageing

-Angle Right - people with “temporary disabilities” such as a broken arm or lost glasses + people with “temporary disabilities” such as a broken arm or lost glasses

-Angle Right - people with “situational limitations” such as in bright sunlight or in an environment where they cannot listen to audio + people with “situational limitations” such as in bright sunlight or in an environment where they cannot listen to audio

-Angle Right - people using a slow Internet connection, or who have limited or expensive bandwidth + people using a slow Internet connection, or who have limited or expensive bandwidth

Check out the A11Y Project for lots of great tutorials and information about web accessibility.

-
-Small changes can lead to tangible increases in functionality for all users -
+

Small changes can lead to tangible increases in functionality for all users

+

Ensuring that your shiny apps are accessible can feel overwhelming – but considering even a few small changes can have a large impact on user experience.

@@ -7300,20 +7219,16 @@

-Angle Right - Use HTML elements appropriately (e.g. consider hierarchy) + Use HTML elements appropriately (e.g. consider hierarchy)

-Angle Right - Include alt text for graphical elements + Include alt text for graphical elements

-Angle Right - Consider navigation from a mobility perspective + Consider navigation from a mobility perspective

-Angle Right - Use colorblind-friendly palettes + Use colorblind-friendly palettes

@@ -7329,9 +7244,8 @@

-
-Use HTML elements appropriately -
+

Use HTML elements appropriately

+

Screen readers use HTML elements to understand web page organization. Header elements create hierarchy within a webpage and are used by screen readers (i.e. devices used by those with visual impairments) to understand a page’s organizational structure. An <h1> element is more important (hierarchically speaking) than an <h2>, which is more important than an <h3>, and so on.

@@ -7377,9 +7291,8 @@

-
-Include alt text with all graphical elements -
+

Include alt text with all graphical elements

+

All images and graphical elements should include alternative (alt) text that describe the image and/or information being represented. This text won’t appear in the UI, but is detected and read by screen readers.

@@ -7411,9 +7324,8 @@

-
-Tips on writing alt text for data visualizations -
+

Tips on writing alt text for data visualizations

+

A good rule of thumb for writing alt text for data visualizations is alt=“Chart type of type of data where reason for including chart (see this post by Amy Cesal for more). One example:

@@ -7427,9 +7339,8 @@ For more great tips on how and when to use alt text, check out this article by the A11Y Project. For examples of how to construct good alt text, take a peek at this resource by Datawrapper.

-
-Consider UI navigation for those with mobility impairments -
+

Consider UI navigation for those with mobility impairments

+

For users with mobility impairments, using a mouse to navigate a UI packed with widgets may be challenging – some users may even be exclusively using a keyboard to navigate the web.

@@ -7451,9 +7362,8 @@

-
-Use colorblind-friendly palettes -
+

Use colorblind-friendly palettes

+

About 1 in 12 males and 1 in 200 females have some form of colorblindness (Wikipedia). Ensuring that your color choices are distinguishable from one another and/or providing an additional non-color-based way (e.g. patterns, shapes) of distinguishing between treatments/variables/etc. can greatly help with interpretation of data visualizations.

@@ -7484,10 +7394,8 @@

-

- Part 5: Debugging & testing -

-


+

Part 5: Debugging & testing

+

Debugging approaches

@@ -7497,31 +7405,26 @@

-Bug - Debugging + Debugging

Like any code, you’re bound to run into errors as you’re developing your shiny app(s). However, Shiny can be particularly challenging to debug. In this section, we’ll review a few approaches for solving pesky issues.

-
-Book Open - Learning Objectives - Debugging -
+

Learning Objectives - Debugging

+

After this section, you should:

-Angle Right - understand some of the challenges associated with debugging shiny applications + understand some of the challenges associated with debugging shiny applications

-Angle Right - be introduced to a few approaches and tools for debugging shiny applications, including using diagnostic messages and the reactlog package. + be introduced to a few approaches and tools for debugging shiny applications, including using diagnostic messages and the reactlog package.

@@ -7531,44 +7434,36 @@

-Box Open -reactlog: a reactivity visualizer for shiny + reactlog: a reactivity visualizer for shiny

-
-Debugging can be challenging -
+

Debugging can be challenging

+

Shiny apps can be particularly challenging to debug for a few reasons:

-Angle Right - Shiny is reactive, so code execution isn’t as linear as other code that you’re likely more familiar with (e.g. analytical pipelines written in “normal” R scripts, where each line of code is executed in succession) + Shiny is reactive, so code execution isn’t as linear as other code that you’re likely more familiar with (e.g. analytical pipelines written in “normal” R scripts, where each line of code is executed in succession)

-Angle Right - Shiny code runs behind a web server and the Shiny framework itself, which can obscure what’s going on + Shiny code runs behind a web server and the Shiny framework itself, which can obscure what’s going on

While there are a number of different tools/strategies for debugging Shiny apps, I find myself turning to one (or more) of these approaches most often:

-Angle Right - isolating pesky errors (typos, missing commas, unmatched parentheses) in the UI by commenting out code from the outside in + isolating pesky errors (typos, missing commas, unmatched parentheses) in the UI by commenting out code from the outside in

-Angle Right - reducing your app to just problematic code by commenting out as much correctly-functioning code as possible + reducing your app to just problematic code by commenting out as much correctly-functioning code as possible

-Angle Right - adding diagnostic messages to my reactives + adding diagnostic messages to my reactives

-Angle Right - using reactlog to visualize reactivity errors + using reactlog to visualize reactivity errors

@@ -7577,9 +7472,8 @@

-
-Track down pesky UI errors by commenting out code from the outside in -
+

Track down pesky UI errors by commenting out code from the outside in

+

Many of us experienced the frustrations of finding unmatched parentheses, typos, missing commas, etc. when building out our UI layout for App #2, and tracking down the issue can require some patience and persistence.

@@ -7605,9 +7499,8 @@

-
-What about “larger” errors? -
+

What about “larger” errors?

+

Oftentimes, you’ll need to identify larger, more complex errors, like why an output isn’t rendering correctly or even appearing in your app at all.

@@ -7631,9 +7524,8 @@

-
-I’m building an app that should look like this… -
+

I’m building an app that should look like this…

+

In Tab 1, both the image and text should update whenever a new radio button is chosen. In Tab 2, the scatterplot should update so that only data points for penguins with body masses within our chosen range are displayed. Find the source code for this functioning app here.

@@ -7641,9 +7533,8 @@ A functioning shiny app with two tabs. The first tab has radioButtons that when selected, update the penguin image and description text. The second tab has a sliderInput and scatterplot.

-
-…but let’s say it actually looks like this: -
+

…but let’s say it actually looks like this:

+

In Tab 1, only the image updates whenever a new radio button is chosen, and text is missing altogether. In Tab 2, the scatterplot updates as expected whenever the body mass range is changed. Find the source code for this buggy app here.

@@ -7651,9 +7542,8 @@ The same shiny app as on the previous slide, but this time when the radioButtons are updated, only the image changes -- no text appears.

-
-Start by commenting out functioning code -
+

Start by commenting out functioning code

+

Even though this is a relatively small/simple app, there is still code that, for lack of a better term, gets in the way. After a quick assessment, my reactive scatterplot on Tab 2 appears to be working as expected. To help simplify the amount of code I need to look at, I’ll start by commenting out all UI elements (sliderInput & plotOutput) and server logic for building that reactive plot.

@@ -7790,9 +7680,8 @@

-
-Next, add messages to your reactives -
+

Next, add messages to your reactives

+

You can insert diagnostic messages within your reactives using message() – here, I add a short message where each text and image output should be rendered. I can run my app and see messages successfully (or in the case of a broken app, unsuccessfully) print in my RStudio console as I interact with the app. You’ll notice that the each image message (e.g. “Displaying all penguins image”) prints when a new radioButton is selected, but those associated with the text outputs do not. This tells me that code is not being executed, beginning with first if statement inside renderText and that this is a good starting location for reviewing code (e.g. carefully crosschecking all inputIds and outputIds in that section).

@@ -7934,9 +7823,8 @@

-
-If helpful, use reactlog to visualize reactivity -
+

If helpful, use reactlog to visualize reactivity

+



@@ -7958,9 +7846,8 @@ Reactivity can be confusing. I recommend watching Barret Schloerke’s talk, linked above, and reading through the Shiny Reactlog vignette as you get started.

-
-Using reactlog -
+

Using reactlog

+

reactlog should already be installed as a dependency of shiny (but be sure to import the package at the top of your script using library(reactlog)). When enabled, it provides an interactive browser-based tool to visualize reactive dependencies and executions in your app.

@@ -7987,9 +7874,8 @@ Read about the components of the status bar and the meaning of different reactive states in the reactlog vignette.

-
-Using reactlog to visualize reactivity in a correctly-functioning app -
+

Using reactlog to visualize reactivity in a correctly-functioning app

+

To visualize the reactive life cycle of the reactlog-working app, I’ll first load the reactlog library, then call reactlog_enable() in my console. Next, I’ll run my app and interact with it. By default, All penguins is selected. For demonstration purposes, I’ll click down the list (Sassy chinstrap, Staring gentoo, and finally Adorable adelie). When done, I’ll stop my app, then run shiny::reactlogShow() in the console to open the reactlog visualizer in a browser window.

@@ -8000,9 +7886,8 @@

-
-Interpreting reactlog (used with our correctly-functioning app) -
+

Interpreting reactlog (used with our correctly-functioning app)

+

There’s a lot to take when looking at the reactlog viewer, so let’s take it one step at a time:

@@ -8025,9 +7910,8 @@

-
-Using reactlog to visualize reactivity in a broken app -
+

Using reactlog to visualize reactivity in a broken app

+

Let’s try out reactlog on our intentionally broken app (reactlog-broken, where our image changes when a radioButton user input is updated, but our text doesn’t appear). As in our functioning app, the All penguins image is selected by default. For demonstration purposes, I’ll select each option moving down the list (Sassy chinstrap, Staring gentoo, Adorable adelie) before launching reactlog.

@@ -8048,9 +7932,8 @@

-
-So what’s the issue with our app? -
+

So what’s the issue with our app?

+

Evidence from our diagnostic messages and reactlog suggests that we should make sure that our UI and server are actually able to communicate about our desired text output. After careful inspection of our textOutput() and renderText() code, we find that a spelling error is to blame:

@@ -8089,37 +7972,31 @@

-File Code - Testing + Testing

Creating automated tests for your apps can save time and effort, ensuring that they continue working as expected.

-
-Book Open - Learning Objectives for Testing -
+

Learning Objectives for Testing

+

After this section, you should:

-Angle Right - understand some of the reasons why apps break and the benefit of having automated tests + understand some of the reasons why apps break and the benefit of having automated tests

-Angle Right - have a basic understanding of how to use the shinytest2 package to create regression tests + have a basic understanding of how to use the shinytest2 package to create regression tests

-Angle Right - know how to rerun tests + know how to rerun tests

@@ -8129,8 +8006,7 @@

-Box Open -shinytest2: provides tools for creating and running automated tests on Shiny applications + shinytest2: provides tools for creating and running automated tests on Shiny applications

@@ -8142,20 +8018,17 @@

-Angle Right - an upgraded R package(s) has a different behavior (this includes shiny) – this is especially relevant for those apps hosted on servers, where server software (including packages) may be updated by system administrators + an upgraded R package(s) has a different behavior (this includes shiny) – this is especially relevant for those apps hosted on servers, where server software (including packages) may be updated by system administrators

-Angle Right - you make changes to your app + you make changes to your app

-Angle Right - an external data source stops working or returns data in a different format than expected by your app + an external data source stops working or returns data in a different format than expected by your app

@@ -8164,9 +8037,8 @@

-
-Enter the {shinytest2} package -
+

Enter the {shinytest2} package

+

The {shinytest2} package is a useful tool for conducting regression testing on shiny apps – or in other words, testing existing app behavior for consistency over time.

@@ -8191,9 +8063,8 @@ Rather than having to write tests by hand, you can interact with your app via the “app recorder” and shinytest2 will record the test code automatically for you. Simply rerun tests to check for consistency.

-
-shinytest2 resources & demos -
+

shinytest2 resources & demos

+

The following demo comes straight from the {shinytest2} vignette, though a similar app and testing workflow is demoed by Barret Schloerke in his recorded talk, Getting Started with {shinytest2} Part I || Example + basics.

@@ -8202,21 +8073,17 @@ Additional resources:

-Angle Right - Barret Schloerke’s rstudio::conf(2022) talk, {shinytest2}: Unit testing for Shiny applications (recording) + Barret Schloerke’s rstudio::conf(2022) talk, {shinytest2}: Unit testing for Shiny applications (recording)

-Angle Right - Barret Schloerke’s 2022 Appsilon Shiny Confernce talk, {shinytest2} Testing Shiny with {testthat} (recording & GitHub repo) + Barret Schloerke’s 2022 Appsilon Shiny Confernce talk, {shinytest2} Testing Shiny with {testthat} (recording & GitHub repo)

-Angle Right -Shiny testing overview, by Winston Chang – this article discussed the shinytest2 predecessor, shinytest (which is now entering maintenance mode), but provides some helpful context and is worth a read + Shiny testing overview, by Winston Chang – this article discussed the shinytest2 predecessor, shinytest (which is now entering maintenance mode), but provides some helpful context and is worth a read

-
-Let’s test the following app -
+

Let’s test the following app

+

This small app accepts a text input for users to type their name. When the “Greet” button is pressed, the app returns a short greeting message that says, “Hello name!

@@ -8247,9 +8114,8 @@ shinyApp(ui, server)

-
-Testing using shinytest2 -
+

Testing using shinytest2

+

Recording tests requires the following steps:

@@ -8286,9 +8152,8 @@

-
-Creating our first test -
+

Creating our first test

+

Following the steps on the previous slide, creating your test should look similar to this:

@@ -8299,9 +8164,8 @@ Note: Your test is automatically run as soon as you save and exit the recorder. See the results of your test in your console (it should pass!).

-
-Test files are generated automatically -
+

Test files are generated automatically

+

After recording your first test, a /tests folder is generated, containing a number of different files and subdirectories. Some important files to note:

@@ -8367,20 +8231,16 @@

-
-Tips for testing -
+

Tips for testing

+

-Angle Right - Record subsequent tests following the same workflow, giving each a unique name. Run test_app("path/to/app") to run all test scripts in your app’s tests/testhat directory. + Record subsequent tests following the same workflow, giving each a unique name. Run test_app("path/to/app") to run all test scripts in your app’s tests/testhat directory.

-Angle Right - Use record_test() fairly often – Barret Schloerke argues that you should make a test recording for each feature of your app (many little recordings are encouraged!) + Use record_test() fairly often – Barret Schloerke argues that you should make a test recording for each feature of your app (many little recordings are encouraged!)

-Angle Right - Limit testing to objects under your control. For example, let’s say you have a reactive data frame that you then send to a DT::datatable – if package maintainers update the DT package, your output might change which could lead to false positive failed tests. Instead, test just your data frame that gets sent to DT. + Limit testing to objects under your control. For example, let’s say you have a reactive data frame that you then send to a DT::datatable – if package maintainers update the DT package, your output might change which could lead to false positive failed tests. Instead, test just your data frame that gets sent to DT.


@@ -8391,10 +8251,8 @@

-

- Part 6: Streamlining code -

-


+

Part 6: Streamlining code

+

Writing functions

@@ -9746,10 +9604,8 @@ A beginners guide to Shiny modules, by Emily Riederer

-

- Part 7: Wrap-up -

-


+

Part 7: Wrap-up

+

Shiny alternatives

diff --git a/index.qmd b/index.qmd index 6f88d74..eff7209 100644 --- a/index.qmd +++ b/index.qmd @@ -309,9 +309,9 @@ countdown::countdown( ## {#4-improving-ux data-menu-title="!! (4) Improving UX !!" background="#374F50"} -

{{< fa star title="star" >}} Part 4: Improving your app's user experience (UX)

+[{{< fa star title="star" >}} Part 4: Improving your app's user experience (UX)]{.slide-title-dark} -
+

{{< fa angle-right title="a bullet point" >}} Important UX considerations

@@ -329,9 +329,9 @@ countdown::countdown( ## {#5-debugging-testing data-menu-title="!! (5) Debugging & Testing !!" background="#374F50"} -

{{< fa star title="star" >}} Part 5: Debugging & testing

+[{{< fa star title="star" >}} Part 5: Debugging & testing]{.slide-title-dark} -
+

{{< fa angle-right title="a bullet point" >}} Debugging approaches

@@ -349,9 +349,9 @@ countdown::countdown( ## {#6-streamlining-code data-menu-title="!! (6) Streamlining Code !!" background="#374F50"} -

{{< fa star title="star" >}} Part 6: Streamlining code

+[{{< fa star title="star" >}} Part 6: Streamlining code]{.slide-title-dark} -
+

{{< fa angle-right title="a bullet point" >}} Writing functions

@@ -369,9 +369,9 @@ countdown::countdown( ## {#7-wrap-up data-menu-title="!! (7) Wrap-up !!" background="#374F50"} -

{{< fa star title="star" >}} Part 7: Wrap-up

+[{{< fa star title="star" >}} Part 7: Wrap-up]{.slide-title-dark} -
+

{{< fa angle-right title="a bullet point" >}} Shiny alternatives

diff --git a/sections/10-user-centered-design.qmd b/sections/10-user-centered-design.qmd index b778e4a..09c50e9 100644 --- a/sections/10-user-centered-design.qmd +++ b/sections/10-user-centered-design.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#UX-UI data-menu-title="~~~ UX/UI Design ~~~" background="#053660"}
-

`r fontawesome::fa("users", fill = "#d2e3f3", a11y = "sem")` UX/UI matters

+

{{< fa users title="three people" >}} UX/UI matters

*When designing your app, it's critically important that you consider your user's needs and how they will interact with your app -- it doesn't matter how innovative you back-end computations are if people don't understand how to use your app!*

@@ -13,50 +13,56 @@ format: revealjs ## {#LO-ux-design data-menu-title="Learning Objectives - UX/UI Design"} -
`r fontawesome::fa("book-open", fill = "#05859B", a11y = "sem")` Learning Objectives - UX/UI Design
+[{{< fa book-open title="an open book" >}} Learning Objectives - UX/UI Design]{.slide-title} + +

After this section, you should:

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` have a checklist of considerations to reference each time you build an app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a checklist of considerations to reference each time you build an app

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` have a few additional resources to dive deeper into UX/UI design

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a few additional resources to dive deeper into UX/UI design

--- ## {#UX-UI-design-tips data-menu-title="Tips for UX/UI design"} -
Tips for designing your Shiny apps
+[Tips for designing your Shiny apps]{.slide-title} + +

[Chapters 6](https://engineering-shiny.org/ux-matters.html) and [7](https://engineering-shiny.org/dont-rush-into-coding.html) of [Engineering Production-Grade Shiny Apps](https://engineering-shiny.org/index.html), by Colin Fay, Sébastien Rochette, Vincent Guyader, and Cervan Girard provide a list of considerations as you embark on your app-building journey. Some of their suggestions are summarized below, but check out the book for greater detail, examples, and additional considerations:

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` **Simplicity is gold:** using the application shouldn't require reading a manual, and interfaces should be as self-explanatory as possible.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Simplicity is gold:** using the application shouldn't require reading a manual, and interfaces should be as self-explanatory as possible.

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` **Adapt a defensive programming mindset:** your app should always fail gracefully and informatively (e.g. provide users with a helpful error message)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Adapt a defensive programming mindset:** your app should always fail gracefully and informatively (e.g. provide users with a helpful error message)

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` **Build a self-explanatory app:** consider the following three suggestions for doing so -- **(a)** remember the rule of least surprise (in UI design, always do the least surprising thing e.g. we often assume that underlined text is clickable, so if you include underlined text in your UI, there's a good chance a user will try clicking on it). **(b)** think about progression (design a clear pattern of moving forward for your user), and **(c)** related to **b**, make sure that if an input is necessary, it is made clear to your user. Check out the [`{shinyjs}` package](https://deanattali.com/shinyjs/) for implementing nifty ways to improve the user experience of your shiny apps.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Build a self-explanatory app:** consider the following three suggestions for doing so -- **(a)** remember the rule of least surprise (in UI design, always do the least surprising thing e.g. we often assume that underlined text is clickable, so if you include underlined text in your UI, there's a good chance a user will try clicking on it). **(b)** think about progression (design a clear pattern of moving forward for your user), and **(c)** related to **b**, make sure that if an input is necessary, it is made clear to your user. Check out the [`{shinyjs}` package](https://deanattali.com/shinyjs/) for implementing nifty ways to improve the user experience of your shiny apps.

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` **Avoid feature-creep:** feature-creep is the process of adding features to an app that complicates its usage and maintenance -- this includes adding too much *reactivity* and too much *interactivity* (e.g. `plotly`) -- interactivity adds visual noise, so it's best to not make elements interactive if there is no value is gained.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Avoid feature-creep:** feature-creep is the process of adding features to an app that complicates its usage and maintenance -- this includes adding too much *reactivity* and too much *interactivity* (e.g. `plotly`) -- interactivity adds visual noise, so it's best to not make elements interactive if there is no value is gained.

--- ## {#UX-UI-resources data-menu-title="UX/UI resources"} -
Additional UX/UI resources
+[Additional UX/UI resources]{.slide-title} + +
-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Outstanding User Interfaces with Shiny](https://unleash-shiny.rinterface.com/index.html), by [David Granjon](https://divadnojnarg.github.io/)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Outstanding User Interfaces with Shiny](https://unleash-shiny.rinterface.com/index.html), by [David Granjon](https://divadnojnarg.github.io/)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Shiny Developer Series, Episode 20: Outstanding User Interfaces with David Granjon](https://www.youtube.com/watch?v=mxvMaoXOm70)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Shiny Developer Series, Episode 20: Outstanding User Interfaces with David Granjon](https://www.youtube.com/watch?v=mxvMaoXOm70)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [15 User Experience Principles and Theories](https://pathumpmgux.medium.com/15-user-experience-principles-and-theories-80f19877bd5), by [Pathum Goonawardene](https://pathumpmgux.medium.com/)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [15 User Experience Principles and Theories](https://pathumpmgux.medium.com/15-user-experience-principles-and-theories-80f19877bd5), by [Pathum Goonawardene](https://pathumpmgux.medium.com/)

diff --git a/sections/11-accessibility.qmd b/sections/11-accessibility.qmd index 0dc82b9..429908d 100644 --- a/sections/11-accessibility.qmd +++ b/sections/11-accessibility.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#accessibility data-menu-title="~~~ Accessibility ~~~" background="#053660"}
-

`r fontawesome::fa("universal-access", fill = "#d2e3f3", a11y = "sem")` Building accessible apps

+

{{< fa universal-access title="the symbol for universal access - a person standing with the arms widespread inside a circle" >}} Building accessible apps

*Consider web accessibilty guidelines to ensure that your app is usable by all*

@@ -13,41 +13,45 @@ format: revealjs ## {#LO-accessibility data-menu-title="Learning Objectives - Accessibility"} -
`r fontawesome::fa("book-open", fill = "#05859B", a11y = "sem")` Learning Objectives - Accessibility
+[{{< fa book-open title="an open book" >}} Learning Objectives - Accessibility]{.slide-title} + +

By the end of this section, you should:

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` have a general understanding of what web accessibility means and who it can benefit (spoiler alert: it benefits us all!)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a general understanding of what web accessibility means and who it can benefit (spoiler alert: it benefits us all!)

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` know how to make a few small tweaks/updates to your application to make it more accessible for all users

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to make a few small tweaks/updates to your application to make it more accessible for all users

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` have a few great resources to turn to to learn more

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a few great resources to turn to to learn more

--- ## {#what-is-accessibility data-menu-title="What is web accessibility?"} -
`r fontawesome::fa("universal-access", fill = "#05859B", a11y = "sem")` What is web accessibility and why is it important?
+[{{< fa universal-access title="the symbol for universal access - a person standing with the arms widespread inside a circle" >}} What is web accessibility and why is it important?]{.slide-title} + +

From the [World Wide Web Consortium (W3C)](https://www.w3.org/)'s [Introduction to Web Accessibility](https://www.w3.org/WAI/fundamentals/accessibility-intro/):

Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them. More specifically, people can:

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` perceive, understand, navigate, and interact with the Web

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` contribute to the Web

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} perceive, understand, navigate, and interact with the Web

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} contribute to the Web

Web accessibility encompasses all disabilities that affect access to the Web, including: auditory, cognitive, neurological, physical, speech, and visual

Web accessibility also benefits people without disabilities, for example:

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` people using mobile phones, smart watches, smart TVs, and other devices with small screens, different input modes, etc.

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` older people with changing abilities due to ageing

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` people with “temporary disabilities” such as a broken arm or lost glasses

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` people with “situational limitations” such as in bright sunlight or in an environment where they cannot listen to audio

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` people using a slow Internet connection, or who have limited or expensive bandwidth

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people using mobile phones, smart watches, smart TVs, and other devices with small screens, different input modes, etc.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} older people with changing abilities due to ageing

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people with “temporary disabilities” such as a broken arm or lost glasses

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people with “situational limitations” such as in bright sunlight or in an environment where they cannot listen to audio

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people using a slow Internet connection, or who have limited or expensive bandwidth

Check out the [A11Y Project](https://www.a11yproject.com/) for lots of great tutorials and information about web accessibility.

@@ -56,7 +60,9 @@ format: revealjs ## {#small-steps data-menu-title="Small steps help!"} -
Small changes can lead to tangible increases in functionality for all users
+[Small changes can lead to tangible increases in functionality for all users]{.slide-title} + +

Ensuring that your shiny apps are accessible can feel overwhelming -- but considering even a few small changes can have a large impact on user experience.

@@ -66,10 +72,10 @@ format: revealjs ::: {.column width="45%"}
-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Use HTML elements appropriately (e.g. consider hierarchy)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Include alt text for graphical elements

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Consider navigation from a mobility perspective

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Use colorblind-friendly palettes

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Use HTML elements appropriately (e.g. consider hierarchy)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Include alt text for graphical elements

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Consider navigation from a mobility perspective

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Use colorblind-friendly palettes

::: ::: {.column width="5%"} @@ -86,7 +92,9 @@ format: revealjs ## {#hierarchy data-menu-title="Heirarchy"} -
Use HTML elements appropriately
+[Use HTML elements appropriately]{.slide-title-smaller} + +

**Screen readers use HTML elements to understand web page organization.** Header elements create hierarchy within a webpage and are used by screen readers (i.e. devices used by those with visual impairments) to understand a page's organizational structure. An `

` element is more important (hierarchically speaking) than an `

`, which is more important than an `

`, and so on.

@@ -141,7 +149,9 @@ shinyApp(ui = ui, server = server) ## {#alt-text data-menu-title="Alt text"} -
Include alt text with all graphical elements
+[Include alt text with all graphical elements]{.slide-title-smaller} + +

All images and graphical elements should include **alternative (alt) text** that describe the image and/or information being represented. This text won't appear in the UI, but is detected and read by screen readers.

@@ -180,7 +190,9 @@ tags$img(src = "file/path/to/img", ## {#alt-text-tips data-menu-title="Alt text tips"} -
Tips on writing alt text for data visualizations
+[Tips on writing alt text for data visualizations]{.slide-title-smallest} + +

A good rule of thumb for writing alt text for data visualizations is alt="Chart type of type of data where reason for including chart" (see [this post](https://medium.com/nightingale/writing-alt-text-for-data-visualization-2a218ef43f81#:~:text=Alt%20text%20) by [Amy Cesal](https://www.amycesal.com/) for more). One example:

@@ -194,7 +206,9 @@ tags$img(src = "file/path/to/img", ## {#mobility data-menu-title="Mobility"} -
Consider UI navigation for those with mobility impairments
+[Consider UI navigation for those with mobility impairments]{.slide-title} + +

For users with mobility impairments, using a mouse to navigate a UI packed with widgets may be challenging -- some users may even be exclusively using a keyboard to navigate the web.

@@ -224,7 +238,9 @@ tags$img(src = "file/path/to/img", ## {#color-palettes data-menu-title="Color Palettes"} -
Use colorblind-friendly palettes
+[Use colorblind-friendly palettes]{.slide-title} + +

About 1 in 12 males and 1 in 200 females have some form of colorblindness ([Wikipedia](https://en.wikipedia.org/wiki/Color_blindness)). Ensuring that your color choices are distinguishable from one another and/or providing an additional non-color-based way (e.g. patterns, shapes) of distinguishing between treatments/variables/etc. can greatly help with interpretation of data visualizations.

diff --git a/sections/12-debugging.qmd b/sections/12-debugging.qmd index bd55627..73f09ff 100644 --- a/sections/12-debugging.qmd +++ b/sections/12-debugging.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#debugging data-menu-title="~~~ Debugging ~~~" background="#053660"}
-

`r fontawesome::fa("bug", fill = "#d2e3f3", a11y = "sem")` Debugging

+

{{< fa bug title="bug" >}} Debugging

*Like any code, you're bound to run into errors as you're developing your shiny app(s). However, Shiny can be particularly challenging to debug. In this section, we'll review a few approaches for solving pesky issues.*

@@ -13,17 +13,19 @@ format: revealjs ## {#LO-debugging data-menu-title="Learning Objectives - Debugging"} -
`r fontawesome::fa("book-open", fill = "#05859B", a11y = "sem")` Learning Objectives - Debugging
+[{{< fa book-open title="an open book" >}} Learning Objectives - Debugging]{.slide-title} + +

After this section, you should:

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` understand some of the challenges associated with debugging shiny applications

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand some of the challenges associated with debugging shiny applications

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` be introduced to a few approaches and tools for debugging shiny applications, including using diagnostic messages and the `reactlog` package.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} be introduced to a few approaches and tools for debugging shiny applications, including using diagnostic messages and the `reactlog` package.

. . . @@ -31,31 +33,33 @@ format: revealjs . . . -

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{reactlog}`: a reactivity visualizer for shiny

+

[{{< fa book-open title="an open book" >}}]{.teal-text} `{reactlog}`: a reactivity visualizer for shiny

--- ## {#debugging-challenges data-menu-title="Debugging is challenging"} -
Debugging can be challenging
+[Debugging can be challenging]{.slide-title} + +

Shiny apps can be particularly challenging to debug for a few reasons:

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Shiny is **reactive**, so code execution isn't as linear as other code that you're likely more familiar with (e.g. analytical pipelines written in "normal" R scripts, where each line of code is executed in succession)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Shiny is **reactive**, so code execution isn't as linear as other code that you're likely more familiar with (e.g. analytical pipelines written in "normal" R scripts, where each line of code is executed in succession)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Shiny code runs behind a web server *and* the Shiny framework itself, which can obscure what's going on

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Shiny code runs behind a web server *and* the Shiny framework itself, which can obscure what's going on

. . .

While there are a number of different tools/strategies for debugging Shiny apps, I find myself turning to one (or more) of these approaches most often:

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` isolating pesky errors (typos, missing commas, unmatched parentheses) in the UI by commenting out code from the outside in

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} isolating pesky errors (typos, missing commas, unmatched parentheses) in the UI by commenting out code from the outside in

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` reducing your app to *just* problematic code by commenting out as much correctly-functioning code as possible

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reducing your app to *just* problematic code by commenting out as much correctly-functioning code as possible

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` adding diagnostic messages to my reactives

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} adding diagnostic messages to my reactives

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` using `reactlog` to visualize reactivity errors

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} using `reactlog` to visualize reactivity errors

. . . @@ -65,7 +69,9 @@ format: revealjs ## {#ui-errors data-menu-title="Tracking down UI errors"} -
Track down pesky UI errors by commenting out code from the outside in
+[Track down pesky UI errors by commenting out code from the outside in]{.slide-title-smaller} + +

Many of us experienced the frustrations of finding unmatched parentheses, typos, missing commas, etc. when building out our UI layout for App #2, and tracking down the issue can require some patience and persistence.

@@ -95,7 +101,9 @@ format: revealjs ## {#next data-menu-title="next strategies"} -
What about "larger" errors?
+[What about "larger" errors?]{.slide-title-smaller} + +

Oftentimes, you'll need to identify larger, more complex errors, like why an output isn't rendering correctly or even appearing in your app at all.

@@ -117,7 +125,9 @@ format: revealjs ## {#non-buggy-app data-menu-title="A correctly functioning app"} -
I'm building an app that should look like this...
+[I'm building an app that should look like this...]{.slide-title-smaller} + +

In **Tab 1**, both the image and text should update whenever a new radio button is chosen. In **Tab 2**, the scatterplot should update so that only data points for penguins with body masses within our chosen range are displayed. **Find the source code for this functioning app [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/reactlog-working).**

@@ -127,7 +137,9 @@ format: revealjs ## {#buggy-app data-menu-title="A buggy app"} -
...but let's say it actually looks like this:
+[...but let's say it actually looks like this:]{.slide-title-smaller} + +

In **Tab 1**, only the image updates whenever a new radio button is chosen, and text is missing altogether. In **Tab 2**, the scatterplot updates as expected whenever the body mass range is changed. **Find the source code for this buggy app [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/reactlog-broken).**

@@ -137,7 +149,9 @@ format: revealjs ## {#comment-out-code data-menu-title="Comment out code"} -
Start by commenting out functioning code
+[Start by commenting out functioning code]{.slide-title-smallest} + +

Even though this is a relatively small/simple app, there is still code that, for lack of a better term, gets in the way. After a quick assessment, my reactive scatterplot on Tab 2 appears to be working as expected. To help simplify the amount of code I need to look at, I'll start by commenting out all UI elements (`sliderInput` & `plotOutput`) and server logic for building that reactive plot.

@@ -273,7 +287,9 @@ shinyApp(ui = ui, server = server) ## {#add-messages data-menu-title="Add messages to reactives"} -
Next, add messages to your reactives
+[Next, add messages to your reactives]{.slide-title-smallest} + +

You can insert diagnostic messages within your reactives using `message()` -- here, I add a short message where each text and image output should be rendered. I can run my app and see messages successfully (or in the case of a broken app, unsuccessfully) print in my RStudio console as I interact with the app. You'll notice that the each image message (e.g. *"Displaying all penguins image"*) prints when a new radioButton is selected, but those associated with the text outputs do not. This tells me that code is not being executed, beginning with first `if` statement inside `renderText` and that this is a good starting location for reviewing code (e.g. carefully crosschecking all `inputId`s and `outputId`s in that section).

@@ -417,7 +433,9 @@ shinyApp(ui = ui, server = server) ## {#reactlog data-menu-title="{reactlog}"} -
If helpful, use `{reactlog}` to visualize reactivity
+[If helpful, use `{reactlog}` to visualize reactivity]{.slide-title-smallest} + +
:::: {.columns} @@ -446,7 +464,9 @@ shinyApp(ui = ui, server = server) ## {#reactlog-workflow data-menu-title="{reactlog} workflow"} -
Using `{reactlog}`
+[Using `{reactlog}`]{.slide-title-smaller} + +

`reactlog` should already be installed as a dependency of `shiny` (but be sure to import the package at the top of your script using `library(reactlog)`). When enabled, it provides an interactive browser-based tool to visualize reactive dependencies and executions in your app.

@@ -467,7 +487,9 @@ shinyApp(ui = ui, server = server) ## {#using-reactlog-working-app data-menu-title="Using {reactlog} - working app"} -
Using `{reactlog}` to visualize reactivity in a correctly-functioning app
+[Using `{reactlog}` to visualize reactivity in a correctly-functioning app]{.slide-title-smallest} + +

To visualize the reactive life cycle of the `reactlog-working` app, I'll first load the reactlog library, then call `reactlog_enable()` in my console. Next, I'll run my app and interact with it. By default, **All penguins** is selected. For demonstration purposes, I'll click down the list (**Sassy chinstrap**, **Staring gentoo**, and finally **Adorable adelie**). When done, I'll stop my app, then run `shiny::reactlogShow()` in the console to open the reactlog visualizer in a browser window.

@@ -479,7 +501,9 @@ shinyApp(ui = ui, server = server) ## {#interpreting-reactlog-working-app data-menu-title="Interpreting {reactlog}"} -
Interpreting `{reactlog}` (used with our correctly-functioning app)
+[Interpreting `{reactlog}` (used with our correctly-functioning app)]{.slide-title-smaller} + +

There's a lot to take when looking at the reactlog viewer, so let's take it one step at a time:

@@ -501,7 +525,9 @@ shinyApp(ui = ui, server = server) ## {#using-reactlog-broken-app data-menu-title="Using {reactlog} - broken app"} -
Using `{reactlog}` to visualize reactivity in a broken app
+[Using `{reactlog}` to visualize reactivity in a broken app]{.slide-title-smaller} + +

Let's try out reactlog on our intentionally broken app (`reactlog-broken`, where our image changes when a radioButton user input is updated, but our text doesn't appear). As in our functioning app, the **All penguins** image is selected by default. For demonstration purposes, I'll select each option moving down the list (**Sassy chinstrap**, **Staring gentoo**, **Adorable adelie**) before launching reactlog.

@@ -526,7 +552,9 @@ shinyApp(ui = ui, server = server) ## {#id-bug data-menu-title="Identify the bug"} -
So what's the issue with our app?
+[So what's the issue with our app?]{.slide-title-smallest} + +

Evidence from our diagnostic messages *and* `reactlog` suggests that we should make sure that our UI and server are actually able to communicate about our desired text output. After careful inspection of our `textOutput()` and `renderText()` code, we find that a spelling error is to blame:

diff --git a/sections/13-testing.qmd b/sections/13-testing.qmd index cb3f888..08c9228 100644 --- a/sections/13-testing.qmd +++ b/sections/13-testing.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#testing data-menu-title="~~~ Testing ~~~" background="#053660"}
-

`r fontawesome::fa("file-code", fill = "#d2e3f3", a11y = "sem")` Testing

+

{{< fa file-code title="a file with the code symbol, , on it" >}} Testing

*Creating automated tests for your apps can save time and effort, ensuring that they continue working as expected.*

@@ -13,21 +13,23 @@ format: revealjs ## {#LO-testing data-menu-title="Learning Objectives - Testing"} -
`r fontawesome::fa("book-open", fill = "#05859B", a11y = "sem")` Learning Objectives for Testing
+[{{< fa book-open title="an open book" >}} Learning Objectives for Testing]{.slide-title} + +

After this section, you should:

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` understand some of the reasons why apps break and the benefit of having automated tests

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand some of the reasons why apps break and the benefit of having automated tests

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` have a basic understanding of how to use the `shinytest2` package to create regression tests

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a basic understanding of how to use the `shinytest2` package to create regression tests

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` know how to rerun tests

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to rerun tests

. . . @@ -35,7 +37,7 @@ format: revealjs . . . -

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{shinytest2}`: provides tools for creating and running automated tests on Shiny applications

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{shinytest2}`: provides tools for creating and running automated tests on Shiny applications

--- @@ -47,15 +49,15 @@ format: revealjs . . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` an upgraded R package(s) has a different behavior (this includes `shiny`) -- this is especially relevant for those apps hosted on servers, where server software (including packages) may be updated by system administrators

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} an upgraded R package(s) has a different behavior (this includes `shiny`) -- this is especially relevant for those apps hosted on servers, where server software (including packages) may be updated by system administrators

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` you make changes to your app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} you make changes to your app

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` an external data source stops working or returns data in a different format than expected by your app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} an external data source stops working or returns data in a different format than expected by your app

. . . @@ -65,7 +67,9 @@ format: revealjs ## {#shinytest2 data-menu-title="{shinytest2}"} -
Enter the [`{shinytest2}` package](https://rstudio.github.io/shinytest2/articles/shinytest2.html)
+[Enter the [`{shinytest2}` package](https://rstudio.github.io/shinytest2/articles/shinytest2.html)]{.slide-title} + +

The [`{shinytest2}` package](https://rstudio.github.io/shinytest2/articles/shinytest2.html) is a useful tool for conducting regression testing on shiny apps -- or in other words, testing existing app behavior for consistency over time.

@@ -95,7 +99,9 @@ format: revealjs ## {#shinytest2-resources data-menu-title="{shinytest2} resources"} -
`shinytest2` resources & demos
+[`shinytest2` resources & demos]{.slide-title} + +

The following demo comes straight from the [`{shinytest2}` vignette](https://rstudio.github.io/shinytest2/articles/shinytest2.html), though a similar app and testing workflow is demoed by Barret Schloerke in his recorded talk, [*Getting Started with {shinytest2} Part I || Example + basics*](https://www.youtube.com/watch?v=Gucwz865aqQ).

@@ -103,17 +109,19 @@ format: revealjs

Additional resources:

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Barret Schloerke's rstudio::conf(2022) talk, *{shinytest2}: Unit testing for Shiny applications* ([recording](https://www.youtube.com/watch?v=DMgAW4m5aTI))

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Barret Schloerke's rstudio::conf(2022) talk, *{shinytest2}: Unit testing for Shiny applications* ([recording](https://www.youtube.com/watch?v=DMgAW4m5aTI))

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Barret Schloerke's 2022 Appsilon Shiny Confernce talk, *{shinytest2} Testing Shiny with {testthat}* ([recording](https://www.youtube.com/watch?v=EOVPBN5o8F8) & [GitHub repo](https://github.com/schloerke/presentation-2022-04-27-appsilon-shinytest2))

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Barret Schloerke's 2022 Appsilon Shiny Confernce talk, *{shinytest2} Testing Shiny with {testthat}* ([recording](https://www.youtube.com/watch?v=EOVPBN5o8F8) & [GitHub repo](https://github.com/schloerke/presentation-2022-04-27-appsilon-shinytest2))

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Shiny testing overview](https://shiny.rstudio.com/articles/testing-overview.html), by Winston Chang -- this article discussed the `shinytest2` predecessor, `shinytest` (which is now entering maintenance mode), but provides some helpful context and is worth a read

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Shiny testing overview](https://shiny.rstudio.com/articles/testing-overview.html), by Winston Chang -- this article discussed the `shinytest2` predecessor, `shinytest` (which is now entering maintenance mode), but provides some helpful context and is worth a read

--- ## {#app-for-testing data-menu-title="The app we'll test"} -
Let's test the following app
+[Let's test the following app]{.slide-title} + +

This small app accepts a text input for users to type their name. When the "Greet" button is pressed, the app returns a short greeting message that says, "Hello *name*!

@@ -149,7 +157,9 @@ shinyApp(ui, server) ## {#testing-procedure data-menu-title="Testing procedure"} -
Testing using `shinytest2`
+[Testing using `shinytest2`]{.slide-title} + +

Recording tests requires the following steps:

@@ -181,7 +191,9 @@ shinyApp(ui, server) ## {#creating-test1-example data-menu-title="Creating our first test"} -
Creating our first test
+[Creating our first test]{.slide-title} + +

Following the steps on the previous slide, creating your test should look similar to this:

@@ -193,7 +205,9 @@ shinyApp(ui, server) ## {#test-files-created data-menu-title="Test files created"} -
Test files are generated automatically
+[Test files are generated automatically]{.slide-title} + +

After recording your first test, a `/tests` folder is generated, containing a number of different files and subdirectories. Some important files to note:

@@ -260,13 +274,15 @@ test_that("{shinytest2} recording: sam-test", { ## {#testing-tips data-menu-title="Testing tips"} -
Tips for testing
+[Tips for testing]{.slide-title} + +
-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Record subsequent tests following the same workflow, giving each a unique name. Run `test_app("path/to/app")` to run all test scripts in your app's `tests/testhat` directory.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Record subsequent tests following the same workflow, giving each a unique name. Run `test_app("path/to/app")` to run all test scripts in your app's `tests/testhat` directory.

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Use `record_test()` fairly often -- Barret Schloerke argues that you should make a test recording for each feature of your app (many little recordings are encouraged!)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Use `record_test()` fairly often -- Barret Schloerke argues that you should make a test recording for each feature of your app (many little recordings are encouraged!)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Limit testing to objects under your control. For example, let's say you have a reactive data frame that you then send to a `DT::datatable` -- if package maintainers update the `DT` package, your output might change which could lead to false positive failed tests. Instead, test just your data frame that gets sent to `DT`.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Limit testing to objects under your control. For example, let's say you have a reactive data frame that you then send to a `DT::datatable` -- if package maintainers update the `DT` package, your output might change which could lead to false positive failed tests. Instead, test just your data frame that gets sent to `DT`.

. . . diff --git a/sections/9-themeing-apps.qmd b/sections/9-themeing-apps.qmd index 9917f10..9fa1b19 100644 --- a/sections/9-themeing-apps.qmd +++ b/sections/9-themeing-apps.qmd @@ -4,18 +4,19 @@ format: revealjs ## {#LO-themeing data-menu-title="Learning Objectives - Themeing/Styling"} -
`r fontawesome::fa("book-open", fill = "#05859B", a11y = "sem")` Learning Objectives - Themeing/Styling Apps
+[{{< fa book-open title="an open book" >}} Learning Objectives - Themeing/Styling Apps]{.slide-title} + +

By the end of this section, you should be equipped with:

. . . - -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` a number of different approaches for themeing and styling your shiny apps and dashboards

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} a number of different approaches for themeing and styling your shiny apps and dashboards

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` a basic understanding of how to apply CSS & Sass styling to your app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} a basic understanding of how to apply CSS & Sass styling to your app

. . . @@ -23,16 +24,16 @@ format: revealjs . . . -

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{bslib}`: provides tools for customizing Bootstrap themes directly from R for shiny apps and RMarkdowns

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{bslib}`: provides tools for customizing Bootstrap themes directly from R for shiny apps and RMarkdowns

. . . -

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{fresh}`: provides tools for creating custom themes for use with shiny, `shinydashboard`, and `bs4Dash` apps

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{fresh}`: provides tools for creating custom themes for use with shiny, `shinydashboard`, and `bs4Dash` apps

## {#themeing-pkgs data-menu-title="~~~ Themeing Shiny Apps (with pkgs) ~~~" background="#053660"}
-

`r fontawesome::fa("paint-roller", fill = "#d2e3f3", a11y = "sem")` Creating custom themes

+

{{< fa paint-roller title="a paint roller" >}} Creating custom themes

*We've built some really cool apps so far, but they all have a pretty standard and similar appearance. In this section, we'll explore two packages for creating custom themes for your apps.*

@@ -40,7 +41,9 @@ format: revealjs ## {#bslib data-menu-title="{bslib}"} -
Using the [`{bslib}` package](https://rstudio.github.io/bslib/) to theme Shiny apps
+[Using the [`{bslib}` package](https://rstudio.github.io/bslib/) to theme Shiny apps]{.slide-title} + +

The [`{bslib}` package](https://rstudio.github.io/bslib/) provides tools for customizing [Bootstrap themes](https://getbootstrap.com/docs/4.6/getting-started/theming/) directly from R, making custom themeing for Shiny apps (and R Markdown docs!) quite easy.

@@ -48,10 +51,10 @@ format: revealjs ::: {.column width="45%"}

Pros:

-

`r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` easy to use

-

`r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` includes a [real-time themeing widget](https://testing-apps.shinyapps.io/themer-demo/) to try out themes before applying them to your own app

-

`r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` plays well with the `{thematic}` package for matching plot styling to app

-

`r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` `{bslib}` does more than just themeing! Check out the [December 2022 announcement](https://shiny.rstudio.com/blog/announcing-new-r-shiny-ui-components.html) of new UI components made possible with the latest package release

+

[{{< fa check title="check mark" >}}]{.teal-text} easy to use

+

[{{< fa check title="check mark" >}}]{.teal-text} includes a [real-time themeing widget](https://testing-apps.shinyapps.io/themer-demo/) to try out themes before applying them to your own app

+

[{{< fa check title="check mark" >}}]{.teal-text} plays well with the `{thematic}` package for matching plot styling to app

+

[{{< fa check title="check mark" >}}]{.teal-text} `{bslib}` does more than just themeing! Check out the [December 2022 announcement](https://shiny.rstudio.com/blog/announcing-new-r-shiny-ui-components.html) of new UI components made possible with the latest package release

::: ::: {.column width="4%"} @@ -59,8 +62,8 @@ format: revealjs ::: {.column width="45%"}

Cons:

-

`r fontawesome::fa("xmark", fill = "#05859B", a11y = "sem")` does **not** work with `shinydashboard` (`{bslib}` is only intended for use with `shiny` *apps*)

-

`r fontawesome::fa("xmark", fill = "#05859B", a11y = "sem")` styling is constrained by the arguments available to `bs_theme()`

+

[{{< fa xmark title="an 'x' mark" >}}]{.teal-text} does **not** work with `shinydashboard` (`{bslib}` is only intended for use with `shiny` *apps*)

+

[{{< fa xmark title="an 'x' mark" >}}]{.teal-text} styling is constrained by the arguments available to `bs_theme()`

::: :::: @@ -73,7 +76,9 @@ format: revealjs ## {#bslib-prebuilt-themes data-menu-title="Pre-built themes with {bslib}"} -
Apply a pre-built theme with {bslib}
+[Apply a pre-built theme with {bslib}]{.slide-title} + +

By default, Shiny uses the Bootstrap v3 theme (which is not so exciting). Change the theme to a slightly more modern Bootstrap v5 theme by setting the `theme` argument of `fluidPage()` to `bslib::bs_theme(version = 5)`, *or* supply `bs_theme()` with a pre-built bootswatch theme, as shown below (for a list of theme names, run `bootswatch_themes()` in your console):

@@ -111,7 +116,9 @@ ui <- fluidPage( ## {#bslib-custom-themes data-menu-title="Custom themes with {bslib}"} -
Create a custom theme with {bslib}
+[Create a custom theme with {bslib}]{.slide-title} + +

Alternatively, you can fully customize your own theme. Explore the [`bslib` vignette](https://rstudio.github.io/bslib/articles/bslib.html) for detailed instructions. A small example here:

@@ -155,7 +162,9 @@ ui <- fluidPage( ## {#thematic data-menu-title="{thematic} for plot themeing"} -
Use {thematic} to extend your theme to plots
+[Use {thematic} to extend your theme to plots]{.slide-title-smaller} + +

You probably noticed that our scatterplot looks a little silly against the darker background of our themed app. Enter the [`{thematic}` package](https://rstudio.github.io/thematic/index.html), which is built to help simplify plot themeing. Call `thematic_shiny()` before launching your app to generate plots that reflect your application's `bs_theme()`. For example:

@@ -203,7 +212,9 @@ ui <- fluidPage( ## {#fresh data-menu-title="{fresh}"} -
Using the [`{fresh}` package](https://dreamrs.github.io/fresh/) to theme Shiny apps & dashboards
+[Using the [`{fresh}` package](https://dreamrs.github.io/fresh/) to theme Shiny apps & dashboards]{.slide-title-smaller} + +

The [`{fresh}` package](https://dreamrs.github.io/fresh/) provides tools for creating custom themes to use in Shiny apps *and* dashboards -- set parameters of your theme using `create_theme()`, generate a stylesheet based off your specifications, and apply your stylesheet to your app.

@@ -213,8 +224,8 @@ ui <- fluidPage( ::: {.column width="45%"}

Pros:

-

`r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` easy to use

-

`r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` supports theme creation for *both* shiny apps and dashboards (and also `{flexdashboard}`s and [`{b4dash}` applications](https://rinterface.github.io/bs4Dash/index.html))

+

[{{< fa check title="check mark" >}}]{.teal-text} easy to use

+

[{{< fa check title="check mark" >}}]{.teal-text} supports theme creation for *both* shiny apps and dashboards (and also `{flexdashboard}`s and [`{b4dash}` applications](https://rinterface.github.io/bs4Dash/index.html))

::: ::: {.column width="4%"} @@ -222,7 +233,7 @@ ui <- fluidPage( ::: {.column width="45%"}

Cons:

-

`r fontawesome::fa("xmark", fill = "#05859B", a11y = "sem")` styling is constrained by the variables available to `create_theme()`

+

[{{< fa xmark title="an 'x' mark" >}}]{.teal-text} styling is constrained by the variables available to `create_theme()`

::: :::: @@ -237,7 +248,9 @@ ui <- fluidPage( ## {#fresh-workflow data-menu-title="{fresh} workflow"} -
A general workflow for using `fresh` themes
+[A general workflow for using `fresh` themes]{.slide-title-smaller} + +

Whether you're working on a shiny *app* or a shiny *dashboard*, you'll need the following:

@@ -254,11 +267,13 @@ ui <- fluidPage( ## {#create-fresh-app-theme data-menu-title="Create {fresh} app theme"} -
Creating a `fresh` theme for `two-file-app`
+[Creating a `fresh` theme for `two-file-app`]{.slide-title-smallest} + +

In this example, we update the colors of our app's body, navbar, and tabPanels using the appropriate `fresh` [variables for shiny *apps*](https://dreamrs.github.io/fresh/articles/vars-shiny.html). We specify a file path, `two-file-app/www` (you'll need to create the `/www` directory, since we don't have one yet), where our stylesheet (e.g. `shiny_fresh_themes.css`, as shown here) file will be saved to.

-

Of course, these color combos are *not* recommended, but chosen purely for demonstration purposes `r fontawesome::fa("face-smile-wink", fill = "#05859B", a11y = "sem")`.

+

Of course, these color combos are *not* recommended, but chosen purely for demonstration purposes {{< fa face-smile title="a smiling face" >}}.

```{r} #| eval: false @@ -300,7 +315,9 @@ create_theme( ## {#apply-fresh-apps-theme data-menu-title="Apply {fresh} app theme"} -
Apply a `fresh` theme to our app
+[Apply a `fresh` theme to our app]{.slide-title-smaller} + +

To apply our theme, provide the `theme` argument of your `fluidPage()` or `navbarPage()` with the name of our stylesheet. **Note:** shiny knows to look in the `/www` directory, so you can omit that from your file path, as shown below:

@@ -342,7 +359,9 @@ ui <- navbarPage( ## {#fresh-shinydashboard data-menu-title="{fresh} shiny dashboard"} -
Creating a `fresh` theme for our `shinydashboard`
+[Creating a `fresh` theme for our `shinydashboard`]{.slide-title-smallest} + +

In this example, we update the colors of our app's header, body, and sidebar using the appropriate `fresh` [variables for shiny *dashboards*](https://dreamrs.github.io/fresh/articles/vars-shinydashboard.html). We specify a file path, `shinydashboard/www` where our stylesheet (e.g. `shinydashboard_fresh_themes.css`, as shown here) file will be saved to. Again, these color combos are *not* recommended, but chosen purely for demonstration purposes.

@@ -384,7 +403,9 @@ create_theme( ## {#apply-fresh-dashboard-theme data-menu-title="Apply {fresh} dashboard theme"} -
Apply a `fresh` theme to our dashboard
+[Apply a `fresh` theme to our dashboard]{.slide-title-smaller} + +

To apply our theme, use the `fresh::use_theme()` function inside your `dashboardBody`, providing it with the name of your stylesheet. **Note:** shiny knows to look in the `/www` directory, so you can omit that from your file path, as shown below:

@@ -427,7 +448,7 @@ body <- dashboardBody( ## {#themeing-css-sass data-menu-title="~~~ Styling Shiny Apps (with CSS & Sass) ~~~" background="#053660"}
-

`r fontawesome::fa("paintbrush", fill = "#d2e3f3", a11y = "sem")` Styling apps with CSS & Sass

+

{{< fa paintbrush title="a paint brush" >}} Styling apps with CSS & Sass

*`bslib` & `fresh` are great ways to get started on your app customization journeys, but knowing some CSS & Sass can help you really fine-tune the appearance of your apps*

@@ -435,7 +456,9 @@ body <- dashboardBody( ## {#sass-css data-menu-title="Sass & CSS"} -
Using Sass & CSS to style Shiny apps & dashboards
+[Using Sass & CSS to style Shiny apps & dashboards]{.slide-title-smaller} + +

You can write your own stylesheets using [CSS](https://www.w3.org/Style/CSS/Overview.en.html) and [Sass](https://sass-lang.com/) to fully customize your apps, from background colors, to font styles, to size and shape of elements, and more. Unlike `bslib` and `fresh`, these are *languages*, meaning they can be a bit more challenging to get started with (but the payoff it big!).

@@ -445,8 +468,8 @@ body <- dashboardBody( ::: {.column width="45%"}

Pros:

-

`r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` applies to any web page (not just shiny apps)

-

`r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` allows you to customize pretty much any aspect of your app

`r fontawesome::fa("check", fill = "#05859B", a11y = "sem")` can be combined with themes generated using `bslib` or `fresh` to fine-tune your app's styling

+

[{{< fa check title="check mark" >}}]{.teal-text} applies to any web page (not just shiny apps)

+

[{{< fa check title="check mark" >}}]{.teal-text} allows you to customize pretty much any aspect of your app

[{{< fa check title="check mark" >}}]{.teal-text} can be combined with themes generated using `bslib` or `fresh` to fine-tune your app's styling

::: ::: {.column width="4%"} @@ -454,7 +477,7 @@ body <- dashboardBody( ::: {.column width="45%"}

Cons:

-

`r fontawesome::fa("xmark", fill = "#05859B", a11y = "sem")` a steeper learning curve/generally more complex than packages like `bslib` and `fresh`

+

[{{< fa xmark title="an 'x' mark" >}}]{.teal-text} a steeper learning curve/generally more complex than packages like `bslib` and `fresh`

::: :::: @@ -467,7 +490,9 @@ body <- dashboardBody( ## {#css-review data-menu-title="CSS Review/Resources"} -
Resources for a deeper dive
+[Resources for a deeper dive]{.slide-title-smaller} + +

We'll be doing a rather high-level and quick overview of Sass & CSS today, though I encourage you to check out the [Customizing Quarto Websites](https://ucsb-meds.github.io/customizing-quarto-websites/#/title-slide) workshop, which takes a much deeper dive (the information in that workshop is largely applicable here).

@@ -483,7 +508,9 @@ body <- dashboardBody( ## {#what-are-sass-css data-menu-title="What are Sass & CSS"} -
What even is CSS? Sass?
+[What even is CSS? Sass?]{.slide-title-smaller} + +
:::: {.columns} @@ -510,7 +537,9 @@ body <- dashboardBody( ## {#css-rule-based data-menu-title="CSS is rule-based"} -
CSS is a rule-based language
+[CSS is a rule-based language]{.slide-title-smaller} + +

CSS is a rule-based language, meaning that it allows you to define groups of styles that should be applied to particular elements or groups of elements on a web page. For example, *"I want all level one headings (`

` or `tags$h1()` as written in Shiny) in my app to be green with a bit of extra space between each letter"* could be coded as:

@@ -526,9 +555,9 @@ body <- dashboardBody( ::: ::: {.column width="45%"} -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` **Selectors** select the HTML element(s) you want to style (*e.g. level one headings, `

`)*

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` **Declarations** sit inside curly brackets, `{}`, and are made up of [**property**](https://www.w3schools.com/cssref/index.php) and **value** pairs. Each pair specifies the property of the HTML element(s) you're selecting *(e.g. the color property of the element `

`)*, and a value you'd like to assign to that property *(e.g. green)*

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` A property and it's corresponding value are separated by a colon, `:`. Declarations end with a semicolon, `;`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Selectors** select the HTML element(s) you want to style (*e.g. level one headings, `

`)*

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Declarations** sit inside curly brackets, `{}`, and are made up of [**property**](https://www.w3schools.com/cssref/index.php) and **value** pairs. Each pair specifies the property of the HTML element(s) you're selecting *(e.g. the color property of the element `

`)*, and a value you'd like to assign to that property *(e.g. green)*

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} A property and it's corresponding value are separated by a colon, `:`. Declarations end with a semicolon, `;`

::: :::: @@ -539,7 +568,9 @@ body <- dashboardBody( ## {#css-3ways data-menu-title="3 ways to add CSS styling"} -
3 ways to add CSS styling to your apps
+[3 ways to add CSS styling to your apps]{.slide-title-smallest} + +

You can **(1)** add styling directly to `tags`, **(2)** add CSS rules to your `header`, and/or **(3)** build a stylesheet that is applied to your app. **Creating a stylesheet is the preferred approach, and you should do this whenever possible.**

@@ -735,7 +766,9 @@ button { ## {#dashboard-practice-css data-menu-title="Dashboard for practicing CSS"} -
Let's practice on a small dashboard first:
+[Let's practice on a small dashboard first:]{.slide-title-smaller} + +
::: {.panel-tabset} @@ -859,7 +892,9 @@ library(palmerpenguins) ## {#inspect-webpages data-menu-title="Inspecting"} -
What if I want to style an element, but don't know how to target it?
+[What if I want to style an element, but don't know how to target it?]{.slide-title-smaller} + +

Oftentimes, you'll have to do a bit of exploration to determine how to target specific elements for styling. In either your app viewer or web browser, right click on an element of interest and choose **Inspect** (or **Inspect Element**) to open up the underlying HTML and CSS. You can make temporary edits to your app (e.g. adding a background color, changing font sizes, etc.) to see how they look first, then copy the appropriate CSS rule into your stylesheet to apply to your app.

@@ -869,7 +904,9 @@ library(palmerpenguins) ## {#inspect-dashboard data-menu-title="Inspect dashboard box"} -
Inspect & identify how to update box styling
+[Inspect & identify how to update box styling]{.slide-title-smallest} + +

For example, let's say I want to change the color of this shinydashboard's boxes and the color of the box text.

@@ -883,7 +920,9 @@ library(palmerpenguins) ## {#write-box-css data-menu-title="Write CSS for box styling"} -
Finally, apply box styling to our dashboard
+[Finally, apply box styling to our dashboard]{.slide-title-smaller} + +

Now that we know that we can use the `box-body` class to customize the appearance of our boxes, let's create a stylesheet and add our new rules. The `shinydashboard` framework already provides the "standard" styling for boxes, contained in the `box-body` class. Anything we specify in our own stylesheet will build upon or modify existing styling.

@@ -1003,7 +1042,9 @@ dashboardPage(header, sidebar, body) ## {#what-about-sass data-menu-title="What about Sass?"} -
What about Sass?
+[What about Sass?]{.slide-title-smaller} + +

Okay, we wrote and applied some CSS styling to our apps, but what about Sass? You don't *need* to write any Sass at all, however, it provides a number of benefits, including helping to reduce repetition.

@@ -1017,7 +1058,9 @@ dashboardPage(header, sidebar, body) ## {#sass-vars data-menu-title="Sass variables"} -
We can define and reference Sass variables throughout our stylesheet
+[We can define and reference Sass variables throughout our stylesheet]{.slide-title-smaller} + +

Sass allows us to define variables (in the form `$var-name: value;`) for our colors to reference instead of writing out their HEX codes each time:

@@ -1050,7 +1093,9 @@ h1 { ## {#sass-workflow data-menu-title="Sass workflow"} -
Sass for Shiny workflow
+[Sass for Shiny workflow]{.slide-title-smaller} + +

To style apps using both Sass *and* CSS, you'll follow this general workflow:

@@ -1066,7 +1111,9 @@ h1 { ## {#write-sass data-menu-title="Write Sass"} -
Let's build our Sass file
+[Let's build our Sass file]{.slide-title-smaller} + +

We'll practice on our `two-file-app` -- first, remove any reference to your `bslib` or `fresh` themes that we practiced applying earlier so that we're starting off with just the default shiny styling.

@@ -1135,7 +1182,9 @@ a { ## {#convert-sass data-menu-title="Convert Sass to CSS"} -
Then, compile Sass to CSS
+[Then, compile Sass to CSS]{.slide-title-smaller} + +

Because web browsers can only interpret CSS (not Sass), we need to compile our Sass to CSS. To do this, we can use the `sass()` function from the [`{sass}` package](https://rstudio.github.io/sass/index.html). We can do this in `global.R`. The `sass()` function requires two arguments: a sass file `input` and a file path + named `.css` file `output`.

@@ -1164,7 +1213,6 @@ a {
Our app, with our sass and css styling applied. The navbar is yellow, body is green, level 4 headings are blue, text is white, hyperlinks are orange, and header and body text font styles have been changed from the default.
::: - :::: ## `global.R` From 3d83de98b6090538ce763a2ce08cc49cbe61e57a Mon Sep 17 00:00:00 2001 From: samanthacsik Date: Fri, 6 Oct 2023 16:09:49 -0700 Subject: [PATCH 4/8] finished updating title & fa syntax; more to come --- index.html | 316 +++++++----------- sections/14-functions.qmd | 62 ++-- sections/15-modules.qmd | 86 +++-- sections/16-shiny_alternatives.qmd | 20 +- ...17-additional-resources-final-thoughts.qmd | 48 +-- 5 files changed, 254 insertions(+), 278 deletions(-) diff --git a/index.html b/index.html index 519592c..f079661 100644 --- a/index.html +++ b/index.html @@ -1811,7 +1811,7 @@
-
+
@@ -2815,7 +2815,7 @@
-
+
@@ -3101,7 +3101,7 @@
-
+
@@ -4046,7 +4046,7 @@
-
+
@@ -4380,8 +4380,8 @@
-
- +
+
@@ -4430,8 +4430,8 @@
-
- +
+
@@ -5168,7 +5168,7 @@
-
+
@@ -8262,67 +8262,55 @@

-Code - Writing functions + Writing functions

Functions have many benefits and can improve your code base, particularly as your app grows in complexity

-
-Book Open - Learning Objectives - Functions -
+

Learning Objectives - Functions

+

By the end of this section, you should:

-Angle Right - understand the benefits of turning UI elements and server logic into functions + understand the benefits of turning UI elements and server logic into functions

-Angle Right - know where to write/save your functions + know where to write/save your functions

-Angle Right - successfully turn a repeated input into a function + successfully turn a repeated input into a function

-Angle Right - successfully turn a piece of server logic into a function + successfully turn a piece of server logic into a function

-
-Why write functions -
+

Why write functions

+

Functions are useful for a wide variety of reasons. Most notably:

-Angle Right - reducing redundancy + reducing redundancy

-Angle Right - reducing complexity + reducing complexity

-Angle Right - increasing code comprehension + increasing code comprehension

-Angle Right - increasing testability + increasing testability

@@ -8339,9 +8327,8 @@

-
-Create a small app for function practice -
+

Create a small app for function practice

+

Create a new subdirectory called functions-app/ and add your ui.R, server.R, and global.R files with the following code. Run your app to see how it functions.

@@ -8468,9 +8455,8 @@

-
-Identify code duplication in ui.R -
+

Identify code duplication in ui.R

+

Let’s first focus on the UI – where do we have nearly identically duplicated code?

@@ -8520,9 +8506,8 @@

-
-Write a function for adding a pickerInput to select for penguin species -
+

Write a function for adding a pickerInput to select for penguin species

+

This app includes two pickerInputs, both of which allow users to select which penguin species to display data for. The only difference between both pickerInputs is the inputId. Let’s write a function for our penguin species pickerInput that we can use in place of these two, rather long, chunks of code.

@@ -8569,9 +8554,8 @@

-
-Apply your function in ui.R -
+

Apply your function in ui.R

+

Finally, replace your original UI code for building both pickerInputs with our penguinSpp_pickerInput() function, save, and run your app. It should look exactly the same as before!

@@ -8611,16 +8595,14 @@ ) # END fluidPage

-
-We reduced code redundancy and increased readability! -
+

We reduced code redundancy and increased readability!

+

By turning our pickerInput code into a function, we not only reduced ten lines of UI code into two, but we also made our UI code a bit easier to read – our function, penguinSpp_pickerInput() tells a reader/collaborator/future you exactly what that line of code is meant to do, which is create a pickerInput that allows users to select penguin species. Even without code comments or additional context, one may deduce what that line of code does.

-
-Turn reactives & rendered outputs into functions -
+

Turn reactives & rendered outputs into functions

+

Next, let’s see where we can streamline our server code using functions. We have two discrete sections of code – (1) a reactive data frame and scatterplot output and (2) a reactive data frame and histogram output.

@@ -8673,9 +8655,8 @@ } # END server

-
-Create a function to builds our scatterplot -
+

Create a function to builds our scatterplot

+

First, create a new file in ~/function-app/R and name it build_penguin_histogram.R (or a name that is succinct/clear – I’m going to name my function similarly).

@@ -8714,9 +8695,8 @@ }

-
-Now use your function inside the server -
+

Now use your function inside the server

+

Remember, the output of build_penguin_scatterplot() is renderPlot(), which is used to build our reactive scatterplot. Following our rules for creating reactivity, we need to save our function’s output to output$penguin_scatterplot. In doing so, we reduced 23 lines of code to 1 inside our server function.

@@ -8750,9 +8730,8 @@ } # END server

-
-Build a function to create our histogram -
+

Build a function to create our histogram

+

We can repeat a similar process to create a function for building our histogram:

@@ -8807,37 +8786,31 @@

-Cubes - Writing modules + Writing modules

We can take our code abstraction a step further and bundle repeated UI & server components together into modules, streamlining our code and increasing efficiency.

-
-Book Open - Learning Objectives - Modules -
+

Learning Objectives - Modules

+

By the end of this section, you should have an intro-level understanding of:

-Angle Right - what is a shiny module and when it might make sense to build one + what is a shiny module and when it might make sense to build one

-Angle Right - the structure of a shiny module + the structure of a shiny module

-Angle Right - how to use a module + how to use a module

@@ -8852,9 +8825,8 @@

-
-The utility of modules is best demonstrated by taking a look at an example app -
+

The utility of modules is best demonstrated by taking a look at an example app

+

This app, developed by Garrett Grolemund & Joe Cheng’s as part of their Modules lesson, taught at the 2016 Shiny Developer Conference, is a prime candidate for modularization.

@@ -8865,9 +8837,8 @@ The gapminder app, which has 6 tabs, one for each global region. A bubble plot takes up the width of the ap and displays Life Expectancy by GDP per capita, where each bubble represents a country and the size of bubbles represent the population size of that country. An automated sliderInput advances through the years (1952-2007), and the plot updates accordingly.

-
-The code for this app isn’t particularly complex, but it’s repetitive and long -
+

The code for this app isn’t particularly complex, but it’s repetitive and long

+
# app.R
 
@@ -9200,8 +9171,7 @@
 Taking a closer look at the gapminder app code, we’ll see that the following sections of code are repeated for each region (6 times total; only code sections for “all” regions shown below):
 

-Angle Right -tabPanel (UI) + tabPanel (UI)

# "All" tabPanel (repeated 5 more times for each subregion) 
@@ -9212,8 +9182,7 @@
                      animate = animationOptions(interval = 500)))

-Angle Right - reactive data frame (server) + reactive data frame (server)

# "All" reactive data frame (repeated 5 more times for each subregion)
@@ -9222,8 +9191,7 @@
 })

-Angle Right - reactive data frame (server) + reactive data frame (server)

# "All" reactive data frame (repeated 5 more times for each subregion)
@@ -9232,8 +9200,7 @@
 })

-Angle Right - calculating date ranges (server) + calculating date ranges (server)

# "All" date range (repeated 5 more times for each subregion)
@@ -9241,12 +9208,10 @@
 yrange_all <- range(all_data$lifeExp)

-
-Repeated code sections (cont.) -
+

Repeated code sections (cont.)

+

-Angle Right -renderPlot({}) (server) + renderPlot({}) (server)

# "All" plot (repeated 5 more times for each subregion)
@@ -9282,29 +9247,24 @@
   })

-
-Enter Shiny modules -
+

Enter Shiny modules

+

-Angle Right -A shiny module is a piece of a shiny app – it can’t be run directly, but instead is included as part of a larger app. While functions work well for code that that is either completely on the client (UI) side or completely on the server side, modules can be written for code that spans both. + A shiny module is a piece of a shiny app – it can’t be run directly, but instead is included as part of a larger app. While functions work well for code that that is either completely on the client (UI) side or completely on the server side, modules can be written for code that spans both.

-Angle Right -Modules can represent inputs, outputs, or both (we’ll be building a module that represents both). Motivation for building modules can range from enabling reuse of code (once created, modules can be reused within the same app or even across different apps), to breaking up a large, complex app into smaller, separate components. + Modules can represent inputs, outputs, or both (we’ll be building a module that represents both). Motivation for building modules can range from enabling reuse of code (once created, modules can be reused within the same app or even across different apps), to breaking up a large, complex app into smaller, separate components.

-Angle Right -Modules help to solve a namespacing problem – recall that all Ids (e.g. inputIds) must be unique across your app. Namespacing is a system for organizing objects with identical names (similar to namespacing functions from particular packages using the syntax package::function() e.g. plyr::arrange() vs dplyr::arrange()). + Modules help to solve a namespacing problem – recall that all Ids (e.g. inputIds) must be unique across your app. Namespacing is a system for organizing objects with identical names (similar to namespacing functions from particular packages using the syntax package::function() e.g. plyr::arrange() vs dplyr::arrange()).

-
-What do modules look like? -
+

What do modules look like?

+

Modules are a coding pattern, organized into two functions: one that creates the UI elements and one that loads the server logic. They can look a bit different, depending on your module, but they generally follow this pattern:

@@ -9335,9 +9295,8 @@ }

-
-Where should I define/save my module? -
+

Where should I define/save my module?

+

Part of the appeal of creating modules is breaking your long app.R (or ui.R & server.R) scripts into smaller pieces. Creating a separate R script to house a given module (both the UI and Server function components) is typically the best course of action (a good naming convention is giving it a descriptive name with the suffix “Module” e.g. gapModule.R). There are a variety of places you can write and/or save your modularized code to, but I recommend one of the following two options (at least while we’re just getting started on our shiny modules journey):

@@ -9358,9 +9317,8 @@

-
-Breaking down the UI function: -
+

Breaking down the UI function:

+

The UI part of a module needs to do two things: (1) return a shiny element (e.g. an input & output), and (2) assign module elements to a unique namespace using NS(). NS() provides an easy way to help with namespacing within your module, ensuring that each time your module is called, a unique id is assigned.

@@ -9390,9 +9348,8 @@ Wrapping our input and output Ids in ns() will create unique Ids each time our module is called, preventing things from overwriting one one another. For example, if we call gapModuleUI(id = "myFirstModuleCall"), our outputId will be set to myFirstModuleCall-plot and our inputId will be set to myFirstModuleCall-year. Calling our module a second time (e.g. gapModuleUI(id = "mySecondModuleCall")) will generate two new unique Ids (e.g. mySecondModuleCall-plot & mySecondModuleCall-year).

-
-Breaking down the Server function: -
+

Breaking down the Server function:

+

The server part of a module looks very similar to a normal (i.e. non-modular) Shiny app server function. Begin by defining your module server function name and provide it with the first required parameter, id, along with any other necessary parameters (we also need to pass our particular function a data parameter to differentiate between data subsets (e.g. All vs. Africa vs. Asia etc.)).

@@ -9453,9 +9410,8 @@ } # END server function

-
-Now let’s use our module: -
+

Now let’s use our module:

+

First, since we’ve saved our gapModule.R file to our app’s directory, we’ll need to source it at the top of our app.R file:

@@ -9476,9 +9432,8 @@ oceania_data <- filter(gapminder, continent == "Oceania")

-
-Now let’s use our module: -
+

Now let’s use our module:

+

Next, let’s use our module’s UI function. We’ll need to define/name each of our tabPanels (one for each of our six regions), but rather than building a plotOutput and sliderInput inside each tabPanel (each with unique Ids), we can instead call our gapModuleUI() function, and ensure that each time we call it to supply a unique character string for our id parameter.

@@ -9519,9 +9474,8 @@ ) # END fluidPage

-
-Now let’s use our module: -
+

Now let’s use our module:

+

Finally, we can re-write our server. Rather than writing out the lengthy code required to make each plot six times over, we can instead call our gapModuleServer() function, supplying each call with ids that match those used in gapModuleUI(), along with the appropriate data subset. Now, run your app! If written correctly, your app should run exactly the same as your initial version.

@@ -9577,31 +9531,25 @@ shinyApp(ui = ui, server = server)

-
-Additional module resources -
+

Additional module resources

+

We’ve barely scratched the surface of modules. Continue on with some of the following resources:

-Angle Right -Modularizing Shiny App Code & associated materials, by Garrett Grolemund & Joe Cheng at the 2016 Shiny Developer’s Conference – NOTE: This 2016 talk is an excellent introduction to modules and is definitely worth a watch, especially because we just explored the exact example demoed by G. Grolemund. Please note, however, that Shiny modules were overhauled in 2020 with the introduction of moduleServer(). The code on the previous slides has been updated to reflect those changes, and therefore differs slightly from what’s taught in this video. + Modularizing Shiny App Code & associated materials, by Garrett Grolemund & Joe Cheng at the 2016 Shiny Developer’s Conference – NOTE: This 2016 talk is an excellent introduction to modules and is definitely worth a watch, especially because we just explored the exact example demoed by G. Grolemund. Please note, however, that Shiny modules were overhauled in 2020 with the introduction of moduleServer(). The code on the previous slides has been updated to reflect those changes, and therefore differs slightly from what’s taught in this video.

-Angle Right -Mastering Shiny, Ch. 19 - Shiny Modules, by Hadley Wickham + Mastering Shiny, Ch. 19 - Shiny Modules, by Hadley Wickham

-Angle Right -Modularizing Shiny app code, by Winston Chang + Modularizing Shiny app code, by Winston Chang

-Angle Right -Effective use of Shiny modules in application development, by Eric Nantz at rstudio::conf(2019) + Effective use of Shiny modules in application development, by Eric Nantz at rstudio::conf(2019)

-Angle Right -A beginners guide to Shiny modules, by Emily Riederer +A beginners guide to Shiny modules, by Emily Riederer

Part 7: Wrap-up

@@ -9618,100 +9566,83 @@

-Arrows Left Right - Consider if you need Shiny at all + Consider if you need Shiny at all

While a well-developed shiny app is fun and appealing, it’s worth having a conversation about whether shiny is truly necessary, or if taking an alternative approach to sharing your data might be better.

-
-Additional data presentation frameworks -
+

Additional data presentation frameworks

+

Shiny is awesome, but depending on your goals, vision, and end users, you may not need the full functionality that shiny provides. You can potentially save yourself (and your clients) the stress of deploying and maintaining apps by first considering other options:

-Angle Right - Widgets aren’t only for Shiny! Embed interactive htmlwidgets into your R Markdown documents that range from geo-spatial mapping with leaflet to generating network graph diagrams with DiagrammeR. Check out the htmlwidgets for R - gallery for many more options. + Widgets aren’t only for Shiny! Embed interactive htmlwidgets into your R Markdown documents that range from geo-spatial mapping with leaflet to generating network graph diagrams with DiagrammeR. Check out the htmlwidgets for R - gallery for many more options.

-Angle Right - Compose multiple widgets into a dashboard using flexdashboard. Based in R Markdown, this framework allows you to produce dynamic dashboards using tools you are already familiar with. Find example projects and their source code here. + Compose multiple widgets into a dashboard using flexdashboard. Based in R Markdown, this framework allows you to produce dynamic dashboards using tools you are already familiar with. Find example projects and their source code here.

-Angle Right - Embed reactive shiny components (e.g. inputs & outputs) in Quarto documents. By using some fun new code chunk options, you can instruct Quarto to spin up it’s own self-contained shiny server to run your reactives. Read the Quarto documentation to learn more and check out some teaching examples here. + Embed reactive shiny components (e.g. inputs & outputs) in Quarto documents. By using some fun new code chunk options, you can instruct Quarto to spin up it’s own self-contained shiny server to run your reactives. Read the Quarto documentation to learn more and check out some teaching examples here.

Logos for htmlwidgets, flexdashboard, and quarto.

-
-Example flexdashboards built by some familiar folks Face Smile - -
+

Example flexdashboards built by some familiar folks

+

-Sun -Energy Siting Dashboard (source code), developed by MEDS 2022 alumni Paloma Cartwright, Joe DeCesaro, Daniel Kerstan & Desik Somasundaram as part of their MEDS capstone project – explore predictions of the most suitable locations for large, utility-scale wind and solar projects across the United States + Energy Siting Dashboard (source code), developed by MEDS 2022 alumni Paloma Cartwright, Joe DeCesaro, Daniel Kerstan & Desik Somasundaram as part of their MEDS capstone project – explore predictions of the most suitable locations for large, utility-scale wind and solar projects across the United States

-Handshake -@ADELPHIRESEARCH TWEETS Dashboard (source code), developed by R-Lady Shannon Pileggi as part of a job interview – read about this clever approach to showcasing your skills to a potential employer in Shannon’s blogpost, A job interview presentation inspired by the R community. + @ADELPHIRESEARCH TWEETS Dashboard (source code), developed by R-Lady Shannon Pileggi as part of a job interview – read about this clever approach to showcasing your skills to a potential employer in Shannon’s blogpost, A job interview presentation inspired by the R community.

-Lightbulb - Final Thoughts & Additional Resources + Final Thoughts & Additional Resources

We’ve covered a lot in this workshop, and we’ve only just begun to scratch the surface – we’ll end with some final thoughts/words of wisdom, along with some resources that are worth returning to as you begin your deep dive into shiny app development.

-
-Some takeaway messages that are worth keeping in mind -
+

Some takeaway messages that are worth keeping in mind

+

-Chart Column - Oftentimes, the most time consuming part of building a shiny app is deciding on how to present the data visually – make your data visualizations first, outside of shiny, refine, decide which variables you think are important enough to make reactive, etc. THEN, build them into your shiny application. + Oftentimes, the most time consuming part of building a shiny app is deciding on how to present the data visually – make your data visualizations first, outside of shiny, refine, decide which variables you think are important enough to make reactive, etc. THEN, build them into your shiny application.

-Table - Get your data in the most wrangled form possible before loading it into your app to avoid unnecessary slowdowns. + Get your data in the most wrangled form possible before loading it into your app to avoid unnecessary slowdowns.

-Code - Code expands quickly – stay organized! Create a repository map (see an example in this README), so you and your collaborators know where files live and what they do. Use rainbow parentheses, add extra space between sections of code, and include clear code comments to denote the start and end of parentheses. This will help save headaches later on. + Code expands quickly – stay organized! Create a repository map (see an example in this README), so you and your collaborators know where files live and what they do. Use rainbow parentheses, add extra space between sections of code, and include clear code comments to denote the start and end of parentheses. This will help save headaches later on.

-Users - Keep in mind the considerations for good UX/UI design. You’re building an app for the user first and foremost – be sure to assess often if your app is going to meet their needs. + Keep in mind the considerations for good UX/UI design. You’re building an app for the user first and foremost – be sure to assess often if your app is going to meet their needs.

-Question - Before taking the plunge, consider if you really need shiny at all – maintaining apps can be challenging. What other options might you have for sharing your data with end users? + Before taking the plunge, consider if you really need shiny at all – maintaining apps can be challenging. What other options might you have for sharing your data with end users?

-
-Great Shiny resources -
+

Great Shiny resources

+

A quick Google search will yield lots of online resources, forum discussions, video tutorials, etc. for building Shiny applications. Many are linked throughout these slides, but here’s an attempt at putting some of those that I referenced most often all in one spot (along with some that we didn’t have time to cover). Be sure to poke around online yourself, and let me know if you come across any that you find particularly useful so that I can add them here!

@@ -9719,65 +9650,52 @@ Books

-Angle Right -Mastering Shiny, by Hadley Wickham + Mastering Shiny, by Hadley Wickham

-Angle Right -Engineering Production-Grade Shiny Apps, by Colin Fay, Sébastien Rochette, Vincent Guyader & Cervan Girard. + Engineering Production-Grade Shiny Apps, by Colin Fay, Sébastien Rochette, Vincent Guyader & Cervan Girard.

-Angle Right -Building Web Apps with R, by Lisa DeBruine – an short course (paired with an online book with instructions, resources, etc.) + Building Web Apps with R, by Lisa DeBruine – an short course (paired with an online book with instructions, resources, etc.)

Tutorials

-Angle Right -Building Shiny apps - an interactive tutorial, by Dean Attali + Building Shiny apps - an interactive tutorial, by Dean Attali

-Angle Right -Speeding Up R Shiny, by Jakub Sobolewski in R bloggers – details methods on improving app performance +Speeding Up R Shiny, by Jakub Sobolewski in R bloggers – details methods on improving app performance

-Angle Right - Allison Horst’s The Basics of Building Shiny Apps in R workshop + Allison Horst’s The Basics of Building Shiny Apps in R workshop

Tools

-Angle Right -R Shiny & FontAwesome Icons – How to Use Them in Your Dashboards, by Dario Radečić in R Bloggers – instructions for setting up your fontawesome kit + R Shiny & FontAwesome Icons – How to Use Them in Your Dashboards, by Dario Radečić in R Bloggers – instructions for setting up your fontawesome kit

-Angle Right -Shiny UI Editor and Nick Strayer’s rstudio::conf(2022) talk introducing it – a visual tool for building the UI portion of a Shiny application that generates clean and human-readable code (currently in Alpha, as of January 2023) + Shiny UI Editor and Nick Strayer’s rstudio::conf(2022) talk introducing it – a visual tool for building the UI portion of a Shiny application that generates clean and human-readable code (currently in Alpha, as of January 2023)

-Angle Right - The {golem} package provides an opinionated framework for building production-grade shiny applications and is a part of a growing ecosystem of packages called the {golemverse}. There are lots of accompanying learning materials, including the book, Engineering Production Grade Shiny Apps, by Colin Fay, Sébastien Rochette, Vincent Guyader, and Cervan Girard. + The {golem} package provides an opinionated framework for building production-grade shiny applications and is a part of a growing ecosystem of packages called the {golemverse}. There are lots of accompanying learning materials, including the book, Engineering Production Grade Shiny Apps, by Colin Fay, Sébastien Rochette, Vincent Guyader, and Cervan Girard.

-
-And don’t forget about Posit’s own excellent resources -
+

And don’t forget about Posit’s own excellent resources

+

Posit/RStudio’s great instructional resources, examples, and help documentation:

-Angle Right - A thoughtfully organized Articles page + A thoughtfully organized Articles page

-Angle Right - The Shiny User Showcase, a collection of Shiny apps and their source code developed by the Shiny developer community – many of these featured apps are winners or honorable mentions of the annual Shiny contest! + The Shiny User Showcase, a collection of Shiny apps and their source code developed by the Shiny developer community – many of these featured apps are winners or honorable mentions of the annual Shiny contest!

-Angle Right -Shiny Demos, a series of apps created by the Shiny developers to highlight specific features of the shiny package – these are excellent resources to turn to when you are learning how to implement a new type of widget, working on the layout of your app, and more. + Shiny Demos, a series of apps created by the Shiny developers to highlight specific features of the shiny package – these are excellent resources to turn to when you are learning how to implement a new type of widget, working on the layout of your app, and more.

diff --git a/sections/14-functions.qmd b/sections/14-functions.qmd index ccd3531..e96a897 100644 --- a/sections/14-functions.qmd +++ b/sections/14-functions.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#functions data-menu-title="~~~ Functions ~~~" background="#053660"}
-

`r fontawesome::fa("code", fill = "#d2e3f3", a11y = "sem")` Writing functions

+

{{< fa code title="the symbol for code, " >}} Writing functions

*Functions have many benefits and can improve your code base, particularly as your app grows in complexity*

@@ -13,39 +13,43 @@ format: revealjs ## {#LO-functions data-menu-title="Learning Objectives - Functions"} -
`r fontawesome::fa("book-open", fill = "#05859B", a11y = "sem")` Learning Objectives - Functions
+[{{< fa book-open title="an open book" >}} Learning Objectives - Functions]{.slide-title} + +

By the end of this section, you should:

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` understand the benefits of turning UI elements and server logic into functions

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand the benefits of turning UI elements and server logic into functions

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` know where to write/save your functions

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know where to write/save your functions

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` successfully turn a repeated input into a function

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} successfully turn a repeated input into a function

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` successfully turn a piece of server logic into a function

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} successfully turn a piece of server logic into a function

--- ## {#why-functions data-menu-title="Why write functions"} -
Why write functions
+[Why write functions]{.slide-title} + +

Functions are useful for a wide variety of reasons. Most notably:

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` reducing redundancy

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` reducing complexity

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` increasing code comprehension

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` increasing testability

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reducing redundancy

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reducing complexity

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} increasing code comprehension

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} increasing testability

. . . @@ -60,7 +64,9 @@ format: revealjs ## {#app-for-practicing-fxns data-menu-title="Example App for Fxn Practice"} -
Create a small app for function practice
+[Create a small app for function practice]{.slide-title-smaller} + +

Create a new subdirectory called `functions-app/` and add your `ui.R`, `server.R`, and `global.R` files with the following code. Run your app to see how it functions.

@@ -190,7 +196,9 @@ library(tidyverse) ## {#id-ui-duplication data-menu-title="Identify code duplication in UI"} -
Identify code duplication in `ui.R`
+[Identify code duplication in `ui.R`]{.slide-title-smaller} + +

Let's first focus on the UI -- where do we have nearly identically duplicated code?

@@ -246,7 +254,9 @@ ui <- fluidPage( ## {#write-ui-function data-menu-title="Write a UI function"} -
Write a function for adding a `pickerInput` to select for penguin species
+[Write a function for adding a `pickerInput` to select for penguin species]{.slide-title-smaller} + +

This app includes two `pickerInputs`, both of which allow users to select which penguin species to display data for. The only difference between both `pickerInput`s is the `inputId`. Let's write a function for our **penguin species pickerInput** that we can use in place of these two, rather long, chunks of code.

@@ -294,7 +304,9 @@ source("R/penguinSpp_pickerInput.R") # will source automatically with Shiny v1.5 ## {#apply-ui-fxn data-menu-title="Apply UI function"} -
Apply your function in `ui.R`
+[Apply your function in `ui.R`]{.slide-title-smaller} + +

Finally, replace your original UI code for building both `pickerInput`s with our `penguinSpp_pickerInput()` function, save, and run your app. It should look exactly the same as before!

@@ -342,7 +354,9 @@ ui <- fluidPage( ## {#ui-fxn-benefits data-menu-title="Benefits of our UI function"} -
We reduced code redundancy and increased readability!
+[We reduced code redundancy and increased readability!]{.slide-title} + +

By turning our `pickerInput` code into a function, **we not only reduced *ten* lines of UI code into *two*, but we also made our UI code a bit easier to read** -- our function, `penguinSpp_pickerInput()` tells a reader/collaborator/future you *exactly* what that line of code is meant to do, which is create a `pickerInput` that allows users to select penguin species. Even without code comments or additional context, one may deduce what that line of code does.

@@ -350,7 +364,9 @@ ui <- fluidPage( ## {#server-fxns data-menu-title="Server functions"} -
Turn reactives & rendered outputs into functions
+[Turn reactives & rendered outputs into functions]{.slide-title-smaller} + +

Next, let's see where we can streamline our server code using functions. We have two discrete sections of code -- **(1)** a reactive data frame and scatterplot output and **(2)** a reactive data frame and histogram output.

@@ -410,7 +426,9 @@ server <- function(input, output) { ## {#build-penguin-scatterplot-fxn data-menu-title="build_penguin_scatterplot()"} -
Create a function to builds our scatterplot
+[Create a function to builds our scatterplot]{.slide-title-smaller} + +

First, create a new file in `~/function-app/R` and name it `build_penguin_histogram.R` (or a name that is succinct/clear -- I'm going to name my function similarly).

@@ -452,7 +470,9 @@ build_penguin_histogram <- function(input) { ## {#use-build-penguin-scatterplot-fxn data-menu-title="Use build_penguin_scatterplot()"} -
Now use your function inside the server
+[Now use your function inside the server]{.slide-title-smaller} + +

**Remember**, the output of `build_penguin_scatterplot()` is `renderPlot()`, which is used to build our reactive scatterplot. Following our rules for creating reactivity, we need to save our function's output to `output$penguin_scatterplot`. In doing so, we reduced 23 lines of code to 1 inside our server function.

```{r} @@ -493,7 +513,9 @@ server <- function(input, output) { ## {#create-build-penguin-histogram data-menu-title="Create & use build_penguin_histogram()"} -
Build a function to create our histogram
+[Build a function to create our histogram]{.slide-title-smaller} + +

We can repeat a similar process to create a function for building our histogram:

diff --git a/sections/15-modules.qmd b/sections/15-modules.qmd index f52bfe1..1d011db 100644 --- a/sections/15-modules.qmd +++ b/sections/15-modules.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#modules data-menu-title="~~~ Shiny Modules ~~~" background="#053660"}
-

`r fontawesome::fa("cubes", fill = "#d2e3f3", a11y = "sem")` Writing modules

+

{{< fa cubes title="three cubes stacked on top of one another in a pyramid shape" >}} Writing modules

*We can take our code abstraction a step further and bundle repeated UI & server components together into **modules**, streamlining our code and increasing efficiency.*

@@ -13,21 +13,23 @@ format: revealjs ## {#LO-modules data-menu-title="Learning Objectives - Modules"} -
`r fontawesome::fa("book-open", fill = "#05859B", a11y = "sem")` Learning Objectives - Modules
+[{{< fa book-open title="an open book" >}} Learning Objectives - Modules]{.slide-title} + +

By the end of this section, you should have an intro-level understanding of:

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` what is a shiny module and when it might make sense to build one

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} what is a shiny module and when it might make sense to build one

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` the structure of a shiny module

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} the structure of a shiny module

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` how to use a module

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} how to use a module

. . . @@ -41,7 +43,9 @@ format: revealjs ## {#gapminder-app data-menu-title="Gapminder app"} -
The utility of modules is best demonstrated by taking a look at an example app
+[The utility of modules is best demonstrated by taking a look at an example app]{.slide-title-smaller} + +

This app, developed by [Garrett Grolemund](https://github.com/garrettgman) & [Joe Cheng's](https://github.com/jcheng5) as part of their [Modules](https://www.rstudio.com/resources/shiny-dev-con/modules/?_ga=2.163786815.1475817156.1670220567-309155161.1666221806) lesson, taught at the 2016 Shiny Developer Conference, is a prime candidate for modularization.

@@ -53,7 +57,9 @@ format: revealjs ## {#gapminder-code data-menu-title="Gapminder code"} -
The code for this app isn't particularly complex, but it's repetitive and long
+[The code for this app isn't particularly complex, but it's repetitive and long]{.slide-title-smaller} + +
```{r} #| eval: false @@ -390,7 +396,7 @@ shinyApp(ui = ui, server = server)

Taking a closer look at the gapminder app code, we'll see that the following sections of code are repeated for each region (6 times total; only code sections for "all" regions shown below):

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `tabPanel` (**UI**)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `tabPanel` (**UI**)

```{r} #| eval: false #| echo: true @@ -402,7 +408,7 @@ tabPanel(title = "All", animate = animationOptions(interval = 500))) ``` -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` reactive data frame (**server**)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reactive data frame (**server**)

```{r} #| eval: false #| echo: true @@ -412,7 +418,7 @@ ydata_all <- reactive({ }) ``` -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` reactive data frame (**server**)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reactive data frame (**server**)

```{r} #| eval: false #| echo: true @@ -422,7 +428,7 @@ ydata_all <- reactive({ }) ``` -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` calculating date ranges (**server**)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} calculating date ranges (**server**)

```{r} #| eval: false #| echo: true @@ -435,9 +441,11 @@ yrange_all <- range(all_data$lifeExp) ## {#repeated-code-cont data-menu-title="Repeated gapminder code (cont.)"} -
Repeated code sections (cont.)
+[Repeated code sections (cont.)]{.slide-title-smaller} + +
-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` `renderPlot({})` (**server**)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `renderPlot({})` (**server**)

```{r} #| eval: false @@ -480,23 +488,27 @@ output$all_plot <- renderPlot({ ## {#enter-modules data-menu-title="Enter shiny modules"} -
Enter Shiny modules
+[Enter Shiny modules]{.slide-title} -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` **A shiny module is a piece of a shiny app** -- it can't be run directly, but instead is included as part of a larger app. While functions work well for code that that is either completely on the client (UI) side or completely on the server side, modules can be written for code that spans both.

+
+ +

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **A shiny module is a piece of a shiny app** -- it can't be run directly, but instead is included as part of a larger app. While functions work well for code that that is either completely on the client (UI) side or completely on the server side, modules can be written for code that spans both.

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` **Modules can represent inputs, outputs, or both** (*we'll be building a module that represents both*). Motivation for building modules can range from enabling reuse of code (once created, modules can be reused within the same app or even across different apps), to breaking up a large, complex app into smaller, separate components.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Modules can represent inputs, outputs, or both** (*we'll be building a module that represents both*). Motivation for building modules can range from enabling reuse of code (once created, modules can be reused within the same app or even across different apps), to breaking up a large, complex app into smaller, separate components.

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` **Modules help to solve a *namespacing* problem** -- recall that all `Id`s (e.g. `inputId`s) *must* be unique across your app. **Namespacing** is a system for organizing objects with identical names (similar to namespacing functions from particular packages using the syntax `package::function()` e.g. `plyr::arrange()` vs `dplyr::arrange()`).

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Modules help to solve a *namespacing* problem** -- recall that all `Id`s (e.g. `inputId`s) *must* be unique across your app. **Namespacing** is a system for organizing objects with identical names (similar to namespacing functions from particular packages using the syntax `package::function()` e.g. `plyr::arrange()` vs `dplyr::arrange()`).

--- ## {#modules-structure data-menu-title="Structure of modules"} -
What do modules look like?
+[What do modules look like?]{.slide-title-smaller} + +

Modules are a coding pattern, organized into **two** functions: one that creates the **UI elements** and one that **loads the server logic**. They can look a bit different, depending on your module, but they generally follow this pattern:

@@ -533,7 +545,9 @@ myModuleServer <- function(id, ...) { # where `...` includes any number of addit ## {#where-to-define-modules data-menu-title="Where to define modules"} -
Where should I define/save my module?
+[Where should I define/save my module?]{.slide-title-smaller} + +

Part of the appeal of creating modules is breaking your long `app.R` (or `ui.R` & `server.R`) scripts into smaller pieces. **Creating a separate R script to house a given module (both the UI *and* Server function components) is typically the best course of action (a good naming convention is giving it a descriptive name with the suffix "Module" e.g. `gapModule.R`).** There are a variety of places you can write and/or save your modularized code to, but I recommend one of the following two options (at least while we're just getting started on our shiny modules journey):

@@ -553,7 +567,9 @@ myModuleServer <- function(id, ...) { # where `...` includes any number of addit ## {#ui-function data-menu-title="UI function"} -
Breaking down the UI function:
+[Breaking down the UI function:]{.slide-title-smallest} + +

The UI part of a module needs to do **two** things: **(1)** return a shiny element (e.g. an input & output), and **(2)** assign module elements to a unique namespace using `NS()`. `NS()` provides an easy way to help with namespacing within your module, ensuring that each time your module is called, a unique `id` is assigned.

@@ -587,7 +603,9 @@ gapModuleUI <- function(id) { # step 2: the first argument to a UI function shou ## {#server-function data-menu-title="Server function"} -
Breaking down the Server function:
+[Breaking down the Server function:]{.slide-title-smallest} + +

The server part of a module looks very similar to a normal (i.e. non-modular) Shiny app server function. Begin by defining your module server function name and provide it with the first *required* parameter, `id`, along with any other necessary parameters (we also need to pass our particular function a `data` parameter to differentiate between data subsets (e.g. **All** vs. **Africa** vs. **Asia** etc.)).

@@ -653,7 +671,9 @@ gapModuleServer <- function(id, data) { # step 2: the first argument to a server ## {#using-module-1 data-menu-title="Using your module 1"} -
Now let's use our module:
+[Now let's use our module:]{.slide-title-smaller} + +

First, since we've saved our `gapModule.R` file to our app's directory, we'll need to source it at the top of our `app.R` file:

@@ -681,7 +701,9 @@ oceania_data <- filter(gapminder, continent == "Oceania") ## {#using-module-2 data-menu-title="Using your module 2"} -
Now let's use our module:
+[Now let's use our module:]{.slide-title-smaller} + +

Next, let's use our module's UI function. We'll need to define/name each of our `tabPanel`s (one for each of our six regions), but rather than building a `plotOutput` and `sliderInput` inside each `tabPanel` (each with unique `Id`s), we can instead call our `gapModuleUI()` function, and ensure that each time we call it to supply a unique character string for our `id` parameter.

@@ -729,7 +751,9 @@ ui <- fluidPage( ## {#using-module-3 data-menu-title="Using your module 3"} -
Now let's use our module:
+[Now let's use our module:]{.slide-title-smaller} + +

Finally, we can re-write our server. Rather than writing out the *lengthy* code required to make each plot six times over, we can instead call our `gapModuleServer()` function, supplying each call with `id`s that match those used in `gapModuleUI()`, along with the appropriate data subset. Now, run your app! If written correctly, your app should run exactly the same as your initial version.

@@ -792,16 +816,18 @@ shinyApp(ui = ui, server = server) ## {#module-resources data-menu-title="Module resources"} -
Additional module resources
+[Additional module resources]{.slide-title-smaller} + +

We've barely scratched the surface of modules. Continue on with some of the following resources:

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Modularizing Shiny App Code](https://www.rstudio.com/resources/shiny-dev-con/modules/?_ga=2.163786815.1475817156.1670220567-309155161.1666221806) & [associated materials](https://github.com/rstudio/ShinyDeveloperConference/tree/master/Modules/Demo), by [Garrett Grolemund](https://github.com/garrettgman) & [Joe Cheng](https://github.com/jcheng5) at the 2016 Shiny Developer's Conference -- **NOTE:** This 2016 talk is an *excellent* introduction to modules and is definitely worth a watch, especially because we just explored the exact example demoed by G. Grolemund. Please note, however, that Shiny modules were overhauled in 2020 with the introduction of `moduleServer()`. The code on the previous slides has been updated to reflect those changes, and therefore differs slightly from what's taught in this video.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Modularizing Shiny App Code](https://www.rstudio.com/resources/shiny-dev-con/modules/?_ga=2.163786815.1475817156.1670220567-309155161.1666221806) & [associated materials](https://github.com/rstudio/ShinyDeveloperConference/tree/master/Modules/Demo), by [Garrett Grolemund](https://github.com/garrettgman) & [Joe Cheng](https://github.com/jcheng5) at the 2016 Shiny Developer's Conference -- **NOTE:** This 2016 talk is an *excellent* introduction to modules and is definitely worth a watch, especially because we just explored the exact example demoed by G. Grolemund. Please note, however, that Shiny modules were overhauled in 2020 with the introduction of `moduleServer()`. The code on the previous slides has been updated to reflect those changes, and therefore differs slightly from what's taught in this video.

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Mastering Shiny, Ch. 19 - Shiny Modules](https://mastering-shiny.org/scaling-modules.html#scaling-modules ), by [Hadley Wickham](https://github.com/hadley)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Mastering Shiny, Ch. 19 - Shiny Modules](https://mastering-shiny.org/scaling-modules.html#scaling-modules ), by [Hadley Wickham](https://github.com/hadley)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Modularizing Shiny app code](https://shiny.rstudio.com/articles/modules.html), by [Winston Chang](https://github.com/wch)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Modularizing Shiny app code](https://shiny.rstudio.com/articles/modules.html), by [Winston Chang](https://github.com/wch)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Effective use of Shiny modules in application development](https://www.youtube.com/watch?v=ylLLVo2VL50), by [Eric Nantz](https://r-podcast.org/host/enantz/) at rstudio::conf(2019)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Effective use of Shiny modules in application development](https://www.youtube.com/watch?v=ylLLVo2VL50), by [Eric Nantz](https://r-podcast.org/host/enantz/) at rstudio::conf(2019)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")`[A beginners guide to Shiny modules](https://emilyriederer.netlify.app/post/shiny-modules/), by [Emily Riederer](https://emilyriederer.netlify.app/about/)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text}[A beginners guide to Shiny modules](https://emilyriederer.netlify.app/post/shiny-modules/), by [Emily Riederer](https://emilyriederer.netlify.app/about/)

diff --git a/sections/16-shiny_alternatives.qmd b/sections/16-shiny_alternatives.qmd index c0318fe..b881951 100644 --- a/sections/16-shiny_alternatives.qmd +++ b/sections/16-shiny_alternatives.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#do-you-need-shiny data-menu-title="~~~ Shiny Alternatives ~~~" background="#053660"}
-

`r fontawesome::fa("arrows-left-right", fill = "#d2e3f3", a11y = "sem")` Consider if you need Shiny at all

+

{{< fa arrows-left-right title="a double-sided arrow, pointint to the left and right" >}} Consider if you need Shiny at all

*While a well-developed shiny app is fun and appealing, it's worth having a conversation about whether shiny is truly necessary, or if taking an alternative approach to sharing your data might be better.*

@@ -13,21 +13,23 @@ format: revealjs ## {#shiny-alternatives data-menu-title="Other options"} -
Additional data presentation frameworks
+[Additional data presentation frameworks]{.slide-title} + +

Shiny is awesome, but depending on your goals, vision, and end users, you may not need the full functionality that shiny provides. You can potentially save yourself (and your clients) the stress of deploying and maintaining apps by first considering other options:

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Widgets aren't only for Shiny! Embed interactive [htmlwidgets](https://www.htmlwidgets.org/) into your R Markdown documents that range from geo-spatial mapping with `{leaflet}` to generating network graph diagrams with `{DiagrammeR}`. Check out the [htmlwidgets for R - gallery](http://gallery.htmlwidgets.org/) for many more options.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Widgets aren't only for Shiny! Embed interactive [htmlwidgets](https://www.htmlwidgets.org/) into your R Markdown documents that range from geo-spatial mapping with `{leaflet}` to generating network graph diagrams with `{DiagrammeR}`. Check out the [htmlwidgets for R - gallery](http://gallery.htmlwidgets.org/) for many more options.

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Compose multiple widgets into a dashboard using `{flexdashboard}`. Based in R Markdown, this framework allows you to produce dynamic dashboards using tools you are already familiar with. Find example projects and their source code [here](https://pkgs.rstudio.com/flexdashboard/articles/examples.html).

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Compose multiple widgets into a dashboard using `{flexdashboard}`. Based in R Markdown, this framework allows you to produce dynamic dashboards using tools you are already familiar with. Find example projects and their source code [here](https://pkgs.rstudio.com/flexdashboard/articles/examples.html).

. . . -

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Embed reactive shiny components (e.g. inputs & outputs) in Quarto documents. By using some fun new code chunk options, you can instruct Quarto to spin up it's own self-contained shiny server to run your reactives. Read the [Quarto documentation](https://quarto.org/docs/interactive/shiny/) to learn more and check out some teaching examples [here](https://quarto.org/docs/interactive/shiny/#examples).

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Embed reactive shiny components (e.g. inputs & outputs) in Quarto documents. By using some fun new code chunk options, you can instruct Quarto to spin up it's own self-contained shiny server to run your reactives. Read the [Quarto documentation](https://quarto.org/docs/interactive/shiny/) to learn more and check out some teaching examples [here](https://quarto.org/docs/interactive/shiny/#examples).

Logos for htmlwidgets, flexdashboard, and quarto.
@@ -35,9 +37,11 @@ format: revealjs ## {#flexdashboard-examples data-menu-title="Examples of flexdashboards"} -
Example flexdashboards built by some familiar folks `r fontawesome::fa("face-smile", fill = "#05859B", a11y = "sem")`
+[Example flexdashboards built by some familiar folks {{< fa face-smile title="a smiling face" >}}]{.slide-title} + +
-

`r fontawesome::fa("sun", fill = "#05859B", a11y = "sem")` [Energy Siting Dashboard](https://energysiting.github.io/energysiting-dashboard/) ([source code](https://github.com/energysiting/energysiting-dashboard)), *developed by MEDS 2022 alumni [Paloma Cartwright](https://palomacartwright.github.io/), [Joe DeCesaro](https://joedecesaro.github.io/), [Daniel Kerstan](https://www.linkedin.com/in/daniel-kerstan-5b162321b/) & [Desik Somasundaram](https://www.linkedin.com/in/desik-somasundaram-902a8a120/) as part of their MEDS capstone project* -- explore predictions of the most suitable locations for large, utility-scale wind and solar projects across the United States

+

[{{< fa sun title="a sun" >}}]{.teal-text} [Energy Siting Dashboard](https://energysiting.github.io/energysiting-dashboard/) ([source code](https://github.com/energysiting/energysiting-dashboard)), *developed by MEDS 2022 alumni [Paloma Cartwright](https://palomacartwright.github.io/), [Joe DeCesaro](https://joedecesaro.github.io/), [Daniel Kerstan](https://www.linkedin.com/in/daniel-kerstan-5b162321b/) & [Desik Somasundaram](https://www.linkedin.com/in/desik-somasundaram-902a8a120/) as part of their MEDS capstone project* -- explore predictions of the most suitable locations for large, utility-scale wind and solar projects across the United States

-

`r fontawesome::fa("handshake", fill = "#05859B", a11y = "sem")` [@ADELPHIRESEARCH TWEETS Dashboard](https://spileggi.shinyapps.io/Pileggi_presentation_shiny/) ([source code](https://github.com/shannonpileggi/Adelphi-tweets)), *developed by R-Lady [Shannon Pileggi](https://www.pipinghotdata.com/index.html) as part of a job interview* -- read about this clever approach to showcasing your skills to a potential employer in Shannon's blogpost, [A job interview presentation inspired by the R community](https://www.pipinghotdata.com/posts/2020-08-30-a-job-interview-presentation-inspired-by-the-r-community/).

+

[{{< fa handshake title="two hands shaking" >}}]{.teal-text} [@ADELPHIRESEARCH TWEETS Dashboard](https://spileggi.shinyapps.io/Pileggi_presentation_shiny/) ([source code](https://github.com/shannonpileggi/Adelphi-tweets)), *developed by R-Lady [Shannon Pileggi](https://www.pipinghotdata.com/index.html) as part of a job interview* -- read about this clever approach to showcasing your skills to a potential employer in Shannon's blogpost, [A job interview presentation inspired by the R community](https://www.pipinghotdata.com/posts/2020-08-30-a-job-interview-presentation-inspired-by-the-r-community/).

diff --git a/sections/17-additional-resources-final-thoughts.qmd b/sections/17-additional-resources-final-thoughts.qmd index 44e0a69..6947bc0 100644 --- a/sections/17-additional-resources-final-thoughts.qmd +++ b/sections/17-additional-resources-final-thoughts.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#resources-final-thoughts data-menu-title="~~~ Final Thoughts & Resources ~~~" background="#053660"}
-

`r fontawesome::fa("lightbulb", fill = "#d2e3f3", a11y = "sem")` Final Thoughts & Additional Resources

+

{{< fa lightbulb title="a lightbulb" >}} Final Thoughts & Additional Resources

*We've covered a lot in this workshop, and we've only just begun to scratch the surface -- we'll end with some final thoughts/words of wisdom, along with some resources that are worth returning to as you begin your deep dive into shiny app development.*

@@ -13,69 +13,75 @@ format: revealjs ## {#words-of-wisdom data-menu-title="Words of wisdom"} -
Some takeaway messages that are worth keeping in mind
+[Some takeaway messages that are worth keeping in mind]{.slide-title} -

`r fontawesome::fa("chart-column", fill = "#05859B", a11y = "sem")` Oftentimes, the most time consuming part of building a shiny app is deciding on how to present the data visually -- make your data visualizations first, *outside of shiny*, refine, decide which variables you think are important enough to make reactive, etc. **THEN**, build them into your shiny application.

+
+ +

[{{< fa chart-column title="a bar chart" >}}]{.teal-text} Oftentimes, the most time consuming part of building a shiny app is deciding on how to present the data visually -- make your data visualizations first, *outside of shiny*, refine, decide which variables you think are important enough to make reactive, etc. **THEN**, build them into your shiny application.

. . . -

`r fontawesome::fa("table", fill = "#05859B", a11y = "sem")` Get your data in the most wrangled form possible before loading it into your app to avoid unnecessary slowdowns.

+

[{{< fa table title="a data table" >}}]{.teal-text} Get your data in the most wrangled form possible before loading it into your app to avoid unnecessary slowdowns.

. . . -

`r fontawesome::fa("code", fill = "#05859B", a11y = "sem")` Code expands *quickly* -- stay organized! Create a repository map (see an example in this [README](https://github.com/UCSB-MEDS/shiny-dashboard/blob/main/README.md)), so you and your collaborators know where files live and what they do. Use rainbow parentheses, add extra space between sections of code, and include clear code comments to denote the start and end of parentheses. This will help save headaches later on.

+

[{{< fa code title="the symbol for code, " >}}]{.teal-text} Code expands *quickly* -- stay organized! Create a repository map (see an example in this [README](https://github.com/UCSB-MEDS/shiny-dashboard/blob/main/README.md)), so you and your collaborators know where files live and what they do. Use rainbow parentheses, add extra space between sections of code, and include clear code comments to denote the start and end of parentheses. This will help save headaches later on.

. . . -

`r fontawesome::fa("users", fill = "#05859B", a11y = "sem")` Keep in mind the [considerations for good UX/UI design](https://ucsb-meds.github.io/EDS430-Shiny/#/UX-UI-design-tips). You're building an app for the user first and foremost -- be sure to assess often if your app is going to meet their needs.

+

[{{< fa users title="three people" >}}]{.teal-text} Keep in mind the [considerations for good UX/UI design](https://ucsb-meds.github.io/EDS430-Shiny/#/UX-UI-design-tips). You're building an app for the user first and foremost -- be sure to assess often if your app is going to meet their needs.

. . . -

`r fontawesome::fa("question", fill = "#05859B", a11y = "sem")` Before taking the plunge, consider if you really need shiny at all -- maintaining apps can be challenging. What other options might you have for sharing your data with end users?

+

[{{< fa question title="question mark" >}}]{.teal-text} Before taking the plunge, consider if you really need shiny at all -- maintaining apps can be challenging. What other options might you have for sharing your data with end users?

--- ## {#resources1 data-menu-title="Resources"} -
Great Shiny resources
+[Great Shiny resources]{.slide-title-smaller} + +

A quick Google search will yield *lots* of online resources, forum discussions, video tutorials, etc. for building Shiny applications. Many are linked throughout these slides, but here's an attempt at putting some of those that I referenced most often all in one spot (along with some that we didn't have time to cover). Be sure to poke around online yourself, and let me know if you come across any that you find particularly useful so that I can add them here!

**Books**

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Mastering Shiny](https://mastering-shiny.org/basic-app.html), by Hadley Wickham

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Mastering Shiny](https://mastering-shiny.org/basic-app.html), by Hadley Wickham

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Engineering Production-Grade Shiny Apps](https://engineering-shiny.org/index.html), by Colin Fay, Sébastien Rochette, Vincent Guyader & Cervan Girard.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Engineering Production-Grade Shiny Apps](https://engineering-shiny.org/index.html), by Colin Fay, Sébastien Rochette, Vincent Guyader & Cervan Girard.

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Building Web Apps with R](https://debruine.github.io/shinyintro/index.html), by [Lisa DeBruine](https://github.com/debruine) -- an short course (paired with an online book with instructions, resources, etc.)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Building Web Apps with R](https://debruine.github.io/shinyintro/index.html), by [Lisa DeBruine](https://github.com/debruine) -- an short course (paired with an online book with instructions, resources, etc.)

**Tutorials**

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Building Shiny apps - an interactive tutorial](https://deanattali.com/blog/building-shiny-apps-tutorial/), by Dean Attali

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Building Shiny apps - an interactive tutorial](https://deanattali.com/blog/building-shiny-apps-tutorial/), by Dean Attali

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")`[Speeding Up R Shiny](https://www.r-bloggers.com/2021/06/speeding-up-r-shiny-the-definitive-guide/), by Jakub Sobolewski in R bloggers -- details methods on improving app performance

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text}[Speeding Up R Shiny](https://www.r-bloggers.com/2021/06/speeding-up-r-shiny-the-definitive-guide/), by Jakub Sobolewski in R bloggers -- details methods on improving app performance

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` Allison Horst's [The Basics of Building Shiny Apps in R](https://github.com/allisonhorst/shiny-basics-sb-r-ladies) workshop

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Allison Horst's [The Basics of Building Shiny Apps in R](https://github.com/allisonhorst/shiny-basics-sb-r-ladies) workshop

**Tools**

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [R Shiny & FontAwesome Icons -- How to Use Them in Your Dashboards](https://www.r-bloggers.com/2022/09/r-shiny-fontawesome-icons-how-to-use-them-in-your-dashboards/), by Dario Radečić in R Bloggers -- instructions for setting up your [fontawesome](https://fontawesome.com/) kit

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [R Shiny & FontAwesome Icons -- How to Use Them in Your Dashboards](https://www.r-bloggers.com/2022/09/r-shiny-fontawesome-icons-how-to-use-them-in-your-dashboards/), by Dario Radečić in R Bloggers -- instructions for setting up your [fontawesome](https://fontawesome.com/) kit

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Shiny UI Editor](https://rstudio.github.io/shinyuieditor/) and [Nick Strayer](https://nickstrayer.me/)'s [rstudio::conf(2022) talk](https://www.rstudio.com/conference/2022/talks/new-way-to-build-shiny/) introducing it -- a visual tool for building the UI portion of a Shiny application that generates clean and human-readable code (**currently in Alpha**, as of January 2023)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Shiny UI Editor](https://rstudio.github.io/shinyuieditor/) and [Nick Strayer](https://nickstrayer.me/)'s [rstudio::conf(2022) talk](https://www.rstudio.com/conference/2022/talks/new-way-to-build-shiny/) introducing it -- a visual tool for building the UI portion of a Shiny application that generates clean and human-readable code (**currently in Alpha**, as of January 2023)

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` The [`{golem}` package](https://github.com/ThinkR-open/golem) provides an opinionated framework for building production-grade shiny applications and is a part of a growing ecosystem of packages called the [`{golemverse}`](https://golemverse.org/). There are lots of accompanying learning materials, including the book, [Engineering Production Grade Shiny Apps](https://engineering-shiny.org/), by Colin Fay, Sébastien Rochette, Vincent Guyader, and Cervan Girard.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} The [`{golem}` package](https://github.com/ThinkR-open/golem) provides an opinionated framework for building production-grade shiny applications and is a part of a growing ecosystem of packages called the [`{golemverse}`](https://golemverse.org/). There are lots of accompanying learning materials, including the book, [Engineering Production Grade Shiny Apps](https://engineering-shiny.org/), by Colin Fay, Sébastien Rochette, Vincent Guyader, and Cervan Girard.

--- ## {#resources1 data-menu-title="More resources"} -
And don't forget about Posit's own excellent resources
+[And don't forget about Posit's own excellent resources]{.slide-title} + +

Posit/RStudio's great instructional resources, examples, and help documentation:

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` A thoughtfully organized [Articles](https://shiny.rstudio.com/articles/) page

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} A thoughtfully organized [Articles](https://shiny.rstudio.com/articles/) page

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` The [Shiny User Showcase](https://shiny.rstudio.com/gallery/#user-showcase), a collection of Shiny apps and their source code developed by the Shiny developer community -- many of these featured apps are winners or honorable mentions of the [annual Shiny contest](https://www.rstudio.com/blog/winners-of-the-3rd-annual-shiny-contest/)!

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} The [Shiny User Showcase](https://shiny.rstudio.com/gallery/#user-showcase), a collection of Shiny apps and their source code developed by the Shiny developer community -- many of these featured apps are winners or honorable mentions of the [annual Shiny contest](https://www.rstudio.com/blog/winners-of-the-3rd-annual-shiny-contest/)!

-

`r fontawesome::fa("angle-right", fill = "#05859B", a11y = "sem")` [Shiny Demos](https://shiny.rstudio.com/gallery/#demos), a series of apps created by the Shiny developers to highlight specific features of the shiny package -- these are *excellent* resources to turn to when you are learning how to implement a new type of widget, working on the layout of your app, and more.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Shiny Demos](https://shiny.rstudio.com/gallery/#demos), a series of apps created by the Shiny developers to highlight specific features of the shiny package -- these are *excellent* resources to turn to when you are learning how to implement a new type of widget, working on the layout of your app, and more.

From 84f6586e5865ef283bc65b71d55d18a63c29be42 Mon Sep 17 00:00:00 2001 From: samanthacsik Date: Sun, 8 Oct 2023 15:08:28 -0700 Subject: [PATCH 5/8] updated css rule names to be more intuitive, consistent, reduce repetition going through slides and making sure formatting is still correct; currently finished up through single-file app example --- index.html | 1539 +++++++++-------- index.qmd | 83 +- .../libs/revealjs/dist/theme/quarto.css | 2 +- meds_styles.scss | 99 +- sections/0-prerequisites.qmd | 2 +- sections/1-what-is-shiny.qmd | 22 +- sections/10-user-centered-design.qmd | 14 +- sections/11-accessibility.qmd | 70 +- sections/12-debugging.qmd | 118 +- sections/13-testing.qmd | 52 +- sections/14-functions.qmd | 64 +- sections/15-modules.qmd | 82 +- sections/16-shiny_alternatives.qmd | 12 +- ...17-additional-resources-final-thoughts.qmd | 44 +- sections/2-setup.qmd | 42 +- sections/3-first-app.qmd | 235 ++- sections/4.1-second-app-v1.qmd | 148 +- sections/4.2-second-app-v1.qmd | 32 +- sections/4.3-second-app-v1.qmd | 26 +- sections/5-deploy-app.qmd | 30 +- sections/6-second-app-v2.qmd | 54 +- sections/7-redeploy-app.qmd | 12 +- sections/8.1-shinydashboard.qmd | 116 +- sections/8.2-shinydashboard.qmd | 32 +- sections/9-themeing-apps.qmd | 172 +- 25 files changed, 1583 insertions(+), 1519 deletions(-) diff --git a/index.html b/index.html index f079661..ba463b4 100644 --- a/index.html +++ b/index.html @@ -406,7 +406,7 @@

Published: Oct 10, 2022

-

Last updated: Oct 06, 2023

+

Last updated: Oct 08, 2023


@@ -450,74 +450,76 @@


-
+
No prior Shiny experience necessary!

-

Table of Contents

+

Table of Contents


We’re going to pack a lot into two days. Here’s what to expect:

-

+

(1) High-level overview of Shiny

-

+

What is Shiny? ~ Anatomy of a shiny app ~ Where to find examples

-

+

(2) Building shiny apps & dashboards

-

+

Setting up your repo & files ~ App #1 (single-file app) ~ App #2 (two-file app) ~ App #3 (shinydashboard) ~ Deploying apps

-

+

(3) Beautifying your user interface (UI)

-

+

Custom themes with bslib ~ Custom themes with fresh ~ Styling with CSS & Sass

-

+

(4) Improving your app’s user experience (UX)

-

+

Important UX considerations ~ Web accessibility

-

+

(5) Debugging & Testing

-

+

Debugging approaches ~ Testing apps

-

+

(6) Streamlining code

-

+

Writing functions ~ Shiny modules

-

+

(7) Wrap-up

-

+

Shiny alternatives ~ Words of wisdom ~ More resources

-
-

+

+

See the source code

+
+



+

You can reference the source code of all the apps we’ll be building/playing with throughout this workshop on GitHub GitHub.

-

Part 1: High-level overview of Shiny


-

+

What is Shiny?

-

+

Anatomy of a shiny app

-

+

Where to find examples

@@ -539,7 +541,7 @@ A gif of Andre Duarte's 'Worldbank-Shiny' app. On the lefthand side of the app, the title 'Gapminder Interactive Plot' sits above a series of three widgets. The first is a dropdown menu where the user can select a region (e.g. Europe & Central Asia) or view all regions at the same time. The next two widgets are slider inputs -- the first allows the user to select a year between 1960 and 2014, and the second allows the user to select a population size between 500 and 5000. On the right hand side of the app is a bubble plot of Fertility Rate vs. Life Expectancy, which updates as inputs are changed by the user. Hovering a bubble displays thge corresponding Country, Region, Population, Life Expectancy, and Fertility Rate.
-

+

Worldbank-Shiny app to visualize fertility rate vs. life expectancy from 1960 to 2015, by Andre Duarte

@@ -565,7 +567,7 @@ The UI controls the layout and appearance of your app and is written in HTML (except we use functions from the shiny package to write that HTML). The server handles the logic of the app – in other words, it is a set of instructions that tells the webpage what to display when a user interacts with it.

-

Widgets are web elements that users can interact with via the UI

+

Widgets are web elements that users can interact with via the UI


@@ -575,12 +577,11 @@
-


- Widgets collect information from the user which is then used to update outputs created in the server. + Widgets collect information from the user which is then used to update outputs created in the server.

- Shiny comes with a set of of standard widgets (see left), but you can also explore widget extensions using a variety of other packages (e.g. {shinyWidgets}, {DT}, {plotly}) + Shiny comes with a set of of standard widgets (see left), but you can also explore widget extensions using a variety of other packages (e.g. {shinyWidgets}, {DT}, {plotly})

@@ -621,9 +622,9 @@ Novel-gazing (source code) by Dr. Megsie Siple – a fun app for exploring your Goodreads data, inspired by community ecology

-

The Shiny packages comes with 11 built-in examples

+

The Shiny packages comes with 11 built-in examples


-

+

Check out the available Shiny app examples by running this code in your console:

@@ -631,18 +632,18 @@ runExample(example = NA)
-

+

Run the first example, which plots R’s built-in faithful data set with a configurable number of bins:

runExample("01_hello")
-

+

Change the number of bins using the sliderInput widget and watch the histogram re-render.

-

+

These working examples also come paired with source code for you to see how the app is built. For example, the sliderInput is built with the following code:

@@ -656,7 +657,7 @@
-

+

Now let’s build our own!

@@ -683,14 +684,14 @@

Shiny app repo structure


-

+

Not much is required to make a functional app (which is awesome) – for a basic app, you really just need an app.R file where you’ll write the code for your UI and server. To stay organized, we’ll place app.R into a subdirectory (e.g. /myapp), which will also house any dependencies (e.g. other scripts/files/etc.) used by app.R.

A visual representation of a basic shiny app repository file/folder structure.

-

All Shiny apps begin (in almost) the same way

+

All Shiny apps begin (in almost) the same way


You have the option of creating either a single-file app or two-file app, and they look nearly the same (we’ll see both formats in the coming slides). @@ -698,7 +699,7 @@

Shiny apps can be built using a single app.R file, or using ui.R plus server.R, and most often a global.R in conjunction.
-

+

Why two options? Before v0.10.2, Shiny apps needed to be split into two separate files, ui.R and server.R, that defined the UI and server components, respectively. With v0.10.2+, users can create a single-file app, app.R, which contains both the UI and server components together. While it largely comes down to personal preference, a single-file format is best for smaller apps or when creating a reprex, while the two-file format is beneficial when writing large, complex apps where breaking apart code can make things a bit more navigable/maintainable.

@@ -708,12 +709,12 @@ You can create a single-file app using RStudio’s built-in Shiny app template (e.g. File > New Project… > New Directory > Shiny Application), but it’s just as easy to create it from scratch (and you’ll memorize the structure faster!). Let’s do that now.

-

+

1. In your project repo, create a subdirectory to house your app – I’m calling mine, single-file-app.

-

+

2. Create a new R script inside /single-file-app and name it app.R – you must name your script app.R. Copy/type the following code into app.R, or use the shinyapp snippet to automatically generate a shiny app template.

@@ -731,21 +732,21 @@ # combine UI & server into an app ---- shinyApp(ui = ui, server = server)

-

+

Tip: Use code sections (denoted by # some text ----) to make navigating different sections of your app code a bit easier. Code sections will appear in your document outline (find the button at the top right corner of the script/editor panel).

-

Run your app

+

Run your app


-

+

Once you have saved your app.R file, the “Run” code button should turn into a “Run App” button that looks like: A green, right facing triangular arrow next to the words 'Run App'. Click that button to run your app (alternatively, run runApp("directory-name") in your console – for me, that looks like, runApp("single-file-app"))!

-

+

You won’t see much yet, as we have only built a blank app (but a functioning app, nonetheless!). In your RStudio console, you should see something like: Listening on http://127.0.0.1:XXXX, which is the URL where your app can be found. 127.0.0.1 is a standard address that means “this computer,” and the last four digits represent a randomly assigned port number. You can click the “Open in Browser” button, A button found on the top left-hand side of the RStudio viewer window that says 'Open in Browser' next to a small browser window icon with an arrow pointing up and to the right., to see how your app will appear when viewed in your web browser.

-

+

You should also notice a red stop sign, A red hexagon with the word 'STOP' printed in white across the center., appear in the top right corner of your console indicating that R is busy–this is because your R session is currently acting as your Shiny app server and listening for any user interaction with your app. Because of this, you won’t be able to run any commands in the console until you quit your app. Do so by pressing the stop button.

@@ -761,72 +762,81 @@

-

Create a two-file Shiny app

+

Create a two-file Shiny app


In practice, you will likely find yourself opting for the the two-file format – code expands quickly, even when building relatively small apps. This two-file approach (well, three if you use a global.R file, which is encouraged) will help to keep your code a bit more manageable.

-

+

1. In your project repo, create a new subdirectory to house your app – I’m calling mine, two-file-app.

-

+

2. Create two new R scripts inside /two-file-app named ui.R and server.R – you must name your scripts ui.R and server.R. Copy the following code into the respective files. Note: When splitting your UI and server into separate files, you do not need to include the shinyApp(ui = ui, server = server) line of code (as required in your single-file app).

-

-ui.R -

+
+
+
+
ur.R
+
# user interface ----
 ui <- fluidPage()
+
-

-server.R -

+
+
+
+
server.R
+
# server instructions ----
 server <- function(input, output) {}
+
-

+

3. Lastly, let’s create a global.R file within /two-file-app and add dependencies (right now, that’s just loading the shiny package). Run your app as we did earlier.

-

-global.R -

+
+
+
+
global.R
+
# load libraries ----
 library(shiny)
+

Part 2: Building shiny apps & dashboards


-

+

Setting up your repo & files

-

+

App #1 (single-file app) - source code

-

+

App #2 (two-file app) - source code

-

+

App #3 (shinydashboard) - source code

-

+

Deploying (& redeploying) apps

@@ -839,58 +849,58 @@

-

Learning Objectives - App #1 (single-file app)

+

Learning Objectives - App #1 (single-file app)


-

+

By the end of building out this first app, you should be a bit more familiar with:

-

+

writing a single-file (app.R) shiny app

-

+

adding and styling text in the UI using tags

-

+

practicing data wrangling and visualization outside of your shiny app

-

+

following a general workflow for building reactive apps, which includes adding inputs and outputs to the UI, then writing the server instructions on how to assemble user input values into outputs

-

+

running and quitting apps in RStudio

-

+

Packages introduced:

-

+

shiny: framework for building our reactive app + standard widgets

-

+

DT: interactive datatable widgets (that can be made reactive using shiny!)

-

+

tidyverse: collection of packages for wrangling & visualizing data

-

+

palmerpenguins: data

@@ -921,12 +931,16 @@

-

Add text in the UI

+

Add text in the UI


-

+

We’ll do this in the UI within fluidPage(), a layout function that sets up the basic visual structure of the page and scales components in real time to fill all available browser width. Add a title and subtitle to your app (be sure to separate each with a comma, ,), save, and run:

+
+
+
app.R
+
# user interface ----
 ui <- fluidPage(
   
@@ -938,11 +952,16 @@
   
   )
+
-

+

Recall that the UI is actually just an HTML document. We can style our text by adding static HTML elements using tags – a list of functions that parallel common HTML tags (e.g. <h1> == tags$h1()) The most common tags also have wrapper functions (e.g. h1()).

+
+
+
app.R
+
# user interface ----
 ui <- fluidPage(
   
@@ -955,16 +974,17 @@
   )
+

-

What are inputs and outputs?

+

What are inputs and outputs?


-

+

Next, we will begin to add some inputs and outputs to our UI inside fluidPage() (anything that you put into fluidPage() will appear in our app’s user interface…and we want inputs and outputs to show up there!).

-

+

Inputs (or widgets) are the things that users can interact with (e.g. toggle, slide) and provide values to your app. The input functions below correspond to the widgets you see on slide #9. Outputs are the R objects that your user sees (e.g. tables, plots) and are what respond when a user interacts with/changes an input value.

-

+

The shiny package comes with a number of input and output functions, but you can extend these with additional packages (e.g. shinyWidgets, plotly, DT, etc.; more on those later).

@@ -972,35 +992,35 @@

Examples of Input Functions:

-

+

actionButton()

-

+

checkboxInput()

-

+

checkboxGroupInput()

-

+

dateInput()

-

+

dateRangeInput()

-

+

radioButtons()

-

+

selectInput()

-

+

sliderInput()

-

+

textInput()

-

- See full list of shiny input functions here +

+ See a full list of shiny input functions

@@ -1008,44 +1028,44 @@

Examples of Output Functions:

-

+

dataTableOutput() (inserts an interactive table)

-

+

imageOutput() (inserts an image)

-

+

plotOutput() (inserts a plot)

-

+

tableOutput() (inserts a table)

-

+

textOutput() (inserts text)

-

- See full list of shiny output functions here +

+ See a full list of shiny output functions

Adding our reactive plot


-

+

Next, we’ll create a scatterplot of penguin bill lengths vs. penguin flipper lengths using the penguins data set from the {palmerpengiuns} package. We will make this scatterplot reactive by adding a sliderInput that allows users to filter the displayed data points by selecting a range of penguin body masses (e.g. only plot bill and flipper lengths for penguins with body masses ranging from 4,500 grams to 6,000 grams).

-

+

To create a reactive plot, we will follow these steps:

-

+

1. Add an input (e.g. sliderInput) to the UI that users can interact with

-

+

2. Add an output (e.g. plotOutput) to the UI that creates a placeholder space to fill with our eventual reactive output

-

+

3. Tell the server how to assemble inputs into outputs

@@ -1059,13 +1079,13 @@

Input function syntax


-

+

All input functions have the same first argument, inputId (NOTE: Id not ID), which is used to connect the front end of your app (the UI) with the back end (the server). For example, if your UI has an inputId = "name", the server function will access that input value using the syntax input$name. The inputId has two constraints: (1) it must be a simple string containing only letters, numbers, and underscores, (2) it must be unique within your app.

-

+

Most input functions have a second parameter called label, which is used to create a human-readable label for the control, which will appear in the UI.

-

+

The remaining arguments are unique to each input function. Oftentimes, these include a value parameter, which lets you set the default value of your widget, where applicable.

@@ -1076,16 +1096,20 @@ selectInput(inputId = "island_input", label = "Choose and island:", ...) -

+

Check out the interactive Shiny Widgets Gallery to learn how to implement the most common widgets.

-

Step 1: Add an input to your app

+

Step 1: Add an input to your app


First let’s add a sliderInput() that will allow users to select a range of penguin body masses (g).

+
+
+
app.R
+
# user interface ----
 ui <- fluidPage(
   
@@ -1096,6 +1120,7 @@
               min = 2700, max = 6300, value = c(3000, 4000))
   )
+

When you run your app, you should see something similar to the image below. It’s operable, but does not yet have an associated output. @@ -1123,12 +1148,16 @@ dataTableOutput(outputId = "penguin_data")

-

Step 2: Add an output to your app

+

Step 2: Add an output to your app


-

+

Let’s now add a plotOutput(), which will be updated based on the user inputs via the sliderInput(), then run the app.

+
+
+
app.R
+
# user interface ----
 ui <- fluidPage(
   
@@ -1143,10 +1172,11 @@
   
   )
+
-

+

Okay, it looks like nothing changed?? Remember, *Output() functions create placeholders, but we have not yet written the server instructions on how to fill and update those placeholders. We can inspect the HTML and see that there is, in fact, a placeholder area awaiting our eventual output, which will be a plot named “bodyMass_scatterPlot”:

@@ -1164,12 +1194,9 @@

Each *Output() function in the UI is coupled with a render*() function in the server, which contains the “instructions” for creating the output based on user inputs (or in other words, the instructions for making your output reactive).

-


-
-

-Examples of *Output() functions and their corresponding render*() functions: +

+Examples of *Output() functions and their corresponding render*() functions:

-
@@ -1200,16 +1227,16 @@
Output function

Step 3: Tell the server how to assemble inputs into outputs


-

+

Now that we’ve designed our input/output in the UI, we need to write the server instructions (i.e. write the server function) on how to use the input value(s) (i.e. penguin body mass range via a slider input) to update the output (scatter plot).

-

+

The server function is defined with two arguments, input and output, both of which are list-like objects. You must define both of these arguments within the server function. input contains the values of all the different inputs at any given time, while output is where you’ll save output objects to display in the app.

-

+

This part can be intimidating, but if you follow these three rules, you will successfully create reactivity within your shiny app!

-

+

Rules:

@@ -1224,11 +1251,15 @@

-

Rule 1: Save objects you want to display to output$<id>

+

Rule 1: Save objects you want to display to output$<id>


+
+
+
app.R
+
# load packages ----
 library(shiny)
 
@@ -1254,27 +1285,29 @@
   
 }
+
-

+

In our UI, we created a placeholder for our plot using the plotOutput() function and gave it the Id "bodyMass_scatterplot". In our server, we will save our plot to the output argument by its outputId.

-

+

Note: In the UI, our outputId is quoted ("bodyMass_scatterPlot"), but not in the server (bodyMass_scatterPlot).

-

Rule 2: Build reactive objects with render*()

+

Rule 2: Build reactive objects with render*()


-

-Use the appropriate render*() function to make your output reactive (e.g. if you have a plotOutput in your UI, you will need to use renderPlot() in your server). -

-

-Within your render*(), write any code inside a set of curly braces, {}. This allows you to include as many lines of code as it takes to build your object. +

+Use the appropriate render*() function to make your output reactive (e.g. if you have a plotOutput in your UI, you will need to use renderPlot() in your server). Within your render*(), write any code inside a set of curly braces, {}. This allows you to include as many lines of code as it takes to build your object.

+
+
+
app.R
+
# load packages ----
 library(shiny)
 
@@ -1303,8 +1336,9 @@
   }) 
 }
+

-

An Aside: Draft objects (e.g. plots) in a separate script first

+

An Aside: Draft objects (e.g. plots) in a separate script first


I find it easier to experiment and draft my objects (e.g. plots) first in a separate script, then copy the code over to the server after. I want to make a plot that looks like this: @@ -1312,6 +1346,10 @@

+
+
+
practice-script.R
+
# load packages
 library(palmerpenguins)
 library(tidyverse)
@@ -1329,6 +1367,7 @@
   theme(legend.position = c(0.85, 0.2),
         legend.background = element_rect(color = "white"))
+
@@ -1337,16 +1376,20 @@
-

+

Tip: Save your practice script in a separate directory (i.e. not inside your app directory) – I typically save mine to something like ~/scratch/practice_script.R.

-

Copy your plot code into the server

+

Copy your plot code into the server


-

+

Copy your code over to your app, placing it inside the {} (and make sure to add any additional required packages to the top of your app.R script). Run your app. What do you notice?

+
+
+
app.R
+
# load packages ----
 library(shiny)
 library(palmerpenguins)
@@ -1384,8 +1427,9 @@
               legend.background = element_rect(color = "white")) 
   }) 
+

-

A non-reactive plot now lives in our plotOutput() placeholder

+

A non-reactive plot now lives in our plotOutput() placeholder


We have a plot (yay!), but it isn’t reactive. We have not yet told the server how to update the plot based on user inputs via the sliderInput() in the UI. Let’s do that next… @@ -1394,13 +1438,17 @@ A user changes the sliderInput meant associated with the penguin data scatterplot, but the plot does not update (i.e. it is not yet reactive).

-

Practice filtering data in our separate script

+

Practice filtering data in our separate script


-

+

First, create a new data frame where we filter the body_mass_g column for observations within a specific range of values (in this example, values ranging from 3000 - 4000):

+
+
+
practice-script.R
+
# load packages
 library(palmerpenguins)
 library(tidyverse)
@@ -1410,13 +1458,18 @@
   filter(body_mass_g %in% 3000:4000)
+
-

+

Then, plot the new filtered data frame:

+
+
+
practice-script.R
+
# plot new, filtered data
 ggplot(na.omit(body_mass_df), # plot 'body_mass_df' rather than 'penguins' df
        aes(x = flipper_length_mm, y = bill_length_mm, 
@@ -1430,6 +1483,7 @@
   theme(legend.position = c(0.85, 0.2),
         legend.background = element_rect(color = "white"))
+
@@ -1440,7 +1494,7 @@

-

Which part of our code needs to be updated when a user changes the slider range input?

+

Which part of our code needs to be updated when a user changes the slider range input?


@@ -1475,12 +1529,16 @@

-

Rule 3: Access input values with input$<id>

+

Rule 3: Access input values with input$<id>


-

+

Recall that in our UI, we gave our sliderInput() an inputId = "body_mass_input".

+
+
+
app.R
+
# load packages (omitted for brevity) ----
 
 # user interface ----
@@ -1507,16 +1565,21 @@
     
 }
+

-

Rule 3: Access input values with input$<id>

+

Rule 3: Access input values with input$<id>


-

+

In our server, we can access the values of that slider input using the syntax, input$body_mass_input. If you want your output to change according to the input values, substitute hard-coded values (e.g. 3725:5191) with the input values from the UI (e.g. input$body_mass_input[1]:input$body_mass_input[2]).

-

+

Importantly, we need to use reactive() to create reactive data frames that update with user inputs. When you call your reactive data frame in your ggplot, the data frame name must be followed by ().

+
+
+
app.R
+
# load packages (omitted for brevity) ----
 
 # user interface ----
@@ -1549,6 +1612,7 @@
     
 }
+

Okay, RUN THAT APP!


@@ -1559,7 +1623,7 @@ A gif of our current Shiny app, demonstrating reactivity. At the top left of our app is the title, 'My App Title' in large header font. Beneath it is a subtitle, 'Exploring Antarctic Penguins and Temperatures'. Below the subtitle is the slider input with the label, 'Select a range of body masses (g)'. A gray horizontal slider bar ranges from the values 2,700 to 6,300. The interactive slider value selectors are two round white circles, which, when moved apart from one another highlight the selected value range in blue. The user is adjusting the slider value selectors and the scatterplot of penguin bill length (mm) vs. flipper length (mm) is automatically updating.

-

Recap: We created our first reactive Shiny app following these steps:

+

Recap: We created our first reactive Shiny app following these steps:


@@ -1580,13 +1644,13 @@

4. We wrote the server instructions for how to assemble inputs into outputs, following these rules:

-

+

save objects that you want to display to output$<id>

-

+

build reactive objects using a render*() function (and similarly, build reactive data frames using reactive()

-

+

access input values with input$<id>

@@ -1598,18 +1662,18 @@

-

Question +

Question Exercise 1: Add another reactive widget


-

+

The {DT} package provides an R interface to the JavaScript library DataTables (you may have already used the DT package in your knitted RMarkdown/Quarto HTML documents). DT datatables allow for filtering, pagination, sorting, and lots of other neat features for tables on your HTML pages.

-

+

Working alone or in groups, add a reactive DT datatable to your app with a checkboxGroupInput that allows users to select which year(s) to include in the table. Configure your checkboxGroupInput so that the years 2007 and 2008 are pre-selected.

-

+

In the end, your app should look something like the example to the right.

@@ -1622,73 +1686,77 @@


-

+

See next slide for some tips on getting started!

-

Lightbulb +

Lightbulb Exercise 1: Tips


-

+

Tips:

-

+

Use ?checkboxGroupInput to learn more about which arguments you need (remember, all inputs require an inputId and oftentimes a label, but there are others required to make this work as well)

-

+

Both shiny and DT packages have functions named dataTableOutput() and renderDataTable()DT::renderDataTable() allows you to create both server-side and client-side DataTables and supports additional DataTables features while shiny::renderDataTable() only provides server-side DataTables. Be sure to use the one from the DT package using the syntax packageName::functionName().

-

+

There are lots of ways to customize DT tables, but to create a basic one, all you need is to DT::dataTable(your_dataframe)

-

+

And remember to follow the steps outlined on the previous slides (jump back to slide 27):

-

+

1. Add an input (e.g. checkboxGroupInput) to the UI that users can interact with

-

+

2. Add an output (e.g. DT::datatableOutput) to the UI that creates a placeholder space to fill with our eventual reactive output

-

+

3. Tell the server how to assemble inputs into outputs following 3 rules:

-

+

3.1 Save objects you want to display to output$<id>

-

+

3.2 Build reactive objects using a render*() function

-

+

3.3 Access input values with input$<id>

-

+

See next slide for a solution!

-

Exercise 1: A solution

+

Exercise 1: A solution


-

+

Press the right arrow key to advance through the newly added lines of code.

+
+
+
app.R
+
# load packages ----
 library(shiny)
 library(palmerpenguins)
@@ -1768,8 +1836,9 @@
 # combine UI & server into an app ----
 shinyApp(ui = ui, server = server)
+

-

Common mistakes to look out for

+

Common mistakes to look out for


It’s inevitable that you’ll make mistakes here and there as you build out your app…and they can be frustrating to catch. A few that I find myself making over and over again are: @@ -1777,19 +1846,19 @@


-

+

misspelling inputId as inputID (or outputId as outputID)

-

+

misspelling your inputId (or outputId) name in the server (e.g. UI: inputId = "myInputID", server: input$my_Input_ID)

-

+

repeating inputIds (each must be unique)

-

+

forgetting to separate UI elements with a comma, ,

-

+

forgetting the set of parentheses when calling the name of a reactive data frame in a plot (e.g. ggplot(my_reactive_df(), aes(...)))

@@ -1811,7 +1880,7 @@
-
+
@@ -1831,69 +1900,69 @@

Learning Objectives - App #2v1 (two-file app)


-

+

By the end of building out this second app, you should:

-

+

be comfortable creating a shiny app using the two-file (ui.R&server.R) format along with aglobal.R` file

-

+

understand how to use layout functions to customize the visual structure of your app’s UI

-

+

have more practice building reactive outputs – and placing them within the layout structure of your app

-

+

be able to create multiple inputs that control a given output

-

+

know how to import larger bodies of text using includeMarkdown() (rather than writing & styling text within your UI)

-

+

successfully publish an app using shinyapps.io

-

+

Packages introduced:

-

+

shinyWidgets: extend shiny widgets with some different, fun options

-

+

lterdatasampler: data

-

Roadmap for App #2v1

+

Roadmap for App #2v1


We’ll be building out our two-file app using data from the lterdatasampler and palmerpenguins packages. We’ll focus on creating a functional app that has a more visually pleasing UI layout (and we’ll refine it’s appearance even further in v2). By the end of v1, we’ll have created:

-

+

(a) A navigation bar with two pages, one of which will contain two tabs (one tab for each plot)

-

+

(b) A pickerInput and checkboxGroupButtons for users to filter cutthroat trout data in a reactive scatterplot

-

+

(c) A pickerInput for users to filter penguin data and a sliderInput to adjust the number of bins in a reactive histogram

@@ -1905,7 +1974,7 @@
-

+

You’ll notice that there are some UI quirks (most notably, blank plots that appear when no data is selected) that can make the user experience less than ideal (and even confusing) – we’ll learn about ways to improve this in v2 of our app.

@@ -1922,9 +1991,9 @@ This setup is certainly not required/necessary – organize your IDE however you work best!

-

Practice data wrangling, filtering & viz first!

+

Practice data wrangling, filtering & viz first!


-

+

Here’s what I’ve done in my ~scratch/practice_script_app2_lter.R file:

@@ -1993,7 +2062,7 @@ A scatterplot with Trout Length (mm) on the x-axis and Trout Weight (g) on the y-axis. Data points are colored and shaped by Channel Type, with data collected from pools represented with green diamonds and data collected from rapids represented by red stars.
-

+

We’ll use the and_vertebrates data set from lterdatasampler to create a scatter plot of trout weights by lengths. When we move to shiny, we’ll build 2 inputs for filtering our data: one to select channel_type and one to select section.

@@ -2027,7 +2096,7 @@ A histogram of penguin Flipper lengths (mm) with bars colored by species. Adelie are orange and Chinstrap are purple.
-

+

We’ll use the penguins data set from palmerpenguins to create a histogram of penguin flipper lengths. When we move to shiny, we’ll build 2 inputs for filtering our data: one to select island and one to change the number of histogram bins.

@@ -2037,28 +2106,28 @@

-

A global.R file can help you keep code organized

+

A global.R file can help you keep code organized


While not a requirement of a shiny app, a global.R file will help reduce redundant code, increase your app’s speed, and help keep code more clearly organized. It works by running once when your app is first launched, making any logic, objects, etc. contained in it available to both the ui.R and server.R files (or, in the case of a single-file shiny app, the app.R file). It’s a great place for things like:

-

+

loading packages

-

+

importing data

-

+

sourcing scripts (particularly functions – we’ll talk more about functions later)

-

+

data wrangling (though you’ll want to do any major data cleaning before bringing your data into your app)

-

+

building custom ggplot themes

-

+

etc.


@@ -2069,17 +2138,17 @@

-

We created a perfectly functional first app, but it’s not so visually pleasing

+

We created a perfectly functional first app, but it’s not so visually pleasing


-

+

nothing really grabs your eye

-

+

inputs & outputs are stacked vertically on top of one another (which requires a lot of vertical scrolling)

-

+

widget label text is difficult to distinguish from other text

@@ -2095,12 +2164,12 @@ Before we jump into adding reactive outputs to our next app, we’ll first plan out the visual structure of our UI – first on paper, then with layout functions.

-

Layout functions provide the high-level visual structure of your app

+

Layout functions provide the high-level visual structure of your app


-

+

Layouts are created using a hierarchy of function calls (typically) inside fluidPage(). Layouts often require a series functions – container functions establish the larger area within which other layout elements are placed. See a few minimal examples of layout functions on the following slides (though more exist!).

-

+

Some useful layout function pairings:

@@ -2126,7 +2195,7 @@

Example UI layouts


-

+

Note: You can combine multiple layout function groups to really customize your UI – for example, you can create a navbar, include tabs, and also establish sidebar and main panel areas for inputs and outputs.

@@ -2255,23 +2324,23 @@
-

+

Examples adapted from Mastering Shiny, Ch. 6, by Hadley Wickham:

-

Overview of layout functions used in App #2

+

Overview of layout functions used in App #2


-

Build a navbar with two pages

+

Build a navbar with two pages


-

+

First, let’s build a UI that has a navigation bar with two tabs – one for background information and one to contain our data visualizations. To do this, we’ll use navbarPage() instead of fluidPage() to create our webpage.

-

+

Tip: It can be super helpful add code comments at the start and end of each UI element – for example, see # data viz tabPanel--- and # END data viz tabPanel, below. Adding text that you will eventually replace with content (e.g. plots, tables, images, longer text) may help to visualize what you’re working towards as well.

@@ -2296,9 +2365,9 @@ ) # END navbarPage

-

Add two tabs to the “Explore the Data” page

+

Add two tabs to the “Explore the Data” page


-

+

Give your tabs the following titles: Trout and Penguins.

@@ -2340,9 +2409,9 @@ ) # END navbarPage

-

Exercise 2: Add sidebar and main panels to the Penguins tab

+

Exercise 2: Add sidebar and main panels to the Penguins tab


@@ -2418,12 +2487,12 @@


-

+

See next slide for a solution!

-

Exercise 2: A solution

+

Exercise 2: A solution

ui <- navbarPage(
   
@@ -2527,7 +2596,7 @@
 

Add data viz: First up, trout


-

+

We’ll be using the and_vertebrates dataset from the {lterdatasampler} package to create our first reactive plot. These data contain coastal cutthroat trout (Oncorhynchus clarkii clarkii) lengths and weights collected in Mack Creek, Andrews Forest LTER. Original data can be found on the EDI Data Portal. Refer back to this slide to revisit our practice data wrangling & visualization script.


@@ -2535,16 +2604,16 @@ A drawing of the right-side profile of a coastal cutthroat trout.
-

+

Image Source: Joseph R. Tomelleri, as found on the Western Native Trout Initiative

-

Add packages & wrangle data in global.R

+

Add packages & wrangle data in global.R


-

+

In addition to the {lterdatasampler} package, we’ll also be using the tidyverse for data wrangling/visualization, and the {shinyWidgets} package to add a pickerInput and a checkboxGroupInput to our app.

-

+

Import those three packages at the top of your global.R file

@@ -2555,12 +2624,12 @@ library(shinyWidgets)

-

Add packages & wrangle data in global.R

+

Add packages & wrangle data in global.R


-

+

We can also do the bulk of our data wrangling here, rather than in the server (to keep our server code a bit more manageable). If we were reading in a data file (e.g. .csv), we would do that here too. Our new data object clean_trout, will now be available for us to call directly in our server.

-

+

We can easily copy our wrangling code over from our practice script.

@@ -2590,13 +2659,13 @@ drop_na()

-

Add a pickerInput for selecting channel_type to your UI

+

Add a pickerInput for selecting channel_type to your UI


-

+

The channel_type variable (originally called unittype – we updated the name when wrangling data (see line 9 on previous slide)) represents the type of water body (cascade, riffle, isolated pool, pool, rapid, step (small falls), or side channel) data were collected in. We’ll start by building a shinyWidgets::pickerInput() to allow users to filter data based on channel_type.

-

+

Reminder: When we we designed our UI layout, we added a sidebarPanel to our Trout tab with the placeholder text "trout plot input(s) go here". Replace that text with the code for your pickerInput:

@@ -2607,28 +2676,28 @@ selected = c("cascade", "pool"), multiple = TRUE) # END channel type pickerInput
-

+

Save and run your app – a functional pickerInput should now appear in your UI.


-

+

A shinyWidgets::pickerInput() is functionally equivalent to shiny::selectInput(), though it allows for greater customization and looks (in my opinion) a bit nicer.

Add a plot output to your UI


-

+

Next, we need to create a placeholder in our UI for our trout scatterplot to live. Because we’ll be creating a reactive plot, we can use the plotOutput() function to do so.

-

+

Reminder: When we we designed our UI layout, we added a mainPanel to our Trout tab with the placeholder text "trout plot output goes here". Replace that text with the code for your plotOuput():

plotOutput(outputId = "trout_scatterplot")
-

+

Save and run your app – it won’t look different at first glance, but inspecting your app in a browser window (using Chrome, right click > Inspect) will reveal a placeholder box for your plot output to eventually live:

@@ -2636,9 +2705,9 @@

-

Tell the server how to assemble pickerInput values into your plotOutput

+

Tell the server how to assemble pickerInput values into your plotOutput


-

+

Remember the three rules for building reactive outputs: (1) save objects you want to display to output$<id>, (2) build reactive objects using a render*() function, and (3) access input values with input$<id>. When complete, your server should contain the following code:

@@ -2678,21 +2747,21 @@

A couple notes/reminders:

-

+

If needed, reference your practice script to remind yourself how you planned to filter and plot your data

-

+

Reactive data frames need a set of parentheses, (), following the name of the df (see ggplot(trout_filtered_df() ...))

-

+

For a cohesive appearance, save your ggplot theme parameters to a named object in global.R (here, myCustomTheme), then apply to all plots in your app. See the following slide for code.

-

Save a custom ggplot theme to global.R

+

Save a custom ggplot theme to global.R


-

+

Rather than re-typing your ggplot theme parameters out for every plot in your app, do so once in global.R, and save to an object name. You can then easily add your custom theme as a layer to each of your ggplots. Bonus: If you decide to modify your plot theme, you only have to do so in one place!

@@ -2740,10 +2809,10 @@

Add a second input that will update the same output


-

+

You can have more than one input control the same output. Let’s now add a checkboxGroupButtons widget to our UI for selecting forest section (either clear cut forest or old growth forest). Check out the function documentation for more information on how to customize the appearance of your buttons.

-

+

Be sure to add the widget to the same sidebarPanel as our pickerInput (and separate them with a comma, ,!:

@@ -2767,9 +2836,9 @@ ) # END trout plot sidebarPanel

-

Update your reactive df to also filter based on the new checkboxGroupInput

+

Update your reactive df to also filter based on the new checkboxGroupInput


-

+

Return to your server to modify trout_filtered_df – our data frame needs to be updated based on both the pickerInput, which selects for channel_type, and the checkboxGrouptInput, which selects for forest section:

@@ -2799,7 +2868,7 @@ })

-

Run your app and try out your pickerInput & checkboxGrouptInput widgets!

+

Run your app and try out your pickerInput & checkboxGrouptInput widgets!


Our updated app, which includes the same trout scatterplot, but this time, two inputs: one selectInput that allows the user to filter for channel_type, and one checkboxGroupInput, which includes two buttons to select/deselect data collected from the clear cut forest section and the old growth forest section. @@ -2815,7 +2884,7 @@
-
+
@@ -2824,35 +2893,35 @@

-

Add data viz: Next up, penguins

+

Add data viz: Next up, penguins


-

+

We’ll be using the penguins dataset from the {palmerpenguins} package to create our second reactive plot. These data contain penguin (genus Pygoscelis) body size measurements collected from three islands in the Palmer Archipelago, Antarctica, as part of the Palmer Station LTER. Original data can be found on the EDI Data Portal (Adélie data, Gentoo data, and Chinstrap data). Refer back to this slide to revisit our practice data wrangling & visualization script.


A cartoon drawing of Chinstrap (atop a purple background), Gentoo (atop a green background) and Adélie (atop an orange background) penguins.
-

+

Artwork by @allison_horst

-

Exercise 3: Add a reactive plot to the ‘Penguins’ tab

+

Exercise 3: Add a reactive plot to the ‘Penguins’ tab


-

+

Working alone or in groups, add a reactive histogram of penguin flipper lengths (using the penguins data set from the {palmerpenguins} package) to the Penguins tab. Your plot should have the following features and look like the example below, when complete:

-

+

data colored by penguin species

-

+

a shinyWidgets::pickerInput that allows users to filter data based on island, and that includes buttons to Select All / Deselect All island options at once

-

+

a shiny::sliderInput that allows users to change the number of histogram bins and that by default, displays a histogram with 25 bins

-

+

the two widgets should be placed in the sidebarPanel and the reactive histogram should be placed in the mainPanel of the Penguins tab

@@ -2864,23 +2933,23 @@
-

+

See next slide for some tips on getting started!

-

Exercise 3: Tips

+

Exercise 3: Tips


Tips:

-

+

Remember to load the palmerpenguins package at the top of global.R so that your app can find the data

-

+

Add your widgets to the sidebarPanel and your plot output to the mainPanel of the Penguins tab – look for that placeholder text we added earlier to help place your new code in the correct spot within your UI!

-

+

Try changing the histogram bin number in your practice code script first, before attempting to make it reactive

@@ -2888,12 +2957,12 @@




-

+

See next slide for a solution!

-

Exercise 3: A solution

+

Exercise 3: A solution


    @@ -3101,7 +3170,7 @@
-
+
@@ -3110,7 +3179,7 @@

-

Lastly: add background/other important information text

+

Lastly: add background/other important information text


It’s usually valuable (and important) to provide some background information/context for your app – the landing page of your app can be a great place for this. We’re going to add text to our app’s landing page (i.e. the About this App page) so that it looks like the example below: @@ -3127,21 +3196,21 @@

Some important pieces for information to consider adding:

-

+

motivation for building the app

-

+

brief instructions for exploring the data

-

+

who maintains the app, where the code lives, how to submit issues/suggestions

-

Adding long text to the UI can get unruly

+

Adding long text to the UI can get unruly


-

+

For example, I’ve added and formatted my landing page’s text directly in the UI using lots of nested tags – I’ve done this inside the tabPanel titled About this App (Note: I’ve formatted the layout of this page a bit using fluidRow and columns to create some white space around the edges. I’ve also created a faint gray horizontal line, using hr(), beneath which I added a footnote):

@@ -3254,12 +3323,12 @@ ) # END navbarPage

-

Instead, use includeMarkdown() to read in text from separate .md files

+

Instead, use includeMarkdown() to read in text from separate .md files


-

+

To maintain readability and an overall tidier-looking UI, you can write and style long bodies of text in separate markdown (.md) files that you then read into your UI using the includeMarkdown() function (Important: the includeMarkdown() function requires the markdown package – be sure to add library(markdown) to your global.R file!).

-

+

I recommend saving those .md files in a subdirectory named /text within your app’s directory (e.g. ~/two-file-app/text/mytext.md). See how I simplified my UI by saving my long landing page text to two new files, about.md and footer.md, then imported them into my UI using includeMarkdown().

@@ -3402,18 +3471,18 @@

-

Run your app one more time to admire your beautiful creation!

+

Run your app one more time to admire your beautiful creation!


An app titled 'LTER Animal Data Explorer'. The user starts on the 'About this App' page, which includes a couple paragraphs of intro text. The user then clicks on the 'Explore the Data' page which has two tabs: Trout and Penguins. On the Trout tab, we see a scatterplot with Trout Length (mm) on the x-axis and Trout Weight (g) on the y-axis. The user first filters data by Channel Type using a drop down list selector widget, then by Forest Section using two buttons that toggle on data from clear cut vs. old growth forest. In the Penguin tab, we see a histogram displaying Flipper Lengths (mm) of three penguin species. The user uses a drop down list selector widget to filter data by Island, then uses a slider widget to adjust the number of histogram bins.
-

+

Again, we have some UX/UI quirks to fix (most notably, blank plots when all widget options are deselected), which we’ll handle soon. But for now, we have a functioning app that we can practice deploying for the first time!

-

Code recap for app #2v1, so far:

+

Code recap for app #2v1, so far:


-

+

Additionally, you should have a /text folder within your app’s directory (/two-file-app, if you named it as I did) that contains two markdown files, about.md and footer.md.

@@ -3634,55 +3703,55 @@

-

Connect your shinyapps.io account to RStudio

+

Connect your shinyapps.io account to RStudio


-

+

Go to shinyapps.io and login or create an account (if you don’t already have one) – I created my account and login with GitHub. To use shinyapps.io, you first need to link your account with RStudio on your computer. Follow the instructions on shinyapps.io when you first create your account to install the {rsconnect} package and authorize your account:

shinyapps.io displays setup instructions: (1) INSTALL RSCONNECT: The `rsconnect` package can be installed directly from CRAN. To make sure you have the latest version run following code in your R console: `install.packages('rsconnect')`. (2) AUTHORIZE ACCOUNT: The `rsconnect` package must be authorized to your account using a token and secret. To do this, click the copy button below and we'll copy the whole command you need to your clipboard. Just paste it into your console to authorize your account. Once you've entered the command successfully in R, that computer is now authorized to deploy applications to your shinyapps.io account. (3) DEPLOY: Once the `rsconnect` package has been configured, you're ready to deploy your first application. If you haven't written any applications yet, you can also checkout the Getting Started Guide for instruction son how to deploy our demo application. Run the following code in your R console: `library(rsconnect)`, then `rsconnect::deployApp('path/to/your/app')`.

-

Deploy your app to shinyapps.io

+

Deploy your app to shinyapps.io


-

+

Once your account has been authorized, run rsconnect::deployApp("<app_directory_name>") in your console to deploy your app to shinyapps.io. Here, we’ll run rsconnect::deployApp("two-file-app") to deploy the app we’ve been working on.

-

+

Once deployed, a browser will open to your application. The URL will take the form: https://username.shinyapps.io/your_app_directory_name. You should also now see an /rsconnect folder within your app’s directory – this is generated when an application bundle is successfully deployed and contains a DCF file with information on the deployed content (i.e. the name, title, server address, account, URL, and time). This /rsconnect folder should be added and committed into version control (i.e. push it to GitHub!) so that future re-deployments target the same endpoint (i.e. your app’s URL).

Our shiny app, now hosted at the URL https://samanthacsik.shinyapps.io/two-file-app which functions the same as when it was hosted locally.

-

The shinyapps.io dashboard

+

The shinyapps.io dashboard


-

+

Your shinyapps.io dashboard provides tons of information about your application metrics, instance (the virtualized server that your app is hosted on) and worker (a special type of R process that an Application Instance runs to service requests to an application) settings, plan management, and more. The free plan (the plan we’re using here today) allows you to deploy five Shiny apps. You are able to archive and/or delete once-deployed apps to make space for new ones.

The shinyapps.io dashboard displaying information about our two-file-app, now hosted at https://samanthacsik.shinyapps.io/two-file-app/. You can select different menu items from the navbar at the top of the page, including Overview, Metrics, URLs, Settings, Users, Logs, Restart, Archive, and Trash.
-

+

Check out the shinyapps.io user guide for more information on hosting your apps on shinyapps.io.

Other ways to host your Shiny apps


-

+

shinyapps.io is not the only Shiny app hosting service (though it’s the easiest to get started with and the only one we’ll be covering in detail in this workshop).

Posit also offers the following:

-

+

Shiny server is an open source server which you can deploy for free on your own hardware. It requires more setup and configuration, but can be used without a fee. The Bren and NCEAS servers are configured with Shiny Server for hosting for some in-house apps.

-

+

Posit connect is a paid product that provides an advanced suite of services for hosting Shiny apps, Quarto and R Markdown reports, APIs, and more.

-

So how should I host my app?

+

So how should I host my app?


The Bren compute team will work with groups to deploy and maintain apps on in-house servers for up to 6 months after capstone/GP presentations or until they break. @@ -3693,15 +3762,15 @@

-

+

Preferred: Stick with the free tier of shinyapps.io, if you can! This is by far the most straightforward option that requires no server maintenance for you or your client. If your app exceeds the limitations set by the free tier (e.g. requires more active hours, needs more RAM or instances to support high traffic usage, etc.), you/your client have the option to upgrade to a paid tier – there are 5 paid plan types. Check out the shinyapps.io user guide for more information. Consider setting aside your allocated capstone/GP funds to help support a paid shinyapps.io plan.

-

+

If you have a server-savvy client, they may want to deploy/host your app using their own infrastructure. If your client plans to pursue this option, but does not yet have a their own server configured to do so, we recommend directing them to the online instructions for getting started with Shiny Server. PLEASE NOTE that Bren staff (including the compute team) are unable to provide technical support for clients in server configuration and app deployment/maintenance.

-

+

IMPORTANT: Hosting on a server means that shiny applications will be prone to breaking as updates to server software are made. It is important to have an application maintenance plan in place. This may mean identifying who is responsible for maintaining code, or even deciding to decommission applications and archive the code repository when appropriate.

@@ -3717,42 +3786,42 @@

Learning Objectives - App #2v2 (two-file app)


-

+

By the end of this section, you should:

-

+

understand how to provide users with helpful error messages using validate()

-

+

know how to add customizable loading animations to alert users when reactive objects are re-rendering

-

+

know how to add alternate (alt) text to rendered plots

-

+

understand how to republish an app using shinyapps.io

-

+

Packages introduced:

-

+

Box Open shinycssloaders: add loading animations to shiny outputs

-

Roadmap for App #2v2

+

Roadmap for App #2v2


We’ll be refining our two-file app with a focus on creating a more user-friendly experience. When finished with v2, we’ll have added: @@ -3760,13 +3829,13 @@


-

+

(a) user-friendly validation error messages that appear when widgets are used to deselect all data

-

+

(b) loading animations for both two reactive plots

-

+

(c) alternate (alt) text for all data visualizations

@@ -3783,12 +3852,12 @@

It’s important to remove any possible points of confusion for successfully using your app.

-

+

In version 1 of our published app, you’ll notice that users are able to (1) Deselect All data using the pickerInputs for both the trout and penguin plots, and (2) “uncheck” both clear cut forest and old growth forest sampling section buttons using the checkboxGroupInput. When any of these actions are taken by the user, all data are removed from the plot, leaving a completely blank box behind.

-

+

While this response is expected (and normal), we can generate a user-friendly validation error message to provide clear guidance to our users on what is expected by the app in order to display data.

@@ -3802,10 +3871,10 @@

Writing validation tests


-

+

validate() tests a condition and returns an error if that conditions fails. It’s used in conjunction with need(), which takes an expression that returns TRUE or FALSE, along with a character string to return if the condition is FALSE.

-

+

Place your validation test(s) at the start of any reactive() or render*() expression that calls input$data. For example, we can add two validation tests inside the reactive that generates our trout_filtered_df – we’ll need two separate validation tests, one for each of our inputs where users can deselect all data.

@@ -3827,30 +3896,30 @@ }

-

& Exercise 4: Add a validation test for your penguin histogram

+

& Exercise 4: Add a validation test for your penguin histogram



To Do:

-

+

Construct a validation test that displays a clear but succinct message when a user deselects all islands using the pickerWidget


Tips:

-

+

Despite having two inputs, we only need one validation test for our Penguins plot. Why is this?



-

+

See next slide for a solution!

-

Exercise 4: A solution

+

Exercise 4: A solution


server <- function(input, output) {
@@ -3915,15 +3984,15 @@
 } # END server

-

Add loading animations to re-rendering outputs

+

Add loading animations to re-rendering outputs


-

+

The {shinycssloaders} package makes it easy to add visual indicators to outputs as they’re loading or re-rendering. This can be particularly helpful if you have outputs that take a few seconds to render – it alerts users that their updated inputs were recognized and that the app is working to re-render outputs.

-

+

Check out the demo app to start designing your own “spinner” (choose style, color, size).

-

+

We can pipe the withSpinner() function directly into our plotOutputs in ui.R (be sure to load the package in global.R first) – here, we define the spinner color and style (there are 8 different spinner types to choose from) and adjust the size of the penguin plot spinner.

@@ -3946,15 +4015,15 @@

-

Include alt text for all data visualizations

+

Include alt text for all data visualizations


-

+

Alt text are written descriptions added to images, and importantly, to data visualizations, to help more users understand the content. Assistive technologies (e.g. screen readers) read alt text out loud for users to hear. When alt text is successfully added, the alt tag (along with your text) should appear in the HTML (right click on your app’s data viz to Inspect and ensure that it was added).



-

+

We’ll talk a bit more about alt text later on, but for now we can add alt text easily to our data visuzliations using the alt argument. Place this outside of the {} but inside the () of renderPlot{()}. For example, we can add alt text to our trout and penguin plots in server.R:

@@ -4011,26 +4080,26 @@

-

Redeploying is similar to deploying for the first time

+

Redeploying is similar to deploying for the first time


Just a few quick steps before your updates are live at your URL from earlier:

-

+

1. double check to make sure any required packages are being imported in global.R

-

+

2. Rerun rsconnect::deployApp("<app-directory-nam")> in your console and type Y when you see the prompt Update application currently deployed at https://githubUserName.shinyapps.io/yourAppName? [Y/n]

-

+

3. Give it a minute (or few) to deploy. Your deployed app will open in a browser window once processed

-

+

4. Push all your files (including the /rsconnect directory) to GitHub


-

+

Check out my deployed app at https://samanthacsik.shinyapps.io/two-file-app/

@@ -4046,7 +4115,7 @@
-
+
@@ -4066,41 +4135,41 @@

Learning Objectives - App #3 (shinydashboard)


-

+

After this section, you should:

-

+

understand the general workflow for pre-processing, saving & reading data into an app

-

+

be comfortable building out a dashboard UI using shinydashboard layout functions

-

+

understand how to add static images to your app

-

+

feel comfortable creating a basic reactive leaflet map

-

+

Packages introduced:

-

+

shinydashboard: provides an alternative UI framework for easily building dashboard-style shiny applications

-

+

leaflet: for building interactive maps

@@ -4114,16 +4183,16 @@


-

+

(a) a dashboardHeader with the name of your app

-

+

(b) a dashboardSidebar with two menuItems

-

+

(c) a landing page with background information about your app

-

+

(d) an interactive and reactive leaflet map

@@ -4135,7 +4204,7 @@

-

But first, what do we mean by a shiny “dashboard”?

+

But first, what do we mean by a shiny “dashboard”?


shinydashboard is just an alternative framework for building shiny apps. In other words, shiny dashboards are just shiny apps, but with some different UI elements that make building apps with a classic “dashboard” feel to them a little bit easier. @@ -4144,9 +4213,9 @@ A simple shinydashboard with two boxes (one containing a histogram and one containing a sliderInput) in the body. The header reads 'Basic tabs' and the sidebar has two menu items: Dashboard and Widgets.

-

The most basic shinydashboard is made up of a header, a sidebar, and a body

+

The most basic shinydashboard is made up of a header, a sidebar, and a body


-

+

The main difference between a shiny app and a shinydashboard are the UI elements. Rather than a fluidPage() (as used in our previous shiny apps), we’ll create a dashboardPage(), which expects three main parts: a header, a sidebar, and a body. Below is the most minimal possible UI for a shinydashboard page (you can run this code in an app.R file, if you wish).

@@ -4182,31 +4251,31 @@

Example shiny dashboards built by some familiar folks


-

+

Bren Student Data Explorer (source code), by MEDS 2022 alum, Halina Do-Linh, during her Bren Summer Fellowship (and continued by future MEDS students!) – explore Bren school student demographics and career outcomes

-

+

Sam’s Strava Stats (source code), by yours truly, Sam Csik – a new and ongoing side project exploring my Strava hiking/biking/walking data

-

+

Channel Islands National Park’s Kelp Forest Monitoring Program (source code), by MEDS 2022 alum, Cullen Molitor – explore subtidal monitoring data collected from our closest National Park

-

+

The Outdoor Equity App (source code), developed by MEDS 2022 alumni Halina Do-Linh & Clarissa Boyajian as part of their MEDS capstone project – analyze patterns in the access and demand of visitors at reservable overnight sites

-

+

Visualizing human impacts on at-risk marine biodiversity (source code, developed by MESM 2022 alum, Ian Brunjes & Dr. Casey O’Hara) – explore how human activities and climate change impact marine biodiversity worldwide

-

Setup our shiny dashboard

+

Setup our shiny dashboard


First, create a subdirectory called /shinydashboard and add a ui.R, server.R, and global.R file.

-

+

Add the server function to server.R and the three main UI components (header, sidebar, and body) to our dashboard page. You can do so just as the example a few slides back, or alternatively, you can split the UI into separate pieces, then combine them into a dashboardPage the end of ui.R (as shown below) – this can help with organization as you app grows in complexity.

-

+

We’ll set our dashboard aside for now while we work on downloading and pre-processing our data, as well as practice creating our data visualization outside of our app.

@@ -4258,7 +4327,7 @@


-

+

Christopher Arp, Matthew Whitman, Katie Drew, and Allen Bondurant. 2022. Water depth, surface elevation, and water temperature of lakes in the Fish Creek Watershed in northern Alaska, USA, 2011-2022. Arctic Data Center. doi:10.18739/A2JH3D41P.

@@ -4271,18 +4340,18 @@

-

Pre-processing data is critical

+

Pre-processing data is critical


-

+

Where you choose to store the data used by your Shiny app will depend largely on the type and size of the file(s) and who “owns” those data. It is likely that you’ll be working with data stored in a database or on a server. This is outside the scope of this workshop, but I suggest reading Dean Attali’s article, Persistent data storage in Shiny apps to start. Because we are going to be working with a relatively small data set, we’ll be downloading and storing our data locally (i.e. on our machines and in our GitHub repo).

-

+

Regardless of where you choose to store your data, you can help your application more quickly process inputs/outputs by providing it only as much data as needed to run. This means pre-processing your data.

-

+

FCWO_lakemonitoringdata_2011_2022_daily.csv contains 8 attributes (variables) and 18,894 observations collected from a set of 11 lakes located in the Fish Creek Watershed in northern Alaska between 2011-2022. We’ll download and save the file to a raw_data/ folder in the root directory of our repository. We’ll then pre-process the data in a separate script(s) saved to scratch/ and save a cleaned/processed version of the data to our app’s directory, /shinydashboard/data/lake_data_processed.csv. Your repository structure should look similar to example on the right:

@@ -4317,9 +4386,9 @@

-

Process lake data & save new file

+

Process lake data & save new file


-

+

NOTE: In this example exercise, I’ve removed all rows with missing values (i.e. NaNs in the Depth column & NAs in the BedTemperature column) before calculating averages. This is NOT good practice – exploring and thinking critically about missing data is an important part of data analysis, and in a real-life scenario, you should consider the most appropriate method for handling them.

@@ -4356,19 +4425,19 @@

A note on file types


-

+

Oftentimes, you may choose to save your processed data frame as a .rds file (a data file format, native to R, which stores a single R object). .rds file are relatively small (and therefore take up little storage space), take less time to import/export, and preserve data types and classes (e.g. factors and dates), eliminating the need to redefine data types after loading the file. Bear in mind that this increased speed and space-saving may come at the cost of generality – you can’t open a .rds file outside of R or read it in with another programming language (e.g. Python).

-

+

While we’ll be sticking to .csv files in this workshop, it’s worth experimenting with .rds when you begin working with your own (likely larger) data. You can read in (readRDS()) and write out to (saveRDS()) .rds files as easily as .csv files.

The R language logo overlaid on top of a database stack -- often used to represent the rds data file format.

-

Draft leaflet map

+

Draft leaflet map


-

+

There are lots of ways to customize leaflet maps. We’ll be keeping ours relatively simple, but check out the Leaflet for R documentation for more ways to get creative with your maps.

@@ -4380,8 +4449,8 @@
-
- +
+
@@ -4416,9 +4485,9 @@

-

Practice filtering leaflet observations

+

Practice filtering leaflet observations


-

+

We’ll eventually build three sliderInputs to filter lake makers by Elevation, AvgDepth, and AvgTemp. Practice filtering here first (and be sure to update the data frame name in your leaflet code!):

@@ -4430,8 +4499,8 @@
-
- +
+
@@ -4474,9 +4543,9 @@

-

Sketch out our dashboard UI

+

Sketch out our dashboard UI


-

+

I want my dashboard to have two menu items: a welcome page with some background information, and a dashboard page with my reactive map. All elements will be placed inside boxes, the primary building blocks of shinydashboards (more on that soon).


@@ -4492,12 +4561,12 @@

-

Add a title & menuItems

+

Add a title & menuItems


-

+

First, add a title to dashboardHeader() and make more space using titleWidth, if necessary.

-

+

Next, we’ll build our dashboardSidebar(). Add a sidebarMenu() that contains two menuItems. Be sure to provide each menuItem() with text as you’d like it to appear in your app (for me, that’s Welcome and Dashboard), and a tabName which will be used to place dashboardBody() content in the appropriate menuItem(). Optionally, you can provide an icon. By default, icon() uses icons from FontAwesome.

@@ -4530,9 +4599,9 @@ dashboardPage(header, sidebar, body)

-

Add tabItems to your dashboardBody

+

Add tabItems to your dashboardBody


-

+

Next, we’ll create tabItems in our dashboardBody – we’ll make a tabItem (singular) for each menuItem in our dashboardSidebar. In order to match a menuItem and a tabItem, ensure that they have matching a tabName (e.g. any content added to the dashboard tabItem will appear under the dashboard menuItem).

@@ -4586,9 +4655,9 @@ dashboardPage(header, sidebar, body)

-

Add boxes to contain UI content (part 1)

+

Add boxes to contain UI content (part 1)


-

+

Boxes are the primary building blocks of shinydashboards and can contain almost any Shiny UI element (e.g. text, inputs, outputs). Start by adding two side-by-side boxes to our dashboard tab inside a fluidRow(). Together, their widths will add up to 12 (the total width of a browser page). These boxes will eventually contain our sliderInputs and our leafletOutput.

@@ -4659,9 +4728,9 @@ dashboardPage(header, sidebar, body)

-

Add boxes to contain UI content (part 2)

+

Add boxes to contain UI content (part 2)


-

+

Lastly, add boxes to our welcome tab We’ll use columns to place one box on the left-hand side of our page, and two stacked boxes on the right-hand side. Each column will take up half the page (Note: For column-based layouts, use NULL for the box width, as the width is set by the column that contains the box). We can create two fluidRows within the right-hand column to stack two boxes vertically.

@@ -4771,7 +4840,7 @@ dashboardPage(header, sidebar, body)

-

Read data into global.R & add necessary packages

+

Read data into global.R & add necessary packages


Remember to load your pre-processed data, which should live in the /data folder within your app’s directory. @@ -4788,9 +4857,9 @@ lake_data <- read_csv("data/lake_data_processed.csv")

-

Add a sliderInput & leafletOutput to the UI

+

Add a sliderInput & leafletOutput to the UI


-

+

Start by adding just one sliderInput (for selecting a range of lake Elevations) to the left-hand box in the dashboard tab. Then, add a leafletOutput to create a placeholder space for our map, along with a Spinner animation (from the shinycssloaders package). While we’re here, we can also add titles to each box.

@@ -4908,9 +4977,9 @@ dashboardPage(header, sidebar, body)

-

Assemble inputs & outputs in server.R

+

Assemble inputs & outputs in server.R


-

+

Remember to reference your practice data viz script and to follow our three steps for creating reactive outputs. And don’t forget to add () following each reactive data frame called in your leaflet map!

@@ -4953,7 +5022,7 @@ }

-

Run your app & test out your first widget

+

Run your app & test out your first widget


If all is good, you should see something similar to this: @@ -4962,25 +5031,25 @@ Our Fish Creek Watershed Lake Monitoring dashboard. The 'Welcome' page has a box on the left for background info, and two stacked boxes on the right for data citation and disclaimer info. The 'Dashboard' tab has a sliderInput in the left-hand box, where users can select a range of elevations. When a range is selected, the blue markers on the leaflet map in the right-hand box are filtered accordingly. Clicking on the markers reveals more information about the specific site, including Site Name, Elevation, Avg Depth, and AvgTemp.

-

Exercise 5: Add two more sliderInputs to filter for AvgDepth & AvgTemp

+

Exercise 5: Add two more sliderInputs to filter for AvgDepth & AvgTemp


To Do:

-

+

Add two more sliderInputs, one for AvgDepth and one for AvgTemp beneath our first Elevation sliderInput in the UI

-

+

Update our reactive data frame so that all three widgets filter the leaflet map





-

+

See next slide for a solution!

-

Exercise 5: A solution

+

Exercise 5: A solution


    @@ -5168,7 +5237,7 @@
-
+
@@ -5177,15 +5246,15 @@

-

& Exercise 6: Add titles & text to Welcome page boxes

+

& Exercise 6: Add titles & text to Welcome page boxes


To Do:

-

+

Add titles to each box

-

+

Create a /text folder within your app’s directory and add three markdown (.md) files. Write/format text for the background info (left), data citation (top-right), and disclaimer (bottom-right) boxes. Example text below:

@@ -5218,13 +5287,13 @@

Tips:

-

+

Titles can include icons! For example: title = tagList(icon("icon-name"), strong("title text here"))

-

Exercise 6: A solution

+

Exercise 6: A solution


-

+

Press the right arrow key to advance through the newly added lines of code.

@@ -5377,12 +5446,12 @@

-

Add a static image

+

Add a static image


-

+

As a final touch, let’s add an image to the Welcome page, inside the left-hand box beneath our intro text. First, create a /www folder inside your app’s directory (refer back to this slide for a description of this special directory). Download the map of the Fish Creek Watershed from FCWO’s website here and save it to your /www directory.

-

+

Next, use the img tag to add your image. Supply a file path, relative to your /www directory, using the src argument, and alt text using the alt argument.

@@ -5513,18 +5582,18 @@ dashboardPage(header, sidebar, body)

-

Unfortunately, our image doesn’t look so great as-is…

+

Unfortunately, our image doesn’t look so great as-is…


Our Welcome page, with a map of Fish Creek Watershed beneath the intro text. The image is extremely large, spilling out of the box and across the page.

-

Use in-line CSS to adjust the image size

+

Use in-line CSS to adjust the image size


-

+

We can use in-line CSS to style our image element, as shown below (see style argument). It’s okay if you don’t fully understand what’s going on here for now – we’ll talk in greater detail about how CSS (and Sass) can be used to customize the appearance of your apps in just a bit.

-

+

I’ve also added a caption below our image that links to the image source, and used in-line CSS to center my text within the box.

@@ -5658,16 +5727,16 @@ dashboardPage(header, sidebar, body)

-

Check out your finished dashboard!

+

Check out your finished dashboard!


Our completed dashboard, with our image styled so that it fits within the background info box on the Welcome page, and three functional sliderInputs that update the leaflet map on the Dashboard page.
-

+

There’s a ton more to learn about building shinydashboards. Check out the documentation to find instructions on adding components like infoBoxes and valueBoxes, building inputs in the sidebar, easy ways to update the color theme using skins, and more.

-

Complete code for our dashboard thus far:

+

Complete code for our dashboard thus far:


    @@ -5873,43 +5942,43 @@

Part 3: Beautifying your user interface (UI)


-

+

Custom themes with bslib

-

+

Custom themes with fresh

-

+

Styling with CSS & Sass

Learning Objectives - Themeing/Styling Apps


-

+

By the end of this section, you should be equipped with:

-

+

a number of different approaches for themeing and styling your shiny apps and dashboards

-

+

a basic understanding of how to apply CSS & Sass styling to your app

-

+

Packages introduced:

-

+

bslib: provides tools for customizing Bootstrap themes directly from R for shiny apps and RMarkdowns

-

+

fresh: provides tools for creating custom themes for use with shiny, shinydashboard, and bs4Dash apps

@@ -5931,34 +6000,34 @@
-

+

Pros:

-

+

easy to use

-

+

includes a real-time themeing widget to try out themes before applying them to your own app

-

+

plays well with the thematic package for matching plot styling to app

-

+

bslib does more than just themeing! Check out the December 2022 announcement of new UI components made possible with the latest package release

-

+

Cons:

-

+

does not work with shinydashboard (bslib is only intended for use with shiny apps)

-

+

styling is constrained by the arguments available to bs_theme()

@@ -5973,7 +6042,7 @@

Apply a pre-built theme with {bslib}


-

+

By default, Shiny uses the Bootstrap v3 theme (which is not so exciting). Change the theme to a slightly more modern Bootstrap v5 theme by setting the theme argument of fluidPage() to bslib::bs_theme(version = 5), or supply bs_theme() with a pre-built bootswatch theme, as shown below (for a list of theme names, run bootswatch_themes() in your console):

@@ -5988,7 +6057,7 @@ )
-

+

Check out the complete source code for App #1 here (NOTE: applied themes are commented out).

@@ -6002,7 +6071,7 @@

Create a custom theme with {bslib}


-

+

Alternatively, you can fully customize your own theme. Explore the bslib vignette for detailed instructions. A small example here:

@@ -6021,7 +6090,7 @@ )
-

+

Check out the complete source code for App #1 here (NOTE: applied themes are commented out).

@@ -6032,13 +6101,13 @@
-

+

Be sure to check out the interactive themeing widget to test custom color/font/etc. combos by running bs_theme_preview() in your console, or visit the hosted version here. You can also call bs_themer() within your server function to open the theme customization UI alongside your own app.

-

Use {thematic} to extend your theme to plots

+

Use {thematic} to extend your theme to plots


-

+

You probably noticed that our scatterplot looks a little silly against the darker background of our themed app. Enter the {thematic} package, which is built to help simplify plot themeing. Call thematic_shiny() before launching your app to generate plots that reflect your application’s bs_theme(). For example:

@@ -6059,7 +6128,7 @@ )
-

+

Check out the complete source code for App #1 here (NOTE: applied themes are commented out).

@@ -6070,11 +6139,11 @@
-

+

Read the vignette to learn more about using the thematic package to help match plot fonts to the fonts applied across your app.

-

Using the {fresh} package to theme Shiny apps & dashboards

+

Using the {fresh} package to theme Shiny apps & dashboards


The {fresh} package provides tools for creating custom themes to use in Shiny apps and dashboards – set parameters of your theme using create_theme(), generate a stylesheet based off your specifications, and apply your stylesheet to your app. @@ -6083,25 +6152,25 @@

-

+

Pros:

-

+

easy to use

-

+

supports theme creation for both shiny apps and dashboards (and also flexdashboards and {b4dash} applications)

-

+

Cons:

-

+

styling is constrained by the variables available to create_theme()

@@ -6115,15 +6184,15 @@

-

A general workflow for using fresh themes

+

A general workflow for using fresh themes


Whether you’re working on a shiny app or a shiny dashboard, you’ll need the following:

-

+

1. a /www folder within your app’s directory – this is where we’ll save the stylesheet (a .css file) that fresh will generate for us

-

+

2. a separate script for building our theme using the create_theme() function – I recommend saving this to ~/scratch (it seemed to cause issues when saved anywhere within my app directory)

@@ -6135,12 +6204,12 @@

-

Creating a fresh theme for two-file-app

+

Creating a fresh theme for two-file-app


-

+

In this example, we update the colors of our app’s body, navbar, and tabPanels using the appropriate fresh variables for shiny apps. We specify a file path, two-file-app/www (you’ll need to create the /www directory, since we don’t have one yet), where our stylesheet (e.g. shiny_fresh_themes.css, as shown here) file will be saved to.

-

+

Of course, these color combos are not recommended, but chosen purely for demonstration purposes .

@@ -6176,7 +6245,7 @@ )

-

Apply a fresh theme to our app

+

Apply a fresh theme to our app


To apply our theme, provide the theme argument of your fluidPage() or navbarPage() with the name of our stylesheet. Note: shiny knows to look in the /www directory, so you can omit that from your file path, as shown below: @@ -6195,7 +6264,7 @@ ) # END navbarPage -

+

Check out the complete source code for App #2 here (NOTE: applied themes are commented out).

@@ -6207,9 +6276,9 @@

-

Creating a fresh theme for our shinydashboard

+

Creating a fresh theme for our shinydashboard


-

+

In this example, we update the colors of our app’s header, body, and sidebar using the appropriate fresh variables for shiny dashboards. We specify a file path, shinydashboard/www where our stylesheet (e.g. shinydashboard_fresh_themes.css, as shown here) file will be saved to. Again, these color combos are not recommended, but chosen purely for demonstration purposes.

@@ -6244,7 +6313,7 @@ )

-

Apply a fresh theme to our dashboard

+

Apply a fresh theme to our dashboard


To apply our theme, use the fresh::use_theme() function inside your dashboardBody, providing it with the name of your stylesheet. Note: shiny knows to look in the /www directory, so you can omit that from your file path, as shown below: @@ -6263,7 +6332,7 @@ ) -

+

Check out the complete source code for the shinydashboard here (NOTE: applied themes are commented out).

@@ -6284,7 +6353,7 @@

-

Using Sass & CSS to style Shiny apps & dashboards

+

Using Sass & CSS to style Shiny apps & dashboards


You can write your own stylesheets using CSS and Sass to fully customize your apps, from background colors, to font styles, to size and shape of elements, and more. Unlike bslib and fresh, these are languages, meaning they can be a bit more challenging to get started with (but the payoff it big!). @@ -6293,28 +6362,28 @@

-

+

Pros:

-

+

applies to any web page (not just shiny apps)

-

+

allows you to customize pretty much any aspect of your app

-

+

can be combined with themes generated using bslib or fresh to fine-tune your app’s styling

-

+

Cons:

-

+

a steeper learning curve/generally more complex than packages like bslib and fresh

@@ -6327,7 +6396,7 @@

-

Resources for a deeper dive

+

Resources for a deeper dive


We’ll be doing a rather high-level and quick overview of Sass & CSS today, though I encourage you to check out the Customizing Quarto Websites workshop, which takes a much deeper dive (the information in that workshop is largely applicable here). @@ -6342,7 +6411,7 @@

-

What even is CSS? Sass?

+

What even is CSS? Sass?


@@ -6350,7 +6419,7 @@ The CSS 3 logo.
-

+

CSS (Cascading Style Sheets) is a programming language that allows you to control how HTML elements look (e.g. colors, font styles, etc.) on a webpage.

@@ -6362,14 +6431,14 @@ The Sass logo
-

+

Sass (Syntactically Awesome Stylesheets) is a CSS extension language and CSS preprocessor – meaning Sass needs to be converted (aka compiled) to CSS before it can be interpreted by your web browser.

-

CSS is a rule-based language

+

CSS is a rule-based language


CSS is a rule-based language, meaning that it allows you to define groups of styles that should be applied to particular elements or groups of elements on a web page. For example, “I want all level one headings (<h1> or tags$h1() as written in Shiny) in my app to be green with a bit of extra space between each letter” could be coded as: @@ -6383,13 +6452,13 @@

-

+

Selectors select the HTML element(s) you want to style (e.g. level one headings, <h1>)

-

+

Declarations sit inside curly brackets, {}, and are made up of property and value pairs. Each pair specifies the property of the HTML element(s) you’re selecting (e.g. the color property of the element <h1>), and a value you’d like to assign to that property (e.g. green)

-

+

A property and it’s corresponding value are separated by a colon, :. Declarations end with a semicolon, ;

@@ -6398,9 +6467,9 @@ There are a variety of CSS selectors – check out some of the basics that will take you far in styling your apps, starting on this slide of the Customizing Quarto Websites workshop.

-

3 ways to add CSS styling to your apps

+

3 ways to add CSS styling to your apps


-

+

You can (1) add styling directly to tags, (2) add CSS rules to your header, and/or (3) build a stylesheet that is applied to your app. Creating a stylesheet is the preferred approach, and you should do this whenever possible.

@@ -6411,7 +6480,7 @@
-

+

Add styling directly to tags. It’s best not to use a lot of these! It’s easy to lose track of your “in-line” styling in large projects, you can’t reuse rules easily, it’s hard to keep styling consistent, and it’s difficult to implement large stylistic changes.

@@ -6456,7 +6525,7 @@
-

+

Add CSS rules to your app’s header (tags$head). This is a little bit better than option 1 since it allows for the reuse of rules, however, styles can’t be cached (i.e. saved for future usage when you reopen your app). Note: explore Google fonts here and check out this slide for instructions on selecting a font.

@@ -6509,7 +6578,7 @@
-

+

Build a stylesheet (a .css file) inside your app’s www/ directory and apply your styles to your app’s header (for shinydashboards, include your header inside dashboardBody(). This is the most ideal approach – it allows for style reuse, caching, and keeps styling contained in one spot. Tip: use touch styles.css in the terminal to create a new .css file.

@@ -6579,7 +6648,7 @@

-

Let’s practice on a small dashboard first:

+

Let’s practice on a small dashboard first:


    @@ -6698,36 +6767,36 @@

-

What if I want to style an element, but don’t know how to target it?

+

What if I want to style an element, but don’t know how to target it?


-

+

Oftentimes, you’ll have to do a bit of exploration to determine how to target specific elements for styling. In either your app viewer or web browser, right click on an element of interest and choose Inspect (or Inspect Element) to open up the underlying HTML and CSS. You can make temporary edits to your app (e.g. adding a background color, changing font sizes, etc.) to see how they look first, then copy the appropriate CSS rule into your stylesheet to apply to your app.

A shiny dashboard, opened in the RStudio viewer, with the Inspect pane open to the right. The top half of the inspect pane shows the underlying HTML and the bottom half shows the underlying CSS styles.

-

Inspect & identify how to update box styling

+

Inspect & identify how to update box styling


-

+

For example, let’s say I want to change the color of this shinydashboard’s boxes and the color of the box text.

-

+

First, we need to determine which type of HTML element creates our box. Right clicking on a box and choosing Inspect Element pulls up the HTML and CSS files underlying the app. Hovering over different parts of the HTML highlights different elements in the UI. The box is highlighted when I hover over <div class="box-body"> – this tells me that boxes are formed using the <div> HTML element and they’re assigned a class called box-body.

-

+

Next, we can (temporarily) adjust the CSS rules that style these boxes to see how they work. I can hop down to the CSS file (here, that’s located in the bottom half of my sidebar, but depending on the size of your window/layout, the HTML and CSS might be side-by-side) and find the .box-body class selector. You can add property/value pairs and/or update existing property values to adjust the appearance of our box. Notice that changing the .box-body class selector updates both boxes – upon inspecting the box containing our plot, you’ll notice that it is also of class, box-body. Therefore changes to this class selector will apply to both boxes. This process is purely for testing purposes – refreshing your app will remove any of these changes.

-

Finally, apply box styling to our dashboard

+

Finally, apply box styling to our dashboard


-

+

Now that we know that we can use the box-body class to customize the appearance of our boxes, let’s create a stylesheet and add our new rules. The shinydashboard framework already provides the “standard” styling for boxes, contained in the box-body class. Anything we specify in our own stylesheet will build upon or modify existing styling.

-

+

Remember to create a header and link your stylesheet within dashboardBody() to apply our styles.

@@ -6835,7 +6904,7 @@

-

What about Sass?

+

What about Sass?


Okay, we wrote and applied some CSS styling to our apps, but what about Sass? You don’t need to write any Sass at all, however, it provides a number of benefits, including helping to reduce repetition. @@ -6850,9 +6919,9 @@ You might imagine how often you’ll need to type those HEX codes out as you developing your stylesheet…it can get annoying rather quickly.

-

We can define and reference Sass variables throughout our stylesheet

+

We can define and reference Sass variables throughout our stylesheet


-

+

Sass allows us to define variables (in the form $var-name: value;) for our colors to reference instead of writing out their HEX codes each time:

@@ -6874,40 +6943,40 @@ border-color: $darkgray; }
-

+

If you decide that you actually like a different shade of teal better, you’ll only need to update the hex code where you first define the $teal Sass variable, saving lots of time.

-

Sass for Shiny workflow

+

Sass for Shiny workflow


To style apps using both Sass and CSS, you’ll follow this general workflow:

-

+

1. Create a .scss file inside ~/myapp/www using the touch command in the terminal (e.g. cd into the appropriate directory, then touch styles.scss). Write both your Sass variables and CSS rules in your .scss file (Note: you can write both Sass & CSS in a .scss file, but only CSS in a .css file)

-

+

2. Compile (i.e. convert) Sass to CSS in global.R (or, if using a one-file app, at the top of your script before you define your UI) using the the sass() function from the {sass} package – this will generate a .css file that our shiny app can actually use. Be sure to save your .css file to your app’s /www directory.

-

+

3. Apply your styles to your app by linking to to your .css file in your app’s header.

A chart showing the Sass to CSS workflow -- begin with writing Sass variables and CSS rule in a .scss file, then use the sass R package to compile sass to css, and finally use your compiled .css file to apply your styles to your app.

-

Let’s build our Sass file

+

Let’s build our Sass file


-

+

We’ll practice on our two-file-app – first, remove any reference to your bslib or fresh themes that we practiced applying earlier so that we’re starting off with just the default shiny styling.

-

+

Next, create your Sass file within two-file-app/www/. Then, using your terminal, cd into ~/two-file-app/www and use the touch command to create a .scss file (I’m calling mine my_sass_styles.scss).

-

+

Add Sass variables and CSS rules to my_sass_styles.scss:

@@ -6962,15 +7031,15 @@

-

Then, compile Sass to CSS

+

Then, compile Sass to CSS


-

+

Because web browsers can only interpret CSS (not Sass), we need to compile our Sass to CSS. To do this, we can use the sass() function from the {sass} package. We can do this in global.R. The sass() function requires two arguments: a sass file input and a file path + named .css file output.

-

+

We also need to apply our styles to our app by linking this newly-generated .css file in our app’s header.

-

+

Note: After running your app, you should see a my_sass_styles.css file appear in www/ – it should look quite familiar, except all of our Sass variables have been converted to CSS.

@@ -7067,10 +7136,10 @@

Part 4: Improving your app’s user experience (UX)


-

+

Important UX considerations

-

+

Web accessibility

@@ -7085,16 +7154,16 @@

Learning Objectives - UX/UI Design


-

+

After this section, you should:

-

+

have a checklist of considerations to reference each time you build an app

-

+

have a few additional resources to dive deeper into UX/UI design

@@ -7105,22 +7174,22 @@ Chapters 6 and 7 of Engineering Production-Grade Shiny Apps, by Colin Fay, Sébastien Rochette, Vincent Guyader, and Cervan Girard provide a list of considerations as you embark on your app-building journey. Some of their suggestions are summarized below, but check out the book for greater detail, examples, and additional considerations:

-

+

Simplicity is gold: using the application shouldn’t require reading a manual, and interfaces should be as self-explanatory as possible.

-

+

Adapt a defensive programming mindset: your app should always fail gracefully and informatively (e.g. provide users with a helpful error message)

-

+

Build a self-explanatory app: consider the following three suggestions for doing so – (a) remember the rule of least surprise (in UI design, always do the least surprising thing e.g. we often assume that underlined text is clickable, so if you include underlined text in your UI, there’s a good chance a user will try clicking on it). (b) think about progression (design a clear pattern of moving forward for your user), and (c) related to b, make sure that if an input is necessary, it is made clear to your user. Check out the {shinyjs} package for implementing nifty ways to improve the user experience of your shiny apps.

-

+

Avoid feature-creep: feature-creep is the process of adding features to an app that complicates its usage and maintenance – this includes adding too much reactivity and too much interactivity (e.g. plotly) – interactivity adds visual noise, so it’s best to not make elements interactive if there is no value is gained.

@@ -7148,21 +7217,21 @@

Learning Objectives - Accessibility


-

+

By the end of this section, you should:

-

+

have a general understanding of what web accessibility means and who it can benefit (spoiler alert: it benefits us all!)

-

+

know how to make a few small tweaks/updates to your application to make it more accessible for all users

-

+

have a few great resources to turn to to learn more

@@ -7173,34 +7242,34 @@ From the World Wide Web Consortium (W3C)’s Introduction to Web Accessibility:

-

+

Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them. More specifically, people can:

-

+

perceive, understand, navigate, and interact with the Web

-

+

contribute to the Web

-

+

Web accessibility encompasses all disabilities that affect access to the Web, including: auditory, cognitive, neurological, physical, speech, and visual

-

+

Web accessibility also benefits people without disabilities, for example:

-

+

people using mobile phones, smart watches, smart TVs, and other devices with small screens, different input modes, etc.

-

+

older people with changing abilities due to ageing

-

+

people with “temporary disabilities” such as a broken arm or lost glasses

-

+

people with “situational limitations” such as in bright sunlight or in an environment where they cannot listen to audio

-

+

people using a slow Internet connection, or who have limited or expensive bandwidth

@@ -7218,16 +7287,16 @@

-

+

Use HTML elements appropriately (e.g. consider hierarchy)

-

+

Include alt text for graphical elements

-

+

Consider navigation from a mobility perspective

-

+

Use colorblind-friendly palettes

@@ -7237,16 +7306,16 @@ In the center, we see a computer monitor with the world wide web symbol on the screen. There is a circle around the computer made up of four smaller circles, each containing on of the following symbols: and eye, a hand with a finger touching something, a human head with a brain, and an ear.
-

+

Image Source: Accessibility Stack

-

Use HTML elements appropriately

+

Use HTML elements appropriately


-

+

Screen readers use HTML elements to understand web page organization. Header elements create hierarchy within a webpage and are used by screen readers (i.e. devices used by those with visual impairments) to understand a page’s organizational structure. An <h1> element is more important (hierarchically speaking) than an <h2>, which is more important than an <h3>, and so on.

@@ -7281,23 +7350,23 @@


-

+

Ideally, you would only have one <h1> element (e.g. your app’s title), a small number of <h2> elements, more <h3> elements, and so on. See the minimal example, to the left.

-

+

You should not rely on headers for styling purposes – for example, you should not use a level-one header elsewhere in your app just because you want larger text. Instead, use CSS to increase text size (refer to the Customizing Quarto Websites workshop for instruction on how to construct CSS selectors for styling HTML elements).

-

Include alt text with all graphical elements

+

Include alt text with all graphical elements


All images and graphical elements should include alternative (alt) text that describe the image and/or information being represented. This text won’t appear in the UI, but is detected and read by screen readers.

-

+

Include the alt argument (similar to adding the alt attribute to an HTML element) when using renderPlot() to add alt text to your reactive plots – the alt argument lives outside of the {} but inside the (). For example:

@@ -7313,7 +7382,7 @@
-

+

Similarly, use the alt argument within tags$img when adding static images to your app. For example:

@@ -7324,7 +7393,7 @@

-

Tips on writing alt text for data visualizations

+

Tips on writing alt text for data visualizations


A good rule of thumb for writing alt text for data visualizations is alt=“Chart type of type of data where reason for including chart (see this post by Amy Cesal for more). One example: @@ -7335,22 +7404,22 @@

alt=“Bar chart of gun murders per 100,000 people where America’s murder rate is 6 times worse than Canada, and 30 times Australia

-

+

For more great tips on how and when to use alt text, check out this article by the A11Y Project. For examples of how to construct good alt text, take a peek at this resource by Datawrapper.

Consider UI navigation for those with mobility impairments


-

+

For users with mobility impairments, using a mouse to navigate a UI packed with widgets may be challenging – some users may even be exclusively using a keyboard to navigate the web.

-

+

Ideally, actions required of your user can be done using a keyboard (e.g. pressing a button in the UI) – however from a new shiny developer standpoint, this may be technically challenging to implement (the authors of Engineering Production-Grade Shiny Apps suggest the {nter} package for building shiny action buttons that can be triggered by pressing enter, however, at the time of building this workshop, the package source code hadn’t been updated since 2019).


-

+

At a minimum, consider spacing out and/or limiting the number of widgets on any given page to make navigation with a mouse as easy as possible.

@@ -7364,10 +7433,10 @@

Use colorblind-friendly palettes


-

+

About 1 in 12 males and 1 in 200 females have some form of colorblindness (Wikipedia). Ensuring that your color choices are distinguishable from one another and/or providing an additional non-color-based way (e.g. patterns, shapes) of distinguishing between treatments/variables/etc. can greatly help with interpretation of data visualizations.

-

+

There are lots of great colorblind-accessible palettes and resources (check out this one by Alex Phillips to start). Google Chrome also has a built-in vision deficiency emulator (see gif, below right; right click in your web browser > Inspect > Rendering (add tab by clicking on the three stacked dots if it’s not already open) > scroll down and choose emulation type from drop down where it says “Emulate vision deficiencies”).

@@ -7376,7 +7445,7 @@ Four color palette wheels showing the difference in perceived colors for those with normal vision, protanopia, deuteranopia, and tritanopia.
-

+

Four different forms of colorblindness. Image Source: Venngage

@@ -7387,7 +7456,7 @@ A gif of a user opening up the developer tools pane in Google Chrome and emulating how users with various vision deficiencies would see the webpage.
-

+

Using Google Chrome’s vision deficiency emulator to view webpages as seen by those with vision deficiencies

@@ -7396,10 +7465,10 @@

Part 5: Debugging & testing


-

+

Debugging approaches

-

+

Testing apps

@@ -7414,26 +7483,26 @@

Learning Objectives - Debugging


-

+

After this section, you should:

-

+

understand some of the challenges associated with debugging shiny applications

-

+

be introduced to a few approaches and tools for debugging shiny applications, including using diagnostic messages and the reactlog package.

-

+

Packages introduced:

-

+

reactlog: a reactivity visualizer for shiny

@@ -7443,26 +7512,26 @@

Shiny apps can be particularly challenging to debug for a few reasons:

-

+

Shiny is reactive, so code execution isn’t as linear as other code that you’re likely more familiar with (e.g. analytical pipelines written in “normal” R scripts, where each line of code is executed in succession)

-

+

Shiny code runs behind a web server and the Shiny framework itself, which can obscure what’s going on

While there are a number of different tools/strategies for debugging Shiny apps, I find myself turning to one (or more) of these approaches most often:

-

+

isolating pesky errors (typos, missing commas, unmatched parentheses) in the UI by commenting out code from the outside in

-

+

reducing your app to just problematic code by commenting out as much correctly-functioning code as possible

-

+

adding diagnostic messages to my reactives

-

+

using reactlog to visualize reactivity errors

@@ -7472,18 +7541,18 @@

-

Track down pesky UI errors by commenting out code from the outside in

+

Track down pesky UI errors by commenting out code from the outside in


-

+

Many of us experienced the frustrations of finding unmatched parentheses, typos, missing commas, etc. when building out our UI layout for App #2, and tracking down the issue can require some patience and persistence.

-

+

My preferred approach for troubleshooting a situation like this is to comment out all code moving from the highest-level layout function (e.g. navbarPage()) inwards, re-running your app each time you un-comment the next little bit of code, until you find the place where your app breaks.

-

+

For example, if I were to trouble shoot the UI for App #2, I’d comment out everything except ui <- navbarPage(title = "LTER Animal Data Explorer" and the ending ) # END navbarPage, then run my app to make sure an empty app with a gray navbar and title at the top appears. It does? Great. Next, un-comment the two tabPanel()s that create the “About this App” and “Explore the Data” pages. Works? Add a little bit more back in now, and continue this process. I like to un-comment/re-run all layout function code first, then begin adding back the inputs and outputs one by one. See a short, but incomplete demo to the right:

@@ -7494,60 +7563,60 @@
-

+

Ultimately, taking your time, adding lots of code comments to mark the ending parentheses of each function, and leaving space between lines of code so that you can more easily see what’s going on will save you lots of headache!

-

What about “larger” errors?

+

What about “larger” errors?


-

+

Oftentimes, you’ll need to identify larger, more complex errors, like why an output isn’t rendering correctly or even appearing in your app at all.

-

+

I often turn to two strategies:

-

+

(1) commenting out everything except the UI elements and server logic where I believe the issue is stemming from, and

-

+

(2) adding diagnostic messages to my reactives

-

+

(3)and on rare occasions, I’ll try using the {reactlog} package to help visualize my app’s reactivity in an attempt to identify the problem.

-

+

To demo these approaches, we’ll use two pre-constructed apps as examples: (1) reactlog-working (a small app that’s functioning as intended) and (2) reactlog-broken (the same small app that’s not functioning as intended).

-

I’m building an app that should look like this…

+

I’m building an app that should look like this…


-

+

In Tab 1, both the image and text should update whenever a new radio button is chosen. In Tab 2, the scatterplot should update so that only data points for penguins with body masses within our chosen range are displayed. Find the source code for this functioning app here.

A functioning shiny app with two tabs. The first tab has radioButtons that when selected, update the penguin image and description text. The second tab has a sliderInput and scatterplot.

-

…but let’s say it actually looks like this:

+

…but let’s say it actually looks like this:


-

+

In Tab 1, only the image updates whenever a new radio button is chosen, and text is missing altogether. In Tab 2, the scatterplot updates as expected whenever the body mass range is changed. Find the source code for this buggy app here.

The same shiny app as on the previous slide, but this time when the radioButtons are updated, only the image changes -- no text appears.

-

Start by commenting out functioning code

+

Start by commenting out functioning code


-

+

Even though this is a relatively small/simple app, there is still code that, for lack of a better term, gets in the way. After a quick assessment, my reactive scatterplot on Tab 2 appears to be working as expected. To help simplify the amount of code I need to look at, I’ll start by commenting out all UI elements (sliderInput & plotOutput) and server logic for building that reactive plot.

-

+

Note: As you begin building more complex apps, you may have reactives that depend on other reactives – it’s important to think about these dependencies when commenting out parts of your app for debugging purposes.

@@ -7680,9 +7749,9 @@

-

Next, add messages to your reactives

+

Next, add messages to your reactives


-

+

You can insert diagnostic messages within your reactives using message() – here, I add a short message where each text and image output should be rendered. I can run my app and see messages successfully (or in the case of a broken app, unsuccessfully) print in my RStudio console as I interact with the app. You’ll notice that the each image message (e.g. “Displaying all penguins image”) prints when a new radioButton is selected, but those associated with the text outputs do not. This tells me that code is not being executed, beginning with first if statement inside renderText and that this is a good starting location for reviewing code (e.g. carefully crosschecking all inputIds and outputIds in that section).

@@ -7823,7 +7892,7 @@

-

If helpful, use reactlog to visualize reactivity

+

If helpful, use reactlog to visualize reactivity


@@ -7831,7 +7900,7 @@

reactlog is a package/tool that provides:

-

+

“A snapshot of the history (log) of all reactive interactions within a shiny application” - Barret Schloerke in his 2019 RSTUDIO::CONF talk, Reactlog 2.0: Debugging the state of Shiny

@@ -7842,11 +7911,11 @@
-

+

Reactivity can be confusing. I recommend watching Barret Schloerke’s talk, linked above, and reading through the Shiny Reactlog vignette as you get started.

-

Using reactlog

+

Using reactlog


reactlog should already be installed as a dependency of shiny (but be sure to import the package at the top of your script using library(reactlog)). When enabled, it provides an interactive browser-based tool to visualize reactive dependencies and executions in your app. @@ -7854,73 +7923,73 @@

To use reactlog, follow these steps:

-

+

1. Load the reactlog library in you console (library(reactlog))

-

+

2. Call reactlog_enable() in your console

-

+

3. Run your app, interact with it, then quit your app

-

+

4. Launch reactlog by running shiny::reactlogShow() in your console (or use the keyboard shortcut cmd/ctrl + F3)

-

+

5. Use your <- and -> arrow keys (or A gray, left-facing play button and A gray, right-facing play button) to move forward and backward through your app’s reactive life cycle



-

+

Read about the components of the status bar and the meaning of different reactive states in the reactlog vignette.

-

Using reactlog to visualize reactivity in a correctly-functioning app

+

Using reactlog to visualize reactivity in a correctly-functioning app


-

+

To visualize the reactive life cycle of the reactlog-working app, I’ll first load the reactlog library, then call reactlog_enable() in my console. Next, I’ll run my app and interact with it. By default, All penguins is selected. For demonstration purposes, I’ll click down the list (Sassy chinstrap, Staring gentoo, and finally Adorable adelie). When done, I’ll stop my app, then run shiny::reactlogShow() in the console to open the reactlog visualizer in a browser window.

-

+

Note: I’ve left the scatter plot on Tab 2 (and it’s related UI elements) commented out (as we practiced in the earlier few slides) for this demo – the reactlog package has many features that allow you to explore reactive dependencies across your whole app, but it can get complicated quickly. For demo purposes, we’re going to work with this “smaller” version of our app, which contains just the problematic code.

-

Interpreting reactlog (used with our correctly-functioning app)

+

Interpreting reactlog (used with our correctly-functioning app)


There’s a lot to take when looking at the reactlog viewer, so let’s take it one step at a time:

-

+

(1) The radioButton input defaults to show the All penguins image and associated text. When we launch reactlog, our input , reactive expression , and outputs are Ready, meaning the calculated values are available (defaults in this case) and reactive elements have finished executing (i.e. the image and text is displayed). This Ready state is indicated by the green icons.

-

+

(2) I (the user) then updated the input by choosing Sassy chinstrap, invalidating (i.e. resetting) the input and thereby invalidating any dependencies – in this case both the image and text outputs. This Invalidating state is indicated by the gray icons.

-

+

(3) Once all dependencies are invalidated, the reactive elements can begin Calculating (i.e. executing) based on the new input (Sassy chinstrap). Elements are colored yellow when they are being calculated, then green when calculations are complete and the reactive element has been updated. In this example, first the image and then the text are calculated and updated.

-

+

(4) These same steps are repeated when I select the Staring gentoo, then Adorable adelie radioButtons

-

Using reactlog to visualize reactivity in a broken app

+

Using reactlog to visualize reactivity in a broken app


-

+

Let’s try out reactlog on our intentionally broken app (reactlog-broken, where our image changes when a radioButton user input is updated, but our text doesn’t appear). As in our functioning app, the All penguins image is selected by default. For demonstration purposes, I’ll select each option moving down the list (Sassy chinstrap, Staring gentoo, Adorable adelie) before launching reactlog.

-

+

Similar to our functioning app, the default input, All penguins, and image output are Ready (green). However, in this example our text output is not a dependency of our application’s input – there’s no linkage and the text output is Invalidated (gray).

-

+

As we click down the list of radioButtons, the image output is invalidated, then updated accordingly, but the text output remains disconnected from our input.

@@ -7932,12 +8001,12 @@

-

So what’s the issue with our app?

+

So what’s the issue with our app?


-

+

Evidence from our diagnostic messages and reactlog suggests that we should make sure that our UI and server are actually able to communicate about our desired text output. After careful inspection of our textOutput() and renderText() code, we find that a spelling error is to blame:

-

+

Our outputId in the UI is set to penguin_text:

@@ -7950,7 +8019,7 @@ )
-

+

But we call penguins_text when rendering our output in the server:

@@ -7966,7 +8035,7 @@ }) }
-

+

By updating our outputId to match in both the UI and the server, we fix our app.

@@ -7981,31 +8050,31 @@

Learning Objectives for Testing


-

+

After this section, you should:

-

+

understand some of the reasons why apps break and the benefit of having automated tests

-

+

have a basic understanding of how to use the shinytest2 package to create regression tests

-

+

know how to rerun tests

-

+

Packages introduced:

-

+

shinytest2: provides tools for creating and running automated tests on Shiny applications

@@ -8017,17 +8086,17 @@ It’s almost inevitable that apps will break – there are lots of reasons why this happens, but to name a few:

-

+

an upgraded R package(s) has a different behavior (this includes shiny) – this is especially relevant for those apps hosted on servers, where server software (including packages) may be updated by system administrators

-

+

you make changes to your app

-

+

an external data source stops working or returns data in a different format than expected by your app

@@ -8048,7 +8117,7 @@

From the shinytest2 documentation:

-

+

shinytest2 uses testthat’s snapshot-based testing strategy. The first time it runs a set of tests for an application, it performs some scripted interactions with the app and takes one or more snapshots of the application’s state. These snapshots are saved to disk so that future runs of the tests can compare their results to them.

@@ -8059,7 +8128,7 @@
-

+

Rather than having to write tests by hand, you can interact with your app via the “app recorder” and shinytest2 will record the test code automatically for you. Simply rerun tests to check for consistency.

@@ -8072,13 +8141,13 @@

Additional resources:

-

+

Barret Schloerke’s rstudio::conf(2022) talk, {shinytest2}: Unit testing for Shiny applications (recording)

-

+

Barret Schloerke’s 2022 Appsilon Shiny Confernce talk, {shinytest2} Testing Shiny with {testthat} (recording & GitHub repo)

-

+

Shiny testing overview, by Winston Chang – this article discussed the shinytest2 predecessor, shinytest (which is now entering maintenance mode), but provides some helpful context and is worth a read

@@ -8120,17 +8189,17 @@ Recording tests requires the following steps:

-

+

(1) Run record_test(<app-directory>) to launch the app recorder in browser window

-

+

(2) Interact with your application and tell the recorder to make an expectation (e.g. an expected value when inputX is updated) on the state at various points

-

+

(3) Quit the recorder to save and execute your tests

@@ -8138,16 +8207,16 @@

To test our app specifically, we’ll do the following:

-

+

(1) run shinytest2::record_test("testing_app") in the console to launch the recorder in a browser window

-

+

(2) interact with your app by first typing a name (e.g. Sam), then pressing the “Greet” button to display the output text

-

+

(3) click the “Expect Shiny values” button in the recorder app sidebar to set an expectation (this will record inputs, outputs, and exported values)

-

+

(4) give your test a name in the recorder app sidebar, then click “Save test and exit” - this will save the recorded test and setup the testing infrastructure, if it doesn’t exit already

@@ -8178,7 +8247,7 @@
-

+

(located at <app-directory>/tests/testthat/setup-shinytest2.R); For more complex apps, you’ll often have support files (e.g. those contained in <app-directory>/R and/or global.R) – content from those files will be stored here so that it is made accessible to your test(s). Since we don’t have any support files for our rather small/somewhat simple app, you should only see the following:

@@ -8187,7 +8256,7 @@
-

+

(located at <app-directory>/tests/testthat/test-shinytest2.R); This test script contains your recorded test, and should automatically open when you finish recording and save your test. You can manually modify this test (e.g. add additional interactions and expectations), if you wish. Yours should look similar to this:

@@ -8202,7 +8271,7 @@
-

+

(located at <app-directory>/tests/testthat/_snaps/shinytest2/*_.png); This is a screenshot of your app from when app$expect_values() was called – this file should be tracked using git so that you know how your app visually changes over time. My .png file looks like this:

@@ -8210,7 +8279,7 @@
-

+

(located at <app-directory>/tests/testthat/_snaps/shinytest2/*.json); This is a JSON representation of the state of the app when app$expect_values() was called – you’ll see the state of all input, output, and export values at the time of the snapshot (we don’t have any exports in our example app, but we do have a name input and a greeting output). This file should be tracked with git so that you have a record of your expected results. Your .json file should look something like this:

@@ -8245,7 +8314,7 @@


-

+

This is only a brief intro to shinytest2! Dig into the documentation to learn more.

@@ -8253,10 +8322,10 @@

Part 6: Streamlining code


-

+

Writing functions

-

+

Shiny modules

@@ -8271,26 +8340,26 @@

Learning Objectives - Functions


-

+

By the end of this section, you should:

-

+

understand the benefits of turning UI elements and server logic into functions

-

+

know where to write/save your functions

-

+

successfully turn a repeated input into a function

-

+

successfully turn a piece of server logic into a function

@@ -8300,26 +8369,26 @@

Functions are useful for a wide variety of reasons. Most notably:

-

+

reducing redundancy

-

+

reducing complexity

-

+

increasing code comprehension

-

+

increasing testability

Importantly, functions can live outside of your app file(s) (i.e. app.R or ui.R, server.R and global.R), helping you to break up/streamline your code. Hadley Wickham recommends creating a folder called /R inside your app’s directory (e.g. ~/app-directory/R/...) and:

-

+

(a) storing larger functions in their own files (e.g. ~/app-directory/R/{function-name}.R) and/or

-

+

(b) creating a utils.R file (e.g ~/app-directory/R/utils.R) to store smaller, simpler functions all in one script.

@@ -8327,9 +8396,9 @@

-

Create a small app for function practice

+

Create a small app for function practice


-

+

Create a new subdirectory called functions-app/ and add your ui.R, server.R, and global.R files with the following code. Run your app to see how it functions.

@@ -8455,7 +8524,7 @@

-

Identify code duplication in ui.R

+

Identify code duplication in ui.R


Let’s first focus on the UI – where do we have nearly identically duplicated code? @@ -8506,19 +8575,19 @@

-

Write a function for adding a pickerInput to select for penguin species

+

Write a function for adding a pickerInput to select for penguin species


-

+

This app includes two pickerInputs, both of which allow users to select which penguin species to display data for. The only difference between both pickerInputs is the inputId. Let’s write a function for our penguin species pickerInput that we can use in place of these two, rather long, chunks of code.

-

+

First, create an /R folder inside your functions-app directory. Then, add a new script to this folder. I’m calling mine penguinSpp_pickerInput.R.

-

+

Since the only difference between our original two pickerInputs are their inputIds, we can write a function that takes inputId as an argument (Recall that inputIds must be unique within an app, so it makes sense that both of our pickerInputs have different inputIds).

-

+

Once written, source() your function script into global.R (if necessary) to make your function available for use in your app.

@@ -8554,9 +8623,9 @@

-

Apply your function in ui.R

+

Apply your function in ui.R


-

+

Finally, replace your original UI code for building both pickerInputs with our penguinSpp_pickerInput() function, save, and run your app. It should look exactly the same as before!

@@ -8601,9 +8670,9 @@ By turning our pickerInput code into a function, we not only reduced ten lines of UI code into two, but we also made our UI code a bit easier to read – our function, penguinSpp_pickerInput() tells a reader/collaborator/future you exactly what that line of code is meant to do, which is create a pickerInput that allows users to select penguin species. Even without code comments or additional context, one may deduce what that line of code does.

-

Turn reactives & rendered outputs into functions

+

Turn reactives & rendered outputs into functions


-

+

Next, let’s see where we can streamline our server code using functions. We have two discrete sections of code – (1) a reactive data frame and scatterplot output and (2) a reactive data frame and histogram output.

@@ -8655,18 +8724,18 @@ } # END server

-

Create a function to builds our scatterplot

+

Create a function to builds our scatterplot


-

+

First, create a new file in ~/function-app/R and name it build_penguin_histogram.R (or a name that is succinct/clear – I’m going to name my function similarly).

-

+

The goal of my function is to filter the penguins data based on the user input and render our ggplot scatterplot. To start, I’m going to cut/paste both the code to generate the reactive filtered_spp_histogram data frame and the renderPlot() code from server.R into our build_penguin_histogram() function.

-

+

Important: In isolation, our function does not know about the user input (input is not in our global environment, it’s only known within the server() function). Therefore, we must pass input as an argument to our function.

-

+

Note that in R, functions return the last executed line – when we run build_penguin_histogram() in our server, it will return the object created by renderPlot().

@@ -8695,9 +8764,9 @@ }

-

Now use your function inside the server

+

Now use your function inside the server


-

+

Remember, the output of build_penguin_scatterplot() is renderPlot(), which is used to build our reactive scatterplot. Following our rules for creating reactivity, we need to save our function’s output to output$penguin_scatterplot. In doing so, we reduced 23 lines of code to 1 inside our server function.

@@ -8730,9 +8799,9 @@ } # END server

-

Build a function to create our histogram

+

Build a function to create our histogram


-

+

We can repeat a similar process to create a function for building our histogram:

@@ -8795,49 +8864,49 @@

Learning Objectives - Modules


-

+

By the end of this section, you should have an intro-level understanding of:

-

+

what is a shiny module and when it might make sense to build one

-

+

the structure of a shiny module

-

+

how to use a module

-

+

Packages introduced:

-

+

Box Open gapminder: data

-

The utility of modules is best demonstrated by taking a look at an example app

+

The utility of modules is best demonstrated by taking a look at an example app


-

+

This app, developed by Garrett Grolemund & Joe Cheng’s as part of their Modules lesson, taught at the 2016 Shiny Developer Conference, is a prime candidate for modularization.

-

+

It uses the gapminder data set to display life expectancy by GDP per capita from 1952 to 2007 for Africa, the Americas, Asia, Europe, Oceania, and all regions collectively. The only difference between each tab is the subset of data displayed.

The gapminder app, which has 6 tabs, one for each global region. A bubble plot takes up the width of the ap and displays Life Expectancy by GDP per capita, where each bubble represents a country and the size of bubbles represent the population size of that country. An automated sliderInput advances through the years (1952-2007), and the plot updates accordingly.

-

The code for this app isn’t particularly complex, but it’s repetitive and long

+

The code for this app isn’t particularly complex, but it’s repetitive and long


# app.R
@@ -9164,13 +9233,13 @@
 shinyApp(ui = ui, server = server)

-
+
Repeated code sections
-

+

Taking a closer look at the gapminder app code, we’ll see that the following sections of code are repeated for each region (6 times total; only code sections for “all” regions shown below):

-

+

tabPanel (UI)

@@ -9181,7 +9250,7 @@ value = 1952, min = 1952, max = 2007, step = 5, animate = animationOptions(interval = 500)))
-

+

reactive data frame (server)

@@ -9190,7 +9259,7 @@ filter(all_data, year == input$all_year) })
-

+

reactive data frame (server)

@@ -9199,7 +9268,7 @@ filter(all_data, year == input$all_year) })
-

+

calculating date ranges (server)

@@ -9208,9 +9277,9 @@ yrange_all <- range(all_data$lifeExp)

-

Repeated code sections (cont.)

+

Repeated code sections (cont.)


-

+

renderPlot({}) (server)

@@ -9263,7 +9332,7 @@

-

What do modules look like?

+

What do modules look like?


Modules are a coding pattern, organized into two functions: one that creates the UI elements and one that loads the server logic. They can look a bit different, depending on your module, but they generally follow this pattern: @@ -9295,7 +9364,7 @@ }

-

Where should I define/save my module?

+

Where should I define/save my module?


Part of the appeal of creating modules is breaking your long app.R (or ui.R & server.R) scripts into smaller pieces. Creating a separate R script to house a given module (both the UI and Server function components) is typically the best course of action (a good naming convention is giving it a descriptive name with the suffix “Module” e.g. gapModule.R). There are a variety of places you can write and/or save your modularized code to, but I recommend one of the following two options (at least while we’re just getting started on our shiny modules journey): @@ -9304,7 +9373,7 @@

(1) save your modularized code script inside your app’s directory (e.g. ~/app-directory/myModule.R)

-

+

If you choose this option, call source("myModule.R") from global.R (if using ui.R/server.R) or app.R.

@@ -9312,17 +9381,17 @@

(2) save your modularized code script inside the /R subdirectory of your application (e.g. ~/app-directory/R/myModule.R)

-

+

If you choose this option, your module will automatically be sourced (as of Shiny 1.5.0) when the application is loaded.

-

Breaking down the UI function:

+

Breaking down the UI function:


-

+

The UI part of a module needs to do two things: (1) return a shiny element (e.g. an input & output), and (2) assign module elements to a unique namespace using NS(). NS() provides an easy way to help with namespacing within your module, ensuring that each time your module is called, a unique id is assigned.

-

+

The UI function for our gapminder module will look like this (NOTE: code comments below denote the general order of operations I followed when writing this UI function):

@@ -9344,16 +9413,16 @@ } # END gapModuleUI function
-

+

Wrapping our input and output Ids in ns() will create unique Ids each time our module is called, preventing things from overwriting one one another. For example, if we call gapModuleUI(id = "myFirstModuleCall"), our outputId will be set to myFirstModuleCall-plot and our inputId will be set to myFirstModuleCall-year. Calling our module a second time (e.g. gapModuleUI(id = "mySecondModuleCall")) will generate two new unique Ids (e.g. mySecondModuleCall-plot & mySecondModuleCall-year).

-

Breaking down the Server function:

+

Breaking down the Server function:


-

+

The server part of a module looks very similar to a normal (i.e. non-modular) Shiny app server function. Begin by defining your module server function name and provide it with the first required parameter, id, along with any other necessary parameters (we also need to pass our particular function a data parameter to differentiate between data subsets (e.g. All vs. Africa vs. Asia etc.)).

-

+

Next, call moduleServer() inside your server function and pass it the id variable, along with the module function. The module function must have three parameters: input, output, and session. You do not have to use ns() to refer to inputs and outputs here. Copy server code from our original app, plop it inside the module function, and sub in our data parameter where ever a data frame subset is called.

@@ -9410,9 +9479,9 @@ } # END server function

-

Now let’s use our module:

+

Now let’s use our module:


-

+

First, since we’ve saved our gapModule.R file to our app’s directory, we’ll need to source it at the top of our app.R file:

@@ -9432,9 +9501,9 @@ oceania_data <- filter(gapminder, continent == "Oceania")

-

Now let’s use our module:

+

Now let’s use our module:


-

+

Next, let’s use our module’s UI function. We’ll need to define/name each of our tabPanels (one for each of our six regions), but rather than building a plotOutput and sliderInput inside each tabPanel (each with unique Ids), we can instead call our gapModuleUI() function, and ensure that each time we call it to supply a unique character string for our id parameter.

@@ -9474,9 +9543,9 @@ ) # END fluidPage

-

Now let’s use our module:

+

Now let’s use our module:


-

+

Finally, we can re-write our server. Rather than writing out the lengthy code required to make each plot six times over, we can instead call our gapModuleServer() function, supplying each call with ids that match those used in gapModuleUI(), along with the appropriate data subset. Now, run your app! If written correctly, your app should run exactly the same as your initial version.

@@ -9531,36 +9600,36 @@ shinyApp(ui = ui, server = server)

-

Additional module resources

+

Additional module resources


We’ve barely scratched the surface of modules. Continue on with some of the following resources:

-

+

Modularizing Shiny App Code & associated materials, by Garrett Grolemund & Joe Cheng at the 2016 Shiny Developer’s Conference – NOTE: This 2016 talk is an excellent introduction to modules and is definitely worth a watch, especially because we just explored the exact example demoed by G. Grolemund. Please note, however, that Shiny modules were overhauled in 2020 with the introduction of moduleServer(). The code on the previous slides has been updated to reflect those changes, and therefore differs slightly from what’s taught in this video.

-

+

Mastering Shiny, Ch. 19 - Shiny Modules, by Hadley Wickham

-

+

Modularizing Shiny app code, by Winston Chang

-

+

Effective use of Shiny modules in application development, by Eric Nantz at rstudio::conf(2019)

-

+

A beginners guide to Shiny modules, by Emily Riederer

Part 7: Wrap-up


-

+

Shiny alternatives

-

+

Words of wisdom

-

+

More resources

@@ -9575,21 +9644,21 @@

Additional data presentation frameworks


-

+

Shiny is awesome, but depending on your goals, vision, and end users, you may not need the full functionality that shiny provides. You can potentially save yourself (and your clients) the stress of deploying and maintaining apps by first considering other options:

-

+

Widgets aren’t only for Shiny! Embed interactive htmlwidgets into your R Markdown documents that range from geo-spatial mapping with leaflet to generating network graph diagrams with DiagrammeR. Check out the htmlwidgets for R - gallery for many more options.

-

+

Compose multiple widgets into a dashboard using flexdashboard. Based in R Markdown, this framework allows you to produce dynamic dashboards using tools you are already familiar with. Find example projects and their source code here.

-

+

Embed reactive shiny components (e.g. inputs & outputs) in Quarto documents. By using some fun new code chunk options, you can instruct Quarto to spin up it’s own self-contained shiny server to run your reactives. Read the Quarto documentation to learn more and check out some teaching examples here.

@@ -9599,10 +9668,10 @@

Example flexdashboards built by some familiar folks


-

+

Energy Siting Dashboard (source code), developed by MEDS 2022 alumni Paloma Cartwright, Joe DeCesaro, Daniel Kerstan & Desik Somasundaram as part of their MEDS capstone project – explore predictions of the most suitable locations for large, utility-scale wind and solar projects across the United States

-

+

@ADELPHIRESEARCH TWEETS Dashboard (source code), developed by R-Lady Shannon Pileggi as part of a job interview – read about this clever approach to showcasing your skills to a potential employer in Shannon’s blogpost, A job interview presentation inspired by the R community.

@@ -9617,69 +9686,69 @@

Some takeaway messages that are worth keeping in mind


-

+

Oftentimes, the most time consuming part of building a shiny app is deciding on how to present the data visually – make your data visualizations first, outside of shiny, refine, decide which variables you think are important enough to make reactive, etc. THEN, build them into your shiny application.

-

+

Get your data in the most wrangled form possible before loading it into your app to avoid unnecessary slowdowns.

-

+

Code expands quickly – stay organized! Create a repository map (see an example in this README), so you and your collaborators know where files live and what they do. Use rainbow parentheses, add extra space between sections of code, and include clear code comments to denote the start and end of parentheses. This will help save headaches later on.

-

+

Keep in mind the considerations for good UX/UI design. You’re building an app for the user first and foremost – be sure to assess often if your app is going to meet their needs.

-

+

Before taking the plunge, consider if you really need shiny at all – maintaining apps can be challenging. What other options might you have for sharing your data with end users?

-

Great Shiny resources

+

Great Shiny resources


-

+

A quick Google search will yield lots of online resources, forum discussions, video tutorials, etc. for building Shiny applications. Many are linked throughout these slides, but here’s an attempt at putting some of those that I referenced most often all in one spot (along with some that we didn’t have time to cover). Be sure to poke around online yourself, and let me know if you come across any that you find particularly useful so that I can add them here!

-

+

Books

-

+

Mastering Shiny, by Hadley Wickham

-

+

Engineering Production-Grade Shiny Apps, by Colin Fay, Sébastien Rochette, Vincent Guyader & Cervan Girard.

-

+

Building Web Apps with R, by Lisa DeBruine – an short course (paired with an online book with instructions, resources, etc.)

-

+

Tutorials

-

+

Building Shiny apps - an interactive tutorial, by Dean Attali

-

+

Speeding Up R Shiny, by Jakub Sobolewski in R bloggers – details methods on improving app performance

-

+

Allison Horst’s The Basics of Building Shiny Apps in R workshop

-

+

Tools

-

+

R Shiny & FontAwesome Icons – How to Use Them in Your Dashboards, by Dario Radečić in R Bloggers – instructions for setting up your fontawesome kit

-

+

Shiny UI Editor and Nick Strayer’s rstudio::conf(2022) talk introducing it – a visual tool for building the UI portion of a Shiny application that generates clean and human-readable code (currently in Alpha, as of January 2023)

-

+

The {golem} package provides an opinionated framework for building production-grade shiny applications and is a part of a growing ecosystem of packages called the {golemverse}. There are lots of accompanying learning materials, including the book, Engineering Production Grade Shiny Apps, by Colin Fay, Sébastien Rochette, Vincent Guyader, and Cervan Girard.

@@ -9688,13 +9757,13 @@

Posit/RStudio’s great instructional resources, examples, and help documentation:

-

+

A thoughtfully organized Articles page

-

+

The Shiny User Showcase, a collection of Shiny apps and their source code developed by the Shiny developer community – many of these featured apps are winners or honorable mentions of the annual Shiny contest!

-

+

Shiny Demos, a series of apps created by the Shiny developers to highlight specific features of the shiny package – these are excellent resources to turn to when you are learning how to implement a new type of widget, working on the layout of your app, and more.

diff --git a/index.qmd b/index.qmd index eff7209..04c86ad 100644 --- a/index.qmd +++ b/index.qmd @@ -57,34 +57,45 @@ format: ## {#toc data-menu-title="Table of Contents"} -[{{< fa star title="star" >}} Table of Contents {{< fa star title="star" >}}]{.slide-title-smaller} +[{{< fa star title="star" >}} Table of Contents {{< fa star title="star" >}}]{.slide-title2}

We're going to pack a lot into two days. Here's what to expect:

-

**(1)** [High-level overview of Shiny](https://ucsb-meds.github.io/EDS430-Shiny/#/1-shiny-overview)

-

What is Shiny? ~ Anatomy of a shiny app ~ Where to find examples

+

**(1)** [High-level overview of Shiny](https://ucsb-meds.github.io/EDS430-Shiny/#/1-shiny-overview)

+

What is Shiny? ~ Anatomy of a shiny app ~ Where to find examples

-

**(2)** [Building shiny apps & dashboards](https://ucsb-meds.github.io/EDS430-Shiny/#/2-building-apps)

-

Setting up your repo & files ~ App #1 (single-file app) ~ App #2 (two-file app) ~ App #3 (shinydashboard) ~ Deploying apps

+

**(2)** [Building shiny apps & dashboards](https://ucsb-meds.github.io/EDS430-Shiny/#/2-building-apps)

+

Setting up your repo & files ~ App #1 (single-file app) ~ App #2 (two-file app) ~ App #3 (shinydashboard) ~ Deploying apps

-

**(3)** [Beautifying your user interface (UI)](https://ucsb-meds.github.io/EDS430-Shiny/#/3-beautifying-ui)

-

Custom themes with `bslib` ~ Custom themes with `fresh` ~ Styling with CSS & Sass

+

**(3)** [Beautifying your user interface (UI)](https://ucsb-meds.github.io/EDS430-Shiny/#/3-beautifying-ui)

+

Custom themes with `bslib` ~ Custom themes with `fresh` ~ Styling with CSS & Sass

-

**(4)** [Improving your app's user experience (UX)](https://ucsb-meds.github.io/EDS430-Shiny/#/4-improving-ux)

-

Important UX considerations ~ Web accessibility

+

**(4)** [Improving your app's user experience (UX)](https://ucsb-meds.github.io/EDS430-Shiny/#/4-improving-ux)

+

Important UX considerations ~ Web accessibility

-

**(5)** [Debugging & Testing](https://ucsb-meds.github.io/EDS430-Shiny/#/5-debugging-testing)

-

Debugging approaches ~ Testing apps

+

**(5)** [Debugging & Testing](https://ucsb-meds.github.io/EDS430-Shiny/#/5-debugging-testing)

+

Debugging approaches ~ Testing apps

-

**(6)** [Streamlining code](https://ucsb-meds.github.io/EDS430-Shiny/#/6-streamlining-code)

-

Writing functions ~ Shiny modules

+

**(6)** [Streamlining code](https://ucsb-meds.github.io/EDS430-Shiny/#/6-streamlining-code)

+

Writing functions ~ Shiny modules

-

**(7)** [Wrap-up](https://ucsb-meds.github.io/EDS430-Shiny/#/7-wrap-up)

-

Shiny alternatives ~ Words of wisdom ~ More resources

+

**(7)** [Wrap-up](https://ucsb-meds.github.io/EDS430-Shiny/#/7-wrap-up)

+

Shiny alternatives ~ Words of wisdom ~ More resources

-

You can reference the source code of all the apps we'll be building/playing with throughout this workshop on [`r fontawesome::fa("github", fill = "#78A540", a11y = "sem")` GitHub](https://github.com/samanthacsik/EDS430-shiny-app).

+--- + +## {#toc data-menu-title="Table of Contents"} + +[{{< fa code title="the symbol for code, " >}} See the source code {{< fa code title="the symbol for code, " >}}]{.slide-title} + +
+ +
+
+ +

You can reference the source code of all the apps we'll be building/playing with throughout this workshop on [`r fontawesome::fa("github", fill = "#78A540", a11y = "sem")` GitHub](https://github.com/samanthacsik/EDS430-shiny-app).

--- @@ -94,11 +105,11 @@ format:
-

{{< fa angle-right title="a bullet point" >}} What is Shiny?

+

{{< fa angle-right title="a bullet point" >}} What is Shiny?

-

{{< fa angle-right title="a bullet point" >}} Anatomy of a shiny app

+

{{< fa angle-right title="a bullet point" >}} Anatomy of a shiny app

-

{{< fa angle-right title="a bullet point" >}} Where to find examples

+

{{< fa angle-right title="a bullet point" >}} Where to find examples

--- @@ -116,15 +127,15 @@ format:
-

{{< fa angle-right title="a bullet point" >}} Setting up your repo & files

+

{{< fa angle-right title="a bullet point" >}} Setting up your repo & files

-

{{< fa angle-right title="a bullet point" >}} App #1 (single-file app) - [source code](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/single-file-app)

+

{{< fa angle-right title="a bullet point" >}} App #1 (single-file app) - [source code](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/single-file-app)

-

{{< fa angle-right title="a bullet point" >}} App #2 (two-file app) - [source code](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/two-file-app)

+

{{< fa angle-right title="a bullet point" >}} App #2 (two-file app) - [source code](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/two-file-app)

-

{{< fa angle-right title="a bullet point" >}} App #3 (shinydashboard) - [source code](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/shinydashboard)

+

{{< fa angle-right title="a bullet point" >}} App #3 (shinydashboard) - [source code](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/shinydashboard)

-

{{< fa angle-right title="a bullet point" >}} Deploying (& redeploying) apps

+

{{< fa angle-right title="a bullet point" >}} Deploying (& redeploying) apps

--- @@ -295,11 +306,11 @@ countdown::countdown(
-

{{< fa angle-right title="a bullet point" >}} Custom themes with `bslib`

+

{{< fa angle-right title="a bullet point" >}} Custom themes with `bslib`

-

{{< fa angle-right title="a bullet point" >}} Custom themes with `fresh`

+

{{< fa angle-right title="a bullet point" >}} Custom themes with `fresh`

-

{{< fa angle-right title="a bullet point" >}} Styling with CSS & Sass

+

{{< fa angle-right title="a bullet point" >}} Styling with CSS & Sass

--- @@ -313,9 +324,9 @@ countdown::countdown(
-

{{< fa angle-right title="a bullet point" >}} Important UX considerations

+

{{< fa angle-right title="a bullet point" >}} Important UX considerations

-

{{< fa angle-right title="a bullet point" >}} Web accessibility

+

{{< fa angle-right title="a bullet point" >}} Web accessibility

--- @@ -333,9 +344,9 @@ countdown::countdown(
-

{{< fa angle-right title="a bullet point" >}} Debugging approaches

+

{{< fa angle-right title="a bullet point" >}} Debugging approaches

-

{{< fa angle-right title="a bullet point" >}} Testing apps

+

{{< fa angle-right title="a bullet point" >}} Testing apps

--- @@ -353,9 +364,9 @@ countdown::countdown(
-

{{< fa angle-right title="a bullet point" >}} Writing functions

+

{{< fa angle-right title="a bullet point" >}} Writing functions

-

{{< fa angle-right title="a bullet point" >}} Shiny modules

+

{{< fa angle-right title="a bullet point" >}} Shiny modules

--- @@ -373,11 +384,11 @@ countdown::countdown(
-

{{< fa angle-right title="a bullet point" >}} Shiny alternatives

+

{{< fa angle-right title="a bullet point" >}} Shiny alternatives

-

{{< fa angle-right title="a bullet point" >}} Words of wisdom

+

{{< fa angle-right title="a bullet point" >}} Words of wisdom

-

{{< fa angle-right title="a bullet point" >}} More resources

+

{{< fa angle-right title="a bullet point" >}} More resources

--- diff --git a/index_files/libs/revealjs/dist/theme/quarto.css b/index_files/libs/revealjs/dist/theme/quarto.css index 5904ec2..909b47a 100644 --- a/index_files/libs/revealjs/dist/theme/quarto.css +++ b/index_files/libs/revealjs/dist/theme/quarto.css @@ -2,4 +2,4 @@ * * ansi colors from IPython notebook's * -*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #FFFFFF;--quarto-body-color: #222;--quarto-text-muted: #6f6f6f;--quarto-border-color: #bbbbbb;--quarto-border-width: 1px;--quarto-border-radius: 4px}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:absolute;right:.5em;left:inherit;background-color:rgba(0,0,0,0)}:root{--mermaid-bg-color: #FFFFFF;--mermaid-edge-color: #999;--mermaid-node-fg-color: #222;--mermaid-fg-color: #222;--mermaid-fg-color--lighter: #3c3c3c;--mermaid-fg-color--lightest: #555555;--mermaid-font-family: Montserrat, sans-serif;--mermaid-label-bg-color: #FFFFFF;--mermaid-label-fg-color: #468;--mermaid-node-bg-color: rgba(68, 102, 136, 0.1);--mermaid-node-fg-color: #222}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}pre.sourceCode:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}pre.sourceCode:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}.panel-tabset [role=tablist]{border-bottom:1px solid #bbb;list-style:none;margin:0;padding:0;width:100%}.panel-tabset [role=tablist] *{-webkit-box-sizing:border-box;box-sizing:border-box}@media(min-width: 30em){.panel-tabset [role=tablist] li{display:inline-block}}.panel-tabset [role=tab]{border:1px solid rgba(0,0,0,0);border-top-color:#bbb;display:block;padding:.5em 1em;text-decoration:none}@media(min-width: 30em){.panel-tabset [role=tab]{border-top-color:rgba(0,0,0,0);display:inline-block;margin-bottom:-1px}}.panel-tabset [role=tab][aria-selected=true]{background-color:#bbb}@media(min-width: 30em){.panel-tabset [role=tab][aria-selected=true]{background-color:rgba(0,0,0,0);border:1px solid #bbb;border-bottom-color:#fff}}@media(min-width: 30em){.panel-tabset [role=tab]:hover:not([aria-selected=true]){border:1px solid #bbb}}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file,.code-with-filename .code-with-filename-file pre{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file,.quarto-dark .code-with-filename .code-with-filename-file pre{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.reveal.center .slide aside,.reveal.center .slide div.aside{position:initial}section.has-light-background,section.has-light-background h1,section.has-light-background h2,section.has-light-background h3,section.has-light-background h4,section.has-light-background h5,section.has-light-background h6{color:#222}section.has-light-background a,section.has-light-background a:hover{color:#2a76dd}section.has-light-background code{color:#4758ab}section.has-dark-background,section.has-dark-background h1,section.has-dark-background h2,section.has-dark-background h3,section.has-dark-background h4,section.has-dark-background h5,section.has-dark-background h6{color:#fff}section.has-dark-background a,section.has-dark-background a:hover{color:#42affa}section.has-dark-background code{color:#ffa07a}#title-slide,div.reveal div.slides section.quarto-title-block{text-align:"left"}#title-slide .subtitle,div.reveal div.slides section.quarto-title-block .subtitle{margin-bottom:2.5rem}.reveal .slides{text-align:left}.reveal .title-slide h1{font-size:1.6em}.reveal[data-navigation-mode=linear] .title-slide h1{font-size:2.5em}.reveal div.sourceCode{border:1px solid #bbb;border-radius:4px}.reveal pre{width:100%;box-shadow:none;background-color:#f7f7f7;border:none;margin:0;font-size:.4em}.reveal code{color:#900c3f;background-color:#f7f7f7;white-space:pre-wrap}.reveal pre.sourceCode code{background-color:#f7f7f7;padding:6px 9px;max-height:500px;white-space:pre}.reveal pre code{background-color:#fff;color:#222}.reveal .column-output-location{display:flex;align-items:stretch}.reveal .column-output-location .column:first-of-type div.sourceCode{height:100%;background-color:#f7f7f7}.reveal blockquote{display:block;position:relative;color:#6f6f6f;width:unset;margin:var(--r-block-margin) auto;padding:.625rem 1.75rem;border-left:.25rem solid #6f6f6f;font-style:normal;background:none;box-shadow:none}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:block}.reveal .slide aside,.reveal .slide div.aside{position:absolute;bottom:20px;font-size:0.7em;color:#6f6f6f}.reveal .slide sup{font-size:0.7em}.reveal .slide.scrollable aside,.reveal .slide.scrollable div.aside{position:relative;margin-top:1em}.reveal .slide aside .aside-footnotes{margin-bottom:0}.reveal .slide aside .aside-footnotes li:first-of-type{margin-top:0}.reveal .layout-sidebar{display:flex;width:100%;margin-top:.8em}.reveal .layout-sidebar .panel-sidebar{width:270px}.reveal .layout-sidebar-left .panel-sidebar{margin-right:calc(0.5em * 2)}.reveal .layout-sidebar-right .panel-sidebar{margin-left:calc(0.5em * 2)}.reveal .layout-sidebar .panel-fill,.reveal .layout-sidebar .panel-center,.reveal .layout-sidebar .panel-tabset{flex:1}.reveal .panel-input,.reveal .panel-sidebar{font-size:.5em;padding:.5em;border-style:solid;border-color:#bbb;border-width:1px;border-radius:4px;background-color:#f8f9fa}.reveal .panel-sidebar :first-child,.reveal .panel-fill :first-child{margin-top:0}.reveal .panel-sidebar :last-child,.reveal .panel-fill :last-child{margin-bottom:0}.panel-input>div,.panel-input>div>div{vertical-align:middle;padding-right:1em}.reveal p,.reveal .slides section,.reveal .slides section>section{line-height:1.3}.reveal.smaller .slides section,.reveal .slides section.smaller,.reveal .slides section .callout{font-size:0.7em}.reveal.smaller .slides h1,.reveal .slides section.smaller h1{font-size:calc(2.5em / 0.7)}.reveal.smaller .slides h2,.reveal .slides section.smaller h2{font-size:calc(1.6em / 0.7)}.reveal.smaller .slides h3,.reveal .slides section.smaller h3{font-size:calc(1.3em / 0.7)}.reveal .columns>.column>:not(ul,ol){margin-left:.25em;margin-right:.25em}.reveal .columns>.column:first-child>:not(ul,ol){margin-right:.5em;margin-left:0}.reveal .columns>.column:last-child>:not(ul,ol){margin-right:0;margin-left:.5em}.reveal .slide-number{color:#92bf59;background-color:#fff}.reveal .footer{color:#6f6f6f}.reveal .footer a{color:#78a540}.reveal .slide-number{color:#6f6f6f}.reveal .slide figure>figcaption,.reveal .slide img.stretch+p.caption,.reveal .slide img.r-stretch+p.caption{font-size:0.7em}@media screen and (min-width: 500px){.reveal .controls[data-controls-layout=edges] .navigate-left{left:.2em}.reveal .controls[data-controls-layout=edges] .navigate-right{right:.2em}.reveal .controls[data-controls-layout=edges] .navigate-up{top:.4em}.reveal .controls[data-controls-layout=edges] .navigate-down{bottom:2.3em}}.tippy-box[data-theme~=light-border]{background-color:#fff;color:#222;border-radius:4px;border:solid 1px #6f6f6f;font-size:.6em}.tippy-box[data-theme~=light-border] .tippy-arrow{color:#6f6f6f}.tippy-box[data-placement^=bottom]>.tippy-content{padding:7px 10px;z-index:1}.reveal .callout.callout-style-simple .callout-body,.reveal .callout.callout-style-default .callout-body,.reveal .callout.callout-style-simple div.callout-title,.reveal .callout.callout-style-default div.callout-title{font-size:inherit}.reveal .callout.callout-style-default .callout-icon::before,.reveal .callout.callout-style-simple .callout-icon::before{height:2rem;width:2rem;background-size:2rem 2rem}.reveal .callout.callout-titled .callout-title p{margin-top:.5em}.reveal .callout.callout-titled .callout-icon::before{margin-top:1rem}.reveal .callout.callout-titled .callout-body>.callout-content>:last-child{margin-bottom:1rem}.reveal .panel-tabset [role=tab]{padding:.25em .7em}.reveal .slide-menu-button .fa-bars::before{background-image:url('data:image/svg+xml,')}.reveal .slide-chalkboard-buttons .fa-easel2::before{background-image:url('data:image/svg+xml,')}.reveal .slide-chalkboard-buttons .fa-brush::before{background-image:url('data:image/svg+xml,')}/*! light */.reveal ol[type=a]{list-style-type:lower-alpha}.reveal ol[type=a s]{list-style-type:lower-alpha}.reveal ol[type=A s]{list-style-type:upper-alpha}.reveal ol[type=i]{list-style-type:lower-roman}.reveal ol[type=i s]{list-style-type:lower-roman}.reveal ol[type=I s]{list-style-type:upper-roman}.reveal ol[type="1"]{list-style-type:decimal}.reveal ul.task-list{list-style:none}.reveal ul.task-list li input[type=checkbox]{width:2em;height:2em;margin:0 1em .5em -1.6em;vertical-align:middle}div.cell-output-display div.pagedtable-wrapper table.table{font-size:.6em}.reveal .code-annotation-container-hidden{display:none}.reveal code.sourceCode button.code-annotation-anchor,.reveal code.sourceCode .code-annotation-anchor{font-family:"Roboto Mono",monospace;color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;font-size:.7em;line-height:1.2em;margin-top:2px}.reveal code.sourceCode button.code-annotation-anchor{cursor:pointer}.reveal code.sourceCode a.code-annotation-anchor{text-align:center;vertical-align:middle;text-decoration:none;cursor:default;height:1.2em;width:1.2em}.reveal #code-annotation-line-highlight-gutter{width:100%;border-top:solid var(--quarto-hl-co-color) 1px;border-bottom:solid var(--quarto-hl-co-color) 1px;z-index:2}.reveal #code-annotation-line-highlight{margin-left:-8em;width:calc(100% + 4em);border-top:solid var(--quarto-hl-co-color) 1px;border-bottom:solid var(--quarto-hl-co-color) 1px;z-index:2;margin-bottom:-2px}.reveal code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#f7f7f7;font-weight:bolder}.reveal pre.code-annotation-code{padding-top:0;padding-bottom:0}.reveal pre.code-annotation-code code{z-index:3;padding-left:0px}.reveal dl.code-annotation-container-grid{margin-left:.1em}.reveal dl.code-annotation-container-grid dt{margin-top:.65rem;font-family:"Roboto Mono",monospace;border:solid #222 1px;border-radius:50%;height:1.3em;width:1.3em;line-height:1.3em;font-size:.5em;text-align:center;vertical-align:middle;text-decoration:none}.reveal dl.code-annotation-container-grid dd{margin-left:.25em}.reveal .scrollable ol li:first-child:nth-last-child(n+10),.reveal .scrollable ol li:first-child:nth-last-child(n+10)~li{margin-left:1em}.reveal .quarto-title-block .quarto-title-authors{display:flex;justify-content:"left"}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author{padding-left:0;padding-right:.5em}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a,.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a:hover,.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a:visited,.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a:active{color:inherit;text-decoration:none}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-author-name{margin-bottom:.1rem}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-author-email{margin-top:0px;margin-bottom:.4em;font-size:.6em}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-author-orcid img{margin-bottom:4px}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-affiliation{font-size:.7em;margin-top:0px;margin-bottom:8px}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-affiliation:first{margin-top:12px}strong,b{font-weight:900;color:#047c90}th{font-size:35px}td{font-size:20px}hr{border:4px solid #003660;border-radius:5px;margin-bottom:30px}.hr-teal{border:4px solid #047c90}.custom-title{font-family:"Sanchez",serif;color:#d2e3f3;font-size:1.7em;left:20px}.custom-subtitle{font-family:"Montserrat",sans-serif;color:#d2e3f3;font-size:1.2em;font-weight:900;left:20px}.custom-subtitle-orange{font-family:"Montserrat",sans-serif;color:#a2520e;font-size:1.2em;font-weight:900;left:20px}.custom-subtitle2{font-family:"Montserrat",sans-serif;color:#d2e3f3;font-size:.9em;left:20px}.custom-subtitle3{font-family:"Montserrat",sans-serif;color:#d2e3f3;font-size:.8em;left:20px}.title-footer{text-align:center !important;color:#d2e3f3;font-size:.4em !important}.slide-title{font-family:"Sanchez",serif;color:#047c90;font-size:1.4em;font-weight:700;margin-bottom:.5em}.slide-title-dark{font-family:"Sanchez",serif;color:#f7f7f7;font-size:1.4em;font-weight:700;margin-bottom:.5em}.slide-title-smaller-white{font-family:"Sanchez",serif;color:#fff;font-size:1.2em;font-weight:700;margin-bottom:.5em}.slide-title-smaller{font-family:"Sanchez",serif;color:#047c90;font-size:1.2em;font-weight:700;margin-bottom:.5em}.slide-title-smallest{font-family:"Sanchez",serif;color:#047c90;font-size:1.1em;font-weight:700}.large-body-text{font-family:"Montserrat",sans-serif;color:#047c90;font-size:1em}.medium-body-text{font-family:"Montserrat",sans-serif;color:#047c90;font-size:.8em}.medium-body-text-white{font-family:"Montserrat",sans-serif;color:#f7f7f7;font-size:.8em}.body-text{font-size:23px;line-height:1.7em;margin-bottom:1em}.small-text{font-size:19px;line-height:1.5em}.smaller-text{font-size:16px;line-height:1.5em}.smallest-text{font-size:14px;line-height:1.5em}.gray-text{color:#adadad}.white-text{color:#f7f7f7}.teal-text{color:#047c90}.important-text-bg{background-color:rgba(217,178,189,.5);padding-top:5px;padding-bottom:5px;padding-right:5px;padding-left:8px;border-radius:25px}.quote-text-bg{background-color:rgba(218,224,224,.5);padding-top:5px;padding-bottom:5px;padding-right:5px;padding-left:8px;border-radius:15px}.vertical-center{margin:0;position:absolute;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%)}.page-center{line-height:700px;text-align:center}.topbr{display:inline-block;margin-top:1em}.bottombr{display:block;margin-bottom:1em}.panel-tabset{font-size:30px}/*# sourceMappingURL=f95d2bded9c28492b788fe14c3e9f347.css.map */ +*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #FFFFFF;--quarto-body-color: #222;--quarto-text-muted: #6f6f6f;--quarto-border-color: #bbbbbb;--quarto-border-width: 1px;--quarto-border-radius: 4px}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:absolute;right:.5em;left:inherit;background-color:rgba(0,0,0,0)}:root{--mermaid-bg-color: #FFFFFF;--mermaid-edge-color: #999;--mermaid-node-fg-color: #222;--mermaid-fg-color: #222;--mermaid-fg-color--lighter: #3c3c3c;--mermaid-fg-color--lightest: #555555;--mermaid-font-family: Montserrat, sans-serif;--mermaid-label-bg-color: #FFFFFF;--mermaid-label-fg-color: #468;--mermaid-node-bg-color: rgba(68, 102, 136, 0.1);--mermaid-node-fg-color: #222}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}pre.sourceCode:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}pre.sourceCode:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}.panel-tabset [role=tablist]{border-bottom:1px solid #bbb;list-style:none;margin:0;padding:0;width:100%}.panel-tabset [role=tablist] *{-webkit-box-sizing:border-box;box-sizing:border-box}@media(min-width: 30em){.panel-tabset [role=tablist] li{display:inline-block}}.panel-tabset [role=tab]{border:1px solid rgba(0,0,0,0);border-top-color:#bbb;display:block;padding:.5em 1em;text-decoration:none}@media(min-width: 30em){.panel-tabset [role=tab]{border-top-color:rgba(0,0,0,0);display:inline-block;margin-bottom:-1px}}.panel-tabset [role=tab][aria-selected=true]{background-color:#bbb}@media(min-width: 30em){.panel-tabset [role=tab][aria-selected=true]{background-color:rgba(0,0,0,0);border:1px solid #bbb;border-bottom-color:#fff}}@media(min-width: 30em){.panel-tabset [role=tab]:hover:not([aria-selected=true]){border:1px solid #bbb}}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file,.code-with-filename .code-with-filename-file pre{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file,.quarto-dark .code-with-filename .code-with-filename-file pre{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.reveal.center .slide aside,.reveal.center .slide div.aside{position:initial}section.has-light-background,section.has-light-background h1,section.has-light-background h2,section.has-light-background h3,section.has-light-background h4,section.has-light-background h5,section.has-light-background h6{color:#222}section.has-light-background a,section.has-light-background a:hover{color:#2a76dd}section.has-light-background code{color:#4758ab}section.has-dark-background,section.has-dark-background h1,section.has-dark-background h2,section.has-dark-background h3,section.has-dark-background h4,section.has-dark-background h5,section.has-dark-background h6{color:#fff}section.has-dark-background a,section.has-dark-background a:hover{color:#42affa}section.has-dark-background code{color:#ffa07a}#title-slide,div.reveal div.slides section.quarto-title-block{text-align:"left"}#title-slide .subtitle,div.reveal div.slides section.quarto-title-block .subtitle{margin-bottom:2.5rem}.reveal .slides{text-align:left}.reveal .title-slide h1{font-size:1.6em}.reveal[data-navigation-mode=linear] .title-slide h1{font-size:2.5em}.reveal div.sourceCode{border:1px solid #bbb;border-radius:4px}.reveal pre{width:100%;box-shadow:none;background-color:#f7f7f7;border:none;margin:0;font-size:.4em}.reveal code{color:#900c3f;background-color:#f7f7f7;white-space:pre-wrap}.reveal pre.sourceCode code{background-color:#f7f7f7;padding:6px 9px;max-height:500px;white-space:pre}.reveal pre code{background-color:#fff;color:#222}.reveal .column-output-location{display:flex;align-items:stretch}.reveal .column-output-location .column:first-of-type div.sourceCode{height:100%;background-color:#f7f7f7}.reveal blockquote{display:block;position:relative;color:#6f6f6f;width:unset;margin:var(--r-block-margin) auto;padding:.625rem 1.75rem;border-left:.25rem solid #6f6f6f;font-style:normal;background:none;box-shadow:none}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:block}.reveal .slide aside,.reveal .slide div.aside{position:absolute;bottom:20px;font-size:0.7em;color:#6f6f6f}.reveal .slide sup{font-size:0.7em}.reveal .slide.scrollable aside,.reveal .slide.scrollable div.aside{position:relative;margin-top:1em}.reveal .slide aside .aside-footnotes{margin-bottom:0}.reveal .slide aside .aside-footnotes li:first-of-type{margin-top:0}.reveal .layout-sidebar{display:flex;width:100%;margin-top:.8em}.reveal .layout-sidebar .panel-sidebar{width:270px}.reveal .layout-sidebar-left .panel-sidebar{margin-right:calc(0.5em * 2)}.reveal .layout-sidebar-right .panel-sidebar{margin-left:calc(0.5em * 2)}.reveal .layout-sidebar .panel-fill,.reveal .layout-sidebar .panel-center,.reveal .layout-sidebar .panel-tabset{flex:1}.reveal .panel-input,.reveal .panel-sidebar{font-size:.5em;padding:.5em;border-style:solid;border-color:#bbb;border-width:1px;border-radius:4px;background-color:#f8f9fa}.reveal .panel-sidebar :first-child,.reveal .panel-fill :first-child{margin-top:0}.reveal .panel-sidebar :last-child,.reveal .panel-fill :last-child{margin-bottom:0}.panel-input>div,.panel-input>div>div{vertical-align:middle;padding-right:1em}.reveal p,.reveal .slides section,.reveal .slides section>section{line-height:1.3}.reveal.smaller .slides section,.reveal .slides section.smaller,.reveal .slides section .callout{font-size:0.7em}.reveal.smaller .slides h1,.reveal .slides section.smaller h1{font-size:calc(2.5em / 0.7)}.reveal.smaller .slides h2,.reveal .slides section.smaller h2{font-size:calc(1.6em / 0.7)}.reveal.smaller .slides h3,.reveal .slides section.smaller h3{font-size:calc(1.3em / 0.7)}.reveal .columns>.column>:not(ul,ol){margin-left:.25em;margin-right:.25em}.reveal .columns>.column:first-child>:not(ul,ol){margin-right:.5em;margin-left:0}.reveal .columns>.column:last-child>:not(ul,ol){margin-right:0;margin-left:.5em}.reveal .slide-number{color:#92bf59;background-color:#fff}.reveal .footer{color:#6f6f6f}.reveal .footer a{color:#78a540}.reveal .slide-number{color:#6f6f6f}.reveal .slide figure>figcaption,.reveal .slide img.stretch+p.caption,.reveal .slide img.r-stretch+p.caption{font-size:0.7em}@media screen and (min-width: 500px){.reveal .controls[data-controls-layout=edges] .navigate-left{left:.2em}.reveal .controls[data-controls-layout=edges] .navigate-right{right:.2em}.reveal .controls[data-controls-layout=edges] .navigate-up{top:.4em}.reveal .controls[data-controls-layout=edges] .navigate-down{bottom:2.3em}}.tippy-box[data-theme~=light-border]{background-color:#fff;color:#222;border-radius:4px;border:solid 1px #6f6f6f;font-size:.6em}.tippy-box[data-theme~=light-border] .tippy-arrow{color:#6f6f6f}.tippy-box[data-placement^=bottom]>.tippy-content{padding:7px 10px;z-index:1}.reveal .callout.callout-style-simple .callout-body,.reveal .callout.callout-style-default .callout-body,.reveal .callout.callout-style-simple div.callout-title,.reveal .callout.callout-style-default div.callout-title{font-size:inherit}.reveal .callout.callout-style-default .callout-icon::before,.reveal .callout.callout-style-simple .callout-icon::before{height:2rem;width:2rem;background-size:2rem 2rem}.reveal .callout.callout-titled .callout-title p{margin-top:.5em}.reveal .callout.callout-titled .callout-icon::before{margin-top:1rem}.reveal .callout.callout-titled .callout-body>.callout-content>:last-child{margin-bottom:1rem}.reveal .panel-tabset [role=tab]{padding:.25em .7em}.reveal .slide-menu-button .fa-bars::before{background-image:url('data:image/svg+xml,')}.reveal .slide-chalkboard-buttons .fa-easel2::before{background-image:url('data:image/svg+xml,')}.reveal .slide-chalkboard-buttons .fa-brush::before{background-image:url('data:image/svg+xml,')}/*! light */.reveal ol[type=a]{list-style-type:lower-alpha}.reveal ol[type=a s]{list-style-type:lower-alpha}.reveal ol[type=A s]{list-style-type:upper-alpha}.reveal ol[type=i]{list-style-type:lower-roman}.reveal ol[type=i s]{list-style-type:lower-roman}.reveal ol[type=I s]{list-style-type:upper-roman}.reveal ol[type="1"]{list-style-type:decimal}.reveal ul.task-list{list-style:none}.reveal ul.task-list li input[type=checkbox]{width:2em;height:2em;margin:0 1em .5em -1.6em;vertical-align:middle}div.cell-output-display div.pagedtable-wrapper table.table{font-size:.6em}.reveal .code-annotation-container-hidden{display:none}.reveal code.sourceCode button.code-annotation-anchor,.reveal code.sourceCode .code-annotation-anchor{font-family:"Roboto Mono",monospace;color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;font-size:.7em;line-height:1.2em;margin-top:2px}.reveal code.sourceCode button.code-annotation-anchor{cursor:pointer}.reveal code.sourceCode a.code-annotation-anchor{text-align:center;vertical-align:middle;text-decoration:none;cursor:default;height:1.2em;width:1.2em}.reveal #code-annotation-line-highlight-gutter{width:100%;border-top:solid var(--quarto-hl-co-color) 1px;border-bottom:solid var(--quarto-hl-co-color) 1px;z-index:2}.reveal #code-annotation-line-highlight{margin-left:-8em;width:calc(100% + 4em);border-top:solid var(--quarto-hl-co-color) 1px;border-bottom:solid var(--quarto-hl-co-color) 1px;z-index:2;margin-bottom:-2px}.reveal code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#f7f7f7;font-weight:bolder}.reveal pre.code-annotation-code{padding-top:0;padding-bottom:0}.reveal pre.code-annotation-code code{z-index:3;padding-left:0px}.reveal dl.code-annotation-container-grid{margin-left:.1em}.reveal dl.code-annotation-container-grid dt{margin-top:.65rem;font-family:"Roboto Mono",monospace;border:solid #222 1px;border-radius:50%;height:1.3em;width:1.3em;line-height:1.3em;font-size:.5em;text-align:center;vertical-align:middle;text-decoration:none}.reveal dl.code-annotation-container-grid dd{margin-left:.25em}.reveal .scrollable ol li:first-child:nth-last-child(n+10),.reveal .scrollable ol li:first-child:nth-last-child(n+10)~li{margin-left:1em}.reveal .quarto-title-block .quarto-title-authors{display:flex;justify-content:"left"}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author{padding-left:0;padding-right:.5em}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a,.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a:hover,.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a:visited,.reveal .quarto-title-block .quarto-title-authors .quarto-title-author a:active{color:inherit;text-decoration:none}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-author-name{margin-bottom:.1rem}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-author-email{margin-top:0px;margin-bottom:.4em;font-size:.6em}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-author-orcid img{margin-bottom:4px}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-affiliation{font-size:.7em;margin-top:0px;margin-bottom:8px}.reveal .quarto-title-block .quarto-title-authors .quarto-title-author .quarto-title-affiliation:first{margin-top:12px}strong,b{font-weight:900;color:#047c90}th{font-size:35px}td{font-size:20px}hr{border:4px solid #003660;border-radius:5px;margin-bottom:30px}.hr-teal{border:4px solid #047c90}.custom-title{font-family:"Sanchez",serif;color:#d2e3f3;font-size:1.7em;left:20px}.custom-subtitle{font-family:"Montserrat",sans-serif;color:#d2e3f3;font-size:1.2em;font-weight:900;left:20px}.custom-subtitle2{font-family:"Montserrat",sans-serif;color:#d2e3f3;font-size:.9em;left:20px}.custom-subtitle3{font-family:"Montserrat",sans-serif;color:#d2e3f3;font-size:.8em;left:20px}.title-footer{text-align:center !important;color:#d2e3f3;font-size:.4em !important}.slide-title{font-family:"Sanchez",serif;color:#047c90;font-size:1.4em;font-weight:700;margin-bottom:.5em}.slide-title-dark{font-family:"Sanchez",serif;color:#f7f7f7;font-size:1.4em;font-weight:700;margin-bottom:.5em}.slide-title2{font-family:"Sanchez",serif;color:#047c90;font-size:1.2em;font-weight:700;margin-bottom:.5em}.slide-title3{font-family:"Sanchez",serif;color:#047c90;font-size:1.1em;font-weight:700}.body-text-xl{font-family:"Montserrat",sans-serif;font-size:1em}.body-text-l{font-family:"Montserrat",sans-serif;font-size:.8em}.body-text{font-size:23px;line-height:1.7em;margin-bottom:1em}.body-text-s{font-size:19px;line-height:1.5em}.body-text-xs{font-size:14px;line-height:1.5em}.gray-text{color:#adadad}.white-text{color:#f7f7f7}.teal-text{color:#047c90}.important-text-bg{background-color:rgba(217,178,189,.5);padding-top:5px;padding-bottom:5px;padding-right:5px;padding-left:8px;border-radius:25px}.quote-text-bg{background-color:rgba(218,224,224,.5);padding-top:5px;padding-bottom:5px;padding-right:5px;padding-left:8px;border-radius:15px}.center-text{text-align:center}.vertical-center{margin:0;position:absolute;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%)}.page-center{line-height:700px;text-align:center}.topbr{display:inline-block;margin-top:1em}.bottombr{display:block;margin-bottom:1em}.panel-tabset{font-size:30px}/*# sourceMappingURL=f95d2bded9c28492b788fe14c3e9f347.css.map */ diff --git a/meds_styles.scss b/meds_styles.scss index 07fd9b5..67fe262 100644 --- a/meds_styles.scss +++ b/meds_styles.scss @@ -1,13 +1,9 @@ /*-- scss:defaults --*/ // fonts -//@import url('https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@200&family=Roboto+Mono:wght@300&family=Sanchez&display=swap'); -//@import url('https://fonts.googleapis.com/css2?family=Lato&family=Montserrat&family=Nunito+Sans:wght@200&family=Roboto+Mono:wght@300&family=Sanchez&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;700&family=Nunito:wght@400;700&family=Roboto+Mono:wght@300;400&family=Sanchez&display=swap'); // Fonts (CSS rules) -//$font-family-sans-serif: 'Nunito Sans', sans-serif; -//$font-family-monospace: 'Roboto Mono', monospace; $font-family-serif: 'Sanchez', serif; $font-family-sans-serif: 'Montserrat', sans-serif; $font-family-monospace: 'Roboto Mono', monospace; @@ -24,7 +20,7 @@ $dark-orange: #A2520E; $off-white: #F7F7F7; $gray: #ADADAD; -// scss variables +// variables $presentation-title-slide-text-align: "left"; $body-bg: $white; $link-color: $green; @@ -35,49 +31,43 @@ $code-block-bg: $off-white; /*-- scss:rules --*/ -// HTML selectors // - +// bold styling strong, b { - font-weight: 900; // does not change weight? + font-weight: 900; color: $teal; } +// table header font size th { font-size: 35px; } +// table text font size td { font-size: 20px; } -hr { // horizontal line +// horizontal line (default dark blue) +hr { border: 4px solid $dark-blue; border-radius: 5px; margin-bottom: 30px; } - -.hr-teal { // horizontal line +// teal horizontal line +.hr-teal { border: 4px solid $teal; } -/* h3 { - font-family: $font-family-serif; - color: $teal; - font-size: 1.4em; - font-weight: 700; -} */ - -// Class selectors // - +// cover slide title .custom-title { font-family: $font-family-serif; color: $baby-blue; font-size: 1.7em; - //position: absolute; left: 20px; } +// cover slide subtitle (large) .custom-subtitle { font-family: $font-family-sans-serif; color: $baby-blue; @@ -87,37 +77,39 @@ hr { // horizontal line left: 20px; } -.custom-subtitle-orange { +// cover slide subtitle (large, oragne) +/*.custom-subtitle-orange { font-family: $font-family-sans-serif; color: $dark-orange; font-size: 1.2em; font-weight: 900; - //position: absolute; left: 20px; -} +}*/ +// cover slide subtitle (medium) .custom-subtitle2 { font-family: $font-family-sans-serif; color: $baby-blue; font-size: 0.9em; - //position: absolute; left: 20px; } +// cover slide subtitle (small) .custom-subtitle3 { font-family: $font-family-sans-serif; color: $baby-blue; font-size: 0.8em; - //position: absolute; left: 20px; } +// cover slide footer text .title-footer { text-align: center !important; color: $baby-blue; font-size: 0.4em !important; } +// slide title (large) .slide-title { font-family: $font-family-serif; color: $teal; @@ -126,6 +118,7 @@ hr { // horizontal line margin-bottom: 0.5em; } +// slide title (large, for dark slides) .slide-title-dark { font-family: $font-family-serif; color: $off-white; @@ -134,15 +127,7 @@ hr { // horizontal line margin-bottom: 0.5em; } -.slide-title-smaller-white { - font-family: $font-family-serif; - color: $white; - font-size: 1.2em; - font-weight: 700; - margin-bottom: 0.5em; -} - -.slide-title-smaller { +.slide-title2 { // OLD NAME: .slide-title-smaller font-family: $font-family-serif; color: $teal; font-size: 1.2em; @@ -150,60 +135,57 @@ hr { // horizontal line margin-bottom: 0.5em; } -.slide-title-smallest { +.slide-title3 { // OLD NAME: .slide-title-smallest font-family: $font-family-serif; color: $teal; font-size: 1.1em; font-weight: 700; } -.large-body-text { +// XL body text +.body-text-xl { // OLD NAME: .large-body-text font-family: $font-family-sans-serif; - color: $teal; + //color: $teal; font-size: 1em; } -.medium-body-text { - font-family: $font-family-sans-serif; - color: $teal; - font-size: 0.8em; -} - -.medium-body-text-white { +// L body text +.body-text-l { // OLD NAME: .medium-body-text font-family: $font-family-sans-serif; - color: $off-white; + //color: $teal; font-size: 0.8em; } +// normal body text .body-text { font-size: 23px; line-height: 1.7em; margin-bottom: 1em; } -.small-text { +// S body text +.body-text-s { // OLD NAME: .small-text font-size: 19px; line-height: 1.5em; } -.smaller-text { - font-size: 16px; - line-height: 1.5em; -} - -.smallest-text { +// XS body text +.body-text-xs { // OLD NAME: .smallest-text font-size: 14px; line-height: 1.5em; } +// gray text .gray-text { color: $gray; } +// white text .white-text { color: $off-white; } +// teal text .teal-text { color: $teal; } @@ -226,6 +208,12 @@ hr { // horizontal line border-radius: 15px; } +// center text (horizontally) +.center-text{ + text-align: center; +} + +// center text vertically (??) .vertical-center { margin: 0; position: absolute; @@ -234,22 +222,25 @@ hr { // horizontal line transform: translateY(-50%); } +// center text vertically and horizontally .page-center { - //padding: 70px 0; line-height: 700px; text-align: center; } +// extra space above line .topbr { display: inline-block; margin-top: 1em; } +// extra space below line .bottombr { display: block; margin-bottom: 1em; } +// idk? .panel-tabset { font-size: 30px; } diff --git a/sections/0-prerequisites.qmd b/sections/0-prerequisites.qmd index 4504122..59d375b 100644 --- a/sections/0-prerequisites.qmd +++ b/sections/0-prerequisites.qmd @@ -34,5 +34,5 @@ install.packages(pkgs = c("shiny", "shinydashboard", "shinyWidgets", "DT", "leaf
-
No prior Shiny experience necessary!
+
No prior Shiny experience necessary!
diff --git a/sections/1-what-is-shiny.qmd b/sections/1-what-is-shiny.qmd index a7efbe8..44453a2 100644 --- a/sections/1-what-is-shiny.qmd +++ b/sections/1-what-is-shiny.qmd @@ -21,7 +21,7 @@ format: revealjs
A gif of Andre Duarte's 'Worldbank-Shiny' app. On the lefthand side of the app, the title 'Gapminder Interactive Plot' sits above a series of three widgets. The first is a dropdown menu where the user can select a region (e.g. Europe & Central Asia) or view all regions at the same time. The next two widgets are slider inputs -- the first allows the user to select a year between 1960 and 2014, and the second allows the user to select a population size between 500 and 5000. On the right hand side of the app is a bubble plot of Fertility Rate vs. Life Expectancy, which updates as inputs are changed by the user. Hovering a bubble displays thge corresponding Country, Region, Population, Life Expectancy, and Fertility Rate.
-

[Worldbank-Shiny](https://github.com/aguimaraesduarte/WorldBank-Shiny) app to visualize fertility rate vs. life expectancy from 1960 to 2015, by [Andre Duarte](https://github.com/aguimaraesduarte)

+

[Worldbank-Shiny](https://github.com/aguimaraesduarte/WorldBank-Shiny) app to visualize fertility rate vs. life expectancy from 1960 to 2015, by [Andre Duarte](https://github.com/aguimaraesduarte)

--- @@ -50,7 +50,7 @@ format: revealjs ## {#widgets data-menu-title="Widgets"} -[Widgets are web elements that users can interact with via the UI]{.slide-title-smaller} +[Widgets are web elements that users can interact with via the UI]{.slide-title2}
@@ -64,11 +64,9 @@ format: revealjs ::: ::: {.column width="35%"} -
+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Widgets collect information from the user which is then used to update outputs created in the server.

-

{{< fa angle-right title="a bullet point" >}} Widgets collect information from the user which is then used to update outputs created in the server.

- -

{{< fa angle-right title="a bullet point" >}} Shiny comes with a set of of [standard widgets](https://shiny.rstudio.com/tutorial/written-tutorial/lesson3/) (see left), but you can also explore widget extensions using a variety of other packages (e.g. [`{shinyWidgets}`](https://github.com/dreamRs/shinyWidgets), [`{DT}`](https://rstudio.github.io/DT/), [`{plotly}`](https://plotly.com/r/))

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Shiny comes with a set of of [standard widgets](https://shiny.rstudio.com/tutorial/written-tutorial/lesson3/) (see left), but you can also explore widget extensions using a variety of other packages (e.g. [`{shinyWidgets}`](https://github.com/dreamRs/shinyWidgets), [`{DT}`](https://rstudio.github.io/DT/), [`{plotly}`](https://plotly.com/r/))

::: :::: @@ -116,11 +114,11 @@ format: revealjs ## {#built-in-examples data-menu-title="Built-in Examples"} -[The Shiny packages comes with 11 built-in examples]{.slide-title-smaller} +[The Shiny packages comes with 11 built-in examples]{.slide-title2}
-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Check out the available Shiny app examples by running this code in your console:

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Check out the available Shiny app examples by running this code in your console:

```{r} #| eval: false @@ -131,7 +129,7 @@ runExample(example = NA) . . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Run the first example, which plots R’s built-in `faithful` data set with a configurable number of bins:

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Run the first example, which plots R’s built-in `faithful` data set with a configurable number of bins:

```{r} #| eval: false @@ -139,11 +137,11 @@ runExample(example = NA) runExample("01_hello") ``` -

Change the number of bins using the `sliderInput` widget and watch the histogram re-render.

+

Change the number of bins using the `sliderInput` widget and watch the histogram re-render.

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} These working examples also come paired with source code for you to see how the app is built. For example, the `sliderInput` is built with the following code:

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} These working examples also come paired with source code for you to see how the app is built. For example, the `sliderInput` is built with the following code:

```{r} #| eval: false @@ -158,4 +156,4 @@ sliderInput(inputId = "bins", . . . -

Now let's build our own!

+

Now let's build our own!

diff --git a/sections/10-user-centered-design.qmd b/sections/10-user-centered-design.qmd index 09c50e9..937a5da 100644 --- a/sections/10-user-centered-design.qmd +++ b/sections/10-user-centered-design.qmd @@ -17,15 +17,15 @@ format: revealjs
-

After this section, you should:

+

After this section, you should:

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a checklist of considerations to reference each time you build an app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a checklist of considerations to reference each time you build an app

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a few additional resources to dive deeper into UX/UI design

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a few additional resources to dive deeper into UX/UI design

--- @@ -39,19 +39,19 @@ format: revealjs . . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Simplicity is gold:** using the application shouldn't require reading a manual, and interfaces should be as self-explanatory as possible.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Simplicity is gold:** using the application shouldn't require reading a manual, and interfaces should be as self-explanatory as possible.

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Adapt a defensive programming mindset:** your app should always fail gracefully and informatively (e.g. provide users with a helpful error message)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Adapt a defensive programming mindset:** your app should always fail gracefully and informatively (e.g. provide users with a helpful error message)

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Build a self-explanatory app:** consider the following three suggestions for doing so -- **(a)** remember the rule of least surprise (in UI design, always do the least surprising thing e.g. we often assume that underlined text is clickable, so if you include underlined text in your UI, there's a good chance a user will try clicking on it). **(b)** think about progression (design a clear pattern of moving forward for your user), and **(c)** related to **b**, make sure that if an input is necessary, it is made clear to your user. Check out the [`{shinyjs}` package](https://deanattali.com/shinyjs/) for implementing nifty ways to improve the user experience of your shiny apps.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Build a self-explanatory app:** consider the following three suggestions for doing so -- **(a)** remember the rule of least surprise (in UI design, always do the least surprising thing e.g. we often assume that underlined text is clickable, so if you include underlined text in your UI, there's a good chance a user will try clicking on it). **(b)** think about progression (design a clear pattern of moving forward for your user), and **(c)** related to **b**, make sure that if an input is necessary, it is made clear to your user. Check out the [`{shinyjs}` package](https://deanattali.com/shinyjs/) for implementing nifty ways to improve the user experience of your shiny apps.

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Avoid feature-creep:** feature-creep is the process of adding features to an app that complicates its usage and maintenance -- this includes adding too much *reactivity* and too much *interactivity* (e.g. `plotly`) -- interactivity adds visual noise, so it's best to not make elements interactive if there is no value is gained.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Avoid feature-creep:** feature-creep is the process of adding features to an app that complicates its usage and maintenance -- this includes adding too much *reactivity* and too much *interactivity* (e.g. `plotly`) -- interactivity adds visual noise, so it's best to not make elements interactive if there is no value is gained.

--- diff --git a/sections/11-accessibility.qmd b/sections/11-accessibility.qmd index 429908d..6032d2b 100644 --- a/sections/11-accessibility.qmd +++ b/sections/11-accessibility.qmd @@ -17,19 +17,19 @@ format: revealjs
-

By the end of this section, you should:

+

By the end of this section, you should:

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a general understanding of what web accessibility means and who it can benefit (spoiler alert: it benefits us all!)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a general understanding of what web accessibility means and who it can benefit (spoiler alert: it benefits us all!)

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to make a few small tweaks/updates to your application to make it more accessible for all users

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to make a few small tweaks/updates to your application to make it more accessible for all users

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a few great resources to turn to to learn more

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a few great resources to turn to to learn more

--- @@ -42,16 +42,16 @@ format: revealjs

From the [World Wide Web Consortium (W3C)](https://www.w3.org/)'s [Introduction to Web Accessibility](https://www.w3.org/WAI/fundamentals/accessibility-intro/):

-

Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them. More specifically, people can:

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} perceive, understand, navigate, and interact with the Web

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} contribute to the Web

-

Web accessibility encompasses all disabilities that affect access to the Web, including: auditory, cognitive, neurological, physical, speech, and visual

-

Web accessibility also benefits people without disabilities, for example:

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people using mobile phones, smart watches, smart TVs, and other devices with small screens, different input modes, etc.

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} older people with changing abilities due to ageing

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people with “temporary disabilities” such as a broken arm or lost glasses

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people with “situational limitations” such as in bright sunlight or in an environment where they cannot listen to audio

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people using a slow Internet connection, or who have limited or expensive bandwidth

+

Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them. More specifically, people can:

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} perceive, understand, navigate, and interact with the Web

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} contribute to the Web

+

Web accessibility encompasses all disabilities that affect access to the Web, including: auditory, cognitive, neurological, physical, speech, and visual

+

Web accessibility also benefits people without disabilities, for example:

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people using mobile phones, smart watches, smart TVs, and other devices with small screens, different input modes, etc.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} older people with changing abilities due to ageing

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people with “temporary disabilities” such as a broken arm or lost glasses

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people with “situational limitations” such as in bright sunlight or in an environment where they cannot listen to audio

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people using a slow Internet connection, or who have limited or expensive bandwidth

Check out the [A11Y Project](https://www.a11yproject.com/) for lots of great tutorials and information about web accessibility.

@@ -72,10 +72,10 @@ format: revealjs ::: {.column width="45%"}
-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Use HTML elements appropriately (e.g. consider hierarchy)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Include alt text for graphical elements

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Consider navigation from a mobility perspective

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Use colorblind-friendly palettes

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Use HTML elements appropriately (e.g. consider hierarchy)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Include alt text for graphical elements

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Consider navigation from a mobility perspective

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Use colorblind-friendly palettes

::: ::: {.column width="5%"} @@ -83,7 +83,7 @@ format: revealjs ::: {.column width="45%"}
In the center, we see a computer monitor with the world wide web symbol on the screen. There is a circle around the computer made up of four smaller circles, each containing on of the following symbols: and eye, a hand with a finger touching something, a human head with a brain, and an ear.
-

Image Source: [Accessibility Stack](https://accessibilityspark.com/9-awesome-web-accessibility-tools/)

+

Image Source: [Accessibility Stack](https://accessibilityspark.com/9-awesome-web-accessibility-tools/)

::: :::: @@ -92,11 +92,11 @@ format: revealjs ## {#hierarchy data-menu-title="Heirarchy"} -[Use HTML elements appropriately]{.slide-title-smaller} +[Use HTML elements appropriately]{.slide-title2}
-

**Screen readers use HTML elements to understand web page organization.** Header elements create hierarchy within a webpage and are used by screen readers (i.e. devices used by those with visual impairments) to understand a page's organizational structure. An `

` element is more important (hierarchically speaking) than an `

`, which is more important than an `

`, and so on.

+

**Screen readers use HTML elements to understand web page organization.** Header elements create hierarchy within a webpage and are used by screen readers (i.e. devices used by those with visual impairments) to understand a page's organizational structure. An `

` element is more important (hierarchically speaking) than an `

`, which is more important than an `

`, and so on.

. . . @@ -138,9 +138,9 @@ shinyApp(ui = ui, server = server) ::: {.column width="45%"}
-

Ideally, you would only have one `

` element (e.g. your app's **title**), a small number of `

` elements, more `

` elements, and so on. See the minimal example, to the left.

+

Ideally, you would only have one `

` element (e.g. your app's **title**), a small number of `

` elements, more `

` elements, and so on. See the minimal example, to the left.

-

You *should not* rely on headers for styling purposes -- for example, you should not use a level-one header elsewhere in your app just because you want larger text. Instead, use CSS to increase text size (refer to the [Customizing Quarto Websites](https://ucsb-meds.github.io/customizing-quarto-websites/#/title-slide) workshop for [instruction on how to construct CSS selectors](https://ucsb-meds.github.io/customizing-quarto-websites/#/selector-types) for styling HTML elements).

+

You *should not* rely on headers for styling purposes -- for example, you should not use a level-one header elsewhere in your app just because you want larger text. Instead, use CSS to increase text size (refer to the [Customizing Quarto Websites](https://ucsb-meds.github.io/customizing-quarto-websites/#/title-slide) workshop for [instruction on how to construct CSS selectors](https://ucsb-meds.github.io/customizing-quarto-websites/#/selector-types) for styling HTML elements).

::: :::: @@ -149,7 +149,7 @@ shinyApp(ui = ui, server = server) ## {#alt-text data-menu-title="Alt text"} -[Include alt text with all graphical elements]{.slide-title-smaller} +[Include alt text with all graphical elements]{.slide-title2}
@@ -157,7 +157,7 @@ shinyApp(ui = ui, server = server) . . . -

Include the `alt` argument (similar to adding the `alt` attribute to an HTML element) when using [`renderPlot()`](https://shiny.rstudio.com/reference/shiny/1.7.1/renderplot) to add alt text to your reactive plots -- the `alt` argument lives *outside* of the `{}` but inside the `()`. For example:

+

Include the `alt` argument (similar to adding the `alt` attribute to an HTML element) when using [`renderPlot()`](https://shiny.rstudio.com/reference/shiny/1.7.1/renderplot) to add alt text to your reactive plots -- the `alt` argument lives *outside* of the `{}` but inside the `()`. For example:

```{r} #| eval: false @@ -175,7 +175,7 @@ renderPlot({ . . . -

Similarly, use the `alt` argument within `tags$img` when adding static images to your app. For example:

+

Similarly, use the `alt` argument within `tags$img` when adding static images to your app. For example:

```{r} #| eval: false @@ -190,7 +190,7 @@ tags$img(src = "file/path/to/img", ## {#alt-text-tips data-menu-title="Alt text tips"} -[Tips on writing alt text for data visualizations]{.slide-title-smallest} +[Tips on writing alt text for data visualizations]{.slide-title3}
@@ -200,7 +200,7 @@ tags$img(src = "file/path/to/img",

alt="Bar chart of gun murders per 100,000 people where America's murder rate is 6 times worse than Canada, and 30 times Australia"

-

For more great tips on how and when to use alt text, check out [this article](https://www.a11yproject.com/posts/alt-text/) by the A11Y Project. For examples of how to construct good alt text, take a peek at [this resource](https://academy.datawrapper.de/article/330-how-to-write-good-alternative-descriptions-for-your-data-visualization) by Datawrapper.

+

For more great tips on how and when to use alt text, check out [this article](https://www.a11yproject.com/posts/alt-text/) by the A11Y Project. For examples of how to construct good alt text, take a peek at [this resource](https://academy.datawrapper.de/article/330-how-to-write-good-alternative-descriptions-for-your-data-visualization) by Datawrapper.

--- @@ -210,9 +210,9 @@ tags$img(src = "file/path/to/img",
-

For users with mobility impairments, using a mouse to navigate a UI packed with widgets may be challenging -- some users may even be exclusively using a keyboard to navigate the web.

+

For users with mobility impairments, using a mouse to navigate a UI packed with widgets may be challenging -- some users may even be exclusively using a keyboard to navigate the web.

-

Ideally, actions required of your user can be done using a keyboard (e.g. pressing a button in the UI) -- however from a new shiny developer standpoint, this may be technically challenging to implement (the authors of Engineering Production-Grade Shiny Apps [suggest](https://engineering-shiny.org/ux-matters.html#c.-navigation) the [`{nter}` package](https://github.com/JohnCoene/nter) for building shiny action buttons that can be triggered by pressing `enter`, however, at the time of building this workshop, the package source code hadn't been updated since 2019).

+

Ideally, actions required of your user can be done using a keyboard (e.g. pressing a button in the UI) -- however from a new shiny developer standpoint, this may be technically challenging to implement (the authors of Engineering Production-Grade Shiny Apps [suggest](https://engineering-shiny.org/ux-matters.html#c.-navigation) the [`{nter}` package](https://github.com/JohnCoene/nter) for building shiny action buttons that can be triggered by pressing `enter`, however, at the time of building this workshop, the package source code hadn't been updated since 2019).

:::: {.columns} @@ -220,7 +220,7 @@ tags$img(src = "file/path/to/img",
-

**At a minimum, consider spacing out and/or limiting the number of widgets on any given page to make navigation with a mouse as easy as possible.**

+

**At a minimum, consider spacing out and/or limiting the number of widgets on any given page to make navigation with a mouse as easy as possible.**

::: ::: {.column width="5%"} @@ -242,16 +242,16 @@ tags$img(src = "file/path/to/img",
-

About 1 in 12 males and 1 in 200 females have some form of colorblindness ([Wikipedia](https://en.wikipedia.org/wiki/Color_blindness)). Ensuring that your color choices are distinguishable from one another and/or providing an additional non-color-based way (e.g. patterns, shapes) of distinguishing between treatments/variables/etc. can greatly help with interpretation of data visualizations.

+

About 1 in 12 males and 1 in 200 females have some form of colorblindness ([Wikipedia](https://en.wikipedia.org/wiki/Color_blindness)). Ensuring that your color choices are distinguishable from one another and/or providing an additional non-color-based way (e.g. patterns, shapes) of distinguishing between treatments/variables/etc. can greatly help with interpretation of data visualizations.

-

There are lots of great colorblind-accessible palettes and resources (check out [this one](https://www.nceas.ucsb.edu/sites/default/files/2022-06/Colorblind%20Safe%20Color%20Schemes.pdf) by [Alex Phillips](https://www.alexandraatleephillips.com/) to start). Google Chrome also has a built-in vision deficiency emulator (see gif, below right; right click in your web browser > Inspect > Rendering (add tab by clicking on the three stacked dots if it's not already open) > scroll down and choose emulation type from drop down where it says "Emulate vision deficiencies").

+

There are lots of great colorblind-accessible palettes and resources (check out [this one](https://www.nceas.ucsb.edu/sites/default/files/2022-06/Colorblind%20Safe%20Color%20Schemes.pdf) by [Alex Phillips](https://www.alexandraatleephillips.com/) to start). Google Chrome also has a built-in vision deficiency emulator (see gif, below right; right click in your web browser > Inspect > Rendering (add tab by clicking on the three stacked dots if it's not already open) > scroll down and choose emulation type from drop down where it says "Emulate vision deficiencies").

:::: {.columns} ::: {.column width="45%"}
Four color palette wheels showing the difference in perceived colors for those with normal vision, protanopia, deuteranopia, and tritanopia.
-

Four different forms of colorblindness. Image Source: [Venngage](https://venngage.com/blog/color-blind-friendly-palette/)

+

Four different forms of colorblindness. Image Source: [Venngage](https://venngage.com/blog/color-blind-friendly-palette/)

::: ::: {.column width="5%"} @@ -259,7 +259,7 @@ tags$img(src = "file/path/to/img", ::: {.column width="45%"}
A gif of a user opening up the developer tools pane in Google Chrome and emulating how users with various vision deficiencies would see the webpage.
-

Using Google Chrome's vision deficiency emulator to view webpages as seen by those with vision deficiencies

+

Using Google Chrome's vision deficiency emulator to view webpages as seen by those with vision deficiencies

::: :::: diff --git a/sections/12-debugging.qmd b/sections/12-debugging.qmd index 73f09ff..b473044 100644 --- a/sections/12-debugging.qmd +++ b/sections/12-debugging.qmd @@ -17,23 +17,23 @@ format: revealjs
-

After this section, you should:

+

After this section, you should:

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand some of the challenges associated with debugging shiny applications

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand some of the challenges associated with debugging shiny applications

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} be introduced to a few approaches and tools for debugging shiny applications, including using diagnostic messages and the `reactlog` package.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} be introduced to a few approaches and tools for debugging shiny applications, including using diagnostic messages and the `reactlog` package.

. . . -

Packages introduced:

+

Packages introduced:

. . . -

[{{< fa book-open title="an open book" >}}]{.teal-text} `{reactlog}`: a reactivity visualizer for shiny

+

[{{< fa book-open title="an open book" >}}]{.teal-text} `{reactlog}`: a reactivity visualizer for shiny

--- @@ -45,21 +45,21 @@ format: revealjs

Shiny apps can be particularly challenging to debug for a few reasons:

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Shiny is **reactive**, so code execution isn't as linear as other code that you're likely more familiar with (e.g. analytical pipelines written in "normal" R scripts, where each line of code is executed in succession)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Shiny is **reactive**, so code execution isn't as linear as other code that you're likely more familiar with (e.g. analytical pipelines written in "normal" R scripts, where each line of code is executed in succession)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Shiny code runs behind a web server *and* the Shiny framework itself, which can obscure what's going on

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Shiny code runs behind a web server *and* the Shiny framework itself, which can obscure what's going on

. . .

While there are a number of different tools/strategies for debugging Shiny apps, I find myself turning to one (or more) of these approaches most often:

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} isolating pesky errors (typos, missing commas, unmatched parentheses) in the UI by commenting out code from the outside in

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} isolating pesky errors (typos, missing commas, unmatched parentheses) in the UI by commenting out code from the outside in

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reducing your app to *just* problematic code by commenting out as much correctly-functioning code as possible

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reducing your app to *just* problematic code by commenting out as much correctly-functioning code as possible

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} adding diagnostic messages to my reactives

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} adding diagnostic messages to my reactives

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} using `reactlog` to visualize reactivity errors

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} using `reactlog` to visualize reactivity errors

. . . @@ -69,20 +69,20 @@ format: revealjs ## {#ui-errors data-menu-title="Tracking down UI errors"} -[Track down pesky UI errors by commenting out code from the outside in]{.slide-title-smaller} +[Track down pesky UI errors by commenting out code from the outside in]{.slide-title2}
-

Many of us experienced the frustrations of finding unmatched parentheses, typos, missing commas, etc. when building out our UI layout for App #2, and tracking down the issue can require some patience and persistence.

+

Many of us experienced the frustrations of finding unmatched parentheses, typos, missing commas, etc. when building out our UI layout for App #2, and tracking down the issue can require some patience and persistence.

-

My preferred approach for troubleshooting a situation like this is to comment out all code moving from the highest-level layout function (e.g. `navbarPage()`) inwards, re-running your app each time you un-comment the next little bit of code, until you find the place where your app breaks.

+

My preferred approach for troubleshooting a situation like this is to comment out all code moving from the highest-level layout function (e.g. `navbarPage()`) inwards, re-running your app each time you un-comment the next little bit of code, until you find the place where your app breaks.

. . . :::: {.columns} ::: {.column width="45%"} -

For example, if I were to trouble shoot the UI for App #2, I'd comment out everything except `ui <- navbarPage(title = "LTER Animal Data Explorer"` and the ending `) # END navbarPage`, then run my app to make sure an empty app with a gray navbar and title at the top appears. It does? Great. Next, un-comment the two `tabPanel()`s that create the "About this App" and "Explore the Data" pages. Works? Add a little bit more back in now, and continue this process. I like to un-comment/re-run all layout function code *first*, then begin adding back the inputs and outputs one by one. See a short, but incomplete demo to the right:

+

For example, if I were to trouble shoot the UI for App #2, I'd comment out everything except `ui <- navbarPage(title = "LTER Animal Data Explorer"` and the ending `) # END navbarPage`, then run my app to make sure an empty app with a gray navbar and title at the top appears. It does? Great. Next, un-comment the two `tabPanel()`s that create the "About this App" and "Explore the Data" pages. Works? Add a little bit more back in now, and continue this process. I like to un-comment/re-run all layout function code *first*, then begin adding back the inputs and outputs one by one. See a short, but incomplete demo to the right:

::: ::: {.column width="5%"} @@ -95,41 +95,41 @@ format: revealjs :::: -

**Ultimately, taking your time, adding *lots* of code comments to mark the ending parentheses of each function, and leaving space between lines of code so that you can more easily see what's going on will save you lots of headache!**

+

**Ultimately, taking your time, adding *lots* of code comments to mark the ending parentheses of each function, and leaving space between lines of code so that you can more easily see what's going on will save you lots of headache!**

--- ## {#next data-menu-title="next strategies"} -[What about "larger" errors?]{.slide-title-smaller} +[What about "larger" errors?]{.slide-title2}
-

Oftentimes, you'll need to identify larger, more complex errors, like why an output isn't rendering correctly or even appearing in your app at all.

+

Oftentimes, you'll need to identify larger, more complex errors, like why an output isn't rendering correctly or even appearing in your app at all.

-

I often turn to two strategies:

+

I often turn to two strategies:

-

**(1)** commenting out everything except the UI elements and server logic where I believe the issue is stemming from, and

+

**(1)** commenting out everything except the UI elements and server logic where I believe the issue is stemming from, and

-

**(2)** adding diagnostic messages to my reactives

+

**(2)** adding diagnostic messages to my reactives

. . . -

**(3)** ...*and* on rare occasions, I'll try using the [`{reactlog}` package](https://rstudio.github.io/reactlog/) to help visualize my app's reactivity in an attempt to identify the problem.

+

**(3)** ...*and* on rare occasions, I'll try using the [`{reactlog}` package](https://rstudio.github.io/reactlog/) to help visualize my app's reactivity in an attempt to identify the problem.

. . . -

To demo these approaches, we'll use two pre-constructed apps as examples: (1) [`reactlog-working`](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/reactlog-working) (a small app that's functioning as intended) and (2) [`reactlog-broken`](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/reactlog-broken) (the same small app that's *not* functioning as intended).

+

To demo these approaches, we'll use two pre-constructed apps as examples: (1) [`reactlog-working`](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/reactlog-working) (a small app that's functioning as intended) and (2) [`reactlog-broken`](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/reactlog-broken) (the same small app that's *not* functioning as intended).

--- ## {#non-buggy-app data-menu-title="A correctly functioning app"} -[I'm building an app that should look like this...]{.slide-title-smaller} +[I'm building an app that should look like this...]{.slide-title2}
-

In **Tab 1**, both the image and text should update whenever a new radio button is chosen. In **Tab 2**, the scatterplot should update so that only data points for penguins with body masses within our chosen range are displayed. **Find the source code for this functioning app [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/reactlog-working).**

+

In **Tab 1**, both the image and text should update whenever a new radio button is chosen. In **Tab 2**, the scatterplot should update so that only data points for penguins with body masses within our chosen range are displayed. **Find the source code for this functioning app [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/reactlog-working).**

A functioning shiny app with two tabs. The first tab has radioButtons that when selected, update the penguin image and description text. The second tab has a sliderInput and scatterplot.
@@ -137,11 +137,11 @@ format: revealjs ## {#buggy-app data-menu-title="A buggy app"} -[...but let's say it actually looks like this:]{.slide-title-smaller} +[...but let's say it actually looks like this:]{.slide-title2}
-

In **Tab 1**, only the image updates whenever a new radio button is chosen, and text is missing altogether. In **Tab 2**, the scatterplot updates as expected whenever the body mass range is changed. **Find the source code for this buggy app [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/reactlog-broken).**

+

In **Tab 1**, only the image updates whenever a new radio button is chosen, and text is missing altogether. In **Tab 2**, the scatterplot updates as expected whenever the body mass range is changed. **Find the source code for this buggy app [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/reactlog-broken).**

The same shiny app as on the previous slide, but this time when the radioButtons are updated, only the image changes -- no text appears.
@@ -149,13 +149,13 @@ format: revealjs ## {#comment-out-code data-menu-title="Comment out code"} -[Start by commenting out functioning code]{.slide-title-smallest} +[Start by commenting out functioning code]{.slide-title3}
-

Even though this is a relatively small/simple app, there is still code that, for lack of a better term, gets in the way. After a quick assessment, my reactive scatterplot on Tab 2 appears to be working as expected. To help simplify the amount of code I need to look at, I'll start by commenting out all UI elements (`sliderInput` & `plotOutput`) and server logic for building that reactive plot.

+

Even though this is a relatively small/simple app, there is still code that, for lack of a better term, gets in the way. After a quick assessment, my reactive scatterplot on Tab 2 appears to be working as expected. To help simplify the amount of code I need to look at, I'll start by commenting out all UI elements (`sliderInput` & `plotOutput`) and server logic for building that reactive plot.

-

**Note:** As you begin building more complex apps, you may have reactives that depend on other reactives -- it's important to think about these dependencies when commenting out parts of your app for debugging purposes.

+

**Note:** As you begin building more complex apps, you may have reactives that depend on other reactives -- it's important to think about these dependencies when commenting out parts of your app for debugging purposes.

::: {.panel-tabset} @@ -287,11 +287,11 @@ shinyApp(ui = ui, server = server) ## {#add-messages data-menu-title="Add messages to reactives"} -[Next, add messages to your reactives]{.slide-title-smallest} +[Next, add messages to your reactives]{.slide-title3}
-

You can insert diagnostic messages within your reactives using `message()` -- here, I add a short message where each text and image output should be rendered. I can run my app and see messages successfully (or in the case of a broken app, unsuccessfully) print in my RStudio console as I interact with the app. You'll notice that the each image message (e.g. *"Displaying all penguins image"*) prints when a new radioButton is selected, but those associated with the text outputs do not. This tells me that code is not being executed, beginning with first `if` statement inside `renderText` and that this is a good starting location for reviewing code (e.g. carefully crosschecking all `inputId`s and `outputId`s in that section).

+

You can insert diagnostic messages within your reactives using `message()` -- here, I add a short message where each text and image output should be rendered. I can run my app and see messages successfully (or in the case of a broken app, unsuccessfully) print in my RStudio console as I interact with the app. You'll notice that the each image message (e.g. *"Displaying all penguins image"*) prints when a new radioButton is selected, but those associated with the text outputs do not. This tells me that code is not being executed, beginning with first `if` statement inside `renderText` and that this is a good starting location for reviewing code (e.g. carefully crosschecking all `inputId`s and `outputId`s in that section).

::: {.panel-tabset} @@ -433,7 +433,7 @@ shinyApp(ui = ui, server = server) ## {#reactlog data-menu-title="{reactlog}"} -[If helpful, use `{reactlog}` to visualize reactivity]{.slide-title-smallest} +[If helpful, use `{reactlog}` to visualize reactivity]{.slide-title3}
@@ -446,7 +446,7 @@ shinyApp(ui = ui, server = server)

`reactlog` is a package/tool that provides:

-

*"A snapshot of the history (**log**) of all **react**ive interactions within a shiny application"* **- Barret Schloerke in his 2019 RSTUDIO::CONF talk, [Reactlog 2.0: Debugging the state of Shiny](https://www.rstudio.com/resources/rstudioconf-2019/reactlog-2-0-debugging-the-state-of-shiny/)**

+

*"A snapshot of the history (**log**) of all **react**ive interactions within a shiny application"* **- Barret Schloerke in his 2019 RSTUDIO::CONF talk, [Reactlog 2.0: Debugging the state of Shiny](https://www.rstudio.com/resources/rstudioconf-2019/reactlog-2-0-debugging-the-state-of-shiny/)**

::: ::: {.column width="5%"} @@ -458,13 +458,13 @@ shinyApp(ui = ui, server = server) :::: -

Reactivity can be confusing. I recommend watching Barret Schloerke's talk, linked above, and reading through the [Shiny Reactlog vignette](https://rstudio.github.io/reactlog/articles/reactlog.html) as you get started.

+

Reactivity can be confusing. I recommend watching Barret Schloerke's talk, linked above, and reading through the [Shiny Reactlog vignette](https://rstudio.github.io/reactlog/articles/reactlog.html) as you get started.

--- ## {#reactlog-workflow data-menu-title="{reactlog} workflow"} -[Using `{reactlog}`]{.slide-title-smaller} +[Using `{reactlog}`]{.slide-title2}
@@ -472,28 +472,28 @@ shinyApp(ui = ui, server = server)

To use `reactlog`, follow these **steps:**

-

**1.** Load the reactlog library in you console (`library(reactlog)`)

-

**2.** Call `reactlog_enable()` in your console

-

**3.** Run your app, interact with it, then quit your app

-

**4.** Launch reactlog by running `shiny::reactlogShow()` in your console (or use the keyboard shortcut `cmd`/`ctrl` + `F3`)

-

**5.** Use your `<-` and `->` arrow keys (or A gray, left-facing play button and A gray, right-facing play button) to move forward and backward through your app's reactive life cycle

+

**1.** Load the reactlog library in you console (`library(reactlog)`)

+

**2.** Call `reactlog_enable()` in your console

+

**3.** Run your app, interact with it, then quit your app

+

**4.** Launch reactlog by running `shiny::reactlogShow()` in your console (or use the keyboard shortcut `cmd`/`ctrl` + `F3`)

+

**5.** Use your `<-` and `->` arrow keys (or A gray, left-facing play button and A gray, right-facing play button) to move forward and backward through your app's reactive life cycle



-

Read about the components of the [status bar](https://rstudio.github.io/reactlog/articles/reactlog.html#status-bar) and the meaning of different [reactive states](https://rstudio.github.io/reactlog/articles/reactlog.html#reactive-states) in the `reactlog` vignette.

+

Read about the components of the [status bar](https://rstudio.github.io/reactlog/articles/reactlog.html#status-bar) and the meaning of different [reactive states](https://rstudio.github.io/reactlog/articles/reactlog.html#reactive-states) in the `reactlog` vignette.

--- ## {#using-reactlog-working-app data-menu-title="Using {reactlog} - working app"} -[Using `{reactlog}` to visualize reactivity in a correctly-functioning app]{.slide-title-smallest} +[Using `{reactlog}` to visualize reactivity in a correctly-functioning app]{.slide-title3}
-

To visualize the reactive life cycle of the `reactlog-working` app, I'll first load the reactlog library, then call `reactlog_enable()` in my console. Next, I'll run my app and interact with it. By default, **All penguins** is selected. For demonstration purposes, I'll click down the list (**Sassy chinstrap**, **Staring gentoo**, and finally **Adorable adelie**). When done, I'll stop my app, then run `shiny::reactlogShow()` in the console to open the reactlog visualizer in a browser window.

+

To visualize the reactive life cycle of the `reactlog-working` app, I'll first load the reactlog library, then call `reactlog_enable()` in my console. Next, I'll run my app and interact with it. By default, **All penguins** is selected. For demonstration purposes, I'll click down the list (**Sassy chinstrap**, **Staring gentoo**, and finally **Adorable adelie**). When done, I'll stop my app, then run `shiny::reactlogShow()` in the console to open the reactlog visualizer in a browser window.

-

**Note:** I've left the scatter plot on Tab 2 (and it's related UI elements) commented out (as we practiced in the earlier few slides) for this demo -- the `{reactlog}` package has many features that allow you to explore reactive dependencies across your whole app, but it can get complicated quickly. For demo purposes, we're going to work with this "smaller" version of our app, which contains just the problematic code.

+

**Note:** I've left the scatter plot on Tab 2 (and it's related UI elements) commented out (as we practiced in the earlier few slides) for this demo -- the `{reactlog}` package has many features that allow you to explore reactive dependencies across your whole app, but it can get complicated quickly. For demo purposes, we're going to work with this "smaller" version of our app, which contains just the problematic code.

@@ -501,42 +501,42 @@ shinyApp(ui = ui, server = server) ## {#interpreting-reactlog-working-app data-menu-title="Interpreting {reactlog}"} -[Interpreting `{reactlog}` (used with our correctly-functioning app)]{.slide-title-smaller} +[Interpreting `{reactlog}` (used with our correctly-functioning app)]{.slide-title2}

There's a lot to take when looking at the reactlog viewer, so let's take it one step at a time:

-

**(1)** The `radioButton` input defaults to show the **All penguins** image and associated text. When we launch reactlog, our input , reactive expression , and outputs are **Ready**, meaning the calculated values are available (defaults in this case) and reactive elements have finished executing (i.e. the image and text is displayed). This **Ready** state is indicated by the green icons.

+

**(1)** The `radioButton` input defaults to show the **All penguins** image and associated text. When we launch reactlog, our input , reactive expression , and outputs are **Ready**, meaning the calculated values are available (defaults in this case) and reactive elements have finished executing (i.e. the image and text is displayed). This **Ready** state is indicated by the green icons.

. . . -

**(2)** I (the user) then updated the input by choosing **Sassy chinstrap**, invalidating (i.e. resetting) the input and thereby invalidating any dependencies -- in this case both the image and text outputs. This **Invalidating** state is indicated by the gray icons.

+

**(2)** I (the user) then updated the input by choosing **Sassy chinstrap**, invalidating (i.e. resetting) the input and thereby invalidating any dependencies -- in this case both the image and text outputs. This **Invalidating** state is indicated by the gray icons.

. . . -

**(3)** Once all dependencies are invalidated, the reactive elements can begin **Calculating** (i.e. executing) based on the new input (**Sassy chinstrap**). Elements are colored yellow when they are being calculated, then green when calculations are complete and the reactive element has been updated. In this example, first the image and then the text are calculated and updated.

+

**(3)** Once all dependencies are invalidated, the reactive elements can begin **Calculating** (i.e. executing) based on the new input (**Sassy chinstrap**). Elements are colored yellow when they are being calculated, then green when calculations are complete and the reactive element has been updated. In this example, first the image and then the text are calculated and updated.

. . . -

**(4)** These same steps are repeated when I select the **Staring gentoo**, then **Adorable adelie** `radioButtons`

+

**(4)** These same steps are repeated when I select the **Staring gentoo**, then **Adorable adelie** `radioButtons`

--- ## {#using-reactlog-broken-app data-menu-title="Using {reactlog} - broken app"} -[Using `{reactlog}` to visualize reactivity in a broken app]{.slide-title-smaller} +[Using `{reactlog}` to visualize reactivity in a broken app]{.slide-title2}
-

Let's try out reactlog on our intentionally broken app (`reactlog-broken`, where our image changes when a radioButton user input is updated, but our text doesn't appear). As in our functioning app, the **All penguins** image is selected by default. For demonstration purposes, I'll select each option moving down the list (**Sassy chinstrap**, **Staring gentoo**, **Adorable adelie**) before launching reactlog.

+

Let's try out reactlog on our intentionally broken app (`reactlog-broken`, where our image changes when a radioButton user input is updated, but our text doesn't appear). As in our functioning app, the **All penguins** image is selected by default. For demonstration purposes, I'll select each option moving down the list (**Sassy chinstrap**, **Staring gentoo**, **Adorable adelie**) before launching reactlog.

:::: {.columns} ::: {.column width="45%"} -

Similar to our functioning app, the default input, **All penguins**, and image output are **Ready** (green). However, in this example our text output is *not a dependency* of our application's input -- there's no linkage and the text output is **Invalidated** (gray).

+

Similar to our functioning app, the default input, **All penguins**, and image output are **Ready** (green). However, in this example our text output is *not a dependency* of our application's input -- there's no linkage and the text output is **Invalidated** (gray).

-

As we click down the list of radioButtons, the image output is invalidated, then updated accordingly, but the text output remains disconnected from our input.

+

As we click down the list of radioButtons, the image output is invalidated, then updated accordingly, but the text output remains disconnected from our input.

::: ::: {.column width="5%"} @@ -552,13 +552,13 @@ shinyApp(ui = ui, server = server) ## {#id-bug data-menu-title="Identify the bug"} -[So what's the issue with our app?]{.slide-title-smallest} +[So what's the issue with our app?]{.slide-title3}
-

Evidence from our diagnostic messages *and* `reactlog` suggests that we should make sure that our UI and server are actually able to communicate about our desired text output. After careful inspection of our `textOutput()` and `renderText()` code, we find that a spelling error is to blame:

+

Evidence from our diagnostic messages *and* `reactlog` suggests that we should make sure that our UI and server are actually able to communicate about our desired text output. After careful inspection of our `textOutput()` and `renderText()` code, we find that a spelling error is to blame:

-

Our `outputId` in the **UI** is set to `penguin_text`:

+

Our `outputId` in the **UI** is set to `penguin_text`:

```{r} #| eval: false @@ -574,7 +574,7 @@ ui <- fluidPage( ) ``` -

But we call `penguins_text` when rendering our output in the **server**:

+

But we call `penguins_text` when rendering our output in the **server**:

```{r} #| eval: false @@ -593,4 +593,4 @@ server <- function(input, output){ } ``` -

By updating our `outputId` to match in both the UI and the server, we fix our app.

+

By updating our `outputId` to match in both the UI and the server, we fix our app.

diff --git a/sections/13-testing.qmd b/sections/13-testing.qmd index 08c9228..9894bdb 100644 --- a/sections/13-testing.qmd +++ b/sections/13-testing.qmd @@ -17,27 +17,27 @@ format: revealjs
-

After this section, you should:

+

After this section, you should:

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand some of the reasons why apps break and the benefit of having automated tests

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand some of the reasons why apps break and the benefit of having automated tests

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a basic understanding of how to use the `shinytest2` package to create regression tests

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have a basic understanding of how to use the `shinytest2` package to create regression tests

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to rerun tests

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to rerun tests

. . . -

Packages introduced:

+

Packages introduced:

. . . -

[{{< fa box-open title="an open box" >}}]{.teal-text} `{shinytest2}`: provides tools for creating and running automated tests on Shiny applications

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{shinytest2}`: provides tools for creating and running automated tests on Shiny applications

--- @@ -49,15 +49,15 @@ format: revealjs . . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} an upgraded R package(s) has a different behavior (this includes `shiny`) -- this is especially relevant for those apps hosted on servers, where server software (including packages) may be updated by system administrators

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} an upgraded R package(s) has a different behavior (this includes `shiny`) -- this is especially relevant for those apps hosted on servers, where server software (including packages) may be updated by system administrators

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} you make changes to your app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} you make changes to your app

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} an external data source stops working or returns data in a different format than expected by your app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} an external data source stops working or returns data in a different format than expected by your app

. . . @@ -81,7 +81,7 @@ format: revealjs

From the `shinytest2` documentation:

-

"*`shinytest2` uses `testthat`’s snapshot-based testing strategy. The first time it runs a set of tests for an application, it performs some scripted interactions with the app and takes one or more snapshots of the application’s state. These snapshots are saved to disk so that future runs of the tests can compare their results to them.*"

+

"*`shinytest2` uses `testthat`’s snapshot-based testing strategy. The first time it runs a set of tests for an application, it performs some scripted interactions with the app and takes one or more snapshots of the application’s state. These snapshots are saved to disk so that future runs of the tests can compare their results to them.*"

::: ::: {.column width="5%"} @@ -93,7 +93,7 @@ format: revealjs :::: -

Rather than having to write tests by hand, you can interact with your app via the "app recorder" and `shinytest2` will record the test code automatically for you. Simply rerun tests to check for consistency.

+

Rather than having to write tests by hand, you can interact with your app via the "app recorder" and `shinytest2` will record the test code automatically for you. Simply rerun tests to check for consistency.

--- @@ -109,11 +109,11 @@ format: revealjs

Additional resources:

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Barret Schloerke's rstudio::conf(2022) talk, *{shinytest2}: Unit testing for Shiny applications* ([recording](https://www.youtube.com/watch?v=DMgAW4m5aTI))

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Barret Schloerke's rstudio::conf(2022) talk, *{shinytest2}: Unit testing for Shiny applications* ([recording](https://www.youtube.com/watch?v=DMgAW4m5aTI))

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Barret Schloerke's 2022 Appsilon Shiny Confernce talk, *{shinytest2} Testing Shiny with {testthat}* ([recording](https://www.youtube.com/watch?v=EOVPBN5o8F8) & [GitHub repo](https://github.com/schloerke/presentation-2022-04-27-appsilon-shinytest2))

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Barret Schloerke's 2022 Appsilon Shiny Confernce talk, *{shinytest2} Testing Shiny with {testthat}* ([recording](https://www.youtube.com/watch?v=EOVPBN5o8F8) & [GitHub repo](https://github.com/schloerke/presentation-2022-04-27-appsilon-shinytest2))

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Shiny testing overview](https://shiny.rstudio.com/articles/testing-overview.html), by Winston Chang -- this article discussed the `shinytest2` predecessor, `shinytest` (which is now entering maintenance mode), but provides some helpful context and is worth a read

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Shiny testing overview](https://shiny.rstudio.com/articles/testing-overview.html), by Winston Chang -- this article discussed the `shinytest2` predecessor, `shinytest` (which is now entering maintenance mode), but provides some helpful context and is worth a read

--- @@ -165,27 +165,27 @@ shinyApp(ui, server) . . . -

**(1)** Run `record_test()` to launch the app recorder in browser window

+

**(1)** Run `record_test()` to launch the app recorder in browser window

. . . -

**(2)** Interact with your application and tell the recorder to make an expectation (e.g. an expected value when inputX is updated) on the state at various points

+

**(2)** Interact with your application and tell the recorder to make an expectation (e.g. an expected value when inputX is updated) on the state at various points

. . . -

**(3)** Quit the recorder to save and execute your tests

+

**(3)** Quit the recorder to save and execute your tests

. . .

To test our app specifically, we'll do the following:

-

**(1)** run `shinytest2::record_test("testing_app")` in the console to launch the recorder in a browser window

+

**(1)** run `shinytest2::record_test("testing_app")` in the console to launch the recorder in a browser window

-

**(2)** interact with your app by first typing a name (e.g. Sam), then pressing the "Greet" button to display the output text

+

**(2)** interact with your app by first typing a name (e.g. Sam), then pressing the "Greet" button to display the output text

-

**(3)** click the "Expect Shiny values" button in the recorder app sidebar to set an expectation (this will record inputs, outputs, and exported values)

+

**(3)** click the "Expect Shiny values" button in the recorder app sidebar to set an expectation (this will record inputs, outputs, and exported values)

-

**(4)** give your test a name in the recorder app sidebar, then click "Save test and exit" - this will save the recorded test and setup the testing infrastructure, if it doesn't exit already

+

**(4)** give your test a name in the recorder app sidebar, then click "Save test and exit" - this will save the recorded test and setup the testing infrastructure, if it doesn't exit already

--- @@ -215,7 +215,7 @@ shinyApp(ui, server) ## `setup-shinytest2.R` -

**(located at `/tests/testthat/setup-shinytest2.R`)**; For more complex apps, you'll often have support files (e.g. those contained in `/R` and/or `global.R`) -- content from those files will be stored here so that it is made accessible to your test(s). Since we don't have any support files for our rather small/somewhat simple app, you should only see the following:

+

**(located at `/tests/testthat/setup-shinytest2.R`)**; For more complex apps, you'll often have support files (e.g. those contained in `/R` and/or `global.R`) -- content from those files will be stored here so that it is made accessible to your test(s). Since we don't have any support files for our rather small/somewhat simple app, you should only see the following:

```{r} #| eval: false @@ -226,7 +226,7 @@ shinytest2::load_app_env() ## `test-shinytest2.R` -

**(located at `/tests/testthat/test-shinytest2.R`)**; This test script contains your recorded test, and should automatically open when you finish recording and save your test. You can manually modify this test (e.g. add additional interactions and expectations), if you wish. Yours should look similar to this:

+

**(located at `/tests/testthat/test-shinytest2.R`)**; This test script contains your recorded test, and should automatically open when you finish recording and save your test. You can manually modify this test (e.g. add additional interactions and expectations), if you wish. Yours should look similar to this:

```{r} #| eval: false @@ -243,13 +243,13 @@ test_that("{shinytest2} recording: sam-test", { ## `*_.png` -

**(located at `/tests/testthat/_snaps/shinytest2/*_.png`)**; This is a screenshot of your app from when `app$expect_values()` was called -- this file should be tracked using git so that you know how your app visually changes over time. My `.png` file looks like this:

+

**(located at `/tests/testthat/_snaps/shinytest2/*_.png`)**; This is a screenshot of your app from when `app$expect_values()` was called -- this file should be tracked using git so that you know how your app visually changes over time. My `.png` file looks like this:

A screenshot from my app, with the text 'Sam' printed in the text input box beneath the prompt, 'What is your name?'. Below the text box is a button that says 'Greet'. Below that, the text, 'Hello Sam!' is printed.
## `*.json` -

**(located at `/tests/testthat/_snaps/shinytest2/*.json`**); This is a [JSON](https://www.json.org/json-en.html) representation of the state of the app when `app$expect_values()` was called -- you'll see the state of all input, output, and export values at the time of the snapshot (we don't have any exports in our example app, but we do have a name input and a greeting output). This file should be tracked with git so that you have a record of your expected results. Your `.json` file should look something like this:

+

**(located at `/tests/testthat/_snaps/shinytest2/*.json`**); This is a [JSON](https://www.json.org/json-en.html) representation of the state of the app when `app$expect_values()` was called -- you'll see the state of all input, output, and export values at the time of the snapshot (we don't have any exports in our example app, but we do have a name input and a greeting output). This file should be tracked with git so that you have a record of your expected results. Your `.json` file should look something like this:

```{json} #| eval: false @@ -288,4 +288,4 @@ test_that("{shinytest2} recording: sam-test", {
-

This is only a brief intro to `shinytest2`! Dig into the [documentation](https://rstudio.github.io/shinytest2/index.html) to learn more.

+

This is only a brief intro to `shinytest2`! Dig into the [documentation](https://rstudio.github.io/shinytest2/index.html) to learn more.

diff --git a/sections/14-functions.qmd b/sections/14-functions.qmd index e96a897..6dcf9f9 100644 --- a/sections/14-functions.qmd +++ b/sections/14-functions.qmd @@ -17,23 +17,23 @@ format: revealjs
-

By the end of this section, you should:

+

By the end of this section, you should:

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand the benefits of turning UI elements and server logic into functions

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand the benefits of turning UI elements and server logic into functions

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know where to write/save your functions

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know where to write/save your functions

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} successfully turn a repeated input into a function

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} successfully turn a repeated input into a function

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} successfully turn a piece of server logic into a function

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} successfully turn a piece of server logic into a function

--- @@ -46,17 +46,17 @@ format: revealjs

Functions are useful for a wide variety of reasons. Most notably:

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reducing redundancy

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reducing complexity

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} increasing code comprehension

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} increasing testability

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reducing redundancy

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reducing complexity

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} increasing code comprehension

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} increasing testability

. . .

Importantly, functions can live outside of your app file(s) (i.e. `app.R` or `ui.R`, `server.R` and `global.R`), helping you to break up/streamline your code. Hadley Wickham [recommends](https://mastering-shiny.org/scaling-functions.html#file-organisation) creating a folder called `/R` **inside** your app's directory (e.g. `~/app-directory/R/...`) and:

-

**(a)** storing larger functions in their own files (e.g. `~/app-directory/R/{function-name}.R`) and/or

-

**(b)** creating a `utils.R` file (e.g `~/app-directory/R/utils.R`) to store smaller, simpler functions all in one script.

+

**(a)** storing larger functions in their own files (e.g. `~/app-directory/R/{function-name}.R`) and/or

+

**(b)** creating a `utils.R` file (e.g `~/app-directory/R/utils.R`) to store smaller, simpler functions all in one script.

You can **source your function files into `global.R`** so that your functions are made available for use throughout your app. **NOTE:** As of Shiny version 1.5.0, any scripts stored in `~/app-directory/R/` will be automatically sourced when your application is loaded (meaning you don't *need* to `source()` them into `global.R`, if you're running at least Shiny v1.5.0).

@@ -64,11 +64,11 @@ format: revealjs ## {#app-for-practicing-fxns data-menu-title="Example App for Fxn Practice"} -[Create a small app for function practice]{.slide-title-smaller} +[Create a small app for function practice]{.slide-title2}
-

Create a new subdirectory called `functions-app/` and add your `ui.R`, `server.R`, and `global.R` files with the following code. Run your app to see how it functions.

+

Create a new subdirectory called `functions-app/` and add your `ui.R`, `server.R`, and `global.R` files with the following code. Run your app to see how it functions.

::: {.panel-tabset} @@ -196,7 +196,7 @@ library(tidyverse) ## {#id-ui-duplication data-menu-title="Identify code duplication in UI"} -[Identify code duplication in `ui.R`]{.slide-title-smaller} +[Identify code duplication in `ui.R`]{.slide-title2}
@@ -254,19 +254,19 @@ ui <- fluidPage( ## {#write-ui-function data-menu-title="Write a UI function"} -[Write a function for adding a `pickerInput` to select for penguin species]{.slide-title-smaller} +[Write a function for adding a `pickerInput` to select for penguin species]{.slide-title2}
-

This app includes two `pickerInputs`, both of which allow users to select which penguin species to display data for. The only difference between both `pickerInput`s is the `inputId`. Let's write a function for our **penguin species pickerInput** that we can use in place of these two, rather long, chunks of code.

+

This app includes two `pickerInputs`, both of which allow users to select which penguin species to display data for. The only difference between both `pickerInput`s is the `inputId`. Let's write a function for our **penguin species pickerInput** that we can use in place of these two, rather long, chunks of code.

. . . -

First, create an `/R` folder inside your `functions-app` directory. Then, add a new script to this folder. I'm calling mine `penguinSpp_pickerInput.R`.

+

First, create an `/R` folder inside your `functions-app` directory. Then, add a new script to this folder. I'm calling mine `penguinSpp_pickerInput.R`.

-

Since the only difference between our original two `pickerInput`s are their `inputId`s, we can write a function that takes `inputId` as an argument (**Recall** that `inputId`s must be unique within an app, so it makes sense that both of our `pickerInput`s have different `inputId`s).

+

Since the only difference between our original two `pickerInput`s are their `inputId`s, we can write a function that takes `inputId` as an argument (**Recall** that `inputId`s must be unique within an app, so it makes sense that both of our `pickerInput`s have different `inputId`s).

-

Once written, `source()` your function script into `global.R` (if necessary) to make your function available for use in your app.

+

Once written, `source()` your function script into `global.R` (if necessary) to make your function available for use in your app.

::: {.panel-tabset} @@ -304,11 +304,11 @@ source("R/penguinSpp_pickerInput.R") # will source automatically with Shiny v1.5 ## {#apply-ui-fxn data-menu-title="Apply UI function"} -[Apply your function in `ui.R`]{.slide-title-smaller} +[Apply your function in `ui.R`]{.slide-title2}
-

Finally, replace your original UI code for building both `pickerInput`s with our `penguinSpp_pickerInput()` function, save, and run your app. It should look exactly the same as before!

+

Finally, replace your original UI code for building both `pickerInput`s with our `penguinSpp_pickerInput()` function, save, and run your app. It should look exactly the same as before!

```{r} #| eval: false @@ -364,11 +364,11 @@ ui <- fluidPage( ## {#server-fxns data-menu-title="Server functions"} -[Turn reactives & rendered outputs into functions]{.slide-title-smaller} +[Turn reactives & rendered outputs into functions]{.slide-title2}
-

Next, let's see where we can streamline our server code using functions. We have two discrete sections of code -- **(1)** a reactive data frame and scatterplot output and **(2)** a reactive data frame and histogram output.

+

Next, let's see where we can streamline our server code using functions. We have two discrete sections of code -- **(1)** a reactive data frame and scatterplot output and **(2)** a reactive data frame and histogram output.

```{r} #| eval: false @@ -426,17 +426,17 @@ server <- function(input, output) { ## {#build-penguin-scatterplot-fxn data-menu-title="build_penguin_scatterplot()"} -[Create a function to builds our scatterplot]{.slide-title-smaller} +[Create a function to builds our scatterplot]{.slide-title2}
-

First, create a new file in `~/function-app/R` and name it `build_penguin_histogram.R` (or a name that is succinct/clear -- I'm going to name my function similarly).

+

First, create a new file in `~/function-app/R` and name it `build_penguin_histogram.R` (or a name that is succinct/clear -- I'm going to name my function similarly).

-

The goal of my function is to filter the `penguins` data based on the user input *and* render our ggplot scatterplot. To start, I'm going to cut/paste both the code to generate the reactive `filtered_spp_histogram` data frame and the `renderPlot()` code from `server.R` into our `build_penguin_histogram()` function.

+

The goal of my function is to filter the `penguins` data based on the user input *and* render our ggplot scatterplot. To start, I'm going to cut/paste both the code to generate the reactive `filtered_spp_histogram` data frame and the `renderPlot()` code from `server.R` into our `build_penguin_histogram()` function.

-

**Important:** In isolation, our function *does not know* about the user input (`input` is not in our global environment, it's only known within the `server()` function). Therefore, we must pass `input` as an argument to our function.

+

**Important:** In isolation, our function *does not know* about the user input (`input` is not in our global environment, it's only known within the `server()` function). Therefore, we must pass `input` as an argument to our function.

-

**Note** that in R, functions return the last executed line -- when we run `build_penguin_histogram()` in our server, it will return the object created by `renderPlot()`.

+

**Note** that in R, functions return the last executed line -- when we run `build_penguin_histogram()` in our server, it will return the object created by `renderPlot()`.

```{r} #| eval: false @@ -470,11 +470,11 @@ build_penguin_histogram <- function(input) { ## {#use-build-penguin-scatterplot-fxn data-menu-title="Use build_penguin_scatterplot()"} -[Now use your function inside the server]{.slide-title-smaller} +[Now use your function inside the server]{.slide-title2}
-

**Remember**, the output of `build_penguin_scatterplot()` is `renderPlot()`, which is used to build our reactive scatterplot. Following our rules for creating reactivity, we need to save our function's output to `output$penguin_scatterplot`. In doing so, we reduced 23 lines of code to 1 inside our server function.

+

**Remember**, the output of `build_penguin_scatterplot()` is `renderPlot()`, which is used to build our reactive scatterplot. Following our rules for creating reactivity, we need to save our function's output to `output$penguin_scatterplot`. In doing so, we reduced 23 lines of code to 1 inside our server function.

```{r} #| eval: false #| echo: true @@ -513,11 +513,11 @@ server <- function(input, output) { ## {#create-build-penguin-histogram data-menu-title="Create & use build_penguin_histogram()"} -[Build a function to create our histogram]{.slide-title-smaller} +[Build a function to create our histogram]{.slide-title2}
-

We can repeat a similar process to create a function for building our histogram:

+

We can repeat a similar process to create a function for building our histogram:

::: {.panel-tabset} diff --git a/sections/15-modules.qmd b/sections/15-modules.qmd index 1d011db..42e3685 100644 --- a/sections/15-modules.qmd +++ b/sections/15-modules.qmd @@ -17,39 +17,39 @@ format: revealjs
-

By the end of this section, you should have an intro-level understanding of:

+

By the end of this section, you should have an intro-level understanding of:

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} what is a shiny module and when it might make sense to build one

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} what is a shiny module and when it might make sense to build one

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} the structure of a shiny module

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} the structure of a shiny module

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} how to use a module

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} how to use a module

. . . -

Packages introduced:

+

Packages introduced:

. . . -

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{gapminder}`: data

+

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{gapminder}`: data

---- ## {#gapminder-app data-menu-title="Gapminder app"} -[The utility of modules is best demonstrated by taking a look at an example app]{.slide-title-smaller} +[The utility of modules is best demonstrated by taking a look at an example app]{.slide-title2}
-

This app, developed by [Garrett Grolemund](https://github.com/garrettgman) & [Joe Cheng's](https://github.com/jcheng5) as part of their [Modules](https://www.rstudio.com/resources/shiny-dev-con/modules/?_ga=2.163786815.1475817156.1670220567-309155161.1666221806) lesson, taught at the 2016 Shiny Developer Conference, is a prime candidate for modularization.

+

This app, developed by [Garrett Grolemund](https://github.com/garrettgman) & [Joe Cheng's](https://github.com/jcheng5) as part of their [Modules](https://www.rstudio.com/resources/shiny-dev-con/modules/?_ga=2.163786815.1475817156.1670220567-309155161.1666221806) lesson, taught at the 2016 Shiny Developer Conference, is a prime candidate for modularization.

-

It uses the `gapminder` data set to display life expectancy by GDP per capita from 1952 to 2007 for Africa, the Americas, Asia, Europe, Oceania, and all regions collectively. The only difference between each tab is the subset of data displayed.

+

It uses the `gapminder` data set to display life expectancy by GDP per capita from 1952 to 2007 for Africa, the Americas, Asia, Europe, Oceania, and all regions collectively. The only difference between each tab is the subset of data displayed.

The gapminder app, which has 6 tabs, one for each global region. A bubble plot takes up the width of the ap and displays Life Expectancy by GDP per capita, where each bubble represents a country and the size of bubbles represent the population size of that country. An automated sliderInput advances through the years (1952-2007), and the plot updates accordingly.
@@ -57,7 +57,7 @@ format: revealjs ## {#gapminder-code data-menu-title="Gapminder code"} -[The code for this app isn't particularly complex, but it's repetitive and long]{.slide-title-smaller} +[The code for this app isn't particularly complex, but it's repetitive and long]{.slide-title2}
@@ -392,11 +392,11 @@ shinyApp(ui = ui, server = server) ## {#repeated-code data-menu-title="Repeated gapminder code"} -
Repeated code sections
+
Repeated code sections
-

Taking a closer look at the gapminder app code, we'll see that the following sections of code are repeated for each region (6 times total; only code sections for "all" regions shown below):

+

Taking a closer look at the gapminder app code, we'll see that the following sections of code are repeated for each region (6 times total; only code sections for "all" regions shown below):

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `tabPanel` (**UI**)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `tabPanel` (**UI**)

```{r} #| eval: false #| echo: true @@ -408,7 +408,7 @@ tabPanel(title = "All", animate = animationOptions(interval = 500))) ``` -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reactive data frame (**server**)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reactive data frame (**server**)

```{r} #| eval: false #| echo: true @@ -418,7 +418,7 @@ ydata_all <- reactive({ }) ``` -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reactive data frame (**server**)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} reactive data frame (**server**)

```{r} #| eval: false #| echo: true @@ -428,7 +428,7 @@ ydata_all <- reactive({ }) ``` -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} calculating date ranges (**server**)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} calculating date ranges (**server**)

```{r} #| eval: false #| echo: true @@ -441,11 +441,11 @@ yrange_all <- range(all_data$lifeExp) ## {#repeated-code-cont data-menu-title="Repeated gapminder code (cont.)"} -[Repeated code sections (cont.)]{.slide-title-smaller} +[Repeated code sections (cont.)]{.slide-title2}
-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `renderPlot({})` (**server**)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `renderPlot({})` (**server**)

```{r} #| eval: false @@ -506,7 +506,7 @@ output$all_plot <- renderPlot({ ## {#modules-structure data-menu-title="Structure of modules"} -[What do modules look like?]{.slide-title-smaller} +[What do modules look like?]{.slide-title2}
@@ -545,7 +545,7 @@ myModuleServer <- function(id, ...) { # where `...` includes any number of addit ## {#where-to-define-modules data-menu-title="Where to define modules"} -[Where should I define/save my module?]{.slide-title-smaller} +[Where should I define/save my module?]{.slide-title2}
@@ -555,25 +555,25 @@ myModuleServer <- function(id, ...) { # where `...` includes any number of addit

**(1)** save your modularized code script inside your app's directory (e.g. `~/app-directory/myModule.R`)

-

If you choose this option, call `source("myModule.R")` from `global.R` (if using ui.R/server.R) or `app.R`.

+

If you choose this option, call `source("myModule.R")` from `global.R` (if using ui.R/server.R) or `app.R`.

. . .

**(2)** save your modularized code script inside the `/R` subdirectory of your application (e.g. `~/app-directory/R/myModule.R`)

-

If you choose this option, your module will automatically be sourced (as of Shiny 1.5.0) when the application is loaded.

+

If you choose this option, your module will automatically be sourced (as of Shiny 1.5.0) when the application is loaded.

--- ## {#ui-function data-menu-title="UI function"} -[Breaking down the UI function:]{.slide-title-smallest} +[Breaking down the UI function:]{.slide-title3}
-

The UI part of a module needs to do **two** things: **(1)** return a shiny element (e.g. an input & output), and **(2)** assign module elements to a unique namespace using `NS()`. `NS()` provides an easy way to help with namespacing within your module, ensuring that each time your module is called, a unique `id` is assigned.

+

The UI part of a module needs to do **two** things: **(1)** return a shiny element (e.g. an input & output), and **(2)** assign module elements to a unique namespace using `NS()`. `NS()` provides an easy way to help with namespacing within your module, ensuring that each time your module is called, a unique `id` is assigned.

-

The UI function for our gapminder module will look like this (**NOTE:** code comments below denote the general order of operations I followed when writing this UI function):

+

The UI function for our gapminder module will look like this (**NOTE:** code comments below denote the general order of operations I followed when writing this UI function):

```{r} #| eval: false @@ -597,19 +597,19 @@ gapModuleUI <- function(id) { # step 2: the first argument to a UI function shou } # END gapModuleUI function ``` -

Wrapping our input and output `Id`s in `ns()` will create unique Ids each time our module is called, preventing things from overwriting one one another. For example, if we call `gapModuleUI(id = "myFirstModuleCall")`, our `outputId` will be set to `myFirstModuleCall-plot` and our `inputId` will be set to `myFirstModuleCall-year`. Calling our module a second time (e.g. `gapModuleUI(id = "mySecondModuleCall")`) will generate two new unique Ids (e.g. `mySecondModuleCall-plot` & `mySecondModuleCall-year`).

+

Wrapping our input and output `Id`s in `ns()` will create unique Ids each time our module is called, preventing things from overwriting one one another. For example, if we call `gapModuleUI(id = "myFirstModuleCall")`, our `outputId` will be set to `myFirstModuleCall-plot` and our `inputId` will be set to `myFirstModuleCall-year`. Calling our module a second time (e.g. `gapModuleUI(id = "mySecondModuleCall")`) will generate two new unique Ids (e.g. `mySecondModuleCall-plot` & `mySecondModuleCall-year`).

--- ## {#server-function data-menu-title="Server function"} -[Breaking down the Server function:]{.slide-title-smallest} +[Breaking down the Server function:]{.slide-title3}
-

The server part of a module looks very similar to a normal (i.e. non-modular) Shiny app server function. Begin by defining your module server function name and provide it with the first *required* parameter, `id`, along with any other necessary parameters (we also need to pass our particular function a `data` parameter to differentiate between data subsets (e.g. **All** vs. **Africa** vs. **Asia** etc.)).

+

The server part of a module looks very similar to a normal (i.e. non-modular) Shiny app server function. Begin by defining your module server function name and provide it with the first *required* parameter, `id`, along with any other necessary parameters (we also need to pass our particular function a `data` parameter to differentiate between data subsets (e.g. **All** vs. **Africa** vs. **Asia** etc.)).

-

Next, call `moduleServer()` *inside* your server function and pass it the `id` variable, along with the module function. The module function *must* have three parameters: `input`, `output`, and `session`. You *do not* have to use `ns()` to refer to inputs and outputs here. Copy server code from our original app, plop it inside the module function, and sub in our `data` parameter where ever a data frame subset is called.

+

Next, call `moduleServer()` *inside* your server function and pass it the `id` variable, along with the module function. The module function *must* have three parameters: `input`, `output`, and `session`. You *do not* have to use `ns()` to refer to inputs and outputs here. Copy server code from our original app, plop it inside the module function, and sub in our `data` parameter where ever a data frame subset is called.

```{r} #| eval: false @@ -671,11 +671,11 @@ gapModuleServer <- function(id, data) { # step 2: the first argument to a server ## {#using-module-1 data-menu-title="Using your module 1"} -[Now let's use our module:]{.slide-title-smaller} +[Now let's use our module:]{.slide-title2}
-

First, since we've saved our `gapModule.R` file to our app's directory, we'll need to source it at the top of our `app.R` file:

+

First, since we've saved our `gapModule.R` file to our app's directory, we'll need to source it at the top of our `app.R` file:

```{r} #| eval: false @@ -701,11 +701,11 @@ oceania_data <- filter(gapminder, continent == "Oceania") ## {#using-module-2 data-menu-title="Using your module 2"} -[Now let's use our module:]{.slide-title-smaller} +[Now let's use our module:]{.slide-title2}
-

Next, let's use our module's UI function. We'll need to define/name each of our `tabPanel`s (one for each of our six regions), but rather than building a `plotOutput` and `sliderInput` inside each `tabPanel` (each with unique `Id`s), we can instead call our `gapModuleUI()` function, and ensure that each time we call it to supply a unique character string for our `id` parameter.

+

Next, let's use our module's UI function. We'll need to define/name each of our `tabPanel`s (one for each of our six regions), but rather than building a `plotOutput` and `sliderInput` inside each `tabPanel` (each with unique `Id`s), we can instead call our `gapModuleUI()` function, and ensure that each time we call it to supply a unique character string for our `id` parameter.

```{r} #| eval: false @@ -751,11 +751,11 @@ ui <- fluidPage( ## {#using-module-3 data-menu-title="Using your module 3"} -[Now let's use our module:]{.slide-title-smaller} +[Now let's use our module:]{.slide-title2}
-

Finally, we can re-write our server. Rather than writing out the *lengthy* code required to make each plot six times over, we can instead call our `gapModuleServer()` function, supplying each call with `id`s that match those used in `gapModuleUI()`, along with the appropriate data subset. Now, run your app! If written correctly, your app should run exactly the same as your initial version.

+

Finally, we can re-write our server. Rather than writing out the *lengthy* code required to make each plot six times over, we can instead call our `gapModuleServer()` function, supplying each call with `id`s that match those used in `gapModuleUI()`, along with the appropriate data subset. Now, run your app! If written correctly, your app should run exactly the same as your initial version.

```{r} #| eval: false @@ -816,18 +816,18 @@ shinyApp(ui = ui, server = server) ## {#module-resources data-menu-title="Module resources"} -[Additional module resources]{.slide-title-smaller} +[Additional module resources]{.slide-title2}

We've barely scratched the surface of modules. Continue on with some of the following resources:

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Modularizing Shiny App Code](https://www.rstudio.com/resources/shiny-dev-con/modules/?_ga=2.163786815.1475817156.1670220567-309155161.1666221806) & [associated materials](https://github.com/rstudio/ShinyDeveloperConference/tree/master/Modules/Demo), by [Garrett Grolemund](https://github.com/garrettgman) & [Joe Cheng](https://github.com/jcheng5) at the 2016 Shiny Developer's Conference -- **NOTE:** This 2016 talk is an *excellent* introduction to modules and is definitely worth a watch, especially because we just explored the exact example demoed by G. Grolemund. Please note, however, that Shiny modules were overhauled in 2020 with the introduction of `moduleServer()`. The code on the previous slides has been updated to reflect those changes, and therefore differs slightly from what's taught in this video.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Modularizing Shiny App Code](https://www.rstudio.com/resources/shiny-dev-con/modules/?_ga=2.163786815.1475817156.1670220567-309155161.1666221806) & [associated materials](https://github.com/rstudio/ShinyDeveloperConference/tree/master/Modules/Demo), by [Garrett Grolemund](https://github.com/garrettgman) & [Joe Cheng](https://github.com/jcheng5) at the 2016 Shiny Developer's Conference -- **NOTE:** This 2016 talk is an *excellent* introduction to modules and is definitely worth a watch, especially because we just explored the exact example demoed by G. Grolemund. Please note, however, that Shiny modules were overhauled in 2020 with the introduction of `moduleServer()`. The code on the previous slides has been updated to reflect those changes, and therefore differs slightly from what's taught in this video.

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Mastering Shiny, Ch. 19 - Shiny Modules](https://mastering-shiny.org/scaling-modules.html#scaling-modules ), by [Hadley Wickham](https://github.com/hadley)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Mastering Shiny, Ch. 19 - Shiny Modules](https://mastering-shiny.org/scaling-modules.html#scaling-modules ), by [Hadley Wickham](https://github.com/hadley)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Modularizing Shiny app code](https://shiny.rstudio.com/articles/modules.html), by [Winston Chang](https://github.com/wch)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Modularizing Shiny app code](https://shiny.rstudio.com/articles/modules.html), by [Winston Chang](https://github.com/wch)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Effective use of Shiny modules in application development](https://www.youtube.com/watch?v=ylLLVo2VL50), by [Eric Nantz](https://r-podcast.org/host/enantz/) at rstudio::conf(2019)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Effective use of Shiny modules in application development](https://www.youtube.com/watch?v=ylLLVo2VL50), by [Eric Nantz](https://r-podcast.org/host/enantz/) at rstudio::conf(2019)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text}[A beginners guide to Shiny modules](https://emilyriederer.netlify.app/post/shiny-modules/), by [Emily Riederer](https://emilyriederer.netlify.app/about/)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text}[A beginners guide to Shiny modules](https://emilyriederer.netlify.app/post/shiny-modules/), by [Emily Riederer](https://emilyriederer.netlify.app/about/)

diff --git a/sections/16-shiny_alternatives.qmd b/sections/16-shiny_alternatives.qmd index b881951..de09815 100644 --- a/sections/16-shiny_alternatives.qmd +++ b/sections/16-shiny_alternatives.qmd @@ -17,19 +17,19 @@ format: revealjs
-

Shiny is awesome, but depending on your goals, vision, and end users, you may not need the full functionality that shiny provides. You can potentially save yourself (and your clients) the stress of deploying and maintaining apps by first considering other options:

+

Shiny is awesome, but depending on your goals, vision, and end users, you may not need the full functionality that shiny provides. You can potentially save yourself (and your clients) the stress of deploying and maintaining apps by first considering other options:

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Widgets aren't only for Shiny! Embed interactive [htmlwidgets](https://www.htmlwidgets.org/) into your R Markdown documents that range from geo-spatial mapping with `{leaflet}` to generating network graph diagrams with `{DiagrammeR}`. Check out the [htmlwidgets for R - gallery](http://gallery.htmlwidgets.org/) for many more options.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Widgets aren't only for Shiny! Embed interactive [htmlwidgets](https://www.htmlwidgets.org/) into your R Markdown documents that range from geo-spatial mapping with `{leaflet}` to generating network graph diagrams with `{DiagrammeR}`. Check out the [htmlwidgets for R - gallery](http://gallery.htmlwidgets.org/) for many more options.

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Compose multiple widgets into a dashboard using `{flexdashboard}`. Based in R Markdown, this framework allows you to produce dynamic dashboards using tools you are already familiar with. Find example projects and their source code [here](https://pkgs.rstudio.com/flexdashboard/articles/examples.html).

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Compose multiple widgets into a dashboard using `{flexdashboard}`. Based in R Markdown, this framework allows you to produce dynamic dashboards using tools you are already familiar with. Find example projects and their source code [here](https://pkgs.rstudio.com/flexdashboard/articles/examples.html).

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Embed reactive shiny components (e.g. inputs & outputs) in Quarto documents. By using some fun new code chunk options, you can instruct Quarto to spin up it's own self-contained shiny server to run your reactives. Read the [Quarto documentation](https://quarto.org/docs/interactive/shiny/) to learn more and check out some teaching examples [here](https://quarto.org/docs/interactive/shiny/#examples).

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Embed reactive shiny components (e.g. inputs & outputs) in Quarto documents. By using some fun new code chunk options, you can instruct Quarto to spin up it's own self-contained shiny server to run your reactives. Read the [Quarto documentation](https://quarto.org/docs/interactive/shiny/) to learn more and check out some teaching examples [here](https://quarto.org/docs/interactive/shiny/#examples).

Logos for htmlwidgets, flexdashboard, and quarto.
@@ -41,7 +41,7 @@ format: revealjs
-

[{{< fa sun title="a sun" >}}]{.teal-text} [Energy Siting Dashboard](https://energysiting.github.io/energysiting-dashboard/) ([source code](https://github.com/energysiting/energysiting-dashboard)), *developed by MEDS 2022 alumni [Paloma Cartwright](https://palomacartwright.github.io/), [Joe DeCesaro](https://joedecesaro.github.io/), [Daniel Kerstan](https://www.linkedin.com/in/daniel-kerstan-5b162321b/) & [Desik Somasundaram](https://www.linkedin.com/in/desik-somasundaram-902a8a120/) as part of their MEDS capstone project* -- explore predictions of the most suitable locations for large, utility-scale wind and solar projects across the United States

+

[{{< fa sun title="a sun" >}}]{.teal-text} [Energy Siting Dashboard](https://energysiting.github.io/energysiting-dashboard/) ([source code](https://github.com/energysiting/energysiting-dashboard)), *developed by MEDS 2022 alumni [Paloma Cartwright](https://palomacartwright.github.io/), [Joe DeCesaro](https://joedecesaro.github.io/), [Daniel Kerstan](https://www.linkedin.com/in/daniel-kerstan-5b162321b/) & [Desik Somasundaram](https://www.linkedin.com/in/desik-somasundaram-902a8a120/) as part of their MEDS capstone project* -- explore predictions of the most suitable locations for large, utility-scale wind and solar projects across the United States

-

[{{< fa handshake title="two hands shaking" >}}]{.teal-text} [@ADELPHIRESEARCH TWEETS Dashboard](https://spileggi.shinyapps.io/Pileggi_presentation_shiny/) ([source code](https://github.com/shannonpileggi/Adelphi-tweets)), *developed by R-Lady [Shannon Pileggi](https://www.pipinghotdata.com/index.html) as part of a job interview* -- read about this clever approach to showcasing your skills to a potential employer in Shannon's blogpost, [A job interview presentation inspired by the R community](https://www.pipinghotdata.com/posts/2020-08-30-a-job-interview-presentation-inspired-by-the-r-community/).

+

[{{< fa handshake title="two hands shaking" >}}]{.teal-text} [@ADELPHIRESEARCH TWEETS Dashboard](https://spileggi.shinyapps.io/Pileggi_presentation_shiny/) ([source code](https://github.com/shannonpileggi/Adelphi-tweets)), *developed by R-Lady [Shannon Pileggi](https://www.pipinghotdata.com/index.html) as part of a job interview* -- read about this clever approach to showcasing your skills to a potential employer in Shannon's blogpost, [A job interview presentation inspired by the R community](https://www.pipinghotdata.com/posts/2020-08-30-a-job-interview-presentation-inspired-by-the-r-community/).

diff --git a/sections/17-additional-resources-final-thoughts.qmd b/sections/17-additional-resources-final-thoughts.qmd index 6947bc0..984446c 100644 --- a/sections/17-additional-resources-final-thoughts.qmd +++ b/sections/17-additional-resources-final-thoughts.qmd @@ -17,57 +17,57 @@ format: revealjs
-

[{{< fa chart-column title="a bar chart" >}}]{.teal-text} Oftentimes, the most time consuming part of building a shiny app is deciding on how to present the data visually -- make your data visualizations first, *outside of shiny*, refine, decide which variables you think are important enough to make reactive, etc. **THEN**, build them into your shiny application.

+

[{{< fa chart-column title="a bar chart" >}}]{.teal-text} Oftentimes, the most time consuming part of building a shiny app is deciding on how to present the data visually -- make your data visualizations first, *outside of shiny*, refine, decide which variables you think are important enough to make reactive, etc. **THEN**, build them into your shiny application.

. . . -

[{{< fa table title="a data table" >}}]{.teal-text} Get your data in the most wrangled form possible before loading it into your app to avoid unnecessary slowdowns.

+

[{{< fa table title="a data table" >}}]{.teal-text} Get your data in the most wrangled form possible before loading it into your app to avoid unnecessary slowdowns.

. . . -

[{{< fa code title="the symbol for code, " >}}]{.teal-text} Code expands *quickly* -- stay organized! Create a repository map (see an example in this [README](https://github.com/UCSB-MEDS/shiny-dashboard/blob/main/README.md)), so you and your collaborators know where files live and what they do. Use rainbow parentheses, add extra space between sections of code, and include clear code comments to denote the start and end of parentheses. This will help save headaches later on.

+

[{{< fa code title="the symbol for code, " >}}]{.teal-text} Code expands *quickly* -- stay organized! Create a repository map (see an example in this [README](https://github.com/UCSB-MEDS/shiny-dashboard/blob/main/README.md)), so you and your collaborators know where files live and what they do. Use rainbow parentheses, add extra space between sections of code, and include clear code comments to denote the start and end of parentheses. This will help save headaches later on.

. . . -

[{{< fa users title="three people" >}}]{.teal-text} Keep in mind the [considerations for good UX/UI design](https://ucsb-meds.github.io/EDS430-Shiny/#/UX-UI-design-tips). You're building an app for the user first and foremost -- be sure to assess often if your app is going to meet their needs.

+

[{{< fa users title="three people" >}}]{.teal-text} Keep in mind the [considerations for good UX/UI design](https://ucsb-meds.github.io/EDS430-Shiny/#/UX-UI-design-tips). You're building an app for the user first and foremost -- be sure to assess often if your app is going to meet their needs.

. . . -

[{{< fa question title="question mark" >}}]{.teal-text} Before taking the plunge, consider if you really need shiny at all -- maintaining apps can be challenging. What other options might you have for sharing your data with end users?

+

[{{< fa question title="question mark" >}}]{.teal-text} Before taking the plunge, consider if you really need shiny at all -- maintaining apps can be challenging. What other options might you have for sharing your data with end users?

--- ## {#resources1 data-menu-title="Resources"} -[Great Shiny resources]{.slide-title-smaller} +[Great Shiny resources]{.slide-title2}
-

A quick Google search will yield *lots* of online resources, forum discussions, video tutorials, etc. for building Shiny applications. Many are linked throughout these slides, but here's an attempt at putting some of those that I referenced most often all in one spot (along with some that we didn't have time to cover). Be sure to poke around online yourself, and let me know if you come across any that you find particularly useful so that I can add them here!

+

A quick Google search will yield *lots* of online resources, forum discussions, video tutorials, etc. for building Shiny applications. Many are linked throughout these slides, but here's an attempt at putting some of those that I referenced most often all in one spot (along with some that we didn't have time to cover). Be sure to poke around online yourself, and let me know if you come across any that you find particularly useful so that I can add them here!

-

**Books**

+

**Books**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Mastering Shiny](https://mastering-shiny.org/basic-app.html), by Hadley Wickham

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Mastering Shiny](https://mastering-shiny.org/basic-app.html), by Hadley Wickham

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Engineering Production-Grade Shiny Apps](https://engineering-shiny.org/index.html), by Colin Fay, Sébastien Rochette, Vincent Guyader & Cervan Girard.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Engineering Production-Grade Shiny Apps](https://engineering-shiny.org/index.html), by Colin Fay, Sébastien Rochette, Vincent Guyader & Cervan Girard.

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Building Web Apps with R](https://debruine.github.io/shinyintro/index.html), by [Lisa DeBruine](https://github.com/debruine) -- an short course (paired with an online book with instructions, resources, etc.)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Building Web Apps with R](https://debruine.github.io/shinyintro/index.html), by [Lisa DeBruine](https://github.com/debruine) -- an short course (paired with an online book with instructions, resources, etc.)

-

**Tutorials**

+

**Tutorials**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Building Shiny apps - an interactive tutorial](https://deanattali.com/blog/building-shiny-apps-tutorial/), by Dean Attali

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Building Shiny apps - an interactive tutorial](https://deanattali.com/blog/building-shiny-apps-tutorial/), by Dean Attali

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text}[Speeding Up R Shiny](https://www.r-bloggers.com/2021/06/speeding-up-r-shiny-the-definitive-guide/), by Jakub Sobolewski in R bloggers -- details methods on improving app performance

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text}[Speeding Up R Shiny](https://www.r-bloggers.com/2021/06/speeding-up-r-shiny-the-definitive-guide/), by Jakub Sobolewski in R bloggers -- details methods on improving app performance

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Allison Horst's [The Basics of Building Shiny Apps in R](https://github.com/allisonhorst/shiny-basics-sb-r-ladies) workshop

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Allison Horst's [The Basics of Building Shiny Apps in R](https://github.com/allisonhorst/shiny-basics-sb-r-ladies) workshop

-

**Tools**

+

**Tools**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [R Shiny & FontAwesome Icons -- How to Use Them in Your Dashboards](https://www.r-bloggers.com/2022/09/r-shiny-fontawesome-icons-how-to-use-them-in-your-dashboards/), by Dario Radečić in R Bloggers -- instructions for setting up your [fontawesome](https://fontawesome.com/) kit

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [R Shiny & FontAwesome Icons -- How to Use Them in Your Dashboards](https://www.r-bloggers.com/2022/09/r-shiny-fontawesome-icons-how-to-use-them-in-your-dashboards/), by Dario Radečić in R Bloggers -- instructions for setting up your [fontawesome](https://fontawesome.com/) kit

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Shiny UI Editor](https://rstudio.github.io/shinyuieditor/) and [Nick Strayer](https://nickstrayer.me/)'s [rstudio::conf(2022) talk](https://www.rstudio.com/conference/2022/talks/new-way-to-build-shiny/) introducing it -- a visual tool for building the UI portion of a Shiny application that generates clean and human-readable code (**currently in Alpha**, as of January 2023)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Shiny UI Editor](https://rstudio.github.io/shinyuieditor/) and [Nick Strayer](https://nickstrayer.me/)'s [rstudio::conf(2022) talk](https://www.rstudio.com/conference/2022/talks/new-way-to-build-shiny/) introducing it -- a visual tool for building the UI portion of a Shiny application that generates clean and human-readable code (**currently in Alpha**, as of January 2023)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} The [`{golem}` package](https://github.com/ThinkR-open/golem) provides an opinionated framework for building production-grade shiny applications and is a part of a growing ecosystem of packages called the [`{golemverse}`](https://golemverse.org/). There are lots of accompanying learning materials, including the book, [Engineering Production Grade Shiny Apps](https://engineering-shiny.org/), by Colin Fay, Sébastien Rochette, Vincent Guyader, and Cervan Girard.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} The [`{golem}` package](https://github.com/ThinkR-open/golem) provides an opinionated framework for building production-grade shiny applications and is a part of a growing ecosystem of packages called the [`{golemverse}`](https://golemverse.org/). There are lots of accompanying learning materials, including the book, [Engineering Production Grade Shiny Apps](https://engineering-shiny.org/), by Colin Fay, Sébastien Rochette, Vincent Guyader, and Cervan Girard.

--- @@ -79,9 +79,9 @@ format: revealjs

Posit/RStudio's great instructional resources, examples, and help documentation:

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} A thoughtfully organized [Articles](https://shiny.rstudio.com/articles/) page

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} A thoughtfully organized [Articles](https://shiny.rstudio.com/articles/) page

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} The [Shiny User Showcase](https://shiny.rstudio.com/gallery/#user-showcase), a collection of Shiny apps and their source code developed by the Shiny developer community -- many of these featured apps are winners or honorable mentions of the [annual Shiny contest](https://www.rstudio.com/blog/winners-of-the-3rd-annual-shiny-contest/)!

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} The [Shiny User Showcase](https://shiny.rstudio.com/gallery/#user-showcase), a collection of Shiny apps and their source code developed by the Shiny developer community -- many of these featured apps are winners or honorable mentions of the [annual Shiny contest](https://www.rstudio.com/blog/winners-of-the-3rd-annual-shiny-contest/)!

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Shiny Demos](https://shiny.rstudio.com/gallery/#demos), a series of apps created by the Shiny developers to highlight specific features of the shiny package -- these are *excellent* resources to turn to when you are learning how to implement a new type of widget, working on the layout of your app, and more.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Shiny Demos](https://shiny.rstudio.com/gallery/#demos), a series of apps created by the Shiny developers to highlight specific features of the shiny package -- these are *excellent* resources to turn to when you are learning how to implement a new type of widget, working on the layout of your app, and more.

diff --git a/sections/2-setup.qmd b/sections/2-setup.qmd index b0c54a7..c07bfe8 100644 --- a/sections/2-setup.qmd +++ b/sections/2-setup.qmd @@ -29,7 +29,7 @@ format: revealjs
-

Not much is *required* to make a functional app (which is awesome) -- for a basic app, you really just need an `app.R` file where you'll write the code for your UI and server. To stay organized, we'll place `app.R` into a subdirectory (e.g. `/myapp`), which will also house any dependencies (e.g. other scripts/files/etc.) used by `app.R`.

+

Not much is *required* to make a functional app (which is awesome) -- for a basic app, you really just need an `app.R` file where you'll write the code for your UI and server. To stay organized, we'll place `app.R` into a subdirectory (e.g. `/myapp`), which will also house any dependencies (e.g. other scripts/files/etc.) used by `app.R`.

A visual representation of a basic shiny app repository file/folder structure.
@@ -37,7 +37,7 @@ format: revealjs ## {#begin-the-same data-menu-title="All Apps Begin the Same"} -[All Shiny apps begin (in almost) the same way]{.slide-title-smaller} +[All Shiny apps begin (in almost) the same way]{.slide-title2}
@@ -45,7 +45,7 @@ format: revealjs
Shiny apps can be built using a single app.R file, or using ui.R plus server.R, and most often a global.R in conjunction.
-

Why two options? Before v0.10.2, Shiny apps needed to be split into **two separate files**, `ui.R` and `server.R`, that defined the UI and server components, respectively. With v0.10.2+, users can create a **single-file app**, `app.R`, which contains both the UI and server components together. While it largely comes down to personal preference, a **single-file format is best for smaller apps or when creating a [reprex](https://reprex.tidyverse.org/)**, while the **two-file format is beneficial when writing large, complex apps** where breaking apart code can make things a bit more navigable/maintainable.

+

Why two options? Before v0.10.2, Shiny apps needed to be split into **two separate files**, `ui.R` and `server.R`, that defined the UI and server components, respectively. With v0.10.2+, users can create a **single-file app**, `app.R`, which contains both the UI and server components together. While it largely comes down to personal preference, a **single-file format is best for smaller apps or when creating a [reprex](https://reprex.tidyverse.org/)**, while the **two-file format is beneficial when writing large, complex apps** where breaking apart code can make things a bit more navigable/maintainable.

--- @@ -59,13 +59,13 @@ format: revealjs . . . -

**1.** In your project repo, create a subdirectory to house your app -- I'm calling mine, `single-file-app`.

+

**1.** In your project repo, create a subdirectory to house your app -- I'm calling mine, `single-file-app`.

. . . -

**2.** Create a new R script inside `/single-file-app` and name it `app.R` -- you **must** name your script `app.R`. Copy/type the following code into `app.R`, or use the `shinyapp` [snippet](https://rstudio.github.io/rstudio-extensions/rstudio_snippets.html) to automatically generate a shiny app template.

+

**2.** Create a new R script inside `/single-file-app` and name it `app.R` -- you **must** name your script `app.R`. Copy/type the following code into `app.R`, or use the `shinyapp` [snippet](https://rstudio.github.io/rstudio-extensions/rstudio_snippets.html) to automatically generate a shiny app template.

-```{r} +```{r filename-"app.R"} #| eval: false #| echo: true # load packages ---- @@ -81,23 +81,23 @@ server <- function(input, output) {} shinyApp(ui = ui, server = server) ``` -

**Tip:** Use code sections (denoted by `# some text ----`) to make navigating different sections of your app code a bit easier. Code sections will appear in your document outline (find the button at the top right corner of the script/editor panel).

+

**Tip:** Use code sections (denoted by `# some text ----`) to make navigating different sections of your app code a bit easier. Code sections will appear in your document outline (find the button at the top right corner of the script/editor panel).

--- ## {#run-app data-menu-title="Run Your App"} -[Run your app]{.slide-title-smaller} +[Run your app]{.slide-title2}
-

Once you have saved your `app.R` file, the "Run" code button should turn into a "Run App" button that looks like: A green, right facing triangular arrow next to the words 'Run App'. Click that button to run your app (alternatively, run `runApp("directory-name")` in your console -- for me, that looks like, `runApp("single-file-app")`)!

+

Once you have saved your `app.R` file, the "Run" code button should turn into a "Run App" button that looks like: A green, right facing triangular arrow next to the words 'Run App'. Click that button to run your app (alternatively, run `runApp("directory-name")` in your console -- for me, that looks like, `runApp("single-file-app")`)!

. . . -

You won't see much yet, as we have only built a blank app (but a functioning app, nonetheless!). In your RStudio console, you should see something like: `Listening on http://127.0.0.1:XXXX`, which is the URL where your app can be found. 127.0.0.1 is a standard address that means "this computer," and the last four digits represent a randomly assigned port number. You can click the "Open in Browser" button, A button found on the top left-hand side of the RStudio viewer window that says 'Open in Browser' next to a small browser window icon with an arrow pointing up and to the right., to see how your app will appear when viewed in your web browser.

+

You won't see much yet, as we have only built a blank app (but a functioning app, nonetheless!). In your RStudio console, you should see something like: `Listening on http://127.0.0.1:XXXX`, which is the URL where your app can be found. 127.0.0.1 is a standard address that means "this computer," and the last four digits represent a randomly assigned port number. You can click the "Open in Browser" button, A button found on the top left-hand side of the RStudio viewer window that says 'Open in Browser' next to a small browser window icon with an arrow pointing up and to the right., to see how your app will appear when viewed in your web browser.

-

You should also notice a red stop sign, A red hexagon with the word 'STOP' printed in white across the center., appear in the top right corner of your console indicating that R is busy--this is because your R session is currently acting as your Shiny app server and listening for any user interaction with your app. Because of this, you won't be able to run any commands in the console until you quit your app. Do so by pressing the stop button.

+

You should also notice a red stop sign, A red hexagon with the word 'STOP' printed in white across the center., appear in the top right corner of your console indicating that R is busy--this is because your R session is currently acting as your Shiny app server and listening for any user interaction with your app. Because of this, you won't be able to run any commands in the console until you quit your app. Do so by pressing the stop button.

:::: {.columns} @@ -115,7 +115,7 @@ shinyApp(ui = ui, server = server) ## {#two-file data-menu-title="Two-file App"} -[Create a two-file Shiny app]{.slide-title-smaller} +[Create a two-file Shiny app]{.slide-title2}
@@ -123,17 +123,17 @@ shinyApp(ui = ui, server = server) . . . -

**1.** In your project repo, create a new subdirectory to house your app -- I'm calling mine, `two-file-app`.

+

**1.** In your project repo, create a new subdirectory to house your app -- I'm calling mine, `two-file-app`.

. . . -

**2.** Create two new R scripts inside `/two-file-app` named `ui.R` and `server.R` -- you **must** name your scripts `ui.R` and `server.R`. Copy the following code into the respective files. **Note:** When splitting your UI and server into separate files, you do not need to include the `shinyApp(ui = ui, server = server)` line of code (as required in your single-file app).

+

**2.** Create two new R scripts inside `/two-file-app` named `ui.R` and `server.R` -- you **must** name your scripts `ui.R` and `server.R`. Copy the following code into the respective files. **Note:** When splitting your UI and server into separate files, you do not need to include the `shinyApp(ui = ui, server = server)` line of code (as required in your single-file app).

:::: {.columns} ::: {.column width="45%"} -

**`ui.R`**

-```{r} + +```{r filename="ur.R"} #| eval: false #| echo: true # user interface ---- @@ -145,8 +145,8 @@ ui <- fluidPage() ::: ::: {.column width="45%"} -

**`server.R`**

-```{r} + +```{r filename="server.R"} #| eval: false #| echo: true # server instructions ---- @@ -158,10 +158,10 @@ server <- function(input, output) {} . . . -

**3.** Lastly, let's create a `global.R` file within `/two-file-app` and add dependencies (right now, that's just loading the `shiny` package). Run your app as we did earlier.

+

**3.** Lastly, let's create a `global.R` file within `/two-file-app` and add dependencies (right now, that's just loading the `shiny` package). Run your app as we did earlier.

-

**`global.R`**

-```{r} + +```{r filename="global.R"} #| eval: false #| echo: true # load libraries ---- diff --git a/sections/3-first-app.qmd b/sections/3-first-app.qmd index a10f237..99fbf1c 100644 --- a/sections/3-first-app.qmd +++ b/sections/3-first-app.qmd @@ -15,51 +15,51 @@ editor_options: ## {#LO-app1 data-menu-title="Learning Objectives - App #1"} -[{{< fa book-open title="an open book" >}} Learning Objectives - App #1 (single-file app)]{.slide-title-smaller} +[{{< fa book-open title="an open book" >}} Learning Objectives - App #1 (single-file app)]{.slide-title2}
-

By the end of building out this first app, you should be a bit more familiar with:

+

By the end of building out this first app, you should be a bit more familiar with:

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} writing a single-file (`app.R`) shiny app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} writing a single-file (`app.R`) shiny app

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} adding and styling text in the UI using `tags`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} adding and styling text in the UI using `tags`

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} practicing data wrangling and visualization *outside* of your shiny app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} practicing data wrangling and visualization *outside* of your shiny app

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} following a general workflow for building reactive apps, which includes adding **inputs** and **outputs** to the **UI**, then writing the **server instructions** on how to assemble user input values into outputs

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} following a general workflow for building reactive apps, which includes adding **inputs** and **outputs** to the **UI**, then writing the **server instructions** on how to assemble user input values into outputs

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} running and quitting apps in RStudio

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} running and quitting apps in RStudio

. . . -

Packages introduced:

+

Packages introduced:

. . . -

[{{< fa box-open title="an open box" >}}]{.teal-text} `{shiny}`: framework for building our reactive app + standard widgets

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{shiny}`: framework for building our reactive app + standard widgets

. . . -

[{{< fa box-open title="an open box" >}}]{.teal-text} `{DT}`: interactive datatable widgets (that can be made reactive using shiny!)

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{DT}`: interactive datatable widgets (that can be made reactive using shiny!)

. . . -

[{{< fa box-open title="an open box" >}}]{.teal-text} `{tidyverse}`: collection of packages for wrangling & visualizing data

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{tidyverse}`: collection of packages for wrangling & visualizing data

. . . -

[{{< fa box-open title="an open box" >}}]{.teal-text} `{palmerpenguins}`: data

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{palmerpenguins}`: data

--- @@ -97,13 +97,13 @@ editor_options: ## {#adding-text data-menu-title="Adding text"} -[Add text in the UI]{.slide-title-smaller} +[Add text in the UI]{.slide-title2}
-

We'll do this in the **UI** within `fluidPage()`, a layout function that sets up the basic visual structure of the page and scales components in real time to fill all available browser width. Add a title and subtitle to your app (be sure to separate each with a comma, `,`), save, and run:

+

We'll do this in the **UI** within `fluidPage()`, a layout function that sets up the basic visual structure of the page and scales components in real time to fill all available browser width. Add a title and subtitle to your app (be sure to separate each with a comma, `,`), save, and run:

-```{r} +```{r filename="app.R"} #| eval: false #| echo: true # user interface ---- @@ -120,9 +120,9 @@ ui <- fluidPage( . . . -

Recall that the UI is actually just an HTML document. We can style our text by adding static HTML elements [using `tags`](https://shiny.rstudio.com/articles/tag-glossary.html) -- a list of functions that parallel common HTML tags (e.g. `

` == `tags$h1()`) The most common tags also have wrapper functions (e.g. `h1()`).

+

Recall that the UI is actually just an HTML document. We can style our text by adding static HTML elements [using `tags`](https://shiny.rstudio.com/articles/tag-glossary.html) -- a list of functions that parallel common HTML tags (e.g. `

` == `tags$h1()`) The most common tags also have wrapper functions (e.g. `h1()`).

-```{r} +```{r filename="app.R"} #| eval: false #| echo: true # user interface ---- @@ -141,30 +141,30 @@ ui <- fluidPage( ## {#inputs-outputs data-menu-title="Inputs & Outputs"} -[What are inputs and outputs?]{.slide-title} +[What are inputs and outputs?]{.slide-title3}
-

Next, we will begin to add some inputs and outputs to our UI inside `fluidPage()` (anything that you put into `fluidPage()` will appear in our app's user interface...and we want inputs and outputs to show up there!).

+

Next, we will begin to add some inputs and outputs to our UI inside `fluidPage()` (anything that you put into `fluidPage()` will appear in our app's user interface...and we want inputs and outputs to show up there!).

-

**Inputs** (or widgets) are the things that users can interact with (e.g. toggle, slide) and provide values to your app. The input functions below correspond to the widgets you see on [slide #9](https://ucsb-meds.github.io/EDS430-Shiny/#/widgets). **Outputs** are the R objects that your user sees (e.g. tables, plots) and are what respond when a user interacts with/changes an input value.

+

**Inputs** (or widgets) are the things that users can interact with (e.g. toggle, slide) and provide values to your app. The input functions below correspond to the widgets you see on [slide #9](https://ucsb-meds.github.io/EDS430-Shiny/#/widgets). **Outputs** are the R objects that your user sees (e.g. tables, plots) and are what respond when a user interacts with/changes an input value.

-

The `shiny` package comes with a number of input and output functions, but you can extend these with additional packages (e.g. `shinyWidgets`, `plotly`, `DT`, etc.; more on those later).

+

The `shiny` package comes with a number of input and output functions, but you can extend these with additional packages (e.g. `shinyWidgets`, `plotly`, `DT`, etc.; more on those later).

:::: {.columns} ::: {.column width="45%"}

**Examples of Input Functions:**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `actionButton()`

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `checkboxInput()`

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `checkboxGroupInput()`

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `dateInput()`

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `dateRangeInput()`

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `radioButtons()`

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `selectInput()`

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `sliderInput()`

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `textInput()`

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} See full list of `shiny` input functions [here](https://shiny.rstudio.com/tutorial/written-tutorial/lesson3/)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `actionButton()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `checkboxInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `checkboxGroupInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `dateInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `dateRangeInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `radioButtons()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `selectInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `sliderInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `textInput()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} See a [full list](https://shiny.rstudio.com/tutorial/written-tutorial/lesson3/) of `shiny` input functions

::: ::: {.column width="5%"} @@ -172,12 +172,12 @@ ui <- fluidPage( ::: {.column width="45%"}

**Examples of Output Functions:**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `dataTableOutput()` (inserts an interactive table)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `imageOutput()` (inserts an image)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `plotOutput()` (inserts a plot)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `tableOutput()` (inserts a table)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `textOutput()` (inserts text)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} See full list of `shiny` output functions [here](https://shiny.rstudio.com/tutorial/written-tutorial/lesson4/)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `dataTableOutput()` (inserts an interactive table)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `imageOutput()` (inserts an image)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `plotOutput()` (inserts a plot)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `tableOutput()` (inserts a table)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} `textOutput()` (inserts text)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} See a [full list](https://shiny.rstudio.com/tutorial/written-tutorial/lesson4/) of `shiny` output functions

::: :::: @@ -190,16 +190,16 @@ ui <- fluidPage(
-

Next, we'll create a **scatterplot of penguin bill lengths vs. penguin flipper lengths** using the `penguins` data set from the `{palmerpengiuns}` package. We will make this scatterplot *reactive* by adding a `sliderInput` that allows users to filter the displayed data points by **selecting a range of penguin body masses** (e.g. only plot bill and flipper lengths for penguins with body masses ranging from 4,500 grams to 6,000 grams).

+

Next, we'll create a **scatterplot of penguin bill lengths vs. penguin flipper lengths** using the `penguins` data set from the `{palmerpengiuns}` package. We will make this scatterplot *reactive* by adding a `sliderInput` that allows users to filter the displayed data points by **selecting a range of penguin body masses** (e.g. only plot bill and flipper lengths for penguins with body masses ranging from 4,500 grams to 6,000 grams).

:::: {.columns} ::: {.column width="45%"}
-

**To create a reactive plot, we will follow these steps:**

-

**1.** Add an input (e.g. `sliderInput`) to the **UI** that users can interact with

-

**2.** Add an output (e.g. `plotOutput`) to the **UI** that creates a *placeholder space* to fill with our eventual reactive output

-

**3.** Tell the **server** how to assemble inputs into outputs

+

**To create a reactive plot, we will follow these steps:**

+

**1.** Add an input (e.g. `sliderInput`) to the **UI** that users can interact with

+

**2.** Add an output (e.g. `plotOutput`) to the **UI** that creates a *placeholder space* to fill with our eventual reactive output

+

**3.** Tell the **server** how to assemble inputs into outputs

::: ::: {.column width="5%"} @@ -219,11 +219,11 @@ ui <- fluidPage(
-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **All input functions have the same first argument, `inputId`** (**NOTE:** `Id` *not* `ID`), **which is used to connect the front end of your app (the UI) with the back end (the server).** For example, if your UI has an `inputId = "name"`, the server function will access that input value using the syntax `input$name`. The `inputId` has two constraints: **(1)** it must be a simple string containing only letters, numbers, and underscores, **(2)** it must be unique within your app.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **All input functions have the same first argument, `inputId`** (**NOTE:** `Id` *not* `ID`), **which is used to connect the front end of your app (the UI) with the back end (the server).** For example, if your UI has an `inputId = "name"`, the server function will access that input value using the syntax `input$name`. The `inputId` has two constraints: **(1)** it must be a simple string containing only letters, numbers, and underscores, **(2)** it must be unique within your app.

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Most input functions have a second parameter called `label`, which is used to create a human-readable label for the control, which will appear in the UI.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Most input functions have a second parameter called `label`, which is used to create a human-readable label for the control, which will appear in the UI.

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} The remaining arguments are unique to each input function. Oftentimes, these include a `value` parameter, which lets you set the default value of your widget, where applicable.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} The remaining arguments are unique to each input function. Oftentimes, these include a `value` parameter, which lets you set the default value of your widget, where applicable.

**A couple examples:**

```{r} @@ -234,19 +234,19 @@ sliderInput(inputId = "body_mass_input", label = "Select a range of body masses selectInput(inputId = "island_input", label = "Choose and island:", ...) ``` -

Check out the interactive [Shiny Widgets Gallery](https://shiny.rstudio.com/gallery/widget-gallery.html) to learn how to implement the most common widgets.

+

Check out the interactive [Shiny Widgets Gallery](https://shiny.rstudio.com/gallery/widget-gallery.html) to learn how to implement the most common widgets.

--- ## {#add-input data-menu-title="Add an Input"} -[**Step 1:** Add an input to your app]{.slide-title-smaller} +[**Step 1:** Add an input to your app]{.slide-title2}

First let's add a `sliderInput()` that will allow users to select a range of penguin body masses (g).

-```{r} +```{r filename="app.R"} #| eval: false #| echo: true #| code-line-numbers: "6-8" @@ -294,13 +294,13 @@ dataTableOutput(outputId = "penguin_data") ## {#add-output data-menu-title="Add Output"} -[**Step 2:** Add an output to your app]{.slide-title-smaller} +[**Step 2:** Add an output to your app]{.slide-title3}
-

Let's now add a `plotOutput()`, which will be updated based on the user inputs via the `sliderInput()`, then run the app.

+

Let's now add a `plotOutput()`, which will be updated based on the user inputs via the `sliderInput()`, then run the app.

-```{r} +```{r filename="app.R"} #| eval: false #| echo: true #| code-line-numbers: "10-11" @@ -325,8 +325,7 @@ ui <- fluidPage( :::: {.columns} :::{.column width="45%"} -
-

Okay, it looks like nothing changed?? **Remember, `*Output()` functions create placeholders, but we have not yet written the server instructions on how to fill and update those placeholders.** We can inspect the HTML and see that there is, in fact, a placeholder area awaiting our eventual output, which will be a plot named "*bodyMass_scatterPlot*":

+

Okay, it looks like nothing changed?? **Remember, `*Output()` functions create placeholders, but we have not yet written the server instructions on how to fill and update those placeholders.** We can inspect the HTML and see that there is, in fact, a placeholder area awaiting our eventual output, which will be a plot named "*bodyMass_scatterPlot*":

::: :::{.column width="5%"} @@ -348,9 +347,7 @@ ui <- fluidPage(

Each `*Output()` function in the UI is coupled with a `render*()` function in the server, which contains the "instructions" for creating the output based on user inputs (or in other words, the instructions for making your output *reactive*).

-
- -

**Examples of `*Output()` functions and their corresponding `render*()` functions:**

+

Examples of `*Output()` functions and their corresponding `render*()` functions:

| Output function | Render function | |---------------------|----------------------| @@ -368,13 +365,13 @@ ui <- fluidPage(
-

Now that we've designed our input/output in the UI, we need to write the server instructions (i.e. write the server function) on how to use the input value(s) (i.e. penguin body mass range via a slider input) to update the output (scatter plot).

+

Now that we've designed our input/output in the UI, we need to write the server instructions (i.e. write the server function) on how to use the input value(s) (i.e. penguin body mass range via a slider input) to update the output (scatter plot).

-

The **server function** is defined with two arguments, `input` and `output`, both of which are list-like objects. You *must* define both of these arguments within the server function. `input` contains the values of all the different inputs at any given time, while `output` is where you'll save output objects to display in the app.

+

The **server function** is defined with two arguments, `input` and `output`, both of which are list-like objects. You *must* define both of these arguments within the server function. `input` contains the values of all the different inputs at any given time, while `output` is where you'll save output objects to display in the app.

-

***This part can be intimidating, but if you follow these three rules, you will successfully create reactivity within your shiny app!***

+

***This part can be intimidating, but if you follow these three rules, you will successfully create reactivity within your shiny app!***

-

**Rules:**

+

**Rules:**

. . . @@ -388,14 +385,14 @@ ui <- fluidPage( ## {#rule1 data-menu-title="Rule #1"} -[**Rule 1:** Save objects you want to display to `output$`]{.slide-title-smaller} +[**Rule 1:** Save objects you want to display to `output$`]{.slide-title2}
:::: {.columns} ::: {.column width="65%"} -```{r} +```{r filename="app.R"} #| eval: false #| echo: true #| code-line-numbers: "21-22" @@ -432,9 +429,9 @@ server <- function(input, output) { ::: {.column width="30%"}
-

In our **UI**, we created a placeholder for our plot using the `plotOutput()` function and gave it the Id `"bodyMass_scatterplot"`. In our server, we will save our plot to the output argument by its `outputId`.

+

In our **UI**, we created a placeholder for our plot using the `plotOutput()` function and gave it the Id `"bodyMass_scatterplot"`. In our server, we will save our plot to the output argument by its `outputId`.

-

**Note:** In the **UI**, our `outputId` is quoted (`"bodyMass_scatterPlot"`), but not in the **server** (`bodyMass_scatterPlot`).

+

**Note:** In the **UI**, our `outputId` is quoted (`"bodyMass_scatterPlot"`), but not in the **server** (`bodyMass_scatterPlot`).

::: :::: @@ -443,15 +440,13 @@ server <- function(input, output) { ## {#rule2.1 data-menu-title="Rule #2a"} -[**Rule 2:** Build reactive objects with `render*()`]{.slide-title-smallest} +[**Rule 2:** Build reactive objects with `render*()`]{.slide-title3}
-

Use the appropriate `render*()` function to make your output reactive (e.g. if you have a `plotOutput` in your UI, you will need to use `renderPlot()` in your server).

- -

Within your `render*()`, write any code inside a set of curly braces, `{}`. This allows you to include as many lines of code as it takes to build your object.

+

Use the appropriate `render*()` function to make your output reactive (e.g. if you have a `plotOutput` in your UI, you will need to use `renderPlot()` in your server). Within your `render*()`, write any code inside a set of curly braces, `{}`. This allows you to include as many lines of code as it takes to build your object.

-```{r} +```{r filename="app.R"} #| eval: false #| echo: true #| code-line-numbers: "22-26" @@ -489,7 +484,7 @@ server <- function(input, output) { ## {#rule2.2 data-menu-title="Practice in seperate script"} -[**An Aside:** Draft objects (e.g. plots) in a separate script first]{.slide-title-smaller} +[**An Aside:** Draft objects (e.g. plots) in a separate script first]{.slide-title2}
@@ -498,7 +493,7 @@ server <- function(input, output) { :::: {.columns} ::: {.column width="45%"} -```{r} +```{r filename="practice-script.R"} #| eval: false #| echo: true @@ -530,19 +525,19 @@ ggplot(na.omit(penguins), :::: -

**Tip:** Save your practice script in a separate directory (i.e. not inside your app directory) -- I typically save mine to something like `~/scratch/practice_script.R`.

+

**Tip:** Save your practice script in a separate directory (i.e. not inside your app directory) -- I typically save mine to something like `~/scratch/practice_script.R`.

--- ## {#rule2.3 data-menu-title="Copy code into server"} -[Copy your plot code into the server]{.slide-title-smaller} +[Copy your plot code into the server]{.slide-title2}
-

Copy your code over to your app, placing it inside the `{}` (and make sure to add any additional required packages to the top of your `app.R` script). Run your app. What do you notice?

+

Copy your code over to your app, placing it inside the `{}` (and make sure to add any additional required packages to the top of your `app.R` script). Run your app. What do you notice?

-```{r} +```{r filename="app.R"} #| eval: false #| echo: true #| code-line-numbers: "25-35" @@ -589,7 +584,7 @@ server <- function(input, output) { ## {#non-reactive-plot data-menu-title="Non-reactive plot appears"} -[A non-reactive plot now lives in our `plotOutput()` placeholder]{.slide-title-smaller} +[A non-reactive plot now lives in our `plotOutput()` placeholder]{.slide-title2}
@@ -601,15 +596,15 @@ server <- function(input, output) { ## {#practice-filtering data-menu-title="Practice filtering data"} -[Practice filtering data in our separate script]{.slide-title-smaller} +[Practice filtering data in our separate script]{.slide-title2}
-

First, create a new data frame where we filter the `body_mass_g` column for observations within a specific range of values (in this example, values ranging from 3000 - 4000):

+

First, create a new data frame where we filter the `body_mass_g` column for observations within a specific range of values (in this example, values ranging from 3000 - 4000):

. . . -```{r} +```{r filename="practice-script.R"} #| eval: true #| echo: true # load packages @@ -623,12 +618,12 @@ body_mass_df <- penguins |> . . . -

Then, plot the new filtered data frame:

+

Then, plot the new filtered data frame:

:::: {.columns} :::{.column width="55%"} -```{r} +```{r filename="practice-script.R"} #| eval: false #| echo: true #| code-line-numbers: "2" @@ -661,7 +656,7 @@ ggplot(na.omit(body_mass_df), # plot 'body_mass_df' rather than 'penguins' df ## {#what-needs-updating data-menu-title="What needs to be reactive?"} -[Which part of our code needs to be updated when a user changes the slider range input?]{.slide-title-smaller} +[Which part of our code needs to be updated when a user changes the slider range input?]{.slide-title2}
@@ -712,13 +707,13 @@ body_mass_df <- penguins |> ## {#rule3.1 data-menu-title="Rule #3a"} -[**Rule 3:** Access input values with `input$`]{.slide-title-smaller} +[**Rule 3:** Access input values with `input$`]{.slide-title}
-

Recall that in our **UI**, we gave our `sliderInput()` an `inputId = "body_mass_input"`.

+

Recall that in our **UI**, we gave our `sliderInput()` an `inputId = "body_mass_input"`.

-```{r} +```{r filename="app.R"} #| eval: false #| echo: true #| code-line-numbers: "9" @@ -754,15 +749,15 @@ server <- function(input, output) { ## {#rule3.2 data-menu-title="Rule #3b"} -[**Rule 3:** Access input values with `input$`]{.slide-title-smallest} +[**Rule 3:** Access input values with `input$`]{.slide-title3}
-

In our server, we can access the values of that slider input using the syntax, `input$body_mass_input`. *If you want your output to change according to the input values, substitute hard-coded values (e.g. 3725:5191) with the input values from the UI (e.g. `input$body_mass_input[1]:input$body_mass_input[2]`)*.

+

In our server, we can access the values of that slider input using the syntax, `input$body_mass_input`. *If you want your output to change according to the input values, substitute hard-coded values (e.g. 3725:5191) with the input values from the UI (e.g. `input$body_mass_input[1]:input$body_mass_input[2]`)*.

-

**Importantly**, we need to use `reactive()` to create reactive data frames that update with user inputs. When you call your reactive data frame in your ggplot, **the data frame name must be followed by `()`**.

+

**Importantly**, we need to use `reactive()` to create reactive data frames that update with user inputs. When you call your reactive data frame in your ggplot, **the data frame name must be followed by `()`**.

-```{r} +```{r filename="app.R"} #| eval: false #| echo: true #| code-line-numbers: "20-24|28" @@ -816,7 +811,7 @@ server <- function(input, output) { ## {#recapp-app1 data-menu-title="Recap: app #1"} -[Recap: We created our first *reactive* Shiny app following these steps:]{.slide-title-smallest} +[Recap: We created our first *reactive* Shiny app following these steps:]{.slide-title3}
@@ -836,9 +831,9 @@ server <- function(input, output) {

**4.** We wrote the **server** instructions for how to assemble inputs into outputs, following these rules:

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} save objects that you want to display to `output$`

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} build reactive objects using a `render*()` function (and similarly, build reactive data frames using `reactive()`

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} access input values with `input$`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} save objects that you want to display to `output$`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} build reactive objects using a `render*()` function (and similarly, build reactive data frames using `reactive()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} access input values with `input$`

. . . @@ -848,18 +843,18 @@ server <- function(input, output) { ## {#app1-ex1 data-menu-title="** Exercise 1 Prompt **"} -[`r fontawesome::fa("question", fill = "#05859B", a11y = "sem")` Exercise 1: Add another reactive widget]{.slide-title-smaller} +[`r fontawesome::fa("question", fill = "#05859B", a11y = "sem")` Exercise 1: Add another reactive widget]{.slide-title2}
-

The [`{DT}` package](https://rstudio.github.io/DT/) provides an R interface to the JavaScript library [DataTables](https://datatables.net/) (you may have already used the DT package in your knitted RMarkdown/Quarto HTML documents). DT datatables allow for filtering, pagination, sorting, and lots of other neat features for tables on your HTML pages.

+

The [`{DT}` package](https://rstudio.github.io/DT/) provides an R interface to the JavaScript library [DataTables](https://datatables.net/) (you may have already used the DT package in your knitted RMarkdown/Quarto HTML documents). DT datatables allow for filtering, pagination, sorting, and lots of other neat features for tables on your HTML pages.

:::: {.columns} ::: {.column width="45%"}
-

**Working alone or in groups, add a reactive `DT` datatable to your app with a `checkboxGroupInput` that allows users to select which year(s) to include in the table. Configure your `checkboxGroupInput` so that the years 2007 and 2008 are pre-selected.**

-

In the end, your app should look something like the example to the right.

+

**Working alone or in groups, add a reactive `DT` datatable to your app with a `checkboxGroupInput` that allows users to select which year(s) to include in the table. Configure your `checkboxGroupInput` so that the years 2007 and 2008 are pre-selected.**

+

In the end, your app should look something like the example to the right.

::: ::: {.column width="5%"} @@ -873,44 +868,44 @@ server <- function(input, output) {
-

See next slide for some tips on getting started!

+

See next slide for some tips on getting started!

--- ## {#app1-ex1-tips data-menu-title="** Exercise 1 Tips **"} -[`r fontawesome::fa("lightbulb", fill = "#05859B", a11y = "sem")` Exercise 1: Tips]{.slide-title-smallest} +[`r fontawesome::fa("lightbulb", fill = "#05859B", a11y = "sem")` Exercise 1: Tips]{.slide-title3}
-

**Tips:**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Use `?checkboxGroupInput` to learn more about which arguments you need (remember, all inputs require an `inputId` and oftentimes a `label`, but there are others required to make this work as well)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Both `{shiny}` and `{DT}` packages have functions named `dataTableOutput()` and `renderDataTable()` -- `DT::renderDataTable()` allows you to create both server-side and client-side DataTables and supports additional DataTables features while `shiny::renderDataTable()` only provides server-side DataTables. Be sure to use the one from the `{DT}` package using the syntax `packageName::functionName()`.

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} There are lots of ways to customize DT tables, but to create a basic one, all you need is to `DT::dataTable(your_dataframe)`

+

**Tips:**

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Use `?checkboxGroupInput` to learn more about which arguments you need (remember, all inputs require an `inputId` and oftentimes a `label`, but there are others required to make this work as well)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Both `{shiny}` and `{DT}` packages have functions named `dataTableOutput()` and `renderDataTable()` -- `DT::renderDataTable()` allows you to create both server-side and client-side DataTables and supports additional DataTables features while `shiny::renderDataTable()` only provides server-side DataTables. Be sure to use the one from the `{DT}` package using the syntax `packageName::functionName()`.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} There are lots of ways to customize DT tables, but to create a basic one, all you need is to `DT::dataTable(your_dataframe)`

-

**And remember** to follow the steps outlined on the previous slides (jump back to [slide 27](https://ucsb-meds.github.io/EDS430-Shiny/#/reactive-plot-app1)):

+

**And remember** to follow the steps outlined on the previous slides (jump back to [slide 27](https://ucsb-meds.github.io/EDS430-Shiny/#/reactive-plot-app1)):

-

**1.** Add an input (e.g. `checkboxGroupInput`) to the **UI** that users can interact with

-

**2.** Add an output (e.g. `DT::datatableOutput`) to the **UI** that creates a placeholder space to fill with our eventual reactive output

-

**3.** Tell the **server** how to assemble inputs into outputs following 3 rules:

-

**3.1** Save objects you want to display to `output$`

-

**3.2** Build reactive objects using a `render*()` function

-

**3.3** Access input values with `input$`

+

**1.** Add an input (e.g. `checkboxGroupInput`) to the **UI** that users can interact with

+

**2.** Add an output (e.g. `DT::datatableOutput`) to the **UI** that creates a placeholder space to fill with our eventual reactive output

+

**3.** Tell the **server** how to assemble inputs into outputs following 3 rules:

+

**3.1** Save objects you want to display to `output$`

+

**3.2** Build reactive objects using a `render*()` function

+

**3.3** Access input values with `input$`

-

See next slide for a solution!

+

See next slide for a solution!

--- ## {#app1-ex1-solution data-menu-title="** Exercise 1 Solution **"} -[{{< fa check title="check mark" >}} Exercise 1: A solution]{.slide-title-smaller} +[{{< fa check title="check mark" >}} Exercise 1: A solution]{.slide-title2}
-

Press the right arrow key to advance through the newly added lines of code.

+

Press the right arrow key to advance through the newly added lines of code.

-```{r} +```{r filename="app.R"} #| eval: false #| echo: true #| code-line-numbers: "5|23-29|60-73" @@ -998,7 +993,7 @@ shinyApp(ui = ui, server = server) ## {#common-mistakes data-menu-title="Common Mistakes"} -[Common mistakes to look out for]{.slide-title-smaller} +[Common mistakes to look out for]{.slide-title2}
@@ -1009,16 +1004,16 @@ shinyApp(ui = ui, server = server) :::: {.columns} ::: {.column width="45%"} -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} misspelling `inputId` as `inputID` (or `outputId` as `outputID`)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} misspelling `inputId` as `inputID` (or `outputId` as `outputID`)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} misspelling your inputId (or outputId) name in the server (e.g. UI: `inputId = "myInputID"`, server: `input$my_Input_ID`)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} misspelling your inputId (or outputId) name in the server (e.g. UI: `inputId = "myInputID"`, server: `input$my_Input_ID`)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} repeating `inputId`s (each *must* be unique)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} repeating `inputId`s (each *must* be unique)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} forgetting to separate UI elements with a comma, `,`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} forgetting to separate UI elements with a comma, `,`

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} forgetting the set of parentheses when calling the name of a reactive data frame in a plot (e.g. `ggplot(my_reactive_df(), aes(...))`)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} forgetting the set of parentheses when calling the name of a reactive data frame in a plot (e.g. `ggplot(my_reactive_df(), aes(...))`)

::: ::: {.column width="5%"} diff --git a/sections/4.1-second-app-v1.qmd b/sections/4.1-second-app-v1.qmd index 2b8f9f2..82b216a 100644 --- a/sections/4.1-second-app-v1.qmd +++ b/sections/4.1-second-app-v1.qmd @@ -17,49 +17,49 @@ format: revealjs
-

By the end of building out this second app, you should:

+

By the end of building out this second app, you should:

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text}` be comfortable creating a shiny app using the two-file (`ui.R` & `server.R`) format along with a `global.R` file

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text}` be comfortable creating a shiny app using the two-file (`ui.R` & `server.R`) format along with a `global.R` file

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand how to use layout functions to customize the visual structure of your app's UI

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand how to use layout functions to customize the visual structure of your app's UI

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have more practice building reactive outputs -- and placing them within the layout structure of your app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} have more practice building reactive outputs -- and placing them within the layout structure of your app

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} be able to create multiple inputs that control a given output

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} be able to create multiple inputs that control a given output

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to import larger bodies of text using `includeMarkdown()` (rather than writing & styling text within your UI)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to import larger bodies of text using `includeMarkdown()` (rather than writing & styling text within your UI)

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} successfully publish an app using [shinyapps.io](https://www.shinyapps.io/)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} successfully publish an app using [shinyapps.io](https://www.shinyapps.io/)

. . . -

Packages introduced:

+

Packages introduced:

. . . -

[{{< fa box-open title="an open box" >}}]{.teal-text} `{shinyWidgets}`: extend shiny widgets with some different, fun options

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{shinyWidgets}`: extend shiny widgets with some different, fun options

. . . -

[{{< fa box-open title="an open box" >}}]{.teal-text} `{lterdatasampler}`: data

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{lterdatasampler}`: data

--- ## {#roadmap-app2v1 data-menu-title="Roadmap App #2v1"} -[Roadmap for App #2v1]{.slide-title-smaller} +[Roadmap for App #2v1]{.slide-title2}
@@ -69,9 +69,9 @@ format: revealjs ::: {.column width="45%"}
-

**(a)** A navigation bar with two pages, one of which will contain two tabs (one tab for each plot)

-

**(b)** A `pickerInput` *and* `checkboxGroupButtons` for users to filter cutthroat trout data in a reactive scatterplot

-

**(c)** A `pickerInput` for users to filter penguin data *and* a `sliderInput` to adjust the number of bins in a reactive histogram

+

**(a)** A navigation bar with two pages, one of which will contain two tabs (one tab for each plot)

+

**(b)** A `pickerInput` *and* `checkboxGroupButtons` for users to filter cutthroat trout data in a reactive scatterplot

+

**(c)** A `pickerInput` for users to filter penguin data *and* a `sliderInput` to adjust the number of bins in a reactive histogram

::: ::: {.column width="5%"} @@ -86,7 +86,7 @@ format: revealjs . . . -

You'll notice that there are some UI quirks (most notably, blank plots that appear when no data is selected) that can make the user experience less than ideal (and even confusing) -- we'll learn about ways to improve this in v2 of our app.

+

You'll notice that there are some UI quirks (most notably, blank plots that appear when no data is selected) that can make the user experience less than ideal (and even confusing) -- we'll learn about ways to improve this in v2 of our app.

--- @@ -106,11 +106,11 @@ format: revealjs ## {#app2-plots data-menu-title="Draft Plots (app#2)"} -[Practice data wrangling, filtering & viz first!]{.slide-title-smallest} +[Practice data wrangling, filtering & viz first!]{.slide-title3}
-

Here's what I've done in my `~scratch/practice_script_app2_lter.R` file:

+

Here's what I've done in my `~scratch/practice_script_app2_lter.R` file:

::: {.panel-tabset} @@ -179,7 +179,7 @@ ggplot(trout_filtered_df, aes(x = length_mm, y = weight_g, color = channel_type, ::: {.column width="45%"}
A scatterplot with Trout Length (mm) on the x-axis and Trout Weight (g) on the y-axis. Data points are colored and shaped by Channel Type, with data collected from pools represented with green diamonds and data collected from rapids represented by red stars.
-

We'll use the `and_vertebrates` data set from `{lterdatasampler}` to create a scatter plot of trout weights by lengths. When we move to shiny, we'll build 2 inputs for filtering our data: one to select `channel_type` and one to select `section`.

+

We'll use the `and_vertebrates` data set from `{lterdatasampler}` to create a scatter plot of trout weights by lengths. When we move to shiny, we'll build 2 inputs for filtering our data: one to select `channel_type` and one to select `section`.

::: :::: @@ -215,7 +215,7 @@ ggplot(na.omit(island_df), aes(x = flipper_length_mm, fill = species)) + ::: {.column width="45%"}
A histogram of penguin Flipper lengths (mm) with bars colored by species. Adelie are orange and Chinstrap are purple.
-

We'll use the `penguins` data set from `{palmerpenguins}` to create a histogram of penguin flipper lengths. When we move to shiny, we'll build 2 inputs for filtering our data: one to select `island` and one to change the number of histogram bins.

+

We'll use the `penguins` data set from `{palmerpenguins}` to create a histogram of penguin flipper lengths. When we move to shiny, we'll build 2 inputs for filtering our data: one to select `island` and one to change the number of histogram bins.

::: :::: @@ -225,7 +225,7 @@ ggplot(na.omit(island_df), aes(x = flipper_length_mm, fill = species)) + ## {#global.R data-menu-title="global.R"} -[A `global.R` file can help you keep code organized]{.slide-title-smaller} +[A `global.R` file can help you keep code organized]{.slide-title2}
@@ -233,12 +233,12 @@ ggplot(na.omit(island_df), aes(x = flipper_length_mm, fill = species)) + . . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} loading packages

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} importing data

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} sourcing scripts (particularly functions -- we'll talk more about functions later)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} data wrangling (though you'll want to do any major data cleaning before bringing your data into your app)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} building custom `ggplot` themes

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} etc.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} loading packages

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} importing data

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} sourcing scripts (particularly functions -- we'll talk more about functions later)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} data wrangling (though you'll want to do any major data cleaning before bringing your data into your app)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} building custom `ggplot` themes

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} etc.


@@ -250,7 +250,7 @@ ggplot(na.omit(island_df), aes(x = flipper_length_mm, fill = species)) + ## {#unstructured-app1 data-menu-title="Unstructured first app"} -[We created a perfectly functional first app, but it's not so visually pleasing]{.slide-title-smaller} +[We created a perfectly functional first app, but it's not so visually pleasing]{.slide-title2}
@@ -259,9 +259,9 @@ ggplot(na.omit(island_df), aes(x = flipper_length_mm, fill = species)) + ::: {.column width="45%"}

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} nothing really grabs your eye

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} inputs & outputs are stacked vertically on top of one another (which requires a lot of vertical scrolling)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} widget label text is difficult to distinguish from other text

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} nothing really grabs your eye

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} inputs & outputs are stacked vertically on top of one another (which requires a lot of vertical scrolling)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} widget label text is difficult to distinguish from other text

::: ::: {.column width="5%"} @@ -281,13 +281,13 @@ ggplot(na.omit(island_df), aes(x = flipper_length_mm, fill = species)) + ## {#layout-functions data-menu-title="Layout functions"} -[Layout functions provide the high-level visual structure of your app]{.slide-title-smaller} +[Layout functions provide the high-level visual structure of your app]{.slide-title2}
-

Layouts are created using a **hierarchy** of function calls (typically) *inside* `fluidPage()`. Layouts often require a series functions -- **container** functions establish the larger area within which other layout elements are placed. See a few minimal examples of layout functions on the following slides (though [more exist](https://shiny.rstudio.com/articles/layout-guide.html)!).

+

Layouts are created using a **hierarchy** of function calls (typically) *inside* `fluidPage()`. Layouts often require a series functions -- **container** functions establish the larger area within which other layout elements are placed. See a few minimal examples of layout functions on the following slides (though [more exist](https://shiny.rstudio.com/articles/layout-guide.html)!).

-

**Some useful layout function pairings:**

+

**Some useful layout function pairings:**

```{r} #| eval: false #| echo: true @@ -319,7 +319,7 @@ navbarPage(
-

**Note:** You can combine multiple layout function groups to really customize your UI -- for example, you can create a navbar, include tabs, and also establish sidebar and main panel areas for inputs and outputs.

+

**Note:** You can combine multiple layout function groups to really customize your UI -- for example, you can create a navbar, include tabs, and also establish sidebar and main panel areas for inputs and outputs.

::: {.panel-tabset} @@ -460,14 +460,14 @@ navbarPage( ::: -

Examples adapted from [Mastering Shiny, Ch. 6](https://mastering-shiny.org/action-layout.html#action-layout), by Hadley Wickham:

+

Examples adapted from [Mastering Shiny, Ch. 6](https://mastering-shiny.org/action-layout.html#action-layout), by Hadley Wickham:

--- ## {#layout-fxns-app2 data-menu-title="Overview of App #2 Layout"} -[Overview of layout functions used in App #2]{.slide-title-smaller} +[Overview of layout functions used in App #2]{.slide-title2}
@@ -477,13 +477,13 @@ navbarPage( ## {#build-navbar data-menu-title="Build navbar"} -[Build a navbar with two pages]{.slide-title-smaller} +[Build a navbar with two pages]{.slide-title2}
-

First, let's build a UI that has a navigation bar with two tabs -- one for background information and one to contain our data visualizations. To do this, we'll use `navbarPage()` instead of `fluidPage()` to create our webpage.

+

First, let's build a UI that has a navigation bar with two tabs -- one for background information and one to contain our data visualizations. To do this, we'll use `navbarPage()` instead of `fluidPage()` to create our webpage.

-

**Tip:** It can be *super* helpful add code comments at the start and end of each UI element -- for example, see `# data viz tabPanel---` and `# END data viz tabPanel`, below. Adding text that you will eventually replace with content (e.g. plots, tables, images, longer text) may help to visualize what you're working towards as well.

+

**Tip:** It can be *super* helpful add code comments at the start and end of each UI element -- for example, see `# data viz tabPanel---` and `# END data viz tabPanel`, below. Adding text that you will eventually replace with content (e.g. plots, tables, images, longer text) may help to visualize what you're working towards as well.

```{r} #| eval: false #| echo: true @@ -512,11 +512,11 @@ ui <- navbarPage( ## {#add-tabs data-menu-title="Add tabs"} -[Add two tabs to the "Explore the Data" page]{.slide-title-smaller} +[Add two tabs to the "Explore the Data" page]{.slide-title2}
-

Give your tabs the following titles: `Trout` and `Penguins`.

+

Give your tabs the following titles: `Trout` and `Penguins`.

```{r} #| eval: false @@ -564,11 +564,11 @@ ui <- navbarPage( ## {#sidebar-main-panels data-menu-title="Create sidebar & main panels"} -[Add sidebar & main panels to the `Trout` tab]{.slide-title-smaller} +[Add sidebar & main panels to the `Trout` tab]{.slide-title2}
-

We'll eventually place our input in the sidebar and output in the main panel.

+

We'll eventually place our input in the sidebar and output in the main panel.

```{r} #| eval: false @@ -633,7 +633,7 @@ ui <- navbarPage( ## {#exercise2-prompt data-menu-title="** Exercise 2 Prompt **"} -[{{< fa question title="question mark" >}} Exercise 2: Add sidebar and main panels to the `Penguins` tab]{.slide-title-smaller} +[{{< fa question title="question mark" >}} Exercise 2: Add sidebar and main panels to the `Penguins` tab]{.slide-title2}
@@ -656,13 +656,13 @@ ui <- navbarPage(
-

See next slide for a solution!

+

See next slide for a solution!

--- ## {#exercise2-solution data-menu-title="** Exercise 2 Solution **"} -[{{< fa check title="a check mark" >}} Exercise 2: A solution]{.slide-title-smaller} +[{{< fa check title="a check mark" >}} Exercise 2: A solution]{.slide-title2} ```{r} #| eval: false @@ -776,25 +776,25 @@ ui <- navbarPage(
-

We'll be using the [`and_vertebrates` dataset](https://lter.github.io/lterdatasampler/reference/and_vertebrates.html) from the [`{lterdatasampler}` package](https://lter.github.io/lterdatasampler/) to create our first reactive plot. These data contain coastal cutthroat trout (*Oncorhynchus clarkii clarkii*) lengths and weights collected in Mack Creek, [Andrews Forest LTER](https://andrewsforest.oregonstate.edu/). Original data can be found on the [EDI Data Portal](https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-and.4027.14). Refer back to [this slide](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots) to revisit our practice data wrangling & visualization script.

+

We'll be using the [`and_vertebrates` dataset](https://lter.github.io/lterdatasampler/reference/and_vertebrates.html) from the [`{lterdatasampler}` package](https://lter.github.io/lterdatasampler/) to create our first reactive plot. These data contain coastal cutthroat trout (*Oncorhynchus clarkii clarkii*) lengths and weights collected in Mack Creek, [Andrews Forest LTER](https://andrewsforest.oregonstate.edu/). Original data can be found on the [EDI Data Portal](https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-and.4027.14). Refer back to [this slide](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots) to revisit our practice data wrangling & visualization script.


A drawing of the right-side profile of a coastal cutthroat trout.
-

Image Source: Joseph R. Tomelleri, as found on the [Western Native Trout Initiative](https://westernnativetrout.org/coastal-cutthroat-trout/)

+

Image Source: Joseph R. Tomelleri, as found on the [Western Native Trout Initiative](https://westernnativetrout.org/coastal-cutthroat-trout/)

--- ## {#import-packages-global data-menu-title="Import packages in global.R"} -[Add packages & wrangle data in `global.R`]{.slide-title-smallest} +[Add packages & wrangle data in `global.R`]{.slide-title3}
-

In addition to the [`{lterdatasampler}` package](https://lter.github.io/lterdatasampler/), we'll also be using the `{tidyverse}` for data wrangling/visualization, and the [`{shinyWidgets}` package ](https://github.com/dreamRs/shinyWidgets) to add a `pickerInput` and a `checkboxGroupInput` to our app.

+

In addition to the [`{lterdatasampler}` package](https://lter.github.io/lterdatasampler/), we'll also be using the `{tidyverse}` for data wrangling/visualization, and the [`{shinyWidgets}` package ](https://github.com/dreamRs/shinyWidgets) to add a `pickerInput` and a `checkboxGroupInput` to our app.

-

**Import those three packages at the top of your `global.R` file**

+

**Import those three packages at the top of your `global.R` file**

```{r} #| eval: false @@ -811,13 +811,13 @@ library(shinyWidgets) ## {#wrangle-data-global data-menu-title="Wrangle data in global.R"} -[Add packages & wrangle data in `global.R`]{.slide-title-smallest} +[Add packages & wrangle data in `global.R`]{.slide-title3}
-

We can also do the bulk of our data wrangling here, rather than in the server (to keep our server code a bit more manageable). If we were reading in a data file (e.g. .csv), we would do that here too. Our new data object `clean_trout`, will now be available for us to call directly in our server.

+

We can also do the bulk of our data wrangling here, rather than in the server (to keep our server code a bit more manageable). If we were reading in a data file (e.g. .csv), we would do that here too. Our new data object `clean_trout`, will now be available for us to call directly in our server.

-

We can easily copy our wrangling code over from our [practice script](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots).

+

We can easily copy our wrangling code over from our [practice script](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots).

```{r} #| eval: false #| echo: true @@ -852,15 +852,15 @@ clean_trout <- and_vertebrates |> ## {#trout-pickerInput data-menu-title="Add Trout pickerInput()"} -[Add a `pickerInput` for selecting `channel_type` to your UI]{.slide-title-smaller} +[Add a `pickerInput` for selecting `channel_type` to your UI]{.slide-title2}
-

The `channel_type` variable (originally called `unittype` -- we updated the name when wrangling data (see line 9 on [previous slide](https://ucsb-meds.github.io/EDS430-Shiny/#/wrangle-data-global))) represents the type of water body (*cascade, riffle, isolated pool, pool, rapid, step (small falls), or side channel*) data were collected in. We'll start by building a `shinyWidgets::pickerInput()` to allow users to filter data based on `channel_type`.

+

The `channel_type` variable (originally called `unittype` -- we updated the name when wrangling data (see line 9 on [previous slide](https://ucsb-meds.github.io/EDS430-Shiny/#/wrangle-data-global))) represents the type of water body (*cascade, riffle, isolated pool, pool, rapid, step (small falls), or side channel*) data were collected in. We'll start by building a `shinyWidgets::pickerInput()` to allow users to filter data based on `channel_type`.

. . . -

**Reminder:** When we we designed our UI layout, we added a `sidebarPanel` to our **Trout** tab with the placeholder text `"trout plot input(s) go here"`. Replace that text with the code for your `pickerInput`:

+

**Reminder:** When we we designed our UI layout, we added a `sidebarPanel` to our **Trout** tab with the placeholder text `"trout plot input(s) go here"`. Replace that text with the code for your `pickerInput`:

```{r} #| eval: false @@ -873,11 +873,11 @@ pickerInput(inputId = "channel_type_input", label = "Select channel type(s):", multiple = TRUE) # END channel type pickerInput ``` -

Save and run your app -- a functional `pickerInput` should now appear in your UI.

+

Save and run your app -- a functional `pickerInput` should now appear in your UI.


-

A `shinyWidgets::pickerInput()` is functionally equivalent to `shiny::selectInput()`, though it allows for greater customization and looks (in my opinion) a bit nicer.

+

A `shinyWidgets::pickerInput()` is functionally equivalent to `shiny::selectInput()`, though it allows for greater customization and looks (in my opinion) a bit nicer.

--- @@ -887,11 +887,11 @@ pickerInput(inputId = "channel_type_input", label = "Select channel type(s):",
-

Next, we need to create a placeholder in our UI for our trout scatterplot to live. Because we'll be creating a reactive plot, we can use the `plotOutput()` function to do so.

+

Next, we need to create a placeholder in our UI for our trout scatterplot to live. Because we'll be creating a reactive plot, we can use the `plotOutput()` function to do so.

. . . -

**Reminder:** When we we designed our UI layout, we added a `mainPanel` to our **Trout** tab with the placeholder text `"trout plot output goes here"`. Replace that text with the code for your `plotOuput()`:

+

**Reminder:** When we we designed our UI layout, we added a `mainPanel` to our **Trout** tab with the placeholder text `"trout plot output goes here"`. Replace that text with the code for your `plotOuput()`:

```{r} #| eval: false @@ -899,7 +899,7 @@ pickerInput(inputId = "channel_type_input", label = "Select channel type(s):", plotOutput(outputId = "trout_scatterplot") ``` -

Save and run your app -- it won't look different at first glance, but inspecting your app in a browser window (using Chrome, right click > Inspect) will reveal a placeholder box for your plot output to eventually live:

+

Save and run your app -- it won't look different at first glance, but inspecting your app in a browser window (using Chrome, right click > Inspect) will reveal a placeholder box for your plot output to eventually live:

The Trout tab of our app, which contains only a pickerInput with the variables, cascade and pool, selected. There is no visible plot yet, however using Google Chrome's developer tools shows a div (i.e. a box) placeholder where our plot will eventually appear.
@@ -907,11 +907,11 @@ plotOutput(outputId = "trout_scatterplot") ## {#trout-plot data-menu-title="Trout Reactive Plot"} -[Tell the server how to assemble `pickerInput` values into your `plotOutput`]{.slide-title-smallest} +[Tell the server how to assemble `pickerInput` values into your `plotOutput`]{.slide-title3}
-

**Remember the three rules for building reactive outputs:** **(1)** save objects you want to display to `output$`, **(2)** build reactive objects using a `render*()` function, and **(3)** access input values with `input$`. When complete, your server should contain the following code:

+

**Remember the three rules for building reactive outputs:** **(1)** save objects you want to display to `output$`, **(2)** build reactive objects using a `render*()` function, and **(3)** access input values with `input$`. When complete, your server should contain the following code:

:::: {.columns} @@ -956,11 +956,11 @@ server <- function(input, output) { ::: {.column width="35%"}

**A couple notes/reminders:**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} If needed, reference your [practice script](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots) to remind yourself how you planned to filter and plot your data

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} If needed, reference your [practice script](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots) to remind yourself how you planned to filter and plot your data

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Reactive data frames need a set of parentheses, `()`, following the name of the df (see `ggplot(trout_filtered_df() ...)`)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Reactive data frames need a set of parentheses, `()`, following the name of the df (see `ggplot(trout_filtered_df() ...)`)

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} For a cohesive appearance, save your ggplot theme parameters to a named object in `global.R` (here, `myCustomTheme`), then apply to all plots in your app. See the [following slide](https://ucsb-meds.github.io/EDS430-Shiny/#/ggplot-theme) for code.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} For a cohesive appearance, save your ggplot theme parameters to a named object in `global.R` (here, `myCustomTheme`), then apply to all plots in your app. See the [following slide](https://ucsb-meds.github.io/EDS430-Shiny/#/ggplot-theme) for code.

::: :::: @@ -969,11 +969,11 @@ server <- function(input, output) { ## {#ggplot-theme data-menu-title="Save theme to global.R"} -[Save a custom `ggplot` theme to `global.R`]{.slide-title-smaller} +[Save a custom `ggplot` theme to `global.R`]{.slide-title2}
-

Rather than re-typing your ggplot theme parameters out for every plot in your app, do so once in `global.R`, and save to an object name. You can then easily add your custom theme as a layer to each of your ggplots. **Bonus:** If you decide to modify your plot theme, you only have to do so in one place!

+

Rather than re-typing your ggplot theme parameters out for every plot in your app, do so once in `global.R`, and save to an object name. You can then easily add your custom theme as a layer to each of your ggplots. **Bonus:** If you decide to modify your plot theme, you only have to do so in one place!

```{r} #| eval: false @@ -1033,9 +1033,9 @@ myCustomTheme <- theme_light() +
-

You can have more than one input control the same output. Let's now add a `checkboxGroupButtons` widget to our **UI** for selecting forest `section` (either clear cut forest or old growth forest). Check out the [function documentation](https://dreamrs.github.io/shinyWidgets/reference/checkboxGroupButtons.html) for more information on how to customize the appearance of your buttons.

+

You can have more than one input control the same output. Let's now add a `checkboxGroupButtons` widget to our **UI** for selecting forest `section` (either clear cut forest or old growth forest). Check out the [function documentation](https://dreamrs.github.io/shinyWidgets/reference/checkboxGroupButtons.html) for more information on how to customize the appearance of your buttons.

-

Be sure to add the widget to the same `sidebarPanel` as our `pickerInput` (and separate them with a comma, `,`!:

+

Be sure to add the widget to the same `sidebarPanel` as our `pickerInput` (and separate them with a comma, `,`!:

```{r} #| eval: false @@ -1065,11 +1065,11 @@ sidebarPanel( ## {#second-input-server data-menu-title="Update reactive trout df"} -[Update your reactive df to *also* filter based on the new `checkboxGroupInput`]{.slide-title-smaller} +[Update your reactive df to *also* filter based on the new `checkboxGroupInput`]{.slide-title2}
-

Return to your **server** to modify `trout_filtered_df` -- our data frame needs to be updated based on both the `pickerInput`, which selects for `channel_type`, *and* the `checkboxGrouptInput`, which selects for forest `section`:

+

Return to your **server** to modify `trout_filtered_df` -- our data frame needs to be updated based on both the `pickerInput`, which selects for `channel_type`, *and* the `checkboxGrouptInput`, which selects for forest `section`:

```{r} #| eval: false @@ -1105,7 +1105,7 @@ output$trout_scatterplot <- renderPlot({ ## {#run-app2v1-second-widget data-menu-title="Run the App"} -[Run your app and try out your `pickerInput` & `checkboxGrouptInput` widgets!]{.slide-title-smaller} +[Run your app and try out your `pickerInput` & `checkboxGrouptInput` widgets!]{.slide-title2}
diff --git a/sections/4.2-second-app-v1.qmd b/sections/4.2-second-app-v1.qmd index d50b683..d6991b9 100644 --- a/sections/4.2-second-app-v1.qmd +++ b/sections/4.2-second-app-v1.qmd @@ -4,11 +4,11 @@ format: revealjs ## {#second-penguins data-menu-title="Next up, penguins"} -[Add data viz: Next up, penguins]{.slide-title-smaller} +[Add data viz: Next up, penguins]{.slide-title2}
-

We'll be using the `penguins` dataset from the [`{palmerpenguins}` package](https://allisonhorst.github.io/palmerpenguins/) to create our second reactive plot. These data contain penguin (genus *Pygoscelis*) body size measurements collected from three islands in the Palmer Archipelago, Antarctica, as part of the [Palmer Station LTER](https://pallter.marine.rutgers.edu/). Original data can be found on the EDI Data Portal ([Adélie data](https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-pal.219.5), [Gentoo data](https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-pal.220.5), and [Chinstrap data](https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-pal.221.6)). Refer back to [this slide](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots) to revisit our practice data wrangling & visualization script.

+

We'll be using the `penguins` dataset from the [`{palmerpenguins}` package](https://allisonhorst.github.io/palmerpenguins/) to create our second reactive plot. These data contain penguin (genus *Pygoscelis*) body size measurements collected from three islands in the Palmer Archipelago, Antarctica, as part of the [Palmer Station LTER](https://pallter.marine.rutgers.edu/). Original data can be found on the EDI Data Portal ([Adélie data](https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-pal.219.5), [Gentoo data](https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-pal.220.5), and [Chinstrap data](https://portal.edirepository.org/nis/mapbrowse?packageid=knb-lter-pal.221.6)). Refer back to [this slide](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots) to revisit our practice data wrangling & visualization script.


@@ -21,28 +21,28 @@ format: revealjs knitr::include_graphics("images/meet_the_penguins.png") ``` -

Artwork by [@allison_horst](https://allisonhorst.com/)

+

Artwork by [@allison_horst](https://allisonhorst.com/)

--- ## {#exercise3-prompt data-menu-title="** Exercise 3 Prompt **"} -[{{< fa question title="question mark" >}} Exercise 3: Add a reactive plot to the 'Penguins' tab]{.slide-title-smaller} +[{{< fa question title="question mark" >}} Exercise 3: Add a reactive plot to the 'Penguins' tab]{.slide-title2}
-

Working alone or in groups, add a reactive histogram of penguin flipper lengths (using the `penguins` data set from the [`{palmerpenguins}` package](https://allisonhorst.github.io/palmerpenguins/)) to the **Penguins** tab. Your plot should have the following features and look like the example below, when complete:

+

Working alone or in groups, add a reactive histogram of penguin flipper lengths (using the `penguins` data set from the [`{palmerpenguins}` package](https://allisonhorst.github.io/palmerpenguins/)) to the **Penguins** tab. Your plot should have the following features and look like the example below, when complete:

:::: {.columns} ::: {.column width="45%"} -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} data colored by penguin `species`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} data colored by penguin `species`

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} a `shinyWidgets::pickerInput` that allows users to filter data based on `island`, and that includes buttons to **Select All** / **Deselect All** island options at once

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} a `shinyWidgets::pickerInput` that allows users to filter data based on `island`, and that includes buttons to **Select All** / **Deselect All** island options at once

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} a `shiny::sliderInput` that allows users to change the number of histogram bins and that by default, displays a histogram with **25** bins

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} a `shiny::sliderInput` that allows users to change the number of histogram bins and that by default, displays a histogram with **25** bins

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} the two widgets should be placed in the `sidebarPanel` and the reactive histogram should be placed in the `mainPanel` of the **Penguins** tab

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} the two widgets should be placed in the `sidebarPanel` and the reactive histogram should be placed in the `mainPanel` of the **Penguins** tab

::: ::: {.column width="5%"} @@ -54,23 +54,23 @@ knitr::include_graphics("images/meet_the_penguins.png") :::: -

See next slide for some tips on getting started!

+

See next slide for some tips on getting started!

--- ## {#exercise3-tips data-menu-title="** Exercise 3 Tips **"} -[{{< fa lightbulb title="a lightbulb" >}} Exercise 3: Tips]{.slide-title-smaller} +[{{< fa lightbulb title="a lightbulb" >}} Exercise 3: Tips]{.slide-title2}

**Tips:**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Remember to load the `palmerpenguins` package at the top of `global.R` so that your app can find the data

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Remember to load the `palmerpenguins` package at the top of `global.R` so that your app can find the data

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Add your widgets to the `sidebarPanel` and your plot output to the `mainPanel` of the **Penguins** tab -- look for that placeholder text we added earlier to help place your new code in the correct spot within your UI!

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Add your widgets to the `sidebarPanel` and your plot output to the `mainPanel` of the **Penguins** tab -- look for that placeholder text we added earlier to help place your new code in the correct spot within your UI!

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Try changing the histogram bin number in your practice code script first, before attempting to make it reactive

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Try changing the histogram bin number in your practice code script first, before attempting to make it reactive

**And remember** to follow the our three steps for building reactive outputs (1. add input to UI, 2. add output to UI, 3. tell server how to assemble inputs into outputs)!

@@ -78,13 +78,13 @@ knitr::include_graphics("images/meet_the_penguins.png")

-

See next slide for a solution!

+

See next slide for a solution!

--- ## {#exercise3-solution data-menu-title="** Exercise 3 Solution **"} -[{{< fa check title="check mark" >}} Exercise 3: A solution]{.slide-title-smaller} +[{{< fa check title="check mark" >}} Exercise 3: A solution]{.slide-title2}
diff --git a/sections/4.3-second-app-v1.qmd b/sections/4.3-second-app-v1.qmd index 1b64216..17373d8 100644 --- a/sections/4.3-second-app-v1.qmd +++ b/sections/4.3-second-app-v1.qmd @@ -5,7 +5,7 @@ format: revealjs ## {#lastly-text data-menu-title="Lastly, text"} -[Lastly: add background/other important information text]{.slide-title-smaller} +[Lastly: add background/other important information text]{.slide-title2}
@@ -26,9 +26,9 @@ format: revealjs

**Some important pieces for information to consider adding:**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} motivation for building the app

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} brief instructions for exploring the data

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} who maintains the app, where the code lives, how to submit issues/suggestions

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} motivation for building the app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} brief instructions for exploring the data

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} who maintains the app, where the code lives, how to submit issues/suggestions

::: :::: @@ -38,11 +38,11 @@ format: revealjs ## {#unruly-text data-menu-title="Unruly text in the UI"} -[Adding long text to the UI can get unruly]{.slide-title-smaller} +[Adding long text to the UI can get unruly]{.slide-title2}
-

For example, I've added and formatted my landing page's text directly in the **UI** using lots of nested `tags` -- I've done this inside the `tabPanel` titled **About this App** (**Note:** I've formatted the layout of this page a bit using `fluidRow` and `column`s to create some white space around the edges. I've also created a faint gray horizontal line, using `hr()`, beneath which I added a footnote):

+

For example, I've added and formatted my landing page's text directly in the **UI** using lots of nested `tags` -- I've done this inside the `tabPanel` titled **About this App** (**Note:** I've formatted the layout of this page a bit using `fluidRow` and `column`s to create some white space around the edges. I've also created a faint gray horizontal line, using `hr()`, beneath which I added a footnote):

```{r} #| eval: false @@ -161,13 +161,13 @@ ui <- navbarPage( ## {#includeMarkdown data-menu-title="includeMarkdown()"} -[Instead, use `includeMarkdown()` to read in text from separate `.md` files]{.slide-title-smaller} +[Instead, use `includeMarkdown()` to read in text from separate `.md` files]{.slide-title2}
-

To maintain readability and an overall tidier-looking UI, you can write and style long bodies of text in separate markdown (`.md`) files that you then read into your UI using the `includeMarkdown()` function (**Important:** the `includeMarkdown()` function requires the `{markdown}` package -- be sure to add `library(markdown)` to your `global.R` file!).

+

To maintain readability and an overall tidier-looking UI, you can write and style long bodies of text in separate markdown (`.md`) files that you then read into your UI using the `includeMarkdown()` function (**Important:** the `includeMarkdown()` function requires the `{markdown}` package -- be sure to add `library(markdown)` to your `global.R` file!).

-

I recommend saving those `.md` files in a subdirectory named `/text` within your app's directory (e.g. `~/two-file-app/text/mytext.md`). See how I simplified my UI by saving my long landing page text to two new files, `about.md` and `footer.md`, then imported them into my UI using `includeMarkdown()`.

+

I recommend saving those `.md` files in a subdirectory named `/text` within your app's directory (e.g. `~/two-file-app/text/mytext.md`). See how I simplified my UI by saving my long landing page text to two new files, `about.md` and `footer.md`, then imported them into my UI using `includeMarkdown()`.

::: {.panel-tabset} @@ -314,23 +314,23 @@ Check out the **Explore the Data** page to find interactive data visualizations ## {#last-run data-menu-title="Check out your full app!"} -[Run your app one more time to admire your beautiful creation!]{.slide-title-smallest} +[Run your app one more time to admire your beautiful creation!]{.slide-title3}
An app titled 'LTER Animal Data Explorer'. The user starts on the 'About this App' page, which includes a couple paragraphs of intro text. The user then clicks on the 'Explore the Data' page which has two tabs: Trout and Penguins. On the Trout tab, we see a scatterplot with Trout Length (mm) on the x-axis and Trout Weight (g) on the y-axis. The user first filters data by Channel Type using a drop down list selector widget, then by Forest Section using two buttons that toggle on data from clear cut vs. old growth forest. In the Penguin tab, we see a histogram displaying Flipper Lengths (mm) of three penguin species. The user uses a drop down list selector widget to filter data by Island, then uses a slider widget to adjust the number of histogram bins.
-

Again, we have some UX/UI quirks to fix (most notably, blank plots when all widget options are deselected), which we'll handle soon. But for now, we have a functioning app that we can practice deploying for the first time!

+

Again, we have some UX/UI quirks to fix (most notably, blank plots when all widget options are deselected), which we'll handle soon. But for now, we have a functioning app that we can practice deploying for the first time!

--- ## {#app2-code data-menu-title="App #2 code (so far)"} -[Code recap for app #2v1, so far:]{.slide-title-smaller} +[Code recap for app #2v1, so far:]{.slide-title2}
-

Additionally, you should have a `/text` folder within your app's directory (`/two-file-app`, if you named it as I did) that contains two markdown files, `about.md` and `footer.md`.

+

Additionally, you should have a `/text` folder within your app's directory (`/two-file-app`, if you named it as I did) that contains two markdown files, `about.md` and `footer.md`.

::: {.panel-tabset} diff --git a/sections/5-deploy-app.qmd b/sections/5-deploy-app.qmd index b11418d..eff12d3 100644 --- a/sections/5-deploy-app.qmd +++ b/sections/5-deploy-app.qmd @@ -13,11 +13,11 @@ format: revealjs ## {#shinyapps-account data-menu-title="Set up shinyapps.io account"} -[Connect your shinyapps.io account to RStudio]{.slide-title-smallest} +[Connect your shinyapps.io account to RStudio]{.slide-title3}
-

Go to [shinyapps.io](https://www.shinyapps.io/) and login or create an account (if you don't already have one) -- I created my account and login with GitHub. To use shinyapps.io, you first need to link your account with RStudio on your computer. Follow the instructions on shinyapps.io when you first create your account to install the [`{rsconnect}` package](https://github.com/rstudio/rsconnect) and authorize your account:

+

Go to [shinyapps.io](https://www.shinyapps.io/) and login or create an account (if you don't already have one) -- I created my account and login with GitHub. To use shinyapps.io, you first need to link your account with RStudio on your computer. Follow the instructions on shinyapps.io when you first create your account to install the [`{rsconnect}` package](https://github.com/rstudio/rsconnect) and authorize your account:

shinyapps.io displays setup instructions: (1) INSTALL RSCONNECT: The `rsconnect` package can be installed directly from CRAN. To make sure you have the latest version run following code in your R console: `install.packages('rsconnect')`. (2) AUTHORIZE ACCOUNT: The `rsconnect` package must be authorized to your account using a token and secret. To do this, click the copy button below and we'll copy the whole command you need to your clipboard. Just paste it into your console to authorize your account. Once you've entered the command successfully in R, that computer is now authorized to deploy applications to your shinyapps.io account. (3) DEPLOY: Once the `rsconnect` package has been configured, you're ready to deploy your first application. If you haven't written any applications yet, you can also checkout the Getting Started Guide for instruction son how to deploy our demo application. Run the following code in your R console: `library(rsconnect)`, then `rsconnect::deployApp('path/to/your/app')`.
@@ -25,13 +25,13 @@ format: revealjs ## {#deploy-app data-menu-title="~~~ Deploy your app ~~~"} -[Deploy your app to shinyapps.io]{.slide-title-smallest} +[Deploy your app to shinyapps.io]{.slide-title3}
-

Once your account has been authorized, run `rsconnect::deployApp("")` in your console to deploy your app to shinyapps.io. Here, we'll run `rsconnect::deployApp("two-file-app")` to deploy the app we've been working on.

+

Once your account has been authorized, run `rsconnect::deployApp("")` in your console to deploy your app to shinyapps.io. Here, we'll run `rsconnect::deployApp("two-file-app")` to deploy the app we've been working on.

-

Once deployed, a browser will open to your application. The URL will take the form: **https://username.shinyapps.io/your_app_directory_name**. You should also now see an `/rsconnect` folder within your app's directory -- this is generated when an application bundle is successfully deployed and contains a DCF file with information on the deployed content (i.e. the name, title, server address, account, URL, and time). **This `/rsconnect` folder should be added and committed into version control (i.e. push it to GitHub!)** so that future re-deployments target the same endpoint (i.e. your app's URL).

+

Once deployed, a browser will open to your application. The URL will take the form: **https://username.shinyapps.io/your_app_directory_name**. You should also now see an `/rsconnect` folder within your app's directory -- this is generated when an application bundle is successfully deployed and contains a DCF file with information on the deployed content (i.e. the name, title, server address, account, URL, and time). **This `/rsconnect` folder should be added and committed into version control (i.e. push it to GitHub!)** so that future re-deployments target the same endpoint (i.e. your app's URL).

Our shiny app, now hosted at the URL https://samanthacsik.shinyapps.io/two-file-app which functions the same as when it was hosted locally.
@@ -39,15 +39,15 @@ format: revealjs ## {#shinyapps-dashboard data-menu-title="shinyapps.io dashboard"} -[The shinyapps.io dashboard]{.slide-title-smaller} +[The shinyapps.io dashboard]{.slide-title2}
-

Your shinyapps.io dashboard provides tons of information about your application metrics, instance (the virtualized server that your app is hosted on) and worker (a special type of R process that an Application Instance runs to service requests to an application) settings, plan management, and more. The free plan (the plan we're using here today) allows you to deploy **five** Shiny apps. You are able to archive and/or delete once-deployed apps to make space for new ones.

+

Your shinyapps.io dashboard provides tons of information about your application metrics, instance (the virtualized server that your app is hosted on) and worker (a special type of R process that an Application Instance runs to service requests to an application) settings, plan management, and more. The free plan (the plan we're using here today) allows you to deploy **five** Shiny apps. You are able to archive and/or delete once-deployed apps to make space for new ones.

The shinyapps.io dashboard displaying information about our two-file-app, now hosted at https://samanthacsik.shinyapps.io/two-file-app/. You can select different menu items from the navbar at the top of the page, including Overview, Metrics, URLs, Settings, Users, Logs, Restart, Archive, and Trash.
-

Check out the [shinyapps.io user guide](https://docs.posit.co/shinyapps.io/index.html) for more information on hosting your apps on shinyapps.io.

+

Check out the [shinyapps.io user guide](https://docs.posit.co/shinyapps.io/index.html) for more information on hosting your apps on shinyapps.io.

--- @@ -57,19 +57,19 @@ format: revealjs
-

[shinyapps.io](https://www.shinyapps.io/) is not the only Shiny app hosting service (though it's the easiest to get started with and the only one we'll be covering in detail in this workshop).

+

[shinyapps.io](https://www.shinyapps.io/) is not the only Shiny app hosting service (though it's the easiest to get started with and the only one we'll be covering in detail in this workshop).

**Posit also offers the following:**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Shiny server](https://posit.co/products/open-source/shinyserver/) is an open source server which you can deploy for free on your own hardware. It requires more setup and configuration, but can be used without a fee. The Bren and NCEAS servers are configured with Shiny Server for hosting for some in-house apps.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Shiny server](https://posit.co/products/open-source/shinyserver/) is an open source server which you can deploy for free on your own hardware. It requires more setup and configuration, but can be used without a fee. The Bren and NCEAS servers are configured with Shiny Server for hosting for some in-house apps.

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Posit connect](https://posit.co/products/enterprise/connect/) is a paid product that provides an advanced suite of services for hosting Shiny apps, Quarto and R Markdown reports, APIs, and more.

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} [Posit connect](https://posit.co/products/enterprise/connect/) is a paid product that provides an advanced suite of services for hosting Shiny apps, Quarto and R Markdown reports, APIs, and more.

--- ## {#hosting-recommendations data-menu-title="App hosting recommendations"} -[So how should *I* host my app?]{.slide-title-smaller} +[So how should *I* host my app?]{.slide-title2}
@@ -81,14 +81,14 @@ format: revealjs . . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Preferred:** Stick with the **free** tier of [shinyapps.io](https://www.shinyapps.io/), if you can! This is by far the most straightforward option that requires no server maintenance for you or your client. If your app exceeds the limitations set by the free tier (e.g. requires more active hours, needs more RAM or instances to support high traffic usage, etc.), you/your client have the option to upgrade to a paid tier -- there are [5 paid plan types](https://docs.posit.co/shinyapps.io/billing-and-account-management.html#plan-types). Check out the [shinyapps.io user guide](https://docs.posit.co/shinyapps.io/index.html) for more information. **Consider setting aside your allocated capstone/GP funds to help support a paid shinyapps.io plan.**

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Preferred:** Stick with the **free** tier of [shinyapps.io](https://www.shinyapps.io/), if you can! This is by far the most straightforward option that requires no server maintenance for you or your client. If your app exceeds the limitations set by the free tier (e.g. requires more active hours, needs more RAM or instances to support high traffic usage, etc.), you/your client have the option to upgrade to a paid tier -- there are [5 paid plan types](https://docs.posit.co/shinyapps.io/billing-and-account-management.html#plan-types). Check out the [shinyapps.io user guide](https://docs.posit.co/shinyapps.io/index.html) for more information. **Consider setting aside your allocated capstone/GP funds to help support a paid shinyapps.io plan.**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} If you have a server-savvy client, they may want to deploy/host your app using their own infrastructure. If your client plans to pursue this option, but does not yet have a their own server configured to do so, we recommend directing them to the [online instructions](https://posit.co/download/shiny-server/) for getting started with Shiny Server. **PLEASE NOTE that Bren staff (including the compute team) are unable to provide technical support for clients in server configuration and app deployment/maintenance.**

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} If you have a server-savvy client, they may want to deploy/host your app using their own infrastructure. If your client plans to pursue this option, but does not yet have a their own server configured to do so, we recommend directing them to the [online instructions](https://posit.co/download/shiny-server/) for getting started with Shiny Server. **PLEASE NOTE that Bren staff (including the compute team) are unable to provide technical support for clients in server configuration and app deployment/maintenance.**

. . . -

**IMPORTANT:** Hosting on a server means that shiny applications will be prone to breaking as updates to server software are made. It is important to have an **application maintenance plan** in place. This may mean identifying who is responsible for maintaining code, or even deciding to decommission applications and archive the code repository when appropriate.

+

**IMPORTANT:** Hosting on a server means that shiny applications will be prone to breaking as updates to server software are made. It is important to have an **application maintenance plan** in place. This may mean identifying who is responsible for maintaining code, or even deciding to decommission applications and archive the code repository when appropriate.

. . . diff --git a/sections/6-second-app-v2.qmd b/sections/6-second-app-v2.qmd index 23b20ee..01deada 100644 --- a/sections/6-second-app-v2.qmd +++ b/sections/6-second-app-v2.qmd @@ -17,37 +17,37 @@ format: revealjs
-

By the end of this section, you should:

+

By the end of this section, you should:

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand how to provide users with helpful error messages using `validate()`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand how to provide users with helpful error messages using `validate()`

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to add customizable loading animations to alert users when reactive objects are re-rendering

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to add customizable loading animations to alert users when reactive objects are re-rendering

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to add alternate (alt) text to rendered plots

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} know how to add alternate (alt) text to rendered plots

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand how to *republish* an app using [shinyapps.io](https://www.shinyapps.io/)

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand how to *republish* an app using [shinyapps.io](https://www.shinyapps.io/)

. . . -

Packages introduced:

+

Packages introduced:

. . . -

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{shinycssloaders}`: add loading animations to shiny outputs

+

`r fontawesome::fa("box-open", fill = "#05859B", a11y = "sem")` `{shinycssloaders}`: add loading animations to shiny outputs

--- ## {#roadmap-app2v2 data-menu-title="Roadmap App #2v2"} -[Roadmap for App #2v2]{.slide-title-smaller} +[Roadmap for App #2v2]{.slide-title2}
@@ -59,9 +59,9 @@ format: revealjs
-

**(a)** user-friendly validation error messages that appear when widgets are used to deselect all data

-

**(b)** loading animations for both two reactive plots

-

**(c)** alternate (alt) text for all data visualizations

+

**(a)** user-friendly validation error messages that appear when widgets are used to deselect all data

+

**(b)** loading animations for both two reactive plots

+

**(c)** alternate (alt) text for all data visualizations

::: ::: {.column width="5%"} @@ -83,12 +83,12 @@ format: revealjs

*It's important to remove any possible points of confusion for successfully using your app.*

-

In version 1 of our published app, you'll notice that users are able to **(1) Deselect All** data using the `pickerInput`s for both the trout and penguin plots, and **(2) "uncheck" both** clear cut forest and old growth forest sampling section buttons using the `checkboxGroupInput`. When any of these actions are taken by the user, all data are removed from the plot, leaving a completely blank box behind.

+

In version 1 of our published app, you'll notice that users are able to **(1) Deselect All** data using the `pickerInput`s for both the trout and penguin plots, and **(2) "uncheck" both** clear cut forest and old growth forest sampling section buttons using the `checkboxGroupInput`. When any of these actions are taken by the user, all data are removed from the plot, leaving a completely blank box behind.

:::: {.columns} ::: {.column width="45%"} -

While this response is expected (and normal), we can generate a user-friendly [validation error](https://shiny.rstudio.com/articles/validation.html) message to provide clear guidance to our users on what is expected by the app in order to display data.

+

While this response is expected (and normal), we can generate a user-friendly [validation error](https://shiny.rstudio.com/articles/validation.html) message to provide clear guidance to our users on what is expected by the app in order to display data.

::: ::: {.column width="5%"} @@ -108,9 +108,9 @@ format: revealjs
-

`validate()` tests a condition and returns an error if that conditions fails. It's used in conjunction with `need()`, which takes an expression that returns `TRUE` or `FALSE`, along with a character string to return if the condition is `FALSE`.

+

`validate()` tests a condition and returns an error if that conditions fails. It's used in conjunction with `need()`, which takes an expression that returns `TRUE` or `FALSE`, along with a character string to return if the condition is `FALSE`.

-

Place your validation test(s) at the start of any `reactive()` or `render*()` expression that calls `input$data`. For example, we can add two validation tests inside the reactive that generates our `trout_filtered_df` -- we'll need two separate validation tests, one for each of our inputs where users can deselect all data.

+

Place your validation test(s) at the start of any `reactive()` or `render*()` expression that calls `input$data`. For example, we can add two validation tests inside the reactive that generates our `trout_filtered_df` -- we'll need two separate validation tests, one for each of our inputs where users can deselect all data.

```{r} #| eval: false @@ -138,7 +138,7 @@ server <- function(input, output) { ## {#exercise4-prompt-tips data-menu-title="** Exercise 4 Prompt & Tips **"} -[{{< fa question title="question mark" >}} & {{< fa lightbulb title="a lightbulb" >}} Exercise 4: Add a validation test for your penguin histogram]{.slide-title-smaller} +[{{< fa question title="question mark" >}} & {{< fa lightbulb title="a lightbulb" >}} Exercise 4: Add a validation test for your penguin histogram]{.slide-title2}
@@ -146,24 +146,24 @@ server <- function(input, output) {

**To Do:**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Construct a validation test that displays a clear but succinct message when a user deselects all islands using the `pickerWidget`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Construct a validation test that displays a clear but succinct message when a user deselects all islands using the `pickerWidget`


**Tips:**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Despite having **two** inputs, we only need **one** validation test for our Penguins plot. Why is this?

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Despite having **two** inputs, we only need **one** validation test for our Penguins plot. Why is this?



-

See next slide for a solution!

+

See next slide for a solution!

--- ## {#exercise4-solution data-menu-title="** Exercise 4 Solution **"} -[{{< fa check title="check mark" >}} Exercise 4: A solution]{.slide-title-smaller} +[{{< fa check title="check mark" >}} Exercise 4: A solution]{.slide-title2}
@@ -235,15 +235,15 @@ server <- function(input, output) { ## {#loading-animations data-menu-title="Add loading animations"} -[Add loading animations to re-rendering outputs]{.slide-title-smaller} +[Add loading animations to re-rendering outputs]{.slide-title2}
-

The [`{shinycssloaders}` package](https://github.com/daattali/shinycssloaders) makes it easy to add visual indicators to outputs as they're loading or re-rendering. This can be particularly helpful if you have outputs that take a few seconds to render -- it alerts users that their updated inputs were recognized and that the app is working to re-render outputs.

+

The [`{shinycssloaders}` package](https://github.com/daattali/shinycssloaders) makes it easy to add visual indicators to outputs as they're loading or re-rendering. This can be particularly helpful if you have outputs that take a few seconds to render -- it alerts users that their updated inputs were recognized and that the app is working to re-render outputs.

-

Check out the [demo app](https://daattali.com/shiny/shinycssloaders-demo/) to start designing your own "spinner" (choose style, color, size).

+

Check out the [demo app](https://daattali.com/shiny/shinycssloaders-demo/) to start designing your own "spinner" (choose style, color, size).

-

We can pipe the `withSpinner()` function directly into our `plotOutput`s in `ui.R` (be sure to load the package in `global.R` first) -- here, we define the spinner color and style (there are 8 different spinner `type`s to choose from) and adjust the size of the penguin plot spinner.

+

We can pipe the `withSpinner()` function directly into our `plotOutput`s in `ui.R` (be sure to load the package in `global.R` first) -- here, we define the spinner color and style (there are 8 different spinner `type`s to choose from) and adjust the size of the penguin plot spinner.

:::: {.columns} @@ -276,11 +276,11 @@ plotOutput(outputId = "flipperLength_histogram") |> ## {#include-alt-text data-menu-title="Include alt text"} -[Include alt text for all data visualizations]{.slide-title-smallest} +[Include alt text for all data visualizations]{.slide-title3}
-

Alt text are **written descriptions** added to images, and importantly, to data visualizations, to **help more users understand the content**. Assistive technologies (e.g. screen readers) read alt text out loud for users to hear. When alt text is successfully added, the `alt` tag (along with your text) should appear in the HTML (right click on your app's data viz to **Inspect** and ensure that it was added).

+

Alt text are **written descriptions** added to images, and importantly, to data visualizations, to **help more users understand the content**. Assistive technologies (e.g. screen readers) read alt text out loud for users to hear. When alt text is successfully added, the `alt` tag (along with your text) should appear in the HTML (right click on your app's data viz to **Inspect** and ensure that it was added).

:::: {.columns} @@ -289,7 +289,7 @@ plotOutput(outputId = "flipperLength_histogram") |>

-

We'll talk a bit more about alt text [later on](https://ucsb-meds.github.io/EDS430-Shiny/#/alt-text), but for now we can add alt text easily to our data visuzliations using the `alt` argument. Place this *outside* of the `{}` but inside the `()` of `renderPlot{()}`. For example, we can add alt text to our trout and penguin plots in `server.R`:

+

We'll talk a bit more about alt text [later on](https://ucsb-meds.github.io/EDS430-Shiny/#/alt-text), but for now we can add alt text easily to our data visuzliations using the `alt` argument. Place this *outside* of the `{}` but inside the `()` of `renderPlot{()}`. For example, we can add alt text to our trout and penguin plots in `server.R`:

::: ::: {.column width="5%"} diff --git a/sections/7-redeploy-app.qmd b/sections/7-redeploy-app.qmd index f34f6a2..4a6e28e 100644 --- a/sections/7-redeploy-app.qmd +++ b/sections/7-redeploy-app.qmd @@ -13,18 +13,18 @@ format: revealjs ## {#howto-redeploy data-menu-title="How to Redeploy"} -[Redeploying is similar to deploying for the first time]{.slide-title-smaller} +[Redeploying is similar to deploying for the first time]{.slide-title2}

Just a few quick steps before your updates are live at your URL from earlier:

-

**1.** double check to make sure any required packages are being imported in `global.R`

-

**2.** Rerun `rsconnect::deployApp("` in your console and type `Y` when you see the prompt `Update application currently deployed at https://githubUserName.shinyapps.io/yourAppName? [Y/n]`

-

**3.** Give it a minute (or few) to deploy. Your deployed app will open in a browser window once processed

-

**4.** Push all your files (including the `/rsconnect` directory) to GitHub

+

**1.** double check to make sure any required packages are being imported in `global.R`

+

**2.** Rerun `rsconnect::deployApp("` in your console and type `Y` when you see the prompt `Update application currently deployed at https://githubUserName.shinyapps.io/yourAppName? [Y/n]`

+

**3.** Give it a minute (or few) to deploy. Your deployed app will open in a browser window once processed

+

**4.** Push all your files (including the `/rsconnect` directory) to GitHub


-

Check out my deployed app at

+

Check out my deployed app at

diff --git a/sections/8.1-shinydashboard.qmd b/sections/8.1-shinydashboard.qmd index 907c9a3..d6f2d75 100644 --- a/sections/8.1-shinydashboard.qmd +++ b/sections/8.1-shinydashboard.qmd @@ -17,35 +17,35 @@ format: revealjs
-

After this section, you should:

+

After this section, you should:

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand the general workflow for pre-processing, saving & reading data into an app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand the general workflow for pre-processing, saving & reading data into an app

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} be comfortable building out a dashboard UI using `{shinydashboard}` layout functions

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} be comfortable building out a dashboard UI using `{shinydashboard}` layout functions

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand how to add static images to your app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} understand how to add static images to your app

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} feel comfortable creating a basic reactive `leaflet` map

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} feel comfortable creating a basic reactive `leaflet` map

. . . -

Packages introduced:

+

Packages introduced:

. . . -

[{{< fa box-open title="an open box" >}}]{.teal-text} `{shinydashboard}`: provides an alternative UI framework for easily building dashboard-style shiny applications

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{shinydashboard}`: provides an alternative UI framework for easily building dashboard-style shiny applications

. . . -

[{{< fa box-open title="an open box" >}}]{.teal-text} `{leaflet}`: for building interactive maps

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{leaflet}`: for building interactive maps

--- @@ -65,10 +65,10 @@ format: revealjs
-

**(a)** a `dashboardHeader` with the name of your app

-

**(b)** a `dashboardSidebar` with two `menuItem`s

-

**(c)** a landing page with background information about your app

-

**(d)** an interactive *and* reactive `leaflet` map

+

**(a)** a `dashboardHeader` with the name of your app

+

**(b)** a `dashboardSidebar` with two `menuItem`s

+

**(c)** a landing page with background information about your app

+

**(d)** an interactive *and* reactive `leaflet` map

::: ::: {.column width="5%"} @@ -84,7 +84,7 @@ format: revealjs ## {#what-is-a-dashboard data-menu-title="What is a dashboard?"} -[But first, what do we mean by a shiny "dashboard"?]{.slide-title-smaller} +[But first, what do we mean by a shiny "dashboard"?]{.slide-title2}
@@ -96,11 +96,11 @@ format: revealjs ## {#dashboardPage data-menu-title="dashboardPage()"} -[The most basic shinydashboard is made up of a header, a sidebar, and a body]{.slide-title-smaller} +[The most basic shinydashboard is made up of a header, a sidebar, and a body]{.slide-title2}
-

The main difference between a **shiny app** and a **shinydashboard** are the UI elements. Rather than a `fluidPage()` (as used in our previous shiny apps), we'll create a `dashboardPage()`, which expects three main parts: a header, a sidebar, and a body. Below is the most minimal possible UI for a `{shinydashboard}` page (you can run this code in an `app.R` file, if you wish).

+

The main difference between a **shiny app** and a **shinydashboard** are the UI elements. Rather than a `fluidPage()` (as used in our previous shiny apps), we'll create a `dashboardPage()`, which expects three main parts: a header, a sidebar, and a body. Below is the most minimal possible UI for a `{shinydashboard}` page (you can run this code in an `app.R` file, if you wish).

:::: {.columns} @@ -146,29 +146,29 @@ shinyApp(ui, server)
-

[{{< fa school title="a school house" >}}]{.teal-text} [Bren Student Data Explorer](https://shinyapps.bren.ucsb.edu/student-data-explorer/) ([source code](https://github.com/UCSB-MEDS/shiny-dashboard)), *by MEDS 2022 alum, [Halina Do-Linh](https://www.linkedin.com/in/halinadolinh/), during her Bren Summer Fellowship (and continued by future MEDS students!)* -- explore Bren school student demographics and career outcomes

+

[{{< fa school title="a school house" >}}]{.teal-text} [Bren Student Data Explorer](https://shinyapps.bren.ucsb.edu/student-data-explorer/) ([source code](https://github.com/UCSB-MEDS/shiny-dashboard)), *by MEDS 2022 alum, [Halina Do-Linh](https://www.linkedin.com/in/halinadolinh/), during her Bren Summer Fellowship (and continued by future MEDS students!)* -- explore Bren school student demographics and career outcomes

-

[{{< fa person-hiking title="a person hiking with a backpack on" >}}]{.teal-text} [Sam's Strava Stats](https://samanthacsik.shinyapps.io/strava_dashboard/) ([source code](https://github.com/samanthacsik/strava-dashboard)), *by yours truly, [Sam Csik](https://samanthacsik.github.io/)* -- a new and ongoing side project exploring my Strava hiking/biking/walking data

+

[{{< fa person-hiking title="a person hiking with a backpack on" >}}]{.teal-text} [Sam's Strava Stats](https://samanthacsik.shinyapps.io/strava_dashboard/) ([source code](https://github.com/samanthacsik/strava-dashboard)), *by yours truly, [Sam Csik](https://samanthacsik.github.io/)* -- a new and ongoing side project exploring my Strava hiking/biking/walking data

-

[{{< fa fish title="a fish" >}}]{.teal-text} [Channel Islands National Park's Kelp Forest Monitoring Program](http://34.94.133.101/) ([source code](https://github.com/cullen-molitor/KFM_Shiny_App)), *by MEDS 2022 alum, [Cullen Molitor](https://cullen-molitor.github.io/)* -- explore subtidal monitoring data collected from our closest National Park

+

[{{< fa fish title="a fish" >}}]{.teal-text} [Channel Islands National Park's Kelp Forest Monitoring Program](http://34.94.133.101/) ([source code](https://github.com/cullen-molitor/KFM_Shiny_App)), *by MEDS 2022 alum, [Cullen Molitor](https://cullen-molitor.github.io/)* -- explore subtidal monitoring data collected from our closest National Park

-

[{{< fa campground title="a camping tent" >}}]{.teal-text} [The Outdoor Equity App](https://shinyapps.bren.ucsb.edu/oe_app/) ([source code](https://github.com/outdoor-equity/outdoor-equity)), *developed by MEDS 2022 alumni [Halina Do-Linh](https://www.linkedin.com/in/halinadolinh/) & [Clarissa Boyajian](https://cboyajian.github.io/) as part of their MEDS capstone project* -- analyze patterns in the access and demand of visitors at reservable overnight sites

+

[{{< fa campground title="a camping tent" >}}]{.teal-text} [The Outdoor Equity App](https://shinyapps.bren.ucsb.edu/oe_app/) ([source code](https://github.com/outdoor-equity/outdoor-equity)), *developed by MEDS 2022 alumni [Halina Do-Linh](https://www.linkedin.com/in/halinadolinh/) & [Clarissa Boyajian](https://cboyajian.github.io/) as part of their MEDS capstone project* -- analyze patterns in the access and demand of visitors at reservable overnight sites

-

[{{< fa fish-fins title="a fish with fins" >}}]{.teal-text} [Visualizing human impacts on at-risk marine biodiversity](http://ohi-science.nceas.ucsb.edu/visualizing_human_impacts/) ([source code](https://github.com/BrennieDev/CHI_shiny_app), *developed by MESM 2022 alum, [Ian Brunjes](https://github.com/BrennieDev) & [Dr. Casey O'Hara](http://oharascience.com/index.html))* -- explore how human activities and climate change impact marine biodiversity worldwide

+

[{{< fa fish-fins title="a fish with fins" >}}]{.teal-text} [Visualizing human impacts on at-risk marine biodiversity](http://ohi-science.nceas.ucsb.edu/visualizing_human_impacts/) ([source code](https://github.com/BrennieDev/CHI_shiny_app), *developed by MESM 2022 alum, [Ian Brunjes](https://github.com/BrennieDev) & [Dr. Casey O'Hara](http://oharascience.com/index.html))* -- explore how human activities and climate change impact marine biodiversity worldwide

--- ## {#setup-dashboard-directory data-menu-title="Dashboard Setup"} -[Setup our shiny dashboard]{.slide-title-smaller} +[Setup our shiny dashboard]{.slide-title2}

First, create a subdirectory called `/shinydashboard` and add a `ui.R`, `server.R`, and `global.R` file.

-

Add the server function to `server.R` and the three main UI components (header, sidebar, and body) to our dashboard page. You can do so just as the example [a few slides back](https://ucsb-meds.github.io/EDS430-Shiny/#/dashboardPage), or alternatively, you can split the UI into separate pieces, then combine them into a `dashboardPage` the end of `ui.R` (as shown below) – this can help with organization as you app grows in complexity.

+

Add the server function to `server.R` and the three main UI components (header, sidebar, and body) to our dashboard page. You can do so just as the example [a few slides back](https://ucsb-meds.github.io/EDS430-Shiny/#/dashboardPage), or alternatively, you can split the UI into separate pieces, then combine them into a `dashboardPage` the end of `ui.R` (as shown below) – this can help with organization as you app grows in complexity.

-

We'll set our dashboard aside for now while we work on downloading and pre-processing our data, as well as practice creating our data visualization *outside* of our app.

+

We'll set our dashboard aside for now while we work on downloading and pre-processing our data, as well as practice creating our data visualization *outside* of our app.

::: {.panel-tabset} @@ -229,7 +229,7 @@ library(shinydashboard)
-

Christopher Arp, Matthew Whitman, Katie Drew, and Allen Bondurant. 2022. Water depth, surface elevation, and water temperature of lakes in the Fish Creek Watershed in northern Alaska, USA, 2011-2022. Arctic Data Center. [doi:10.18739/A2JH3D41P](https://arcticdata.io/catalog/view/doi%3A10.18739%2FA2JH3D41P).

+

Christopher Arp, Matthew Whitman, Katie Drew, and Allen Bondurant. 2022. Water depth, surface elevation, and water temperature of lakes in the Fish Creek Watershed in northern Alaska, USA, 2011-2022. Arctic Data Center. [doi:10.18739/A2JH3D41P](https://arcticdata.io/catalog/view/doi%3A10.18739%2FA2JH3D41P).

::: ::: {.column width="5%"} @@ -245,20 +245,20 @@ library(shinydashboard) ## {#processing-storing-data data-menu-title="Processing & Storing Data"} -[Pre-processing data is critical]{.slide-title-smallest} +[Pre-processing data is critical]{.slide-title3}
-

Where you choose to store the data used by your Shiny app will depend largely on the type and size of the file(s) and who "owns" those data. It is likely that you'll be working with data stored in a database or on a server. This is outside the scope of this workshop, but I suggest reading Dean Attali's article, [Persistent data storage in Shiny apps](https://shiny.rstudio.com/articles/persistent-data-storage.html) to start. Because we are going to be working with a relatively small data set, we'll be downloading and storing our data locally (i.e. on our machines and in our GitHub repo).

+

Where you choose to store the data used by your Shiny app will depend largely on the type and size of the file(s) and who "owns" those data. It is likely that you'll be working with data stored in a database or on a server. This is outside the scope of this workshop, but I suggest reading Dean Attali's article, [Persistent data storage in Shiny apps](https://shiny.rstudio.com/articles/persistent-data-storage.html) to start. Because we are going to be working with a relatively small data set, we'll be downloading and storing our data locally (i.e. on our machines and in our GitHub repo).

-

Regardless of where you choose to store your data, you can help your application more quickly process inputs/outputs by providing it *only as much data as needed to run*. This means **pre-processing** your data.

+

Regardless of where you choose to store your data, you can help your application more quickly process inputs/outputs by providing it *only as much data as needed to run*. This means **pre-processing** your data.

. . . :::: {.columns} ::: {.column width="35%"} -

[`FCWO_lakemonitoringdata_2011_2022_daily.csv`](https://arcticdata.io/metacat/d1/mn/v2/object/urn%3Auuid%3A73800a2e-7617-470a-83aa-b530a01f32e3) contains **8 attributes** (variables) and **18,894 observations** collected from a set of **11 lakes** located in the Fish Creek Watershed in northern Alaska between 2011-2022. We'll download and save the file to a `raw_data/` folder in the root directory of our repository. We'll then pre-process the data in a separate script(s) saved to `scratch/` and save a cleaned/processed version of the data to our app's directory, `/shinydashboard/data/lake_data_processed.csv`. Your repository structure should look similar to example on the right:

+

[`FCWO_lakemonitoringdata_2011_2022_daily.csv`](https://arcticdata.io/metacat/d1/mn/v2/object/urn%3Auuid%3A73800a2e-7617-470a-83aa-b530a01f32e3) contains **8 attributes** (variables) and **18,894 observations** collected from a set of **11 lakes** located in the Fish Creek Watershed in northern Alaska between 2011-2022. We'll download and save the file to a `raw_data/` folder in the root directory of our repository. We'll then pre-process the data in a separate script(s) saved to `scratch/` and save a cleaned/processed version of the data to our app's directory, `/shinydashboard/data/lake_data_processed.csv`. Your repository structure should look similar to example on the right:

::: ::: {.column width="5%"} @@ -306,11 +306,11 @@ knitr::include_graphics("images/shinydashboard-directory-structure.png") ## {#process-lake-data data-menu-title="Process Lake Data"} -[Process lake data & save new file]{.slide-title-smallest} +[Process lake data & save new file]{.slide-title3}
-

**NOTE:** In this example exercise, I've removed all rows with missing values (i.e. `NaN`s in the `Depth` column & `NA`s in the `BedTemperature` column) before calculating averages. *This is NOT good practice -- exploring and thinking critically about missing data is an important part of data analysis, and in a real-life scenario, you should consider the most appropriate method for handling them.*

+

**NOTE:** In this example exercise, I've removed all rows with missing values (i.e. `NaN`s in the `Depth` column & `NA`s in the `BedTemperature` column) before calculating averages. *This is NOT good practice -- exploring and thinking critically about missing data is an important part of data analysis, and in a real-life scenario, you should consider the most appropriate method for handling them.*

```{r} #| eval: false @@ -354,9 +354,9 @@ write_csv(unique_lakes, "shinydashboard/data/lake_data_processed.csv")
-

Oftentimes, you may choose to save your processed data frame as a `.rds` file (a data file format, native to R, which stores a single R object). `.rds` file are relatively small (and therefore take up little storage space), take less time to import/export, and preserve data types and classes (e.g. factors and dates), eliminating the need to redefine data types after loading the file. Bear in mind that this increased speed and space-saving may come at the cost of generality -- you can't open a `.rds` file outside of R or read it in with another programming language (e.g. Python).

+

Oftentimes, you may choose to save your processed data frame as a `.rds` file (a data file format, native to R, which stores a single R object). `.rds` file are relatively small (and therefore take up little storage space), take less time to import/export, and preserve data types and classes (e.g. factors and dates), eliminating the need to redefine data types after loading the file. Bear in mind that this increased speed and space-saving may come at the cost of generality -- you can't open a `.rds` file outside of R or read it in with another programming language (e.g. Python).

-

While we'll be sticking to `.csv` files in this workshop, it's worth experimenting with `.rds` when you begin working with your own (likely larger) data. You can read in (`readRDS()`) and write out to (`saveRDS()`) `.rds` files as easily as `.csv` files.

+

While we'll be sticking to `.csv` files in this workshop, it's worth experimenting with `.rds` when you begin working with your own (likely larger) data. You can read in (`readRDS()`) and write out to (`saveRDS()`) `.rds` files as easily as `.csv` files.

The R language logo overlaid on top of a database stack -- often used to represent the rds data file format.
@@ -364,11 +364,11 @@ write_csv(unique_lakes, "shinydashboard/data/lake_data_processed.csv") ## {#draft-leaflet data-menu-title="Draft Leaflet"} -[Draft `leaflet` map]{.slide-title-smaller} +[Draft `leaflet` map]{.slide-title2}
-

There are lots of ways to customize `leaflet` maps. We'll be keeping ours relatively simple, but check out the [Leaflet for R](https://rstudio.github.io/leaflet/) documentation for more ways to get creative with your maps.

+

There are lots of ways to customize `leaflet` maps. We'll be keeping ours relatively simple, but check out the [Leaflet for R](https://rstudio.github.io/leaflet/) documentation for more ways to get creative with your maps.

::: {.panel-tabset} @@ -443,11 +443,11 @@ leaflet() |> ## {#filter-leaflet data-menu-title="Filter Leaflet"} -[Practice filtering `leaflet` observations]{.slide-title-smaller} +[Practice filtering `leaflet` observations]{.slide-title2}
-

We'll eventually build three `sliderInput`s to filter lake makers by `Elevation`, `AvgDepth`, and `AvgTemp`. Practice filtering here first (and be sure to update the data frame name in your leaflet code!):

+

We'll eventually build three `sliderInput`s to filter lake makers by `Elevation`, `AvgDepth`, and `AvgTemp`. Practice filtering here first (and be sure to update the data frame name in your leaflet code!):

::: {.panel-tabset} @@ -538,11 +538,11 @@ leaflet() |> ## {#sketch-ui data-menu-title="Sketch the UI"} -[Sketch out our dashboard UI]{.slide-title-smaller} +[Sketch out our dashboard UI]{.slide-title2}
-

I want my dashboard to have two menu items: a welcome page with some background information, and a dashboard page with my reactive map. All elements will be placed inside `box`es, the primary building blocks of shinydashboards (more on that soon).

+

I want my dashboard to have two menu items: a welcome page with some background information, and a dashboard page with my reactive map. All elements will be placed inside `box`es, the primary building blocks of shinydashboards (more on that soon).


@@ -562,13 +562,13 @@ leaflet() |> ## {#title-menuItems data-menu-title="Title & menuItems"} -[Add a `title` & `menuItem`s]{.slide-title-smaller} +[Add a `title` & `menuItem`s]{.slide-title2}
-

First, add a title to `dashboardHeader()` and make more space using `titleWidth`, if necessary.

+

First, add a title to `dashboardHeader()` and make more space using `titleWidth`, if necessary.

-

Next, we'll build our `dashboardSidebar()`. Add a `sidebarMenu()` that contains two `menuItem`s. Be sure to provide each `menuItem()` with `text` as you'd like it to appear in your app (for me, that's **Welcome** and **Dashboard**), and a `tabName` which will be used to place `dashboardBody()` content in the appropriate `menuItem()`. Optionally, you can provide an icon. By default, `icon()` uses icons from [FontAwesome](https://fontawesome.com/).

+

Next, we'll build our `dashboardSidebar()`. Add a `sidebarMenu()` that contains two `menuItem`s. Be sure to provide each `menuItem()` with `text` as you'd like it to appear in your app (for me, that's **Welcome** and **Dashboard**), and a `tabName` which will be used to place `dashboardBody()` content in the appropriate `menuItem()`. Optionally, you can provide an icon. By default, `icon()` uses icons from [FontAwesome](https://fontawesome.com/).

```{r} #| eval: false @@ -607,11 +607,11 @@ dashboardPage(header, sidebar, body) ## {#tabItems data-menu-title="tabItems"} -[Add `tabItems` to your `dashboardBody`]{.slide-title-smaller} +[Add `tabItems` to your `dashboardBody`]{.slide-title2}
-

Next, we'll create `tabItems` in our `dashboardBody` -- we'll make a `tabItem` (singular) for each `menuItem` in our `dashboardSidebar`. In order to match a `menuItem` and a `tabItem`, ensure that they have matching a `tabName` (e.g. any content added to the **dashboard** `tabItem` will appear under the **dashboard** `menuItem`).

+

Next, we'll create `tabItems` in our `dashboardBody` -- we'll make a `tabItem` (singular) for each `menuItem` in our `dashboardSidebar`. In order to match a `menuItem` and a `tabItem`, ensure that they have matching a `tabName` (e.g. any content added to the **dashboard** `tabItem` will appear under the **dashboard** `menuItem`).

```{r} #| eval: false @@ -671,11 +671,11 @@ dashboardPage(header, sidebar, body) ## {#boxes data-menu-title="boxes"} -[Add `box`es to contain UI content (part 1)]{.slide-title-smaller} +[Add `box`es to contain UI content (part 1)]{.slide-title2}
-

[Boxes](https://rstudio.github.io/shinydashboard/structure.html#boxes) are the primary building blocks of shinydashboards and can contain almost any Shiny UI element (e.g. text, inputs, outputs). Start by adding two side-by-side boxes to our **dashboard** tab inside a `fluidRow()`. Together, their widths will add up to 12 (the total width of a browser page). These boxes will eventually contain our `sliderInput`s and our `leafletOutput`.

+

[Boxes](https://rstudio.github.io/shinydashboard/structure.html#boxes) are the primary building blocks of shinydashboards and can contain almost any Shiny UI element (e.g. text, inputs, outputs). Start by adding two side-by-side boxes to our **dashboard** tab inside a `fluidRow()`. Together, their widths will add up to 12 (the total width of a browser page). These boxes will eventually contain our `sliderInput`s and our `leafletOutput`.

```{r} #| eval: false @@ -750,11 +750,11 @@ dashboardPage(header, sidebar, body) ## {#columns data-menu-title="Columns"} -[Add `box`es to contain UI content (part 2)]{.slide-title-smaller} +[Add `box`es to contain UI content (part 2)]{.slide-title2}
-

Lastly, add boxes to our **welcome** tab We'll use `column`s to place one box on the left-hand side of our page, and two stacked boxes on the right-hand side. Each `column` will take up half the page (**Note:** *For column-based layouts, use `NULL` for the box width, as the width is set by the column that contains the box*). We can create two `fluidRow`s within the right-hand column to stack two boxes vertically.

+

Lastly, add boxes to our **welcome** tab We'll use `column`s to place one box on the left-hand side of our page, and two stacked boxes on the right-hand side. Each `column` will take up half the page (**Note:** *For column-based layouts, use `NULL` for the box width, as the width is set by the column that contains the box*). We can create two `fluidRow`s within the right-hand column to stack two boxes vertically.

```{r} #| eval: false @@ -870,7 +870,7 @@ dashboardPage(header, sidebar, body) ## {#import-data data-menu-title="Read in data"} -[Read data into `global.R` & add necessary packages]{.slide-title-smaller} +[Read data into `global.R` & add necessary packages]{.slide-title2}
@@ -894,11 +894,11 @@ lake_data <- read_csv("data/lake_data_processed.csv") ## {#add-sliderInput-leafletMap data-menu-title="Add Widget & Leaflet Map"} -[Add a `sliderInput` & `leafletOutput` to the UI]{.slide-title-smaller} +[Add a `sliderInput` & `leafletOutput` to the UI]{.slide-title2}
-

Start by adding just one `sliderInput` (for selecting a range of lake `Elevation`s) to the left-hand box in the **dashboard** tab. Then, add a `leafletOutput` to create a placeholder space for our map, along with a Spinner animation (from the `{shinycssloaders}` package). While we're here, we can also add `title`s to each box.

+

Start by adding just one `sliderInput` (for selecting a range of lake `Elevation`s) to the left-hand box in the **dashboard** tab. Then, add a `leafletOutput` to create a placeholder space for our map, along with a Spinner animation (from the `{shinycssloaders}` package). While we're here, we can also add `title`s to each box.

```{r} #| eval: false @@ -1022,11 +1022,11 @@ dashboardPage(header, sidebar, body) ## {#build-map-server data-menu-title="Build map in server.R"} -[Assemble inputs & outputs in `server.R`]{.slide-title-smaller} +[Assemble inputs & outputs in `server.R`]{.slide-title2}
-

Remember to reference your practice data viz script and to follow our three steps for creating reactive outputs. And don't forget to add `()` following each reactive data frame called in your leaflet map!

+

Remember to reference your practice data viz script and to follow our three steps for creating reactive outputs. And don't forget to add `()` following each reactive data frame called in your leaflet map!

```{r} #| eval: false @@ -1075,7 +1075,7 @@ server <- function(input, output) { ## {#working-elev-widget data-menu-title="Test Elevation Widget"} -[Run your app & test out your first widget]{.slide-title-smaller} +[Run your app & test out your first widget]{.slide-title2}
@@ -1087,27 +1087,27 @@ server <- function(input, output) { ## {#exercise5-prompt data-menu-title="** Exercise 5 Prompt **"} -[{{< fa question title="question mark" >}} Exercise 5: Add two more `sliderInput`s to filter for `AvgDepth` & `AvgTemp`]{.slide-title-smaller} +[{{< fa question title="question mark" >}} Exercise 5: Add two more `sliderInput`s to filter for `AvgDepth` & `AvgTemp`]{.slide-title2}

**To Do:** -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Add two more `sliderInput`s, one for `AvgDepth` and one for `AvgTemp` beneath our first Elevation `sliderInput` in the UI

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Update our reactive data frame so that all three widgets filter the leaflet map

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Add two more `sliderInput`s, one for `AvgDepth` and one for `AvgTemp` beneath our first Elevation `sliderInput` in the UI

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Update our reactive data frame so that all three widgets filter the leaflet map





-

See next slide for a solution!

+

See next slide for a solution!

--- ## {#exercise5-solution data-menu-title="** Exercise 5 Solution **"} -[{{< fa check title="check mark" >}} Exercise 5: A solution]{.slide-title-smaller} +[{{< fa check title="check mark" >}} Exercise 5: A solution]{.slide-title2}
diff --git a/sections/8.2-shinydashboard.qmd b/sections/8.2-shinydashboard.qmd index caa6f38..686417a 100644 --- a/sections/8.2-shinydashboard.qmd +++ b/sections/8.2-shinydashboard.qmd @@ -4,14 +4,14 @@ format: revealjs ## {#exercise6-prompt-tips data-menu-title="** Exercise 6 Prompt & Tips **"} -[{{< fa question title="question mark" >}} & {{< fa lightbulb title="a lightbulb" >}} Exercise 6: Add titles & text to Welcome page boxes]{.slide-title-smaller} +[{{< fa question title="question mark" >}} & {{< fa lightbulb title="a lightbulb" >}} Exercise 6: Add titles & text to Welcome page boxes]{.slide-title2}

**To Do:**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Add titles to each box

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Create a `/text` folder within your app's directory and add three markdown (`.md`) files. Write/format text for the background info (left), data citation (top-right), and disclaimer (bottom-right) boxes. Example text below:

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Add titles to each box

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Create a `/text` folder within your app's directory and add three markdown (`.md`) files. Write/format text for the background info (left), data citation (top-right), and disclaimer (bottom-right) boxes. Example text below:

::: {.panel-tabset} @@ -44,17 +44,17 @@ This app is build for demonstration/teaching purposes only and is not paid for o

**Tips:**

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Titles can include icons! For example: `title = tagList(icon("icon-name"), strong("title text here"))`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Titles can include icons! For example: `title = tagList(icon("icon-name"), strong("title text here"))`

--- ## {#exercise6-solution data-menu-title="** Exercise 6 Solution **"} -[{{< fa check title="check mark" >}} Exercise 6: A solution]{.slide-title-smaller} +[{{< fa check title="check mark" >}} Exercise 6: A solution]{.slide-title2}
-

Press the right arrow key to advance through the newly added lines of code.

+

Press the right arrow key to advance through the newly added lines of code.

::: {.panel-tabset} @@ -212,13 +212,13 @@ lake_data <- read_csv("data/lake_data_processed.csv") ## {#add-image data-menu-title="Add Static Image"} -[Add a static image]{.slide-title-smaller} +[Add a static image]{.slide-title2}
-

As a final touch, let's add an image to the Welcome page, inside the left-hand box beneath our intro text. First, **create a `/www` folder inside your app's directory** (refer back to [this slide](https://ucsb-meds.github.io/EDS430-Shiny/#/repo-structure) for a description of this special directory). Download the map of the Fish Creek Watershed from FCWO's website [here](http://www.fishcreekwatershed.org/images/FishCreekWatershedSiteMap_2020.jpg) and save it to your `/www` directory.

+

As a final touch, let's add an image to the Welcome page, inside the left-hand box beneath our intro text. First, **create a `/www` folder inside your app's directory** (refer back to [this slide](https://ucsb-meds.github.io/EDS430-Shiny/#/repo-structure) for a description of this special directory). Download the map of the Fish Creek Watershed from FCWO's website [here](http://www.fishcreekwatershed.org/images/FishCreekWatershedSiteMap_2020.jpg) and save it to your `/www` directory.

-

Next, use the `img` tag to add your image. Supply a file path, relative to your `/www` directory, using the `src` argument, and alt text using the `alt` argument.

+

Next, use the `img` tag to add your image. Supply a file path, relative to your `/www` directory, using the `src` argument, and alt text using the `alt` argument.

```{r} #| eval: false @@ -355,7 +355,7 @@ dashboardPage(header, sidebar, body) ## {#large-image data-menu-title="Image is too large"} -[Unfortunately, our image doesn't look so great as-is...]{.slide-title-smaller} +[Unfortunately, our image doesn't look so great as-is...]{.slide-title2}
@@ -365,13 +365,13 @@ dashboardPage(header, sidebar, body) ## {#adjust-image-size data-menu-title="Adjust Image Size"} -[Use in-line CSS to adjust the image size]{.slide-title-smaller} +[Use in-line CSS to adjust the image size]{.slide-title2}
-

We can use in-line CSS to style our image element, as shown below (see `style` argument). It's okay if you don't fully understand what's going on here for now -- we'll talk in greater detail about how CSS (and Sass) can be used to customize the appearance of your apps in just a bit.

+

We can use in-line CSS to style our image element, as shown below (see `style` argument). It's okay if you don't fully understand what's going on here for now -- we'll talk in greater detail about how CSS (and Sass) can be used to customize the appearance of your apps in just a bit.

-

I've also added a caption below our image that links to the image source, and used in-line CSS to center my text within the box.

+

I've also added a caption below our image that links to the image source, and used in-line CSS to center my text within the box.

```{r} #| eval: false @@ -511,17 +511,17 @@ dashboardPage(header, sidebar, body) ## {#final-dashboard data-menu-title="Final Dashboard"} -[Check out your finished dashboard!]{.slide-title-smaller} +[Check out your finished dashboard!]{.slide-title2}
Our completed dashboard, with our image styled so that it fits within the background info box on the Welcome page, and three functional sliderInputs that update the leaflet map on the Dashboard page.
-

There's a ton more to learn about building shinydashboards. Check out the [documentation](https://rstudio.github.io/shinydashboard/) to find instructions on adding components like [`infoBox`es](https://rstudio.github.io/shinydashboard/structure.html#infobox) and [`valueBox`es](https://rstudio.github.io/shinydashboard/structure.html#valuebox), building [inputs in the sidebar](https://rstudio.github.io/shinydashboard/structure.html#inputs-in-the-sidebar), easy ways to update the color theme using [skins](https://rstudio.github.io/shinydashboard/appearance.html#skins), and more.

+

There's a ton more to learn about building shinydashboards. Check out the [documentation](https://rstudio.github.io/shinydashboard/) to find instructions on adding components like [`infoBox`es](https://rstudio.github.io/shinydashboard/structure.html#infobox) and [`valueBox`es](https://rstudio.github.io/shinydashboard/structure.html#valuebox), building [inputs in the sidebar](https://rstudio.github.io/shinydashboard/structure.html#inputs-in-the-sidebar), easy ways to update the color theme using [skins](https://rstudio.github.io/shinydashboard/appearance.html#skins), and more.

## {#final-dashboard-code data-menu-title="Complete dashboard code"} -[Complete code for our dashboard thus far:]{.slide-title-smaller} +[Complete code for our dashboard thus far:]{.slide-title2}
diff --git a/sections/9-themeing-apps.qmd b/sections/9-themeing-apps.qmd index 9fa1b19..98805fd 100644 --- a/sections/9-themeing-apps.qmd +++ b/sections/9-themeing-apps.qmd @@ -8,27 +8,27 @@ format: revealjs
-

By the end of this section, you should be equipped with:

+

By the end of this section, you should be equipped with:

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} a number of different approaches for themeing and styling your shiny apps and dashboards

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} a number of different approaches for themeing and styling your shiny apps and dashboards

. . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} a basic understanding of how to apply CSS & Sass styling to your app

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} a basic understanding of how to apply CSS & Sass styling to your app

. . . -

Packages introduced:

+

Packages introduced:

. . . -

[{{< fa box-open title="an open box" >}}]{.teal-text} `{bslib}`: provides tools for customizing Bootstrap themes directly from R for shiny apps and RMarkdowns

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{bslib}`: provides tools for customizing Bootstrap themes directly from R for shiny apps and RMarkdowns

. . . -

[{{< fa box-open title="an open box" >}}]{.teal-text} `{fresh}`: provides tools for creating custom themes for use with shiny, `shinydashboard`, and `bs4Dash` apps

+

[{{< fa box-open title="an open box" >}}]{.teal-text} `{fresh}`: provides tools for creating custom themes for use with shiny, `shinydashboard`, and `bs4Dash` apps

## {#themeing-pkgs data-menu-title="~~~ Themeing Shiny Apps (with pkgs) ~~~" background="#053660"} @@ -50,20 +50,20 @@ format: revealjs :::: {.columns} ::: {.column width="45%"} -

Pros:

-

[{{< fa check title="check mark" >}}]{.teal-text} easy to use

-

[{{< fa check title="check mark" >}}]{.teal-text} includes a [real-time themeing widget](https://testing-apps.shinyapps.io/themer-demo/) to try out themes before applying them to your own app

-

[{{< fa check title="check mark" >}}]{.teal-text} plays well with the `{thematic}` package for matching plot styling to app

-

[{{< fa check title="check mark" >}}]{.teal-text} `{bslib}` does more than just themeing! Check out the [December 2022 announcement](https://shiny.rstudio.com/blog/announcing-new-r-shiny-ui-components.html) of new UI components made possible with the latest package release

+

Pros:

+

[{{< fa check title="check mark" >}}]{.teal-text} easy to use

+

[{{< fa check title="check mark" >}}]{.teal-text} includes a [real-time themeing widget](https://testing-apps.shinyapps.io/themer-demo/) to try out themes before applying them to your own app

+

[{{< fa check title="check mark" >}}]{.teal-text} plays well with the `{thematic}` package for matching plot styling to app

+

[{{< fa check title="check mark" >}}]{.teal-text} `{bslib}` does more than just themeing! Check out the [December 2022 announcement](https://shiny.rstudio.com/blog/announcing-new-r-shiny-ui-components.html) of new UI components made possible with the latest package release

::: ::: {.column width="4%"} ::: ::: {.column width="45%"} -

Cons:

-

[{{< fa xmark title="an 'x' mark" >}}]{.teal-text} does **not** work with `shinydashboard` (`{bslib}` is only intended for use with `shiny` *apps*)

-

[{{< fa xmark title="an 'x' mark" >}}]{.teal-text} styling is constrained by the arguments available to `bs_theme()`

+

Cons:

+

[{{< fa xmark title="an 'x' mark" >}}]{.teal-text} does **not** work with `shinydashboard` (`{bslib}` is only intended for use with `shiny` *apps*)

+

[{{< fa xmark title="an 'x' mark" >}}]{.teal-text} styling is constrained by the arguments available to `bs_theme()`

::: :::: @@ -80,7 +80,7 @@ format: revealjs
-

By default, Shiny uses the Bootstrap v3 theme (which is not so exciting). Change the theme to a slightly more modern Bootstrap v5 theme by setting the `theme` argument of `fluidPage()` to `bslib::bs_theme(version = 5)`, *or* supply `bs_theme()` with a pre-built bootswatch theme, as shown below (for a list of theme names, run `bootswatch_themes()` in your console):

+

By default, Shiny uses the Bootstrap v3 theme (which is not so exciting). Change the theme to a slightly more modern Bootstrap v5 theme by setting the `theme` argument of `fluidPage()` to `bslib::bs_theme(version = 5)`, *or* supply `bs_theme()` with a pre-built bootswatch theme, as shown below (for a list of theme names, run `bootswatch_themes()` in your console):

:::: {.columns} @@ -100,7 +100,7 @@ ui <- fluidPage( ) ``` -

Check out the complete source code for App #1 [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/single-file-app) (NOTE: applied themes are commented out).

+

Check out the complete source code for App #1 [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/single-file-app) (NOTE: applied themes are commented out).

::: ::: {.column width="5%"} @@ -120,7 +120,7 @@ ui <- fluidPage(
-

Alternatively, you can fully customize your own theme. Explore the [`bslib` vignette](https://rstudio.github.io/bslib/articles/bslib.html) for detailed instructions. A small example here:

+

Alternatively, you can fully customize your own theme. Explore the [`bslib` vignette](https://rstudio.github.io/bslib/articles/bslib.html) for detailed instructions. A small example here:

:::: {.columns} @@ -144,7 +144,7 @@ ui <- fluidPage( ) ``` -

Check out the complete source code for App #1 [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/single-file-app) (NOTE: applied themes are commented out).

+

Check out the complete source code for App #1 [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/single-file-app) (NOTE: applied themes are commented out).

::: ::: {.column width="5%"} @@ -156,17 +156,17 @@ ui <- fluidPage( :::: -

Be sure to check out the interactive themeing widget to test custom color/font/etc. combos by running `bs_theme_preview()` in your console, or visit the hosted version [here](https://testing-apps.shinyapps.io/themer-demo/). You can also call `bs_themer()` within your `server` function to open the theme customization UI alongside your own app.

+

Be sure to check out the interactive themeing widget to test custom color/font/etc. combos by running `bs_theme_preview()` in your console, or visit the hosted version [here](https://testing-apps.shinyapps.io/themer-demo/). You can also call `bs_themer()` within your `server` function to open the theme customization UI alongside your own app.

---- ## {#thematic data-menu-title="{thematic} for plot themeing"} -[Use {thematic} to extend your theme to plots]{.slide-title-smaller} +[Use {thematic} to extend your theme to plots]{.slide-title2}
-

You probably noticed that our scatterplot looks a little silly against the darker background of our themed app. Enter the [`{thematic}` package](https://rstudio.github.io/thematic/index.html), which is built to help simplify plot themeing. Call `thematic_shiny()` before launching your app to generate plots that reflect your application's `bs_theme()`. For example:

+

You probably noticed that our scatterplot looks a little silly against the darker background of our themed app. Enter the [`{thematic}` package](https://rstudio.github.io/thematic/index.html), which is built to help simplify plot themeing. Call `thematic_shiny()` before launching your app to generate plots that reflect your application's `bs_theme()`. For example:

:::: {.columns} @@ -192,7 +192,7 @@ ui <- fluidPage( ) ``` -

Check out the complete source code for App #1 [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/single-file-app) (NOTE: applied themes are commented out).

+

Check out the complete source code for App #1 [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/single-file-app) (NOTE: applied themes are commented out).

::: @@ -206,13 +206,13 @@ ui <- fluidPage( :::: -

Read the [vignette](https://rstudio.github.io/thematic/index.html) to learn more about using the `thematic` package to help match plot fonts to the fonts applied across your app.

+

Read the [vignette](https://rstudio.github.io/thematic/index.html) to learn more about using the `thematic` package to help match plot fonts to the fonts applied across your app.

--- ## {#fresh data-menu-title="{fresh}"} -[Using the [`{fresh}` package](https://dreamrs.github.io/fresh/) to theme Shiny apps & dashboards]{.slide-title-smaller} +[Using the [`{fresh}` package](https://dreamrs.github.io/fresh/) to theme Shiny apps & dashboards]{.slide-title2}
@@ -223,17 +223,17 @@ ui <- fluidPage( :::: {.columns} ::: {.column width="45%"} -

Pros:

-

[{{< fa check title="check mark" >}}]{.teal-text} easy to use

-

[{{< fa check title="check mark" >}}]{.teal-text} supports theme creation for *both* shiny apps and dashboards (and also `{flexdashboard}`s and [`{b4dash}` applications](https://rinterface.github.io/bs4Dash/index.html))

+

Pros:

+

[{{< fa check title="check mark" >}}]{.teal-text} easy to use

+

[{{< fa check title="check mark" >}}]{.teal-text} supports theme creation for *both* shiny apps and dashboards (and also `{flexdashboard}`s and [`{b4dash}` applications](https://rinterface.github.io/bs4Dash/index.html))

::: ::: {.column width="4%"} ::: ::: {.column width="45%"} -

Cons:

-

[{{< fa xmark title="an 'x' mark" >}}]{.teal-text} styling is constrained by the variables available to `create_theme()`

+

Cons:

+

[{{< fa xmark title="an 'x' mark" >}}]{.teal-text} styling is constrained by the variables available to `create_theme()`

::: :::: @@ -248,14 +248,14 @@ ui <- fluidPage( ## {#fresh-workflow data-menu-title="{fresh} workflow"} -[A general workflow for using `fresh` themes]{.slide-title-smaller} +[A general workflow for using `fresh` themes]{.slide-title2}

Whether you're working on a shiny *app* or a shiny *dashboard*, you'll need the following:

-

**1.** a `/www` folder within your app's directory -- this is where we'll save the stylesheet (a `.css` file) that `fresh` will generate for us

-

**2.** a separate script for building our theme using the `create_theme()` function -- I recommend saving this to `~/scratch` (it seemed to cause issues when saved anywhere within my app directory)

+

**1.** a `/www` folder within your app's directory -- this is where we'll save the stylesheet (a `.css` file) that `fresh` will generate for us

+

**2.** a separate script for building our theme using the `create_theme()` function -- I recommend saving this to `~/scratch` (it seemed to cause issues when saved anywhere within my app directory)

. . . @@ -267,13 +267,13 @@ ui <- fluidPage( ## {#create-fresh-app-theme data-menu-title="Create {fresh} app theme"} -[Creating a `fresh` theme for `two-file-app`]{.slide-title-smallest} +[Creating a `fresh` theme for `two-file-app`]{.slide-title3}
-

In this example, we update the colors of our app's body, navbar, and tabPanels using the appropriate `fresh` [variables for shiny *apps*](https://dreamrs.github.io/fresh/articles/vars-shiny.html). We specify a file path, `two-file-app/www` (you'll need to create the `/www` directory, since we don't have one yet), where our stylesheet (e.g. `shiny_fresh_themes.css`, as shown here) file will be saved to.

+

In this example, we update the colors of our app's body, navbar, and tabPanels using the appropriate `fresh` [variables for shiny *apps*](https://dreamrs.github.io/fresh/articles/vars-shiny.html). We specify a file path, `two-file-app/www` (you'll need to create the `/www` directory, since we don't have one yet), where our stylesheet (e.g. `shiny_fresh_themes.css`, as shown here) file will be saved to.

-

Of course, these color combos are *not* recommended, but chosen purely for demonstration purposes {{< fa face-smile title="a smiling face" >}}.

+

Of course, these color combos are *not* recommended, but chosen purely for demonstration purposes {{< fa face-smile title="a smiling face" >}}.

```{r} #| eval: false @@ -315,7 +315,7 @@ create_theme( ## {#apply-fresh-apps-theme data-menu-title="Apply {fresh} app theme"} -[Apply a `fresh` theme to our app]{.slide-title-smaller} +[Apply a `fresh` theme to our app]{.slide-title2}
@@ -342,7 +342,7 @@ ui <- navbarPage( ) # END navbarPage ``` -

Check out the complete source code for App #2 [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/two-file-app) (NOTE: applied themes are commented out).

+

Check out the complete source code for App #2 [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/two-file-app) (NOTE: applied themes are commented out).

::: @@ -359,11 +359,11 @@ ui <- navbarPage( ## {#fresh-shinydashboard data-menu-title="{fresh} shiny dashboard"} -[Creating a `fresh` theme for our `shinydashboard`]{.slide-title-smallest} +[Creating a `fresh` theme for our `shinydashboard`]{.slide-title3}
-

In this example, we update the colors of our app's header, body, and sidebar using the appropriate `fresh` [variables for shiny *dashboards*](https://dreamrs.github.io/fresh/articles/vars-shinydashboard.html). We specify a file path, `shinydashboard/www` where our stylesheet (e.g. `shinydashboard_fresh_themes.css`, as shown here) file will be saved to. Again, these color combos are *not* recommended, but chosen purely for demonstration purposes.

+

In this example, we update the colors of our app's header, body, and sidebar using the appropriate `fresh` [variables for shiny *dashboards*](https://dreamrs.github.io/fresh/articles/vars-shinydashboard.html). We specify a file path, `shinydashboard/www` where our stylesheet (e.g. `shinydashboard_fresh_themes.css`, as shown here) file will be saved to. Again, these color combos are *not* recommended, but chosen purely for demonstration purposes.

```{r} #| eval: false @@ -403,7 +403,7 @@ create_theme( ## {#apply-fresh-dashboard-theme data-menu-title="Apply {fresh} dashboard theme"} -[Apply a `fresh` theme to our dashboard]{.slide-title-smaller} +[Apply a `fresh` theme to our dashboard]{.slide-title2}
@@ -430,7 +430,7 @@ body <- dashboardBody( ) ``` -

Check out the complete source code for the shinydashboard [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/shinydashboard) (NOTE: applied themes are commented out).

+

Check out the complete source code for the shinydashboard [here](https://github.com/samanthacsik/EDS430-shiny-app/tree/main/shinydashboard) (NOTE: applied themes are commented out).

::: @@ -456,7 +456,7 @@ body <- dashboardBody( ## {#sass-css data-menu-title="Sass & CSS"} -[Using Sass & CSS to style Shiny apps & dashboards]{.slide-title-smaller} +[Using Sass & CSS to style Shiny apps & dashboards]{.slide-title2}
@@ -467,17 +467,17 @@ body <- dashboardBody( :::: {.columns} ::: {.column width="45%"} -

Pros:

-

[{{< fa check title="check mark" >}}]{.teal-text} applies to any web page (not just shiny apps)

-

[{{< fa check title="check mark" >}}]{.teal-text} allows you to customize pretty much any aspect of your app

[{{< fa check title="check mark" >}}]{.teal-text} can be combined with themes generated using `bslib` or `fresh` to fine-tune your app's styling

+

Pros:

+

[{{< fa check title="check mark" >}}]{.teal-text} applies to any web page (not just shiny apps)

+

[{{< fa check title="check mark" >}}]{.teal-text} allows you to customize pretty much any aspect of your app

[{{< fa check title="check mark" >}}]{.teal-text} can be combined with themes generated using `bslib` or `fresh` to fine-tune your app's styling

::: ::: {.column width="4%"} ::: ::: {.column width="45%"} -

Cons:

-

[{{< fa xmark title="an 'x' mark" >}}]{.teal-text} a steeper learning curve/generally more complex than packages like `bslib` and `fresh`

+

Cons:

+

[{{< fa xmark title="an 'x' mark" >}}]{.teal-text} a steeper learning curve/generally more complex than packages like `bslib` and `fresh`

::: :::: @@ -490,7 +490,7 @@ body <- dashboardBody( ## {#css-review data-menu-title="CSS Review/Resources"} -[Resources for a deeper dive]{.slide-title-smaller} +[Resources for a deeper dive]{.slide-title2}
@@ -508,7 +508,7 @@ body <- dashboardBody( ## {#what-are-sass-css data-menu-title="What are Sass & CSS"} -[What even is CSS? Sass?]{.slide-title-smaller} +[What even is CSS? Sass?]{.slide-title2}
@@ -516,7 +516,7 @@ body <- dashboardBody( ::: {.column width="45%"}
The CSS 3 logo.
-

**CSS** (**C**ascading **S**tyle **S**heets) is a programming language that allows you to control how HTML elements look (e.g. colors, font styles, etc.) on a webpage.

+

**CSS** (**C**ascading **S**tyle **S**heets) is a programming language that allows you to control how HTML elements look (e.g. colors, font styles, etc.) on a webpage.

::: ::: {.column width="5%"} @@ -528,7 +528,7 @@ body <- dashboardBody(
The Sass logo
-

**Sass** (**S**yntactically **A**wesome **S**tyle**s**heets) is a CSS extension language and CSS preprocessor -- meaning Sass needs to be converted (aka compiled) to CSS before it can be interpreted by your web browser.

+

**Sass** (**S**yntactically **A**wesome **S**tyle**s**heets) is a CSS extension language and CSS preprocessor -- meaning Sass needs to be converted (aka compiled) to CSS before it can be interpreted by your web browser.

::: :::: @@ -537,7 +537,7 @@ body <- dashboardBody( ## {#css-rule-based data-menu-title="CSS is rule-based"} -[CSS is a rule-based language]{.slide-title-smaller} +[CSS is a rule-based language]{.slide-title2}
@@ -555,9 +555,9 @@ body <- dashboardBody( ::: ::: {.column width="45%"} -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Selectors** select the HTML element(s) you want to style (*e.g. level one headings, `

`)*

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Declarations** sit inside curly brackets, `{}`, and are made up of [**property**](https://www.w3schools.com/cssref/index.php) and **value** pairs. Each pair specifies the property of the HTML element(s) you're selecting *(e.g. the color property of the element `

`)*, and a value you'd like to assign to that property *(e.g. green)*

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} A property and it's corresponding value are separated by a colon, `:`. Declarations end with a semicolon, `;`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Selectors** select the HTML element(s) you want to style (*e.g. level one headings, `

`)*

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Declarations** sit inside curly brackets, `{}`, and are made up of [**property**](https://www.w3schools.com/cssref/index.php) and **value** pairs. Each pair specifies the property of the HTML element(s) you're selecting *(e.g. the color property of the element `

`)*, and a value you'd like to assign to that property *(e.g. green)*

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} A property and it's corresponding value are separated by a colon, `:`. Declarations end with a semicolon, `;`

::: :::: @@ -568,17 +568,17 @@ body <- dashboardBody( ## {#css-3ways data-menu-title="3 ways to add CSS styling"} -[3 ways to add CSS styling to your apps]{.slide-title-smallest} +[3 ways to add CSS styling to your apps]{.slide-title3}
-

You can **(1)** add styling directly to `tags`, **(2)** add CSS rules to your `header`, and/or **(3)** build a stylesheet that is applied to your app. **Creating a stylesheet is the preferred approach, and you should do this whenever possible.**

+

You can **(1)** add styling directly to `tags`, **(2)** add CSS rules to your `header`, and/or **(3)** build a stylesheet that is applied to your app. **Creating a stylesheet is the preferred approach, and you should do this whenever possible.**

::: {.panel-tabset} ## tags -

Add styling directly to tags. **It's best not to use a lot of these!** It's easy to lose track of your "in-line" styling in large projects, you can't reuse rules easily, it's hard to keep styling consistent, and it's difficult to implement large stylistic changes.

+

Add styling directly to tags. **It's best not to use a lot of these!** It's easy to lose track of your "in-line" styling in large projects, you can't reuse rules easily, it's hard to keep styling consistent, and it's difficult to implement large stylistic changes.

:::: {.columns} @@ -629,7 +629,7 @@ shinyApp(ui, server) ## header -

Add CSS rules to your app's header (`tags$head`). This is a little bit better than option 1 since it allows for the reuse of rules, however, styles can't be cached (i.e. saved for future usage when you reopen your app). **Note:** explore Google fonts [here](https://fonts.google.com/) and check out [this slide](https://ucsb-meds.github.io/customizing-quarto-websites/#/select-fonts) for instructions on selecting a font.

+

Add CSS rules to your app's header (`tags$head`). This is a little bit better than option 1 since it allows for the reuse of rules, however, styles can't be cached (i.e. saved for future usage when you reopen your app). **Note:** explore Google fonts [here](https://fonts.google.com/) and check out [this slide](https://ucsb-meds.github.io/customizing-quarto-websites/#/select-fonts) for instructions on selecting a font.

:::: {.columns} @@ -686,7 +686,7 @@ shinyApp(ui, server) ## stylesheets -

Build a stylesheet (a `.css` file) inside your app's `www/` directory and apply your styles to your app's header (for shinydashboards, include your header inside `dashboardBody()`. **This is the most ideal approach** -- it allows for style reuse, caching, and keeps styling contained in one spot. **Tip:** use `touch styles.css` in the terminal to create a new `.css` file.

+

Build a stylesheet (a `.css` file) inside your app's `www/` directory and apply your styles to your app's header (for shinydashboards, include your header inside `dashboardBody()`. **This is the most ideal approach** -- it allows for style reuse, caching, and keeps styling contained in one spot. **Tip:** use `touch styles.css` in the terminal to create a new `.css` file.

:::: {.columns} @@ -766,7 +766,7 @@ button { ## {#dashboard-practice-css data-menu-title="Dashboard for practicing CSS"} -[Let's practice on a small dashboard first:]{.slide-title-smaller} +[Let's practice on a small dashboard first:]{.slide-title2}
@@ -892,11 +892,11 @@ library(palmerpenguins) ## {#inspect-webpages data-menu-title="Inspecting"} -[What if I want to style an element, but don't know how to target it?]{.slide-title-smaller} +[What if I want to style an element, but don't know how to target it?]{.slide-title2}
-

Oftentimes, you'll have to do a bit of exploration to determine how to target specific elements for styling. In either your app viewer or web browser, right click on an element of interest and choose **Inspect** (or **Inspect Element**) to open up the underlying HTML and CSS. You can make temporary edits to your app (e.g. adding a background color, changing font sizes, etc.) to see how they look first, then copy the appropriate CSS rule into your stylesheet to apply to your app.

+

Oftentimes, you'll have to do a bit of exploration to determine how to target specific elements for styling. In either your app viewer or web browser, right click on an element of interest and choose **Inspect** (or **Inspect Element**) to open up the underlying HTML and CSS. You can make temporary edits to your app (e.g. adding a background color, changing font sizes, etc.) to see how they look first, then copy the appropriate CSS rule into your stylesheet to apply to your app.

A shiny dashboard, opened in the RStudio viewer, with the Inspect pane open to the right. The top half of the inspect pane shows the underlying HTML and the bottom half shows the underlying CSS styles.
@@ -904,15 +904,15 @@ library(palmerpenguins) ## {#inspect-dashboard data-menu-title="Inspect dashboard box"} -[Inspect & identify how to update box styling]{.slide-title-smallest} +[Inspect & identify how to update box styling]{.slide-title3}
-

For example, let's say I want to change the color of this shinydashboard's boxes and the color of the box text.

+

For example, let's say I want to change the color of this shinydashboard's boxes and the color of the box text.

-

**First, we need to determine which type of HTML element creates our box.** Right clicking on a box and choosing **Inspect Element** pulls up the HTML and CSS files underlying the app. Hovering over different parts of the HTML highlights different elements in the UI. The box is highlighted when I hover over `

` -- this tells me that boxes are formed using the `
` HTML element and they're assigned a class called `box-body`.

+

**First, we need to determine which type of HTML element creates our box.** Right clicking on a box and choosing **Inspect Element** pulls up the HTML and CSS files underlying the app. Hovering over different parts of the HTML highlights different elements in the UI. The box is highlighted when I hover over `

` -- this tells me that boxes are formed using the `
` HTML element and they're assigned a class called `box-body`.

-

**Next, we can (temporarily) adjust the CSS rules that style these boxes to see how they work.** I can hop down to the CSS file (here, that's located in the bottom half of my sidebar, but depending on the size of your window/layout, the HTML and CSS might be side-by-side) and find the `.box-body` class selector. You can add property/value pairs and/or update existing property values to adjust the appearance of our box. Notice that changing the `.box-body` class selector updates **both** boxes -- upon inspecting the box containing our plot, you'll notice that it is also of class, `box-body`. Therefore changes to this class selector will apply to both boxes. *This process is purely for testing purposes -- refreshing your app will remove any of these changes.*

+

**Next, we can (temporarily) adjust the CSS rules that style these boxes to see how they work.** I can hop down to the CSS file (here, that's located in the bottom half of my sidebar, but depending on the size of your window/layout, the HTML and CSS might be side-by-side) and find the `.box-body` class selector. You can add property/value pairs and/or update existing property values to adjust the appearance of our box. Notice that changing the `.box-body` class selector updates **both** boxes -- upon inspecting the box containing our plot, you'll notice that it is also of class, `box-body`. Therefore changes to this class selector will apply to both boxes. *This process is purely for testing purposes -- refreshing your app will remove any of these changes.*

@@ -920,13 +920,13 @@ library(palmerpenguins) ## {#write-box-css data-menu-title="Write CSS for box styling"} -[Finally, apply box styling to our dashboard]{.slide-title-smaller} +[Finally, apply box styling to our dashboard]{.slide-title2}
-

Now that we know that we can use the `box-body` class to customize the appearance of our boxes, let's create a stylesheet and add our new rules. The `shinydashboard` framework already provides the "standard" styling for boxes, contained in the `box-body` class. Anything we specify in our own stylesheet will build upon or modify existing styling.

+

Now that we know that we can use the `box-body` class to customize the appearance of our boxes, let's create a stylesheet and add our new rules. The `shinydashboard` framework already provides the "standard" styling for boxes, contained in the `box-body` class. Anything we specify in our own stylesheet will build upon or modify existing styling.

-

Remember to create a header and link your stylesheet within `dashboardBody()` to apply our styles.

+

Remember to create a header and link your stylesheet within `dashboardBody()` to apply our styles.

::: {.panel-tabset} @@ -1042,7 +1042,7 @@ dashboardPage(header, sidebar, body) ## {#what-about-sass data-menu-title="What about Sass?"} -[What about Sass?]{.slide-title-smaller} +[What about Sass?]{.slide-title2}
@@ -1058,11 +1058,11 @@ dashboardPage(header, sidebar, body) ## {#sass-vars data-menu-title="Sass variables"} -[We can define and reference Sass variables throughout our stylesheet]{.slide-title-smaller} +[We can define and reference Sass variables throughout our stylesheet]{.slide-title2}
-

Sass allows us to define variables (in the form `$var-name: value;`) for our colors to reference instead of writing out their HEX codes each time:

+

Sass allows us to define variables (in the form `$var-name: value;`) for our colors to reference instead of writing out their HEX codes each time:

```{css} #| eval: false @@ -1087,23 +1087,23 @@ h1 { ``` -

If you decide that you actually like a *different* shade of teal better, you’ll only need to update the hex code where you first define the `$teal` Sass variable, saving lots of time.

+

If you decide that you actually like a *different* shade of teal better, you’ll only need to update the hex code where you first define the `$teal` Sass variable, saving lots of time.

--- ## {#sass-workflow data-menu-title="Sass workflow"} -[Sass for Shiny workflow]{.slide-title-smaller} +[Sass for Shiny workflow]{.slide-title2}

To style apps using both Sass *and* CSS, you'll follow this general workflow:

-

**1.** Create a `.scss` file inside `~/myapp/www` using the `touch` command in the terminal (e.g. `cd` into the appropriate directory, then `touch styles.scss`). Write both your Sass variables and CSS rules in your `.scss` file (**Note:** you can write both Sass & CSS in a `.scss` file, but *only* CSS in a `.css` file)

+

**1.** Create a `.scss` file inside `~/myapp/www` using the `touch` command in the terminal (e.g. `cd` into the appropriate directory, then `touch styles.scss`). Write both your Sass variables and CSS rules in your `.scss` file (**Note:** you can write both Sass & CSS in a `.scss` file, but *only* CSS in a `.css` file)

-

**2.** Compile (i.e. convert) Sass to CSS in `global.R` (or, if using a one-file app, at the top of your script before you define your UI) using the the `sass()` function from the [`{sass}` package](https://rstudio.github.io/sass/index.html) -- this will generate a `.css` file that our shiny app can actually use. Be sure to save your `.css` file to your app's `/www` directory.

+

**2.** Compile (i.e. convert) Sass to CSS in `global.R` (or, if using a one-file app, at the top of your script before you define your UI) using the the `sass()` function from the [`{sass}` package](https://rstudio.github.io/sass/index.html) -- this will generate a `.css` file that our shiny app can actually use. Be sure to save your `.css` file to your app's `/www` directory.

-

**3.** Apply your styles to your app by linking to to your `.css` file in your app's header.

+

**3.** Apply your styles to your app by linking to to your `.css` file in your app's header.

A chart showing the Sass to CSS workflow -- begin with writing Sass variables and CSS rule in a .scss file, then use the sass R package to compile sass to css, and finally use your compiled .css file to apply your styles to your app.
@@ -1111,19 +1111,19 @@ h1 { ## {#write-sass data-menu-title="Write Sass"} -[Let's build our Sass file]{.slide-title-smaller} +[Let's build our Sass file]{.slide-title2}
-

We'll practice on our `two-file-app` -- first, remove any reference to your `bslib` or `fresh` themes that we practiced applying earlier so that we're starting off with just the default shiny styling.

+

We'll practice on our `two-file-app` -- first, remove any reference to your `bslib` or `fresh` themes that we practiced applying earlier so that we're starting off with just the default shiny styling.

. . . -

Next, create your Sass file within `two-file-app/www/`. Then, using your terminal, `cd` into `~/two-file-app/www` and use the `touch` command to create a `.scss` file (I'm calling mine `my_sass_styles.scss`).

+

Next, create your Sass file within `two-file-app/www/`. Then, using your terminal, `cd` into `~/two-file-app/www` and use the `touch` command to create a `.scss` file (I'm calling mine `my_sass_styles.scss`).

. . . -

Add Sass variables and CSS rules to `my_sass_styles.scss`:

+

Add Sass variables and CSS rules to `my_sass_styles.scss`:

```{css} #| eval: false @@ -1182,15 +1182,15 @@ a { ## {#convert-sass data-menu-title="Convert Sass to CSS"} -[Then, compile Sass to CSS]{.slide-title-smaller} +[Then, compile Sass to CSS]{.slide-title2}
-

Because web browsers can only interpret CSS (not Sass), we need to compile our Sass to CSS. To do this, we can use the `sass()` function from the [`{sass}` package](https://rstudio.github.io/sass/index.html). We can do this in `global.R`. The `sass()` function requires two arguments: a sass file `input` and a file path + named `.css` file `output`.

+

Because web browsers can only interpret CSS (not Sass), we need to compile our Sass to CSS. To do this, we can use the `sass()` function from the [`{sass}` package](https://rstudio.github.io/sass/index.html). We can do this in `global.R`. The `sass()` function requires two arguments: a sass file `input` and a file path + named `.css` file `output`.

-

We also need to apply our styles to our app by linking this newly-generated `.css` file in our app's header.

+

We also need to apply our styles to our app by linking this newly-generated `.css` file in our app's header.

-

**Note:** After running your app, you should see a `my_sass_styles.css` file appear in `www/` -- it should look quite familiar, except all of our Sass variables have been converted to CSS.

+

**Note:** After running your app, you should see a `my_sass_styles.css` file appear in `www/` -- it should look quite familiar, except all of our Sass variables have been converted to CSS.

::: {.panel-tabset} From 381de3770f501c1f1f3ae6d839b9433750ac74f5 Mon Sep 17 00:00:00 2001 From: samanthacsik Date: Sun, 8 Oct 2023 22:41:14 -0700 Subject: [PATCH 6/8] formatting cont. --- index.html | 682 ++++++++++++++++++++++---------- sections/11-accessibility.qmd | 18 +- sections/12-debugging.qmd | 19 +- sections/13-testing.qmd | 8 +- sections/14-functions.qmd | 85 ++-- sections/4.1-second-app-v1.qmd | 42 +- sections/4.3-second-app-v1.qmd | 17 +- sections/5-deploy-app.qmd | 27 +- sections/6-second-app-v2.qmd | 12 +- sections/8.1-shinydashboard.qmd | 20 +- sections/8.2-shinydashboard.qmd | 10 +- sections/9-themeing-apps.qmd | 45 +-- 12 files changed, 643 insertions(+), 342 deletions(-) diff --git a/index.html b/index.html index ba463b4..4b81c60 100644 --- a/index.html +++ b/index.html @@ -1880,7 +1880,7 @@
-
+
@@ -1905,7 +1905,7 @@

-be comfortable creating a shiny app using the two-file (ui.R&server.R) format along with aglobal.R` file + be comfortable creating a shiny app using the two-file (ui.R & server.R) format along with a global.R file

@@ -2006,6 +2006,10 @@
+
+
+
practice_script_app2_lter.R
+
#..........................load packages.........................
 library(lterdatasampler)
 library(tidyverse)
@@ -2055,6 +2059,7 @@
   labs(x = "Trout Length (mm)", y = "Trout Weight (g)", color = "Channel Type", shape = "Channel Type") +
   myCustomTheme
+
@@ -2073,6 +2078,10 @@
+
+
+
practice_script_app2_lter.R
+
#..........................load packages.........................
 library(palmerpenguins)
 library(tidyverse)
@@ -2089,6 +2098,7 @@
        fill = "Penguin species") +
   myCustomTheme
+
@@ -2344,6 +2354,10 @@ Tip: It can be super helpful add code comments at the start and end of each UI element – for example, see # data viz tabPanel--- and # END data viz tabPanel, below. Adding text that you will eventually replace with content (e.g. plots, tables, images, longer text) may help to visualize what you’re working towards as well.

+
+
+
ui.R
+
ui <- navbarPage(
   
   title = "LTER Animal Data Explorer",
@@ -2364,6 +2378,7 @@
   
 ) # END navbarPage
+

Add two tabs to the “Explore the Data” page


@@ -2371,6 +2386,10 @@ Give your tabs the following titles: Trout and Penguins.

+
+
+
ui.R
+
ui <- navbarPage(
   
   title = "LTER Animal Data Explorer",
@@ -2408,6 +2427,7 @@
   
 ) # END navbarPage
+

Exercise 2: Add sidebar and main panels to the Penguins tab


@@ -2494,6 +2519,10 @@

Exercise 2: A solution

+
+
+
ui.R
+
ui <- navbarPage(
   
   title = "LTER Animal Data Explorer",
@@ -2565,6 +2594,7 @@
   
 ) # END navbarPage
+

Some important things to remember when building your UI’s layout:


@@ -2603,11 +2633,10 @@
A drawing of the right-side profile of a coastal cutthroat trout.
-
-

+

Image Source: Joseph R. Tomelleri, as found on the Western Native Trout Initiative

-

+

Add packages & wrangle data in global.R


@@ -2617,22 +2646,28 @@ Import those three packages at the top of your global.R file

+
+
+
global.R
+
# LOAD LIBRARIES ----
 library(shiny)
 library(lterdatasampler) 
 library(tidyverse)
 library(shinyWidgets) 
+

Add packages & wrangle data in global.R


-We can also do the bulk of our data wrangling here, rather than in the server (to keep our server code a bit more manageable). If we were reading in a data file (e.g. .csv), we would do that here too. Our new data object clean_trout, will now be available for us to call directly in our server. -

-

-We can easily copy our wrangling code over from our practice script. +We can also do the bulk of our data wrangling here, rather than in the server (to keep our server code a bit more manageable). If we were reading in a data file (e.g. .csv), we would do that here too. Our new data object clean_trout, will now be available for us to call directly in our server (NOTE: we can easily copy our wrangling code over from our practice script).

+
+
+
global.R
+
# LOAD LIBRARIES ----
 library(shiny)
 library(lterdatasampler)
@@ -2658,6 +2693,7 @@
   )) |> 
   drop_na()
+

Add a pickerInput for selecting channel_type to your UI


@@ -2669,6 +2705,10 @@ Reminder: When we we designed our UI layout, we added a sidebarPanel to our Trout tab with the placeholder text "trout plot input(s) go here". Replace that text with the code for your pickerInput:

+
+
+
ui.R
+
# channel type pickerInput ----
 pickerInput(inputId = "channel_type_input", label = "Select channel type(s):",
             choices = unique(clean_trout$channel_type), # alternatively: choices = c("rapid", "cascade" ...)
@@ -2676,10 +2716,10 @@
             selected = c("cascade", "pool"), 
             multiple = TRUE) # END channel type pickerInput
+

Save and run your app – a functional pickerInput should now appear in your UI.

-


A shinyWidgets::pickerInput() is functionally equivalent to shiny::selectInput(), though it allows for greater customization and looks (in my opinion) a bit nicer.

@@ -2695,8 +2735,13 @@ Reminder: When we we designed our UI layout, we added a mainPanel to our Trout tab with the placeholder text "trout plot output goes here". Replace that text with the code for your plotOuput():

+
+
+
ui.R
+
plotOutput(outputId = "trout_scatterplot")
+

Save and run your app – it won’t look different at first glance, but inspecting your app in a browser window (using Chrome, right click > Inspect) will reveal a placeholder box for your plot output to eventually live:

@@ -2713,6 +2758,10 @@
+
+
+
server.R
+
server <- function(input, output) {
   
   # filter trout data ----
@@ -2741,6 +2790,7 @@
   
 } # END server
+
@@ -2765,6 +2815,10 @@ Rather than re-typing your ggplot theme parameters out for every plot in your app, do so once in global.R, and save to an object name. You can then easily add your custom theme as a layer to each of your ggplots. Bonus: If you decide to modify your plot theme, you only have to do so in one place!

+
+
+
global.R
+
# LOAD LIBRARIES ----
 library(shiny)
 library(lterdatasampler)
@@ -2800,6 +2854,7 @@
     legend.position = "bottom",
     panel.border = element_rect(colour = "black", fill = NA, linewidth = 0.7))
+

Run your app and try out your pickerInput widget!


@@ -2807,15 +2862,19 @@ A user navigates to the 'Explore the Data' tab of our app, 'LTER Animal Data Explorer.' There is a scatterplot with Trout Length (mm) on the x-axis, and Trout Weight (g) on the y-axis. Points are colored and shaped by channel type. There is a pickerWidget to the left of the plot with the channel_types 'cascade' and 'pool' already selected. The user clicks other channel types on/off to see how the data points on the plot change.

-

Add a second input that will update the same output

+

Add a second input that will update the same output


You can have more than one input control the same output. Let’s now add a checkboxGroupButtons widget to our UI for selecting forest section (either clear cut forest or old growth forest). Check out the function documentation for more information on how to customize the appearance of your buttons.

-Be sure to add the widget to the same sidebarPanel as our pickerInput (and separate them with a comma, ,!: +Be sure to add the widget to the same sidebarPanel as our pickerInput (and separate them with a comma!:

+
+
+
ui.R
+
# trout plot sidebarPanel ----
 sidebarPanel(
   
@@ -2835,6 +2894,7 @@
                    
             ) # END trout plot sidebarPanel
+

Update your reactive df to also filter based on the new checkboxGroupInput


@@ -2842,6 +2902,10 @@ Return to your server to modify trout_filtered_df – our data frame needs to be updated based on both the pickerInput, which selects for channel_type, and the checkboxGrouptInput, which selects for forest section:

+
+
+
server.R
+
# filter trout data ----
 trout_filtered_df <- reactive({
 
@@ -2867,6 +2931,7 @@
 
  })
+

Run your app and try out your pickerInput & checkboxGrouptInput widgets!


@@ -2884,7 +2949,7 @@
-
+
@@ -3170,7 +3235,7 @@
-
+
@@ -3214,6 +3279,10 @@ For example, I’ve added and formatted my landing page’s text directly in the UI using lots of nested tags – I’ve done this inside the tabPanel titled About this App (Note: I’ve formatted the layout of this page a bit using fluidRow and columns to create some white space around the edges. I’ve also created a faint gray horizontal line, using hr(), beneath which I added a footnote):

+
+
+
ui.R
+
ui <- navbarPage(
   
   title = "LTER Animal Data Explorer",
@@ -3322,6 +3391,7 @@
   
 ) # END navbarPage
+

Instead, use includeMarkdown() to read in text from separate .md files


@@ -3340,6 +3410,10 @@
+
+
+
ui.R
+
ui <- navbarPage(
   
   title = "LTER Animal Data Explorer",
@@ -3446,8 +3520,13 @@
 ) # END navbarPage
+
+
+
+
text/about.md
+
## Welcome to the LTER Animal Data Explorer!
 
 <br>
@@ -3463,20 +3542,24 @@
 Check out the **Explore the Data** page to find interactive data visualizations looking at Cutthroat trout of the [Andrews Forest LTER](https://andrewsforest.oregonstate.edu/) and Adelie, Gentoo & Chinstrap penguins of the [Palmer Station LTER](https://pallter.marine.rutgers.edu/).
+
+
+
+
text/footer/md
+
*This app is maintained by [Samantha Csik](https://samanthacsik.github.io/) and is updated as needed for teaching purposes. Please report any issues [here](https://github.com/samanthacsik/EDS430-shiny-app/issues). Source code can be found on [GitHub](https://github.com/samanthacsik/EDS430-shiny-app).*
+

Run your app one more time to admire your beautiful creation!


-
-An app titled 'LTER Animal Data Explorer'. The user starts on the 'About this App' page, which includes a couple paragraphs of intro text. The user then clicks on the 'Explore the Data' page which has two tabs: Trout and Penguins. On the Trout tab, we see a scatterplot with Trout Length (mm) on the x-axis and Trout Weight (g) on the y-axis. The user first filters data by Channel Type using a drop down list selector widget, then by Forest Section using two buttons that toggle on data from clear cut vs. old growth forest. In the Penguin tab, we see a histogram displaying Flipper Lengths (mm) of three penguin species. The user uses a drop down list selector widget to filter data by Island, then uses a slider widget to adjust the number of histogram bins. -
-

+ +An app titled 'LTER Animal Data Explorer'. The user starts on the 'About this App' page, which includes a couple paragraphs of intro text. The user then clicks on the 'Explore the Data' page which has two tabs: Trout and Penguins. On the Trout tab, we see a scatterplot with Trout Length (mm) on the x-axis and Trout Weight (g) on the y-axis. The user first filters data by Channel Type using a drop down list selector widget, then by Forest Section using two buttons that toggle on data from clear cut vs. old growth forest. In the Penguin tab, we see a histogram displaying Flipper Lengths (mm) of three penguin species. The user uses a drop down list selector widget to filter data by Island, then uses a slider widget to adjust the number of histogram bins.

Again, we have some UX/UI quirks to fix (most notably, blank plots when all widget options are deselected), which we’ll handle soon. But for now, we have a functioning app that we can practice deploying for the first time!

@@ -3708,10 +3791,8 @@

Go to shinyapps.io and login or create an account (if you don’t already have one) – I created my account and login with GitHub. To use shinyapps.io, you first need to link your account with RStudio on your computer. Follow the instructions on shinyapps.io when you first create your account to install the {rsconnect} package and authorize your account:

-
-shinyapps.io displays setup instructions: (1) INSTALL RSCONNECT: The `rsconnect` package can be installed directly from CRAN. To make sure you have the latest version run following code in your R console: `install.packages('rsconnect')`. (2) AUTHORIZE ACCOUNT: The `rsconnect` package must be authorized to your account using a token and secret. To do this, click the copy button below and we'll copy the whole command you need to your clipboard. Just paste it into your console to authorize your account. Once you've entered the command successfully in R, that computer is now authorized to deploy applications to your shinyapps.io account. (3) DEPLOY: Once the `rsconnect` package has been configured, you're ready to deploy your first application. If you haven't written any applications yet, you can also checkout the Getting Started Guide for instruction son how to deploy our demo application. Run the following code in your R console: `library(rsconnect)`, then `rsconnect::deployApp('path/to/your/app')`. -
-

+ +shinyapps.io displays setup instructions: (1) INSTALL RSCONNECT: The `rsconnect` package can be installed directly from CRAN. To make sure you have the latest version run following code in your R console: `install.packages('rsconnect')`. (2) AUTHORIZE ACCOUNT: The `rsconnect` package must be authorized to your account using a token and secret. To do this, click the copy button below and we'll copy the whole command you need to your clipboard. Just paste it into your console to authorize your account. Once you've entered the command successfully in R, that computer is now authorized to deploy applications to your shinyapps.io account. (3) DEPLOY: Once the `rsconnect` package has been configured, you're ready to deploy your first application. If you haven't written any applications yet, you can also checkout the Getting Started Guide for instruction son how to deploy our demo application. Run the following code in your R console: `library(rsconnect)`, then `rsconnect::deployApp('path/to/your/app')`.

Deploy your app to shinyapps.io


@@ -3720,19 +3801,15 @@

Once deployed, a browser will open to your application. The URL will take the form: https://username.shinyapps.io/your_app_directory_name. You should also now see an /rsconnect folder within your app’s directory – this is generated when an application bundle is successfully deployed and contains a DCF file with information on the deployed content (i.e. the name, title, server address, account, URL, and time). This /rsconnect folder should be added and committed into version control (i.e. push it to GitHub!) so that future re-deployments target the same endpoint (i.e. your app’s URL).

-
-Our shiny app, now hosted at the URL https://samanthacsik.shinyapps.io/two-file-app which functions the same as when it was hosted locally. -
-

+ +Our shiny app, now hosted at the URL https://samanthacsik.shinyapps.io/two-file-app which functions the same as when it was hosted locally.

The shinyapps.io dashboard


Your shinyapps.io dashboard provides tons of information about your application metrics, instance (the virtualized server that your app is hosted on) and worker (a special type of R process that an Application Instance runs to service requests to an application) settings, plan management, and more. The free plan (the plan we’re using here today) allows you to deploy five Shiny apps. You are able to archive and/or delete once-deployed apps to make space for new ones.

-
-The shinyapps.io dashboard displaying information about our two-file-app, now hosted at https://samanthacsik.shinyapps.io/two-file-app/. You can select different menu items from the navbar at the top of the page, including Overview, Metrics, URLs, Settings, Users, Logs, Restart, Archive, and Trash. -
-

+ +The shinyapps.io dashboard displaying information about our two-file-app, now hosted at https://samanthacsik.shinyapps.io/two-file-app/. You can select different menu items from the navbar at the top of the page, including Overview, Metrics, URLs, Settings, Users, Logs, Restart, Archive, and Trash.

Check out the shinyapps.io user guide for more information on hosting your apps on shinyapps.io.

@@ -3878,6 +3955,10 @@ Place your validation test(s) at the start of any reactive() or render*() expression that calls input$data. For example, we can add two validation tests inside the reactive that generates our trout_filtered_df – we’ll need two separate validation tests, one for each of our inputs where users can deselect all data.

+
+
+
server.R
+
server <- function(input, output) {
   
   # filter for channel types ----
@@ -3895,6 +3976,7 @@
     })
 }
+

& Exercise 4: Add a validation test for your penguin histogram


@@ -3922,6 +4004,10 @@

Exercise 4: A solution


+
+
+
server.R
+
server <- function(input, output) {
   
   # filter for channel types ----
@@ -3983,6 +4069,7 @@
   
 } # END server
+

Add loading animations to re-rendering outputs


@@ -3999,12 +4086,16 @@


-
# in ui.R
-plotOutput(outputId = "trout_scatterplot") |> 
-  withSpinner(color = "#006792", type = 1)
-
-plotOutput(outputId = "flipperLength_histogram") |> 
-  withSpinner(color = "#4BA4A4", type = 4, size = 2)
+
+
+
ui.R
+
+
plotOutput(outputId = "trout_scatterplot") |> 
+  withSpinner(color = "#006792", type = 1)
+
+plotOutput(outputId = "flipperLength_histogram") |> 
+  withSpinner(color = "#4BA4A4", type = 4, size = 2)
+
@@ -4030,43 +4121,47 @@
-
# in server.R
-# render trout scatterplot ----
-output$trout_scatterplot <- renderPlot({
-
-  ggplot(trout_filtered_df(), aes(x = length_mm, y = weight_g, color = channel_type, shape = channel_type)) +
-      geom_point(alpha = 0.7, size = 5) +
-      scale_color_manual(values = c("cascade" = "#2E2585", "riffle" = "#337538", "isolated pool" = "#DCCD7D",
-                                    "pool" = "#5DA899", "rapid" = "#C16A77", "step (small falls)" = "#9F4A96",
-                                    "side channel" = "#94CBEC")) +
-      scale_shape_manual(values = c("cascade" = 15, "riffle" = 17, "isolated pool" = 19,
-                                    "pool" = 18, "rapid" = 8, "step (small falls)" = 23,
-                                    "side channel" = 25)) +
-      labs(x = "Trout Length (mm)", y = "Trout Weight (g)", color = "Channel Type", shape = "Channel Type") +
-      myCustomTheme
-
- },
-  
-  alt = "A scatterplot of the relationship between cutthroat trout lengths (mm) (x-axis) and weights (g) (y-axis), with data points colored and shaped based on the water channel type from which they were collected. Trout tend to be longer, but weight less in waterways within the old growth forest. Trout tend to be shorter, but weight more in waterways within the clear cut forest."
-  
-) # END render trout scatterplot
+
+
+
server.R
+
+
# render trout scatterplot ----
+output$trout_scatterplot <- renderPlot({
+
+  ggplot(trout_filtered_df(), aes(x = length_mm, y = weight_g, color = channel_type, shape = channel_type)) +
+      geom_point(alpha = 0.7, size = 5) +
+      scale_color_manual(values = c("cascade" = "#2E2585", "riffle" = "#337538", "isolated pool" = "#DCCD7D",
+                                    "pool" = "#5DA899", "rapid" = "#C16A77", "step (small falls)" = "#9F4A96",
+                                    "side channel" = "#94CBEC")) +
+      scale_shape_manual(values = c("cascade" = 15, "riffle" = 17, "isolated pool" = 19,
+                                    "pool" = 18, "rapid" = 8, "step (small falls)" = 23,
+                                    "side channel" = 25)) +
+      labs(x = "Trout Length (mm)", y = "Trout Weight (g)", color = "Channel Type", shape = "Channel Type") +
+      myCustomTheme
+
+ },
+  
+  alt = "A scatterplot of the relationship between cutthroat trout lengths (mm) (x-axis) and weights (g) (y-axis), with data points colored and shaped based on the water channel type from which they were collected. Trout tend to be longer, but weight less in waterways within the old growth forest. Trout tend to be shorter, but weight more in waterways within the clear cut forest."
+  
+) # END render trout scatterplot
+
 
-
-# render flipperLength hisogram ----
-output$flipperLength_histogram <- renderPlot({
-
-  ggplot(na.omit(island_df()), aes(x = flipper_length_mm, fill = species)) +
-    geom_histogram(alpha = 0.6, bins = input$bin_num) +
-    scale_fill_manual(values = c("Adelie" = "#FEA346", "Chinstrap" = "#B251F1", "Gentoo" = "#4BA4A4")) +
-    labs(x = "Flipper length (mm)", y = "Frequency",
-         fill = "Penguin species") +
-    myCustomTheme
-    
- },
-  
-  alt = "A histogram of penguin flipper lengths (mm), with data colored by penguin species. Flipper lengths tend to be smallest on Adélie penguins and largest on Gentoo penguins."
-  
-) # END render flipperLength histogram
+# render flipperLength hisogram ---- +output$flipperLength_histogram <- renderPlot({ + + ggplot(na.omit(island_df()), aes(x = flipper_length_mm, fill = species)) + + geom_histogram(alpha = 0.6, bins = input$bin_num) + + scale_fill_manual(values = c("Adelie" = "#FEA346", "Chinstrap" = "#B251F1", "Gentoo" = "#4BA4A4")) + + labs(x = "Flipper length (mm)", y = "Frequency", + fill = "Penguin species") + + myCustomTheme + + }, + + alt = "A histogram of penguin flipper lengths (mm), with data colored by penguin species. Flipper lengths tend to be smallest on Adélie penguins and largest on Gentoo penguins." + +) # END render flipperLength histogram
+
@@ -4115,7 +4210,7 @@
-
+
@@ -4392,6 +4487,10 @@ NOTE: In this example exercise, I’ve removed all rows with missing values (i.e. NaNs in the Depth column & NAs in the BedTemperature column) before calculating averages. This is NOT good practice – exploring and thinking critically about missing data is an important part of data analysis, and in a real-life scenario, you should consider the most appropriate method for handling them.

+
+
+
scratch/data_processing_app3_shinydashboard.R
+
#....................SETUP & DATA PROCESSING.....................
 
 # load packages ----
@@ -4422,6 +4521,7 @@
 # save processed data to your app's data directory ----
 write_csv(unique_lakes, "shinydashboard/data/lake_data_processed.csv")
+

A note on file types


@@ -4449,13 +4549,17 @@
-
- +
+
+
+
+
scratch/practice_script_app3_shinydashboard.R
+
#....................SETUP & DATA PROCESSING.....................
 
 # omitted for brevity (see slide 112 for code)
@@ -4484,6 +4588,7 @@
 
+

Practice filtering leaflet observations


@@ -4499,13 +4604,17 @@
-
- +
+
+
+
+
scratch/practice_script_app3_shinydashboard.R
+
#....................SETUP & DATA PROCESSING.....................
 
 # omitted for brevity (see slide 112 for code)
@@ -4542,6 +4651,7 @@
 
+

Sketch out our dashboard UI


@@ -4570,6 +4680,10 @@ Next, we’ll build our dashboardSidebar(). Add a sidebarMenu() that contains two menuItems. Be sure to provide each menuItem() with text as you’d like it to appear in your app (for me, that’s Welcome and Dashboard), and a tabName which will be used to place dashboardBody() content in the appropriate menuItem(). Optionally, you can provide an icon. By default, icon() uses icons from FontAwesome.

+
+
+
ui.R
+
#........................dashboardHeader.........................
 header <- dashboardHeader(
   
@@ -4598,6 +4712,7 @@
 #..................combine all in dashboardPage..................
 dashboardPage(header, sidebar, body)
+

Add tabItems to your dashboardBody


@@ -4605,6 +4720,10 @@ Next, we’ll create tabItems in our dashboardBody – we’ll make a tabItem (singular) for each menuItem in our dashboardSidebar. In order to match a menuItem and a tabItem, ensure that they have matching a tabName (e.g. any content added to the dashboard tabItem will appear under the dashboard menuItem).

+
+
+
ui.R
+
#........................dashboardHeader.........................
 header <- dashboardHeader(
   
@@ -4654,6 +4773,7 @@
 #..................combine all in dashboardPage..................
 dashboardPage(header, sidebar, body)
+

Add boxes to contain UI content (part 1)


@@ -4661,6 +4781,10 @@ Boxes are the primary building blocks of shinydashboards and can contain almost any Shiny UI element (e.g. text, inputs, outputs). Start by adding two side-by-side boxes to our dashboard tab inside a fluidRow(). Together, their widths will add up to 12 (the total width of a browser page). These boxes will eventually contain our sliderInputs and our leafletOutput.

+
+
+
ui.R
+
#........................dashboardHeader.........................
 header <- dashboardHeader(
   
@@ -4727,6 +4851,7 @@
 #..................combine all in dashboardPage..................
 dashboardPage(header, sidebar, body)
+

Add boxes to contain UI content (part 2)


@@ -4734,6 +4859,10 @@ Lastly, add boxes to our welcome tab We’ll use columns to place one box on the left-hand side of our page, and two stacked boxes on the right-hand side. Each column will take up half the page (Note: For column-based layouts, use NULL for the box width, as the width is set by the column that contains the box). We can create two fluidRows within the right-hand column to stack two boxes vertically.

+
+
+
ui.R
+
#........................dashboardHeader.........................
 header <- dashboardHeader(
   
@@ -4839,6 +4968,7 @@
 #..................combine all in dashboardPage..................
 dashboardPage(header, sidebar, body)
+

Read data into global.R & add necessary packages


@@ -4846,6 +4976,10 @@ Remember to load your pre-processed data, which should live in the /data folder within your app’s directory.

+
+
+
global.R
+
# LOAD LIBRARIES ----
 library(shiny)
 library(shinydashboard)
@@ -4856,6 +4990,7 @@
 # READ IN DATA ----
 lake_data <- read_csv("data/lake_data_processed.csv")
+

Add a sliderInput & leafletOutput to the UI


@@ -4863,6 +4998,10 @@ Start by adding just one sliderInput (for selecting a range of lake Elevations) to the left-hand box in the dashboard tab. Then, add a leafletOutput to create a placeholder space for our map, along with a Spinner animation (from the shinycssloaders package). While we’re here, we can also add titles to each box.

+
+
+
ui.R
+
#........................dashboardHeader.........................
 header <- dashboardHeader(
   
@@ -4976,6 +5115,7 @@
 #..................combine all in dashboardPage..................
 dashboardPage(header, sidebar, body)
+

Assemble inputs & outputs in server.R


@@ -4983,6 +5123,10 @@ Remember to reference your practice data viz script and to follow our three steps for creating reactive outputs. And don’t forget to add () following each reactive data frame called in your leaflet map!

+
+
+
server.R
+
server <- function(input, output) {
   
   # filter lake data ----
@@ -5021,6 +5165,7 @@
   
 }
+

Run your app & test out your first widget


@@ -5237,7 +5382,7 @@
-
+
@@ -5266,23 +5411,38 @@
+
+
+
text/intro.md
+
The [Fish Creek Watershed Observatory (FCWO)](http://www.fishcreekwatershed.org/) is a focal watershed within the [National Petroleum Reserve in Alaska (NPR-A)](https://www.blm.gov/programs/energy-and-minerals/oil-and-gas/about/alaska/NPR-A). Targeted lake and stream monitoring within the watershed provide site-specific data prior to and after the establishment of new petroleum development, as well as insight into dynamics related to climate change and variability. Eleven lakes of interest (Harry Potter, Hipbone, Iceshove, L9817, L9819, L9820, Little Alaska, Lower Snowman, M9925, Middle Snowman, and Serenity) are featured in this dashboard.
+
+
+
+
text/citation.md
+
Data presented in this dashboard were collected as part of the [Fish Creek Watershed Observatory](http://www.fishcreekwatershed.org/) are archived and publicly accessible on the NSF [Arctic Data Center](https://arcticdata.io/). **Citation:** 
 
 *Christopher Arp, Matthew Whitman, Katie Drew, and Allen Bondurant. 2022. Water depth, surface elevation, and water temperature of lakes in the Fish Creek Watershed in northern Alaska, USA, 2011-2022. Arctic Data Center [doi:10.18739/A2JH3D41P](https://arcticdata.io/catalog/view/doi%3A10.18739%2FA2JH3D41P).*
+
+
+
+
text/disclaimer.md
+
This app is build for demonstration/teaching purposes only and is not paid for or endorsed by the Fish Creek Watershed Observatory or affiliates in any way. The data as presented here are not intended for publication nor scientific interpretation. 
+


Tips: @@ -5455,6 +5615,10 @@ Next, use the img tag to add your image. Supply a file path, relative to your /www directory, using the src argument, and alt text using the alt argument.

+
+
+
ui.R
+
#........................dashboardHeader.........................
 header <- dashboardHeader(
   
@@ -5581,6 +5745,7 @@
 #..................combine all in dashboardPage..................
 dashboardPage(header, sidebar, body)
+

Unfortunately, our image doesn’t look so great as-is…


@@ -5597,6 +5762,10 @@ I’ve also added a caption below our image that links to the image source, and used in-line CSS to center my text within the box.

+
+
+
ui.R
+
#........................dashboardHeader.........................
 header <- dashboardHeader(
   
@@ -5726,6 +5895,7 @@
 #..................combine all in dashboardPage..................
 dashboardPage(header, sidebar, body)
+

Check out your finished dashboard!


@@ -6049,6 +6219,10 @@


+
+
+
~/one-file-app/ui.R
+
ui <- fluidPage(
   
   theme = bslib::bs_theme(bootswatch = "solar")
@@ -6057,6 +6231,7 @@
   
 )
+

Check out the complete source code for App #1 here (NOTE: applied themes are commented out).

@@ -6078,6 +6253,10 @@


+
+
+
~/one-file-app/ui.R
+
ui <- fluidPage(
   
   theme = bslib::bs_theme(
@@ -6090,6 +6269,7 @@
   
 )
+

Check out the complete source code for App #1 here (NOTE: applied themes are commented out).

@@ -6114,6 +6294,10 @@


+
+
+
~/one-file-app/ui.R
+
thematic::thematic_shiny()
 
 ui <- fluidPage(
@@ -6128,6 +6312,7 @@
   
 )
+

Check out the complete source code for App #1 here (NOTE: applied themes are commented out).

@@ -6207,42 +6392,46 @@

Creating a fresh theme for two-file-app


-In this example, we update the colors of our app’s body, navbar, and tabPanels using the appropriate fresh variables for shiny apps. We specify a file path, two-file-app/www (you’ll need to create the /www directory, since we don’t have one yet), where our stylesheet (e.g. shiny_fresh_themes.css, as shown here) file will be saved to. +In this example, we update the colors of our app’s body, navbar, and tabPanels using the appropriate fresh variables for shiny apps. We specify a file path, two-file-app/www (you’ll need to create the /www directory, since we don’t have one yet), where our stylesheet (e.g. shiny-fresh-theme.css, as shown here) file will be saved to.

Of course, these color combos are not recommended, but chosen purely for demonstration purposes .

-
# in a separate script: ~/R/create_fresh_theme_shiny.R
-# load library ----
-library(fresh)
-
-# create theme -----
-create_theme(
-  
-  # you can supply a bootstrap theme to begin with
-  theme = "default",
-
-  # global styling
-  bs_vars_global(
-    body_bg = "#D2D0CA", # beige
-    text_color = "#F23ACB", # hot pink
-    link_color = "#0E4BE3" # royal blue
-  ),
-
-  bs_vars_navbar(
-    default_bg = "#13CC13", # lime green
-    default_color = "#66656C" # gray
-  ),
-
-  # tabPanels
-  bs_vars_tabs(
-    border_color = "#F90909" # red
-  ),
-
-  # generate css file
-  output_file = "two-file-app/www/shiny_fresh_theme.css"
-)
+
+
+
~/R/create-fresh-theme-shiny.R
+
+
# load library ----
+library(fresh)
+
+# create theme -----
+create_theme(
+  
+  # you can supply a bootstrap theme to begin with
+  theme = "default",
+
+  # global styling
+  bs_vars_global(
+    body_bg = "#D2D0CA", # beige
+    text_color = "#F23ACB", # hot pink
+    link_color = "#0E4BE3" # royal blue
+  ),
+
+  bs_vars_navbar(
+    default_bg = "#13CC13", # lime green
+    default_color = "#66656C" # gray
+  ),
+
+  # tabPanels
+  bs_vars_tabs(
+    border_color = "#F90909" # red
+  ),
+
+  # generate css file
+  output_file = "two-file-app/www/shiny-fresh-theme.css"
+)
+

Apply a fresh theme to our app

@@ -6255,6 +6444,10 @@


+
+
+
~/two-file-app/ui.R
+
# navbar page ----
 ui <- navbarPage(
 
@@ -6264,6 +6457,7 @@
   
 ) # END navbarPage
+

Check out the complete source code for App #2 here (NOTE: applied themes are commented out).

@@ -6279,38 +6473,42 @@

Creating a fresh theme for our shinydashboard


-In this example, we update the colors of our app’s header, body, and sidebar using the appropriate fresh variables for shiny dashboards. We specify a file path, shinydashboard/www where our stylesheet (e.g. shinydashboard_fresh_themes.css, as shown here) file will be saved to. Again, these color combos are not recommended, but chosen purely for demonstration purposes. -

-
-
# in a separate script: ~/R/create_fresh_theme_shinydashboard.R
-# load libraries ----
-library(fresh)
-
-# create theme ----
-create_theme(
-  
-  # change "light-blue"/"primary" color
-  adminlte_color(
-    light_blue = "#150B5A" # dark blue
-  ),
-  
-  # dashboardBody styling (includes boxes)
-  adminlte_global(
-    content_bg = "#E7B5B5" # blush pink
-  ),
-  
-  # dashboardSidebar styling
-  adminlte_sidebar(
-    width = "400px", 
-    dark_bg = "#57F8F3", # light blue
-    dark_hover_bg = "#BF21E6", # magenta
-    dark_color = "#F90000" # red
-  ),
-  
-  # generate css file
-  output_file = "shinydashboard/www/shinydashboard_fresh_theme.css"
-  
-)
+In this example, we update the colors of our app’s header, body, and sidebar using the appropriate fresh variables for shiny dashboards. We specify a file path, shinydashboard/www where our stylesheet (e.g. shinydashboard-fresh-theme.css, as shown here) file will be saved to. Again, these color combos are not recommended, but chosen purely for demonstration purposes. +

+
+
+
+
~/R/create-fresh-theme-shinydashboard.R
+
+
# load libraries ----
+library(fresh)
+
+# create theme ----
+create_theme(
+  
+  # change "light-blue"/"primary" color
+  adminlte_color(
+    light_blue = "#150B5A" # dark blue
+  ),
+  
+  # dashboardBody styling (includes boxes)
+  adminlte_global(
+    content_bg = "#E7B5B5" # blush pink
+  ),
+  
+  # dashboardSidebar styling
+  adminlte_sidebar(
+    width = "400px", 
+    dark_bg = "#57F8F3", # light blue
+    dark_hover_bg = "#BF21E6", # magenta
+    dark_color = "#F90000" # red
+  ),
+  
+  # generate css file
+  output_file = "shinydashboard/www/shinydashboard-fresh-theme.css"
+  
+)
+

Apply a fresh theme to our dashboard

@@ -6323,6 +6521,10 @@


+
+
+
~/shinydashboard/ui.R
+
body <- dashboardBody(
   
   # set theme
@@ -6332,6 +6534,7 @@
   
 )
+

Check out the complete source code for the shinydashboard here (NOTE: applied themes are commented out).

@@ -6358,7 +6561,6 @@

You can write your own stylesheets using CSS and Sass to fully customize your apps, from background colors, to font styles, to size and shape of elements, and more. Unlike bslib and fresh, these are languages, meaning they can be a bit more challenging to get started with (but the payoff it big!).

-


@@ -6463,7 +6665,7 @@

-

+

There are a variety of CSS selectors – check out some of the basics that will take you far in styling your apps, starting on this slide of the Customizing Quarto Websites workshop.

@@ -6480,7 +6682,7 @@
-

+

Add styling directly to tags. It’s best not to use a lot of these! It’s easy to lose track of your “in-line” styling in large projects, you can’t reuse rules easily, it’s hard to keep styling consistent, and it’s difficult to implement large stylistic changes.

@@ -6525,7 +6727,7 @@
-

+

Add CSS rules to your app’s header (tags$head). This is a little bit better than option 1 since it allows for the reuse of rules, however, styles can’t be cached (i.e. saved for future usage when you reopen your app). Note: explore Google fonts here and check out this slide for instructions on selecting a font.

@@ -6578,7 +6780,7 @@
-

+

Build a stylesheet (a .css file) inside your app’s www/ directory and apply your styles to your app’s header (for shinydashboards, include your header inside dashboardBody(). This is the most ideal approach – it allows for style reuse, caching, and keeps styling contained in one spot. Tip: use touch styles.css in the terminal to create a new .css file.

@@ -6972,14 +7174,18 @@

-Next, create your Sass file within two-file-app/www/. Then, using your terminal, cd into ~/two-file-app/www and use the touch command to create a .scss file (I’m calling mine my_sass_styles.scss). +Next, create your Sass file within two-file-app/www/. Then, using your terminal, cd into ~/two-file-app/www and use the touch command to create a .scss file (I’m calling mine my-sass-styles.scss).

-Add Sass variables and CSS rules to my_sass_styles.scss: +Add Sass variables and CSS rules to my-sass-styles.scss:

+
+
+
~/two-file-app/www/my-sass-styles.scss
+
// import 2 fonts
 @import url('https://fonts.googleapis.com/css2?family=Karma&family=Prompt:wght@200&display=swap');
 
@@ -7030,6 +7236,7 @@
 }
+

Then, compile Sass to CSS


@@ -7040,14 +7247,14 @@ We also need to apply our styles to our app by linking this newly-generated .css file in our app’s header.

-Note: After running your app, you should see a my_sass_styles.css file appear in www/ – it should look quite familiar, except all of our Sass variables have been converted to CSS. +Note: After running your app, you should see a my-sass-styles.css file appear in www/ – it should look quite familiar, except all of our Sass variables have been converted to CSS.

-

What is web accessibility and why is it important?

+

What is web accessibility?


-

+

From the World Wide Web Consortium (W3C)’s Introduction to Web Accessibility:

-Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them. More specifically, people can: +Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them. More specifically, people can:

perceive, understand, navigate, and interact with the Web @@ -7252,10 +7459,10 @@ contribute to the Web

-Web accessibility encompasses all disabilities that affect access to the Web, including: auditory, cognitive, neurological, physical, speech, and visual + Web accessibility encompasses all disabilities that affect access to the Web, including: auditory, cognitive, neurological, physical, speech, and visual

-Web accessibility also benefits people without disabilities, for example: + Web accessibility also benefits people without disabilities, for example:

people using mobile phones, smart watches, smart TVs, and other devices with small screens, different input modes, etc. @@ -7273,11 +7480,11 @@ people using a slow Internet connection, or who have limited or expensive bandwidth

-

+

Check out the A11Y Project for lots of great tutorials and information about web accessibility.

-

Small changes can lead to tangible increases in functionality for all users

+

Small changes can lead to tangible increases in functionality for all users


Ensuring that your shiny apps are accessible can feel overwhelming – but considering even a few small changes can have a large impact on user experience. @@ -7938,8 +8145,8 @@

5. Use your <- and -> arrow keys (or A gray, left-facing play button and A gray, right-facing play button) to move forward and backward through your app’s reactive life cycle

-



-

+


+

Read about the components of the status bar and the meaning of different reactive states in the reactlog vignette.

@@ -7951,10 +8158,8 @@

Note: I’ve left the scatter plot on Tab 2 (and it’s related UI elements) commented out (as we practiced in the earlier few slides) for this demo – the reactlog package has many features that allow you to explore reactive dependencies across your whole app, but it can get complicated quickly. For demo purposes, we’re going to work with this “smaller” version of our app, which contains just the problematic code.

-
- -
-

+ +

Interpreting reactlog (used with our correctly-functioning app)


@@ -8003,10 +8208,10 @@

So what’s the issue with our app?


-

+

Evidence from our diagnostic messages and reactlog suggests that we should make sure that our UI and server are actually able to communicate about our desired text output. After careful inspection of our textOutput() and renderText() code, we find that a spelling error is to blame:

-

+

Our outputId in the UI is set to penguin_text:

@@ -8019,7 +8224,7 @@ )
-

+

But we call penguins_text when rendering our output in the server:

@@ -8035,7 +8240,7 @@ }) }
-

+

By updating our outputId to match in both the UI and the server, we fix our app.

@@ -8082,6 +8287,7 @@
Why test our Shiny apps?
+

It’s almost inevitable that apps will break – there are lots of reasons why this happens, but to name a few:

@@ -8106,7 +8312,7 @@

-

Enter the {shinytest2} package

+

Enter the {shinytest2} package


The {shinytest2} package is a useful tool for conducting regression testing on shiny apps – or in other words, testing existing app behavior for consistency over time. @@ -8157,9 +8363,13 @@ This small app accepts a text input for users to type their name. When the “Greet” button is pressed, the app returns a short greeting message that says, “Hello name!

-To get started, create a subdirectory called /testing_app, add a file named app.R, and drop this code in your file. Take a moment to try out the app. +To get started, create a subdirectory called ~/testing_app, add a file named app.R, and drop this code in your file. Take a moment to try out the app.

+
+
+
~/testing_app/app.R
+
library(shiny)
 
 ui <- fluidPage(
@@ -8182,6 +8392,7 @@
 
 shinyApp(ui, server)
+

Testing using shinytest2


@@ -8363,7 +8574,7 @@ successfully turn a piece of server logic into a function

-

+

Why write functions


@@ -8399,7 +8610,7 @@

Create a small app for function practice


-Create a new subdirectory called functions-app/ and add your ui.R, server.R, and global.R files with the following code. Run your app to see how it functions. +Create a new subdirectory called ~/functions-app and add your ui.R, server.R, and global.R files with the following code. Run your app to see how it functions.

    @@ -8416,6 +8627,10 @@
+
+
+
~/functions-app/ui.R
+
ui <- fluidPage(
   
   tags$h1("Demoing Functions"),
@@ -8459,8 +8674,13 @@
 ) # END fluidPage
+
+
+
+
~/functions-app/server.R
+
server <- function(input, output) {
   
   
@@ -8512,8 +8732,13 @@
 } # END server
+
+
+
+
~/functions-app/global.R
+
# load packages ----
 library(shiny)
 library(shinyWidgets)
@@ -8523,6 +8748,7 @@
 
+

Identify code duplication in ui.R


@@ -8531,6 +8757,10 @@

+
+
+
~/functions-app/ui.R
+
ui <- fluidPage(
   
   tags$h1("Demoing Functions"),
@@ -8574,20 +8804,21 @@
 ) # END fluidPage
+

-

Write a function for adding a pickerInput to select for penguin species

+

Write a function for adding a pickerInput to select for penguin species


This app includes two pickerInputs, both of which allow users to select which penguin species to display data for. The only difference between both pickerInputs is the inputId. Let’s write a function for our penguin species pickerInput that we can use in place of these two, rather long, chunks of code.

-

+

First, create an /R folder inside your functions-app directory. Then, add a new script to this folder. I’m calling mine penguinSpp_pickerInput.R.

-

+

Since the only difference between our original two pickerInputs are their inputIds, we can write a function that takes inputId as an argument (Recall that inputIds must be unique within an app, so it makes sense that both of our pickerInputs have different inputIds).

-

+

Once written, source() your function script into global.R (if necessary) to make your function available for use in your app.

@@ -8598,6 +8829,10 @@
+
+
+
~/functions-app/R/penguinSpp_pickerInput.R
+
penguinSpp_pickerInput <- function(inputId) {
   pickerInput(inputId = inputId, label = "Select a species:",
               choices = c("Adelie", "Gentoo", "Chinstrap"),
@@ -8607,8 +8842,13 @@
 }
+
+
+
+
~/functions-app/global.R
+
# load packages ----
 library(shiny)
 library(shinyWidgets)
@@ -8622,6 +8862,7 @@
 
+

Apply your function in ui.R


@@ -8629,6 +8870,10 @@ Finally, replace your original UI code for building both pickerInputs with our penguinSpp_pickerInput() function, save, and run your app. It should look exactly the same as before!

+
+
+
~/functions-app/ui.R
+
ui <- fluidPage(
   
   tags$h1("Demoing Functions"),
@@ -8663,6 +8908,7 @@
   
 ) # END fluidPage
+

We reduced code redundancy and increased readability!


@@ -8670,13 +8916,17 @@ By turning our pickerInput code into a function, we not only reduced ten lines of UI code into two, but we also made our UI code a bit easier to read – our function, penguinSpp_pickerInput() tells a reader/collaborator/future you exactly what that line of code is meant to do, which is create a pickerInput that allows users to select penguin species. Even without code comments or additional context, one may deduce what that line of code does.

-

Turn reactives & rendered outputs into functions

+

Turn reactives & rendered outputs into functions


Next, let’s see where we can streamline our server code using functions. We have two discrete sections of code – (1) a reactive data frame and scatterplot output and (2) a reactive data frame and histogram output.

-
server <- function(input, output) {
+
+
+
~/functions-app/server.R
+
+
server <- function(input, output) {
   
   # filter penguin species (scatterplot) ----
   filtered_spp_scatterplot <- reactive ({
@@ -8723,45 +8973,54 @@
   
 } # END server
+

Create a function to builds our scatterplot


-

-First, create a new file in ~/function-app/R and name it build_penguin_histogram.R (or a name that is succinct/clear – I’m going to name my function similarly). +

+First, create a new file in ~/function-app/R and name it build-penguin-scatterplot.R (or a name that is succinct/clear – I’m going to name my function similarly).

-

-The goal of my function is to filter the penguins data based on the user input and render our ggplot scatterplot. To start, I’m going to cut/paste both the code to generate the reactive filtered_spp_histogram data frame and the renderPlot() code from server.R into our build_penguin_histogram() function. +

+The goal of my function is to filter the penguins data based on the user input and render our ggplot scatterplot. To start, I’m going to cut/paste both the code to generate the reactive filtered_spp_scatterplot data frame and the renderPlot() code from server.R into our build_penguin_scatterplot() function.

-

+

Important: In isolation, our function does not know about the user input (input is not in our global environment, it’s only known within the server() function). Therefore, we must pass input as an argument to our function.

-

-Note that in R, functions return the last executed line – when we run build_penguin_histogram() in our server, it will return the object created by renderPlot(). +

+Note that in R, functions return the last executed line – when we run build_penguin_scatterplot() in our server, it will return the object created by renderPlot().

-
build_penguin_histogram <- function(input) {
+
+
+
~/functions-app/R/build-penguin-scatterplot.R
+
+
build_penguin_scatterplot <- function(input) {
   
-  # filter penguin spp ----
-  filtered_spp_histogram <- reactive ({
-    
+  # filter penguin species (scatterplot) ----
+  filtered_spp_scatterplot <- reactive ({
+
     penguins |>
-      filter(species %in% input$penguin_species_histogram_input)
-    
+      filter(species %in% input$penguin_species_scatterplot_input)
+
   })
   
-  # render histogram ----
-  renderPlot({
-   
-    ggplot(na.omit(filtered_spp_histogram()), 
-           aes(x = flipper_length_mm, fill = species)) +
-      geom_histogram() +
-      scale_fill_manual(values = c("Adelie" = "#FEA346", "Chinstrap" = "#B251F1", "Gentoo" = "#4BA4A4")) +
-      labs(x = "Flipper length (mm)", y = "Frequency",
-           fill = "Penguin species")
-    
-  })
-  
-}
+ # render the scatterplot output ---- + output$penguin_scatterplot <- renderPlot({ + + ggplot(na.omit(filtered_spp_scatterplot()), + aes(x = bill_length_mm, y = bill_depth_mm, + color = species, shape = species)) + + geom_point() + + geom_smooth(method = "lm", se = FALSE, aes(color = species)) + + scale_color_manual(values = c("Adelie" = "#FEA346", "Chinstrap" = "#B251F1", "Gentoo" = "#4BA4A4")) + + scale_shape_manual(values = c("Adelie" = 19, "Chinstrap" = 17, "Gentoo" = 15)) + + labs(x = "Flipper length (mm)", y = "Bill length (mm)", + color = "Penguin species", shape = "Penguin species") + + }) + +}
+

Now use your function inside the server

@@ -8770,6 +9029,10 @@ Remember, the output of build_penguin_scatterplot() is renderPlot(), which is used to build our reactive scatterplot. Following our rules for creating reactivity, we need to save our function’s output to output$penguin_scatterplot. In doing so, we reduced 23 lines of code to 1 inside our server function.

+
+
+
~/functions-app/server.R
+
server <- function(input, output) {
   
   # filter data & create penguin scatterplot ----
@@ -8798,6 +9061,7 @@
 
 } # END server
+

Build a function to create our histogram


@@ -8806,12 +9070,16 @@

+
+
+
~/functions-app/R/build-penguin-histogram.R
+
build_penguin_histogram <- function(input) {
   
   # filter penguin spp ----
@@ -8837,8 +9105,13 @@
 }
+
+
+
+
~/functions-app/server.R
+
server <- function(input, output) {
   
   # filter data & create penguin scatterplot ----
@@ -8852,6 +9125,7 @@
 
+

diff --git a/sections/11-accessibility.qmd b/sections/11-accessibility.qmd index 6032d2b..a1ced58 100644 --- a/sections/11-accessibility.qmd +++ b/sections/11-accessibility.qmd @@ -35,32 +35,32 @@ format: revealjs ## {#what-is-accessibility data-menu-title="What is web accessibility?"} -[{{< fa universal-access title="the symbol for universal access - a person standing with the arms widespread inside a circle" >}} What is web accessibility and why is it important?]{.slide-title} +[{{< fa universal-access title="the symbol for universal access - a person standing with the arms widespread inside a circle" >}} What is web accessibility?]{.slide-title}


-

From the [World Wide Web Consortium (W3C)](https://www.w3.org/)'s [Introduction to Web Accessibility](https://www.w3.org/WAI/fundamentals/accessibility-intro/):

+

From the [World Wide Web Consortium (W3C)](https://www.w3.org/)'s [Introduction to Web Accessibility](https://www.w3.org/WAI/fundamentals/accessibility-intro/):

-
-

Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them. More specifically, people can:

+::: {.quote-text-bg} +

**Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them.** More specifically, people can:

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} perceive, understand, navigate, and interact with the Web

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} contribute to the Web

-

Web accessibility encompasses all disabilities that affect access to the Web, including: auditory, cognitive, neurological, physical, speech, and visual

-

Web accessibility also benefits people without disabilities, for example:

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Web accessibility encompasses all disabilities that affect access to the Web, including: auditory, cognitive, neurological, physical, speech, and visual

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Web accessibility also benefits people without disabilities, for example:

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people using mobile phones, smart watches, smart TVs, and other devices with small screens, different input modes, etc.

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} older people with changing abilities due to ageing

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people with “temporary disabilities” such as a broken arm or lost glasses

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people with “situational limitations” such as in bright sunlight or in an environment where they cannot listen to audio

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} people using a slow Internet connection, or who have limited or expensive bandwidth

-
+::: -

Check out the [A11Y Project](https://www.a11yproject.com/) for lots of great tutorials and information about web accessibility.

+

Check out the [A11Y Project](https://www.a11yproject.com/) for lots of great tutorials and information about web accessibility.

--- ## {#small-steps data-menu-title="Small steps help!"} -[Small changes can lead to tangible increases in functionality for all users]{.slide-title} +[Small changes can lead to tangible increases in functionality for all users]{.slide-title3}
diff --git a/sections/12-debugging.qmd b/sections/12-debugging.qmd index b473044..ff4d86a 100644 --- a/sections/12-debugging.qmd +++ b/sections/12-debugging.qmd @@ -478,10 +478,9 @@ shinyApp(ui = ui, server = server)

**4.** Launch reactlog by running `shiny::reactlogShow()` in your console (or use the keyboard shortcut `cmd`/`ctrl` + `F3`)

**5.** Use your `<-` and `->` arrow keys (or A gray, left-facing play button and A gray, right-facing play button) to move forward and backward through your app's reactive life cycle

-

-

Read about the components of the [status bar](https://rstudio.github.io/reactlog/articles/reactlog.html#status-bar) and the meaning of different [reactive states](https://rstudio.github.io/reactlog/articles/reactlog.html#reactive-states) in the `reactlog` vignette.

+

Read about the components of the [status bar](https://rstudio.github.io/reactlog/articles/reactlog.html#status-bar) and the meaning of different [reactive states](https://rstudio.github.io/reactlog/articles/reactlog.html#reactive-states) in the `reactlog` vignette.

--- @@ -495,7 +494,13 @@ shinyApp(ui = ui, server = server)

**Note:** I've left the scatter plot on Tab 2 (and it's related UI elements) commented out (as we practiced in the earlier few slides) for this demo -- the `{reactlog}` package has many features that allow you to explore reactive dependencies across your whole app, but it can get complicated quickly. For demo purposes, we're going to work with this "smaller" version of our app, which contains just the problematic code.

-
+```{r} +#| eval: true +#| echo: false +#| fig-align: "center" +#| out-width: "80%" +knitr::include_graphics("images/reactlog-working.gif") +``` --- @@ -556,9 +561,9 @@ shinyApp(ui = ui, server = server)
-

Evidence from our diagnostic messages *and* `reactlog` suggests that we should make sure that our UI and server are actually able to communicate about our desired text output. After careful inspection of our `textOutput()` and `renderText()` code, we find that a spelling error is to blame:

+

Evidence from our diagnostic messages *and* `reactlog` suggests that we should make sure that our UI and server are actually able to communicate about our desired text output. After careful inspection of our `textOutput()` and `renderText()` code, we find that a spelling error is to blame:

-

Our `outputId` in the **UI** is set to `penguin_text`:

+

Our `outputId` in the **UI** is set to `penguin_text`:

```{r} #| eval: false @@ -574,7 +579,7 @@ ui <- fluidPage( ) ``` -

But we call `penguins_text` when rendering our output in the **server**:

+

But we call `penguins_text` when rendering our output in the **server**:

```{r} #| eval: false @@ -593,4 +598,4 @@ server <- function(input, output){ } ``` -

By updating our `outputId` to match in both the UI and the server, we fix our app.

+

By updating our `outputId` to match in both the UI and the server, we fix our app.

diff --git a/sections/13-testing.qmd b/sections/13-testing.qmd index 9894bdb..2f8b485 100644 --- a/sections/13-testing.qmd +++ b/sections/13-testing.qmd @@ -45,6 +45,8 @@ format: revealjs
Why test our Shiny apps?
+
+

It's almost inevitable that apps will break -- there are lots of reasons why this happens, but to name a few:

. . . @@ -67,7 +69,7 @@ format: revealjs ## {#shinytest2 data-menu-title="{shinytest2}"} -[Enter the [`{shinytest2}` package](https://rstudio.github.io/shinytest2/articles/shinytest2.html)]{.slide-title} +[Enter the [`{shinytest2}` package](https://rstudio.github.io/shinytest2/articles/shinytest2.html)]{.slide-title3}
@@ -125,9 +127,9 @@ format: revealjs

This small app accepts a text input for users to type their name. When the "Greet" button is pressed, the app returns a short greeting message that says, "Hello *name*!

-

To get started, create a subdirectory called `/testing_app`, add a file named `app.R`, and drop this code in your file. Take a moment to try out the app.

+

To get started, create a subdirectory called `~/testing_app`, add a file named `app.R`, and drop this code in your file. Take a moment to try out the app.

-```{r} +```{r filename="~/testing_app/app.R"} #| eval: false #| echo: true library(shiny) diff --git a/sections/14-functions.qmd b/sections/14-functions.qmd index 6dcf9f9..771df81 100644 --- a/sections/14-functions.qmd +++ b/sections/14-functions.qmd @@ -38,7 +38,7 @@ format: revealjs --- -## {#why-functions data-menu-title="Why write functions"} +## {#why-functions data-menu-title="Why write functions?"} [Why write functions]{.slide-title} @@ -68,7 +68,7 @@ format: revealjs
-

Create a new subdirectory called `functions-app/` and add your `ui.R`, `server.R`, and `global.R` files with the following code. Run your app to see how it functions.

+

Create a new subdirectory called `~/functions-app` and add your `ui.R`, `server.R`, and `global.R` files with the following code. Run your app to see how it functions.

::: {.panel-tabset} @@ -77,7 +77,7 @@ format: revealjs
A shiny app with two tabs. The first tab contains a pickerInput that allows the user to select which penguin species they want to visualize data for, along with a scatterplot. The second tab also contains a pickerInput with the exact same penguin species options, along with a histogram.
## `ui.R` -```{r} +```{r filename="~/functions-app/ui.R"} #| eval: false #| echo: true ui <- fluidPage( @@ -125,7 +125,7 @@ ui <- fluidPage( ``` ## `server.R` -```{r} +```{r filename="~/functions-app/server.R"} #| eval: false #| echo: true server <- function(input, output) { @@ -180,7 +180,7 @@ server <- function(input, output) { ``` ## `global.R` -```{r} +```{r filename="~/functions-app/global.R"} #| eval: false #| echo: true # load packages ---- @@ -204,7 +204,7 @@ library(tidyverse) . . . -```{r} +```{r filename="~/functions-app/ui.R"} #| eval: false #| echo: true #| code-line-numbers: "11-16|27-32" @@ -254,7 +254,7 @@ ui <- fluidPage( ## {#write-ui-function data-menu-title="Write a UI function"} -[Write a function for adding a `pickerInput` to select for penguin species]{.slide-title2} +[Write a function for adding a `pickerInput` to select for penguin species]{.slide-title3}
@@ -262,16 +262,16 @@ ui <- fluidPage( . . . -

First, create an `/R` folder inside your `functions-app` directory. Then, add a new script to this folder. I'm calling mine `penguinSpp_pickerInput.R`.

+

First, create an `/R` folder inside your `functions-app` directory. Then, add a new script to this folder. I'm calling mine `penguinSpp_pickerInput.R`.

-

Since the only difference between our original two `pickerInput`s are their `inputId`s, we can write a function that takes `inputId` as an argument (**Recall** that `inputId`s must be unique within an app, so it makes sense that both of our `pickerInput`s have different `inputId`s).

+

Since the only difference between our original two `pickerInput`s are their `inputId`s, we can write a function that takes `inputId` as an argument (**Recall** that `inputId`s must be unique within an app, so it makes sense that both of our `pickerInput`s have different `inputId`s).

-

Once written, `source()` your function script into `global.R` (if necessary) to make your function available for use in your app.

+

Once written, `source()` your function script into `global.R` (if necessary) to make your function available for use in your app.

::: {.panel-tabset} ## `penguinSpp_pickerInput.R` -```{r} +```{r filename="~/functions-app/R/penguinSpp_pickerInput.R"} #| eval: false #| echo: true penguinSpp_pickerInput <- function(inputId) { @@ -284,7 +284,7 @@ penguinSpp_pickerInput <- function(inputId) { ``` ## `global.R` -```{r} +```{r filename="~/functions-app/global.R"} #| eval: false #| echo: true #| code-line-numbers: "7-8" @@ -310,7 +310,7 @@ source("R/penguinSpp_pickerInput.R") # will source automatically with Shiny v1.5

Finally, replace your original UI code for building both `pickerInput`s with our `penguinSpp_pickerInput()` function, save, and run your app. It should look exactly the same as before!

-```{r} +```{r filename="~/functions-app/ui.R"} #| eval: false #| echo: true #| code-line-numbers: "12|24" @@ -364,16 +364,16 @@ ui <- fluidPage( ## {#server-fxns data-menu-title="Server functions"} -[Turn reactives & rendered outputs into functions]{.slide-title2} +[Turn reactives & rendered outputs into functions]{.slide-title3}

Next, let's see where we can streamline our server code using functions. We have two discrete sections of code -- **(1)** a reactive data frame and scatterplot output and **(2)** a reactive data frame and histogram output.

-```{r} +```{r filename="~/functions-app/server.R"} #| eval: false #| echo: true -#| code-line-numbers: "3-25|27-46" +#| code-line-numbers: "3-25|26-46" server <- function(input, output) { # filter penguin species (scatterplot) ---- @@ -426,40 +426,43 @@ server <- function(input, output) { ## {#build-penguin-scatterplot-fxn data-menu-title="build_penguin_scatterplot()"} -[Create a function to builds our scatterplot]{.slide-title2} +[Create a function to build our scatterplot]{.slide-title2}
-

First, create a new file in `~/function-app/R` and name it `build_penguin_histogram.R` (or a name that is succinct/clear -- I'm going to name my function similarly).

+

First, create a new file in `~/function-app/R` and name it `build-penguin-scatterplot.R` (or a name that is succinct/clear -- I'm going to name my function similarly).

-

The goal of my function is to filter the `penguins` data based on the user input *and* render our ggplot scatterplot. To start, I'm going to cut/paste both the code to generate the reactive `filtered_spp_histogram` data frame and the `renderPlot()` code from `server.R` into our `build_penguin_histogram()` function.

+

The goal of my function is to filter the `penguins` data based on the user input *and* render our ggplot scatterplot. To start, I'm going to cut/paste both the code to generate the reactive `filtered_spp_scatterplot` data frame and the `renderPlot()` code from `server.R` into our `build_penguin_scatterplot()` function.

-

**Important:** In isolation, our function *does not know* about the user input (`input` is not in our global environment, it's only known within the `server()` function). Therefore, we must pass `input` as an argument to our function.

+

**Important:** In isolation, our function *does not know* about the user input (`input` is not in our global environment, it's only known within the `server()` function). Therefore, we must pass `input` as an argument to our function.

-

**Note** that in R, functions return the last executed line -- when we run `build_penguin_histogram()` in our server, it will return the object created by `renderPlot()`.

+

**Note** that in R, functions return the last executed line -- when we run `build_penguin_scatterplot()` in our server, it will return the object created by `renderPlot()`.

-```{r} +```{r filename="~/functions-app/R/build-penguin-scatterplot.R"} #| eval: false #| echo: true -build_penguin_histogram <- function(input) { +build_penguin_scatterplot <- function(input) { - # filter penguin spp ---- - filtered_spp_histogram <- reactive ({ - + # filter penguin species (scatterplot) ---- + filtered_spp_scatterplot <- reactive ({ + penguins |> - filter(species %in% input$penguin_species_histogram_input) - + filter(species %in% input$penguin_species_scatterplot_input) + }) - # render histogram ---- - renderPlot({ - - ggplot(na.omit(filtered_spp_histogram()), - aes(x = flipper_length_mm, fill = species)) + - geom_histogram() + - scale_fill_manual(values = c("Adelie" = "#FEA346", "Chinstrap" = "#B251F1", "Gentoo" = "#4BA4A4")) + - labs(x = "Flipper length (mm)", y = "Frequency", - fill = "Penguin species") + # render the scatterplot output ---- + output$penguin_scatterplot <- renderPlot({ + + ggplot(na.omit(filtered_spp_scatterplot()), + aes(x = bill_length_mm, y = bill_depth_mm, + color = species, shape = species)) + + geom_point() + + geom_smooth(method = "lm", se = FALSE, aes(color = species)) + + scale_color_manual(values = c("Adelie" = "#FEA346", "Chinstrap" = "#B251F1", "Gentoo" = "#4BA4A4")) + + scale_shape_manual(values = c("Adelie" = 19, "Chinstrap" = 17, "Gentoo" = 15)) + + labs(x = "Flipper length (mm)", y = "Bill length (mm)", + color = "Penguin species", shape = "Penguin species") }) @@ -475,7 +478,7 @@ build_penguin_histogram <- function(input) {

**Remember**, the output of `build_penguin_scatterplot()` is `renderPlot()`, which is used to build our reactive scatterplot. Following our rules for creating reactivity, we need to save our function's output to `output$penguin_scatterplot`. In doing so, we reduced 23 lines of code to 1 inside our server function.

-```{r} +```{r filename="~/functions-app/server.R"} #| eval: false #| echo: true #| code-line-numbers: "3-4" @@ -521,9 +524,9 @@ server <- function(input, output) { ::: {.panel-tabset} -## `build_penguin_histogram.R` +## `build-penguin-histogram.R` -```{r} +```{r filename="~/functions-app/R/build-penguin-histogram.R"} #| eval: false #| echo: true build_penguin_histogram <- function(input) { @@ -553,7 +556,7 @@ build_penguin_histogram <- function(input) { ## `server.R` -```{r} +```{r filename="~/functions-app/server.R"} #| eval: false #| echo: true #| code-line-numbers: "6-7" diff --git a/sections/4.1-second-app-v1.qmd b/sections/4.1-second-app-v1.qmd index 82b216a..ec77b20 100644 --- a/sections/4.1-second-app-v1.qmd +++ b/sections/4.1-second-app-v1.qmd @@ -21,7 +21,7 @@ format: revealjs . . . -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text}` be comfortable creating a shiny app using the two-file (`ui.R` & `server.R`) format along with a `global.R` file

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} be comfortable creating a shiny app using the two-file (`ui.R` & `server.R`) format along with a `global.R` file

. . . @@ -119,7 +119,7 @@ format: revealjs :::: {.columns} ::: {.column width="45%"} -```{r} +```{r, filename="practice_script_app2_lter.R"} #| eval: false #| echo: true #..........................load packages......................... @@ -189,7 +189,7 @@ ggplot(trout_filtered_df, aes(x = length_mm, y = weight_g, color = channel_type, :::: {.columns} ::: {.column width="45%"} -```{r} +```{r, filename="practice_script_app2_lter.R"} #| eval: false #| echo: true #..........................load packages......................... @@ -484,7 +484,7 @@ navbarPage(

First, let's build a UI that has a navigation bar with two tabs -- one for background information and one to contain our data visualizations. To do this, we'll use `navbarPage()` instead of `fluidPage()` to create our webpage.

**Tip:** It can be *super* helpful add code comments at the start and end of each UI element -- for example, see `# data viz tabPanel---` and `# END data viz tabPanel`, below. Adding text that you will eventually replace with content (e.g. plots, tables, images, longer text) may help to visualize what you're working towards as well.

-```{r} +```{r, filename="ui.R"} #| eval: false #| echo: true ui <- navbarPage( @@ -518,7 +518,7 @@ ui <- navbarPage(

Give your tabs the following titles: `Trout` and `Penguins`.

-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true #| code-line-numbers: "15-34" @@ -570,7 +570,7 @@ ui <- navbarPage(

We'll eventually place our input in the sidebar and output in the main panel.

-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true #| code-line-numbers: "21-38" @@ -664,7 +664,7 @@ ui <- navbarPage( [{{< fa check title="a check mark" >}} Exercise 2: A solution]{.slide-title2} -```{r} +```{r filename="ui.R"} #| eval: false #| echo: true #| code-line-numbers: "45-62" @@ -782,7 +782,7 @@ ui <- navbarPage(
A drawing of the right-side profile of a coastal cutthroat trout.
-

Image Source: Joseph R. Tomelleri, as found on the [Western Native Trout Initiative](https://westernnativetrout.org/coastal-cutthroat-trout/)

+

Image Source: Joseph R. Tomelleri, as found on the [Western Native Trout Initiative](https://westernnativetrout.org/coastal-cutthroat-trout/)

--- @@ -796,7 +796,7 @@ ui <- navbarPage(

**Import those three packages at the top of your `global.R` file**

-```{r} +```{r filename="global.R"} #| eval: false #| echo: true #| code-line-numbers: "3-5" @@ -815,10 +815,8 @@ library(shinyWidgets)
-

We can also do the bulk of our data wrangling here, rather than in the server (to keep our server code a bit more manageable). If we were reading in a data file (e.g. .csv), we would do that here too. Our new data object `clean_trout`, will now be available for us to call directly in our server.

- -

We can easily copy our wrangling code over from our [practice script](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots).

-```{r} +

We can also do the bulk of our data wrangling here, rather than in the server (to keep our server code a bit more manageable). If we were reading in a data file (e.g. .csv), we would do that here too. Our new data object `clean_trout`, will now be available for us to call directly in our server (NOTE: we can easily copy our wrangling code over from our [practice script](https://ucsb-meds.github.io/EDS430-Shiny/#/app2-plots)).

+```{r filename="global.R"} #| eval: false #| echo: true #| code-line-numbers: "6-24" @@ -862,7 +860,7 @@ clean_trout <- and_vertebrates |>

**Reminder:** When we we designed our UI layout, we added a `sidebarPanel` to our **Trout** tab with the placeholder text `"trout plot input(s) go here"`. Replace that text with the code for your `pickerInput`:

-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true # channel type pickerInput ---- @@ -875,8 +873,6 @@ pickerInput(inputId = "channel_type_input", label = "Select channel type(s):",

Save and run your app -- a functional `pickerInput` should now appear in your UI.

-
-

A `shinyWidgets::pickerInput()` is functionally equivalent to `shiny::selectInput()`, though it allows for greater customization and looks (in my opinion) a bit nicer.

--- @@ -893,7 +889,7 @@ pickerInput(inputId = "channel_type_input", label = "Select channel type(s):",

**Reminder:** When we we designed our UI layout, we added a `mainPanel` to our **Trout** tab with the placeholder text `"trout plot output goes here"`. Replace that text with the code for your `plotOuput()`:

-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true plotOutput(outputId = "trout_scatterplot") @@ -916,7 +912,7 @@ plotOutput(outputId = "trout_scatterplot") :::: {.columns} ::: {.column width="55%"} -```{r} +```{r filename="server.R"} #| eval: false #| echo: true #| code-line-numbers: "3-25" @@ -975,7 +971,7 @@ server <- function(input, output) {

Rather than re-typing your ggplot theme parameters out for every plot in your app, do so once in `global.R`, and save to an object name. You can then easily add your custom theme as a layer to each of your ggplots. **Bonus:** If you decide to modify your plot theme, you only have to do so in one place!

-```{r} +```{r filename="global.R"} #| eval: false #| echo: true #| code-line-numbers: "27-34" @@ -1029,15 +1025,15 @@ myCustomTheme <- theme_light() + ## {#second-input-ui data-menu-title="Add a second input"} -[Add a second input that will update the same output]{.slide-title} +[Add a second input that will update the same output]{.slide-title3}

You can have more than one input control the same output. Let's now add a `checkboxGroupButtons` widget to our **UI** for selecting forest `section` (either clear cut forest or old growth forest). Check out the [function documentation](https://dreamrs.github.io/shinyWidgets/reference/checkboxGroupButtons.html) for more information on how to customize the appearance of your buttons.

-

Be sure to add the widget to the same `sidebarPanel` as our `pickerInput` (and separate them with a comma, `,`!:

+

Be sure to add the widget to the same `sidebarPanel` as our `pickerInput` (and separate them with a comma!:

-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true #| code-line-numbers: "11-16" @@ -1071,7 +1067,7 @@ sidebarPanel(

Return to your **server** to modify `trout_filtered_df` -- our data frame needs to be updated based on both the `pickerInput`, which selects for `channel_type`, *and* the `checkboxGrouptInput`, which selects for forest `section`:

-```{r} +```{r filename="server.R"} #| eval: false #| echo: true #| code-line-numbers: "6" diff --git a/sections/4.3-second-app-v1.qmd b/sections/4.3-second-app-v1.qmd index 17373d8..4cecc75 100644 --- a/sections/4.3-second-app-v1.qmd +++ b/sections/4.3-second-app-v1.qmd @@ -44,7 +44,7 @@ format: revealjs

For example, I've added and formatted my landing page's text directly in the **UI** using lots of nested `tags` -- I've done this inside the `tabPanel` titled **About this App** (**Note:** I've formatted the layout of this page a bit using `fluidRow` and `column`s to create some white space around the edges. I've also created a faint gray horizontal line, using `hr()`, beneath which I added a footnote):

-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true #| code-line-numbers: "8-24" @@ -172,7 +172,7 @@ ui <- navbarPage( ::: {.panel-tabset} ## `ui.R` -```{r} +```{r filename="ui.R"} #| eval: false #| echo: true #| code-line-numbers: "8-21" @@ -283,7 +283,7 @@ ui <- navbarPage( ``` ## `text/about.md` -```{markdown} +```{markdown filename="text/about.md"} #| eval: false #| echo: true ## Welcome to the LTER Animal Data Explorer! @@ -302,7 +302,7 @@ Check out the **Explore the Data** page to find interactive data visualizations ``` ## `text/footer.md` -```{markdown} +```{markdown filename="text/footer/md"} #| eval: false #| echo: true *This app is maintained by [Samantha Csik](https://samanthacsik.github.io/) and is updated as needed for teaching purposes. Please report any issues [here](https://github.com/samanthacsik/EDS430-shiny-app/issues). Source code can be found on [GitHub](https://github.com/samanthacsik/EDS430-shiny-app).* @@ -318,7 +318,14 @@ Check out the **Explore the Data** page to find interactive data visualizations
-
An app titled 'LTER Animal Data Explorer'. The user starts on the 'About this App' page, which includes a couple paragraphs of intro text. The user then clicks on the 'Explore the Data' page which has two tabs: Trout and Penguins. On the Trout tab, we see a scatterplot with Trout Length (mm) on the x-axis and Trout Weight (g) on the y-axis. The user first filters data by Channel Type using a drop down list selector widget, then by Forest Section using two buttons that toggle on data from clear cut vs. old growth forest. In the Penguin tab, we see a histogram displaying Flipper Lengths (mm) of three penguin species. The user uses a drop down list selector widget to filter data by Island, then uses a slider widget to adjust the number of histogram bins.
+```{r} +#| eval: true +#| echo: false +#| fig-align: "center" +#| out-width: "80%" +#| fig-alt: "An app titled 'LTER Animal Data Explorer'. The user starts on the 'About this App' page, which includes a couple paragraphs of intro text. The user then clicks on the 'Explore the Data' page which has two tabs: Trout and Penguins. On the Trout tab, we see a scatterplot with Trout Length (mm) on the x-axis and Trout Weight (g) on the y-axis. The user first filters data by Channel Type using a drop down list selector widget, then by Forest Section using two buttons that toggle on data from clear cut vs. old growth forest. In the Penguin tab, we see a histogram displaying Flipper Lengths (mm) of three penguin species. The user uses a drop down list selector widget to filter data by Island, then uses a slider widget to adjust the number of histogram bins." +knitr::include_graphics("images/app2_v1.gif") +```

Again, we have some UX/UI quirks to fix (most notably, blank plots when all widget options are deselected), which we'll handle soon. But for now, we have a functioning app that we can practice deploying for the first time!

diff --git a/sections/5-deploy-app.qmd b/sections/5-deploy-app.qmd index eff12d3..b90c873 100644 --- a/sections/5-deploy-app.qmd +++ b/sections/5-deploy-app.qmd @@ -19,7 +19,14 @@ format: revealjs

Go to [shinyapps.io](https://www.shinyapps.io/) and login or create an account (if you don't already have one) -- I created my account and login with GitHub. To use shinyapps.io, you first need to link your account with RStudio on your computer. Follow the instructions on shinyapps.io when you first create your account to install the [`{rsconnect}` package](https://github.com/rstudio/rsconnect) and authorize your account:

-
shinyapps.io displays setup instructions: (1) INSTALL RSCONNECT: The `rsconnect` package can be installed directly from CRAN. To make sure you have the latest version run following code in your R console: `install.packages('rsconnect')`. (2) AUTHORIZE ACCOUNT: The `rsconnect` package must be authorized to your account using a token and secret. To do this, click the copy button below and we'll copy the whole command you need to your clipboard. Just paste it into your console to authorize your account. Once you've entered the command successfully in R, that computer is now authorized to deploy applications to your shinyapps.io account. (3) DEPLOY: Once the `rsconnect` package has been configured, you're ready to deploy your first application. If you haven't written any applications yet, you can also checkout the Getting Started Guide for instruction son how to deploy our demo application. Run the following code in your R console: `library(rsconnect)`, then `rsconnect::deployApp('path/to/your/app')`.
+```{r} +#| eval: true +#| echo: false +#| fig-align: "center" +#| out-width: "80%" +#| fig-alt: "shinyapps.io displays setup instructions: (1) INSTALL RSCONNECT: The `rsconnect` package can be installed directly from CRAN. To make sure you have the latest version run following code in your R console: `install.packages('rsconnect')`. (2) AUTHORIZE ACCOUNT: The `rsconnect` package must be authorized to your account using a token and secret. To do this, click the copy button below and we'll copy the whole command you need to your clipboard. Just paste it into your console to authorize your account. Once you've entered the command successfully in R, that computer is now authorized to deploy applications to your shinyapps.io account. (3) DEPLOY: Once the `rsconnect` package has been configured, you're ready to deploy your first application. If you haven't written any applications yet, you can also checkout the Getting Started Guide for instruction son how to deploy our demo application. Run the following code in your R console: `library(rsconnect)`, then `rsconnect::deployApp('path/to/your/app')`." +knitr::include_graphics("images/shinyapps_setup.png") +``` --- @@ -33,7 +40,14 @@ format: revealjs

Once deployed, a browser will open to your application. The URL will take the form: **https://username.shinyapps.io/your_app_directory_name**. You should also now see an `/rsconnect` folder within your app's directory -- this is generated when an application bundle is successfully deployed and contains a DCF file with information on the deployed content (i.e. the name, title, server address, account, URL, and time). **This `/rsconnect` folder should be added and committed into version control (i.e. push it to GitHub!)** so that future re-deployments target the same endpoint (i.e. your app's URL).

-
Our shiny app, now hosted at the URL https://samanthacsik.shinyapps.io/two-file-app which functions the same as when it was hosted locally.
+```{r} +#| eval: true +#| echo: false +#| fig-align: "center" +#| out-width: "80%" +#| fig-alt: "Our shiny app, now hosted at the URL https://samanthacsik.shinyapps.io/two-file-app which functions the same as when it was hosted locally." +knitr::include_graphics("images/deployed_v1.gif") +``` --- @@ -45,7 +59,14 @@ format: revealjs

Your shinyapps.io dashboard provides tons of information about your application metrics, instance (the virtualized server that your app is hosted on) and worker (a special type of R process that an Application Instance runs to service requests to an application) settings, plan management, and more. The free plan (the plan we're using here today) allows you to deploy **five** Shiny apps. You are able to archive and/or delete once-deployed apps to make space for new ones.

-
The shinyapps.io dashboard displaying information about our two-file-app, now hosted at https://samanthacsik.shinyapps.io/two-file-app/. You can select different menu items from the navbar at the top of the page, including Overview, Metrics, URLs, Settings, Users, Logs, Restart, Archive, and Trash.
+```{r} +#| eval: true +#| echo: false +#| fig-align: "center" +#| out-width: "80%" +#| fig-alt: "The shinyapps.io dashboard displaying information about our two-file-app, now hosted at https://samanthacsik.shinyapps.io/two-file-app/. You can select different menu items from the navbar at the top of the page, including Overview, Metrics, URLs, Settings, Users, Logs, Restart, Archive, and Trash." +knitr::include_graphics("images/shinapps_dashboard.png") +```

Check out the [shinyapps.io user guide](https://docs.posit.co/shinyapps.io/index.html) for more information on hosting your apps on shinyapps.io.

diff --git a/sections/6-second-app-v2.qmd b/sections/6-second-app-v2.qmd index 01deada..0e6ca16 100644 --- a/sections/6-second-app-v2.qmd +++ b/sections/6-second-app-v2.qmd @@ -112,7 +112,7 @@ format: revealjs

Place your validation test(s) at the start of any `reactive()` or `render*()` expression that calls `input$data`. For example, we can add two validation tests inside the reactive that generates our `trout_filtered_df` -- we'll need two separate validation tests, one for each of our inputs where users can deselect all data.

-```{r} +```{r filename="server.R"} #| eval: false #| echo: true #| code-line-numbers: "6-9" @@ -167,7 +167,7 @@ server <- function(input, output) {
-```{r} +```{r filename="server.R"} #| eval: false #| echo: true #| code-line-numbers: "39-41" @@ -251,10 +251,9 @@ server <- function(input, output) {
-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true -# in ui.R plotOutput(outputId = "trout_scatterplot") |> withSpinner(color = "#006792", type = 1) @@ -296,12 +295,11 @@ plotOutput(outputId = "flipperLength_histogram") |> ::: ::: {.column width="55%"} -```{r} +```{r filename="server.R"} #| eval: false #| echo: true -#| code-line-numbers: "18|35" +#| code-line-numbers: "17|34" -# in server.R # render trout scatterplot ---- output$trout_scatterplot <- renderPlot({ diff --git a/sections/8.1-shinydashboard.qmd b/sections/8.1-shinydashboard.qmd index d6f2d75..089532b 100644 --- a/sections/8.1-shinydashboard.qmd +++ b/sections/8.1-shinydashboard.qmd @@ -312,7 +312,7 @@ knitr::include_graphics("images/shinydashboard-directory-structure.png")

**NOTE:** In this example exercise, I've removed all rows with missing values (i.e. `NaN`s in the `Depth` column & `NA`s in the `BedTemperature` column) before calculating averages. *This is NOT good practice -- exploring and thinking critically about missing data is an important part of data analysis, and in a real-life scenario, you should consider the most appropriate method for handling them.*

-```{r} +```{r filename="scratch/data_processing_app3_shinydashboard.R"} #| eval: false #| echo: true #....................SETUP & DATA PROCESSING..................... @@ -408,7 +408,7 @@ map ``` ## code -```{r} +```{r filename="scratch/practice_script_app3_shinydashboard.R"} #| eval: false #| echo: true #....................SETUP & DATA PROCESSING..................... @@ -495,7 +495,7 @@ map ## code -```{r} +```{r filename="scratch/practice_script_app3_shinydashboard.R"} #| eval: false #| echo: true #| code-line-numbers: "5-10|26-32" @@ -570,7 +570,7 @@ leaflet() |>

Next, we'll build our `dashboardSidebar()`. Add a `sidebarMenu()` that contains two `menuItem`s. Be sure to provide each `menuItem()` with `text` as you'd like it to appear in your app (for me, that's **Welcome** and **Dashboard**), and a `tabName` which will be used to place `dashboardBody()` content in the appropriate `menuItem()`. Optionally, you can provide an icon. By default, `icon()` uses icons from [FontAwesome](https://fontawesome.com/).

-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true #| code-line-numbers: "4-6|13-19" @@ -613,7 +613,7 @@ dashboardPage(header, sidebar, body)

Next, we'll create `tabItems` in our `dashboardBody` -- we'll make a `tabItem` (singular) for each `menuItem` in our `dashboardSidebar`. In order to match a `menuItem` and a `tabItem`, ensure that they have matching a `tabName` (e.g. any content added to the **dashboard** `tabItem` will appear under the **dashboard** `menuItem`).

-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true #| code-line-numbers: "26-43" @@ -677,7 +677,7 @@ dashboardPage(header, sidebar, body)

[Boxes](https://rstudio.github.io/shinydashboard/structure.html#boxes) are the primary building blocks of shinydashboards and can contain almost any Shiny UI element (e.g. text, inputs, outputs). Start by adding two side-by-side boxes to our **dashboard** tab inside a `fluidRow()`. Together, their widths will add up to 12 (the total width of a browser page). These boxes will eventually contain our `sliderInput`s and our `leafletOutput`.

-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true #| code-line-numbers: "39-56" @@ -756,7 +756,7 @@ dashboardPage(header, sidebar, body)

Lastly, add boxes to our **welcome** tab We'll use `column`s to place one box on the left-hand side of our page, and two stacked boxes on the right-hand side. Each `column` will take up half the page (**Note:** *For column-based layouts, use `NULL` for the box width, as the width is set by the column that contains the box*). We can create two `fluidRow`s within the right-hand column to stack two boxes vertically.

-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true #| code-line-numbers: "32-71" @@ -875,7 +875,7 @@ dashboardPage(header, sidebar, body)

Remember to load your *pre-processed* data, which should live in the `/data` folder within your app's directory.

-```{r} +```{r filename="global.R"} #| eval: false #| echo: true #| code-line-numbers: "4-9" @@ -900,7 +900,7 @@ lake_data <- read_csv("data/lake_data_processed.csv")

Start by adding just one `sliderInput` (for selecting a range of lake `Elevation`s) to the left-hand box in the **dashboard** tab. Then, add a `leafletOutput` to create a placeholder space for our map, along with a Spinner animation (from the `{shinycssloaders}` package). While we're here, we can also add `title`s to each box.

-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true #| code-line-numbers: "84-89|96-99" @@ -1028,7 +1028,7 @@ dashboardPage(header, sidebar, body)

Remember to reference your practice data viz script and to follow our three steps for creating reactive outputs. And don't forget to add `()` following each reactive data frame called in your leaflet map!

-```{r} +```{r filename="server.R"} #| eval: false #| echo: true #| code-line-numbers: "3-36" diff --git a/sections/8.2-shinydashboard.qmd b/sections/8.2-shinydashboard.qmd index 686417a..78e2da8 100644 --- a/sections/8.2-shinydashboard.qmd +++ b/sections/8.2-shinydashboard.qmd @@ -16,14 +16,14 @@ format: revealjs ::: {.panel-tabset} ## `intro.md` -```{markdown} +```{markdown filename="text/intro.md"} #| eval: false #| echo: true The [Fish Creek Watershed Observatory (FCWO)](http://www.fishcreekwatershed.org/) is a focal watershed within the [National Petroleum Reserve in Alaska (NPR-A)](https://www.blm.gov/programs/energy-and-minerals/oil-and-gas/about/alaska/NPR-A). Targeted lake and stream monitoring within the watershed provide site-specific data prior to and after the establishment of new petroleum development, as well as insight into dynamics related to climate change and variability. Eleven lakes of interest (Harry Potter, Hipbone, Iceshove, L9817, L9819, L9820, Little Alaska, Lower Snowman, M9925, Middle Snowman, and Serenity) are featured in this dashboard. ``` ## `citation.md` -```{markdown} +```{markdown filename="text/citation.md"} #| eval: false #| echo: true Data presented in this dashboard were collected as part of the [Fish Creek Watershed Observatory](http://www.fishcreekwatershed.org/) are archived and publicly accessible on the NSF [Arctic Data Center](https://arcticdata.io/). **Citation:** @@ -32,7 +32,7 @@ Data presented in this dashboard were collected as part of the [Fish Creek Water ``` ## `disclaimer.md` -```{markdown} +```{markdown filename="text/disclaimer.md"} #| eval: false #| echo: true This app is build for demonstration/teaching purposes only and is not paid for or endorsed by the Fish Creek Watershed Observatory or affiliates in any way. The data as presented here are not intended for publication nor scientific interpretation. @@ -220,7 +220,7 @@ lake_data <- read_csv("data/lake_data_processed.csv")

Next, use the `img` tag to add your image. Supply a file path, relative to your `/www` directory, using the `src` argument, and alt text using the `alt` argument.

-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true #| code-line-numbers: "40-41" @@ -373,7 +373,7 @@ dashboardPage(header, sidebar, body)

I've also added a caption below our image that links to the image source, and used in-line CSS to center my text within the box.

-```{r} +```{r filename="ui.R"} #| eval: false #| echo: true #| code-line-numbers: "42-44" diff --git a/sections/9-themeing-apps.qmd b/sections/9-themeing-apps.qmd index 98805fd..6f25c4b 100644 --- a/sections/9-themeing-apps.qmd +++ b/sections/9-themeing-apps.qmd @@ -88,7 +88,7 @@ format: revealjs
-```{r} +```{r filename="~/one-file-app/ui.R"} #| eval: false #| echo: true ui <- fluidPage( @@ -128,7 +128,7 @@ ui <- fluidPage(
-```{r} +```{r filename="~/one-file-app/ui.R"} #| eval: false #| echo: true ui <- fluidPage( @@ -174,7 +174,7 @@ ui <- fluidPage(
-```{r} +```{r filename="~/one-file-app/ui.R"} #| eval: false #| echo: true #| code-line-numbers: "1" @@ -271,14 +271,13 @@ ui <- fluidPage(
-

In this example, we update the colors of our app's body, navbar, and tabPanels using the appropriate `fresh` [variables for shiny *apps*](https://dreamrs.github.io/fresh/articles/vars-shiny.html). We specify a file path, `two-file-app/www` (you'll need to create the `/www` directory, since we don't have one yet), where our stylesheet (e.g. `shiny_fresh_themes.css`, as shown here) file will be saved to.

+

In this example, we update the colors of our app's body, navbar, and tabPanels using the appropriate `fresh` [variables for shiny *apps*](https://dreamrs.github.io/fresh/articles/vars-shiny.html). We specify a file path, `two-file-app/www` (you'll need to create the `/www` directory, since we don't have one yet), where our stylesheet (e.g. `shiny-fresh-theme.css`, as shown here) file will be saved to.

Of course, these color combos are *not* recommended, but chosen purely for demonstration purposes {{< fa face-smile title="a smiling face" >}}.

-```{r} +```{r filename="~/R/create-fresh-theme-shiny.R"} #| eval: false #| echo: true -# in a separate script: ~/R/create_fresh_theme_shiny.R # load library ---- library(fresh) @@ -306,7 +305,7 @@ create_theme( ), # generate css file - output_file = "two-file-app/www/shiny_fresh_theme.css" + output_file = "two-file-app/www/shiny-fresh-theme.css" ) ``` @@ -329,7 +328,7 @@ create_theme(
-```{r} +```{r filename="~/two-file-app/ui.R"} #| eval: false #| echo: true # navbar page ---- @@ -363,12 +362,11 @@ ui <- navbarPage(
-

In this example, we update the colors of our app's header, body, and sidebar using the appropriate `fresh` [variables for shiny *dashboards*](https://dreamrs.github.io/fresh/articles/vars-shinydashboard.html). We specify a file path, `shinydashboard/www` where our stylesheet (e.g. `shinydashboard_fresh_themes.css`, as shown here) file will be saved to. Again, these color combos are *not* recommended, but chosen purely for demonstration purposes.

+

In this example, we update the colors of our app's header, body, and sidebar using the appropriate `fresh` [variables for shiny *dashboards*](https://dreamrs.github.io/fresh/articles/vars-shinydashboard.html). We specify a file path, `shinydashboard/www` where our stylesheet (e.g. `shinydashboard-fresh-theme.css`, as shown here) file will be saved to. Again, these color combos are *not* recommended, but chosen purely for demonstration purposes.

-```{r} +```{r filename="~/R/create-fresh-theme-shinydashboard.R"} #| eval: false #| echo: true -# in a separate script: ~/R/create_fresh_theme_shinydashboard.R # load libraries ---- library(fresh) @@ -394,7 +392,7 @@ create_theme( ), # generate css file - output_file = "shinydashboard/www/shinydashboard_fresh_theme.css" + output_file = "shinydashboard/www/shinydashboard-fresh-theme.css" ) ``` @@ -417,7 +415,7 @@ create_theme(
-```{r} +```{r filename="~/shinydashboard/ui.R"} #| eval: false #| echo: true body <- dashboardBody( @@ -462,8 +460,6 @@ body <- dashboardBody(

You can write your own stylesheets using [CSS](https://www.w3.org/Style/CSS/Overview.en.html) and [Sass](https://sass-lang.com/) to fully customize your apps, from background colors, to font styles, to size and shape of elements, and more. Unlike `bslib` and `fresh`, these are *languages*, meaning they can be a bit more challenging to get started with (but the payoff it big!).

-
- :::: {.columns} ::: {.column width="45%"} @@ -562,7 +558,7 @@ body <- dashboardBody( :::: -

There are a variety of CSS selectors -- check out some of the basics that will take you far in styling your apps, starting [on this slide](https://ucsb-meds.github.io/customizing-quarto-websites/#/selector-types) of the [Customizing Quarto Websites](https://ucsb-meds.github.io/customizing-quarto-websites/#/title-slide) workshop.

+

There are a variety of CSS selectors -- check out some of the basics that will take you far in styling your apps, starting [on this slide](https://ucsb-meds.github.io/customizing-quarto-websites/#/selector-types) of the [Customizing Quarto Websites](https://ucsb-meds.github.io/customizing-quarto-websites/#/title-slide) workshop.

--- @@ -578,7 +574,7 @@ body <- dashboardBody( ## tags -

Add styling directly to tags. **It's best not to use a lot of these!** It's easy to lose track of your "in-line" styling in large projects, you can't reuse rules easily, it's hard to keep styling consistent, and it's difficult to implement large stylistic changes.

+

Add styling directly to tags. **It's best not to use a lot of these!** It's easy to lose track of your "in-line" styling in large projects, you can't reuse rules easily, it's hard to keep styling consistent, and it's difficult to implement large stylistic changes.

:::: {.columns} @@ -629,7 +625,7 @@ shinyApp(ui, server) ## header -

Add CSS rules to your app's header (`tags$head`). This is a little bit better than option 1 since it allows for the reuse of rules, however, styles can't be cached (i.e. saved for future usage when you reopen your app). **Note:** explore Google fonts [here](https://fonts.google.com/) and check out [this slide](https://ucsb-meds.github.io/customizing-quarto-websites/#/select-fonts) for instructions on selecting a font.

+

Add CSS rules to your app's header (`tags$head`). This is a little bit better than option 1 since it allows for the reuse of rules, however, styles can't be cached (i.e. saved for future usage when you reopen your app). **Note:** explore Google fonts [here](https://fonts.google.com/) and check out [this slide](https://ucsb-meds.github.io/customizing-quarto-websites/#/select-fonts) for instructions on selecting a font.

:::: {.columns} @@ -686,7 +682,7 @@ shinyApp(ui, server) ## stylesheets -

Build a stylesheet (a `.css` file) inside your app's `www/` directory and apply your styles to your app's header (for shinydashboards, include your header inside `dashboardBody()`. **This is the most ideal approach** -- it allows for style reuse, caching, and keeps styling contained in one spot. **Tip:** use `touch styles.css` in the terminal to create a new `.css` file.

+

Build a stylesheet (a `.css` file) inside your app's `www/` directory and apply your styles to your app's header (for shinydashboards, include your header inside `dashboardBody()`. **This is the most ideal approach** -- it allows for style reuse, caching, and keeps styling contained in one spot. **Tip:** use `touch styles.css` in the terminal to create a new `.css` file.

:::: {.columns} @@ -951,7 +947,6 @@ library(palmerpenguins) :::: - ## `styles.css` ```{css} #| eval: false @@ -1119,13 +1114,13 @@ h1 { . . . -

Next, create your Sass file within `two-file-app/www/`. Then, using your terminal, `cd` into `~/two-file-app/www` and use the `touch` command to create a `.scss` file (I'm calling mine `my_sass_styles.scss`).

+

Next, create your Sass file within `two-file-app/www/`. Then, using your terminal, `cd` into `~/two-file-app/www` and use the `touch` command to create a `.scss` file (I'm calling mine `my-sass-styles.scss`).

. . . -

Add Sass variables and CSS rules to `my_sass_styles.scss`:

+

Add Sass variables and CSS rules to `my-sass-styles.scss`:

-```{css} +```{css filename="~/two-file-app/www/my-sass-styles.scss"} #| eval: false #| echo: true // import 2 fonts @@ -1190,7 +1185,7 @@ a {

We also need to apply our styles to our app by linking this newly-generated `.css` file in our app's header.

-

**Note:** After running your app, you should see a `my_sass_styles.css` file appear in `www/` -- it should look quite familiar, except all of our Sass variables have been converted to CSS.

+

**Note:** After running your app, you should see a `my-sass-styles.css` file appear in `www/` -- it should look quite familiar, except all of our Sass variables have been converted to CSS.

::: {.panel-tabset} @@ -1249,7 +1244,7 @@ ui <- navbarPage( ) ``` -## `my_sass_styles.css` +## `my-sass-styles.css` ```{css} #| eval: false #| echo: true From 9cc191ce6c18a74b3304be2b01a36290e4038b3a Mon Sep 17 00:00:00 2001 From: samanthacsik Date: Mon, 9 Oct 2023 10:52:48 -0700 Subject: [PATCH 7/8] updating html > knitr::include_graphics() & also adding file paths to code chunk file names (only done up through section3 so far) --- index.html | 390 ++++++++++++++++++----------- index.qmd | 9 +- sections/0-prerequisites.qmd | 15 +- sections/1-what-is-shiny.qmd | 36 ++- sections/15-modules.qmd | 38 +-- sections/16-shiny_alternatives.qmd | 11 +- sections/2-setup.qmd | 45 +++- sections/3-first-app.qmd | 141 +++++++++-- 8 files changed, 481 insertions(+), 204 deletions(-) diff --git a/index.html b/index.html index 4b81c60..29fdb31 100644 --- a/index.html +++ b/index.html @@ -406,7 +406,7 @@

Published: Oct 10, 2022

-

Last updated: Oct 08, 2023

+

Last updated: Oct 09, 2023


@@ -437,20 +437,24 @@ A GitHub profile & git installed/configured
-
-A blue hexagon with the word 'Shiny' in cursive lettering printed across the center. -
+
+
+
+

A blue hexagon with the word 'Shiny' in cursive lettering printed across the center.

+
-
+
+
+
+
You have the required R packages installed. You can install/update them all at once by running:
install.packages(pkgs = c("shiny", "shinydashboard", "shinyWidgets", "DT", "leaflet", "shinycssloaders", "tidyverse", "bslib", "fresh", "sass", "reactlog", "shinytest2", "palmerpenguins", "lterdatasampler", "gapminder", "markdown"))
-


-
+
No prior Shiny experience necessary!
@@ -537,10 +541,8 @@

Shiny is an R package that makes it easy to build interactive web apps straight from R. You can host standalone apps on a webpage or embed them in R Markdown documents or build dashboards. You can also extend your Shiny apps with CSS themes, htmlwidgets, and JavaScript actions. - RStudio

-
-A gif of Andre Duarte's 'Worldbank-Shiny' app. On the lefthand side of the app, the title 'Gapminder Interactive Plot' sits above a series of three widgets. The first is a dropdown menu where the user can select a region (e.g. Europe & Central Asia) or view all regions at the same time. The next two widgets are slider inputs -- the first allows the user to select a year between 1960 and 2014, and the second allows the user to select a population size between 500 and 5000. On the right hand side of the app is a bubble plot of Fertility Rate vs. Life Expectancy, which updates as inputs are changed by the user. Hovering a bubble displays thge corresponding Country, Region, Population, Life Expectancy, and Fertility Rate. -
-
+ +A gif of Andre Duarte's 'Worldbank-Shiny' app. On the lefthand side of the app, the title 'Gapminder Interactive Plot' sits above a series of three widgets. The first is a dropdown menu where the user can select a region (e.g. Europe & Central Asia) or view all regions at the same time. The next two widgets are slider inputs -- the first allows the user to select a year between 1960 and 2014, and the second allows the user to select a population size between 500 and 5000. On the right hand side of the app is a bubble plot of Fertility Rate vs. Life Expectancy, which updates as inputs are changed by the user. Hovering a bubble displays thge corresponding Country, Region, Population, Life Expectancy, and Fertility Rate.

Worldbank-Shiny app to visualize fertility rate vs. life expectancy from 1960 to 2015, by Andre Duarte

@@ -560,10 +562,8 @@

Shiny apps are composed in two parts: (1) a web page that displays the app to a user (i.e. the user interface, or UI for short), and (2) a computer that powers the app (i.e. the server)

-
-A simple schematic of a Shiny app, which includes the User Interface (UI, colored in blue) and the Server (colored in orange). The UI creates what the user will see and interact with, while the server builds the outputs that react and update based on user inputs. -
-

+ +A simple schematic of a Shiny app, which includes the User Interface (UI, colored in blue) and the Server (colored in orange). The UI creates what the user will see and interact with, while the server builds the outputs that react and update based on user inputs.

The UI controls the layout and appearance of your app and is written in HTML (except we use functions from the shiny package to write that HTML). The server handles the logic of the app – in other words, it is a set of instructions that tells the webpage what to display when a user interacts with it.

@@ -571,9 +571,14 @@
-
-Examples of Shiny's pre-built widget options. These include buttons, single checkbox, checkbox groups, date input, date range, file input, numeric input, radio buttons, select box, sliders, and text input. The default color scheme is black and gray with selections highlighted in blue. -
+
+
+
+

Examples of Shiny's pre-built widget options. These include buttons, single checkbox, checkbox groups, date input, date range, file input, numeric input, radio buttons, select box, sliders, and text input. The default color scheme is black and gray with selections highlighted in blue.

+
+
+
+
@@ -591,10 +596,8 @@

Reactivity is what makes Shiny apps responsive i.e. it lets the app instantly update itself whenever the user makes a change. At a very basic level, it looks something like this:

-
-A schematic of Shiny reactivity. The UI is represented by a light blue box. Inside the blue UI box, there is a radio button widget that says, 'Make a choice:' and three round radio buttons beneath it. Underneath that, there is a placeholder space for a reactive output to be created by the server. The server is to the left of the UI and is represented by an orange box. At a basic level, reactivity occurs after the following steps: (1) A widget gets information from a user which (2) is then passed to the server where it is used to update a data frame based on the users choice. (3) The new data frame is used to update outputs in the server, and (4) those outputs are then rendered in the UI. -
-

+ +A schematic of Shiny reactivity. The UI is represented by a light blue box. Inside the blue UI box, there is a radio button widget that says, 'Make a choice:' and three round radio buttons beneath it. Underneath that, there is a placeholder space for a reactive output to be created by the server. The server is to the left of the UI and is represented by an orange box. At a basic level, reactivity occurs after the following steps: (1) A widget gets information from a user which (2) is then passed to the server where it is used to update a data frame based on the users choice. (3) The new data frame is used to update outputs in the server, and (4) those outputs are then rendered in the UI.

Check out Garrett Grolemund’s article, How to understand reactivity in R for a more detailed overview of Shiny reactivity.

@@ -678,28 +681,22 @@

Let’s start by creating a GitHub repo to house our soon-to-be app(s), then we’ll clone our repo to our computer. I’m using RStudio to clone my repo in the example below, but you can also do this via the command line using git clone <repo-url>.

-
-A gif demonstrating how to set up a GitHub repo and how to clone that repo to your computer. Start by clicking on the 'Repositories' tab from your GitHub profile, then click the green 'New' button. Give your repo a name, check the box next to 'Add a README file', Add a .gitigore by choosing 'R' from the drop down menu, then click the green 'Create repository' button. From your repo landing page, click the green 'Code' button, then copy the URL to your clipboard. In RStudio, select 'New Project' from the top left 'Project' button, select 'Version Control', then 'Git', and paste your URL in the 'Repository URL field'. Your repo name should be auto completed in the 'Project directory name:' field, but if not, press the 'Tab' key. Click 'Create Project' to complete the process. -
-

+ +A gif demonstrating how to set up a GitHub repo and how to clone that repo to your computer. Start by clicking on the 'Repositories' tab from your GitHub profile, then click the green 'New' button. Give your repo a name, check the box next to 'Add a README file', Add a .gitigore by choosing 'R' from the drop down menu, then click the green 'Create repository' button. From your repo landing page, click the green 'Code' button, then copy the URL to your clipboard. In RStudio, select 'New Project' from the top left 'Project' button, select 'Version Control', then 'Git', and paste your URL in the 'Repository URL field'. Your repo name should be auto completed in the 'Project directory name:' field, but if not, press the 'Tab' key. Click 'Create Project' to complete the process.

Shiny app repo structure


Not much is required to make a functional app (which is awesome) – for a basic app, you really just need an app.R file where you’ll write the code for your UI and server. To stay organized, we’ll place app.R into a subdirectory (e.g. /myapp), which will also house any dependencies (e.g. other scripts/files/etc.) used by app.R.

-
-A visual representation of a basic shiny app repository file/folder structure. -
-

+ +A visual representation of a basic shiny app repository file/folder structure.

All Shiny apps begin (in almost) the same way


You have the option of creating either a single-file app or two-file app, and they look nearly the same (we’ll see both formats in the coming slides).

-
-Shiny apps can be built using a single app.R file, or using ui.R plus server.R, and most often a global.R in conjunction. -
-

+ +Shiny apps can be built using a single app.R file, or using ui.R plus server.R, and most often a global.R in conjunction.

Why two options? Before v0.10.2, Shiny apps needed to be split into two separate files, ui.R and server.R, that defined the UI and server components, respectively. With v0.10.2+, users can create a single-file app, app.R, which contains both the UI and server components together. While it largely comes down to personal preference, a single-file format is best for smaller apps or when creating a reprex, while the two-file format is beneficial when writing large, complex apps where breaking apart code can make things a bit more navigable/maintainable.

@@ -751,13 +748,23 @@

-
-The RStudio viewer showing a running app consisting of only a blank white screen since no elements have been added yet. -
+
+
+
+

The RStudio viewer showing a running app consisting of only a blank white screen since no elements have been added yet.

+
+
+
+
-
-RStudio running our blank app. In the console, we see the text 'Listening on http://127.0.0.1:6341' and a red stop sign indicating that RStudio is busy. -
+
+
+
+

RStudio running our blank app. In the console, we see the text 'Listening on http://127.0.0.1:6341' and a red stop sign indicating that RStudio is busy.

+
+
+
+
@@ -925,9 +932,14 @@
-
-A gif of our current Shiny app, demonstrating reactivity. At the top left of our app is the title, 'My App Title' in large header font. Beneath it is a subtitle, 'Exploring Antarctic Penguins and Temperatures'. Below the subtitle is the slider input with the label, 'Select a range of body masses (g)'. A gray horizontal slider bar ranges from the values 2,700 to 6,300. The interactive slider value selectors are two round white circles, which, when moved apart from one another highlight the selected value range in blue. The user is adjusting the slider value selectors and the scatterplot of penguin bill length (mm) vs. flipper length (mm) is automatically updating. -
+
+
+
+

A gif of our current Shiny app, demonstrating reactivity. At the top left of our app is the title, 'My App Title' in large header font. Beneath it is a subtitle, 'Exploring Antarctic Penguins and Temperatures'. Below the subtitle is the slider input with the label, 'Select a range of body masses (g)'. A gray horizontal slider bar ranges from the values 2,700 to 6,300. The interactive slider value selectors are two round white circles, which, when moved apart from one another highlight the selected value range in blue. The user is adjusting the slider value selectors and the scatterplot of penguin bill length (mm) vs. flipper length (mm) is automatically updating.

+
+
+
+

@@ -939,7 +951,7 @@
-
app.R
+
~/one-file-app/app.R
# user interface ----
 ui <- fluidPage(
@@ -960,7 +972,7 @@
 
-
app.R
+
~/one-file-app/app.R
# user interface ----
 ui <- fluidPage(
@@ -1071,9 +1083,14 @@
 
-
-A gif of our current Shiny app, demonstrating reactivity. At the top left of our app is the title, 'My App Title' in large header font. Beneath it is a subtitle, 'Exploring Antarctic Penguins and Temperatures'. Below the subtitle is the slider input with the label, 'Select a range of body masses (g)'. A gray horizontal slider bar ranges from the values 2,700 to 6,300. The interactive slider value selectors are two round white circles, which, when moved apart from one another highlight the selected value range in blue. The user is adjusting the slider value selectors and the scatterplot of penguin bill length (mm) vs. flipper length (mm) is automatically updating. -
+
+
+
+

A gif of our current Shiny app, demonstrating reactivity. At the top left of our app is the title, 'My App Title' in large header font. Beneath it is a subtitle, 'Exploring Antarctic Penguins and Temperatures'. Below the subtitle is the slider input with the label, 'Select a range of body masses (g)'. A gray horizontal slider bar ranges from the values 2,700 to 6,300. The interactive slider value selectors are two round white circles, which, when moved apart from one another highlight the selected value range in blue. The user is adjusting the slider value selectors and the scatterplot of penguin bill length (mm) vs. flipper length (mm) is automatically updating.

+
+
+
+

@@ -1108,7 +1125,7 @@
-
app.R
+
~/one-file-app/app.R
# user interface ----
 ui <- fluidPage(
@@ -1125,9 +1142,14 @@
 

When you run your app, you should see something similar to the image below. It’s operable, but does not yet have an associated output.

-
-A basic Shiny app, with a title that says 'My App Title', a subtitle that says, 'Exploring Palmer Penguins and Antarctic Temperatures, and a slider input with a label that says 'Select a range of body masses (g)'. The slider bar has a minimum value of 2,700 and a maximum value of 6,300, and the moveable slider selectors currently range from 3,000 to 4,000. -
+
+
+
+

A basic Shiny app, with a title that says 'My App Title', a subtitle that says, 'Exploring Palmer Penguins and Antarctic Temperatures, and a slider input with a label that says 'Select a range of body masses (g)'. The slider bar has a minimum value of 2,700 and a maximum value of 6,300, and the moveable slider selectors currently range from 3,000 to 4,000.

+
+
+
+

Output function syntax

@@ -1156,7 +1178,7 @@
-
app.R
+
~/one-file-app/app.R
# user interface ----
 ui <- fluidPage(
@@ -1182,9 +1204,14 @@
 
-
-A Google Chrome browser window with our Shiny app open on the left-hand side and the underlying HTML document open on the right. The app looks the same as before, except hovering over the HTML associated with our new plotOutput highlights a blue square region beneath the sliderInput. This highlighted region is the placeholder where our plot will eventually be rendered. -
+
+
+
+

A Google Chrome browser window with our Shiny app open on the left-hand side and the underlying HTML document open on the right. The app looks the same as before, except hovering over the HTML associated with our new plotOutput highlights a blue square region beneath the sliderInput. This highlighted region is the placeholder where our plot will eventually be rendered.

+
+
+
+
@@ -1258,7 +1285,7 @@
-
app.R
+
~/one-file-app/app.R
# load packages ----
 library(shiny)
@@ -1306,7 +1333,7 @@
 
-
app.R
+
~/one-file-app/app.R
# load packages ----
 library(shiny)
@@ -1348,7 +1375,7 @@
 
-
practice-script.R
+
~/scratch/practice-script-app1-penguins.R
# load packages
 library(palmerpenguins)
@@ -1371,13 +1398,18 @@
 
-
-A scatterplot with Flipper length (mm) on the x-axis and Bill length (mm) on the y-axis. Data points are colored by penguins species: Adelie in orange circles, Chinstrap in purple triangles, and Gentoo in green squares. -
+
+
+
+

A scatterplot with Flipper length (mm) on the x-axis and Bill length (mm) on the y-axis. Data points are colored by penguins species: Adelie in orange circles, Chinstrap in purple triangles, and Gentoo in green squares.

+
+
+
+

-Tip: Save your practice script in a separate directory (i.e. not inside your app directory) – I typically save mine to something like ~/scratch/practice_script.R. +Tip: Save your practice script in a separate directory (i.e. not inside your app directory) – I typically save mine to something like ~/scratch/practice-script.R.

Copy your plot code into the server

@@ -1388,7 +1420,7 @@
-
app.R
+
~/one-file-app/app.R
# load packages ----
 library(shiny)
@@ -1434,10 +1466,8 @@
 

We have a plot (yay!), but it isn’t reactive. We have not yet told the server how to update the plot based on user inputs via the sliderInput() in the UI. Let’s do that next…

-
-A user changes the sliderInput meant associated with the penguin data scatterplot, but the plot does not update (i.e. it is not yet reactive). -
-

+ +A user changes the sliderInput meant associated with the penguin data scatterplot, but the plot does not update (i.e. it is not yet reactive).

Practice filtering data in our separate script


@@ -1447,7 +1477,7 @@

-
practice-script.R
+
~/scratch/practice-script-app1-penguins.R
# load packages
 library(palmerpenguins)
@@ -1468,7 +1498,7 @@
 
-
practice-script.R
+
~/scratch/practice-script-app1-penguins.R
# plot new, filtered data
 ggplot(na.omit(body_mass_df), # plot 'body_mass_df' rather than 'penguins' df
@@ -1487,9 +1517,14 @@
 
-
-A scatterplot of penguin Bill length (mm) vs. Flipper length (mm) for Adelie (orange circles), Chinstrap (purple triangles), and Gentoo (green squares) penguins. For all species, bill length tends to increase with flipper length. -
+
+
+
+

A scatterplot of penguin Bill length (mm) vs. Flipper length (mm) for Adelie (orange circles), Chinstrap (purple triangles), and Gentoo (green squares) penguins. For all species, bill length tends to increase with flipper length.

+
+
+
+
@@ -1498,10 +1533,15 @@
+
+
+
~/scratch/practice-script-app1-penguins.R
+
body_mass_df <- penguins |> 
   filter(body_mass_g %in% 3000:4000) # 3000:4000 needs to be update-able (or in other words, reactive)!
+

For example: @@ -1512,9 +1552,14 @@

body_mass_df <- penguins |> 
   filter(body_mass_g %in% 2857:5903)
-
-Our Shiny app with just a title, subtitle, and slider input, where the input values are at a minimum of 2,857 and a maximum of 5,903. -
+
+
+
+

Our Shiny app with just a title, subtitle, and slider input, where the input values are at a minimum of 2,857 and a maximum of 5,903.

+
+
+
+
@@ -1522,9 +1567,14 @@
body_mass_df <- penguins |> 
   filter(body_mass_g %in% 3725:5191)
-
-Our Shiny app with just a title, subtitle, and slider input, where the input values are at a minimum of 3,725 and a maximum of 5,191. -
+
+
+
+

Our Shiny app with just a title, subtitle, and slider input, where the input values are at a minimum of 3,725 and a maximum of 5,191.

+
+
+
+
@@ -1537,7 +1587,7 @@
-
app.R
+
~/one-file-app/app.R
# load packages (omitted for brevity) ----
 
@@ -1578,7 +1628,7 @@
 
-
app.R
+
~/one-file-app/app.R
# load packages (omitted for brevity) ----
 
@@ -1619,10 +1669,8 @@
 

You should now have a reactive Shiny app! Note that reactivity automatically occurs whenever you use an input value to render an output object.

-
-A gif of our current Shiny app, demonstrating reactivity. At the top left of our app is the title, 'My App Title' in large header font. Beneath it is a subtitle, 'Exploring Antarctic Penguins and Temperatures'. Below the subtitle is the slider input with the label, 'Select a range of body masses (g)'. A gray horizontal slider bar ranges from the values 2,700 to 6,300. The interactive slider value selectors are two round white circles, which, when moved apart from one another highlight the selected value range in blue. The user is adjusting the slider value selectors and the scatterplot of penguin bill length (mm) vs. flipper length (mm) is automatically updating. -
-

+ +A gif of our current Shiny app, demonstrating reactivity. At the top left of our app is the title, 'My App Title' in large header font. Beneath it is a subtitle, 'Exploring Antarctic Penguins and Temperatures'. Below the subtitle is the slider input with the label, 'Select a range of body masses (g)'. A gray horizontal slider bar ranges from the values 2,700 to 6,300. The interactive slider value selectors are two round white circles, which, when moved apart from one another highlight the selected value range in blue. The user is adjusting the slider value selectors and the scatterplot of penguin bill length (mm) vs. flipper length (mm) is automatically updating.

Recap: We created our first reactive Shiny app following these steps:


@@ -1679,9 +1727,14 @@
-
-A gif of our current Shiny app, demonstrating the newly added DT::datatable. The user is able to select which years (2007, 2008, 2009) to display data for by clicking on one more more checkboxes. -
+
+
+
+

A gif of our current Shiny app, demonstrating the newly added DT::datatable. The user is able to select which years (2007, 2008, 2009) to display data for by clicking on one more more checkboxes.

+
+
+
+


@@ -1755,7 +1808,7 @@
-
app.R
+
~/one-file-app/app.R
# load packages ----
 library(shiny)
@@ -1864,9 +1917,15 @@
 
-
-A gif of Britney Spears in her iconic red spandex outfit singing 'Oops I did it again.' -
+


+
+
+
+

A gif of Britney Spears in her iconic red spandex outfit singing 'Oops I did it again.'

+
+
+
+

@@ -1880,7 +1939,7 @@
-
+
@@ -2949,7 +3008,7 @@
-
+
@@ -3235,7 +3294,7 @@
-
+
@@ -4210,7 +4269,7 @@
-
+
@@ -4549,8 +4608,8 @@
-
- +
+
@@ -4604,8 +4663,8 @@
-
- +
+
@@ -5382,7 +5441,7 @@
-
+
@@ -8975,7 +9034,7 @@

-

Create a function to builds our scatterplot

+

Create a function to build our scatterplot


First, create a new file in ~/function-app/R and name it build-penguin-scatterplot.R (or a name that is succinct/clear – I’m going to name my function similarly). @@ -9176,13 +9235,15 @@

It uses the gapminder data set to display life expectancy by GDP per capita from 1952 to 2007 for Africa, the Americas, Asia, Europe, Oceania, and all regions collectively. The only difference between each tab is the subset of data displayed.

-
-The gapminder app, which has 6 tabs, one for each global region. A bubble plot takes up the width of the ap and displays Life Expectancy by GDP per capita, where each bubble represents a country and the size of bubbles represent the population size of that country. An automated sliderInput advances through the years (1952-2007), and the plot updates accordingly. -
-

+ +The gapminder app, which has 6 tabs, one for each global region. A bubble plot takes up the width of the ap and displays Life Expectancy by GDP per capita, where each bubble represents a country and the size of bubbles represent the population size of that country. An automated sliderInput advances through the years (1952-2007), and the plot updates accordingly.

The code for this app isn’t particularly complex, but it’s repetitive and long


+
+
+
~/modularized-app/app.R
+
# app.R
 
 #..............................setup.............................
@@ -9506,10 +9567,10 @@
 # Run the application 
 shinyApp(ui = ui, server = server)
-

-
-Repeated code sections
+

+

Repeated code sections

+

Taking a closer look at the gapminder app code, we’ll see that the following sections of code are repeated for each region (6 times total; only code sections for “all” regions shown below):

@@ -9612,30 +9673,34 @@ Modules are a coding pattern, organized into two functions: one that creates the UI elements and one that loads the server logic. They can look a bit different, depending on your module, but they generally follow this pattern:

-
# myModule.R
-#..........................ui function...........................
-
-myModuleUI <- function(id) {
-  
-  ns <- NS(id)
-  
-  tagList(
-    # inputs with ids wrapped in ns() (e.g. `sliderInput(id = ns("slider"))`)
-    # outputs with ids wrapped in ns() (e.g. `plotOutput(id = "ns(plot"))`)
-  )
-  
-}
-
-#........................server function.........................
-myModuleServer <- function(id, ...) { # where `...` includes any number of additional parameters
-  
-  moduleServer(id, function(input, output, session) {
-    
-    # server logic
-    
-  }) 
-  
-} 
+
+
+
myModule.R
+
+
#..........................ui function...........................
+
+myModuleUI <- function(id) {
+  
+  ns <- NS(id)
+  
+  tagList(
+    # inputs with ids wrapped in ns() (e.g. `sliderInput(id = ns("slider"))`)
+    # outputs with ids wrapped in ns() (e.g. `plotOutput(id = "ns(plot"))`)
+  )
+  
+}
+
+#........................server function.........................
+myModuleServer <- function(id, ...) { # where `...` includes any number of additional parameters
+  
+  moduleServer(id, function(input, output, session) {
+    
+    # server logic
+    
+  }) 
+  
+} 
+

Where should I define/save my module?

@@ -9662,13 +9727,17 @@

Breaking down the UI function:


-

+

The UI part of a module needs to do two things: (1) return a shiny element (e.g. an input & output), and (2) assign module elements to a unique namespace using NS(). NS() provides an easy way to help with namespacing within your module, ensuring that each time your module is called, a unique id is assigned.

-

+

The UI function for our gapminder module will look like this (NOTE: code comments below denote the general order of operations I followed when writing this UI function):

+
+
+
~/modularized-app/R/gapModule.R
+
# step 1: a good function naming convention is a descriptive base name, suffixed by `UI`
 
 gapModuleUI <- function(id) { # step 2: the first argument to a UI function should always be `id` -- this is the namespace for the module 
@@ -9687,19 +9756,24 @@
   
 } # END gapModuleUI function
-

+

+

Wrapping our input and output Ids in ns() will create unique Ids each time our module is called, preventing things from overwriting one one another. For example, if we call gapModuleUI(id = "myFirstModuleCall"), our outputId will be set to myFirstModuleCall-plot and our inputId will be set to myFirstModuleCall-year. Calling our module a second time (e.g. gapModuleUI(id = "mySecondModuleCall")) will generate two new unique Ids (e.g. mySecondModuleCall-plot & mySecondModuleCall-year).

Breaking down the Server function:


-

+

The server part of a module looks very similar to a normal (i.e. non-modular) Shiny app server function. Begin by defining your module server function name and provide it with the first required parameter, id, along with any other necessary parameters (we also need to pass our particular function a data parameter to differentiate between data subsets (e.g. All vs. Africa vs. Asia etc.)).

-

+

Next, call moduleServer() inside your server function and pass it the id variable, along with the module function. The module function must have three parameters: input, output, and session. You do not have to use ns() to refer to inputs and outputs here. Copy server code from our original app, plop it inside the module function, and sub in our data parameter where ever a data frame subset is called.

+
+
+
~/modularized-app/R/gapModule.R
+
# step 1: a good function naming convention is a descriptive base name, suffixed by `Server`
 
 gapModuleServer <- function(id, data) { # step 2: the first argument to a server function should always be `id`, followed by any other necessary arguments; here we include a 'data' parameter, since we need to be able to tell our server function which data subset to plot in each tab
@@ -9752,6 +9826,7 @@
   
 } # END server function
+

Now let’s use our module:


@@ -9759,6 +9834,10 @@ First, since we’ve saved our gapModule.R file to our app’s directory, we’ll need to source it at the top of our app.R file:

+
+
+
~/modularized-app/app.R
+
#..............................setup.............................
 library(shiny)
 library(gapminder) 
@@ -9774,6 +9853,7 @@
 europe_data <- filter(gapminder, continent == "Europe")
 oceania_data <- filter(gapminder, continent == "Oceania")
+

Now let’s use our module:


@@ -9781,6 +9861,10 @@ Next, let’s use our module’s UI function. We’ll need to define/name each of our tabPanels (one for each of our six regions), but rather than building a plotOutput and sliderInput inside each tabPanel (each with unique Ids), we can instead call our gapModuleUI() function, and ensure that each time we call it to supply a unique character string for our id parameter.

+
+
+
~/modularized-app/app.R
+
#..............................setup.............................
 library(shiny)
 library(gapminder) 
@@ -9816,6 +9900,7 @@
   
 ) # END fluidPage
+

Now let’s use our module:


@@ -9823,6 +9908,10 @@ Finally, we can re-write our server. Rather than writing out the lengthy code required to make each plot six times over, we can instead call our gapModuleServer() function, supplying each call with ids that match those used in gapModuleUI(), along with the appropriate data subset. Now, run your app! If written correctly, your app should run exactly the same as your initial version.

+
+
+
~/modularized-app/app.R
+
#..............................setup.............................
 library(shiny)
 library(gapminder) 
@@ -9873,6 +9962,7 @@
 # Run the application 
 shinyApp(ui = ui, server = server)
+

Additional module resources


@@ -9916,7 +10006,7 @@

-

Additional data presentation frameworks

+

Additional data presentation frameworks


Shiny is awesome, but depending on your goals, vision, and end users, you may not need the full functionality that shiny provides. You can potentially save yourself (and your clients) the stress of deploying and maintaining apps by first considering other options: @@ -9935,9 +10025,14 @@

Embed reactive shiny components (e.g. inputs & outputs) in Quarto documents. By using some fun new code chunk options, you can instruct Quarto to spin up it’s own self-contained shiny server to run your reactives. Read the Quarto documentation to learn more and check out some teaching examples here.

-
-Logos for htmlwidgets, flexdashboard, and quarto. -
+
+
+
+

Logos for htmlwidgets, flexdashboard, and quarto.

+
+
+
+

Example flexdashboards built by some familiar folks

@@ -10046,9 +10141,14 @@ I’m excited to see what Shiny new apps you all create! -
-A gif of sparkles that appear to be moving out of a dark background towards the viewer. -
+
+
+
+

A gif of sparkles that appear to be moving out of a dark background towards the viewer.

+
+
+
+

@@ -1579,7 +1579,7 @@

-

Rule 3: Access input values with input$<id>

+

Rule 3: Access input values with input$<id>


Recall that in our UI, we gave our sliderInput() an inputId = "body_mass_input". @@ -1757,7 +1757,7 @@ Both shiny and DT packages have functions named dataTableOutput() and renderDataTable()DT::renderDataTable() allows you to create both server-side and client-side DataTables and supports additional DataTables features while shiny::renderDataTable() only provides server-side DataTables. Be sure to use the one from the DT package using the syntax packageName::functionName().

- There are lots of ways to customize DT tables, but to create a basic one, all you need is to DT::dataTable(your_dataframe) + There are lots of ways to customize DT tables, but to create a basic one, all you need is DT::dataTable(your_dataframe)

@@ -1795,7 +1795,7 @@

-

+

See next slide for a solution!

@@ -1939,7 +1939,7 @@
-
+
@@ -3008,7 +3008,7 @@
-
+
@@ -3294,7 +3294,7 @@
-
+
@@ -4269,7 +4269,7 @@
-
+
@@ -4608,8 +4608,8 @@
-
- +
+
@@ -4663,8 +4663,8 @@
-
- +
+
@@ -5441,7 +5441,7 @@
-
+
@@ -6731,13 +6731,13 @@

3 ways to add CSS styling to your apps


-You can (1) add styling directly to tags, (2) add CSS rules to your header, and/or (3) build a stylesheet that is applied to your app. Creating a stylesheet is the preferred approach, and you should do this whenever possible. +You can (1) add styling directly to tags, (2) add CSS rules to your header, and/or (3) build a stylesheet that is applied to your app. Creating a stylesheet is often the preferred approach.

@@ -10009,30 +10009,23 @@

Additional data presentation frameworks


-Shiny is awesome, but depending on your goals, vision, and end users, you may not need the full functionality that shiny provides. You can potentially save yourself (and your clients) the stress of deploying and maintaining apps by first considering other options: +Shiny is awesome, but depending on your goals and end users, you may not need the full functionality that shiny provides. Importantly, you also can potentially save yourself (and your clients) the stress of deploying and maintaining shiny apps by first considering other options:

-
+ +Logos for htmlwidgets, flexdashboard, and quarto.

- Widgets aren’t only for Shiny! Embed interactive htmlwidgets into your R Markdown documents that range from geo-spatial mapping with leaflet to generating network graph diagrams with DiagrammeR. Check out the htmlwidgets for R - gallery for many more options. + Embed interactive htmlwidgets into your R Markdown & Quarto markdown documents that range from geo-spatial mapping with leaflet to generating network graph diagrams with DiagrammeR. Check out the htmlwidgets for R - gallery for many more options.

- Compose multiple widgets into a dashboard using flexdashboard. Based in R Markdown, this framework allows you to produce dynamic dashboards using tools you are already familiar with. Find example projects and their source code here. + Compose multiple widgets into a dashboard using flexdashboard. Based in R Markdown, this framework allows you to produce dynamic dashboards using tools you are already familiar with. Find example projects and their source code.

- Embed reactive shiny components (e.g. inputs & outputs) in Quarto documents. By using some fun new code chunk options, you can instruct Quarto to spin up it’s own self-contained shiny server to run your reactives. Read the Quarto documentation to learn more and check out some teaching examples here. + Embed reactive shiny components (e.g. inputs & outputs) in Quarto documents. By using some fun new code chunk options, you can instruct Quarto to spin up it’s own self-contained shiny server to run your reactives. Read the Quarto documentation to learn more and check out some teaching examples.

-
-
-
-

Logos for htmlwidgets, flexdashboard, and quarto.

-
-
-
-

Example flexdashboards built by some familiar folks

@@ -10082,7 +10075,7 @@

Great Shiny resources


-A quick Google search will yield lots of online resources, forum discussions, video tutorials, etc. for building Shiny applications. Many are linked throughout these slides, but here’s an attempt at putting some of those that I referenced most often all in one spot (along with some that we didn’t have time to cover). Be sure to poke around online yourself, and let me know if you come across any that you find particularly useful so that I can add them here! +A quick Google search will yield lots of online resources, forum discussions, video tutorials, etc. for building Shiny applications. Many are linked throughout these slides, but here’s an attempt at putting some of those that I referenced most often all in one spot (along with some that we didn’t have time to cover).

Books diff --git a/sections/16-shiny_alternatives.qmd b/sections/16-shiny_alternatives.qmd index 1a5379a..9db2c7b 100644 --- a/sections/16-shiny_alternatives.qmd +++ b/sections/16-shiny_alternatives.qmd @@ -17,19 +17,7 @@ format: revealjs


-

Shiny is awesome, but depending on your goals, vision, and end users, you may not need the full functionality that shiny provides. You can potentially save yourself (and your clients) the stress of deploying and maintaining apps by first considering other options:

- -. . . - -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Widgets aren't only for Shiny! Embed interactive [htmlwidgets](https://www.htmlwidgets.org/) into your R Markdown documents that range from geo-spatial mapping with `{leaflet}` to generating network graph diagrams with `{DiagrammeR}`. Check out the [htmlwidgets for R - gallery](http://gallery.htmlwidgets.org/) for many more options.

- -. . . - -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Compose multiple widgets into a dashboard using `{flexdashboard}`. Based in R Markdown, this framework allows you to produce dynamic dashboards using tools you are already familiar with. Find example projects and their source code [here](https://pkgs.rstudio.com/flexdashboard/articles/examples.html).

- -. . . - -

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Embed reactive shiny components (e.g. inputs & outputs) in Quarto documents. By using some fun new code chunk options, you can instruct Quarto to spin up it's own self-contained shiny server to run your reactives. Read the [Quarto documentation](https://quarto.org/docs/interactive/shiny/) to learn more and check out some teaching examples [here](https://quarto.org/docs/interactive/shiny/#examples).

+

Shiny is awesome, but depending on your goals and end users, you may not need the full functionality that shiny provides. Importantly, you *also* can potentially save yourself (and your clients) the stress of deploying and maintaining shiny apps by first considering other options:

```{r} #| eval: true @@ -40,6 +28,18 @@ format: revealjs knitr::include_graphics("images/shiny_alts.png") ``` +. . . + +

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Embed interactive [htmlwidgets](https://www.htmlwidgets.org/) into your R Markdown & Quarto markdown documents** that range from geo-spatial mapping with `{leaflet}` to generating network graph diagrams with `{DiagrammeR}`. Check out the [htmlwidgets for R - gallery](http://gallery.htmlwidgets.org/) for many more options.

+ +. . . + +

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Compose multiple widgets into a dashboard using `{flexdashboard}`.** Based in R Markdown, this framework allows you to produce dynamic dashboards using tools you are already familiar with. Find [example projects and their source code](https://pkgs.rstudio.com/flexdashboard/articles/examples.html).

+ +. . . + +

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} **Embed reactive shiny components (e.g. inputs & outputs) in Quarto documents.** By using some fun new code chunk options, you can instruct Quarto to spin up it's own self-contained shiny server to run your reactives. Read the [Quarto documentation](https://quarto.org/docs/interactive/shiny/) to learn more and check out some [teaching examples](https://quarto.org/docs/interactive/shiny/#examples).

+ --- ## {#flexdashboard-examples data-menu-title="Examples of flexdashboards"} diff --git a/sections/17-additional-resources-final-thoughts.qmd b/sections/17-additional-resources-final-thoughts.qmd index 984446c..ea8a282 100644 --- a/sections/17-additional-resources-final-thoughts.qmd +++ b/sections/17-additional-resources-final-thoughts.qmd @@ -43,7 +43,7 @@ format: revealjs
-

A quick Google search will yield *lots* of online resources, forum discussions, video tutorials, etc. for building Shiny applications. Many are linked throughout these slides, but here's an attempt at putting some of those that I referenced most often all in one spot (along with some that we didn't have time to cover). Be sure to poke around online yourself, and let me know if you come across any that you find particularly useful so that I can add them here!

+

A quick Google search will yield *lots* of online resources, forum discussions, video tutorials, etc. for building Shiny applications. Many are linked throughout these slides, but here's an attempt at putting some of those that I referenced most often all in one spot (along with some that we didn't have time to cover).

**Books**

diff --git a/sections/3-first-app.qmd b/sections/3-first-app.qmd index 3b6796c..586a3a0 100644 --- a/sections/3-first-app.qmd +++ b/sections/3-first-app.qmd @@ -770,7 +770,7 @@ knitr::include_graphics("images/3725_5191.png") ## {#rule3.1 data-menu-title="Rule #3a"} -[**Rule 3:** Access input values with `input$`]{.slide-title} +[**Rule 3:** Access input values with `input$`]{.slide-title3}
@@ -959,7 +959,7 @@ knitr::include_graphics("images/DT.gif")

**Tips:**

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Use `?checkboxGroupInput` to learn more about which arguments you need (remember, all inputs require an `inputId` and oftentimes a `label`, but there are others required to make this work as well)

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} Both `{shiny}` and `{DT}` packages have functions named `dataTableOutput()` and `renderDataTable()` -- `DT::renderDataTable()` allows you to create both server-side and client-side DataTables and supports additional DataTables features while `shiny::renderDataTable()` only provides server-side DataTables. Be sure to use the one from the `{DT}` package using the syntax `packageName::functionName()`.

-

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} There are lots of ways to customize DT tables, but to create a basic one, all you need is to `DT::dataTable(your_dataframe)`

+

[{{< fa angle-right title="a bullet point" >}}]{.teal-text} There are lots of ways to customize DT tables, but to create a basic one, all you need is `DT::dataTable(your_dataframe)`

**And remember** to follow the steps outlined on the previous slides (jump back to [slide 27](https://ucsb-meds.github.io/EDS430-Shiny/#/reactive-plot-app1)):

@@ -971,7 +971,7 @@ knitr::include_graphics("images/DT.gif")

**3.2** Build reactive objects using a `render*()` function

**3.3** Access input values with `input$`

-

See next slide for a solution!

+

See next slide for a solution!

--- diff --git a/sections/9-themeing-apps.qmd b/sections/9-themeing-apps.qmd index 6f25c4b..0e4b652 100644 --- a/sections/9-themeing-apps.qmd +++ b/sections/9-themeing-apps.qmd @@ -568,11 +568,11 @@ body <- dashboardBody(
-

You can **(1)** add styling directly to `tags`, **(2)** add CSS rules to your `header`, and/or **(3)** build a stylesheet that is applied to your app. **Creating a stylesheet is the preferred approach, and you should do this whenever possible.**

+

You can **(1)** add styling directly to `tags`, **(2)** add CSS rules to your `header`, and/or **(3)** build a stylesheet that is applied to your app. **Creating a stylesheet is often the preferred approach.**

::: {.panel-tabset} -## tags +## 1. tags

Add styling directly to tags. **It's best not to use a lot of these!** It's easy to lose track of your "in-line" styling in large projects, you can't reuse rules easily, it's hard to keep styling consistent, and it's difficult to implement large stylistic changes.

@@ -623,7 +623,7 @@ shinyApp(ui, server) :::: -## header +## 2. header

Add CSS rules to your app's header (`tags$head`). This is a little bit better than option 1 since it allows for the reuse of rules, however, styles can't be cached (i.e. saved for future usage when you reopen your app). **Note:** explore Google fonts [here](https://fonts.google.com/) and check out [this slide](https://ucsb-meds.github.io/customizing-quarto-websites/#/select-fonts) for instructions on selecting a font.

@@ -680,7 +680,7 @@ shinyApp(ui, server) ::: :::: -## stylesheets +## 3. stylesheets

Build a stylesheet (a `.css` file) inside your app's `www/` directory and apply your styles to your app's header (for shinydashboards, include your header inside `dashboardBody()`. **This is the most ideal approach** -- it allows for style reuse, caching, and keeps styling contained in one spot. **Tip:** use `touch styles.css` in the terminal to create a new `.css` file.

-

+

EDS 430 - Intro to The word 'Shiny' in cursive lettering, which is the logo used by Posit for the shiny package.

Building reactive apps & dashboards

-



+
+
+

Published: Oct 10, 2022

+
+

Last updated: Oct 06, 2023

+
+
+

Sam Csik |
Data Training Coordinator
National Center for Ecological Analysis & Synthesis

-

Master of Environmental Data Science |
Winter 2023
Bren School of Environmental Science & Management

+

Master of Environmental Data Science |
Bren School of Environmental Science & Management


@@ -412,22 +423,18 @@

-
-Check - Prerequisites -
+

Prerequisites

+

This workshop assumes that participants have the following:

-angle-right - R/RStudio installed & a basic familiarity with the language + R/RStudio installed & a basic familiarity with the language
-angle-right - A GitHub profile & git installed/configured + A GitHub profile & git installed/configured
@@ -436,8 +443,7 @@
-angle-right - You have the required R packages installed. You can install/update them all at once by running: + You have the required R packages installed. You can install/update them all at once by running:
install.packages(pkgs = c("shiny", "shinydashboard", "shinyWidgets", "DT", "leaflet", "shinycssloaders", "tidyverse", "bslib", "fresh", "sass", "reactlog", "shinytest2", "palmerpenguins", "lterdatasampler", "gapminder", "markdown"))
@@ -449,11 +455,8 @@

-
-Star - Table of Contents Star - -
+

Table of Contents

+

We’re going to pack a lot into two days. Here’s what to expect:

@@ -506,37 +509,29 @@

-

-Star - Part 1: High-level overview of Shiny -

-


+

Part 1: High-level overview of Shiny

+

-angle-right - What is Shiny? + What is Shiny?

-angle-right - Anatomy of a shiny app + Anatomy of a shiny app

-angle-right - Where to find examples + Where to find examples

-R Project - What is Shiny? + What is Shiny?

Think interactive web pages built by people who love to code in R (i.e. hopefully many of you!), no JavaScript experience necessary.

-
-Shiny makes building web apps easy -
+

Shiny makes building web apps easy

+

Shiny is an R package that makes it easy to build interactive web apps straight from R. You can host standalone apps on a webpage or embed them in R Markdown documents or build dashboards. You can also extend your Shiny apps with CSS themes, htmlwidgets, and JavaScript actions. - RStudio

@@ -551,17 +546,15 @@

-Puzzle Piece - The anatomy of a Shiny app + The anatomy of a Shiny app

What does a Shiny app look like under the hood?

-
-The basic anatomy of a Shiny app -
+

The basic anatomy of a Shiny app

+

Shiny apps are composed in two parts: (1) a web page that displays the app to a user (i.e. the user interface, or UI for short), and (2) a computer that powers the app (i.e. the server)

@@ -572,9 +565,8 @@ The UI controls the layout and appearance of your app and is written in HTML (except we use functions from the shiny package to write that HTML). The server handles the logic of the app – in other words, it is a set of instructions that tells the webpage what to display when a user interacts with it.

-
-Widgets are web elements that users can interact with via the UI -
+

Widgets are web elements that users can interact with via the UI

+
@@ -585,19 +577,16 @@


-angle-right - Widgets collect information from the user which is then used to update outputs created in the server. + Widgets collect information from the user which is then used to update outputs created in the server.

-angle-right - Shiny comes with a set of of standard widgets (see left), but you can also explore widget extensions using a variety of other packages (e.g. {shinyWidgets}, {DT}, {plotly}) + Shiny comes with a set of of standard widgets (see left), but you can also explore widget extensions using a variety of other packages (e.g. {shinyWidgets}, {DT}, {plotly})

-
-Reactivity: a brief intro -
+

Reactivity: a brief intro

+

Reactivity is what makes Shiny apps responsive i.e. it lets the app instantly update itself whenever the user makes a change. At a very basic level, it looks something like this:

@@ -610,41 +599,32 @@

-Laptop Code - Can I see an example please? + Can I see an example please?

I’m glad you asked! There are lots of great examples online, including those developed by Bren alumni, as well as built-in teaching examples.

-
-Example shiny apps built by some familiar folks Face Smile - -
+

Example shiny apps built by some familiar folks

+

-Droplet -HydroTech Helper (video tutorial), by MEDS 2022 alumn, Daniel Kerstan, developed during his time as a USGS Hydrologic Technician – access real-time monitoring of USGS hydrology sites and equipment + HydroTech Helper (video tutorial), by MEDS 2022 alumn, Daniel Kerstan, developed during his time as a USGS Hydrologic Technician – access real-time monitoring of USGS hydrology sites and equipment

-Fish Fins -Moorea Coral Reef LTER Shiny Application (source code), by MEDS 2022 alumni, Allie Cole, Felicia Cruz, Jake Eisaguirre & Charles Henrickson as part of their MEDS capstone project – visualize spatial and temporal patterns of coral reef stressors surrounding Moorea, French Polynesia + Moorea Coral Reef LTER Shiny Application (source code), by MEDS 2022 alumni, Allie Cole, Felicia Cruz, Jake Eisaguirre & Charles Henrickson as part of their MEDS capstone project – visualize spatial and temporal patterns of coral reef stressors surrounding Moorea, French Polynesia

-Water -Marine Mammal Bycatch Impacts Exploration Tool (source code) by Dr. Megsie Siple and colleagues – compute population projections under different bycatch mortality levels + Marine Mammal Bycatch Impacts Exploration Tool (source code) by Dr. Megsie Siple and colleagues – compute population projections under different bycatch mortality levels

-Book open reader -Novel-gazing (source code) by Dr. Megsie Siple – a fun app for exploring your Goodreads data, inspired by community ecology + Novel-gazing (source code) by Dr. Megsie Siple – a fun app for exploring your Goodreads data, inspired by community ecology

-
-The Shiny packages comes with 11 built-in examples -
+

The Shiny packages comes with 11 built-in examples

+

-angle-right - Check out the available Shiny app examples by running this code in your console: + Check out the available Shiny app examples by running this code in your console:

library(shiny)
@@ -652,8 +632,7 @@
 

-angle-right - Run the first example, which plots R’s built-in faithful data set with a configurable number of bins: + Run the first example, which plots R’s built-in faithful data set with a configurable number of bins:

runExample("01_hello")
@@ -664,8 +643,7 @@

-angle-right - These working examples also come paired with source code for you to see how the app is built. For example, the sliderInput is built with the following code: + These working examples also come paired with source code for you to see how the app is built. For example, the sliderInput is built with the following code:

# Input: Slider for the number of bins ----
@@ -686,7 +664,7 @@
 

-play +Play Setting up your Shiny app

@@ -694,9 +672,8 @@

-
-Create your GitHub repo -
+

Create your GitHub repo

+

Let’s start by creating a GitHub repo to house our soon-to-be app(s), then we’ll clone our repo to our computer. I’m using RStudio to clone my repo in the example below, but you can also do this via the command line using git clone <repo-url>.

@@ -704,9 +681,8 @@ A gif demonstrating how to set up a GitHub repo and how to clone that repo to your computer. Start by clicking on the 'Repositories' tab from your GitHub profile, then click the green 'New' button. Give your repo a name, check the box next to 'Add a README file', Add a .gitigore by choosing 'R' from the drop down menu, then click the green 'Create repository' button. From your repo landing page, click the green 'Code' button, then copy the URL to your clipboard. In RStudio, select 'New Project' from the top left 'Project' button, select 'Version Control', then 'Git', and paste your URL in the 'Repository URL field'. Your repo name should be auto completed in the 'Project directory name:' field, but if not, press the 'Tab' key. Click 'Create Project' to complete the process.

-
-Shiny app repo structure -
+

Shiny app repo structure

+

Not much is required to make a functional app (which is awesome) – for a basic app, you really just need an app.R file where you’ll write the code for your UI and server. To stay organized, we’ll place app.R into a subdirectory (e.g. /myapp), which will also house any dependencies (e.g. other scripts/files/etc.) used by app.R.

@@ -714,9 +690,8 @@ A visual representation of a basic shiny app repository file/folder structure.

-
-All Shiny apps begin (in almost) the same way -
+

All Shiny apps begin (in almost) the same way

+

You have the option of creating either a single-file app or two-file app, and they look nearly the same (we’ll see both formats in the coming slides).

@@ -727,9 +702,8 @@ Why two options? Before v0.10.2, Shiny apps needed to be split into two separate files, ui.R and server.R, that defined the UI and server components, respectively. With v0.10.2+, users can create a single-file app, app.R, which contains both the UI and server components together. While it largely comes down to personal preference, a single-file format is best for smaller apps or when creating a reprex, while the two-file format is beneficial when writing large, complex apps where breaking apart code can make things a bit more navigable/maintainable.

-
-Create a single-file Shiny app -
+

Create a single-file Shiny app

+

You can create a single-file app using RStudio’s built-in Shiny app template (e.g. File > New Project… > New Directory > Shiny Application), but it’s just as easy to create it from scratch (and you’ll memorize the structure faster!). Let’s do that now.

@@ -762,9 +736,8 @@

!35N-h%Knumftu3XRO(&xri;Pd8h@6 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 z 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

)Nw7{35%!lU+i^LjAA9v%|f;bIi5rexbOxcjx(I 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 z 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 literal 0 HcmV?d00001 diff --git a/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.woff2 b/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4d904aab4fb5cf17f0bcbfa1bb391603ff2ceb6d GIT binary patch literal 105536 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 z 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
b{1Un3e%Cgw2 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 Qp8T2TST4Tv3;!Pj1NhvUfdBvi literal 0 HcmV?d00001 diff --git a/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.ttf b/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..23e3febe0d8195ea33e82f21880ef5ac5e5f4717 GIT binary patch literal 60520 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 literal 0 HcmV?d00001 diff --git a/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.woff2 b/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..80e3b1247cec5162882db0342ad99f5da8acca30 GIT binary patch literal 23940 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 z z*#h$>mlvDvZ}}yrfskA?{XKp9^ciz~#)MPVO_vcUSgW;ng2Mbh1j)v*^SvP)LSPY$ zA;B8A4aC_XmKG`hpa?*35Jdv10>x8?)J|>nfSvuBr6^(!&lV$f#5<)PoeSq8(RBQr z9aDwOgNVRZ#U~*+{#GF#PO45igX*{Nfc>DDoB)GZME*nhRx~l4pAn=EqaG#)yW!Eu z60CaC@(v`(_{s_ns&8mk)(B7x=nXbC2B`XJoxbr2@H zMOmvu>l0@=b?)YLrvCPNCVjIRNS!>AL-N}8#ocMdUt_jPT$_l5?LxWMuF@ue_HKRP zm+UucmQ`!;{q2b>2mjbnfI%!A!P|&ukK4t(nxK{9wOeofV*WU3y2pC60{TWi23U}S zg{Aoj&oLxSd^!Q6^K6;Rn~T#a3#%oo#S!Eg83Kl(exB*#MtmIT9J{$ez?YkR{jX z-I_*5eZ<7!&EvT5o%a`=z2xjL<`sqmS*o&u*S)uR>gx*Dy%Q_<9`UrMA8&dmjw@qy zw!-Mb5F!^8X@R4yWfXy$e=EFxw`X;Hb{A;$x3KQ_1t-9uac|shaR#w7<<;{rpH^sTQ)d{ z!W-o!VIgS&xZouGo1rWW=E0TLq$;5-vKGvr@Hyc(nx%0sGcU`+xFd5hYQ{$=8dIZA zCJjG0T$=guF_?D|gFiaen2@FvFu4ax6~ysb+ojZ_yF3fNxwZbW#_sh?sT>k95$`sn z?|ZO*^);c>7#d;vkcmYXg77aa#6ZA6#S<_J2cU(EDTUpKc^|%DSU4~(0V;aV;M6Ro z4WI;)OUoEgZI6N&lW|h3SRR&gGRh@95c6+ra##VNrdtQyM-T)k0f%L4@Lh1!G+#(V zY&h==#`-hs*sTXL~TvK?d_mzv!*My zL*@$3=Ud8F&48Hm;GDS%_~Q1$FYwaPD?+aWVS1{k#Mf;_A%aELDnm`znA$BEaJ0xN zb`&21kThKyf-GlXr}hJthy($c5chyAu8*H@Hy{~oY%RC-ZU{nCTz!d%2Rwd!JDeUT zzHdR%!4U(NJGK}8+IHA~O)Z+jgLQKSB&59bWf0aA(1EUF{3|2{@T7x4APPe~L23Xh z;fcgU;0`cl)F;3*ycVtpKH$A*kvW2%S1Q0f;9U1VWwWUW9N$O~5_ZFi0!7kY&byQ+ z+Dpku3hScmm=#B6Ik`r${3QB2KX(a!)bGV^ngBB_?rU9~b&kO?{dN^uWPN<$B1l`1 zIWp>-cA64L&7L;Q^JNbow_-<7Fj~KwA`TQp0 zDAq$)a5XYI1-(#IYJmntT?&OIueXGQO+3>=lrVP@um~OgMksbaP8WVA?iR+%SlWo? z3s3{WWe~Kx7kVsaT9rI@GjeLxmV5ud^T8D z^}(jm*$C$jA_#zc$WNwSy-i8)0_X`_1Dr8QF8g}6C)hzT6`j<;nB|6o%rMQ@Qp2o0 z2FEMKCt9RkQdqNA*Nm#JMGi)|Zt-t>Ldsx67Xy`0KEsWeDlkK{7S@*Q>gT%LrjZ%U zd0qdikAS~DoJ+Y@j(vYo=niHQDA1Px(Z`Qi>zm;>XBlD+ta-4y z&N~_94gXU0VY)sUkDr9KFQQL;Fb#l@K2-ym^8y*Can%pjW@-(dH^l_NQXT)w!zGJ2 zU4?{rDPT!gH+h)G4p?tsCxaT-1(VV~QwUv}ZmA+;#or8lYkDau*PJY>l}KttogIOD z`tD=xSu`?i^)jD#l4{JFn?vGDodW?0Fs(nJDYn(3J$HIKc&$DyNt+4}Wfm7t%uQRW zlXS1&EK~-M`>*S2c6nJ>1hN3WXnu4!KqI2m`vxoY#gp$vphtj%PcLNXN8$C+_}MBY z_O9y7*RG^1)d?>{!J^p29M@H&mW?;3NxET~%^c|1kyC0WSm)Vj4i-hgP1 zxD`Q5L0rc5oZINFb4(#mVjK~%gQM10bOc>aYo;NTK6 zZe0!>6p}yjYK@~Y)Va^2f%m4WBk^0* zdNVag&uvo0tBG6D@}T0qO%Z=(YO1ksUjushcj6<}sarfd3SqrJbeQ?W5D&}Qtke)Q zFa4gHx-hqyJtmNz6-Hj|52f{&2#H-LRvH*{tL{?j7+jslWS-9F;N+N#B$Do(mH620 zc_$kina(6C9$>!_j=mswYvIF#J`y^t#W}|y_fr0)co!K*-H#y^KO*z*N+okwB`W9` z$M5f=y`w))i>GJv6kR2WEV8dcwAN3c{V;Dx2hd)w>ctJ0Jz|6k%k-5?x6o+43|5bj zp64ZyP>|_7_Y{%<4^BT}o)|?a^;mj!URz{L$N^GB9Kd=NFr8k<6VWgs zDgFvTfxQls-`Jf<)KU64`2T(`26BV6aqWlgFxG3m6loV=YYDo7_SNfoggx>1UqE9teOTntjM)Z{79HB= zV!vHid+5wZo*jzNB`Y!X0a)_3iTcp&x@g5a(jh&CG)Oz9=>^Ct90+h@8V zj#LN`!}(A)Hm$Fwla0o{pG+eE81s;A=3?>k>PVrO_-Xy~Pg4aTAsD9*F3Y2+0p~pv z6ZWf_n~ZO-J0;`-68(=wD0^mgKlB`fy*AJ^sNz6*IzLR4eWvBN**6$!!Jit!=Rb{V zQRk;Wrsdak>a)5Pb^W}q?>@^gSjw#*+td#pVT3DRdGu|%;JSXkuJ7LVC=2r?1o{Wt z`wH+`ZQrAq?zc#YlF$a0fcXw*gQ=$e=ReUBy6N*!a6Aefhgc_7cF&+0uvR1Hg%F(| zA5Ur-J{3+j^)t9F@gJPhQevM)>CkJu5g~Jn5YQ(Xxi1q-Ln&`Zmu?X`9pNm&t|NAK zZ|$V+bHA_8CtJrUX6lOdarx?_`}S3t03isAeW8#x#)z&qoD8K)^b!&j%!A}ZY3)8h z9b#ZC^PWxpF%fPn=INaN-1oT#8;m;@X?uC`@cdJ@d6@bs{q92nS>=#7|7}THjttP= zKrBO{4$g!_NE7uoIkV|6Q|-}LG%$P5hBKgAYjP&@z`VY%F_jwppSmq-oO7D_B{27K z{SuU*HMNG7$X)ovt_s~4>H~~4x)5u~t|>QCW(35v{LDE6D1s-nR?$K;salvsXj}l2 zAXU2;y+UllGfs=(P)+Z|2kLz@)!H3Z1|U~Q=3cja^5pXC<`9~PaOCP8wUO4;{QT75 zyG=Cv#$aHIV6|ATM&9;i=)q4gx?78I zKG6^|;Dqu(xUwJ@P>VkVhgK&XhTRDQ1H*1T69L5ih1$3oP)K~S*fd7B7%wA+Ba_C2 za~1k;^#!BeC0=RXE_(K3YPokf{`J;Vj}*b zZql_spAn5mYQ z+al^N(^b4}=JJBusjxNpCh!WFB2$c?n{Uvk7StQ+qL^9y2fZ`K5^2r@7}VDo&8QK;oLQx{5IvPw<#5`^QWG!xQ>C{64UtC+yRBMnwpwgdXlmiL~kt*La|?m z)$NGnlMQ%P4eNv`j**9-+((nZTmdjmhL;hmSz1!|VLhmIJ#uJ7IeW(|cRqXHyyM(= zhs|8cKe?%f1Sg0%Nr7|REtVejSKjL66?q;L!ieUoC+ z!BNZ`c63KjOH^#t66V854;Giu64-5z~ZFTLiv zYpzPgqOoo?9*@>v#^XH@s#5ChGcypjMg|)rnQTn1N7Zp&e@yp8AAcS`08BO~ZF|p; z$L*izJ}u~$Hx6qUhdo$p#h7lvH-7|3dI9*O%fjq=K#B;lm-wFS=El*5`HYu7Je-+d zINH}=*PX!i+AYuo>-{f&v0txNQ(uHUKHWT|%N%M>8;J0fBRf{`LG- zVoSReF%~z#r?;cUlr)~c{X071^#bB_vx4h`D`yYP%~ibhQ;7HVw%99F=H?D~nq6>! z(BjkAO)jo}>|;+T^~A?Mwz@cp&W(;P=&txv{Q|PA_w<|V`nS41@nL^b)q8ao?j!Xg z`b(asaheSu{*^UTf%#{JsUCwdl@`UV?n94;?AL5o5Au&WL77hV2tF&yW zN~L`OY63WUDt5@5zoq*~iB zTx-40&=FSF_kOG6e3~p@OiAoN$7It2C*{6eX0Ha3Zpo+g-fV&JEln!HBSjLchY$Ay ze_mU*KN9hqZ83j%C2+^5cp_tR4*cnCXz2Tao{VWhqz$4Bn#QO@Er>T8VoKmxp^Uf@ zmrYCsB6W7WCyqzT98j^e%O}jCn?Q28x57o>HycIdMDOH2VAUZtZSnoyrkWlq&kojOGq;v*VK^pS`*tdo5f{1qMwIjo>{9bexn z1ulhRi9s~Z*qUAi6ampca7jCQml)|Q0sd9*!1QzkYZS446Jl9n2M=DylD=Z#U!lFC z&NO``q2^zH6mrBeGU>!wSNyuAB`(Gbs16gp7I6?C7>+UR1Uc}l6R?hZx%5dEh6FT6 z5+wqgnYQJRq>&>ZYG@-b?^&MjNnRIo3u1y^cg8T0;rX;N*}HDf-Nc{xjLDOcq;xa5 zWdQvtDl~y@QnZX}O;BV$XBeD0Kgo9oB5Bp}pVZXnM+T?$J_7#ki@%y~7(um>eltaI z?0g!M_&uu*SX2>-$~;l8BF1|e*^q#3n5C^^5=j)1j7!3j!NOFP=#>z4)I}?r0U=1j)+L1^*`zuTv(9C8B4|x~rfvLNycU1>R4wqn$2$v4qwtuDW zIJEugA&4(u9MlN48d}D}O3fLPgsv4~aiZJp~vg8TrSM z0(1?w|1fkk9l2}!SAY#=A|{>Z5vYM>#5=F}J{FrDtdP8LWolCE*dr%ul&#ib6B88_4uLQj{6ZYG4Nn~*w4ETj(mAjDhtlM{~k zOz)KG45*M5zinbFNTT6`)fVex zy`90m3^Onl@*F}u5%w6iI@qT*87hV9p&sVqo8XCi9dh};GxYw@M?#;J*#*p0f&roE znM*jt&1F=amI47$d%S6x&?SFufKkcYcmv)!a|y_s3IP7+^wfXtoK+S_?3Tku;9(SD zoXD84pQ^NWUhYT!gm^rq{&w(RIeY6j`~Kyuc~-Xmde^6qJl#`~3Us~deir86>W&K# zbn4Ljd@kaxxQ#?|^Ye$$-c>X0oAV*_?xAP%BoOSN`GlTVkZ-TB!x0#UJdWuC{6jd% z3O1ZZ>>S1k)K4n$#YOUvV?jOlw3!IZxmvcce<4D>VbVKN-5ZXCEo_xAR>WRGQ`kWj z1L3Jr^fO`J+lk|YUx`&$;$jj+J$JO@;e2kaVULbXQv~5;j5m#m@a3MIuwk)(kcwIr zMB|HiJJp@BXY8r2ZZjM+;!!p~HalH}(n)s?phxIArj6ZpAs~h~q1kY=KqPHoev`vk zI)OIy&=fp8#DtwL9oS(wxitYT#aa&1 z{ezto{bPfW#ST_F?YTwhJ*jSM$|y0o>xN@0{?VBm(&>94jMx|5n2b%nnp1J0x$qZw z%@m`{rJ3|?a9O8ccts+8fOB_X=LC2MbgP2#6b)~u9dOqRc{LcQMI$2rU?=1s#1a1C zIR@~84vp_Br{kzY6c7#tE-&Q9sO~5&F9Kz>z6$@v238^)*^;OZumO|=G4H_pMMV?_ zC%8gDb4H+=wA9_eIGQlw#vT)3v8QpKaADb|t7*c7k!r|`qfjH~j}}H-DGPlWIuqr> zWyI#Z1kqn!#GGjk8e6I$gA>|~_Ae?iv}uu${m|lKdkMRFEp@t`t|(jR1`xl&zS&rE zi8bRO_oZAjjP4`3baA=z1b3;_StETiZu!M4-GjH87H-_8a|g?fMy=MUR}SXV zd?8!rk*{z4&Ac(VpEyZAO}q03_NP4xN~gt{#)_m zN}wrAsJ?N%7|m>O?zCpOr#0`{dKcnvFuNgeDv^Bh4f^s8yS;#RhC@-v4@Y1h&%j>1 z7sNz5DFFGn@HYp_fjN{ciPC5n+dDP1XeH*~MGjapWpBbtoq#=m4^l!nYYF&S*X-2S z!g;Hl4@c5djXi^}E;Odn5p@=B8tg6z4-|s3dpCsBbOK8?MF}=O znRh%GZiJpf+g>Dll%Qo8TJ6!m$b+0|1l144D#}Dh7C{67d83pZxvnixf zkGpmlc@gyzD+C-)R@?PbIa_KjjEumi5P>17h`2kfOGVaUZJY{c?QpuX#A1C1c}gwr ze2G14aj7CwEB!@?zj+GwqX}3Y4qy${)wE-_h7oB@LNL>A5CVh+1%?W;-+@6ArWJ%0 z@dx+@X6zQ@pqG*Cpjaw4D+k+*A_T?Z^)7fn?L8~1zNt}DohBU(&KRXMOjlQ3gfxmm zQ?Wt}D{ITAjw3Ze%~B62b<2G8)~Bas$D!CLza?TkkHyvv&&b${gPM{8Nq&eKav`3q+h1>2;na;goOMM@Lk&? zv~+~d!}Jd_6flUuL_;Uo4;ZVKJ$&@T&)Qa@9|SRe@bvd_u`hR2{~QdVme za!IpaG?Jzx6ADuP)DKL-kx?#t-q}i_s>3eR=?XTp#U47QM2UW<0r|i)GhGs(`3Q1_ zU?CpA8s(-Xm8Mh5)@rRtyH-n=^!OEG8HZt>{H~iqO1o0TD>Yl2$dpm2hrefJJ2nN4%A*K!Ge-vl15BM1L=z#`E`f%_P9sGeSMgh+AP_X-sl ztTc>Fm*7`^-;5ItT>*vReX^$G3@QVfe`;S2nNY9~^%Y6v!`b&KLqj^4@hcBsVOJAf z^U#lV>?Er3D;~yP4Q1Hi>-@ckl&9${ve_%r5CD3tx@TVNJr(N3M<=#E zbY+g9?U{WoVRz3R-wk#ivwBbCq1T^_{TLp9EOe*17v0nK zf*tR+F{&j!Wd11VZVfiqO@q$U59#ardfgP$?dA||_=B=rH~0d2jPW6F-@x}bFgn+U zUWVP0-V%Dy*c(AgL_N)kv;Z~JChL*_GKP8Kf0Njw1NJW0Vm=Z6hk2jp?g}G%C3DMB ziU^A;4CW^)Kp6q@@&ljRm{d`a*{DL0k&YZbb?WdDEiVnP|7;|g#ZDiIMBa`d0woqk zF863Snkp1<3OC(o6dROekOexKY=@s%Sq-e&&<8VTTv868# zMMj#|<*>2yle#H)xpvM;XR()iGC7L9b&%aXjAf+`B;j1#!Rq~t1c^nk=fyW&G$NUb z6~fSD;^n~~$=m~;{Gm)ZmaWQRm9esQIe0dG%6t2OQ7;eON$$qbDVXPA>4Zp+bwX36 z4)r9@AF=?|mQ#b5wrWLd=AxO9w{gt6QAC56W?--4!MUihPaDyZN49P*t!!h9>95$UOr6@AZg>$vw?IP93$&feZWq-qfb zaSn!j{@#Oo*h_ceWbgO0Lw)Shh)&oNF=nZCH*?PiVvXb8dzMvip(SX~U*3DwOw5B* z4{)l5ya>92=J$HRkZ^oRy(Z;V4k^66xCBz80ZiMbzz4(xL~zv&2^rx-Ylo(r2q&0| zMxP1^Nrl$du-iJkaKT{ZR~)Nx*k)6yQ^Xiet7~Xv+ugVK;=QdF0$Mf8JFf3R`8#&NF^ zAkVay7l`GK2)`k&k04In^TiT1hk4m-YG7hS>_!7~I1;ceF9ES3ftNr8#(X1=W2oRV zVU%>dDIzn#ibAn#OujbkM>Dy&I5~I))3dE{PL?UTx1j?{G{Udz6ZjQ9TEN|`YNZly z^0K!%$s~4ZQj-XVzwAjfpFauS%kmu}kA9senRNK9LzkD1S2$4WtTO5a8ts?4@FzbQhb|6fNn8ct};pV^hZ7I29YOrgAX8J34a?ZJh_9D%UPKl?j)#C#xGJMc zp5agq*)`-GZy<+N>^_*n&uL%+Mqog@??ysC!hL$LtCwHiKu}$1z@oX2`&|5X=X;}* zGGaIA*WJC-fuT;0jK`X)VitBbVc|U87~+7xs`P>b)13G*pTl4M?*EvL2=?f=cYPB- zt>T;L2WiFU4=3S^xHANU$d;83fVE^5qoG=`8+@F47buAurk?6JC_cZZU2CZwba0aZ zmUO@xN#J}Fg9)jC{c0+mUZ-!x_OO42zABruVW+MMKQ(8W$q_lKQYZ9N3GszBMcuKT z)o!0g(0k5w=UT{k1>Y(YMY$xwL-dlxVw@t+=_2C?%zQagDrLxL^tW()`uRrtQ;E+S zzHbcu*bfcDpb}4lq^P@v*|afUU`gaW&m)viYzOig!&Gue*$bHuTh0A&;M_MX^6Vql-@ItaEy#YIhHaVym7J{2Bt3N2{T+75ncgpL_$in zaf~ss;K_2+KtPXCdZ4;2Dv8yDPz0H;xvT@OWnx^K(|W>OUxNUNbhJ9s=c&K-$HDrR zA78AwW>0cx-<~r1DW=l5VPl1Bh_Ka!<)o6mq@%N@RPdPaQL;gr$X=04FR2d zaVwh7GUw}$a({*j^{{6H6Sy$9fur3GvkDI!QQx-sw6ZZJKgk7!8SgFwot_7}&=%-; zpu0Nt)RyN|3kfTex4C!rLio30;C3O9Rz}F^D+rkL=aLd?`ff`zXLJq)VX8Y0C5Xb@U9mK)AVVz$9v*y4W_gG34PHT7(n zoSG06yem9iIqxs6a;eKy9!AkN_-~x+fv1D-BoeC{>qp)hz0s0BfOZ1*)e7SNEV*s6oC;Y?6K)8c! zK$$_y4*Cg~jo}};Eru08!mrQ5wy1wgr55ZR_}84_BXX2VSA|ULcD6g4FH9}WL+3A) z$1^s9XyAsQDem3hokWs>#AJ7Ap)>>YH5Vmi#><6LbAF+D-Q;+oRLbQ_29y-tos~0Q{l(V{H42Er4H>PLC+7nsM?rojCkt(iu@-ETlAmo2ccA#oTDaz!vKS z2wazk2Y>Qejt~b`r(ihu*v_GNjCJ<0643I%2mq(Ci-!khE14D=J;xRfde3gKIJ}?% z>_rcoD(Awc=cj)y=->mPPlSFo^t+*Nc#_C4Zx>aWAm^Yyaum?n5u>*A$xZ=#N13G^ zPY?;J#d1y_f&-E>Os+WOAe&NiM;QcC!*W23@yb+iu}!>JlN!&-l7CP0gx^0fGZMz;7V&J$Z*_g=JwuF_#-aJI>uSGl z1g}17KF@FHI(!<8YkULfuM(O=1jV(XPlqM4KwBuvqkc>O%A=` zlLm3!7~e^(?I_Dg;MmXRj&8kdn^I`A~B7oi-p8Yy2!MK z#VI*gOU3jQ?s%R_6pHC_41`~J+Oqryj9;6UGJl4)xD{#3uzBiJ_g45A5xr<_He0z@ z3_NFbn43QKgEztJFX+LZ=@zi9`xPZ@4|=?m!GERWxGY^!OeYH6nP8cdR;0_wd9?Om z*MimRq%NaQ1-|V!NN59wJva+N8>hG*LqTZ6UztlX028E4H{8SzqbTXxhMd|{S2S(F zf(`8G%HkR+A^91B1f`ru8@hqtfFALG88r5hc>5#uo**Si+MO+NJVIV`hN6PBw(Z&A zZ}fME(LbOA$Y>43b9@WDp^7ymS22nVId+z5W~6yjqIQ7dva>0+*KKl54z1KQS`%Xz z>9MXrHpaFioDxJ>Lm7${c6SAj55P^0pG1;_*_qNAfP)QCbGesXJc0NkNV<2WA`yFX z&&BKE6PC47i$@~KyOAyu+bPVb8*2;4fa>ne$FTGSp0@1WNfiEtT3fO3p-CHgQ161E z3iq1o%Ok$eM|gj71~KaR@8*kZ-phy_vL_af-CAn_J$jZ39}L#u))p?#ISyJj8E6^c zL>{W`_SYkd2yx>Dy@pbJXYPNvYvV#nru~K)r z)cuZTbXz#1cyRUT^(3MYPNg>wQO62L35n+6>p6gU zMf|$b0Wu@5H<0*K`gy0P!6SGVVJj*c?;GKycsJ1OK7w2vf8N=o;q7OU$d=1?FdTR3 zp}M;uhMeJ@9w-!yS}b@i>SMvX^h*#n;Z8E9pMv^4a*7wtxBGE4B^p6IF$(kHoqY2< z!G^G57%MUKVw9qH=+70*S0sb^@Xjk3gD+fhXX?S`_GTh*E*gvAdr~Ea+_P7NM1Q8m z?19kFf-Cr=uuTZSP;*>rN=QP)gRRIdwj8F{Z#QG;k{Z8 z@yA-myo;Xe0qOD7(@>AgI42Vy_MXXa_-RRlZ7GQiGaiuin8K)`YY7&Sm+?lhW)EWW zO?40IInNgc-`o10ZV`&J{EKxn^s(aAz*Dexy#KZHRE~0xapF&X)w)l80dX~q1-=!# zwZPg@K)?k^RP%6(>X^S)y5Pu=)IDLHOqwdQ7Un@v=67-}J|-`de8%zQ8~HXacvUsm&4)m%<*jYzVyf_c8SF{tfM2DXf)&BrDL&Q z-;V950TaN*Gc;Uy5r4ncwFfC{zBBXs} z4zSMfuEiy+cgW`g#Wh0@F#WF+lp4Fq^C>j zW(ZY+)c}SZeN=y6EOo1cv%Fi?MQK4ZCD}M*Evf7v2py6V_~K3-uQ1Hx&=6n)V2#QU zopxoQ0&j?Y7hfi}=nP0im#Ka5;r#5k_(oXPLh%iT0SoZZJ7HhVw8S^HY zUA$h@X|N?K2ODwM<4BhlOTMEgE#_h(Dug_uEo#FmmBY8W6O%I=rqvrWlN0W3RvCKP zU@e`l=JI)Dl15srd_KoIpd*;}#<8a7O0Gdho3V8%_`gj-7P1wlWx#v;pVt|Nl?4B= ztc16SX^}3AVI8->SGLv=o$)DE9&rmVEx02k4hHs;VBC%Ohd!)J$IJtsQE0VKTeTd9 z7k%`$JUd&qJ~D#+VzJlkNI9LYjHjKEv21p96n|z=d5yoZ5hp!f$)?M9nkYR#0g&)= z7j~2mbfpEXJq{H*OWh7S!mxiFDFcDPh*|r)vN!<7goe&x(6#++Xfmw|&-08g9MoBXswXjL1U}rk-~U}K?vN23 ztYb{cEcANK-nqaKpD}f5!i>lNDcz9zR|kJ06{1>XB7G}gc`NdfewG(?ISjlcNSmAM zX1v8`v1!p() zuyd?KLOgs4*yh?YVd;`5eM zOt>7yBWw)J!h9$5#b|h!J zQ+A=08XZlQ^09_vD`XyVb8coVlN(Eqr=sO#sStCr^+r8E!noLG(ru;3-DoCJE<~^k zV<8@aq5ME0n{qG3#u3E>b^K;^{HKA&2A&4WZf;*svbRPlRu-h76=(~#LA}6Oeh{;? zo*<jMQx!D0H6T+cHR)m!8RxKfSQ1LAC1u>hT>s=|kzX54%DgVM2Fj|_+sARc zaJj*6opuk1cTXZ;p+b}jq#A}O-*oR1cnljmP!1T_OFWAI7vB=_9}*?);q zT-`p1y9mDjO5?bzxO{%T`ZNEFjO2L*?0=QvJikExuQaOX7vn?mA)VG?={^E4jNZrQ zon~ak+PGt){2_2ySfj9U5bRKxo}0O*m_GIJk)`!{7|w{#8$&${LGBEB+!>MQWqh=OM!x}Wm5>K;0Qs@Z5fXrXGfILi>Vc*)j z;DM&Jf{~N>k#c24Ap8816wso{yi<@<^}rD$d@P|wixLi=NwygLg8MduwTbr#)h1>? zcM`i9X*$YvWEy8xB93-$Hi%%(zio3<2oz`zFVw0QUD<}yEcb&@-8tplOrJuPwYk!> zAtnrMw)HC$*k-QJA`1rsmm!Y_lK#xd-H!Z$4~5>lRco-R2NY!qJ7fr?DxwVWjFg9G zs4rBY)j>YNc;O%F#=jM2w=8i)+aW?po1o_}M=wg{l|*tYTU=%5G+YBxW#2s8qB8^v zz~gs6B0JKl+Qh*`;^0ILx!s)m6Z@e--tMaeAI~YLhmg6whYszD48eOrwP4L}PseXW zK&E^_B+`kwjk&p*nMx#5nVFfJYq+sa=QqaY=Vx2wjgs3z=&J6`PcK8>8c%+F9tdf7 z>Hxh8(Rgk*xf3G(K_?_Ay4xw?0U<SBKo6laM)Y z!ffAubsJlmB$LiJv8vu1tqr#}K3#CP)5h~8ImkjK(*&OXkS$BX@5FSXFV4p>!H)oc zR}QQCMt@%%%w90p~y*Nl96Xt&i0m$j9FUkmN5L^s_mvn$_81}L;Z$e0kA^U)Y zSOFqrXr(vBU7pS8l)djJFjZ+dE-@1CS@dfJGM7y!PJ`dsY@_56yM&LdluQTS-g-Rd+?!2(-p38L@=7obg z!`Q73HB)bHV7b4l7(_ zgjz0#qoR1~0Md7@pz}1Z%(Ss$hoKXYcs1oWG+~qe`IP@8 zHU#btz{N{vOLIB1;ON~4b$ZC|6IS#sQ7iK^+2P*Do2HFt7%IR7UJ?-!NVY_az8WjV zvPfLbeF;k@U}^&p_)IJ|KYzD@pgFJkVI{%rNir69Hr!qwR>@?(=Qi#Pz!5m)$5-c( z_vn7ZS=m9dJPL7L329=0u$JnGF-%V?f*w;a`hjFRKVFyd2_t2ryY(^PO!61rJY;H4xmS$}17{|qb2Wkh>_|xkH@f3i-&s<)u zPC;=Ihavxf_u8;eb}Sh>J+iq#5D2j<&?%Cp%M#2mnoG;5Cc@o>=?dX zhNQoWO=oUvad&Pu;`%+m1)Faqpynuh8FqCGU?Ke z!R>Rbw2y8RyuJ-S8j@t`8ubsXwEgX$!3+%bgA$PGiCc-yU~6%^s~%_!6Vyf?b@M}M ztNaD4TxrN{E;rWt)}wZ!6^s6wioBq*UPPiH;i(CiCTRv2+b*nE^=WO-^e&b|q0` z!!SE9BNv8yCW#H1xEa$e8qoUq;%K3guwqBDD!wNTCZ`(ko8|IjN7`AnCEgl+KqZ4A z%TmGt4egUCht@HuJ9?RvG)wF&(SklwAtm7ER26m=81b%is zb50awse@+Q0xmK(i9gir96P3hF2L33d~6wSr*cs?zT$XyO!NR zJ9`=oJRKa(*JI&udIg(s#j)TESAXjN%CdpNycK~Z@GNl2pG~lXdHniRbp?@^asMNA zPEY1%d}@8`ZGG$4IWU33n#U49*RXDN7XE~*3~qus3fGTO-Xr5^gt2f8%$=+grb!5W zkeIuA-Y^WfZEp?8Q|AP?@>y)#m_Je|d=pW&w2G~NW=yH};Lk{j-$WjRoOe9L+P;N!`scEe%wq8O#YFtXBH8P?Pa+azyRUjj?nBCdU$%Op=bV&1Ho*q% zFy}h5LlJw)FPmDiIp{@tAnKN4AZTk$NH-W)t9{o-!R@O5H(kiv?+J(R$Y)a7o37wq zewaFvtJgSovT#Q!YXyR+f@e%Un8OmaK5O3 zf-Vic6=O}LrV|H!$4*@sX0Q=Vmr;g{6i)Q?hxq;P>IV=0Fuwvknr{P8&T9FJG`n zJBDeUQ=Uw*umBCOp4CX5K)$VPhbiYwJy~n0|NH&Ch`V(?{b&L6&KpHcD~Z;1ha&X~ z78+v#_6&?HTs8IVIzPnGo=pCU*^IL5*l@v7)e2~}IGazWpWQGIvGx(-NenB$Gx10+ znn0DxiKd-VY)Ft!=OLQ~@L)Vt$EuzkxQw{~I>eUrzE9`(F$8)Wl%!&DC6n`0`(Ds> zGaT>5mebmMaa@FUCWWsZaF$#6_AaONyg!-S#5C~tprv1;tx$#G?eUbVA~x-AV$ zcnevzm?-YDy@;%zoLowzYNK=E$TU*-JJ?JP>xnAmsqu0Jt2YN91>5rk8npoq=H2S6 z?|V;_S3*Bs({R*e0uNR`pJF!ENkDslXKnu`{MD@$v4B~1ke`>k+DJ{ z*D98r-00Zo8)QPo9EI0UoWQru{T;aO={kA3b9Bdn0=ICS;Ly+4I`d2{>3{ zX(Hlzk)#|Y+A@r}m4hhqiM0dF>W;bQ)EIPWE<`GoYGYH)x$AO;d?Zn;R&uwM@=kK! zzNC{c-Il9VYl%p{kh|{qu(4>Xx;^YT#Y(kWaNR<+3bok@A5EvyrEWHtFRbv@)m2ur zQpo4B-4cE}`e3k+hNg&%c(g3229VekLv_1FM@40FEj&WE4K6>D7dhI)#*C%o0$z4b)=`s?F~bz?_iKa1cU zl%*g^itxw*!`?I4iOw#Q+>TpKmI_tfNMqcJ&IwZCUq z)kZRz9lWky;wrRKU41Z{Onw^Cy>2#}zU{U&_?6f%#U@fjo|$D>Z?*{G_!fy9u{k@N zq5@434o&IX%KiV$y$76R*I6f8=T^9tbLw2xHQm+I6S}HSeV6|n1kt|y! z$(H5tq%lsiOeleD%b3Lje)fvBjoV&=9M%j=@-9ED7O;!q5r)OE=J#0Kz&>(t_A&}P@IY^VCCXTUg@jG zp%7b|?5_o`K;i6xNB2Jqr9+vx8b_8oKq;CD3Y7Zao!8%R!4!)J&{n)SSeN(Kvq(1- zPK}RO_s?MUp^%CkL+gU6O!?LN@`33%vyViM*+^`X&XoCrgOh#0$$Joi>I3o7qX=OM zqHB>;usN`Tp`Sq%Awc=f@WB#hqJ)ugCc&y0xELmgP;9DGZ%Fv9D3;1e-uWi-YRAXJ zRy2}6v$wJo#sUtBf2vLX`}dni-X(E_ub8m$NUF0~St^lr>HZ(J3H3wQunazUnB1N< zo{GlC5So_0H>L93hhAsyo+bxnjiq9-ajZYm#!a9PkN;o>nc_~t8uWhOkNG|aOS4|3 zTY@i0)PX^qAPpYDm?n1+Zb-`$Si*pdAEa9F0OjxU>p)0E4B|>MtCqVGwqQy1k&HBGsbACVE zppbeeDS=bYSa5&Ly9zkX}EL-&#EIGsjX%ofuo9=>updG7(KBV_0~Xuut9*p!&Pp z;Wlswui#%*00J~!J6jhA z=dHTwzgWyXU<{HEWQxD2ufDbWvnUfK^A-snVWZ_-()SE>w|B|vTSMcH=mE$ z>cBX4UM~d+wtkQrEu>MSa5hY-Imz_pSg8jfP6eicd7-JwShv&7Ue<=cSuhX|Fir?7 z(jXpZZ#uuHkldF-%FleP`_(JLu!N?g1umZ$LwtIp3_!M1(RU|xF;*k>?nnyMKQeX@ z$)RQCtYQSKR>ZbP4-q0%s?|ye4!SFyOlQ-zM52aWGJRKQ6Ck(K`5IJ| zHtbi?Bhw3SN5P4YW{baTGRA%UW4}|(eiVZ^`SykBBT?ABxTsexpSIC;n;+Aka_qDk z_D96VKO~WY+`iPHJP zfSTQVV{_RWQe^yW8>Zy&p6Niy4(r1iaKz!wwSB>8^fwM(adclT5Udvp^`RZP)lE4!-llc z2FIBGI|>WY3+X{nO48asMd1tRJy#Rs>d7vzeXiccyCQ+{xiD=!b_p#U(RZ5tVmmM1 zu;Fg=Xbdl}NiHNn547)yX~&J1(2fyvjs3(ZYuN3;`m7;G4BLcs7Z)9jLz8W!*6{M0 zw~N;BC2H$#3q-wuw(c6Eb9wE(Kx7SlrDmW1Rcl&(3E7lO@TooMyAxdTDp7|Bo6QUu zey}-YYMXN+lNQM2=0uQ1`eI;K8|;$H9BHN*+6u!zYqN=PPO5d+702QyVvGBZ9ox4U zI}ty2#a-P$mvi3uQ}<%Jtr;J^?K@H5Bd_t%?zJOcRnxtTEzRg`>zy$}np2*(I*BieW9|nKW6ivQnr+HjvAjm4~d3GYSl= z5=(;?ow4p98`qA89{;}iGM3VC!yWg*mo?_Qb84~H7zptZrjq&_7^(ppTr%vcI} zZLQj^@ifd+Fi@rAvlF%2#Q1m_S>?LFsqXa-kBaxCoQp&!y1z!h8w(XxuT!rJg=mnq zs@i=At6v9@P_+$7ZUfMmE$@jsjYr(S?&k-aclE%B@I`gl3lV1~ z=}QKGl7BtuYf%F_r&r0=Ua2)C3N@@g&;yVNu*Te431Wk0(k@{MK`f?;kAWfI!1~En z8hmpF=TYSYmmmE~B5_@_368pT5xY9^$!X1VpHbGeG{GjLI}v67GW^gET$>)`%?4Q* zjW4}MP>JKdOw;+7- z@K*2nT7YDjfZ3+MxuShtd)CvQ<2n(8pv8>P%QGZRXIiLgOP$b&hA4pN*j4ipJH1mV zd{EK_ih10LS?&7pNLxSY?6#qJOKzvr@9KWi;41osaQ&1YMop>ot{LT?vq%T5FwowZ z8rke5@Iu_-SEwB)E$(B>J?S6L*u&^!c)MYqmoD#l{f(yj3*K;vv7n!*f6ZNPx3Zg>;Ds*# zJ)}||q)#IgoosEQkM$sce~zqsqX$ANTghd!Z+ii*KsR6ZDm>YoY7COY5xG!mM=%mN zN^Y|(Su=+NB^oO4ncKH-uKV2O`xD)9x$F1DVJPh3=A+=k-T>wdvFMn>kU(5Fjf?Uk zoX9{{g&g`9h77Iob;D}Nn28|Jm){Eu2Pp6p4pQ2MJ^6)MSY@ZJvt&&*UfR+-nAOZm zxRopwl&AIek+}Jj@u|r<29m1^-=j{wqaWw4!NPgXSrOOhT8NKV;OTf1S7Fd@wc4j~ zhz)BpcpsuV#dYw5l-J?)*j!(M<+8at!lB6?&@Y|v=W~_rw`iKGphi93?8MTBN;i_$ z1`RYZ_;^fFIh(1o3l_U4iioZ-c68QzjgxnhlI| z&7ADY(7->zp0^vsx%ed$G*}pB3*7{OSo>E+n_UH?1q)Da*Rn@4R}QoE#oAOn2)i}} z`b+_7@9D2Gk5e^C!3}shWue)Po!-^SC0pv2w zR~OWBJbp5oK8t1TddsXS>#Ua@1p<;U-*N z4k9t4YOz}IX-$WN%T+iaIJa}R-JFQOAsT&y#y8^2l|}3Y>P*fX_0_soA`Psk*c)D` zsiP)b1vA$K9$H7fY_M}$=ms6zEL!p%p^)J=mtyFcWqgbeD#oM>cfIU=*|fC$b$J+X zNp}*&CbF=t-)TGkBZP6r(Tu(ht9d_xl?ENJVva1A{13?_Fm}jP;S=bB8oC0iK)yo^ z$*B|UYd-rAt7=NqNjH{&F2Rb*>t+ga(a04DGZF$NU&oWUw8;jTNyPnc$LjNk3|n+) zz8*W7EIuRwDhMrksF*zYLxa8@s@!J3J;#mk2~X}Y45h=D&X_mT0BH;G0o7q#E_z-% z;T&H&ryAZGutt^U%#1QT4Ln{+yilf;mXd_q-dcP$YG<-!qr@)m$J6O)Zq%qL?RKpGoW=DRXL&pxGVUa7pA zc`?@0@GVmajadi9Lf7PF6N+JNfRnOu^eH}!y=mVG&T#rxq1TNvo$LiV9@=Ki=at|J zP;l?RvC{B1ZVfbiRcC$QByvVmy7wB-nr$n2U-xURg;o>)N;R^%iGPK5_#2aIb`A1-_3M!bf|lmN~BL8IJ#z z0;U0|NtF|V^T0FZad(x@IJNcKYKcrvyFvk{8h@J^hi4lc5lRB>h!Qc@oRHI01%Y?z zc3W{8w*a@1?;#Xoldb9pI`h(82{DY`B<%%@8U+ zzYeU0(E&cmpX1~d7uep7Cb|bMWBm)=HLujPI~eG=2fvYo%Sg)~jV0WJzG&NMA`}ep zY1J`DSPkW~e4*RnD?CEH9FEwT9o;(;K4}B<^t5HIt=)R+(4oX$c%MyMrA#!LjFt_E&Hns_!f+g$gx;8l;PIYSa(B*UvW4FWQaT$OF_7$94TB+N0du6?jflRm+OLHr>hHz7z zymn)wT17BgaW*~{$>tOFS1xgyPv3Ybnaji%_T9pC#m`0H{#o1`P9{Q&tyD6(wt7>V zI3pcsWM*!tHmuCwlCbi>`^NcKFpWsMjNsF1bz|e&1wwK^mO0B_a~-kI;&qvLGPj<2 zJ<<_FeG^5@-SRs8MHBZ0PaZrVSnT{>{8;r5=psSo?@O1<$f#oUw;VI$h(D*NHLPf$ zIy8e4i}ps2mixg;fva-dXqFV}w9wHj?tJg+b*GOWwXCB@Pji2cNk3-Z$yU8{hKp97 zOr=gfcirmu>Lq(R3(7pn{at*bLWDcR1Rq#o@}$8lx^8puPJ@2=0`&_DA190tunJhZ z!Nc9_+WoRY_nSipyH@!mo7QqSTRf7Dkkhu{6F=;$-v`*JS*EkWGR&DK` z?PB*{UI?8~!$I`DURam+1pQ;W_Hz|WYF*D^jA!kmht30uqk5X-m@5%kT(%CFgG8W~ zQ?=S*C%l>Tofp%FJft^jd*DiX@an^h)!vGF=e=Z`PMAM;MHSHl*4{|yiX&kte}b=w z`BnI;1t^YUH%$d2@xYWwtB#5*Hdotsbl+kkhtHuVo{!@!mss3)lzyVBQq}i|IE6jg z@p}E>wJTO=ZOw+*c1r@@#`Xa?Q-=Me8)C5=Tw1gR+w3*ScZf(Z%}xnRMzjYKk2N_N z$%S7+jFCYFa9upd4Gw*5svbB8N@`D z$M#-7cX$RNUB$x0M4^ZP%$cLL>-Ub8F_qKh$H!~43*B$qn1^FCaFCyQgZj+03RTLO z>h>F+)vX57QWN8geE#;uN+p(A%HKS;I98cK6p<>GW-2(jIlq*NRVs_O^Q(*F6Y8w8 zZy(F$>~OJs_?l}Dmy2OLmm9m?R%dmOZ*L2I!-VgsjxR3R)L^e=n>AU^)HTUA3^yb{ zhPma0PK(r6%_v`wX(o9lN9gQ!RK;NW?v9T*TlsjQ+aW#1L)*?yRe00k)H^!QsK|Q- z)M+1b_Z)+N*e$TpJYcwO={c!^t}ciaddShBV4`arjIQOZpRc2nE_%f;Sd0(Wq^`YY zvCb{SycJ=55&UVef`}iz6W-h$d;*M;a8HzrIxbAyBh`7@eQonmQ*Sb+*^F#i!qNWFRQ|ZhyqBr1Q9fq4f@WUAVT(JkunfCyXjw%_&A1q z;Fp2moGNyW#*+EE&0zu&EJdahQ==eU1J=Y?R_A zi13`ICZse-Xo702g<_vtCoZQW6{Qm=_m50Afqa!9Uo9c0zc0m3a0nOV`o<_sGWXm~|8qKwpD7gXx;>{S;k~IycdziqTZSv{wt3VL z_F9gV+|m~sTV@=az51nK$d9#KoymBbpP0V!Tr>hE_qA7 zb%xbwh``rK6VT=h+yll)AqW~u7{|q5&6^MU3Eu~igX!NOi{Q@#=7wA02nK{i_69D; znK`s^>YM?bd``dP?DQp!bpo6BLbjB{hj__*Ck1)j6=L}03+ykSN|Bq>+ow2D8nUTy zdqy@7nQKMsIq%cwy(gO(x)6Evw&6WF*LU*bI-RJ^{R*%o>sPc+ngd~ccTnDzO+k@x=5VII>Y%p8c_f zc(`1T;YI_&I!&vn>~IO$p2CqvDwm4Qm%_2VKQ>Fz8vbc}rr&o>a1lD)^u~rA*_b(Q zIJ4t38xea0F%a42dL(q`V^au#8eg0n9}kuGCew>6xl}yeN~G$`^JV)mENiN^S9(voM8CHj|r+rIzg`z_z^QHBJp z7@ctuSgkCNh7|$Nf12Mhr3wsP#OxaG6NVr{`sd_x6l4QCmSVJ-j#5*LWc1mf^1#{Y z5>QaHgvVD3+|;R8m{Qn$CIP-Cc;xL9l}ZV0SuQ`b)eQTSQy~cD6~7hVZ~}hR#=@iOPAI5Io6{Kcq9t>;yehXY ze81JePlubNoji6R7`&qNdKo-(Go@mnyl6)kk0k9-q7@3w&zH*K#W4QLrTO_#sFeuW z$s>zVd$AlG4+NPkr2y_Y6-*+92?8n+2)J+A45H=ALeP&le$QgyEsRWQ$*SOPMl}Gr z7F5dF=y$L^(`al;jj;u~hJJd+SFtLp4Syi5Ev4$ptCc#7+8#K7+P?){d#-yWG-;8y zs6@SppZc$0!FYf!l|ihYLti_<{Y%gsp8|b-!1p%E=%R)A-cZ4S;n=D*)*FmNa@fOJ z+u`SNi*{|zG=fd^u#bHw{g2@-Vs+|%ilv<2E+P0!i5h8v7*BHZ5T8B<^Hc7WpY^T; z1K0CXTlC^oP^Btq{L4WKe7$=p0M^%Uk49p-?i2ZFB>JUDJ{SGcpPVW;t~{m__?{Ip z^CS!15u~VQXCISd{O`Jl7h1hC&pMyMm3HqCoo2rO=8R6om{CWlQb0s%^0B=wFxo~B zKv-uG#q6wFsYxVf-FzMKi3Eg^Bt7BlO|?U+Aau;xcPo*v#`5{t_clU_xcvmYB{JjR z`IbmXXS~nxz3!9gq`Hgs`ORBmv9BTx0Rynp>5`)hZK+>@CRAcZ!0w2Gc1b~ljueY4 z_4QGS#URjNKmcJ&bt(S}@}5z_6^L%uk#IU)O(7W1Ki>Vq;_3}!S4~`b^#?R(WbzZG z*~3pH!$rtZZyAHQkVsW0CnJm955F&VCieB}0-3(ZH-6Ojaqu$C^a?hQFxQL- zU>>sb-ej-12jnK)3TZ+G_@YRrXBEcvKyz9S%;+RTv?b%}hB@bvQu7 zgT-{eJjeoW_g*mtv!HFhE@h~Py!Bv#Z&|$RP`#l0b0RrDF)OiYx#i5*Smw6R7V3wt zT13JFRB?7^ z{Um19kf*$4B5{@b6bOQ%N~Q*ms(uNysMd!fGJ`D1@vbIW=3o~=0=+GJ3>vc+QP0z> z`gtfk+-qEN9=}>BEUAa!lce3Hv3=g>JyYM-Z8wQXtkzTB+mh*xLBJD;OOMRQ^M!JL zEI%vzav>j|#TobW@W_u(U?{lH?y)SMH%XvC@RZuaM<$he)U63V)b^hAIl6z_d*_R~ zlJm`6B%Z&%kccOaV-rslj^nU!eLfz^HRrw0Tw?{AYx=@klTrWI=x2-$l76FEthnCs zeb{Ivyc4HMr*@a(3XqdI1dIVxP5jVFOBVVGnpNZjAsWL2h!VhqH2E=)u5(Dm zJa|@4@Di2+9+;#}KVl#8x|SY~<6})pK4>^*?(fKD-xdtr*FabP>2v`xtI0$x>Muu9fD8x!npz|s z@_y;)LNZ_<(<C%a{NcR zdg0W*^8Br&r27!_^$}I%i0=j|;iN!7l6PoAI>wRUQa$2CX&cyryn_foU zzwLe#2*ifYBc`gUw5oJ}8VkXvvoZW+8TEax|5TlGt~-~zzdeawX$W?^1k~97FmPk< zf{Po~B&Jh>HT>vDk%TkG`fY{7TYJ2iun%E+Z~R(60yIbx83Qj9NrKh|TzNYKo%<=^ z$q{}MoOIIPE~)Y$MpdYK4cuBQwkpEgI@U>*@TeI#J;0P$GoWH)ZZ;aKhNeh)$_8kV zTE;#CMf~{mI5hD`B+oe5(JAFvBMcEcy_rr!_f9NE`5mKqOk=c7?ly;U+V3|6IpGuc z6-if$_W}Ag%WpiR3((tVo@uw=t&1A}dp$}1eq4WOGZI0-)XNMzsDPV-d%WmK<097$ z=p}%i`q0Y-Jazqrpy%hfleH2u!ap4GGo} zcM(u+JOR}>^cKyKSpqk_t zdVnNaug4;v>Gb6F!C*9&PTcF3iIU;hVC;|?$Wae_q&wn0ku)TciDm-{iqUh_A!Ag* z@UZD8rG!e%m=iSm)$bFp8(C5Pj7l0pl20I$IME=m*RC^k8X)8|B#Zz1O))zZnqMDV z4kDLWcy}}7Swou4zT3d-U)z1Ee$7L+)K8TB&_i51zc+kKEEurYb}=t{{MjIA3${vSb=*Mz<4ouyEj59Gz znaI*<3b01Jl4JOc3}dqHrUwW^;8L@9u`m{T_*!zt*3`0(59I@6Nz~=;N zf&rd |WwK~J>Q${S8Xac1hdJMB}0d|Gn|Uxm?ven5PPP}ABHbI{t}PV1IFiB{r> z5F7!H;UVLyqTK=;mF<=;q`TvRp26iU(V<)gjP$yZqeJG7aQK*eAw65b%{WL0ecyB# z5-kQ?LX_~ST{`65WUtg zv+ANzwI(*B2d~#i1p1Jo!hg9CD-8`mT;Y7`%N_E9q4wk;(9UW*h*fkGX}pwhYjgJU zzc1m4=DB*XW5(MT4>@gN=%maqA)MWreDRdcj!e~q{mV9fcgtV%(t&x`V6B&O>R&i^tH=Mo zQtU_M(7Q z(>8mo-K0{N$R2ASYOL3@1$; z%*1nvvQeLw1J->(Xa;hY^8YAo`FkrGrj;3EP%w*Jbia1_!P3+lkmr6DCPKymy#f-Q z>se|uk5NzM+^1Nk+c!8*Eoy+m>r_q6J`JZ#3*|$7^SSEbJIl%avQk(g9+|)I9^_Yq zb9y|y6;#$V$0EF<4o;@hNb)Q}BS!R+Jv{`Yduz3#x<%!V&@qT59XiVbSkSkVsZ&^@ zJCZ!LTwln=%BATjzUuPZrY!B3|E%@hXzNj|hWOoRt<2xcYN*i{LV1q4FKS%F;sk9l z-0<+I*Yfp76SA*Yc6CHt%zq>0BKQD+xo)fnnEK|ffN@3{EWZOPTXm-H_s?0`QU$_$ z#5l|bU@4r^Gy6nX`D3pTnfIvr=w*YEu%FYqTLZ}7+Y<;hGyVef5j~&TX!Hg>wGY61 z&Pr(E7voFoR%rLgz$+7Z;D)6-F}-?5n!$;y89kspq8kRCcSXE2gV5Np`!#f^J%+-= zsj)FfRFNg@Jh*b0bZqvi;T$PMwb#b53T1aoPro)$nFslC9?|Dz+ajIKN)D`d?-u9P z^fQjaQH*#em}&N~wBMW?;y8O#O=Mo^F8k;Xbeyme7$-GS9kEEv3~M+$u5z-b!i0`L7-5G1I{_?dJ8UvAT63yXpS+HR>s)${wR=I9yr%9I^+*c(61d>0;!~fr zK8~GsX?SBX|8Jktnsb$T$4!wyfQjEDYoGbtMCKsC-9dw?giK8%D*-azCmyyV5xb@X zq-tlB{pq_MQ@}Nk^FJ-P08Xf1VbJ5V*rH%6!@zd zc-WEdhwpyavi>oK5bK{nM&wXBl4vW8r1MQ|`L&gjrWIm}5Ech(H_(y+UnFPtV(c}4F^!@1 z2wYr}k3@}wga19&mdc;C{2V}E`hbP}>@6|}*8S!Qvv2dVGtzji)%`a8_0n%Gum{eh z=?X|^>$5Gnd`2=nyO$LdUzkYgq(3eNu>?BgZ%t(%L7|m>Zvs6)#{7yM{NE;MT=non zZ9Z&P#UTs#mW0 zGQQ=0U`f6%^#F|hz7%L!1u)Jdv*oJ+-Q`lICO#cNgN9~7$=omWz?TQ3n@+AkBU~%m ziN?I}lD;ZZuWa{bdv1DWZh74xOS6aP52*~s-9?t~_2s)?`9g1YS2Ecl8%XQ2R_PVK zMf}C55ixd~&L-_ry-Mw*GCSR`d%a;0&Ft}m>G{1-nFj|mbwxDW-Nw5pK^=Jb;qD(e$5`086ApL! z47uH>5kq18S!kuzUMvz@aT+UYV;FesuvzfQZTORo;M(9Y<~79v2t-&j7k63#|2yb- z5~OX`DM6O4;bbQ1HAGiqSK?C)D$OV@4fDcFa6bt_K0r>7fR$gm48N85p!*4^gcxlj zk@1{~4FQ6ULO|)5B?xlH1Uo!SKLH06)`GPOEEO-+ZRLXl-X}A(T5dWWn-?8 zBnZ6fUU}K(+XedeuY1um5_gwojnYryUk-|vTy5|~{MV6%A3g<|U*Q_>Tt9S3C-oAd z&^o=*1R+Dxb7-|hoi|l`kY9P}X5e*+5Y~oi*-%lf$HCYi4+HzIRU+}1t&6UU#BUA+ z9-$Obp}hGBJ{ziR#2|lbU4z(<7op9%2@o%k2dB>k)+C&*)om_>MMOoyEPKN>HisF> zx~(JCsdB_oQ?+icVfEe2lpiti4@34ysL+wmXZ+zWlDic>+{F?ItNU-;KQ=di5X;V$ zqsX|O+#3n(yT0kqUKI(x@wTa%8NYvKW~%$QChv;b52vH^&}g<*){VQ2){aoZjIeB8 zyv0KqDP2>DYeIXWZFY?uedfx6KED03`gpk2>$_PkUO>}#H&494UcZnj!UKl`80pBV z+-n>LJ(D*fKnjX*C~8NIdn7ryVW_&*wnhdm#Aj)=d{BJTALlfXFhxdfm14s04 zQ1_dGecO>tZY*8PUB537*_%Xi;(-ZpKiPhIPJq)QGs|6rMe~}InUXON+u+N$d`Ya{ zxd#zFSAs`<4WgC5+xH2M2GTX5aAI|)5RN$y(M05NeF)**sK&r&@;URCd*EIcQO9wq zDQNoXP)-DLI+BpNtz`i5KqRZ07e-Zk-@^?DiX`UKldu)pzKAeQ0t!NrY#F`ap0<03 zDJ5R?viK(g0T%&7S<`coQG}b6sqmJwYZziX9E17Az6aB-{ukT2IcaBCfw1PeB3XBO zm(J>LJy@NMAyQ1b*s@}?)q}v@jC0tws6UOPUzu_Abr{py8i5RdT7qKI3prVl#pnrN z!Wn&BV5%~7yTgEDEy*Ebi|!h^a!(sI;W*uP_ATtyMh#9V>0FE1D|AhfLVnO+W0wVd zBvFNH^Aj3A3I3MiwAY8d){s9 zqFc_+8+%xi)v4zpX&8L6B1SJ!_++T*X{y@#ijBY8dX<}?*8f0TXSAkJw69lC_U*Uh zv-%sVa6|is_D8vS-p8$ahkH++R9iT&eAZcbQu5P1?~~+#+uKDa(9UG9+d@!~vBR?e z^60@u^x>v3-vvB%DhNp6wEBBy#TKN_hs8?k3&{FF5PA+JmJiWOo97NaY2w~uMTGTAa zX3ITlfhTcKDy>$V#hC76>23BfN^P}TgpJ?vuigUByh*6!R!ls?F||VNEmqWFb_Gv> zgG8@Ugw}~u!9ZgnX-Q*X!wiL9zp4Y7 zf^fM@IL{XcnVvAlu|t@R;wLT_Iv*Sa&Iq>R#lvSbZ_z(?kPqcWj-6o$t?VX@zi2T1 z^qweIXq_8I`|8C*Yq(JTG0wN%xN1T}^E%&Kfrom@i1maM+#>Reo1EA)$BwEQBrR^r ztOUu>p`^zYWY$ZT-c9yZnSwL>rzVkFv!dsqXX4$U98{t2oTCt@(b1OPQCP$gpOVa| zoMxDUcLZi;4sclsGc7$+uhr47np+i?aS`#Jxf*;5I=ojSZ|yQh8O1nwvp`SRzoi|w zx{4B!FO`;D6Xd>*_}^&EexQHz{fPL!ITv-rKr$Mwipa=rbA$Li z41?dO?M6jyb=&IOyWW?#Rj1n_>5=3j6&}e(PLTw*(-?I_$t${jqF>qeC7@eD^2{8p z-=Z&pg1J_Qt^^|we;l`xtBM-bwRI->UumEX&C+gc;Ey09ZS>cp2-{xjEdBD#UZfZs1F`gKOG56s8Hnk>mSL^*48&} zHO9GHH`Z&jS>&@1JT?5DF3<7NB5$xN-Z8KBoxyrQdfoadYR&6d*GKdSY#sGN%j-}d zK~Ba5U6Iz3Zvf*5doM1zIbXmb^iD82ogNl7)Nm+7pPUWm|G#}tCK@Zx&mB0rKgI0+ zb7NSD0Q+)oPe`)4x4O^K;VBl)e9s3nxes=KfD%JxV6)?73zF-@OWAErVIkt^LM(QY zxbT>I?L;t<$h@|OwPjSbFlD|uj|7v^y+^3=6SIM;WfF@S029&Ebu|QM-GiKJ z??nFq)dK5ap#~htAx>P>#T6R_`2ZBtzE>hQ*!OdV20~bD z2jD#b;QE@lwwNgapp2vpeh(a(#jXcbKphxJPbl3HDE891I8oSZq@Pl=paLWsOg_Y< zMAMeI{CVlbpZ0*k>u?})mcx1&K2}mE z5hg>r#nJS+SgcLTgpKUCc(V154%j0zjJrD+#vOUL1KQOl0mEjE`z_gY|EALckDrE} z|2fn#49~;^%q@RGvJ*M5VU^Ozm) zts3@Nq%30pPR0tPGtFi@0`d0VHEJQT&;ganPTDqIRmplclGbykUFSzPsr%=% ztriDVC8d%`?#nK;9&Tv9y`_+ml5sAkofF8E2G7Rbdn89el(zpA+?cqxLwI-{*1O%C z5WT;kta4#&JRgnbCdLcM2U%#xqiTDX8h_-0()4s8Yx(ntkMUdC!t`|Mfhdfd9P>Ny z;okBUFq*DrOpeGv&X^~VH6!XMuegFZ6RZItNmc2rj!r?>pii6~?%@nuxuxfW0Ewep zFM9zfrPNg+B%s0AJ7LFS@Y})_;9wwP*={1yttcqq2kS};li~9`P3lJO!!(xUbn~KJIrn0A! z=L{V&`^w&UI%7AuTn2vZ$+i3hV+p|4>cn(gJs=4(5WuwzwK4lYSd3ZzRGTHRq>XiC zpUzD_XtEp}_4I27zWEL0pY*K{xr_?dAi~J)4g@yaK_$c+Kq_oMkI?V<T1Lz&Q7e4rLUHD+-^c;r`S?I-mzBggs2y4W# zU?ze+de!rDYSZaYOo|wvMkIF4fAS)e^mX*u~_oi!UGgjVY5%V!y##v5A zAqZz#5C?a+;dbo`AHG$!)ftVTT zX0J{&>IB6ZosfE3myKla#?8OPZpt7gMo02^@91Y`#ZtFQTW%$gDD7fZ+u7zotngaZg?>JSB7pq*q!7j_LRI09dZ>~u&CB{$pe;Qp?OLcrj=&F#7)md#` z6A*&9O0-dc<9$;S^pm3!i-1~Pu`SWxb+=6Alwi@Wqe9aaQ|(TND5WDa*=HWzYI_^; zyifQf?cebX>@ur}w{jx^HR|FlaI7g zdEi674a`tFdOFd3GD*>an4jQ!@x2*DZ1hjGqnNy09% zUyx-tli9?1CWHLB>cg{a#O7;Ib1NE2weNc-6^Y^)waz`Qz6;!oeUf2B)6H1VE4hrr?yaYw8vZT3gkeaUakZ@EyQS!%c05#N7wpJ_12ZySs{NapP%V|XrSs( zjIQ&e$i}>~KoYqy!_}S#>ixA*HRk-bp{w11>`_2$?NtL~gLqU%M%6oF+^f5Q{lD}^ ziRg(JFc;dx*X|tMj=mAY=5WAxN0GVqOQTw(#}3DO7Ezgc2AQz|Dm`Cc&y9w<`d4}! zb2R*@9mqeONPa5m)bPG`-{`>l9vHps|GnesPQ?FMcV|>pgfHDzEz~6e+jkwX6>g1Y zWG(<01cQp9p_9jFsyKGpYfKC=1tYy?OV}Xcl^~#i1D5|SJ>4pmR`*fDL#y-ElV^Fq zB^zVM?tOn1x`|s*3+-(H>Pc?JuJ%>KW6z$u#OHQU7jYBZ-cdeQbc>sFZe7n@!Y6>1@}ed3ig>J1cdr!3Mh;pCC+mRA72goTD6k zjMoayRPRPLjUspnPoB?x1QIuhLD8(3L57+*eeWSKEV-eax` zJb&Oo9U1UK-6ejMA3tz_-{iN|!F0h8$ry54PV=M7t{2xXB4X%B6GkOKGD5)BN^nKsv`ndfB^26ZY(PeB;uQ{2U7T~Wsj%=u+}`Y7 z-E98E>gwd=`qlGOQ}b6(J!gi!GafZ>JPSLRSvBBEVkPSFG;=bvaDe7hFuu?#&;dyFR){1MFG?X2K8R4jo!Bewdop+ zzWQ9mF74%~9OSr#bxvw~OLoM_Rp=6jzv7sj11~Gdb#3PU6?YWK9-6h#vIdwW48Ep1 z{lHaNHaq>iFPBUNH$$0h;=}{7*uBMxN$}Hc&c45S;6x&u32g=wNvsr<2?pX2_xIU3ti4Bl;T!-hVDax&0BuDl!sZ3uC4z<$azNqZpQj!UuVXe*=>Z5Yp-mih zEdpp|EPu1JE|rME9622`Y}0(gs@%K+uo>3bWw zn{(rD(`dzvPqWwcIiI_^J(Mq_?fry&9AC+#W%AZ(;6^OCVsM*mj>Ihil~vnM5p8$XjHSdr0M_0&N@Wx2Zz4iiH!4RoJ(o(Q|aG@GaQ_uY5iH zyxwd^ET%AX9p#-Q4i^}+n3*DUG0;G!==y5#QU`E_JiyLe_R!w!stS-S>v=UiS}Xd7 z-l|{Rx9^VbZ<*0*_QRuAwOOV$ZS8p%gkWT1K(I23FeB6KW!y$9*tMxFnCY}HVWeWj*QmV_WRq``?(RF}J>(U^jKn)am-WWi!!LEr zgIA(AA3#q|S+qvxOLg+T7~48Z(m7&Bv45dvAp4_HyucZJiHJem78^a`BXCWWnyFg zpEn2UP4}t)KAWkALsQdMFc7YU0}Hp#`Gdi5D-wL=o5!c7ENg0N{BF~KJJt9;zPliT z_P%&^=ay!Z8T5Wc7hJSl2VIjFhB!D1>AH@Hq#J$r``+$*pWqC%U+gd$0fiij<`hFw z6v>2DL5C249U(>)rWi}ZYZL=6VISGzI%yp(XW|M@%%TIG)`t=citD&^0ZYTHs}R?$ zO}6Jd=eX@1|3S{HQOx}u$6Py?oXqFKcVJ{e6P6WBfnj)S1U$~zN;X85^A2ue)%IAj z9gBXxzl`oPCFnkjTmZ9(1)56gY10YahB;CvIb@BT!~GU7MB=3)^Kh@r(jWN5bg2{@ zOEyv&9OHT>wUqQ*-#_@S4kH5}DuzMq!GqbLiy8-I5c#(X?>l;MJ%Jt>0@uq7d$2VF zeupd7e+jTZtYKy}byiE`{Fe>r-SZk(=`HzSm?$Bqf1fiis?aK53EuA!tQGr1z8^V{^#pw=m~g|My%`AUy48?XtpT%CN{d z9_)V83t0|PtW53qTbq{OAE*Pr2CO0`Um&^ggG|Q>7L%wJ+45eUj6sPU+Q7<)sZ{Yg zwYZTylt^5M^=h%m;_HX_z_+?zKdCFHzuw@9u1a0%DK&m>aH`yol(Vx~t~Hk6R7}L? zBHv}IV)mOMF!|%w7%Q;3S_rXLW7d|rZT9HjUjB*<)=_RawEp{jPoZyxL=*L}H`opR zvkcmMgWsgjnhtV9pYR2@W1H)yAasx}NYi>x&(^Vo;|MdbcAu^y-_~k|{?b(%EHXO| z)SW))2+Vsuu+N1&dZDy8<#bvKD;GLl`9p&}^1N@b<5k7*Pu-R|QrlRc4%)tLJu4+( zLy4r}E$_Vqx&!|u2lA_h@#wtiulcC!++;c;J=n+F6lAogERU4bq1)CURxPIj+j@R# zy+s;6Gt0h~?@oA(y$7@N6TUAL^qk@(8zLQf7eoA&%_Ro0l=kZr3x@)5+-gw6|Xf zYhlT~ux?vL+5`F7(?zShiB0c{`toUSeU!LcyN@rJ&NKVbldh~M>3oy};EU#2vmfes z5L&nWR4>ea5Nqu4^^(;j59yAJ*BY9Pe?3S`P?Y4%EnqD-@dI41i04RlrA zrXUCb9zr&bnm*LQ8Rau7HMznW05G+o)!rKPZyk*O?dZXY?dSF%p0C!$>08IGwc8hs z&IwA)QWY}W4bXr8i0|L}J`Y~iCBNjIz_Y>{ztU{f@`u&zN~7smF-tgFX&yp`!$x6w zwE+EOGvsZ&%mN$jUy<=&)Y@O5HBFDi%fgX|2`~VJdQ2Y4kQOfskwY-{?IEiqzGS#w z4S--E4LiJ2k>S))ox={^%v`{)}{Dkd|H1`Z^In3{3rj=lRcuyit|?AW7P3$ zE@2J)0{kbLIH6Gh7eNb^@iWjmW#emr9zqBvy$<@1SORQ`YbACi?e!SyOCxeYmt4_A zyF^h=QClRjr%7T@-&Gkem({^NiJ5)SNlwq#r{dQ#?GqMuiB3+Iik09r_Qhf)G##Cq z0v!w<wh$V}xZj}F+O>-NPW@v*_laaKdZyTpU6G=G{r$(;|*1mb&_(JS_Byb^$r zF*zB(R;T~ECN@1kKV2+V7pG%W_4%n%slp>vty~U;5AyXR)oRo}N|s?M7>XSVMdCkb z{P4{l=uKC^>jDm&Z3TWaJK*V#5odTb+!@1|^}IFQD+aBL!vH8U;yXDt)_dcglxlu{ z9MKH*`6EYw@3oVPi-h~G3VnUlfJe23$c~NAcmJGkvV={YJ@sjWE1w>?@kM^GVp`~o zH7zgXAi{c{!8bct8F}-jlFd{RM2h9q(-XNB8xC zSDiu!uIi^p-{X81o2}SMGZGCoL`wY37wb*h3`#FXT>=!769PjoBRC$=!w+}CMCsWrw z2gSo{=J3AFa&FmgS^IA>NyX=01LXvbMtFVG?9oR0jy{6m$vkqN$6)sh=Sq99 z!st)~-xO3ytSE~`$88oev9H+e>K2(C9Lir3zL5@Q`^Y79g3>sAzBR8D;*6&br$BO;E&!UKJTCn&}ZQMuVUed z|6Zs+lHH$Won$=2&hrec{>V!+SJwo89#sKDz~6Npg$ax}EWfJ%>s^bHShIQEwHxa* z)8S~daoww~d^Da;!{FF`wVKL zfCw1~$GNP&=WNanCLSvL)9K9PooqT~jXjhMg>q+G(Of>#Qj0}@HkW+x!?}1Ya?Lf7 zSUmUP2eFW=zxV_VSx-1)Z(HWq9{9zIEWwV~;|`yY5yi;FCLEi8sTmJc?ylplil(R)z+;#N;s?GV? zeUgvJry8A+hu>!DZP{%14!=C|Sx*TZSLFXVhUwovE^-PzeMSoV1?E+d4K>UwHboWf zgeZ92MSQBWg`XX6w$LKt_-%tybud7y)7kEH^cHoX4r{Ou2N4yp0siNz-D(qLZA4sJ z=TVTgkt4YVN!ojNbTzwQJ$-uP^y%kLpYC=}pZ@yk)2-8|&znoT)Eq*A{A@e>-p=Sl z`(ep;cr89wUi9=-6^72KAc-V)FI zDu`)lqsP(LTuW51x2oAMaWIBvps9X|&PZgm!Le}n&^NeMcXCTFr4A1wkvDyV7HAYD z<+e~R#*pNq9VIT%VVgM8_yv^Ix-R{VZ*+=#)8M&$5Z@WPVIJ(K6Yv+j5S@Ud5lER< zd0^rLdx#bU3QkBJ7a$m4Icyb**5QI>6>tRq%Z(Dms6nF9jJZVPE25CtAP0;i_;|`; ze_iVrtt;v6#q0JdR%`2G73wkLoKz0JL_T=9=+#rSpMwCTCRl*Po_^l=HFQlF z0nG|%)f1?m_#gp87fgNw%^sb%mYX-;*j%=dr;|$qz>z+>P%f!TWo_;1tJl^l6;&!P zpx?O|WfW_jI$Dh#%^~gZRThDDQp$XnWy~%$)~}IQrI>5h8%wiX%95p&Yqhyh((k&pNV0 z6EI!$1TDrDzVJ!sh5MZc z#FH5}l!XhJmzFOHp81=A2_q^o>miPVwP&}HJ%)I%_Y~~OuV`rioqk*qD`<}~jD;C- z2iCKfu4m+QxOWyC;y7`*gc8<6kCK~@2JA>6nusPh3Z-};S%6V96^NJf8_8%Q5{%fr zr-Bhal`qEwseG|mNCx7i0-uToBKC8}@MQLCEE!$kD!U8OWHu8{r(%I@I(j%6fGr?- zIGWA|VySdElO6pOQZf0xPkjbFRn55YW8@Q;;U7E~$B~Z013z42E>BU1&Nk=md3#p8 z>o95R^Dr6O?#&u>U1CGTEiH%xh_JxW3CC`tOmq#RHX(ph>tiW(7{WAqzlCnZ#SIHT zX5oP~bG>LvUJpDL) zl6^sNqVmUSO&u?P*B5%%l?763RiThU<36p7(* zWTXk`bgu{IgsTK&Z**-9Pb?#%W)pW4zV+hDGE}#^RVgfZZd#}J1%O`dy!T*kd^~sH zeYzUPis9OGe}mMqqbc4g-M&+rV0PLEa=8Pz)Yh+Z_mDyLuXM@u4Q8qG8+0KZbcfR) zKJ_WYq(F+n%&!s=FjiVK+K5+QQvO;UdBjRJTRmf!yW3^^Sb&@=S>c2V9J_bBvffb1 z#(G6PNfPw`q|(B<@|kuz^^e`JVx8U==2Hdy{d4M^uZ1sBvEZ87kK)7gj$A9kI|rr= zOLo5&IfYJ(*eR@oq9gNJ-Qwe=YIWYM1F*Ue>Vt3?Ym!}Y!|~1m~=rnrosN@2gQSx4`%Xwz=D@W9N0gR3Y5iR^-q`T>d?7NJ&M*n17%f`f9R zfow#X47~$%afDL$Z~6GBJADPj{f7VL+@^=dVPMTW;5Gi1UHM;=NvWr?9K5nx7`n3V zsy@iYIa(0!p=O+2iKE-1?6KvxNw;j|R`l~bRC$ivjOMSmyhS+^P+!{i-ubGTkFLts zJ+Hj#@y_n#vY7jXvA8Q}tN?bZZO4Nc(H}8b;&X zpgiURM-FtXHy&l8{2skXAzPmhxC;navh#r_EM!RI@NrUz%$m3afMl!-^P?S{HJsJQ zBhjn(F3#>bv}d(3w}x@oXyw77F^Pmq$$-X#-3C~MX(Vn>`qSM{CoLHJRXLJZ2cXG9 zRfPWTh-|tBJS&8OpB5-AmkbbeHO$>5$nyLp_`u+-;B~mjh&l|&D4mQQKK#m89zGmP zx_04NsGWqy9l8GcBZp^eYU_-!7>F&gTEVx2y7=nG*E~Er>tjyH$IU|Ap(!fH^m}0>G+vk z%KPO=+z!!0NJZnR96S(U7|(@+QwI)AeK?$us@z*hBp!_`KRTsTkUj~ZK7Rtg!=I3t zplc8pGNMlPb*UyQih4N}Wg;i{GV1TS0sL3Dy{#xAJ2)}p=vG{jO~=z*{_jva9*%|W z*=)|b_820|(u*bhEV8{}du3vBa$@DLFW6$lZ?eUc2M&L!bGYbzX0z4m?y$JZcBj(bu2g)!5XZI5 z?KrZD>;W~sl5!{@gt2QNMt3 z!PsBK!c!8ESWMyxQ9(k@3bVyP4%C4NTri$iW;Yhm0De3FsZ>dd5TODOt(xdDm5lP-JI!e{UNSSnAmX z$WZU-n~3`rVE_r1R7EBS%o*C>2jW#Wa%-}9-i#G@&`97O-fN-1MRt_j2ML^H>L8cE zXH}r+lImKZ;b5w_%5THyhSfrf_fdGD>MU`TM!&ipz`M(@*MGiu# z@ITlX&^A2M#v%XlYMcKo>Um$gjme|m`})MSuS(!8-0ZY_a>W+xS4$l4&=Lp=!|Zgp z8G#5AjjcB|hGXyYCSmkzkIlxTHyW+6t~sl5V>CW{%ygpJW3tZ7@b2?I^M=kZG&5sC zOD~2fF-%Fsl$WM1Q9C;ao*WzLK%*bSw$bpOoe=|^%vFq;EqID8L2u=QL5o1?RZMa$ z=~2MpgbBH%p-Q;bR&zlAgdWe-3CKM#aBb^Prqg=ALqisnale1Yfa=WIvuDlm@6I-O zUstWWt@kXYHZ__3QG%FHcDmag9FI?Aa~S4&tnWy@_u_<_#C^)I)w_KnUXIEonhhlc z3khLR{?Yfgbj6%{_MPh_0ZuiX%Cz(zTg@9;AWyzSq^_ze3IhjQVRCq&MN}bTR>qS^ znD`7CsWh*lXA4&G&>0sXt|NhuhCDE}M|`(c#e{I7=BcPugR&5tbD9O+heQisZt+$d5&As5z z3?nD(-nPkiK52r^%NHQ`1mS z>haa%>MnNPg{QNAw`hsf;1qPWcRB5ys$09BJk_hllf9Q=qZ-GU-U02(Lms#SR+)Rj zC5^x{o}lHP#uQ-|8af^Y>Zpm_T!sB+O@jp{p32}9-NuD&4GZp^@o%mSkNkN2LF7Dy z4K5sc(2RZkdPnc{wr>V+dGGvOB5_M75QzOa6pkU}&k$Rkp4-M&_uA2L=*4bdJ{Zv}){L;wfqd9Z1zj`+T44U&^t&=^MyrxK zBGK#^xj{=4+X_BE4?motYx8Dz;3i){)J70i5H zmZu}!ZJx10a2Oy?!ss&Ae1I0_fo^9U93r_x$9DlPgWYr5V+P733CK~m1S8!~GxPX$ z!EiWOc`dh{U|<)Q3s&2-lKbwL!+?L=w)cN9Y;T7nB5OS>vepDBx_CS`!2*+r$uH|m zwz!F`>eDmz`b0FDj7}`nr=fdXTf6nvwKYrm4jetYzEO?Gs~hV_j~?JP-VdQK?@D@^)w`(T5UXel=Y#EvaS9}{j%iYK{ibBA3&%tD>_75%eCZ6=Rs7K!6$vRji|8yjA8ZKgi=|Cj! zAQ!z;J{PZ0!h7Clq`|g&if^NkOeXtVECDaaBB|4f$j^yw6r2gT$?o&|{rhNB<%Ro9 z0ZQ=*ZNjM`(*SD}T5;+ z-!B#{U*u#|7CFeiEu#-`o`{|l?l+ow8(eC^2J`$9pL-S$!|ecN@MSsBFDGy!AK}5t zD0u6W`u2sNivu=-ub|HEz{dguBiHk;z--gr6&MLLY!=beL?ZSKAdQ+6?9t@^*pA1x z(LoBHA!(5WWyy4ko{D_Ey%kF)W1ozN!v(~7hr|4)2%DH(9a<(}bkKbOU%xesdZyMA zy&&iu)uh-8cmZ1AdsxIHpHJg+vQgPg`t!2UcdGbg82K2JPke$O)Z6ZM0iXT&59qC~ zyTQ|}LmVEdK81ubZUd1OwXebIw?FTG?s?y{F;9cv{h`}FgijUKaTY(it>6!+3rJz? zQKV;P6{F=!M1zk9;nA@uITO{z*3T!kOU!qn~Jub0*-K? zFFAb&Gl$SO*nZtvFM3BuEjCJpqgu}!<%E0SwoS%@^aFz984x6j!SyOeAQhYDeD!mm z<48k?XOwT-=?0$Jx)%z%t3T8X z8|vOlJYM*jR6d_NSBS?e>fY|B4Bb}uY8K#eYhrwCJDq-ZY<%20F-Y06!a_l6qkARGoO)r#2GD=*D~c1(dwurO|JwqhiYx= z7IZnLo+&2(GzlpGleNwGV4GjC8);xC7-YS}lqT zEh<&b(XO1rnSlr86=%G-b)36k9oMB!WEg6@)(R1i61$1bu2m@;EpQ*dbm+q027O@G zAmYy@;P5&ufSki6xXSOsKK+bderBn`xSWFr8JE*oVgSyr6>AJXtIHUK(}n9gx3=1( zRtzez0j1!sbyaVNkQ9qW-m;(DFmhmE*V(nA&QovMuit8g!yV0QIlSj0eb8LqR*yC! zal`B(e6-12WJVXY?&Mq{2LdCBpnlD{I~wBMy}Lktt!Z!sU=*%Bz>bX{j#-5jBvi+- z%H^k4m@!DrLX);jKXuOl^-TG(L0LaMiDVcsu_eN@p+w%Y@;sZ)=M;*Xo-d*!gr{`c zx!-ry1>4!v0T}gL4q5~#0i5-ozzCp$P=EWpOttrz{D)CRE^JEG!rWG1=i`3&W_8^6 zPzEAgI7#)uKh2$|9gMwtFGjz}^QKE!;T#2b?OfGUkQ0>}W<|2|LE}$EMMXJ#m`5v3 zzwA)hlw9mRLgv5sIt%L+&4IGxt#$=fKiO=?qZ$m+c(Vy!ko`2`YDM4KKU0Yo^z(&i zWoG~AtK0esy%ibz!i9T2*?sfHi|>8Z182%)@LIW$RAyu%rClE}GJvu%*mfJbud6A_ zU&kBWZ>f9qk&0uidxwzs_>snO5g=z({1G{*b-&d(u6YO0&kng`?Ok1Uh}RHNL#nxA zK|KThv->-5()4Q!ale|ny-BTrloPmb)EDGB?(^)8fC_0GelTo1q||dgDWj(})T7C< zIos-&OxfMvak^`z_ubEU${zSCKLeTQ&x9}Kw?up~jL~YQ_i51zP{2{|a_WiNMh9B( zn{eqz4TSSno*GE)oNti_{-oP3VFxtjHtc^Pqs0LE)&Oig-~7NJM7_{9?ZU9wa=wK* zwF>TvPKY?vm~)M>0#qUKTi-sHfI8zH2bZe;Xe2&MPJDj;#EDmeB~F|RhyV0nM?<0X zo%Mw`!^y@jFYaBsabY2ilyad^^k0XO5gFeMxO(j}{2y+>iiAFx$i#_Q+oZICSB#F; zo)NI$P{Re-HBAzy^`4n>PCK&q-V<9fpY61DuVdSC`oH2_YUyc)ZFi@4?A(;J>dqVH z62NNQPJ7Sy3g%;oRncE@-oZ&5Z}lGMb%0|OJl1>F?{Bui!{erJ94Tuam&!iCtiWZB zj{Us?hv3nxkuvZ=%}nK;+V>vX_T0oFn$*Gn(8d1uh9B7)2@B;*`?laIy8}Nf-&}7d z8)Bl)cDM9LjVm+D(O0nT!;y2$pnU<}!KNw(A{mB!N!SP@$WVaZosharUs*&ML|@=1 zu{-$`O?ZbSw)1U@K>{+o$!YXa?aI#reA$goTr|vG$a;GEpv1tXN$4D7vVtVHWpYjB;h9dZKJ; zhx${qpRvmE+9`e3{o=NEt@4Qj$62*)E$-dBXz`r_Gv&5)Y24)sEdScP6J&q1fOLjB z-u}5A%01_HcAyrOSYP7Q9l<@Trk_GmY19{W1}`9to@Vyg2J{bqMf0E)fq47>rR`1N z9J|UpQJt&hYTvH5+OJAgrP{hnDpi%bt2eprcDHS8myLn8O+W^`5Dc_qCm0B^2$KO! zAPphGSuL{6*d&uQ2?2)*50UVj3~!d#nY;`P^Ij;D$^1y(OX8W#FEDvQe*gb>?v-v; zsoG{pTyEX%+;h+Jo$q}6x3;!3Gh1I?DpgadVAk)?`2%+O!i9HG$hULy#8MzusjROo ztSl{+Aa4yI3c$qcF5EO3N8?u)%Vj@&Kg~j6YjbUlCiKXcQ?N7X##{w61QFtr8Q#7g zYt-OeVUBy?&yWukP&G8#py*LIa-r(iY!F+jiPai~fi&q>H`rrK+qWQlq?(?B?)c1l zV+y7Uv$M@ydG**lb6Cv>i={%**bW8r;mExD;MC0Vt@F3ucC59rF+*$anT?Is3fzbK zzkzL1x^5YV zRzD@g3bo%Tu?DsuT#gGD99y8Ie?&U#b-0=K|lAVr8yYJ9Vm7n>%>t3$8(~ zdsKt4lN4tnQ8({|@G98f)rK ztS8}A*?#$xuFCEv24H?N3F{4QOAEIkUUFhBaTalhqZp!%DU8%WVAnrZUS4SoI~U94 zrrwx_A?dfT@b}V%d*J7)48Osli7aN=vg3>Q4PQvjzDAloId;?51@-y~dcvS9y1QdD z_RO6rD;-x?`FrvBjdAdN67?9O-I?mir6t3d?|*tY9CJr+jz&%|EgI47X#lC7f9~fg z$8#JO4YQ^nJGzK0=qxTs53B2x8iDry?vIkiV)BpTaMxC!7>9#@|F4ABhvQ#(55k*K z59jm!j~2)i<#L7pDF{ydUG||lp`Chw$sRIEL2gd4Bfv4%W(ArQ92taA%O`;NV2lUB zFc2V)>QAO-X8it{nW@L_k66dD{`!L}!SFKlDX@G}iREx`<-xi?d(4X5|Clz|Vtj@x z$m5;))$NcxYyoh?6o_+RTYq~00czBIh6y0)$HwJl$fFFJR+I>jsRtMsMe>%+6!up$hz zd*QiT8{P%pBs_ivzU|NW%2r$h7IQE4o7Y@4K&5Fu3|g@C;?KN z?dXx{AX}Zlk{OMfJJDeOf8T#+Z}~@3>c^;y)G($}KcM~-e#CJ?y zCDr9&Ie~?qaSAw<@j+UE1)xjn6EGxZxrj4CQ+_QZvId)=yVI8iblH1>Sb$O63M%!> zu+x=>{)sxejN9ivQTP&yPwq4^4)=Y*GM69x& zaV;1G3*Cf7A1Q#gfO#+$A5|~oYu%RM+IzEA^@0BP=OS-YpGRnV@awSql#WQ{{pWsb zR@o}^S1QwkEEe03(1V?10ZkK)XSg(Vuel_PAd2$XPC!R&R!ppB*=B}RI0%7OO4*G>>XWXbaA+?6 zbIDZa(emnQ`O#0VSICcf^WLgXnp<>w%p|2fbevN*D>`nrNL#nZUh92_bpU_5b^)`n zXd^VCiJ;;54|oy;+%PK$J2P8t9`Nf>3UW3VJSOPiYqGW6LwHsfk4;fCv2a+ut#aPe)t3jf|A5BiB5t2*73Z?y~m7YvR zgF(3a2jfVbf>bJTTqr~(kESNmmg!GR{2{-YOHU=Etbj#h#UFAJt9w-Ekdio>izN{# z9kB!aaRe&}Po)s&*PogSBalH{8KF>6g~G{LPKriTC>jhI>R?fR1WAPaXl8EWz-};) zNQKc{H0AdPQEKG3OiW`KFC#Z)Gz_<8wkxE9VROW{0{#FBqg9h21{n>RVOtYP)&IDR z96xZ#xG6?gRslbT4zPzLMktES@z9a;V-`k@9oD^GGac*+6WpZ%8iRQhkQ9H>dwv)(p4 z5y^Kj(zHq=^3R|M-@Qp+-lXf1>YO=Nj72^VdGooV?~V0e-#e{1HWc;4?i z8&caDW8oFnDOFUO0YC`a`g$>keWwN{oL9qE42gAVUmbdUsQ8B}wTvWtXTbX zfj{#B3pm7>e$TN9GYov!&*Z?R-r-LsCT^Nj|7`B233#*L0Vv3+w`3HOTyZiJu@v^4 zjK5Txn_s-E9JRB+SfH;-ez0zQ!;Y5kTAZINmHbcIQ&ZWa_4U=Mjg6_*_4Om!sVUpx zb4XKH;17tXmsX)sr<2maYX=xqcrlkn!;_$+_SdYP)|NQtml#KrqeK4ajfbpgOpkh7 zmq1Eb>*|?25SIia7da4G1l%(#ebxn10Iv(TsAdqH#JfJ15baIx3&g9OVy%AD^Xp2x zIh8Vb;j)%?_w8H7NdPS-5B`rkj5Ptoh5&yD&5SXqv*~)!ErB(kUYSVw}bvKqjC~8o}{*9nsWXi=Uxywtns)0^#cys=6zD!jUFA94`b^{?rC| z!Jr?a>bweK&pmZhNH6Qx?cBb$=Ik-*So1Znd2GftuzVkX=)nl)DP4k%Q%LutM!=p3)KFA<)82w`scTV6}#CK&jR9X*) z3ARj*2wFDg#(_JQeoC=AhYiHKnxhF3St!9e<=ri+6p?oQ@J*ukHHJVj1` z0EgVG_Z&tEDBR-|_lUsty6l0L>%l7UItQ-Ubeds--vW5+sLJB7qm6v@N&wCVj=((S z8PO6{g)qRCy4uz4RF;)qnLoPL0GbuCq&uYVZ>$}iUrAe*>i>BpaOOR{xR)9#FzU59=7X&`kJN;cMYfpN9FhKYJz-@JEgwMNX{5nXDg1 z;HT4mcw(#`iN&v7CLTMYKCtgS-1}dvTYQcru) zfYtJ_>m7~?dXaXt8g~WMALs{H(|b#FB4u`Ee7wAIMg}gON3M54y~s`IkAbf1>Os=K z#}@T5mgs;9c2MK7{xjY(b~ed@zk79VZkdXHj9LtmYK$U=@}{X=&Im_xX|6~;b~gCO zE^veg?!=l~0E7dky9^nUCd{FKTQ7R9prJjX9K)Ug;m5KVnb|7GN6Wb}xWxGaoPaox z9gZa-=p_KB81fAI(b8x8fW+m)^kBYpAmJE#2L2_$^!G=V05zu~G7_jQ!ks&IUbq`l zzs`W=A%z}a8Hz`MZ-VSTwCx|;*Ic(N55^7T7dyP|f4;Z9PEQ_8p(lIW&Zs+wk9#qM zNDD)6rBhyQVUZjIFy7&fe}dyz*YM_T!GpkUhc^9%NMzlan?0R<5Wx=-j9bg;|7nVhn5n=uyzxz^LGm3&jfi*eJry zl2|rW4FO}+O_5?kid4tWB@gPV?f)!g!k_g&6%N1C?|*0PvGn4}Bdf)qxDv^xGuR)X z(auKt|FXDx~;1`*~Y)}%nOUn;nU+R{JO2J*Rc>bBW&T~Bl3AfYJ>$f5M6x% zapbVmqGJo}BDn9NRI$L3!81XKlo_bM_ea9!tuKF>Y4{^^i)*$G+4FDY^Lgas`Hi{7 zTBU;I0{y!vH|9TeF5)*rx4!&V6X_iyQJA9Ds&l_lK(d}f{x{;Guw6d7Tu~;o9l%4$xa3MKtIZ zZUNqjeGOlD$BYCKGPS*!LLQR~W;|w|kA}=t^|dMyL;&lZa2R$83H914pPvr{ST6AS z;(cgkd?(z)b;!VVTVLzatj!2rFkuURArc(*G#J5C^o?twhnS1Zcf&k#%=i2z^in{T zBg>%%-7+dK2YT#C3|NSWjd3D2nxJj;jRu&wgJnRAqCyN55F5XsTB}n?gE2L|!sFER z>iQc_E-o7IT~!z0z-TNkp8SvqWFTm9kNxM6O~g7)m8p^beOn!KAGk;L%xMc&r^^2Q zw3yI#Sn=w#d`FHpOzMxt%`i~Qv4sTyji+{2ax4@wjIbJ?sAi1$#vwXjGS%A5qmK+sBVA1Omvs265J&cOEH11EJrc1~6u|@-$2t(xB%m0`=YWYC z;#cSxc}kExI%QYXZ~cG?1#te~V>`;5#`otfYelWESXRFOf7Z-asP->bKlia=B*>3_ zZhp367?s)iyKW0dyWME`HXr4OJ@qYomyr~AunK)3k_kg5@C18`DR=CMnpJJW&2H<_ zC^qqUp!5W=;EDgh%A-G|#!l*k+#X}G{(m(UVl~ue5QqWCg0-+<72GQx&4myBCDEaa zCj}{bFZl4Ew|+JjV}(DUKA1-!j{cuzhn3iY1-QFE+ z0CHEvsK~_5VnbV}tJr4S?RLMryZ63?I|j&L9}K+kMfE%CGm=q{!OgHlHLK|1bg(Uu zYq<6uG0FttSXU2QV`J8HpvG2K%1>!G&!-yKUDv49o||7=o3B)^6sM+&`TS-5>~a)q z=n4dO4_nrAe8;vyB=Xr)wHn`hu2SK9SMqtjcUeEX9FIq%SNJ9NV<;ak!lxg$kJ!RR zwgl*tv3A9%egQTY{0N++WkoPWa~t)^yP#Z+{Jkqp)QNdi@(TjhOtLxeM}i zk$Csq$A537`(NiR_Xdwwxp8Bc#}C`AX%I+0K#?Dk3&+PQoHpRh5&es_a_{$4OU3|| z_C$WiOz`_O&D!iq2)=#9T~J6o@+bqM&qw;Kqe-d*k+FDxRFJkqDX<=D8$86m?Z&>! z08br<9+Me1J(l<`%9wYi_dXOOE6_y{a%}IpLUG$W9Nj}N?EUX`_uruWrwUsM8!$8jtFf0O-s3x+ zd8gHw6ZKUVFU==3uBlskAI5U#K5a4x3x~;}^{{}yi*auvpO0NsX&Q;aDhvNb(_tK2 z*xFMT1dJAtZCa%(W%554g>np=>irr#ToJ4*Wjp*@y$_Wdg~!Pn;TyPU7A4MuMJ*(+m(Go@lE zU?u10Za@KlzzijxJhvPP#o~oWgjc-E-%e&`JeCTEN&)EnSP^h194y9X>8o|%w9wR`D=EY=>q=p2TYI&cvLDs9Bf9&H|wNW&E0 zT~Y@hHV)#2{^hirNg}OhxvdXE$&ldLd)w!oB-QEOa0JY$3GLMZo-x!?`Z5J8auARAUx7}`GpKZ6h?Y5@F z06RU&9p@_|fAvOF2LuzLl`vVVSv8ADn5W*AvU15vGTDERoT%I0SbAeAmCRWw^{yly z;H3W^oG6PAFnyZd625005`ddw(dg=H#glmo%a`8)i|@{pkQ{_k0o4rWwM_1=TG2VR z3C+C8A{ue>jBoRa68fVtmb=x`6E|?l8h8q%UCg9fwa%>#1XBaw=f#W&RPNfF8>kpA36cX4mu( zh;*k4%1g*iBpBah0mR2;uQ$yDM5xwr%f{Ps_jSgP=AD+@X=wmzwRmgS?TCAXdK972oE47Z!L(=@i4uVR<<@kgbqLVjjjr z=p+l1mQj^VBje*R9>@>a?Wzv`jU=3)k@qpsH~;y7A0ZcNVLwgrYfX}kuH_KAEAf3W zYTEr{p*pF;77|zd6A-K6ABn>+P=)*7;+-FXG$is*cxM-(2b1p)hu@!sRb|V2K~U8+ zV9UqvdFQh%^Lfl$F{^#Vt%&tF@B7^L9%$`>*6nEv`^pYutz^kBf?j~l2bHnZ%L|V1 zJH}Llb+cJ?BC=<{YFS@J>?khL?%!te`OH^2@Y;^!tJ)5rl>DW5{Fjm?F4q2ECKA7R z)m=1Ke^IwRjj`T^H}_fe-PHtedCF!grmq?&VT1An?*KVN&8bMzCFqCn)xcA`I-$|c zCz*9QjO;xtn{M)>g>t#b_-Vj2m-PX^_R%AoIulY)r!-QlVeF|<2ncL<%i5p!2Nm47 z2=`K?PHI4bL3rt549WYFPGEd335Ua-)CC-genyaSL%(T>NYIp`IyjmuBxxc{qFFQ% z=`HkqLDMXRBT@5RChs6{!XqJ`MI+%KjP(D@iD*0#1?ogZdO2<%`9>sMFwNj2@MDge zg$Uk@Mo^wLfoI~`yMoceiAdzpXd)gx>KsoT#bgi;dt##s-x`fg7+4L)sGJRCXoEE9 zzrD3!h7l;!f=~CYkK`g|TFLp#cH!U&MktXk{^sz^fo+3p>CNuCm6;Oq0h=vATqsnH zMTGp+No*PvS~$-Mda`SY7zG7n=4^Zv7FeZT0D4nQJJI4vVpp^3scxifbnj_Y+$_D z%>|5vke=EcfcrCC)F3$->TWq$D59lr7!ECC!8q4(PZOur7gQ?l4TC+u^Nq}^7-6RHC3R&AkY;6X9XDiHRLv`dJsKJseO5h4EG3IIWk{1 zN3#e8d;6{Rno=tXFgHP3?&eQa9U0z