Episode 26: Peeling back the curtain of Movie Vue R (Part 1)
What makes a great Shiny app? Anything that helps your users explore and find answers from data. And it helps when your apps is beautiful and fast. It is now easier than ever for Shiny developers to create these beautiful, dynamic, quick-reacting, multipage shiny apps. In this episode of the Shiny Developer Serie -- the first of two parts -- Eric Nantz hosts Herman Sontrop and Kenton Russell as they introduce the tools behind their Movie Vue R Shiny application. They submitted this application to the 2021 Shiny Contest and have shared the code and documentation with the Shiny developer community. Part 1 is a high-level tour of what is inside the Movie Vue R Shiny application and how the Vue javascript framework is used to offer R and Shiny components really nice user interface elements.<br />Resources mentioned in the episode<br /><ul><li>Movie Vue R Shiny App: <a href="https://friss.shinyapps.io/shiny-vue-r/" target="_blank">friss.shinyapps.io/shiny-vue-r</a></li><li><a href="https://community.rstudio.com/t/movie-vue-r-shiny-contest-submission/104905" target="_blank">Contest Submission Post</a> on RStudio Community</li><li>App GitHub repository: <a href="https://github.com/FrissAnalytics/shiny-vue-r" target="_blank">github.com/FrissAnalytics/shiny-vue-r</a></li><li>Discussion slides available at <a href="https://shinydevseries-assets.us-east-1.linodeobjects.com/ShinyMovieVueR.pptx" target="_blank">this link</a></li><li>Vue.js - Progressive JavaScript framework: <a href="https://vuejs.org" target="_blank">vuejs.org</a></li><li>Vuetify - Material design framework for Vue: <a href="https://vuetifyjs.com/en" target="_blank">vuetifyjs.com</a></li><li>HTML templates article: <a href="https://shiny.rstudio.com/articles/templates.html" target="_blank">shiny.rstudio.com/articles/templates.html</a></li><li>Material design icons: <a href="https://materialdesignicons.com/" target="_blank">materialdesignicons.com</a></li><li>http-vue-loader - load .vue files from your HTML/JS: <a href="https://github.com/FranckFreiburger/http-vue-loader" target="_blank">github.com/FranckFreiburger/http-vue-loader</a></li><li>Vuex getting started guide: <a href="https://vuex.vuejs.org/guide/" target="_blank">vuex.vuejs.org/guide</a></li><li>Vue Router - The official router for Vue.js: <a href="https://router.vuejs.org/" target="_blank">router.vuejs.org</a></li><li>UI component for Globe Data Visualization using ThreeJS/WebGL: <a href="https://globe.gl/" target="_blank">globe.gl</a></li><li>Lodash - A modern JavaScript utility library delivering modularity, performance & extras: <a href="https://lodash.com/" target="_blank">lodash.com</a></li><li>d3.js - Data-Driven Documents: <a href="https://d3js.org/" target="_blank">d3js,org</a></li><li>Mitt - Tiny 200b functional event emitter / pubsub: <a href="https://github.com/developit/mitt" target="_blank">github.com/developit/mitt</a></li><li>Overlay Scrollbars - A javascript scrollbar plugin which hides native scrollbars, provides custom styleable overlay scrollbars and keeps the native functionality and feeling: <a href="https://kingsora.github.io/OverlayScrollbars" target="_blank">kingsora.github.io/OverlayScrollbars</a></li><li>Kent's listviewer HTML widget for viewing lists: <a href="https://cran.r-project.org/package=listviewer" target="_blank">cran.r-project.org/package=listviewer</a></li><li>plumber - Turn your R code into a web API: <a href="https://www.rplumber.io/" target="_blank">www.rplumber.io</a></li></ul>Episode Timestamps<br /><a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=0s" target="_blank">00:00:00</a> Episode Introduction <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=60s" target="_blank">00:01:00</a> Introduction to Herman Sontrop <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=370s" target="_blank">00:06:10</a> Introduction to Kenton Russell <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=600s" target="_blank">00:10:00</a> High-level walkthrough of Movie Vue R <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=1165s" target="_blank">00:19:25</a> Diving into the code that drives Movie Vue R <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=1355s" target="_blank">00:22:35</a> Overview and motivation behind Vue <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=2310s" target="_blank">00:38:30</a> Vue instance example <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=2400s" target="_blank">00:40:00</a> Vue reactivty examples <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=2770s" target="_blank">00:46:10</a> Vue.js components are like Shiny modules <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=2990s" target="_blank">00:49:50</a> Single file components <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=3256s" target="_blank">00:54:16</a> Breaking down a Vue component into useful parts; props, data, methods, computed, and watch <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=3440s" target="_blank">00:57:20</a> Vuetify, tap into many pre-built components, styles, and more <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=4200s" target="_blank">01:10:00</a> Covid Globe Example in Shiny app <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=4360s" target="_blank">01:12:40</a> Rendering a ggplot <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=4515s" target="_blank">01:15:15</a> Summarizing parts of the Movie Vue R app <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=4750s" target="_blank">01:19:10</a> A look at template.html. A detailed walk through the organization of the app's HTML and files <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=5190s" target="_blank">01:26:30</a> Where R and Shiny are added to a Vue app. And how your app can send messages back to Shiny and R <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=5480s" target="_blank">01:31:20</a> Loading images and ggplots <br /><br /> <a href="https://youtube.com/watch?v=SkFLHbHrPD4&t=5880s" target="_blank">01:38:00</a> Episode wrapup