Реактивный вызов не работает с тегами $ img (src =?) - PullRequest
0 голосов
/ 16 января 2019

Предыстория: для моего проекта я создаю панель управления, которая позволяет легко получить доступ к информации об отеле. Теперь я хочу, чтобы это работало так, что если рейтинг выше 9, он получает 4,5 звезды. Если он выше 8, он получает 4 звезды. и так далее. Теперь я не бог кода, так что для того, чтобы продвинуться дальше, это заняло у меня много часов, но если я посмотрю на все виды разных тегов, то все будет выглядеть так, как будто я это исправил. Но это не покажет изображение. Что не так с моим кодом?

Проблема: несмотря на то, что я сделал часть, где он заполняет код для 4 звезд и т. Д., Он не работает. Я даже проверил это в консоли. Часть, в которой он выбирает файл .PNG на основе оценки отеля, дает правильный файл и возвращает его как «5stars.png», как теги, необходимые $ img. Я даже сделал небольшой код, похожий на этот: теги $ img (src = "5stars.png", height = 50, width = 200), который работает так, но я хочу, чтобы он был "реактивным", поэтому он показывает другое изображение для разных рейтингов. Так почему же это не работает, даже если консоль говорит, что заменяет textOutput ("hotelImage") на правильный текст?

Код моего тела:

tags$img(src = textOutput("hotelImage"), height = 50, width = 200)

Где textOutput определяется следующим образом:

output$hotelImage <- renderText({
 if(ratingGiver() > 9){
   '"5stars.png"'
 }else if (ratingGiver() > 8) {
   '"45stars.png"'
 }else if (ratingGiver() > 7) {
   '"4stars.png"'
 }else if (ratingGiver() > 6) {
   '"35stars.png"'
 }else if (ratingGiver() > 5) {
   '"3stars.png"'
 }else if (ratingGiver() > 4) {
   '"25stars.png"'
 }else if (ratingGiver() > 3) {
   '"2stars.png"'
 }else if (ratingGiver() > 2) {
   '"15stars.png"'
 }else if (ratingGiver() > 1) {
   '"1stars.png"'
 }else{
   '"0stars.png"'
 }
})

Я перепробовал все возможные методы, от реактивов до renderImage. Возможно, пропустил несколько, но я действительно искал это.

Я ожидал, что для отеля, который я выберу, он проходит через if и выбирает правильное значение, затем заполняет правильный путь к файлу, например, в файле src = "5stars.png", который затем загружает изображение , С этим кодом он должен работать, потому что я проверил и вставил «5stars.png» в бит textOutput («hotelImage»). Я проверил, дав ему тип textOutput ("hotelImage"). Но по некоторым причинам это все еще дает мне изображение X. Что неверно? Это вставляет правильные вещи .. Мне нужен другой код?

Edit:

После некоторого комментария я получил совет использовать Reactive с renderImage для plotOutput. Что я тогда опробовал: Ниже вы можете увидеть реактив, который я сделал для этого.

 ReactiveImage <- reactive({
    if(ratingGiver() > 9){
      '"5stars.png"'
    } else if (ratingGiver() > 8) {
      '"45stars.png"'
    }else if (ratingGiver() > 7) {
      '"4stars.png"'
    }else if (ratingGiver() > 6) {
      '"35stars.png"'
    }else if (ratingGiver() > 5) {
      '"3stars.png"'
    }else if (ratingGiver() > 4) {
      '"25stars.png"'
    }else if (ratingGiver() > 3) {
      '"2stars.png"'
    }else if (ratingGiver() > 2) {
      '"15stars.png"'
    }else if (ratingGiver() > 1) {
      '"1stars.png"'
    }else{
      '"0stars.png"'
    }
   })

Ниже вы можете увидеть вывод для renderImage:

output$RenderImage2 <- renderImage({
    tags$img(src = ReactiveImage(), height = 50, width = 200)
  })

и код для тела:

plotOutput("RenderImage"),

К сожалению, ни один из приведенных выше кодов, похоже, не решил мою проблему. Я также попытался поместить его в ObventEvent, чтобы посмотреть, может ли это сработать. Это не так, но я все равно покажу код, потому что, возможно, это уловка, но я допустил ошибку:

observeEvent(input$hotelMap_marker_click[[1]], { output$RenderImage2 <- 
renderImage({
    tags$img(src = ReactiveImage(), height = 50, width = 200)
  })
  })

1 Ответ

0 голосов
/ 17 января 2019

Ответ

После небольшого поиска я закончил с этим: Сервер:

 output$Imagen <- renderImage({
      if(ratingGiver() > 9){
        Leg <- "www/5stars.png"
      } else if (ratingGiver() > 8) {
        Leg <- "www/45stars.png"
      }else if (ratingGiver() > 7) {
        Leg <- "www/4stars.png"
      }else if (ratingGiver() > 6) {
        Leg <- "www/35stars.png"
      }else if (ratingGiver() > 5) {
        Leg <- "www/3stars.png"
      }else if (ratingGiver() > 4) {
        Leg <- "www/25stars.png"
      }else if (ratingGiver() > 3) {
        Leg <- "www/2stars.png"
      }else if (ratingGiver() > 2) {
        Leg <- "www/15stars.png"
      }else if (ratingGiver() > 1) {
        Leg <- "www/1stars.png"
      }else{
        Leg <- "www/0byebitchgone.png"
      }
      list(src=Leg, height = 90, width = 380)

    }, deleteFile = FALSE)

Кузов:

imageOutput(outputId="Imagen")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...