Я пытаюсь получить таблицу данных (DT) для прокрутки к нужной строке / строке при наведении курсора на точку на карте.Я могу сделать что-то, например, выбрать строку, но не могу понять, как сделать Y-прокрутку с датой для правильной записи.Я пытаюсь сделать это без подкачки страниц, так как моя таблица данных использует подмножества и в целом не так велика.
Я делаю это в R / Shiny / DT, мой опыт работы с javascript равен 0. Это сообщение, похоже, пытается сделать то же самое, за исключением того, что в качестве примера используется начальная загрузка таблицы вместо реакции насобытия за пределами изначально загруженной таблицы.Я не понимаю, как бы я сделал таблицы прокрутка реагировать на события пользователя.
R Shiny - Прокрутка до заданной строки данных с обратным вызовом JavaScript
Продукт предназначен для внутреннего (академического) использования для ускорения манипулирования данными и проверки ошибок.
#Attempt at datatable scrollable, workable example
library(shiny)
library(leaflet)
library(DT)
data("mtcars")
samp_data = cbind(mtcars,mtcars,mtcars)
samp_data[2] = 'just some string thats often quite long and will take multiple lines on a table draw,
one problem I have is that if I do add "scroller = T" to the options list in the renderDT call,
is that this line will collapse into a single line and create a very long horizonal entry.'
ui = fillPage(
fillRow( flex = 1, width = '100%', height = '80%',
leafletOutput("map", width = '100%', height = "100%")
),
fillRow( width = '100%', height='20%', flex = 1,
# style = "overflow-y: auto; overflow-x: auto;",
div( DTOutput('db_info', width="100%", height="100%"), style = "font-size:85%")
)
)
server = shinyServer(function(input, output, session) {
output$map = renderLeaflet( leaflet(options = leafletOptions(zoomControl = FALSE)) %>% addTiles() %>% addMiniMap(zoomLevelFixed=2, toggleDisplay=T) )
# output$map = renderLeaflet( leaflet(options = leafletOptions(zoomControl = FALSE)) %>% addTiles() %>% addMiniMap(zoomLevelFixed=2, toggleDisplay=T) )
#For some reason the first draw is wrong
output$db_info <- renderDT( samp_data,
class = 'cell-border stripe',
# extensions = 'Scroller',
rownames = F,
server = F,
options = list(
dom = 't', # dom 't' is a specific option
autoWidth = T,
scrollX = T,
scrollY = '15vh',
scrollCollapse = T,
# scroller = T,
# paging = F,
# initComplete = JS('function() {
# $(this.api().table().row(4)).addClass("selected");
# this.api().table().row(4).scrollTo();}'),
columnDefs = list(list(
width = '500px', targets = c(1) #sets width of citations, need autoWidth=T and scrollX=T to work
))# END columnDefs
)# End options list
)# END RENDER DATA TABLE
#some event on map doesn't really matter for example, hardcode for now
#observeEvent({
#This is where I would like to scroll to the appropriate row in the datatable
# dataTableProxy("db_info", session = session)
# selectRows(c(4,6)) %>%
# selectPage(which(input$db_info_rows_all == c(4,6)) %/% input$db_info_state$length + 1)
# callback = JS('.scroller.toPosition( 4 );')
# dataTableProxy('db_info', session=session) %>% selectRows(c(5,6))
#})
})
shinyApp(ui, server)
Я добавил пример сценария, в котором я пытался проработать некоторые решения.У меня не было ни намека на успех однако.В конце я хотел бы автоматически прокрутить часть таблицы, когда пользователь нажимает или наводит курсор на соответствующую точку на карте.Я могу реализовать это позже достаточно легко, если смогу проработать взаимодействие с таблицей.В этом примере я на самом деле не использую наблюдателя, я просто пытаюсь понять, смогу ли я вообще что-то случиться.
Спасибо за любую помощь!