Giter Club home page Giter Club logo

Comments (2)

FrissAnalytics avatar FrissAnalytics commented on June 16, 2024

nice!

from vuer.

timelyportfolio avatar timelyportfolio commented on June 16, 2024

I thought it would be fun to use a Vuetify v-select component to control crosstalk. Here is my first approach.

library(crosstalk)
library(plotly)
library(vueR)
library(htmltools)

mh <- mtcars %>% highlight_key(~cyl)
pl <- mh %>%
  plot_ly(
    x = ~wt, y = ~mpg, text = ~cyl, mode = "markers+text", 
    textposition = "top", hoverinfo = "x+y"
  ) %>%
  highlight(on = "plotly_hover", off = "plotly_doubleclick")

browsable(
  tagList(
    vueR::html_dependency_vue(minified = FALSE),
    tags$head(
      tags$link(href="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.css", rel="stylesheet"),
      tags$link( href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900", rel="stylesheet"),
      tags$link(href="https://cdn.jsdelivr.net/npm/@mdi/[email protected]/css/materialdesignicons.min.css", rel="stylesheet"),
      tags$script(src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.js")
    ),
    tag(
      "v-app",
      list(
        id = "app",
        tags$div(HTML("<v-select :items = 'cyl' @change = 'updateSelected' v-model= 'selected' multiple chips/>")),
        pl,
        tags$h3("Filter Handle"),
        "{{ filter.filteredKeys ? filter.filteredKeys : 'nothing filtered' }}",
        tags$h3("Selection Handle"),
        "{{ selection.value ? selection.value : 'nothing selected' }}"
      )
    ),
    tags$script(HTML(
sprintf(
"
  const app = new Vue({
    el: '#app',
    vuetify: new Vuetify(),
    data() {
      return {
        filter: new crosstalk.FilterHandle('%1$s'),
        selection: new crosstalk.SelectionHandle('%1$s'),
        cyl: %2$s.map(d => d.toString()) // crosstalk keys are strings
      }
    },
    computed: {
      selected: function() {return this.selection.value}
    },
    methods: {
      updateSelected: function(val) {
        this.selection.set(Array.isArray(val) ? val : [val])
      }
    }
  })
",
mh$groupName(),
jsonlite::toJSON(sort(unique(mh$data()$cyl)),auto_unbox=TRUE)
)
    ))
  )
)

vuetify_plotly_crosstalk

from vuer.

Related Issues (10)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.