Wprowadzenie interaktywności z danymi wejściowymi użytkownika

Interaktywność, którą widzieliśmy wcześniej z dynamiczną tabelą danych, działa w samej przeglądarce internetowej przy użyciu JavaScript i nie musi przechodzić przez funkcję server , aby zapewnić interaktywność, a jedynie przekazać samą tabelę. Jednak wiele interesujących funkcji interaktywnych wymaga przejścia server , abyśmy mogli zapewnić dla nich niestandardowe odpowiedzi. W tej sekcji pokażemy, jak dodać różne typy danych wejściowych do naszej aplikacji.

Konfigurowanie statycznych danych wejściowych użytkownika

Najpierw pokażemy, jak filtrować znaczniki czasu w danych, aby wyświetlać tylko obserwacje mieszczące się w zakresie zdefiniowanym przez użytkownika. Aby to zrobić, musimy najpierw zdefiniować cztery znaczniki czasu: minimalny, początkowy lewy limit, początkowy prawy limit i maksymalny. Te cztery wartości będą używane przez nasz widżet zakresu dat do zdefiniowania dozwolonego zakresu dla użytkownika (używane są do tego wartości minimalne i maksymalne), a także początkowego zakresu dat (używane są do tego początkowe limity lewy i prawy), który może różnić się od limitów dozwolonego zakresu. Dlatego musimy wyodrębnić takie wartości i robimy to, wykorzystując klasę TimeStamp, którą stworzyliśmy wcześniej. Zauważ, że używamy funkcji days() z pakietu lubridate (powinieneś dodać linię library(lubridate)na początku pliku. Ponieważ wystarczy, że utworzymy te obiekty tylko raz, powinny one znajdować się tuż pod kodem używanym do załadowania ORIGINAL_DATA, przed definicją obiektu ui:

DATE__MIN <-

timestamp_to_date_string.TimeStamp(min(ORIGINAL_DATA$timestamp))

DATE__MAX <-

timestamp_to_date_string.TimeStamp(max(ORIGINAL_DATA$timestamp))

DATE__END <-

timestamp_to_date_string.TimeStamp(time_to_timestamp.TimeStamp(

timestamp_to_time.TimeStamp(min(ORIGIAL_DATA$timestamp)) + days(2)))

Funkcja timestamp_to_date_string() w klasie TimeStamp nie została utworzona i dodaliśmy ją tu. Jest to bardzo proste i zostało pokazane w poniższym kodzie. Jego celem jest po prostu uzyskanie pierwszych 10 znaków TimeStamp, które odpowiadają formatowi RRRR-MM-DD:

timestamp_to_date_string.TimeStamp <- function(timestamp) {

return(substr(timestamp ,1,10))

Teraz, gdy stworzyliśmy te obiekty, możemy użyć następującego kodu do rozwinięcia obiektu ui. To, co zrobiliśmy, to zastąpienie ciągu „Options” przez wywołanie funkcji dateRangeInput(), która jest funkcją używaną do tworzenia zakresu dat, jak sugeruje nazwa. Otrzymuje jako parametry unikalny identyfikator, który będzie używany do pobierania jego reaktywnych wartości wewnątrz server  przez parametr input, pokazanego użytkownikowi label, start ,end, min i max wspomnianych wcześniej wartości, separator których chcemy użyć w polach wejściowych przeglądarki internetowej,  fomrat daty, której chcemy użyć i jaki dzień tygodnia ma się rozpocząć (0 niedziela, 1 poniedziałek itd.):

ui <- fluidPage (

titlePanel („Crytpocurrency Markets”),

sidebarLayout {

sidebarPanel (

dateRangeInput (

„date_range”,

label = paste(„Date range:”),

start = DATE_MIN,

end = DATE_END,

min = DATE_MIN,

max = DATE_MAX,

separator = „ to „ ,

format = „yyyy-mm-dd”,

weekstart = 1

)

),

mainPanel (

tabsetPanel (

tabPanel(„Simple Moiving Averages”, „Content 1”),

tabPanel („Data Overview”, fluidRow(DT :: dataTableOutput(„table”))

)

)

)

)

)

Po stronie serwera dodamy więcej logiki w wyrażeniu reaktywnym przekazanym jako parametr do funkcji datatable(). Zamiast po prostu wysyłać surową ramkę danych ORIGINAL_DATA, przefiltrujemy ją przed wysłaniem. Aby to zrobić, najpierw przypisujemy jego kopię do obiektu data i wyodrębniamy dwie wartości dat z widżetu, który utworzyliśmy w obiekcie ui , używając ich odniesień w parametrze input. Następnie sprawdzamy, czy któryś z nich różni się od ich wartości początkowych. Jeśli tak jest, aktualizujemy obiekt data tylko o te obserwacje, które mieszczą się w określonym zakresie, co osiągamy za pomocą standardowego wyboru ramki danych. Na koniec wysłaliśmy to filtrowane data do funkcji datatable() i postępowaliśmy tak jak wcześniej. Rezultatem tych zmian w ui i  server jest to, że możemy teraz filtrować daty dozwolone w dynamicznej tabeli pokazanej na karcie Data Overview, czego wcześniej nie mogliśmy zrobić. Na poniższym zrzucie ekranu pokazano działający widżet zakresu dat. Spróbuj zmienić jego daty i zobacz, jak aktualizuje się tabela dynamiczna:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *