I want to implement it on the shiny platform to remember the shape of the flow chart after I modify it. When I rename a node each time, its shape will not reset, and I can drag it to my favorite shape and click download to save it to the local png format.
Has anyone dealt with this issue before? If so, could you share how you managed to save and reload the network with the nodes in their new positions? Thank you in advance for your help!
I want to implement it on the shiny platform to remember the shape of the flow chart after I modify it. When I rename a node each time, its shape will not reset, and I can drag it to my favorite shape and click download to save it to the local png format.
Has anyone dealt with this issue before? If so, could you share how you managed to save and reload the network with the nodes in their new positions? Thank you in advance for your help!
create_flow_chart_with_weights <- function(weight_data, initial_alpha_values) {
visNetwork(nodes, edges) %>% visEdges(arrows = 'to', font = list(background = 'white')) %>% visInteraction(dragNodes = TRUE) %>% visPhysics(enabled = FALSE,solver = "forceAtlas2Based", forceAtlas2Based = list(springLength = 250, gravitationalConstant = -300, springConstant = 1.0)) %>% visOptions(highlightNearest = TRUE, nodesIdSelection = FALSE) %>% visInteraction(zoomView = FALSE) %>% visLayout(randomSeed = 123) } observe({ visNetworkProxy("weightBasedFlowChart") %>% visStorePositions() })
proxy <- dataTableProxy('weightTable') observeEvent(input$weightTable_cell_edit, { info <- input$weightTable_cell_edit rv$data[info$row, info$col] <- as.numeric(info$value)
})
observeEvent(input$renameNodes1, { if (!is.null(alpha_table_data()) && "分配的Alpha" %in% names(alpha_table_data())) { initial_alpha_values <- alpha_table_data()[, "分配的Alpha"] nodes_data <- create_nodes_data_for_weight_based_chart(rv$data, initial_alpha_values)
})
observeEvent(input$renameTable1_cell_edit, { info <- input$renameTable1_cell_edit if (!is.null(alpha_table_data()) && "分配的Alpha" %in% names(alpha_table_data())) { initial_alpha_values <- alpha_table_data()[, "分配的Alpha"]
})
create_nodes_data_for_weight_based_chart <- function(weight_data, initial_alpha_values) {
} create_flow_chart_with_weights_custom <- function(nodes_data, weight_data) {
visNetwork(nodes, edges) %>% visEdges(arrows = 'to', font = list(background = 'white')) %>% visInteraction(dragNodes = TRUE) %>% visPhysics(enabled = FALSE,solver = "forceAtlas2Based", forceAtlas2Based = list(springLength = 250, gravitationalConstant = -300, springConstant = 1.0)) %>% visOptions(highlightNearest = TRUE, nodesIdSelection = FALSE) %>% visInteraction(zoomView = FALSE) %>% visLayout(randomSeed = 123) }
observeEvent(input$savePositions, { visNetworkProxy("weightBasedFlowChart") %>% visGetPositions() })
nodePositions <- reactive({ positions <- input$weightBasedFlowChart_positions if(!is.null(positions)){ nodePositions <- do.call("rbind", lapply(positions, function(x){ data.frame(x = x$x, y = x$y)})) nodePositions$id <- names(positions) nodePositions } else { NULL } })
output$downloadFlowChart <- downloadHandler( filename = function() { paste("weight_flowchart", Sys.Date(), ".png", sep = "") }, content = function(file) {
)`