热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

有没有一种方法可以在反应/观察中使用嵌套的reactPoll来绘制依赖于DB和UI更改的图

对于我当前的需求,我需要绘制一些我从mongodb中获取的数据的图表,并且我正在使用reactPo

对于我当前的需求,我需要绘制一些我从mongodb中获取的数据的图表,并且我正在使用reactPoll到db来监视db中的更改。除此之外,我现在想在UI上添加一个日期过滤器,根据该过滤器情节将发生变化,因为我需要在输入日期输入reactvalue,但我无法实现它。在调试时,我发现嵌套的Reactor可能无法在内部使用reactPoll,因为reactPoll不会离开进程,因此输入值的更改不会影响reactPoll监视的数据。
这是我尝试过的代码的必需部分:

ui.R

shinyUI(fluidPage(
# Application title
titlePanel("ML API DASHBOARD"),fluidRow(
column(6,h4("API Status"),textOutput("checkAPIStatus")),column(6,h4("Daily Batch Count By Status"),dateRangeInput(inputId="daterange",label="Pick a Date Range:",start = Sys.Date()-30,end = Sys.Date()),plotOutput("BatchPlotByStatus"))
)
)

server.R

## COMPONENT 2: BatchPlotByStatus
checkNewBatchPlot <- function(){
coll = mongo(collection = mongocollection,url = mongourl)
# coll$count()
req(input$daterange)
print(input$daterange)
strWatch <- paste(as.character(coll$find('{}',fields = '{"_id":0,"End":1}',sort = '{"End":-1}',limit = 1)),as.character(input$daterange[1]),as.character(input$daterange[2]))
# here originially db change was supposed to get rerurned,# but I am returning values of daterange input along with change in db just to check change in date here itself,# but it was a bad idea and didn't work
print(strWatch)
strWatch
}
getFilteredData <- function(df){
print(colnames(df))
return(subset(df,as.Date.character(Date,format = "%m/%d/%Y") > as.character(format(input$daterange[1]),"%m/%d/%Y"),))
# currently only using startdate to check change in value
}
getNewBatchCompleted <- function(){
coll = mongo(collection = mongocollection,url = mongourl)
df = processBatchStatusData(coll$find())
df = df[,c('BatchNo','StartDate_IST','EndDate_IST','Status')]
df$StartDate_IST = format(as.Date(df$StartDate_IST),'%m/%d/%Y')
df2 = df %>%
group_by(Status,StartDate_IST) %>%
summarise(Count = n())
names(df2) = c('Status','Date','Count')
print(nrow(df2))
df2 <- getFilteredData(df2)
print(nrow(df2))
df2
}
plotData <- reactivePoll(intervalMillis = 5000,session = session,checkFunc = checkNewBatchPlot,valueFunc = getNewBatchCompleted)
batchPlot <- reactiveValues(
data = reactivePoll(intervalMillis = 5000,valueFunc = getNewBatchCompleted)
)
observe({
print("observe")
req(input$daterange)
print(batchPlot$data())
#batchPlot$data() <- batchPlot$data()
batchPlot$data()
})
#checkDateFilter <- function(){
# return(as.integer(input$daterange[1]) + as.integer(input$daterange[2]))
#}
output$BatchPlotByStatus <- renderPlot({
ggplot(batchPlot$data(),aes(x = Date,y = Count,group = Status)) +
geom_point(aes(color = Status)) +
geom_line(aes(color = Status)) +
geom_label(aes(label=Count,fill = Status)) +
# geom_text_repel(aes(label=Count)) +
theme(axis.text.x = element_text(angle = 90,hjust = 1)) +
xlab('Date(MM/DD/YYYY)')+
ylab('No.of Batches')
})

要绘制的最终数据如下:

Status Date Count

1 FAILURE 10/14/2019 2
2 FAILURE 10/15/2019 1
3 FAILURE 10/16/2019 4
4 FAILURE 10/22/2019 1
5 FAILURE 10/29/2019 3
6 FAILURE 10/30/2019 1
7 FAILURE 11/12/2019 4
8 SUCCESS 10/16/2019 1
9 SUCCESS 10/30/2019 5
10 SUCCESS 10/31/2019 12
11 SUCCESS 11/01/2019 20
12 SUCCESS 11/04/2019 22
13 SUCCESS 11/05/2019 12

我尝试了很多组合,但未能成功获得预期的结果。任何建议都会有很大帮助。



上面显示的代码是完全正确的并且可以正常运行。如果我们在ui.R中使用SubmitButton,则嵌套的reactPoll停止运行,这是SubmitButton的内部问题。我只是将submitButton更改为actionButton,事情开始按预期正常工作。


推荐阅读
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 检查在所有可能的“?”替换中,给定的二进制字符串中是否出现子字符串“10”带 1 或 0 ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 如何将Python与Excel高效结合:常用操作技巧解析
    本文深入探讨了如何将Python与Excel高效结合,涵盖了一系列实用的操作技巧。文章内容详尽,步骤清晰,注重细节处理,旨在帮助读者掌握Python与Excel之间的无缝对接方法,提升数据处理效率。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
author-avatar
gloriamm_520
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有