File size: 3,203 Bytes
9b612a0 e01459e 59ecc5c 9b612a0 59ecc5c e01459e 59ecc5c e01459e 59ecc5c e01459e 59ecc5c e01459e 9b612a0 e01459e 59ecc5c 9b612a0 e01459e 59ecc5c 9b612a0 59ecc5c 9b612a0 59ecc5c 9b612a0 59ecc5c e01459e 9b612a0 e01459e 9b612a0 e01459e 9b612a0 59ecc5c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
import panel as pn
from panel.template import FastListTemplate
from CyberIndexDashboard import CyberIndexDashboard
main_area = pn.Column("")
ext="External"
def main():
global main_area
pn.extension('echarts','tabulator')
pn.config.sizing_mode="stretch_width"
# Instantiate pages and add them to the pages dictionarqy
pages = {
"CEIDashboard": CyberIndexDashboard("Region","CEI","CEI Avg."),
"GCIDashboard": CyberIndexDashboard("Region","GCI","GCI Avg."),
"NCSIDashboard": CyberIndexDashboard("Region","NCSI","NCSI Avg."),
"DDLDashboard": CyberIndexDashboard("Region","DDL","DDL Avg."),
}
# Create the main area and display the first page
sidebar = None
data_source_info = pn.pane.Markdown("""
***The data describes cyber attacks split by continent***
***Data is taken from [Kaggle](https://www.kaggle.com/datasets/katerynameleshenko/cyber-security-indexes)!***
""")
# Function to show the selected page
# Define buttons to navigate between pages
#Dashboard_button = pn.widgets.Button(name="Dashboard", button_type="primary")
# Set up button click callbacks
#Dashboard_button.on_click(lambda event: show_page(pages["Dashboard"]))
#@pn.depends(x, y, color)
#def plot(xval, yval, colorval):
# return autompg.hvplot.scatter(xval, yval, c=colorval)
#sidebar = pn.Column(Dashboard_button)
#radio_button_group = pn.widgets.RadioButtonGroup(
# name='Index', options=["NCSI", 'CEI','GCI', 'DDL'],button_type='success',orientation='vertical',value='NCSI')
radio_button_group = pn.widgets.ToggleGroup(name='Index', options=['NCSI', 'CEI','GCI', 'DDL'], behavior="radio",button_type='primary',orientation='vertical')
def page_selector(radio_button_group,main_area):
print("radio_button_group.value="+radio_button_group)
main_area.clear()
main_area.append(pages[radio_button_group+"Dashboard"].view())
return pages[radio_button_group+"Dashboard"]
#p = pn.bind(page_selector,radio_button_group,main_area)
def update(event):
global main_area
main_area.clear()
main_area.append(pages[radio_button_group.value+"Dashboard"].view())
radio_button_group.param.watch(update,'value',onlychanged=True)
radio_button_group.param.trigger('value')
sidebar = pn.Column(pn.Row(radio_button_group),pn.Row(data_source_info))
#main_area = pn.Column(pages["NCSIDashboard"].view())
def show_page(page_instance,main_area):
globals
main_area.clear()
main_area.append(page_instance.view())
return main_area
#main_area = pn.bind(show_page,a_page,main_area)
# Create the Material Template and set the sidebar and main area
template = FastListTemplate(
title="Cyber Operations Instances",
sidebar=[sidebar],
main=[main_area],
)
pn.state.cache["template"] = template
pn.state.cache["modal"] = template.modal
# Serve the Panel app
template.servable()
main() |