|
using Dash |
|
using DataFrames |
|
using PlotlyJS |
|
|
|
|
|
df = DataFrame( |
|
text = ["Example text $i" for i in 1:10], |
|
classification = ["Misinformation", "Legitimate", "Misinformation", "Legitimate", "Misinformation", "Legitimate", "Misinformation", "Legitimate", "Misinformation", "Legitimate"], |
|
score = rand(0:100, 10) |
|
) |
|
|
|
app = dash() |
|
|
|
app.layout = html_div() do |
|
[ |
|
dcc_input(id="search-box", type="text", placeholder="Enter text to search for", style=Dict("width" => "100%")), |
|
html_button("Search", id="search-button", n_clicks=0), |
|
dash_datatable( |
|
id="results-table", |
|
columns=[Dict("name" => i, "id" => i) for i in names(df)], |
|
data=Dict.(pairs.(eachrow(df))), |
|
row_selectable="multi", |
|
selected_rows=[] |
|
), |
|
dcc_graph(id="score-distribution") |
|
] |
|
end |
|
|
|
callback!( |
|
app, |
|
Output("results-table", "data"), |
|
Output("score-distribution", "figure"), |
|
Input("search-button", "n_clicks"), |
|
State("search-box", "value") |
|
) do n_clicks, search_value |
|
if n_clicks > 0 && !isempty(search_value) |
|
filtered_data = filter(row -> occursin(search_value, row.text), df) |
|
data_dict = Dict.(pairs.(eachrow(filtered_data))) |
|
|
|
scores = filtered_data[!, :score] |
|
fig = plot( |
|
bar(x=1:length(scores), y=scores, marker_color="blue"), |
|
Layout(title="Score Distribution", xaxis_title="Index", yaxis_title="Score") |
|
) |
|
|
|
return data_dict, fig |
|
else |
|
empty_data = Dict.(pairs.(eachrow(DataFrame()))) |
|
empty_fig = plot( |
|
bar(x=[], y=[], marker_color="blue"), |
|
Layout(title="Score Distribution", xaxis_title="Index", yaxis_title="Score") |
|
) |
|
return empty_data, empty_fig |
|
end |
|
end |
|
|
|
run_server(app, "0.0.0.0", debug=true) |