Newer
Older
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import os
import pandas
from dash import dash, dcc, html, ctx, callback
csv_path = os.path.normpath(os.getcwd() + os.sep + os.pardir + os.sep + "api_exploration")
split_csv_path = os.path.join(csv_path, "file_segments")
df = None
APP = None
DASH_ASSETS_PATH = "dash_assets"
def initialize_data():
global df
files = os.listdir(split_csv_path)
dataframe = None
for file in os.listdir(split_csv_path):
file_path = os.path.join(split_csv_path, file)
dataframe = pandas.concat([dataframe, pandas.read_csv(file_path)]) if dataframe is not None \
else pandas.read_csv(file_path)
df = dataframe
def initialize_dash(host: str = "0.0.0.0", **kwargs):
"""
Runs the Dash server.
Args:
host: IP address of the server
kwargs: Variables which are passed down to APP.run function as named arguments.
Note:
The server IP is not actually 0.0.0.0; if the dash app is not accessible via this address, use the same port
number but replace the IP address with your local network IP instead.
"""
global APP, df
unique_developers = [dev for dev_list in df["developer"].fillna("Valve").unique() for dev in dev_list.split(",")]
unique_publishers = df["developer"].fillna("Valve").unique()
# This is ok but the results are still unsatisfactory due to the game company names containing a comma
# unique_publishers = [publisher for publisher_list in df["developer"].fillna("Valve").unique() for publisher
# unique_developers = [dev for dev_list in df["developer"].fillna("Valve").unique() for dev in dev_list.split(",")]
APP = dash.Dash(
name=__name__,
assets_folder=DASH_ASSETS_PATH,
external_stylesheets=['https://codepen.io/chriddyp/pen/bWLwgP.css']
)
APP.layout = html.Div(children=[
html.Nav(className="nav nav-pills", children=[
html.H6("STEAM-SAVVY", style={"margin-left": "30px", "width": "20%", "display": "inline-block"}),
html.A('About', className="nav-item nav-link btn", href='/apps/App1',
style={"margin-left": "300px"}),
html.A('Process paper', className="nav-item nav-link active btn", href='/apps/App2',
style={"margin-left": "150px"})
],
style={"background-color": "rgb(30,30,30)", "color": "rgb(255,255,255)"}),
html.H6("TEXT"),
html.Div(className="row", children=[
html.Div(children = [
dcc.Tabs(id="tabs_main_plots1", value="tab1", children=[
dcc.Tab(label="Genre performance", value="tab1"),
dcc.Tab(label="Game popularity", value="tab2"),
dcc.Tab(label="Company revenues", value="tab3"),
dcc.Tab(label="Market performance", value="tab4"),
],
style={'width': '80%', 'display': 'inline-block', "outline": "2px dotted black"}),
], style={'width': '48%', 'display': 'inline-block'}),
html.Div(children=[
dcc.Tabs(id="tabs_main_plots2", value="tab3", children=[
dcc.Tab(label="Developer infromation", value="Valve", children=[
dcc.Dropdown(id="developer_dropdown",
options=[{"label": developer, "value": developer} for developer in unique_developers]
)
]),
dcc.Tab(label="Publisher information", value="tab4", children= [
dcc.Dropdown(id="publisher_dropdown",
options=[{"label": publisher, "value": publisher} for publisher in unique_publishers]
),
])
],
style={'width': '48%', 'display': 'inline-block'}),
],
style={'width': '48%', 'display': 'inline-block', "outline": "2px dotted black"})
],
style={'width': '100%'}),
])
APP.run(host=host, **kwargs)
print("The server has closed!")
if __name__ == "__main__":
initialize_data()
initialize_dash()
print(csv_path)