mirror of
https://github.com/bellingcat/sugartrail.git
synced 2026-06-08 03:28:31 +03:00
added download button to dashboard
This commit is contained in:
2
Procfile
2
Procfile
@@ -1 +1 @@
|
||||
web: voila --port=$PORT --no-browser --Voila.ip=0.0.0.0 dashboard/Sugartrail.ipynb --VoilaConfiguration.file_whitelist="['favicon.ico']"
|
||||
web: voila --port=$PORT --no-browser --Voila.ip=0.0.0.0 dashboard/Sugartrail.ipynb --VoilaConfiguration.file_whitelist="['.*']"
|
||||
|
||||
BIN
assets/networks/.DS_Store
vendored
BIN
assets/networks/.DS_Store
vendored
Binary file not shown.
@@ -17,7 +17,7 @@
|
||||
"source": [
|
||||
"from sugartrail import mapview, api, base\n",
|
||||
"import ipywidgets as widgets\n",
|
||||
"from IPython.display import display\n",
|
||||
"from IPython.display import display, HTML\n",
|
||||
"import requests\n",
|
||||
"import pandas as pd"
|
||||
]
|
||||
@@ -137,8 +137,8 @@
|
||||
" else:\n",
|
||||
" init_button.disabled=False\n",
|
||||
" company_text.disabled=False\n",
|
||||
" auth_button.disabled=False\n",
|
||||
" API_input.disabled=False\n",
|
||||
"# auth_button.disabled=False\n",
|
||||
"# API_input.disabled=False\n",
|
||||
" init_status.value = u'\\u274c: Initialisation Failed. No records for company: ' + str(company_text.value) + ' found.'\n",
|
||||
"\n",
|
||||
"display(company_text, init_button, init_status)"
|
||||
@@ -215,6 +215,18 @@
|
||||
"accordion_data = widgets.Accordion(children=[tab])\n",
|
||||
"accordion_data.set_title(0, 'Data')\n",
|
||||
"\n",
|
||||
"html_buttons = '''<html>\n",
|
||||
"<head>\n",
|
||||
"<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n",
|
||||
"</head>\n",
|
||||
"<body>\n",
|
||||
"<a href=\"{filename}\" download=\"{filename}\">\n",
|
||||
"<button class=\"p-Widget jupyter-widgets jupyter-button widget-button\">Download Network</button>\n",
|
||||
"</a>\n",
|
||||
"</body>\n",
|
||||
"</html>\n",
|
||||
"'''\n",
|
||||
"\n",
|
||||
"def generate_map():\n",
|
||||
" map_data,path_table = mapview.build_map(network, clear_widget=False) \n",
|
||||
" hbox_map = widgets.HBox([path_table])\n",
|
||||
@@ -229,8 +241,14 @@
|
||||
" with tab.children[2]:\n",
|
||||
" display(pd.DataFrame(network.officer_ids))\n",
|
||||
" with tab.children[3]:\n",
|
||||
" display(pd.DataFrame(network.companies)) \n",
|
||||
" display(pd.DataFrame(network.companies))\n",
|
||||
" file = str(company_text.value) + '.json'\n",
|
||||
" network.save(file, \"./\")\n",
|
||||
" html_button = html_buttons.format(filename=file)\n",
|
||||
" with download_link:\n",
|
||||
" display(HTML(html_button))\n",
|
||||
"\n",
|
||||
"download_link = widgets.Output()\n",
|
||||
"display(build_map_button, map_container)"
|
||||
]
|
||||
},
|
||||
@@ -253,6 +271,16 @@
|
||||
"source": [
|
||||
"accordion_data"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "9224dce5",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"download_link"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
||||
@@ -92,10 +92,10 @@ class Network:
|
||||
else:
|
||||
print("No input provided. Please provide either officer_id, company_id or address value as input.")
|
||||
|
||||
def save(self, filename):
|
||||
def save(self, filename, location='../assets/networks/'):
|
||||
network_data = {k: v for k, v in self.__dict__.items() if k != 'hop' and k != 'file'}
|
||||
saved_network = json.dumps(network_data)
|
||||
f = open(f'../assets/networks/{filename}', 'w')
|
||||
f = open(f'{filename}', 'w')
|
||||
f.write(saved_network)
|
||||
f.close
|
||||
|
||||
|
||||
Reference in New Issue
Block a user