Skip to content

Commit ea30800

Browse files
Refactor dropdown data retrieval in explore_paths.py for improved clarity and efficiency
1 parent 284e07e commit ea30800

File tree

1 file changed

+26
-17
lines changed

1 file changed

+26
-17
lines changed

src/pages/explore_paths.py

+26-17
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,36 @@ def description(q=None):
3838
description=description,
3939
)
4040

41+
def get_dropdown_data():
42+
global asn_anomalies, pivotFrames, changeDf
43+
# sites
44+
unique_sites = pd.unique(asn_anomalies[['src_netsite', 'dest_netsite']].values.ravel()).tolist()
45+
unique_sites.extend(pivotFrames['path changed'].tag.unique().tolist())
46+
47+
sitesDropdownData = [{"label": str(a), "value": a} for a in sorted(list(set(unique_sites)))]
48+
49+
# ASNs
50+
unique_asns = pd.unique(asn_anomalies['asn_list'].explode()).tolist()
51+
sortedDf = changeDf[changeDf['jumpedFrom'] > 0].sort_values('count')
52+
asnsDropdownData = list(set(sortedDf['diff'].unique().tolist() +
53+
sortedDf['jumpedFrom'].unique().tolist()))
54+
asnsDropdownData = list(set(asnsDropdownData + unique_asns))
55+
asnsDropdownData = [{"label": str(a), "value": a} for a in sorted(asnsDropdownData)]
56+
57+
print(f"Unique sites: {len(sitesDropdownData)}, Unique ASNs: {len(asnsDropdownData)}")
58+
59+
return sitesDropdownData, asnsDropdownData
60+
4161

4262
def layout(**other_unknown_query_strings):
4363
global frames, pivotFrames, alarmsInst, selected_keys, changeDf
4464
period_to_display = hp.defaultTimeRange(days=2, datesOnly=True)
45-
sitesDropdownData, asnsDropdownData, sankey_fig, dataTables = load_initial_data(selected_keys, changeDf)
65+
66+
sankey_fig, dataTables = load_initial_data(selected_keys, changeDf)
4667
heatmap_fig = create_anomalies_heatmap()
68+
69+
sitesDropdownData, asnsDropdownData = get_dropdown_data()
70+
4771
return dbc.Row([
4872
dbc.Row([
4973
dbc.Col([
@@ -137,9 +161,6 @@ def colorMap(eventTypes):
137161

138162

139163
def load_initial_data(selected_keys, changeDf):
140-
sitesDropdownData = []
141-
asnsDropdownData = []
142-
anomalous_asns = []
143164
dataTables = []
144165

145166
for event in sorted(selected_keys):
@@ -153,26 +174,14 @@ def load_initial_data(selected_keys, changeDf):
153174

154175
for event in sorted(selected_keys):
155176
df = pivotFrames[event]
156-
157-
if 'asn_list' in df.columns:
158-
anomalous_asns = list(df['asn_list'].explode().unique())
159177

160178
if len(df) > 0:
161179
dataTables.append(generate_tables(frames[event], df, event, alarmsInst))
162180

163-
sortedDf = changeDf[changeDf['jumpedFrom'] > 0].sort_values('count')
164-
asnsDropdownData = list(set(sortedDf['diff'].unique().tolist() +
165-
sortedDf['jumpedFrom'].unique().tolist()))
166-
asnsDropdownData = list(set(asnsDropdownData + anomalous_asns)) if 'anomalous_asns' in locals() else asnsDropdownData
167-
asnsDropdownData = sorted(asnsDropdownData)
168-
169-
for s in sorted(pivotFrames['path changed'].tag.unique().tolist()):
170-
sitesDropdownData.append({"label": s.upper(), "value": s.upper()})
171-
172181
changeDf.loc[changeDf['jumpedFrom'] == 0] = 'No data'
173182
fig = buildSankey([], [], changeDf)
174183

175-
return [sitesDropdownData, asnsDropdownData, fig, dataTables]
184+
return [fig, dataTables]
176185

177186

178187
@dash.callback(

0 commit comments

Comments
 (0)