kandi background
Explore Kits

arrow | Better dates & times for Python | Date Time Utils library

 by   arrow-py Python Version: 1.2.1 License: Apache-2.0

 by   arrow-py Python Version: 1.2.1 License: Apache-2.0

Download this library from

kandi X-RAY | arrow Summary

arrow is a Python library typically used in Utilities, Date Time Utils applications. arrow has no bugs, it has build file available, it has a Permissive License and it has medium support. However arrow has 1 vulnerabilities. You can download it from GitHub.
🏹 Better dates & times for Python
Support
Support
Quality
Quality
Security
Security
License
License
Reuse
Reuse

kandi-support Support

  • arrow has a medium active ecosystem.
  • It has 7695 star(s) with 608 fork(s). There are 134 watchers for this library.
  • It had no major release in the last 12 months.
  • There are 56 open issues and 388 have been closed. On average issues are closed in 231 days. There are 10 open pull requests and 0 closed requests.
  • It has a neutral sentiment in the developer community.
  • The latest version of arrow is 1.2.1
arrow Support
Best in #Date Time Utils
Average in #Date Time Utils
arrow Support
Best in #Date Time Utils
Average in #Date Time Utils

quality kandi Quality

  • arrow has 0 bugs and 0 code smells.
arrow Quality
Best in #Date Time Utils
Average in #Date Time Utils
arrow Quality
Best in #Date Time Utils
Average in #Date Time Utils

securitySecurity

  • arrow has 1 vulnerability issues reported (0 critical, 1 high, 0 medium, 0 low).
  • arrow code analysis shows 0 unresolved vulnerabilities.
  • There are 0 security hotspots that need review.
arrow Security
Best in #Date Time Utils
Average in #Date Time Utils
arrow Security
Best in #Date Time Utils
Average in #Date Time Utils

license License

  • arrow is licensed under the Apache-2.0 License. This license is Permissive.
  • Permissive licenses have the least restrictions, and you can use them in most projects.
arrow License
Best in #Date Time Utils
Average in #Date Time Utils
arrow License
Best in #Date Time Utils
Average in #Date Time Utils

buildReuse

  • arrow releases are available to install and integrate.
  • Build file is available. You can build the component from source.
arrow Reuse
Best in #Date Time Utils
Average in #Date Time Utils
arrow Reuse
Best in #Date Time Utils
Average in #Date Time Utils
Top functions reviewed by kandi - BETA

kandi has reviewed arrow and discovered the below as its top functions. This is intended to give you an instant insight into arrow implemented functionality, and help decide if they suit your requirements.

  • Yields tuples from start and end times
    • Returns an iterator that spans the given range
    • Create a new Arrow instance from a datetime datetime object
    • Parse a timezone expression
  • Format datetime
    • Format a date
    • Get the time toocal calendar
    • Return a timetuple of the datetime
  • Get Arrow instance
    • Create a new Arrow from a date
    • Create a new Arrow instance from a timestamp
    • Create a new Arrow instance
  • Return a timestamp
    • Get timestamp
  • Return a humanized string representation of timeframes
    • Format relative direction
  • Return a floating point timestamp
    • Return a naive datetime object
      • Returns a Locale instance
        • Format a humanized string
          • Formats the relative time in humanized format
            • Create a Arrow instance from a datetime datetime object
              • Formats a list of timeframes
                • Return a humanized representation of a timeframe
                  • Return a UTC datetime

                    Get all kandi verified functions for this library.

                    Get all kandi verified functions for this library.

                    arrow Key Features

                    🏹 Better dates & times for Python

                    Matter.Query.region not returning any collisions even though the bound is clearly intersecting other bodies

                    copy iconCopydownload iconDownload
                    let bounds = Matter.Bounds.create([topLeft, topRight, bottomRight, bottomLeft]);
                    //                                ^                                          ^
                    
                    const {Engine, Runner, Composite, Bodies, Body} = Matter;
                    let engine;
                    let boxA;
                    let boxB;
                    const platforms = [];
                    
                    function setup() {
                      createCanvas(550, 400);
                      engine = Engine.create();
                    
                      // create two boxes and a ground
                      boxA = Bodies.rectangle(275, 200, 80, 80, {
                        mass: 20
                      });
                      platforms.push(boxA);
                    
                      boxB = Bodies.rectangle(300, 50, 80, 80, {
                        mass: 20
                      });
                      Body.setInertia(boxB, Infinity); // TODO remove for realism
                      
                      ground = Bodies.rectangle(250, 410, 810, 60, {
                        isStatic: true
                      });
                      platforms.push(ground);
                      Composite.add(engine.world, [boxA, boxB, ground]);
                      Runner.run(Runner.create(), engine);
                    }
                    
                    function draw() {
                      const {x, y} = boxB.position;
                      const vertices = [
                        // FIXME hardcoded values for now...
                        {x: x - 40, y: y + 40},
                        {x: x + 40, y: y + 40},
                        {x: x + 40, y: y + 50},
                        {x: x - 40, y: y + 50},
                      ];
                      const bounds = Matter.Bounds.create(vertices, boxB);
                      
                      // return valaue holds the collided platform(s)
                      const collisions = Matter.Query.region(platforms, bounds);
                    
                      background(51);
                      keyDown();
                      
                      drawShape(boxA);
                      drawShape(boxB);
                      drawShape(ground, 127);
                    
                      push();
                      // Show bounds collision
                      stroke(collisions.length ? 'red' : 'purple');
                      strokeWeight(10);
                      vertices.forEach(({x, y}) => point(x, y));
                      pop();
                    }
                    
                    function drawShape(body, color=225) {
                      beginShape();
                      fill(color);
                      body.vertices.forEach(({x, y}) => vertex(x,  y));
                      endShape();
                    }
                    
                    function keyPressed() {
                      const jumpHeight = 14;
                      
                      if (keyCode === UP_ARROW) {
                        Body.setVelocity(boxB, {x: boxB.velocity.x, y: -jumpHeight})
                      }
                    }
                    
                    function keyDown() {
                      const velocity = 12;
                      let targetX = 0;
                    
                      if (keyIsDown(RIGHT_ARROW)) {
                        targetX = velocity;
                      } else if (keyIsDown(LEFT_ARROW)) {
                        targetX = -velocity;
                      }
                      
                      targetX = lerp(boxB.velocity.x, targetX, 0.1);
                      Body.setVelocity(boxB, {x: targetX, y: boxB.velocity.y});
                    }
                    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.1/p5.js"></script>
                    <script src="https://cdnjs.cloudflare.com/ajax/libs/matter-js/0.18.0/matter.min.js"></script>
                    let bounds = Matter.Bounds.create([topLeft, topRight, bottomRight, bottomLeft]);
                    //                                ^                                          ^
                    
                    const {Engine, Runner, Composite, Bodies, Body} = Matter;
                    let engine;
                    let boxA;
                    let boxB;
                    const platforms = [];
                    
                    function setup() {
                      createCanvas(550, 400);
                      engine = Engine.create();
                    
                      // create two boxes and a ground
                      boxA = Bodies.rectangle(275, 200, 80, 80, {
                        mass: 20
                      });
                      platforms.push(boxA);
                    
                      boxB = Bodies.rectangle(300, 50, 80, 80, {
                        mass: 20
                      });
                      Body.setInertia(boxB, Infinity); // TODO remove for realism
                      
                      ground = Bodies.rectangle(250, 410, 810, 60, {
                        isStatic: true
                      });
                      platforms.push(ground);
                      Composite.add(engine.world, [boxA, boxB, ground]);
                      Runner.run(Runner.create(), engine);
                    }
                    
                    function draw() {
                      const {x, y} = boxB.position;
                      const vertices = [
                        // FIXME hardcoded values for now...
                        {x: x - 40, y: y + 40},
                        {x: x + 40, y: y + 40},
                        {x: x + 40, y: y + 50},
                        {x: x - 40, y: y + 50},
                      ];
                      const bounds = Matter.Bounds.create(vertices, boxB);
                      
                      // return valaue holds the collided platform(s)
                      const collisions = Matter.Query.region(platforms, bounds);
                    
                      background(51);
                      keyDown();
                      
                      drawShape(boxA);
                      drawShape(boxB);
                      drawShape(ground, 127);
                    
                      push();
                      // Show bounds collision
                      stroke(collisions.length ? 'red' : 'purple');
                      strokeWeight(10);
                      vertices.forEach(({x, y}) => point(x, y));
                      pop();
                    }
                    
                    function drawShape(body, color=225) {
                      beginShape();
                      fill(color);
                      body.vertices.forEach(({x, y}) => vertex(x,  y));
                      endShape();
                    }
                    
                    function keyPressed() {
                      const jumpHeight = 14;
                      
                      if (keyCode === UP_ARROW) {
                        Body.setVelocity(boxB, {x: boxB.velocity.x, y: -jumpHeight})
                      }
                    }
                    
                    function keyDown() {
                      const velocity = 12;
                      let targetX = 0;
                    
                      if (keyIsDown(RIGHT_ARROW)) {
                        targetX = velocity;
                      } else if (keyIsDown(LEFT_ARROW)) {
                        targetX = -velocity;
                      }
                      
                      targetX = lerp(boxB.velocity.x, targetX, 0.1);
                      Body.setVelocity(boxB, {x: targetX, y: boxB.velocity.y});
                    }
                    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.1/p5.js"></script>
                    <script src="https://cdnjs.cloudflare.com/ajax/libs/matter-js/0.18.0/matter.min.js"></script>
                    let bounds = Matter.Bounds.create([topLeft, topRight, bottomRight, bottomLeft]);
                    //                                ^                                          ^
                    
                    const {Engine, Runner, Composite, Bodies, Body} = Matter;
                    let engine;
                    let boxA;
                    let boxB;
                    const platforms = [];
                    
                    function setup() {
                      createCanvas(550, 400);
                      engine = Engine.create();
                    
                      // create two boxes and a ground
                      boxA = Bodies.rectangle(275, 200, 80, 80, {
                        mass: 20
                      });
                      platforms.push(boxA);
                    
                      boxB = Bodies.rectangle(300, 50, 80, 80, {
                        mass: 20
                      });
                      Body.setInertia(boxB, Infinity); // TODO remove for realism
                      
                      ground = Bodies.rectangle(250, 410, 810, 60, {
                        isStatic: true
                      });
                      platforms.push(ground);
                      Composite.add(engine.world, [boxA, boxB, ground]);
                      Runner.run(Runner.create(), engine);
                    }
                    
                    function draw() {
                      const {x, y} = boxB.position;
                      const vertices = [
                        // FIXME hardcoded values for now...
                        {x: x - 40, y: y + 40},
                        {x: x + 40, y: y + 40},
                        {x: x + 40, y: y + 50},
                        {x: x - 40, y: y + 50},
                      ];
                      const bounds = Matter.Bounds.create(vertices, boxB);
                      
                      // return valaue holds the collided platform(s)
                      const collisions = Matter.Query.region(platforms, bounds);
                    
                      background(51);
                      keyDown();
                      
                      drawShape(boxA);
                      drawShape(boxB);
                      drawShape(ground, 127);
                    
                      push();
                      // Show bounds collision
                      stroke(collisions.length ? 'red' : 'purple');
                      strokeWeight(10);
                      vertices.forEach(({x, y}) => point(x, y));
                      pop();
                    }
                    
                    function drawShape(body, color=225) {
                      beginShape();
                      fill(color);
                      body.vertices.forEach(({x, y}) => vertex(x,  y));
                      endShape();
                    }
                    
                    function keyPressed() {
                      const jumpHeight = 14;
                      
                      if (keyCode === UP_ARROW) {
                        Body.setVelocity(boxB, {x: boxB.velocity.x, y: -jumpHeight})
                      }
                    }
                    
                    function keyDown() {
                      const velocity = 12;
                      let targetX = 0;
                    
                      if (keyIsDown(RIGHT_ARROW)) {
                        targetX = velocity;
                      } else if (keyIsDown(LEFT_ARROW)) {
                        targetX = -velocity;
                      }
                      
                      targetX = lerp(boxB.velocity.x, targetX, 0.1);
                      Body.setVelocity(boxB, {x: targetX, y: boxB.velocity.y});
                    }
                    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.1/p5.js"></script>
                    <script src="https://cdnjs.cloudflare.com/ajax/libs/matter-js/0.18.0/matter.min.js"></script>

                    Fixing Cluttered Titles on Graphs

                    copy iconCopydownload iconDownload
                    library(visNetwork)
                    library(tidyverse)
                    library(igraph)
                    library(manipulateWidget)
                    library(htmltools)
                    
                    create_trip_graph <-
                      function(x, distance = NULL) {
                        n <- 15
                        data <- tibble(d = 1:n,
                                       name =
                                         c(
                                           "new york",
                                           "chicago",
                                           "los angeles",
                                           "orlando",
                                           "houston",
                                           "seattle",
                                           "washington",
                                           "baltimore",
                                           "atlanta",
                                           "las vegas",
                                           "oakland",
                                           "phoenix",
                                           "kansas",
                                           "miami",
                                           "newark"
                                         ))
                        
                        relations <-  tibble(from = sample(data$d),
                                             to = lead(from, default = from[1]))    
                        graph <-
                          graph_from_data_frame(relations, directed = TRUE, vertices = data)
                        
                        V(graph)$color <-
                          ifelse(data$d == relations$from[1], "red", "orange")
                        
                        if (is.null(distance))
                          # This generates a random distance value if none is 
                          # specified in the function call. Values are just for 
                          # demonstration, no actual distances are calculated.
                          distance <- sample(seq(19, 25, .1), 1)
                        
                        toVisNetworkData(graph) %>%
                          c(., list(
                            main = paste0("Trip ", x, " : "),
                            submain = paste0(distance, "KM")
                          )) %>%
                          do.call(visNetwork, .) %>%
                          visIgraphLayout(layout = "layout_in_circle") %>%
                          visInteraction(navigationButtons = TRUE) %>%
                          visEdges(arrows = 'to')
                      }
                    
                    comb_vgraphs <- lapply(1:25, function (x) list(
                      create_trip_graph(x),
                      htmltools::a("NEXT TRIP", 
                                   onclick = 'window.scrollBy(0,950)', 
                                   style = 'color:blue; text-decoration:underline;')))  %>%
                      unlist(recursive = FALSE)
                    
                    
                    ff <-
                      combineWidgets(
                        list = comb_vgraphs,
                        ncol = 1,
                        height = 25 * 950,
                        rowsize = c(24, 1)
                      )
                    
                    htmltools::save_html(html = ff, file = "widgets.html")
                    
                    comb_vgraphs2 <- lapply(1:25, function(x) {
                      a <- list(create_trip_graph(x))
                      # We detect whenever we are creating the 5th, 10th, 15th etc. network map
                      # and add the link after that one.
                      if (x %% 5 == 0 & x < 25) a[[2]] <- htmltools::a("NEXT 5 TRIPS", 
                                                              onclick = 'window.scrollBy(0,500)', 
                                                              style = 'color:blue; text-decoration:underline;')
                      a
                    }) %>%
                      unlist(recursive = FALSE)
                    
                    ff2 <-
                      combineWidgets(
                        list = comb_vgraphs2,
                        ncol = 6, # We need six columns, 5 for the network maps 
                                  # and 1 for the link to scroll the page.
                        height = 6 * 500,
                        width = 1700
                        #rowsize = c(24, 1)
                      )
                    
                    # We need to add some white space in for the scrolling by clicking the link to 
                    # still work for the last row.
                    ff2$widgets[[length(ff2$widgets) + 1]] <- htmltools::div(style = "height: 1000px;")
                    
                    htmltools::save_html(html = ff2, file = "widgets2.html")
                    
                    library(visNetwork)
                    library(tidyverse)
                    library(igraph)
                    library(manipulateWidget)
                    library(htmltools)
                    
                    create_trip_graph <-
                      function(x, distance = NULL) {
                        n <- 15
                        data <- tibble(d = 1:n,
                                       name =
                                         c(
                                           "new york",
                                           "chicago",
                                           "los angeles",
                                           "orlando",
                                           "houston",
                                           "seattle",
                                           "washington",
                                           "baltimore",
                                           "atlanta",
                                           "las vegas",
                                           "oakland",
                                           "phoenix",
                                           "kansas",
                                           "miami",
                                           "newark"
                                         ))
                        
                        relations <-  tibble(from = sample(data$d),
                                             to = lead(from, default = from[1]))    
                        graph <-
                          graph_from_data_frame(relations, directed = TRUE, vertices = data)
                        
                        V(graph)$color <-
                          ifelse(data$d == relations$from[1], "red", "orange")
                        
                        if (is.null(distance))
                          # This generates a random distance value if none is 
                          # specified in the function call. Values are just for 
                          # demonstration, no actual distances are calculated.
                          distance <- sample(seq(19, 25, .1), 1)
                        
                        toVisNetworkData(graph) %>%
                          c(., list(
                            main = paste0("Trip ", x, " : "),
                            submain = paste0(distance, "KM")
                          )) %>%
                          do.call(visNetwork, .) %>%
                          visIgraphLayout(layout = "layout_in_circle") %>%
                          visInteraction(navigationButtons = TRUE) %>%
                          visEdges(arrows = 'to')
                      }
                    
                    comb_vgraphs <- lapply(1:25, function (x) list(
                      create_trip_graph(x),
                      htmltools::a("NEXT TRIP", 
                                   onclick = 'window.scrollBy(0,950)', 
                                   style = 'color:blue; text-decoration:underline;')))  %>%
                      unlist(recursive = FALSE)
                    
                    
                    ff <-
                      combineWidgets(
                        list = comb_vgraphs,
                        ncol = 1,
                        height = 25 * 950,
                        rowsize = c(24, 1)
                      )
                    
                    htmltools::save_html(html = ff, file = "widgets.html")
                    
                    comb_vgraphs2 <- lapply(1:25, function(x) {
                      a <- list(create_trip_graph(x))
                      # We detect whenever we are creating the 5th, 10th, 15th etc. network map
                      # and add the link after that one.
                      if (x %% 5 == 0 & x < 25) a[[2]] <- htmltools::a("NEXT 5 TRIPS", 
                                                              onclick = 'window.scrollBy(0,500)', 
                                                              style = 'color:blue; text-decoration:underline;')
                      a
                    }) %>%
                      unlist(recursive = FALSE)
                    
                    ff2 <-
                      combineWidgets(
                        list = comb_vgraphs2,
                        ncol = 6, # We need six columns, 5 for the network maps 
                                  # and 1 for the link to scroll the page.
                        height = 6 * 500,
                        width = 1700
                        #rowsize = c(24, 1)
                      )
                    
                    # We need to add some white space in for the scrolling by clicking the link to 
                    # still work for the last row.
                    ff2$widgets[[length(ff2$widgets) + 1]] <- htmltools::div(style = "height: 1000px;")
                    
                    htmltools::save_html(html = ff2, file = "widgets2.html")
                    
                    ---
                    title: "Just for antonoyaro8"
                    output: 
                      flexdashboard::flex_dashboard:
                        orientation: columns
                        vertical_layout: fill
                    ---
                    
                    <style>
                    select {
                      // A reset of styles, including removing the default dropdown arrow
                      appearance: none;
                      background-color: transparent;
                      border: none;
                      padding: 0 1em 0 0;
                      margin: 0;
                      width: 100%;
                      font-family: inherit;
                      font-size: inherit;
                      cursor: inherit;
                      line-height: inherit;
                    }
                    .select {
                      display: grid;
                      grid-template-areas: "select";
                      align-items: center;
                      position: relative;
                      min-width: 15ch;
                      max-width: 100ch;
                      border: 1px solid var(--select-border);
                      border-radius: 0.25em;
                      padding: 0.25em 0.5em;
                      font-size: 1.25rem;
                      cursor: pointer;
                      line-height: 1.1;
                      background-color: #fff;
                      background-image: linear-gradient(to top, #f9f9f9, #fff 33%);
                    }
                    select[multiple] {
                      padding-right: 0; 
                      /* Safari will not show options unless labels fit   */
                      height: 50rem;   // how many options show at one time
                      font-size: 1rem;
                    }
                    #column-1 > div.containIt > div.visNetwork canvas {
                      width: 100%;
                      height: 80%;
                    }
                    .containIt {
                      display: flex;
                      flex-flow: row wrap;
                      flex-grow: 1;
                      justify-content: space-around;
                      align-items: flex-start;
                      align-content: space-around;
                      overflow: hidden;
                      height: 100%;
                      width: 100%;
                      margin-top: 2vw;
                      height: 80vh;
                      widhth: 80vw;
                      overflow: hidden;
                    }
                    
                    </style>
                    
                    ```{r setup, include=FALSE}
                    
                    library(flexdashboard)
                    library(visNetwork)
                    library(htmltools)
                    library(igraph)
                    library(tidyverse)
                    library(shinyRPG) # remotes::install_github("RinteRface/shinyRPG")
                    
                    ```
                    
                    ```{r dataStuff}
                    
                    set.seed(123)
                    n=15
                    data = data.frame(tibble(d = paste(1:n)))
                    
                    relations = data.frame(tibble(
                      from = sample(data$d),
                      to = lead(from, default=from[1]),
                    ))
                    data$name = c("new york", "chicago", "los angeles", "orlando", "houston", "seattle", "washington", "baltimore", "atlanta", "las vegas", "oakland", "phoenix", "kansas", "miami", "newark" )
                    
                    graph = graph_from_data_frame(relations, directed=T, vertices = data) 
                    
                    #red circle: starting point and final point
                    V(graph)$color <- ifelse(data$d == relations$from[1], "red", "orange")
                    
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = paste0("Trip ", m_1, " : "), 
                                submain = paste0 (m_2, "KM") )) %>%
                      do.call(visNetwork, .) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to')
                    
                    # collect the correct order
                    df2 <- data %>% 
                      mutate(d = as.numeric(d),
                             nuname = factor(a$x$edges$from, 
                                             levels = unlist(data$name))) %>%
                      arrange(nuname) %>% 
                      select(d) %>% unlist(use.names = F)
                    #  [1] 11  5  2  8  7  6 10 14 15  4 12  9 13  3  1 
                    V(graph)$name = data$label = paste0(df2, "\n", data$name)
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = list(text = paste0("Trip ", m_1, " : "), 
                                            style = "font-family: Georgia; font-size: 100%; font-weight: bold; text-align:center;"),
                                submain = list(text = paste0(m_2, "KM"),
                                               style = "font-family: Georgia; font-size: 100%; text-align:center;"))) %>%
                      do.call(visNetwork, .) %>%
                      visInteraction(navigationButtons = TRUE) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to') %>% 
                      visOptions(width = "100%", height = "80%", autoResize = T)
                    
                    a[["sizingPolicy"]][["knitr"]][["figure"]] <- FALSE
                    
                    y = x = w = v = u = t = s = r = q  = p = o = n = m = l = k = j = i = h = g = f = e = d = c = b = a
                    
                    ```
                    
                    Column {data-width=200}
                    -----------------------------------------------------------------------
                    
                    ### Select Options
                    
                    You can select one or more options from the list. 
                    
                    ```{r selectiver}
                    tagSel <- rpgSelect(
                      "selectBox",                      # don't change this (connected)
                      "Selections:",                    # visible on HTML; change away or set to ""
                      c(setNames(1:25, letters[1:25])), # left is values, right is labels
                      multiple = T                      # all multiple selections
                    )        # other attributes controlled by css at the top
                    
                    tagSel$attribs$class <- 'select select--multiple'       # connect styles
                    tagSel$children[[2]]$attribs$class <- "mutli-select"    # connect styles
                    tagSel$children[[2]]$attribs$onchange <- "getOps(this)" # connect the JS function
                    
                    tagSel
                    
                    ```
                    
                    Column
                    -----------------------------------------------------------------------
                    
                    <div class="containIt">
                    
                    ```{r notNow, include=T}
                    
                    a
                    b
                    c
                    d
                    e
                    f
                    g
                    h
                    i
                    j
                    k
                    l
                    m
                    n
                    o
                    p
                    q
                    r
                    s
                    t
                    u
                    v
                    w
                    x
                    y
                    
                    ```
                    
                    </div>
                    
                    ```{r pickMe,results='asis',engine='js'}
                    
                    //remove inherent knitr element-- after using mutlti-select starts harboring space
                    byeknit = document.querySelector('#column-1 > div.containIt > div.knitr-options');
                    byeknit.remove(1);
                    
                    // Reset Sizing of Widgets
                    h = document.querySelector('#column-1 > div.containIt').clientHeight;
                    w = document.querySelector('#column-1 > div.containIt').clientWidth;
                    hw = h * w;
                    
                    cont = document.querySelectorAll('#column-1 > div.containIt > div');
                    
                    newHeight = Math.floor(Math.sqrt(hw/cont.length)) * .85;
                    
                    for(i = 0; i < cont.length; ++i){
                      cont[i].style.height = newHeight + 'px';
                      cont[i].style.width = newHeight + 'px';
                      cn = cont[i].childNodes;
                      if(cn.length > 0){
                          th = cn[0].clientHeight + cn[1].clientHeight;
                          console.log("canvas found");
                          mb = newheight - th;
                          cn[5].style.height = mb + 'px'; //canvas control attempt
                      }
                    }
                    
                    function resizePlease(count) { //resize plots based on selections
                      // screen may have resized**
                      h = document.querySelector('#column-1 > div.containIt').clientHeight;
                      w = document.querySelector('#column-1 > div.containIt').clientWidth;
                      hw = h * w;  // get the area
                      
                      // based on selected count** these should fit--- 
                      // RStudio!
                      newHeight = Math.floor(Math.sqrt(hw/count)) * .85; 
                      for(i = 0; i < graphy.length; ++i){
                        graphy[i].style.height = newHeight + 'px';
                        graphy[i].style.width = newHeight + 'px';
                        gcn = graphy[i].childNodes;
                        if(cn.length > 0){
                            th = gcn[0].clientHeight + gcn[1].clientHeight;
                            mb = newHeight - th;
                            gcn[5].style.height = mb + 'px'; //canvas control attempt
                            canYouPLEASElisten = graphy[i].querySelector('canvas');
                            canYouPLEASElisten.style.height = mb + 'px'; //trigger zoom extent!!
                            canYouPLEASElisten.style.height = '100%';
                        }
                      }
                    }
                    
                    
                    // Something selected triggers this function
                    function getOps(sel) {   
                      //get ref to select list and display text box
                      graphy = document.querySelectorAll('#column-1 div.visNetwork');
                      count = 0; // reset count of selected vis
                      // loop through selections
                      for(i = 0; i < sel.length; i++) {
                        opt = sel.options[i];
                        if ( opt.selected ) {
                          count++
                          graphy[i].style.display = 'block';
                          console.log(opt + "selected");
                          console.log(count + " options selected");
                        } else {
                          graphy[i].style.display = 'none';
                        }
                      }
                      resizePlease(count); 
                    }
                    
                    ```
                    
                    ---
                    title: "Just for antonoyaro8"
                    output: 
                      flexdashboard::flex_dashboard:
                        orientation: columns
                        vertical_layout: fill
                    ---
                    
                    <style>
                    select {
                      // A reset of styles, including removing the default dropdown arrow
                      appearance: none;
                      background-color: transparent;
                      border: none;
                      padding: 0 1em 0 0;
                      margin: 0;
                      width: 100%;
                      font-family: inherit;
                      font-size: inherit;
                      cursor: inherit;
                      line-height: inherit;
                    }
                    .select {
                      display: grid;
                      grid-template-areas: "select";
                      align-items: center;
                      position: relative;
                      min-width: 15ch;
                      max-width: 100ch;
                      border: 1px solid var(--select-border);
                      border-radius: 0.25em;
                      padding: 0.25em 0.5em;
                      font-size: 1.25rem;
                      cursor: pointer;
                      line-height: 1.1;
                      background-color: #fff;
                      background-image: linear-gradient(to top, #f9f9f9, #fff 33%);
                    }
                    select[multiple] {
                      padding-right: 0; 
                      /* Safari will not show options unless labels fit   */
                      height: 50rem;   // how many options show at one time
                      font-size: 1rem;
                    }
                    #column-1 > div.containIt > div.visNetwork canvas {
                      width: 100%;
                      height: 80%;
                    }
                    .containIt {
                      display: flex;
                      flex-flow: row wrap;
                      flex-grow: 1;
                      justify-content: space-around;
                      align-items: flex-start;
                      align-content: space-around;
                      overflow: hidden;
                      height: 100%;
                      width: 100%;
                      margin-top: 2vw;
                      height: 80vh;
                      widhth: 80vw;
                      overflow: hidden;
                    }
                    
                    </style>
                    
                    ```{r setup, include=FALSE}
                    
                    library(flexdashboard)
                    library(visNetwork)
                    library(htmltools)
                    library(igraph)
                    library(tidyverse)
                    library(shinyRPG) # remotes::install_github("RinteRface/shinyRPG")
                    
                    ```
                    
                    ```{r dataStuff}
                    
                    set.seed(123)
                    n=15
                    data = data.frame(tibble(d = paste(1:n)))
                    
                    relations = data.frame(tibble(
                      from = sample(data$d),
                      to = lead(from, default=from[1]),
                    ))
                    data$name = c("new york", "chicago", "los angeles", "orlando", "houston", "seattle", "washington", "baltimore", "atlanta", "las vegas", "oakland", "phoenix", "kansas", "miami", "newark" )
                    
                    graph = graph_from_data_frame(relations, directed=T, vertices = data) 
                    
                    #red circle: starting point and final point
                    V(graph)$color <- ifelse(data$d == relations$from[1], "red", "orange")
                    
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = paste0("Trip ", m_1, " : "), 
                                submain = paste0 (m_2, "KM") )) %>%
                      do.call(visNetwork, .) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to')
                    
                    # collect the correct order
                    df2 <- data %>% 
                      mutate(d = as.numeric(d),
                             nuname = factor(a$x$edges$from, 
                                             levels = unlist(data$name))) %>%
                      arrange(nuname) %>% 
                      select(d) %>% unlist(use.names = F)
                    #  [1] 11  5  2  8  7  6 10 14 15  4 12  9 13  3  1 
                    V(graph)$name = data$label = paste0(df2, "\n", data$name)
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = list(text = paste0("Trip ", m_1, " : "), 
                                            style = "font-family: Georgia; font-size: 100%; font-weight: bold; text-align:center;"),
                                submain = list(text = paste0(m_2, "KM"),
                                               style = "font-family: Georgia; font-size: 100%; text-align:center;"))) %>%
                      do.call(visNetwork, .) %>%
                      visInteraction(navigationButtons = TRUE) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to') %>% 
                      visOptions(width = "100%", height = "80%", autoResize = T)
                    
                    a[["sizingPolicy"]][["knitr"]][["figure"]] <- FALSE
                    
                    y = x = w = v = u = t = s = r = q  = p = o = n = m = l = k = j = i = h = g = f = e = d = c = b = a
                    
                    ```
                    
                    Column {data-width=200}
                    -----------------------------------------------------------------------
                    
                    ### Select Options
                    
                    You can select one or more options from the list. 
                    
                    ```{r selectiver}
                    tagSel <- rpgSelect(
                      "selectBox",                      # don't change this (connected)
                      "Selections:",                    # visible on HTML; change away or set to ""
                      c(setNames(1:25, letters[1:25])), # left is values, right is labels
                      multiple = T                      # all multiple selections
                    )        # other attributes controlled by css at the top
                    
                    tagSel$attribs$class <- 'select select--multiple'       # connect styles
                    tagSel$children[[2]]$attribs$class <- "mutli-select"    # connect styles
                    tagSel$children[[2]]$attribs$onchange <- "getOps(this)" # connect the JS function
                    
                    tagSel
                    
                    ```
                    
                    Column
                    -----------------------------------------------------------------------
                    
                    <div class="containIt">
                    
                    ```{r notNow, include=T}
                    
                    a
                    b
                    c
                    d
                    e
                    f
                    g
                    h
                    i
                    j
                    k
                    l
                    m
                    n
                    o
                    p
                    q
                    r
                    s
                    t
                    u
                    v
                    w
                    x
                    y
                    
                    ```
                    
                    </div>
                    
                    ```{r pickMe,results='asis',engine='js'}
                    
                    //remove inherent knitr element-- after using mutlti-select starts harboring space
                    byeknit = document.querySelector('#column-1 > div.containIt > div.knitr-options');
                    byeknit.remove(1);
                    
                    // Reset Sizing of Widgets
                    h = document.querySelector('#column-1 > div.containIt').clientHeight;
                    w = document.querySelector('#column-1 > div.containIt').clientWidth;
                    hw = h * w;
                    
                    cont = document.querySelectorAll('#column-1 > div.containIt > div');
                    
                    newHeight = Math.floor(Math.sqrt(hw/cont.length)) * .85;
                    
                    for(i = 0; i < cont.length; ++i){
                      cont[i].style.height = newHeight + 'px';
                      cont[i].style.width = newHeight + 'px';
                      cn = cont[i].childNodes;
                      if(cn.length > 0){
                          th = cn[0].clientHeight + cn[1].clientHeight;
                          console.log("canvas found");
                          mb = newheight - th;
                          cn[5].style.height = mb + 'px'; //canvas control attempt
                      }
                    }
                    
                    function resizePlease(count) { //resize plots based on selections
                      // screen may have resized**
                      h = document.querySelector('#column-1 > div.containIt').clientHeight;
                      w = document.querySelector('#column-1 > div.containIt').clientWidth;
                      hw = h * w;  // get the area
                      
                      // based on selected count** these should fit--- 
                      // RStudio!
                      newHeight = Math.floor(Math.sqrt(hw/count)) * .85; 
                      for(i = 0; i < graphy.length; ++i){
                        graphy[i].style.height = newHeight + 'px';
                        graphy[i].style.width = newHeight + 'px';
                        gcn = graphy[i].childNodes;
                        if(cn.length > 0){
                            th = gcn[0].clientHeight + gcn[1].clientHeight;
                            mb = newHeight - th;
                            gcn[5].style.height = mb + 'px'; //canvas control attempt
                            canYouPLEASElisten = graphy[i].querySelector('canvas');
                            canYouPLEASElisten.style.height = mb + 'px'; //trigger zoom extent!!
                            canYouPLEASElisten.style.height = '100%';
                        }
                      }
                    }
                    
                    
                    // Something selected triggers this function
                    function getOps(sel) {   
                      //get ref to select list and display text box
                      graphy = document.querySelectorAll('#column-1 div.visNetwork');
                      count = 0; // reset count of selected vis
                      // loop through selections
                      for(i = 0; i < sel.length; i++) {
                        opt = sel.options[i];
                        if ( opt.selected ) {
                          count++
                          graphy[i].style.display = 'block';
                          console.log(opt + "selected");
                          console.log(count + " options selected");
                        } else {
                          graphy[i].style.display = 'none';
                        }
                      }
                      resizePlease(count); 
                    }
                    
                    ```
                    
                    ---
                    title: "Just for antonoyaro8"
                    output: 
                      flexdashboard::flex_dashboard:
                        orientation: columns
                        vertical_layout: fill
                    ---
                    
                    <style>
                    select {
                      // A reset of styles, including removing the default dropdown arrow
                      appearance: none;
                      background-color: transparent;
                      border: none;
                      padding: 0 1em 0 0;
                      margin: 0;
                      width: 100%;
                      font-family: inherit;
                      font-size: inherit;
                      cursor: inherit;
                      line-height: inherit;
                    }
                    .select {
                      display: grid;
                      grid-template-areas: "select";
                      align-items: center;
                      position: relative;
                      min-width: 15ch;
                      max-width: 100ch;
                      border: 1px solid var(--select-border);
                      border-radius: 0.25em;
                      padding: 0.25em 0.5em;
                      font-size: 1.25rem;
                      cursor: pointer;
                      line-height: 1.1;
                      background-color: #fff;
                      background-image: linear-gradient(to top, #f9f9f9, #fff 33%);
                    }
                    select[multiple] {
                      padding-right: 0; 
                      /* Safari will not show options unless labels fit   */
                      height: 50rem;   // how many options show at one time
                      font-size: 1rem;
                    }
                    #column-1 > div.containIt > div.visNetwork canvas {
                      width: 100%;
                      height: 80%;
                    }
                    .containIt {
                      display: flex;
                      flex-flow: row wrap;
                      flex-grow: 1;
                      justify-content: space-around;
                      align-items: flex-start;
                      align-content: space-around;
                      overflow: hidden;
                      height: 100%;
                      width: 100%;
                      margin-top: 2vw;
                      height: 80vh;
                      widhth: 80vw;
                      overflow: hidden;
                    }
                    
                    </style>
                    
                    ```{r setup, include=FALSE}
                    
                    library(flexdashboard)
                    library(visNetwork)
                    library(htmltools)
                    library(igraph)
                    library(tidyverse)
                    library(shinyRPG) # remotes::install_github("RinteRface/shinyRPG")
                    
                    ```
                    
                    ```{r dataStuff}
                    
                    set.seed(123)
                    n=15
                    data = data.frame(tibble(d = paste(1:n)))
                    
                    relations = data.frame(tibble(
                      from = sample(data$d),
                      to = lead(from, default=from[1]),
                    ))
                    data$name = c("new york", "chicago", "los angeles", "orlando", "houston", "seattle", "washington", "baltimore", "atlanta", "las vegas", "oakland", "phoenix", "kansas", "miami", "newark" )
                    
                    graph = graph_from_data_frame(relations, directed=T, vertices = data) 
                    
                    #red circle: starting point and final point
                    V(graph)$color <- ifelse(data$d == relations$from[1], "red", "orange")
                    
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = paste0("Trip ", m_1, " : "), 
                                submain = paste0 (m_2, "KM") )) %>%
                      do.call(visNetwork, .) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to')
                    
                    # collect the correct order
                    df2 <- data %>% 
                      mutate(d = as.numeric(d),
                             nuname = factor(a$x$edges$from, 
                                             levels = unlist(data$name))) %>%
                      arrange(nuname) %>% 
                      select(d) %>% unlist(use.names = F)
                    #  [1] 11  5  2  8  7  6 10 14 15  4 12  9 13  3  1 
                    V(graph)$name = data$label = paste0(df2, "\n", data$name)
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = list(text = paste0("Trip ", m_1, " : "), 
                                            style = "font-family: Georgia; font-size: 100%; font-weight: bold; text-align:center;"),
                                submain = list(text = paste0(m_2, "KM"),
                                               style = "font-family: Georgia; font-size: 100%; text-align:center;"))) %>%
                      do.call(visNetwork, .) %>%
                      visInteraction(navigationButtons = TRUE) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to') %>% 
                      visOptions(width = "100%", height = "80%", autoResize = T)
                    
                    a[["sizingPolicy"]][["knitr"]][["figure"]] <- FALSE
                    
                    y = x = w = v = u = t = s = r = q  = p = o = n = m = l = k = j = i = h = g = f = e = d = c = b = a
                    
                    ```
                    
                    Column {data-width=200}
                    -----------------------------------------------------------------------
                    
                    ### Select Options
                    
                    You can select one or more options from the list. 
                    
                    ```{r selectiver}
                    tagSel <- rpgSelect(
                      "selectBox",                      # don't change this (connected)
                      "Selections:",                    # visible on HTML; change away or set to ""
                      c(setNames(1:25, letters[1:25])), # left is values, right is labels
                      multiple = T                      # all multiple selections
                    )        # other attributes controlled by css at the top
                    
                    tagSel$attribs$class <- 'select select--multiple'       # connect styles
                    tagSel$children[[2]]$attribs$class <- "mutli-select"    # connect styles
                    tagSel$children[[2]]$attribs$onchange <- "getOps(this)" # connect the JS function
                    
                    tagSel
                    
                    ```
                    
                    Column
                    -----------------------------------------------------------------------
                    
                    <div class="containIt">
                    
                    ```{r notNow, include=T}
                    
                    a
                    b
                    c
                    d
                    e
                    f
                    g
                    h
                    i
                    j
                    k
                    l
                    m
                    n
                    o
                    p
                    q
                    r
                    s
                    t
                    u
                    v
                    w
                    x
                    y
                    
                    ```
                    
                    </div>
                    
                    ```{r pickMe,results='asis',engine='js'}
                    
                    //remove inherent knitr element-- after using mutlti-select starts harboring space
                    byeknit = document.querySelector('#column-1 > div.containIt > div.knitr-options');
                    byeknit.remove(1);
                    
                    // Reset Sizing of Widgets
                    h = document.querySelector('#column-1 > div.containIt').clientHeight;
                    w = document.querySelector('#column-1 > div.containIt').clientWidth;
                    hw = h * w;
                    
                    cont = document.querySelectorAll('#column-1 > div.containIt > div');
                    
                    newHeight = Math.floor(Math.sqrt(hw/cont.length)) * .85;
                    
                    for(i = 0; i < cont.length; ++i){
                      cont[i].style.height = newHeight + 'px';
                      cont[i].style.width = newHeight + 'px';
                      cn = cont[i].childNodes;
                      if(cn.length > 0){
                          th = cn[0].clientHeight + cn[1].clientHeight;
                          console.log("canvas found");
                          mb = newheight - th;
                          cn[5].style.height = mb + 'px'; //canvas control attempt
                      }
                    }
                    
                    function resizePlease(count) { //resize plots based on selections
                      // screen may have resized**
                      h = document.querySelector('#column-1 > div.containIt').clientHeight;
                      w = document.querySelector('#column-1 > div.containIt').clientWidth;
                      hw = h * w;  // get the area
                      
                      // based on selected count** these should fit--- 
                      // RStudio!
                      newHeight = Math.floor(Math.sqrt(hw/count)) * .85; 
                      for(i = 0; i < graphy.length; ++i){
                        graphy[i].style.height = newHeight + 'px';
                        graphy[i].style.width = newHeight + 'px';
                        gcn = graphy[i].childNodes;
                        if(cn.length > 0){
                            th = gcn[0].clientHeight + gcn[1].clientHeight;
                            mb = newHeight - th;
                            gcn[5].style.height = mb + 'px'; //canvas control attempt
                            canYouPLEASElisten = graphy[i].querySelector('canvas');
                            canYouPLEASElisten.style.height = mb + 'px'; //trigger zoom extent!!
                            canYouPLEASElisten.style.height = '100%';
                        }
                      }
                    }
                    
                    
                    // Something selected triggers this function
                    function getOps(sel) {   
                      //get ref to select list and display text box
                      graphy = document.querySelectorAll('#column-1 div.visNetwork');
                      count = 0; // reset count of selected vis
                      // loop through selections
                      for(i = 0; i < sel.length; i++) {
                        opt = sel.options[i];
                        if ( opt.selected ) {
                          count++
                          graphy[i].style.display = 'block';
                          console.log(opt + "selected");
                          console.log(count + " options selected");
                        } else {
                          graphy[i].style.display = 'none';
                        }
                      }
                      resizePlease(count); 
                    }
                    
                    ```
                    
                    ---
                    title: "Just for antonoyaro8"
                    output: 
                      flexdashboard::flex_dashboard:
                        orientation: columns
                        vertical_layout: fill
                    ---
                    
                    <style>
                    select {
                      // A reset of styles, including removing the default dropdown arrow
                      appearance: none;
                      background-color: transparent;
                      border: none;
                      padding: 0 1em 0 0;
                      margin: 0;
                      width: 100%;
                      font-family: inherit;
                      font-size: inherit;
                      cursor: inherit;
                      line-height: inherit;
                    }
                    .select {
                      display: grid;
                      grid-template-areas: "select";
                      align-items: center;
                      position: relative;
                      min-width: 15ch;
                      max-width: 100ch;
                      border: 1px solid var(--select-border);
                      border-radius: 0.25em;
                      padding: 0.25em 0.5em;
                      font-size: 1.25rem;
                      cursor: pointer;
                      line-height: 1.1;
                      background-color: #fff;
                      background-image: linear-gradient(to top, #f9f9f9, #fff 33%);
                    }
                    select[multiple] {
                      padding-right: 0; 
                      /* Safari will not show options unless labels fit   */
                      height: 50rem;   // how many options show at one time
                      font-size: 1rem;
                    }
                    #column-1 > div.containIt > div.visNetwork canvas {
                      width: 100%;
                      height: 80%;
                    }
                    .containIt {
                      display: flex;
                      flex-flow: row wrap;
                      flex-grow: 1;
                      justify-content: space-around;
                      align-items: flex-start;
                      align-content: space-around;
                      overflow: hidden;
                      height: 100%;
                      width: 100%;
                      margin-top: 2vw;
                      height: 80vh;
                      widhth: 80vw;
                      overflow: hidden;
                    }
                    
                    </style>
                    
                    ```{r setup, include=FALSE}
                    
                    library(flexdashboard)
                    library(visNetwork)
                    library(htmltools)
                    library(igraph)
                    library(tidyverse)
                    library(shinyRPG) # remotes::install_github("RinteRface/shinyRPG")
                    
                    ```
                    
                    ```{r dataStuff}
                    
                    set.seed(123)
                    n=15
                    data = data.frame(tibble(d = paste(1:n)))
                    
                    relations = data.frame(tibble(
                      from = sample(data$d),
                      to = lead(from, default=from[1]),
                    ))
                    data$name = c("new york", "chicago", "los angeles", "orlando", "houston", "seattle", "washington", "baltimore", "atlanta", "las vegas", "oakland", "phoenix", "kansas", "miami", "newark" )
                    
                    graph = graph_from_data_frame(relations, directed=T, vertices = data) 
                    
                    #red circle: starting point and final point
                    V(graph)$color <- ifelse(data$d == relations$from[1], "red", "orange")
                    
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = paste0("Trip ", m_1, " : "), 
                                submain = paste0 (m_2, "KM") )) %>%
                      do.call(visNetwork, .) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to')
                    
                    # collect the correct order
                    df2 <- data %>% 
                      mutate(d = as.numeric(d),
                             nuname = factor(a$x$edges$from, 
                                             levels = unlist(data$name))) %>%
                      arrange(nuname) %>% 
                      select(d) %>% unlist(use.names = F)
                    #  [1] 11  5  2  8  7  6 10 14 15  4 12  9 13  3  1 
                    V(graph)$name = data$label = paste0(df2, "\n", data$name)
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = list(text = paste0("Trip ", m_1, " : "), 
                                            style = "font-family: Georgia; font-size: 100%; font-weight: bold; text-align:center;"),
                                submain = list(text = paste0(m_2, "KM"),
                                               style = "font-family: Georgia; font-size: 100%; text-align:center;"))) %>%
                      do.call(visNetwork, .) %>%
                      visInteraction(navigationButtons = TRUE) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to') %>% 
                      visOptions(width = "100%", height = "80%", autoResize = T)
                    
                    a[["sizingPolicy"]][["knitr"]][["figure"]] <- FALSE
                    
                    y = x = w = v = u = t = s = r = q  = p = o = n = m = l = k = j = i = h = g = f = e = d = c = b = a
                    
                    ```
                    
                    Column {data-width=200}
                    -----------------------------------------------------------------------
                    
                    ### Select Options
                    
                    You can select one or more options from the list. 
                    
                    ```{r selectiver}
                    tagSel <- rpgSelect(
                      "selectBox",                      # don't change this (connected)
                      "Selections:",                    # visible on HTML; change away or set to ""
                      c(setNames(1:25, letters[1:25])), # left is values, right is labels
                      multiple = T                      # all multiple selections
                    )        # other attributes controlled by css at the top
                    
                    tagSel$attribs$class <- 'select select--multiple'       # connect styles
                    tagSel$children[[2]]$attribs$class <- "mutli-select"    # connect styles
                    tagSel$children[[2]]$attribs$onchange <- "getOps(this)" # connect the JS function
                    
                    tagSel
                    
                    ```
                    
                    Column
                    -----------------------------------------------------------------------
                    
                    <div class="containIt">
                    
                    ```{r notNow, include=T}
                    
                    a
                    b
                    c
                    d
                    e
                    f
                    g
                    h
                    i
                    j
                    k
                    l
                    m
                    n
                    o
                    p
                    q
                    r
                    s
                    t
                    u
                    v
                    w
                    x
                    y
                    
                    ```
                    
                    </div>
                    
                    ```{r pickMe,results='asis',engine='js'}
                    
                    //remove inherent knitr element-- after using mutlti-select starts harboring space
                    byeknit = document.querySelector('#column-1 > div.containIt > div.knitr-options');
                    byeknit.remove(1);
                    
                    // Reset Sizing of Widgets
                    h = document.querySelector('#column-1 > div.containIt').clientHeight;
                    w = document.querySelector('#column-1 > div.containIt').clientWidth;
                    hw = h * w;
                    
                    cont = document.querySelectorAll('#column-1 > div.containIt > div');
                    
                    newHeight = Math.floor(Math.sqrt(hw/cont.length)) * .85;
                    
                    for(i = 0; i < cont.length; ++i){
                      cont[i].style.height = newHeight + 'px';
                      cont[i].style.width = newHeight + 'px';
                      cn = cont[i].childNodes;
                      if(cn.length > 0){
                          th = cn[0].clientHeight + cn[1].clientHeight;
                          console.log("canvas found");
                          mb = newheight - th;
                          cn[5].style.height = mb + 'px'; //canvas control attempt
                      }
                    }
                    
                    function resizePlease(count) { //resize plots based on selections
                      // screen may have resized**
                      h = document.querySelector('#column-1 > div.containIt').clientHeight;
                      w = document.querySelector('#column-1 > div.containIt').clientWidth;
                      hw = h * w;  // get the area
                      
                      // based on selected count** these should fit--- 
                      // RStudio!
                      newHeight = Math.floor(Math.sqrt(hw/count)) * .85; 
                      for(i = 0; i < graphy.length; ++i){
                        graphy[i].style.height = newHeight + 'px';
                        graphy[i].style.width = newHeight + 'px';
                        gcn = graphy[i].childNodes;
                        if(cn.length > 0){
                            th = gcn[0].clientHeight + gcn[1].clientHeight;
                            mb = newHeight - th;
                            gcn[5].style.height = mb + 'px'; //canvas control attempt
                            canYouPLEASElisten = graphy[i].querySelector('canvas');
                            canYouPLEASElisten.style.height = mb + 'px'; //trigger zoom extent!!
                            canYouPLEASElisten.style.height = '100%';
                        }
                      }
                    }
                    
                    
                    // Something selected triggers this function
                    function getOps(sel) {   
                      //get ref to select list and display text box
                      graphy = document.querySelectorAll('#column-1 div.visNetwork');
                      count = 0; // reset count of selected vis
                      // loop through selections
                      for(i = 0; i < sel.length; i++) {
                        opt = sel.options[i];
                        if ( opt.selected ) {
                          count++
                          graphy[i].style.display = 'block';
                          console.log(opt + "selected");
                          console.log(count + " options selected");
                        } else {
                          graphy[i].style.display = 'none';
                        }
                      }
                      resizePlease(count); 
                    }
                    
                    ```
                    
                    ---
                    title: "Just for antonoyaro8"
                    output: 
                      flexdashboard::flex_dashboard:
                        orientation: columns
                        vertical_layout: fill
                    ---
                    
                    <style>
                    select {
                      // A reset of styles, including removing the default dropdown arrow
                      appearance: none;
                      background-color: transparent;
                      border: none;
                      padding: 0 1em 0 0;
                      margin: 0;
                      width: 100%;
                      font-family: inherit;
                      font-size: inherit;
                      cursor: inherit;
                      line-height: inherit;
                    }
                    .select {
                      display: grid;
                      grid-template-areas: "select";
                      align-items: center;
                      position: relative;
                      min-width: 15ch;
                      max-width: 100ch;
                      border: 1px solid var(--select-border);
                      border-radius: 0.25em;
                      padding: 0.25em 0.5em;
                      font-size: 1.25rem;
                      cursor: pointer;
                      line-height: 1.1;
                      background-color: #fff;
                      background-image: linear-gradient(to top, #f9f9f9, #fff 33%);
                    }
                    select[multiple] {
                      padding-right: 0; 
                      /* Safari will not show options unless labels fit   */
                      height: 50rem;   // how many options show at one time
                      font-size: 1rem;
                    }
                    #column-1 > div.containIt > div.visNetwork canvas {
                      width: 100%;
                      height: 80%;
                    }
                    .containIt {
                      display: flex;
                      flex-flow: row wrap;
                      flex-grow: 1;
                      justify-content: space-around;
                      align-items: flex-start;
                      align-content: space-around;
                      overflow: hidden;
                      height: 100%;
                      width: 100%;
                      margin-top: 2vw;
                      height: 80vh;
                      widhth: 80vw;
                      overflow: hidden;
                    }
                    
                    </style>
                    
                    ```{r setup, include=FALSE}
                    
                    library(flexdashboard)
                    library(visNetwork)
                    library(htmltools)
                    library(igraph)
                    library(tidyverse)
                    library(shinyRPG) # remotes::install_github("RinteRface/shinyRPG")
                    
                    ```
                    
                    ```{r dataStuff}
                    
                    set.seed(123)
                    n=15
                    data = data.frame(tibble(d = paste(1:n)))
                    
                    relations = data.frame(tibble(
                      from = sample(data$d),
                      to = lead(from, default=from[1]),
                    ))
                    data$name = c("new york", "chicago", "los angeles", "orlando", "houston", "seattle", "washington", "baltimore", "atlanta", "las vegas", "oakland", "phoenix", "kansas", "miami", "newark" )
                    
                    graph = graph_from_data_frame(relations, directed=T, vertices = data) 
                    
                    #red circle: starting point and final point
                    V(graph)$color <- ifelse(data$d == relations$from[1], "red", "orange")
                    
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = paste0("Trip ", m_1, " : "), 
                                submain = paste0 (m_2, "KM") )) %>%
                      do.call(visNetwork, .) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to')
                    
                    # collect the correct order
                    df2 <- data %>% 
                      mutate(d = as.numeric(d),
                             nuname = factor(a$x$edges$from, 
                                             levels = unlist(data$name))) %>%
                      arrange(nuname) %>% 
                      select(d) %>% unlist(use.names = F)
                    #  [1] 11  5  2  8  7  6 10 14 15  4 12  9 13  3  1 
                    V(graph)$name = data$label = paste0(df2, "\n", data$name)
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = list(text = paste0("Trip ", m_1, " : "), 
                                            style = "font-family: Georgia; font-size: 100%; font-weight: bold; text-align:center;"),
                                submain = list(text = paste0(m_2, "KM"),
                                               style = "font-family: Georgia; font-size: 100%; text-align:center;"))) %>%
                      do.call(visNetwork, .) %>%
                      visInteraction(navigationButtons = TRUE) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to') %>% 
                      visOptions(width = "100%", height = "80%", autoResize = T)
                    
                    a[["sizingPolicy"]][["knitr"]][["figure"]] <- FALSE
                    
                    y = x = w = v = u = t = s = r = q  = p = o = n = m = l = k = j = i = h = g = f = e = d = c = b = a
                    
                    ```
                    
                    Column {data-width=200}
                    -----------------------------------------------------------------------
                    
                    ### Select Options
                    
                    You can select one or more options from the list. 
                    
                    ```{r selectiver}
                    tagSel <- rpgSelect(
                      "selectBox",                      # don't change this (connected)
                      "Selections:",                    # visible on HTML; change away or set to ""
                      c(setNames(1:25, letters[1:25])), # left is values, right is labels
                      multiple = T                      # all multiple selections
                    )        # other attributes controlled by css at the top
                    
                    tagSel$attribs$class <- 'select select--multiple'       # connect styles
                    tagSel$children[[2]]$attribs$class <- "mutli-select"    # connect styles
                    tagSel$children[[2]]$attribs$onchange <- "getOps(this)" # connect the JS function
                    
                    tagSel
                    
                    ```
                    
                    Column
                    -----------------------------------------------------------------------
                    
                    <div class="containIt">
                    
                    ```{r notNow, include=T}
                    
                    a
                    b
                    c
                    d
                    e
                    f
                    g
                    h
                    i
                    j
                    k
                    l
                    m
                    n
                    o
                    p
                    q
                    r
                    s
                    t
                    u
                    v
                    w
                    x
                    y
                    
                    ```
                    
                    </div>
                    
                    ```{r pickMe,results='asis',engine='js'}
                    
                    //remove inherent knitr element-- after using mutlti-select starts harboring space
                    byeknit = document.querySelector('#column-1 > div.containIt > div.knitr-options');
                    byeknit.remove(1);
                    
                    // Reset Sizing of Widgets
                    h = document.querySelector('#column-1 > div.containIt').clientHeight;
                    w = document.querySelector('#column-1 > div.containIt').clientWidth;
                    hw = h * w;
                    
                    cont = document.querySelectorAll('#column-1 > div.containIt > div');
                    
                    newHeight = Math.floor(Math.sqrt(hw/cont.length)) * .85;
                    
                    for(i = 0; i < cont.length; ++i){
                      cont[i].style.height = newHeight + 'px';
                      cont[i].style.width = newHeight + 'px';
                      cn = cont[i].childNodes;
                      if(cn.length > 0){
                          th = cn[0].clientHeight + cn[1].clientHeight;
                          console.log("canvas found");
                          mb = newheight - th;
                          cn[5].style.height = mb + 'px'; //canvas control attempt
                      }
                    }
                    
                    function resizePlease(count) { //resize plots based on selections
                      // screen may have resized**
                      h = document.querySelector('#column-1 > div.containIt').clientHeight;
                      w = document.querySelector('#column-1 > div.containIt').clientWidth;
                      hw = h * w;  // get the area
                      
                      // based on selected count** these should fit--- 
                      // RStudio!
                      newHeight = Math.floor(Math.sqrt(hw/count)) * .85; 
                      for(i = 0; i < graphy.length; ++i){
                        graphy[i].style.height = newHeight + 'px';
                        graphy[i].style.width = newHeight + 'px';
                        gcn = graphy[i].childNodes;
                        if(cn.length > 0){
                            th = gcn[0].clientHeight + gcn[1].clientHeight;
                            mb = newHeight - th;
                            gcn[5].style.height = mb + 'px'; //canvas control attempt
                            canYouPLEASElisten = graphy[i].querySelector('canvas');
                            canYouPLEASElisten.style.height = mb + 'px'; //trigger zoom extent!!
                            canYouPLEASElisten.style.height = '100%';
                        }
                      }
                    }
                    
                    
                    // Something selected triggers this function
                    function getOps(sel) {   
                      //get ref to select list and display text box
                      graphy = document.querySelectorAll('#column-1 div.visNetwork');
                      count = 0; // reset count of selected vis
                      // loop through selections
                      for(i = 0; i < sel.length; i++) {
                        opt = sel.options[i];
                        if ( opt.selected ) {
                          count++
                          graphy[i].style.display = 'block';
                          console.log(opt + "selected");
                          console.log(count + " options selected");
                        } else {
                          graphy[i].style.display = 'none';
                        }
                      }
                      resizePlease(count); 
                    }
                    
                    ```
                    
                    ---
                    title: "Just for antonoyaro8"
                    output: 
                      flexdashboard::flex_dashboard:
                        orientation: columns
                        vertical_layout: fill
                    ---
                    
                    <style>
                    select {
                      // A reset of styles, including removing the default dropdown arrow
                      appearance: none;
                      background-color: transparent;
                      border: none;
                      padding: 0 1em 0 0;
                      margin: 0;
                      width: 100%;
                      font-family: inherit;
                      font-size: inherit;
                      cursor: inherit;
                      line-height: inherit;
                    }
                    .select {
                      display: grid;
                      grid-template-areas: "select";
                      align-items: center;
                      position: relative;
                      min-width: 15ch;
                      max-width: 100ch;
                      border: 1px solid var(--select-border);
                      border-radius: 0.25em;
                      padding: 0.25em 0.5em;
                      font-size: 1.25rem;
                      cursor: pointer;
                      line-height: 1.1;
                      background-color: #fff;
                      background-image: linear-gradient(to top, #f9f9f9, #fff 33%);
                    }
                    select[multiple] {
                      padding-right: 0; 
                      /* Safari will not show options unless labels fit   */
                      height: 50rem;   // how many options show at one time
                      font-size: 1rem;
                    }
                    #column-1 > div.containIt > div.visNetwork canvas {
                      width: 100%;
                      height: 80%;
                    }
                    .containIt {
                      display: flex;
                      flex-flow: row wrap;
                      flex-grow: 1;
                      justify-content: space-around;
                      align-items: flex-start;
                      align-content: space-around;
                      overflow: hidden;
                      height: 100%;
                      width: 100%;
                      margin-top: 2vw;
                      height: 80vh;
                      widhth: 80vw;
                      overflow: hidden;
                    }
                    
                    </style>
                    
                    ```{r setup, include=FALSE}
                    
                    library(flexdashboard)
                    library(visNetwork)
                    library(htmltools)
                    library(igraph)
                    library(tidyverse)
                    library(shinyRPG) # remotes::install_github("RinteRface/shinyRPG")
                    
                    ```
                    
                    ```{r dataStuff}
                    
                    set.seed(123)
                    n=15
                    data = data.frame(tibble(d = paste(1:n)))
                    
                    relations = data.frame(tibble(
                      from = sample(data$d),
                      to = lead(from, default=from[1]),
                    ))
                    data$name = c("new york", "chicago", "los angeles", "orlando", "houston", "seattle", "washington", "baltimore", "atlanta", "las vegas", "oakland", "phoenix", "kansas", "miami", "newark" )
                    
                    graph = graph_from_data_frame(relations, directed=T, vertices = data) 
                    
                    #red circle: starting point and final point
                    V(graph)$color <- ifelse(data$d == relations$from[1], "red", "orange")
                    
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = paste0("Trip ", m_1, " : "), 
                                submain = paste0 (m_2, "KM") )) %>%
                      do.call(visNetwork, .) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to')
                    
                    # collect the correct order
                    df2 <- data %>% 
                      mutate(d = as.numeric(d),
                             nuname = factor(a$x$edges$from, 
                                             levels = unlist(data$name))) %>%
                      arrange(nuname) %>% 
                      select(d) %>% unlist(use.names = F)
                    #  [1] 11  5  2  8  7  6 10 14 15  4 12  9 13  3  1 
                    V(graph)$name = data$label = paste0(df2, "\n", data$name)
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = list(text = paste0("Trip ", m_1, " : "), 
                                            style = "font-family: Georgia; font-size: 100%; font-weight: bold; text-align:center;"),
                                submain = list(text = paste0(m_2, "KM"),
                                               style = "font-family: Georgia; font-size: 100%; text-align:center;"))) %>%
                      do.call(visNetwork, .) %>%
                      visInteraction(navigationButtons = TRUE) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to') %>% 
                      visOptions(width = "100%", height = "80%", autoResize = T)
                    
                    a[["sizingPolicy"]][["knitr"]][["figure"]] <- FALSE
                    
                    y = x = w = v = u = t = s = r = q  = p = o = n = m = l = k = j = i = h = g = f = e = d = c = b = a
                    
                    ```
                    
                    Column {data-width=200}
                    -----------------------------------------------------------------------
                    
                    ### Select Options
                    
                    You can select one or more options from the list. 
                    
                    ```{r selectiver}
                    tagSel <- rpgSelect(
                      "selectBox",                      # don't change this (connected)
                      "Selections:",                    # visible on HTML; change away or set to ""
                      c(setNames(1:25, letters[1:25])), # left is values, right is labels
                      multiple = T                      # all multiple selections
                    )        # other attributes controlled by css at the top
                    
                    tagSel$attribs$class <- 'select select--multiple'       # connect styles
                    tagSel$children[[2]]$attribs$class <- "mutli-select"    # connect styles
                    tagSel$children[[2]]$attribs$onchange <- "getOps(this)" # connect the JS function
                    
                    tagSel
                    
                    ```
                    
                    Column
                    -----------------------------------------------------------------------
                    
                    <div class="containIt">
                    
                    ```{r notNow, include=T}
                    
                    a
                    b
                    c
                    d
                    e
                    f
                    g
                    h
                    i
                    j
                    k
                    l
                    m
                    n
                    o
                    p
                    q
                    r
                    s
                    t
                    u
                    v
                    w
                    x
                    y
                    
                    ```
                    
                    </div>
                    
                    ```{r pickMe,results='asis',engine='js'}
                    
                    //remove inherent knitr element-- after using mutlti-select starts harboring space
                    byeknit = document.querySelector('#column-1 > div.containIt > div.knitr-options');
                    byeknit.remove(1);
                    
                    // Reset Sizing of Widgets
                    h = document.querySelector('#column-1 > div.containIt').clientHeight;
                    w = document.querySelector('#column-1 > div.containIt').clientWidth;
                    hw = h * w;
                    
                    cont = document.querySelectorAll('#column-1 > div.containIt > div');
                    
                    newHeight = Math.floor(Math.sqrt(hw/cont.length)) * .85;
                    
                    for(i = 0; i < cont.length; ++i){
                      cont[i].style.height = newHeight + 'px';
                      cont[i].style.width = newHeight + 'px';
                      cn = cont[i].childNodes;
                      if(cn.length > 0){
                          th = cn[0].clientHeight + cn[1].clientHeight;
                          console.log("canvas found");
                          mb = newheight - th;
                          cn[5].style.height = mb + 'px'; //canvas control attempt
                      }
                    }
                    
                    function resizePlease(count) { //resize plots based on selections
                      // screen may have resized**
                      h = document.querySelector('#column-1 > div.containIt').clientHeight;
                      w = document.querySelector('#column-1 > div.containIt').clientWidth;
                      hw = h * w;  // get the area
                      
                      // based on selected count** these should fit--- 
                      // RStudio!
                      newHeight = Math.floor(Math.sqrt(hw/count)) * .85; 
                      for(i = 0; i < graphy.length; ++i){
                        graphy[i].style.height = newHeight + 'px';
                        graphy[i].style.width = newHeight + 'px';
                        gcn = graphy[i].childNodes;
                        if(cn.length > 0){
                            th = gcn[0].clientHeight + gcn[1].clientHeight;
                            mb = newHeight - th;
                            gcn[5].style.height = mb + 'px'; //canvas control attempt
                            canYouPLEASElisten = graphy[i].querySelector('canvas');
                            canYouPLEASElisten.style.height = mb + 'px'; //trigger zoom extent!!
                            canYouPLEASElisten.style.height = '100%';
                        }
                      }
                    }
                    
                    
                    // Something selected triggers this function
                    function getOps(sel) {   
                      //get ref to select list and display text box
                      graphy = document.querySelectorAll('#column-1 div.visNetwork');
                      count = 0; // reset count of selected vis
                      // loop through selections
                      for(i = 0; i < sel.length; i++) {
                        opt = sel.options[i];
                        if ( opt.selected ) {
                          count++
                          graphy[i].style.display = 'block';
                          console.log(opt + "selected");
                          console.log(count + " options selected");
                        } else {
                          graphy[i].style.display = 'none';
                        }
                      }
                      resizePlease(count); 
                    }
                    
                    ```
                    
                    ---
                    title: "Just for antonoyaro8"
                    output: 
                      flexdashboard::flex_dashboard:
                        orientation: columns
                        vertical_layout: fill
                    ---
                    
                    <style>
                    select {
                      // A reset of styles, including removing the default dropdown arrow
                      appearance: none;
                      background-color: transparent;
                      border: none;
                      padding: 0 1em 0 0;
                      margin: 0;
                      width: 100%;
                      font-family: inherit;
                      font-size: inherit;
                      cursor: inherit;
                      line-height: inherit;
                    }
                    .select {
                      display: grid;
                      grid-template-areas: "select";
                      align-items: center;
                      position: relative;
                      min-width: 15ch;
                      max-width: 100ch;
                      border: 1px solid var(--select-border);
                      border-radius: 0.25em;
                      padding: 0.25em 0.5em;
                      font-size: 1.25rem;
                      cursor: pointer;
                      line-height: 1.1;
                      background-color: #fff;
                      background-image: linear-gradient(to top, #f9f9f9, #fff 33%);
                    }
                    select[multiple] {
                      padding-right: 0; 
                      /* Safari will not show options unless labels fit   */
                      height: 50rem;   // how many options show at one time
                      font-size: 1rem;
                    }
                    #column-1 > div.containIt > div.visNetwork canvas {
                      width: 100%;
                      height: 80%;
                    }
                    .containIt {
                      display: flex;
                      flex-flow: row wrap;
                      flex-grow: 1;
                      justify-content: space-around;
                      align-items: flex-start;
                      align-content: space-around;
                      overflow: hidden;
                      height: 100%;
                      width: 100%;
                      margin-top: 2vw;
                      height: 80vh;
                      widhth: 80vw;
                      overflow: hidden;
                    }
                    
                    </style>
                    
                    ```{r setup, include=FALSE}
                    
                    library(flexdashboard)
                    library(visNetwork)
                    library(htmltools)
                    library(igraph)
                    library(tidyverse)
                    library(shinyRPG) # remotes::install_github("RinteRface/shinyRPG")
                    
                    ```
                    
                    ```{r dataStuff}
                    
                    set.seed(123)
                    n=15
                    data = data.frame(tibble(d = paste(1:n)))
                    
                    relations = data.frame(tibble(
                      from = sample(data$d),
                      to = lead(from, default=from[1]),
                    ))
                    data$name = c("new york", "chicago", "los angeles", "orlando", "houston", "seattle", "washington", "baltimore", "atlanta", "las vegas", "oakland", "phoenix", "kansas", "miami", "newark" )
                    
                    graph = graph_from_data_frame(relations, directed=T, vertices = data) 
                    
                    #red circle: starting point and final point
                    V(graph)$color <- ifelse(data$d == relations$from[1], "red", "orange")
                    
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = paste0("Trip ", m_1, " : "), 
                                submain = paste0 (m_2, "KM") )) %>%
                      do.call(visNetwork, .) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to')
                    
                    # collect the correct order
                    df2 <- data %>% 
                      mutate(d = as.numeric(d),
                             nuname = factor(a$x$edges$from, 
                                             levels = unlist(data$name))) %>%
                      arrange(nuname) %>% 
                      select(d) %>% unlist(use.names = F)
                    #  [1] 11  5  2  8  7  6 10 14 15  4 12  9 13  3  1 
                    V(graph)$name = data$label = paste0(df2, "\n", data$name)
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = list(text = paste0("Trip ", m_1, " : "), 
                                            style = "font-family: Georgia; font-size: 100%; font-weight: bold; text-align:center;"),
                                submain = list(text = paste0(m_2, "KM"),
                                               style = "font-family: Georgia; font-size: 100%; text-align:center;"))) %>%
                      do.call(visNetwork, .) %>%
                      visInteraction(navigationButtons = TRUE) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to') %>% 
                      visOptions(width = "100%", height = "80%", autoResize = T)
                    
                    a[["sizingPolicy"]][["knitr"]][["figure"]] <- FALSE
                    
                    y = x = w = v = u = t = s = r = q  = p = o = n = m = l = k = j = i = h = g = f = e = d = c = b = a
                    
                    ```
                    
                    Column {data-width=200}
                    -----------------------------------------------------------------------
                    
                    ### Select Options
                    
                    You can select one or more options from the list. 
                    
                    ```{r selectiver}
                    tagSel <- rpgSelect(
                      "selectBox",                      # don't change this (connected)
                      "Selections:",                    # visible on HTML; change away or set to ""
                      c(setNames(1:25, letters[1:25])), # left is values, right is labels
                      multiple = T                      # all multiple selections
                    )        # other attributes controlled by css at the top
                    
                    tagSel$attribs$class <- 'select select--multiple'       # connect styles
                    tagSel$children[[2]]$attribs$class <- "mutli-select"    # connect styles
                    tagSel$children[[2]]$attribs$onchange <- "getOps(this)" # connect the JS function
                    
                    tagSel
                    
                    ```
                    
                    Column
                    -----------------------------------------------------------------------
                    
                    <div class="containIt">
                    
                    ```{r notNow, include=T}
                    
                    a
                    b
                    c
                    d
                    e
                    f
                    g
                    h
                    i
                    j
                    k
                    l
                    m
                    n
                    o
                    p
                    q
                    r
                    s
                    t
                    u
                    v
                    w
                    x
                    y
                    
                    ```
                    
                    </div>
                    
                    ```{r pickMe,results='asis',engine='js'}
                    
                    //remove inherent knitr element-- after using mutlti-select starts harboring space
                    byeknit = document.querySelector('#column-1 > div.containIt > div.knitr-options');
                    byeknit.remove(1);
                    
                    // Reset Sizing of Widgets
                    h = document.querySelector('#column-1 > div.containIt').clientHeight;
                    w = document.querySelector('#column-1 > div.containIt').clientWidth;
                    hw = h * w;
                    
                    cont = document.querySelectorAll('#column-1 > div.containIt > div');
                    
                    newHeight = Math.floor(Math.sqrt(hw/cont.length)) * .85;
                    
                    for(i = 0; i < cont.length; ++i){
                      cont[i].style.height = newHeight + 'px';
                      cont[i].style.width = newHeight + 'px';
                      cn = cont[i].childNodes;
                      if(cn.length > 0){
                          th = cn[0].clientHeight + cn[1].clientHeight;
                          console.log("canvas found");
                          mb = newheight - th;
                          cn[5].style.height = mb + 'px'; //canvas control attempt
                      }
                    }
                    
                    function resizePlease(count) { //resize plots based on selections
                      // screen may have resized**
                      h = document.querySelector('#column-1 > div.containIt').clientHeight;
                      w = document.querySelector('#column-1 > div.containIt').clientWidth;
                      hw = h * w;  // get the area
                      
                      // based on selected count** these should fit--- 
                      // RStudio!
                      newHeight = Math.floor(Math.sqrt(hw/count)) * .85; 
                      for(i = 0; i < graphy.length; ++i){
                        graphy[i].style.height = newHeight + 'px';
                        graphy[i].style.width = newHeight + 'px';
                        gcn = graphy[i].childNodes;
                        if(cn.length > 0){
                            th = gcn[0].clientHeight + gcn[1].clientHeight;
                            mb = newHeight - th;
                            gcn[5].style.height = mb + 'px'; //canvas control attempt
                            canYouPLEASElisten = graphy[i].querySelector('canvas');
                            canYouPLEASElisten.style.height = mb + 'px'; //trigger zoom extent!!
                            canYouPLEASElisten.style.height = '100%';
                        }
                      }
                    }
                    
                    
                    // Something selected triggers this function
                    function getOps(sel) {   
                      //get ref to select list and display text box
                      graphy = document.querySelectorAll('#column-1 div.visNetwork');
                      count = 0; // reset count of selected vis
                      // loop through selections
                      for(i = 0; i < sel.length; i++) {
                        opt = sel.options[i];
                        if ( opt.selected ) {
                          count++
                          graphy[i].style.display = 'block';
                          console.log(opt + "selected");
                          console.log(count + " options selected");
                        } else {
                          graphy[i].style.display = 'none';
                        }
                      }
                      resizePlease(count); 
                    }
                    
                    ```
                    
                    ---
                    title: "Just for antonoyaro8"
                    output: 
                      flexdashboard::flex_dashboard:
                        orientation: columns
                        vertical_layout: fill
                    ---
                    
                    <style>
                    select {
                      // A reset of styles, including removing the default dropdown arrow
                      appearance: none;
                      background-color: transparent;
                      border: none;
                      padding: 0 1em 0 0;
                      margin: 0;
                      width: 100%;
                      font-family: inherit;
                      font-size: inherit;
                      cursor: inherit;
                      line-height: inherit;
                    }
                    .select {
                      display: grid;
                      grid-template-areas: "select";
                      align-items: center;
                      position: relative;
                      min-width: 15ch;
                      max-width: 100ch;
                      border: 1px solid var(--select-border);
                      border-radius: 0.25em;
                      padding: 0.25em 0.5em;
                      font-size: 1.25rem;
                      cursor: pointer;
                      line-height: 1.1;
                      background-color: #fff;
                      background-image: linear-gradient(to top, #f9f9f9, #fff 33%);
                    }
                    select[multiple] {
                      padding-right: 0; 
                      /* Safari will not show options unless labels fit   */
                      height: 50rem;   // how many options show at one time
                      font-size: 1rem;
                    }
                    #column-1 > div.containIt > div.visNetwork canvas {
                      width: 100%;
                      height: 80%;
                    }
                    .containIt {
                      display: flex;
                      flex-flow: row wrap;
                      flex-grow: 1;
                      justify-content: space-around;
                      align-items: flex-start;
                      align-content: space-around;
                      overflow: hidden;
                      height: 100%;
                      width: 100%;
                      margin-top: 2vw;
                      height: 80vh;
                      widhth: 80vw;
                      overflow: hidden;
                    }
                    
                    </style>
                    
                    ```{r setup, include=FALSE}
                    
                    library(flexdashboard)
                    library(visNetwork)
                    library(htmltools)
                    library(igraph)
                    library(tidyverse)
                    library(shinyRPG) # remotes::install_github("RinteRface/shinyRPG")
                    
                    ```
                    
                    ```{r dataStuff}
                    
                    set.seed(123)
                    n=15
                    data = data.frame(tibble(d = paste(1:n)))
                    
                    relations = data.frame(tibble(
                      from = sample(data$d),
                      to = lead(from, default=from[1]),
                    ))
                    data$name = c("new york", "chicago", "los angeles", "orlando", "houston", "seattle", "washington", "baltimore", "atlanta", "las vegas", "oakland", "phoenix", "kansas", "miami", "newark" )
                    
                    graph = graph_from_data_frame(relations, directed=T, vertices = data) 
                    
                    #red circle: starting point and final point
                    V(graph)$color <- ifelse(data$d == relations$from[1], "red", "orange")
                    
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = paste0("Trip ", m_1, " : "), 
                                submain = paste0 (m_2, "KM") )) %>%
                      do.call(visNetwork, .) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to')
                    
                    # collect the correct order
                    df2 <- data %>% 
                      mutate(d = as.numeric(d),
                             nuname = factor(a$x$edges$from, 
                                             levels = unlist(data$name))) %>%
                      arrange(nuname) %>% 
                      select(d) %>% unlist(use.names = F)
                    #  [1] 11  5  2  8  7  6 10 14 15  4 12  9 13  3  1 
                    V(graph)$name = data$label = paste0(df2, "\n", data$name)
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = list(text = paste0("Trip ", m_1, " : "), 
                                            style = "font-family: Georgia; font-size: 100%; font-weight: bold; text-align:center;"),
                                submain = list(text = paste0(m_2, "KM"),
                                               style = "font-family: Georgia; font-size: 100%; text-align:center;"))) %>%
                      do.call(visNetwork, .) %>%
                      visInteraction(navigationButtons = TRUE) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to') %>% 
                      visOptions(width = "100%", height = "80%", autoResize = T)
                    
                    a[["sizingPolicy"]][["knitr"]][["figure"]] <- FALSE
                    
                    y = x = w = v = u = t = s = r = q  = p = o = n = m = l = k = j = i = h = g = f = e = d = c = b = a
                    
                    ```
                    
                    Column {data-width=200}
                    -----------------------------------------------------------------------
                    
                    ### Select Options
                    
                    You can select one or more options from the list. 
                    
                    ```{r selectiver}
                    tagSel <- rpgSelect(
                      "selectBox",                      # don't change this (connected)
                      "Selections:",                    # visible on HTML; change away or set to ""
                      c(setNames(1:25, letters[1:25])), # left is values, right is labels
                      multiple = T                      # all multiple selections
                    )        # other attributes controlled by css at the top
                    
                    tagSel$attribs$class <- 'select select--multiple'       # connect styles
                    tagSel$children[[2]]$attribs$class <- "mutli-select"    # connect styles
                    tagSel$children[[2]]$attribs$onchange <- "getOps(this)" # connect the JS function
                    
                    tagSel
                    
                    ```
                    
                    Column
                    -----------------------------------------------------------------------
                    
                    <div class="containIt">
                    
                    ```{r notNow, include=T}
                    
                    a
                    b
                    c
                    d
                    e
                    f
                    g
                    h
                    i
                    j
                    k
                    l
                    m
                    n
                    o
                    p
                    q
                    r
                    s
                    t
                    u
                    v
                    w
                    x
                    y
                    
                    ```
                    
                    </div>
                    
                    ```{r pickMe,results='asis',engine='js'}
                    
                    //remove inherent knitr element-- after using mutlti-select starts harboring space
                    byeknit = document.querySelector('#column-1 > div.containIt > div.knitr-options');
                    byeknit.remove(1);
                    
                    // Reset Sizing of Widgets
                    h = document.querySelector('#column-1 > div.containIt').clientHeight;
                    w = document.querySelector('#column-1 > div.containIt').clientWidth;
                    hw = h * w;
                    
                    cont = document.querySelectorAll('#column-1 > div.containIt > div');
                    
                    newHeight = Math.floor(Math.sqrt(hw/cont.length)) * .85;
                    
                    for(i = 0; i < cont.length; ++i){
                      cont[i].style.height = newHeight + 'px';
                      cont[i].style.width = newHeight + 'px';
                      cn = cont[i].childNodes;
                      if(cn.length > 0){
                          th = cn[0].clientHeight + cn[1].clientHeight;
                          console.log("canvas found");
                          mb = newheight - th;
                          cn[5].style.height = mb + 'px'; //canvas control attempt
                      }
                    }
                    
                    function resizePlease(count) { //resize plots based on selections
                      // screen may have resized**
                      h = document.querySelector('#column-1 > div.containIt').clientHeight;
                      w = document.querySelector('#column-1 > div.containIt').clientWidth;
                      hw = h * w;  // get the area
                      
                      // based on selected count** these should fit--- 
                      // RStudio!
                      newHeight = Math.floor(Math.sqrt(hw/count)) * .85; 
                      for(i = 0; i < graphy.length; ++i){
                        graphy[i].style.height = newHeight + 'px';
                        graphy[i].style.width = newHeight + 'px';
                        gcn = graphy[i].childNodes;
                        if(cn.length > 0){
                            th = gcn[0].clientHeight + gcn[1].clientHeight;
                            mb = newHeight - th;
                            gcn[5].style.height = mb + 'px'; //canvas control attempt
                            canYouPLEASElisten = graphy[i].querySelector('canvas');
                            canYouPLEASElisten.style.height = mb + 'px'; //trigger zoom extent!!
                            canYouPLEASElisten.style.height = '100%';
                        }
                      }
                    }
                    
                    
                    // Something selected triggers this function
                    function getOps(sel) {   
                      //get ref to select list and display text box
                      graphy = document.querySelectorAll('#column-1 div.visNetwork');
                      count = 0; // reset count of selected vis
                      // loop through selections
                      for(i = 0; i < sel.length; i++) {
                        opt = sel.options[i];
                        if ( opt.selected ) {
                          count++
                          graphy[i].style.display = 'block';
                          console.log(opt + "selected");
                          console.log(count + " options selected");
                        } else {
                          graphy[i].style.display = 'none';
                        }
                      }
                      resizePlease(count); 
                    }
                    
                    ```
                    
                    ---
                    title: "Just for antonoyaro8"
                    output: 
                      flexdashboard::flex_dashboard:
                        orientation: columns
                        vertical_layout: fill
                    ---
                    
                    <style>
                    select {
                      // A reset of styles, including removing the default dropdown arrow
                      appearance: none;
                      background-color: transparent;
                      border: none;
                      padding: 0 1em 0 0;
                      margin: 0;
                      width: 100%;
                      font-family: inherit;
                      font-size: inherit;
                      cursor: inherit;
                      line-height: inherit;
                    }
                    .select {
                      display: grid;
                      grid-template-areas: "select";
                      align-items: center;
                      position: relative;
                      min-width: 15ch;
                      max-width: 100ch;
                      border: 1px solid var(--select-border);
                      border-radius: 0.25em;
                      padding: 0.25em 0.5em;
                      font-size: 1.25rem;
                      cursor: pointer;
                      line-height: 1.1;
                      background-color: #fff;
                      background-image: linear-gradient(to top, #f9f9f9, #fff 33%);
                    }
                    select[multiple] {
                      padding-right: 0; 
                      /* Safari will not show options unless labels fit   */
                      height: 50rem;   // how many options show at one time
                      font-size: 1rem;
                    }
                    #column-1 > div.containIt > div.visNetwork canvas {
                      width: 100%;
                      height: 80%;
                    }
                    .containIt {
                      display: flex;
                      flex-flow: row wrap;
                      flex-grow: 1;
                      justify-content: space-around;
                      align-items: flex-start;
                      align-content: space-around;
                      overflow: hidden;
                      height: 100%;
                      width: 100%;
                      margin-top: 2vw;
                      height: 80vh;
                      widhth: 80vw;
                      overflow: hidden;
                    }
                    
                    </style>
                    
                    ```{r setup, include=FALSE}
                    
                    library(flexdashboard)
                    library(visNetwork)
                    library(htmltools)
                    library(igraph)
                    library(tidyverse)
                    library(shinyRPG) # remotes::install_github("RinteRface/shinyRPG")
                    
                    ```
                    
                    ```{r dataStuff}
                    
                    set.seed(123)
                    n=15
                    data = data.frame(tibble(d = paste(1:n)))
                    
                    relations = data.frame(tibble(
                      from = sample(data$d),
                      to = lead(from, default=from[1]),
                    ))
                    data$name = c("new york", "chicago", "los angeles", "orlando", "houston", "seattle", "washington", "baltimore", "atlanta", "las vegas", "oakland", "phoenix", "kansas", "miami", "newark" )
                    
                    graph = graph_from_data_frame(relations, directed=T, vertices = data) 
                    
                    #red circle: starting point and final point
                    V(graph)$color <- ifelse(data$d == relations$from[1], "red", "orange")
                    
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = paste0("Trip ", m_1, " : "), 
                                submain = paste0 (m_2, "KM") )) %>%
                      do.call(visNetwork, .) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to')
                    
                    # collect the correct order
                    df2 <- data %>% 
                      mutate(d = as.numeric(d),
                             nuname = factor(a$x$edges$from, 
                                             levels = unlist(data$name))) %>%
                      arrange(nuname) %>% 
                      select(d) %>% unlist(use.names = F)
                    #  [1] 11  5  2  8  7  6 10 14 15  4 12  9 13  3  1 
                    V(graph)$name = data$label = paste0(df2, "\n", data$name)
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = list(text = paste0("Trip ", m_1, " : "), 
                                            style = "font-family: Georgia; font-size: 100%; font-weight: bold; text-align:center;"),
                                submain = list(text = paste0(m_2, "KM"),
                                               style = "font-family: Georgia; font-size: 100%; text-align:center;"))) %>%
                      do.call(visNetwork, .) %>%
                      visInteraction(navigationButtons = TRUE) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to') %>% 
                      visOptions(width = "100%", height = "80%", autoResize = T)
                    
                    a[["sizingPolicy"]][["knitr"]][["figure"]] <- FALSE
                    
                    y = x = w = v = u = t = s = r = q  = p = o = n = m = l = k = j = i = h = g = f = e = d = c = b = a
                    
                    ```
                    
                    Column {data-width=200}
                    -----------------------------------------------------------------------
                    
                    ### Select Options
                    
                    You can select one or more options from the list. 
                    
                    ```{r selectiver}
                    tagSel <- rpgSelect(
                      "selectBox",                      # don't change this (connected)
                      "Selections:",                    # visible on HTML; change away or set to ""
                      c(setNames(1:25, letters[1:25])), # left is values, right is labels
                      multiple = T                      # all multiple selections
                    )        # other attributes controlled by css at the top
                    
                    tagSel$attribs$class <- 'select select--multiple'       # connect styles
                    tagSel$children[[2]]$attribs$class <- "mutli-select"    # connect styles
                    tagSel$children[[2]]$attribs$onchange <- "getOps(this)" # connect the JS function
                    
                    tagSel
                    
                    ```
                    
                    Column
                    -----------------------------------------------------------------------
                    
                    <div class="containIt">
                    
                    ```{r notNow, include=T}
                    
                    a
                    b
                    c
                    d
                    e
                    f
                    g
                    h
                    i
                    j
                    k
                    l
                    m
                    n
                    o
                    p
                    q
                    r
                    s
                    t
                    u
                    v
                    w
                    x
                    y
                    
                    ```
                    
                    </div>
                    
                    ```{r pickMe,results='asis',engine='js'}
                    
                    //remove inherent knitr element-- after using mutlti-select starts harboring space
                    byeknit = document.querySelector('#column-1 > div.containIt > div.knitr-options');
                    byeknit.remove(1);
                    
                    // Reset Sizing of Widgets
                    h = document.querySelector('#column-1 > div.containIt').clientHeight;
                    w = document.querySelector('#column-1 > div.containIt').clientWidth;
                    hw = h * w;
                    
                    cont = document.querySelectorAll('#column-1 > div.containIt > div');
                    
                    newHeight = Math.floor(Math.sqrt(hw/cont.length)) * .85;
                    
                    for(i = 0; i < cont.length; ++i){
                      cont[i].style.height = newHeight + 'px';
                      cont[i].style.width = newHeight + 'px';
                      cn = cont[i].childNodes;
                      if(cn.length > 0){
                          th = cn[0].clientHeight + cn[1].clientHeight;
                          console.log("canvas found");
                          mb = newheight - th;
                          cn[5].style.height = mb + 'px'; //canvas control attempt
                      }
                    }
                    
                    function resizePlease(count) { //resize plots based on selections
                      // screen may have resized**
                      h = document.querySelector('#column-1 > div.containIt').clientHeight;
                      w = document.querySelector('#column-1 > div.containIt').clientWidth;
                      hw = h * w;  // get the area
                      
                      // based on selected count** these should fit--- 
                      // RStudio!
                      newHeight = Math.floor(Math.sqrt(hw/count)) * .85; 
                      for(i = 0; i < graphy.length; ++i){
                        graphy[i].style.height = newHeight + 'px';
                        graphy[i].style.width = newHeight + 'px';
                        gcn = graphy[i].childNodes;
                        if(cn.length > 0){
                            th = gcn[0].clientHeight + gcn[1].clientHeight;
                            mb = newHeight - th;
                            gcn[5].style.height = mb + 'px'; //canvas control attempt
                            canYouPLEASElisten = graphy[i].querySelector('canvas');
                            canYouPLEASElisten.style.height = mb + 'px'; //trigger zoom extent!!
                            canYouPLEASElisten.style.height = '100%';
                        }
                      }
                    }
                    
                    
                    // Something selected triggers this function
                    function getOps(sel) {   
                      //get ref to select list and display text box
                      graphy = document.querySelectorAll('#column-1 div.visNetwork');
                      count = 0; // reset count of selected vis
                      // loop through selections
                      for(i = 0; i < sel.length; i++) {
                        opt = sel.options[i];
                        if ( opt.selected ) {
                          count++
                          graphy[i].style.display = 'block';
                          console.log(opt + "selected");
                          console.log(count + " options selected");
                        } else {
                          graphy[i].style.display = 'none';
                        }
                      }
                      resizePlease(count); 
                    }
                    
                    ```
                    
                    ---
                    title: "Just for antonoyaro8"
                    output: 
                      flexdashboard::flex_dashboard:
                        orientation: columns
                        vertical_layout: fill
                    ---
                    
                    <style>
                    select {
                      // A reset of styles, including removing the default dropdown arrow
                      appearance: none;
                      background-color: transparent;
                      border: none;
                      padding: 0 1em 0 0;
                      margin: 0;
                      width: 100%;
                      font-family: inherit;
                      font-size: inherit;
                      cursor: inherit;
                      line-height: inherit;
                    }
                    .select {
                      display: grid;
                      grid-template-areas: "select";
                      align-items: center;
                      position: relative;
                      min-width: 15ch;
                      max-width: 100ch;
                      border: 1px solid var(--select-border);
                      border-radius: 0.25em;
                      padding: 0.25em 0.5em;
                      font-size: 1.25rem;
                      cursor: pointer;
                      line-height: 1.1;
                      background-color: #fff;
                      background-image: linear-gradient(to top, #f9f9f9, #fff 33%);
                    }
                    select[multiple] {
                      padding-right: 0; 
                      /* Safari will not show options unless labels fit   */
                      height: 50rem;   // how many options show at one time
                      font-size: 1rem;
                    }
                    #column-1 > div.containIt > div.visNetwork canvas {
                      width: 100%;
                      height: 80%;
                    }
                    .containIt {
                      display: flex;
                      flex-flow: row wrap;
                      flex-grow: 1;
                      justify-content: space-around;
                      align-items: flex-start;
                      align-content: space-around;
                      overflow: hidden;
                      height: 100%;
                      width: 100%;
                      margin-top: 2vw;
                      height: 80vh;
                      widhth: 80vw;
                      overflow: hidden;
                    }
                    
                    </style>
                    
                    ```{r setup, include=FALSE}
                    
                    library(flexdashboard)
                    library(visNetwork)
                    library(htmltools)
                    library(igraph)
                    library(tidyverse)
                    library(shinyRPG) # remotes::install_github("RinteRface/shinyRPG")
                    
                    ```
                    
                    ```{r dataStuff}
                    
                    set.seed(123)
                    n=15
                    data = data.frame(tibble(d = paste(1:n)))
                    
                    relations = data.frame(tibble(
                      from = sample(data$d),
                      to = lead(from, default=from[1]),
                    ))
                    data$name = c("new york", "chicago", "los angeles", "orlando", "houston", "seattle", "washington", "baltimore", "atlanta", "las vegas", "oakland", "phoenix", "kansas", "miami", "newark" )
                    
                    graph = graph_from_data_frame(relations, directed=T, vertices = data) 
                    
                    #red circle: starting point and final point
                    V(graph)$color <- ifelse(data$d == relations$from[1], "red", "orange")
                    
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = paste0("Trip ", m_1, " : "), 
                                submain = paste0 (m_2, "KM") )) %>%
                      do.call(visNetwork, .) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to')
                    
                    # collect the correct order
                    df2 <- data %>% 
                      mutate(d = as.numeric(d),
                             nuname = factor(a$x$edges$from, 
                                             levels = unlist(data$name))) %>%
                      arrange(nuname) %>% 
                      select(d) %>% unlist(use.names = F)
                    #  [1] 11  5  2  8  7  6 10 14 15  4 12  9 13  3  1 
                    V(graph)$name = data$label = paste0(df2, "\n", data$name)
                    a = visIgraph(graph)  
                    
                    m_1 = 1
                    m_2 = 23.6
                    a = toVisNetworkData(graph) %>%
                      c(., list(main = list(text = paste0("Trip ", m_1, " : "), 
                                            style = "font-family: Georgia; font-size: 100%; font-weight: bold; text-align:center;"),
                                submain = list(text = paste0(m_2, "KM"),
                                               style = "font-family: Georgia; font-size: 100%; text-align:center;"))) %>%
                      do.call(visNetwork, .) %>%
                      visInteraction(navigationButtons = TRUE) %>%
                      visIgraphLayout(layout = "layout_in_circle") %>% 
                      visEdges(arrows = 'to') %>% 
                      visOptions(width = "100%", height = "80%", autoResize = T)
                    
                    a[["sizingPolicy"]][["knitr"]][["figure"]] <- FALSE
                    
                    y = x = w = v = u = t = s = r = q  = p = o = n = m = l = k = j = i = h = g = f = e = d = c = b = a
                    
                    ```
                    
                    Column {data-width=200}
                    -----------------------------------------------------------------------
                    
                    ### Select Options
                    
                    You can select one or more options from the list. 
                    
                    ```{r selectiver}
                    tagSel <- rpgSelect(
                      "selectBox",                      # don't change this (connected)
                      "Selections:",                    # visible on HTML; change away or set to ""
                      c(setNames(1:25, letters[1:25])), # left is values, right is labels
                      multiple = T                      # all multiple selections
                    )        # other attributes controlled by css at the top
                    
                    tagSel$attribs$class <- 'select select--multiple'       # connect styles
                    tagSel$children[[2]]$attribs$class <- "mutli-select"    # connect styles
                    tagSel$children[[2]]$attribs$onchange <- "getOps(this)" # connect the JS function
                    
                    tagSel
                    
                    ```
                    
                    Column
                    -----------------------------------------------------------------------
                    
                    <div class="containIt">
                    
                    ```{r notNow, include=T}
                    
                    a
                    b
                    c
                    d
                    e
                    f
                    g
                    h
                    i
                    j
                    k
                    l
                    m
                    n
                    o
                    p
                    q
                    r
                    s
                    t
                    u
                    v
                    w
                    x
                    y
                    
                    ```
                    
                    </div>
                    
                    ```{r pickMe,results='asis',engine='js'}
                    
                    //remove inherent knitr element-- after using mutlti-select starts harboring space
                    byeknit = document.querySelector('#column-1 > div.containIt > div.knitr-options');
                    byeknit.remove(1);
                    
                    // Reset Sizing of Widgets
                    h = document.querySelector('#column-1 > div.containIt').clientHeight;
                    w = document.querySelector('#column-1 > div.containIt').clientWidth;
                    hw = h * w;
                    
                    cont = document.querySelectorAll('#column-1 > div.containIt > div');
                    
                    newHeight = Math.floor(Math.sqrt(hw/cont.length)) * .85;
                    
                    for(i = 0; i < cont.length; ++i){
                      cont[i].style.height = newHeight + 'px';
                      cont[i].style.width = newHeight + 'px';
                      cn = cont[i].childNodes;
                      if(cn.length > 0){
                          th = cn[0].clientHeight + cn[1].clientHeight;
                          console.log("canvas found");
                          mb = newheight - th;
                          cn[5].style.height = mb + 'px'; //canvas control attempt
                      }
                    }
                    
                    function resizePlease(count) { //resize plots based on selections
                      // screen may have resized**
                      h = document.querySelector('#column-1 > div.containIt').clientHeight;
                      w = document.querySelector('#column-1 > div.containIt').clientWidth;
                      hw = h * w;  // get the area
                      
                      // based on selected count** these should fit--- 
                      // RStudio!
                      newHeight = Math.floor(Math.sqrt(hw/count)) * .85; 
                      for(i = 0; i < graphy.length; ++i){
                        graphy[i].style.height = newHeight + 'px';
                        graphy[i].style.width = newHeight + 'px';
                        gcn = graphy[i].childNodes;
                        if(cn.length > 0){
                            th = gcn[0].clientHeight + gcn[1].clientHeight;
                            mb = newHeight - th;
                            gcn[5].style.height = mb + 'px'; //canvas control attempt
                            canYouPLEASElisten = graphy[i].querySelector('canvas');
                            canYouPLEASElisten.style.height = mb + 'px'; //trigger zoom extent!!
                            canYouPLEASElisten.style.height = '100%';
                        }
                      }
                    }
                    
                    
                    // Something selected triggers this function
                    function getOps(sel) {   
                      //get ref to select list and display text box
                      graphy = document.querySelectorAll('#column-1 div.visNetwork');
                      count = 0; // reset count of selected vis
                      // loop through selections
                      for(i = 0; i < sel.length; i++) {
                        opt = sel.options[i];
                        if ( opt.selected ) {
                          count++
                          graphy[i].style.display = 'block';
                          console.log(opt + "selected");
                          console.log(count + " options selected");
                        } else {
                          graphy[i].style.display = 'none';
                        }
                      }
                      resizePlease(count); 
                    }
                    
                    ```
                    

                    Setting styles for react-slick

                    copy iconCopydownload iconDownload
                    function Carousel({ blogs }) {
                      const [imageIndex, setImageIndex] = useState(0);
                    
                      const transformDate = (date) => {
                        return date.substring(0, 10);
                      };
                    
                      const NextArrow = ({ onClick }) => {
                        return (
                          <div className={`${styles.arrow} ${styles.next}`} onClick={onClick}>
                            <FaArrowRight />
                          </div>
                        );
                      };
                    
                      const PrevArrow = ({ onClick }) => {
                        return (
                          <div className={`${styles.arrow} ${styles.prev}`} onClick={onClick}>
                            <FaArrowLeft />
                          </div>
                        );
                      };
                    
                      useEffect(() => {
                        document.querySelectorAll(".slick-active").forEach((el) => {
                          el.style.setProperty("position", "static", "important");
                        });
                    
                        document
                          .querySelectorAll(".slick-current")
                          .style.setProperty("position", "relative", "important");
                        document
                          .querySelectorAll(".slick-current")
                          .style.setProperty("z-index", "50", "important");
                      }, [imageIndex]);
                    
                      const settings = {
                        dots: false,
                        infinite: true,
                        speed: 500,
                        slidesToShow: 3,
                        slidesToScroll: 1,
                        centerMode: true,
                        nextArrow: <NextArrow />,
                        prevArrow: <PrevArrow />,
                        beforeChange: (current, next) => setImageIndex(next),
                      };
                    
                      return (
                        <div className={styles.carouselContainer}>
                          <Slider {...settings}>
                            {blogs.map((blog, idx) => (
                              <div key={idx}>
                                <div
                                  className={
                                    idx === imageIndex
                                      ? `${styles.innerSlide} ${styles.activeSlide}`
                                      : `${styles.innerSlide} ${styles.passiveSlide}`
                                  }
                                >
                                  <p>{transformDate(blog.created_on)}</p>
                                  <h3>{blog.title}</h3>
                                  <p>{blog.subtitle}</p>
                                  <button
                                    className={
                                      idx === imageIndex
                                        ? `${styles.button} ${styles.activeButton}`
                                        : styles.button
                                    }
                                  >
                                    <Link href={"/blog/" + blog.id}>READ MORE</Link>
                                  </button>
                                </div>
                              </div>
                            ))}
                          </Slider>
                        </div>
                      );
                    }
                    
                    export default Carousel;
                    
                    <section className={styles.container}>
                      <Slider>
                        // slider content
                      </Slider>
                    </section>
                    
                    .container {
                      :global .slider .slick-current {
                        position: relative !important;
                        z-index: 50 !important;
                      }
                    }
                    
                    <section className={styles.container}>
                      <Slider>
                        // slider content
                      </Slider>
                    </section>
                    
                    .container {
                      :global .slider .slick-current {
                        position: relative !important;
                        z-index: 50 !important;
                      }
                    }
                    

                    How to avoid nested chains of &quot;if let&quot;?

                    copy iconCopydownload iconDownload
                    let Some(i) = func1() else {
                        println!("func 1 returned None");
                        return;
                    };
                    let Some(j) = func2(i) else {
                        println!("func 2 returned None");
                        return;
                    };
                    let Some(k) = func3(j) else {
                        println!("func 3 returned None");
                        return;
                    };
                    let Some(result) = func3(k) else {
                        println!("func 4 returned None");
                        return;
                    };
                    
                    #![feature(let_else)]
                    
                    let Some(i) = func1() else {
                        println!("func 1 returned None");
                        return;
                    };
                    let Some(j) = func2(i) else {
                        println!("func 2 returned None");
                        return;
                    };
                    let Some(k) = func3(j) else {
                        println!("func 3 returned None");
                        return;
                    };
                    let Some(result) = func3(k) else {
                        println!("func 4 returned None");
                        return;
                    };
                    
                    #![feature(let_else)]
                    
                    fn get_result() -> Option<u64> {
                      let i = func1()?;
                      let j = func2(i)?;
                      let k = func3(j)?;
                      func3(k)
                    }
                    
                    fn main() {
                      if let Some(result) = get_result() {
                        // do something
                      }
                    }
                    
                    enum Error {
                      Func1,
                      Func2,
                      Func3,
                      Func4,
                    }
                    
                    fn get_result() -> Result<i64, Error> {
                      let i = func1().ok_or(Error::Func1)?;
                      let j = func2(i).ok_or(Error::Func2)?;
                      let k = func3(j).ok_or(Error::Func3)?;
                      func4(k).ok_or(Error::Func4)
                    }
                    
                    fn main() {
                      use Error::*;
                      match get_result() {
                        Ok(result) => {},
                        Err(Func1) => {},
                        // ...
                      }
                    }
                    
                    fn get_result() -> Option<u64> {
                      let i = func1()?;
                      let j = func2(i)?;
                      let k = func3(j)?;
                      func3(k)
                    }
                    
                    fn main() {
                      if let Some(result) = get_result() {
                        // do something
                      }
                    }
                    
                    enum Error {
                      Func1,
                      Func2,
                      Func3,
                      Func4,
                    }
                    
                    fn get_result() -> Result<i64, Error> {
                      let i = func1().ok_or(Error::Func1)?;
                      let j = func2(i).ok_or(Error::Func2)?;
                      let k = func3(j).ok_or(Error::Func3)?;
                      func4(k).ok_or(Error::Func4)
                    }
                    
                    fn main() {
                      use Error::*;
                      match get_result() {
                        Ok(result) => {},
                        Err(Func1) => {},
                        // ...
                      }
                    }
                    
                    let result = func1().and_then(func2).and_then(func3).and_then(func4);
                    match result {
                      Some(result) => …,
                      None => …,
                    }
                    
                    use anyhow::Context;
                    let j = func2(i).context("Func2 failed")?;
                    
                    let result = func1().and_then(func2).and_then(func3).and_then(func4);
                    match result {
                      Some(result) => …,
                      None => …,
                    }
                    
                    use anyhow::Context;
                    let j = func2(i).context("Func2 failed")?;
                    
                    let i = if let Some(i) = func1() { i } else {
                       println!("func 1 returned None");
                       return;
                    };
                    let j = if let Some(j) = func2(i) { j } else {
                       println!("func 2 returned None");
                       return;
                    };
                    let k = if let Some(k) = func3(j) { k } else {
                       println!("func 3 returned None");
                       return;
                    };
                    let result = if let Some(result) = func3(k) { result } else {
                       println!("func 4 returned None");
                       return;
                    };
                    

                    Why does adding a type before a hash variable that is being built with fat arrow syntax, lead to type check failed error?

                    copy iconCopydownload iconDownload
                    my Numeric %hash = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my %hash is Hash[Numeric] = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my %hash is Hash[Numeric,Str] = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my Numeric %hash{Str} = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my Numeric %hash = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my %hash is Hash[Numeric] = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my %hash is Hash[Numeric,Str] = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my Numeric %hash{Str} = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my Numeric %hash = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my %hash is Hash[Numeric] = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my %hash is Hash[Numeric,Str] = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my Numeric %hash{Str} = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my Numeric %hash = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my %hash is Hash[Numeric] = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my %hash is Hash[Numeric,Str] = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    
                    my Numeric %hash{Str} = abc => 4.5, abd => 5.5, bcd => 6.4, bce => 3.6;
                    

                    How to fix: &quot;@angular/fire&quot;' has no exported member 'AngularFireModule'.ts(2305) ionic, firebase, angular

                    copy iconCopydownload iconDownload
                    import { AngularFireModule } from "@angular/fire/compat";
                    import { AngularFireAuthModule } from "@angular/fire/compat/auth";
                    import { AngularFireStorageModule } from '@angular/fire/compat/storage';
                    import { AngularFirestoreModule } from '@angular/fire/compat/firestore';
                    import { AngularFireDatabaseModule } from '@angular/fire/compat/database';
                    
                    "@angular/fire": "~7.0.4",
                    "firebase": "~9.0.2",
                    
                    import { AngularFireAuthModule } from "@angular/fire/compat/auth";
                    import { AngularFireStorageModule } from '@angular/fire/compat/storage';
                    import { AngularFirestoreModule } from '@angular/fire/compat/firestore';
                    import { AngularFireDatabaseModule } from '@angular/fire/compat/database';````
                    
                    here is the link https://firebase.google.com/docs/web/modular-upgrade
                    
                    Enjoy!!!!
                    
                    import { AngularFireAuthModule } from "@angular/fire/compat/auth";
                    import { AngularFireStorageModule } from '@angular/fire/compat/storage';
                    import { AngularFirestoreModule } from '@angular/fire/compat/firestore';
                    import { AngularFireDatabaseModule } from '@angular/fire/compat/database';
                    

                    Convert GPS Coordinates to Match Custom 2d outdoor layout Image

                    copy iconCopydownload iconDownload
                    double x,y;
                    double newX,newY;
                    double angle;
                    
                    //Test values:
                    x=1;
                    y=1;
                    angle = 45;
                    
                    double rad = angle*M_PI/180;
                    
                    newX = x * cos(rad) - y * sin(rad);
                    newY = y * cos(rad) + x * sin(rad);
                    
                    long double lat1,lat2,lng1,lng2; //fill these with GPS coordinates
                    double x1,x2,y1,y2;//fill these of rectangle coordinate in the image
                    
                    long double realWidth = distance(lat1, long1,lat2,long1);// distance btween the upper left corner & the upper right corner
                    long double realHieght = distance(lat1, long1,lat1,long2);// distance btween the upper left corner & the lower left corner
                    
                    double image1Width = abs(x2-x1);
                    double image1Hieght = abs(y2-y1);
                    
                    long double playerLat,playerLng;//fill the player lat lng GPS coordiantes 
                    
                    POINT imagePlayerXY = convertGPS2xy(lat1,  lng1, playerLat,  playerLng, realWidth, realHieght, image1Width, image1Hieght);
                    //NOW rotate imagePlayerXY.x & imagePlayerXY.y to the final image
                    
                    POINT convertGPS2xy(long double latOrigin, long double lngOrigin,long double playerLat, long double playerLng,long double realWidth,long double realHieght, double image1Width,double image1Hieght)
                    {
                        double lngRatio2Width = distance(playerLat,playerLng, playerLat,lngOrigin ) / realWidth; //horizantal distance from the player place to rectangle origin (then compute the width ratio)
                        double lngRatio2Hieght = distance(playerLat,playerLng, latOrigin,playerLng ) / realHieght; //virtical distance from the player place to rectangle origin (then compute the Hieght ratio)
                    
                        POINT imageXY;
                        imageXY.x = image1Width * lngRatio2Width;
                        imageXY.y = image1Hieght * lngRatio2Hieght;
                    
                        return imageXY;
                    }
                    
                    
                    long double distance(long double lat1, long double long1,
                                         long double lat2, long double long2)
                    {
                        // Convert the latitudes
                        // and longitudes
                        // from degree to radians.
                        lat1 = toRadians(lat1);
                        long1 = toRadians(long1);
                        lat2 = toRadians(lat2);
                        long2 = toRadians(long2);
                         
                        // Haversine Formula
                        long double dlong = long2 - long1;
                        long double dlat = lat2 - lat1;
                     
                        long double ans = pow(sin(dlat / 2), 2) +
                                              cos(lat1) * cos(lat2) *
                                              pow(sin(dlong / 2), 2);
                     
                        ans = 2 * asin(sqrt(ans));
                     
                        // Radius of Earth in
                        // Kilometers, R = 6371
                        // Use R = 3956 for miles
                        long double R = 6371;
                         
                        // Calculate the result
                        ans = ans * R;
                     
                        return ans;
                    }
                    
                    double x,y;
                    double newX,newY;
                    double angle;
                    
                    //Test values:
                    x=1;
                    y=1;
                    angle = 45;
                    
                    double rad = angle*M_PI/180;
                    
                    newX = x * cos(rad) - y * sin(rad);
                    newY = y * cos(rad) + x * sin(rad);
                    
                    long double lat1,lat2,lng1,lng2; //fill these with GPS coordinates
                    double x1,x2,y1,y2;//fill these of rectangle coordinate in the image
                    
                    long double realWidth = distance(lat1, long1,lat2,long1);// distance btween the upper left corner & the upper right corner
                    long double realHieght = distance(lat1, long1,lat1,long2);// distance btween the upper left corner & the lower left corner
                    
                    double image1Width = abs(x2-x1);
                    double image1Hieght = abs(y2-y1);
                    
                    long double playerLat,playerLng;//fill the player lat lng GPS coordiantes 
                    
                    POINT imagePlayerXY = convertGPS2xy(lat1,  lng1, playerLat,  playerLng, realWidth, realHieght, image1Width, image1Hieght);
                    //NOW rotate imagePlayerXY.x & imagePlayerXY.y to the final image
                    
                    POINT convertGPS2xy(long double latOrigin, long double lngOrigin,long double playerLat, long double playerLng,long double realWidth,long double realHieght, double image1Width,double image1Hieght)
                    {
                        double lngRatio2Width = distance(playerLat,playerLng, playerLat,lngOrigin ) / realWidth; //horizantal distance from the player place to rectangle origin (then compute the width ratio)
                        double lngRatio2Hieght = distance(playerLat,playerLng, latOrigin,playerLng ) / realHieght; //virtical distance from the player place to rectangle origin (then compute the Hieght ratio)
                    
                        POINT imageXY;
                        imageXY.x = image1Width * lngRatio2Width;
                        imageXY.y = image1Hieght * lngRatio2Hieght;
                    
                        return imageXY;
                    }
                    
                    
                    long double distance(long double lat1, long double long1,
                                         long double lat2, long double long2)
                    {
                        // Convert the latitudes
                        // and longitudes
                        // from degree to radians.
                        lat1 = toRadians(lat1);
                        long1 = toRadians(long1);
                        lat2 = toRadians(lat2);
                        long2 = toRadians(long2);
                         
                        // Haversine Formula
                        long double dlong = long2 - long1;
                        long double dlat = lat2 - lat1;
                     
                        long double ans = pow(sin(dlat / 2), 2) +
                                              cos(lat1) * cos(lat2) *
                                              pow(sin(dlong / 2), 2);
                     
                        ans = 2 * asin(sqrt(ans));
                     
                        // Radius of Earth in
                        // Kilometers, R = 6371
                        // Use R = 3956 for miles
                        long double R = 6371;
                         
                        // Calculate the result
                        ans = ans * R;
                     
                        return ans;
                    }
                    
                    double x,y;
                    double newX,newY;
                    double angle;
                    
                    //Test values:
                    x=1;
                    y=1;
                    angle = 45;
                    
                    double rad = angle*M_PI/180;
                    
                    newX = x * cos(rad) - y * sin(rad);
                    newY = y * cos(rad) + x * sin(rad);
                    
                    long double lat1,lat2,lng1,lng2; //fill these with GPS coordinates
                    double x1,x2,y1,y2;//fill these of rectangle coordinate in the image
                    
                    long double realWidth = distance(lat1, long1,lat2,long1);// distance btween the upper left corner & the upper right corner
                    long double realHieght = distance(lat1, long1,lat1,long2);// distance btween the upper left corner & the lower left corner
                    
                    double image1Width = abs(x2-x1);
                    double image1Hieght = abs(y2-y1);
                    
                    long double playerLat,playerLng;//fill the player lat lng GPS coordiantes 
                    
                    POINT imagePlayerXY = convertGPS2xy(lat1,  lng1, playerLat,  playerLng, realWidth, realHieght, image1Width, image1Hieght);
                    //NOW rotate imagePlayerXY.x & imagePlayerXY.y to the final image
                    
                    POINT convertGPS2xy(long double latOrigin, long double lngOrigin,long double playerLat, long double playerLng,long double realWidth,long double realHieght, double image1Width,double image1Hieght)
                    {
                        double lngRatio2Width = distance(playerLat,playerLng, playerLat,lngOrigin ) / realWidth; //horizantal distance from the player place to rectangle origin (then compute the width ratio)
                        double lngRatio2Hieght = distance(playerLat,playerLng, latOrigin,playerLng ) / realHieght; //virtical distance from the player place to rectangle origin (then compute the Hieght ratio)
                    
                        POINT imageXY;
                        imageXY.x = image1Width * lngRatio2Width;
                        imageXY.y = image1Hieght * lngRatio2Hieght;
                    
                        return imageXY;
                    }
                    
                    
                    long double distance(long double lat1, long double long1,
                                         long double lat2, long double long2)
                    {
                        // Convert the latitudes
                        // and longitudes
                        // from degree to radians.
                        lat1 = toRadians(lat1);
                        long1 = toRadians(long1);
                        lat2 = toRadians(lat2);
                        long2 = toRadians(long2);
                         
                        // Haversine Formula
                        long double dlong = long2 - long1;
                        long double dlat = lat2 - lat1;
                     
                        long double ans = pow(sin(dlat / 2), 2) +
                                              cos(lat1) * cos(lat2) *
                                              pow(sin(dlong / 2), 2);
                     
                        ans = 2 * asin(sqrt(ans));
                     
                        // Radius of Earth in
                        // Kilometers, R = 6371
                        // Use R = 3956 for miles
                        long double R = 6371;
                         
                        // Calculate the result
                        ans = ans * R;
                     
                        return ans;
                    }
                    

                    Why does this arrow function in an interface not compile?

                    copy iconCopydownload iconDownload
                    class SomeClass implements SomeInterface { // error here
                        someFunction(par1: string): string  
                        {
                            return par1.toUpperCase();
                        }
                    }
                    
                    const i: SomeInterface = new SomeClass(); // error here
                    i.someFunction(undefined); // runtime error here, par1 is undefined
                    
                    interface Animal { species: string }
                    interface Dog extends Animal { bark(): void };
                    const scooby: Dog = { species: "dog", bark() { console.log("ROOBY ROO or whatevz") } };
                    const snoopy: Dog = { species: "dog", bark() { console.log("...") } };
                    function processAnimals(arr: Animal[]) {
                        console.log("I got " + arr.map(x => x.species).join(", ") + ".")
                    };
                    const dogs = [scooby, snoopy];
                    processAnimals(dogs); // okay
                    
                    class SomeClass2 implements SomeInterface2 { // no error
                        someFunction(par1: string): string {
                            return par1.toUpperCase();
                        }
                    }
                    
                    const i2: SomeInterface2 = new SomeClass2(); // no error
                    i2.someFunction(undefined); // runtime error, par1 is undefined
                    
                    class SomeClass implements SomeInterface { // error here
                        someFunction(par1: string): string  
                        {
                            return par1.toUpperCase();
                        }
                    }
                    
                    const i: SomeInterface = new SomeClass(); // error here
                    i.someFunction(undefined); // runtime error here, par1 is undefined
                    
                    interface Animal { species: string }
                    interface Dog extends Animal { bark(): void };
                    const scooby: Dog = { species: "dog", bark() { console.log("ROOBY ROO or whatevz") } };
                    const snoopy: Dog = { species: "dog", bark() { console.log("...") } };
                    function processAnimals(arr: Animal[]) {
                        console.log("I got " + arr.map(x => x.species).join(", ") + ".")
                    };
                    const dogs = [scooby, snoopy];
                    processAnimals(dogs); // okay
                    
                    class SomeClass2 implements SomeInterface2 { // no error
                        someFunction(par1: string): string {
                            return par1.toUpperCase();
                        }
                    }
                    
                    const i2: SomeInterface2 = new SomeClass2(); // no error
                    i2.someFunction(undefined); // runtime error, par1 is undefined
                    
                    class SomeClass implements SomeInterface { // error here
                        someFunction(par1: string): string  
                        {
                            return par1.toUpperCase();
                        }
                    }
                    
                    const i: SomeInterface = new SomeClass(); // error here
                    i.someFunction(undefined); // runtime error here, par1 is undefined
                    
                    interface Animal { species: string }
                    interface Dog extends Animal { bark(): void };
                    const scooby: Dog = { species: "dog", bark() { console.log("ROOBY ROO or whatevz") } };
                    const snoopy: Dog = { species: "dog", bark() { console.log("...") } };
                    function processAnimals(arr: Animal[]) {
                        console.log("I got " + arr.map(x => x.species).join(", ") + ".")
                    };
                    const dogs = [scooby, snoopy];
                    processAnimals(dogs); // okay
                    
                    class SomeClass2 implements SomeInterface2 { // no error
                        someFunction(par1: string): string {
                            return par1.toUpperCase();
                        }
                    }
                    
                    const i2: SomeInterface2 = new SomeClass2(); // no error
                    i2.someFunction(undefined); // runtime error, par1 is undefined
                    
                    class SomeClass implements SomeInterface { // error here
                        someFunction(par1: string): string  
                        {
                            return par1.toUpperCase();
                        }
                    }
                    
                    const i: SomeInterface = new SomeClass(); // error here
                    i.someFunction(undefined); // runtime error here, par1 is undefined
                    
                    interface Animal { species: string }
                    interface Dog extends Animal { bark(): void };
                    const scooby: Dog = { species: "dog", bark() { console.log("ROOBY ROO or whatevz") } };
                    const snoopy: Dog = { species: "dog", bark() { console.log("...") } };
                    function processAnimals(arr: Animal[]) {
                        console.log("I got " + arr.map(x => x.species).join(", ") + ".")
                    };
                    const dogs = [scooby, snoopy];
                    processAnimals(dogs); // okay
                    
                    class SomeClass2 implements SomeInterface2 { // no error
                        someFunction(par1: string): string {
                            return par1.toUpperCase();
                        }
                    }
                    
                    const i2: SomeInterface2 = new SomeClass2(); // no error
                    i2.someFunction(undefined); // runtime error, par1 is undefined
                    

                    Is there a way to disable the month/viewmode button in bootstrap-datetimepicker?

                    copy iconCopydownload iconDownload
                    $(dateDiv).datetimepicker({ maxView: 1 })
                    
                    $(dateDiv).tempusDominus({
                       display: {
                         viewMode: 'date',
                         components: {
                           decades: false,
                           year: false,
                           month: false,
                           date: true,
                           hours: true,
                           minutes: true,
                           seconds: false
                         }
                       }
                    })
                    
                    $(dateDiv).datetimepicker({ maxView: 1 })
                    
                    $(dateDiv).tempusDominus({
                       display: {
                         viewMode: 'date',
                         components: {
                           decades: false,
                           year: false,
                           month: false,
                           date: true,
                           hours: true,
                           minutes: true,
                           seconds: false
                         }
                       }
                    })
                    
                    th.picker-switch[title="Select Month"] {
                        pointer-events: none;
                    }
                    

                    Making QualifiedDo and ApplicativeDo work together when nesting applicative functors

                    copy iconCopydownload iconDownload
                    fooPhasesMonad = 
                        someConfigurator Bind.>>= \i ->
                        someAllocator Bind.>>= \c ->
                        pure (Foo i c)
                    
                    fooPhasesApplicative = Bind.fmap Foo someConfigurator Bind.<*> someAllocator
                    
                    fmap :: (Functor f, Applicative g) => (a -> b) -> f a -> Compose f g b
                    fmap f k = bindPhase k (Prelude.pure . f)
                    
                    type Phases = (Configurator `Compose` Validator) `Compose` Allocator
                    
                    fooPhasesMonad = 
                        someConfigurator Bind.>>= \i ->
                        someAllocator Bind.>>= \c ->
                        pure (Foo i c)
                    
                    fooPhasesApplicative = Bind.fmap Foo someConfigurator Bind.<*> someAllocator
                    
                    fmap :: (Functor f, Applicative g) => (a -> b) -> f a -> Compose f g b
                    fmap f k = bindPhase k (Prelude.pure . f)
                    
                    type Phases = (Configurator `Compose` Validator) `Compose` Allocator
                    
                    fooPhasesMonad = 
                        someConfigurator Bind.>>= \i ->
                        someAllocator Bind.>>= \c ->
                        pure (Foo i c)
                    
                    fooPhasesApplicative = Bind.fmap Foo someConfigurator Bind.<*> someAllocator
                    
                    fmap :: (Functor f, Applicative g) => (a -> b) -> f a -> Compose f g b
                    fmap f k = bindPhase k (Prelude.pure . f)
                    
                    type Phases = (Configurator `Compose` Validator) `Compose` Allocator
                    

                    Community Discussions

                    Trending Discussions on arrow
                    • Matter.Query.region not returning any collisions even though the bound is clearly intersecting other bodies
                    • ESlint - Error: Must use import to load ES Module
                    • Fixing Cluttered Titles on Graphs
                    • Setting styles for react-slick
                    • How to avoid nested chains of &quot;if let&quot;?
                    • Why does adding a type before a hash variable that is being built with fat arrow syntax, lead to type check failed error?
                    • How to fix: &quot;@angular/fire&quot;' has no exported member 'AngularFireModule'.ts(2305) ionic, firebase, angular
                    • Convert GPS Coordinates to Match Custom 2d outdoor layout Image
                    • Why does this arrow function in an interface not compile?
                    • Is there a way to disable the month/viewmode button in bootstrap-datetimepicker?
                    Trending Discussions on arrow

                    QUESTION

                    Matter.Query.region not returning any collisions even though the bound is clearly intersecting other bodies

                    Asked 2022-Mar-24 at 00:20

                    I'm trying to use Matter.Query.region to see if the character in my game is grounded. But, when I try to run region with a bounds object that I created (displayed with the dots shown in the game), it doesn't come up with any collisions even though it is clearly intersecting other bodies.

                    Code:

                    let Engine = Matter.Engine,
                        Runner = Matter.Runner,
                        World = Matter.World,
                        Bodies = Matter.Bodies,
                        Body = Matter.Body,
                        Composite = Matter.Composite;
                    
                    let engine;
                    
                    let boxA;
                    let boxB;
                    let platforms = [];
                    
                    function setup() {
                      createCanvas(550, 400);
                    
                      // create an engine
                      engine = Engine.create();
                    
                      // create two boxes and a ground
                      boxA = Bodies.rectangle(275, 200, 80, 80, {
                        mass: 20
                      });
                      platforms.push(boxA);
                    
                      boxB = Bodies.rectangle(300, 50, 80, 80, {
                        mass: 20
                      });
                      Body.setInertia(boxB, Infinity);
                      
                      ground = Bodies.rectangle(250, 410, 810, 60, {
                        isStatic: true
                      });
                      platforms.push(ground);
                    
                      // add all of the bodies to the world
                      World.add(engine.world, [boxA, boxB, ground]);
                    
                      let runner = Runner.create();
                      Runner.run(runner, engine);
                    }
                    
                    // Using p5 to render
                    function draw() {
                      let add = Matter.Vector.add; // alias
                    
                      let leeway = {x: 0, y: 30}
                      let topLeft = {x: boxB.position.x - 40, y: boxB.position.y + 40}
                      let topRight = add(topLeft, {x: 80, y: 0});
                      let bottomLeft = add(topLeft, leeway);
                      let bottomRight = add(topRight, leeway);
                    
                      let bounds = Matter.Bounds.create(topLeft, topRight, bottomRight, bottomLeft);
                      let query = Matter.Query.region(platforms, bounds);
                      
                      console.log(Matter.Bounds.overlaps(bounds, boxA.bounds), query);
                    
                      background(51);
                      keyDown();
                      
                      drawShape(boxA);
                      drawShape(boxB);
                      drawShape(ground, 127);
                    
                      push();
                      // Show bounds
                      stroke('purple');
                      strokeWeight(10);
                      point(topLeft.x, topLeft.y);
                      point(topRight.x, topRight.y);
                      point(bottomLeft.x, bottomLeft.y);
                      point(bottomRight.x, bottomRight.y);
                      pop();
                    }
                    
                    function drawShape(body, color = 225) {
                      beginShape();
                      fill(color);
                      for (let vertice of body.vertices) {
                        vertex(vertice.x, vertice.y);
                      }
                      endShape();
                    }
                    
                    function keyPressed() {
                      let jumpHeight = 14;
                      
                      if (keyCode === UP_ARROW) {
                        Body.setVelocity(boxB, {x:boxB.velocity.x, y:-jumpHeight})
                      }
                    }
                    function keyDown() {
                      let velocity = 12;
                      let targetX = boxB.velocity.x;
                    
                      if (keyIsDown(RIGHT_ARROW)) {
                        targetX = velocity;
                      } else if (keyIsDown(LEFT_ARROW)) {
                        targetX = -velocity;
                      } else {
                        targetX = 0;
                      }
                      targetX = lerp(boxB.velocity.x, targetX, 0.1);
                      Body.setVelocity(boxB, {x: targetX, y: boxB.velocity.y});
                    }
                    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script>
                    <script src="https://cdnjs.cloudflare.com/ajax/libs/matter-js/0.18.0/matter.min.js" integrity="sha512-5T245ZTH0m0RfONiFm2NF0zcYcmAuNzcGyPSQ18j8Bs5Pbfhp5HP1hosrR8XRt5M3kSRqzjNMYpm2+it/AUX/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

                    Full code: https://replit.com/@CrazyVideoGamer/MatterQueryregion-not-working#sketch.js

                    By the way, the character is the variable boxB, and you can move with the arrow keys.

                    ANSWER

                    Answered 2022-Mar-24 at 00:20

                    The bounds object doesn't appear to be properly created. The purple p5 vertices you're rendering may be giving you a false sense of confidence, since those aren't necessarily related to what MJS sees.

                    It's actually a pretty simple fix, passing an array of vertices instead of individual arguments:

                    let bounds = Matter.Bounds.create([topLeft, topRight, bottomRight, bottomLeft]);
                    //                                ^                                          ^
                    

                    I wound up cleaning things up a bit in the process of debugging and made the collision easier to visualize without the console. Feel free to use some of this code if you need or just make the one change as you see fit.

                    const {Engine, Runner, Composite, Bodies, Body} = Matter;
                    let engine;
                    let boxA;
                    let boxB;
                    const platforms = [];
                    
                    function setup() {
                      createCanvas(550, 400);
                      engine = Engine.create();
                    
                      // create two boxes and a ground
                      boxA = Bodies.rectangle(275, 200, 80, 80, {
                        mass: 20
                      });
                      platforms.push(boxA);
                    
                      boxB = Bodies.rectangle(300, 50, 80, 80, {
                        mass: 20
                      });
                      Body.setInertia(boxB, Infinity); // TODO remove for realism
                      
                      ground = Bodies.rectangle(250, 410, 810, 60, {
                        isStatic: true
                      });
                      platforms.push(ground);
                      Composite.add(engine.world, [boxA, boxB, ground]);
                      Runner.run(Runner.create(), engine);
                    }
                    
                    function draw() {
                      const {x, y} = boxB.position;
                      const vertices = [
                        // FIXME hardcoded values for now...
                        {x: x - 40, y: y + 40},
                        {x: x + 40, y: y + 40},
                        {x: x + 40, y: y + 50},
                        {x: x - 40, y: y + 50},
                      ];
                      const bounds = Matter.Bounds.create(vertices, boxB);
                      
                      // return valaue holds the collided platform(s)
                      const collisions = Matter.Query.region(platforms, bounds);
                    
                      background(51);
                      keyDown();
                      
                      drawShape(boxA);
                      drawShape(boxB);
                      drawShape(ground, 127);
                    
                      push();
                      // Show bounds collision
                      stroke(collisions.length ? 'red' : 'purple');
                      strokeWeight(10);
                      vertices.forEach(({x, y}) => point(x, y));
                      pop();
                    }
                    
                    function drawShape(body, color=225) {
                      beginShape();
                      fill(color);
                      body.vertices.forEach(({x, y}) => vertex(x,  y));
                      endShape();
                    }
                    
                    function keyPressed() {
                      const jumpHeight = 14;
                      
                      if (keyCode === UP_ARROW) {
                        Body.setVelocity(boxB, {x: boxB.velocity.x, y: -jumpHeight})
                      }
                    }
                    
                    function keyDown() {
                      const velocity = 12;
                      let targetX = 0;
                    
                      if (keyIsDown(RIGHT_ARROW)) {
                        targetX = velocity;
                      } else if (keyIsDown(LEFT_ARROW)) {
                        targetX = -velocity;
                      }
                      
                      targetX = lerp(boxB.velocity.x, targetX, 0.1);
                      Body.setVelocity(boxB, {x: targetX, y: boxB.velocity.y});
                    }
                    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.1/p5.js"></script>
                    <script src="https://cdnjs.cloudflare.com/ajax/libs/matter-js/0.18.0/matter.min.js"></script>

                    Source https://stackoverflow.com/questions/70624648

                    Community Discussions, Code Snippets contain sources that include Stack Exchange Network

                    Vulnerabilities

                    No vulnerabilities reported

                    Install arrow

                    You can download it from GitHub.
                    You can use arrow like any standard Python library. You will need to make sure that you have a development environment consisting of a Python distribution including header files, a compiler, pip, and git installed. Make sure that your pip, setuptools, and wheel are up to date. When using pip it is generally recommended to install packages in a virtual environment to avoid changes to the system.

                    Support

                    For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .

                    DOWNLOAD this Library from

                    Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
                    over 430 million Knowledge Items
                    Find more libraries
                    Reuse Solution Kits and Libraries Curated by Popular Use Cases
                    Explore Kits

                    Save this library and start creating your kit

                    Explore Related Topics

                    Share this Page

                    share link
                    Consider Popular Date Time Utils Libraries
                    Compare Date Time Utils Libraries with Highest Support
                    Compare Date Time Utils Libraries with Highest Quality
                    Compare Date Time Utils Libraries with Highest Security
                    Compare Date Time Utils Libraries with Permissive License
                    Compare Date Time Utils Libraries with Highest Reuse
                    Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
                    over 430 million Knowledge Items
                    Find more libraries
                    Reuse Solution Kits and Libraries Curated by Popular Use Cases
                    Explore Kits

                    Save this library and start creating your kit

                    • © 2022 Open Weaver Inc.