Release 0.9.0
This commit is contained in:
190
bot/modules/webserver/widgets/webserver_status_widget.py
Normal file
190
bot/modules/webserver/widgets/webserver_status_widget.py
Normal file
@@ -0,0 +1,190 @@
|
||||
from bot import loaded_modules_dict
|
||||
from os import path, pardir
|
||||
|
||||
module_name = path.basename(path.normpath(path.join(path.abspath(__file__), pardir, pardir)))
|
||||
widget_name = path.basename(path.abspath(__file__))[:-3]
|
||||
|
||||
|
||||
def select_view(*args, **kwargs):
|
||||
module = args[0]
|
||||
dispatchers_steamid = kwargs.get('dispatchers_steamid', None)
|
||||
|
||||
current_view = module.get_current_view(dispatchers_steamid)
|
||||
if current_view == "options":
|
||||
options_view(module, dispatchers_steamid=dispatchers_steamid)
|
||||
else:
|
||||
frontend_view(module, dispatchers_steamid=dispatchers_steamid)
|
||||
|
||||
|
||||
def frontend_view(*args, **kwargs):
|
||||
module = args[0]
|
||||
dispatchers_steamid = kwargs.get("dispatchers_steamid", None)
|
||||
|
||||
template_frontend = module.templates.get_template('webserver_status_widget/view_frontend.html')
|
||||
template_servertime = module.templates.get_template('webserver_status_widget/control_servertime.html')
|
||||
|
||||
template_options_toggle = module.templates.get_template('webserver_status_widget/control_switch_view.html')
|
||||
template_options_toggle_view = module.templates.get_template(
|
||||
'webserver_status_widget/control_switch_options_view.html'
|
||||
)
|
||||
|
||||
component_logged_in_users = module.templates.get_template('webserver_status_widget/component_logged_in_users.html')
|
||||
|
||||
try:
|
||||
server_is_online = module.dom.data.get("module_telnet").get("server_is_online", True)
|
||||
except AttributeError:
|
||||
server_is_online = True
|
||||
|
||||
current_view = module.get_current_view(dispatchers_steamid)
|
||||
webserver_logged_in_users = (
|
||||
module.dom.data
|
||||
.get(module.get_module_identifier(), {})
|
||||
.get("webserver_logged_in_users", [])
|
||||
)
|
||||
|
||||
data_to_emit = module.template_render_hook(
|
||||
module,
|
||||
template=template_frontend,
|
||||
component_logged_in_users=module.template_render_hook(
|
||||
module,
|
||||
template=component_logged_in_users,
|
||||
webserver_logged_in_users=webserver_logged_in_users
|
||||
),
|
||||
options_toggle=module.template_render_hook(
|
||||
module,
|
||||
template=template_options_toggle,
|
||||
control_switch_options_view=module.template_render_hook(
|
||||
module,
|
||||
template=template_options_toggle_view,
|
||||
steamid=dispatchers_steamid,
|
||||
options_view_toggle=(current_view == "frontend")
|
||||
),
|
||||
control_servertime=module.template_render_hook(
|
||||
module,
|
||||
template=template_servertime,
|
||||
time=module.dom.data.get("module_telnet", {}).get("last_recorded_servertime", None),
|
||||
)
|
||||
),
|
||||
server_is_online=server_is_online
|
||||
)
|
||||
|
||||
module.webserver.send_data_to_client_hook(
|
||||
module,
|
||||
payload=data_to_emit,
|
||||
data_type="widget_content",
|
||||
clients=[dispatchers_steamid],
|
||||
target_element={
|
||||
"id": "webserver_status_widget",
|
||||
"type": "table",
|
||||
"selector": "body > main > div"
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def options_view(*args, **kwargs):
|
||||
module = args[0]
|
||||
dispatchers_steamid = kwargs.get("dispatchers_steamid", None)
|
||||
|
||||
template_frontend = module.templates.get_template('webserver_status_widget/view_options.html')
|
||||
template_servertime = module.templates.get_template('webserver_status_widget/control_servertime.html')
|
||||
|
||||
template_options_toggle = module.templates.get_template('webserver_status_widget/control_switch_view.html')
|
||||
template_options_toggle_view = module.templates.get_template(
|
||||
'webserver_status_widget/control_switch_options_view.html'
|
||||
)
|
||||
|
||||
current_view = module.get_current_view(dispatchers_steamid)
|
||||
|
||||
data_to_emit = module.template_render_hook(
|
||||
module,
|
||||
template=template_frontend,
|
||||
options_toggle=module.template_render_hook(
|
||||
module,
|
||||
template=template_options_toggle,
|
||||
control_switch_options_view=module.template_render_hook(
|
||||
module,
|
||||
template=template_options_toggle_view,
|
||||
steamid=dispatchers_steamid,
|
||||
options_view_toggle=(current_view == "frontend")
|
||||
),
|
||||
control_servertime=module.template_render_hook(
|
||||
module,
|
||||
template=template_servertime,
|
||||
time=module.dom.data.get("module_telnet").get("last_recorded_servertime", None),
|
||||
)
|
||||
),
|
||||
widget_options=module.webserver.options
|
||||
)
|
||||
|
||||
module.webserver.send_data_to_client_hook(
|
||||
module,
|
||||
payload=data_to_emit,
|
||||
data_type="widget_content",
|
||||
clients=[dispatchers_steamid],
|
||||
target_element={
|
||||
"id": "webserver_status_widget",
|
||||
"type": "table",
|
||||
"selector": "body > main > div"
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def update_servertime(*args, **kwargs):
|
||||
module = args[0]
|
||||
|
||||
template_servertime = module.templates.get_template('webserver_status_widget/control_servertime.html')
|
||||
servertime_view = module.template_render_hook(
|
||||
module,
|
||||
template=template_servertime,
|
||||
time=module.dom.data.get("module_telnet").get("last_recorded_servertime", None)
|
||||
)
|
||||
|
||||
module.webserver.send_data_to_client_hook(
|
||||
module,
|
||||
payload=servertime_view,
|
||||
data_type="element_content",
|
||||
method="replace",
|
||||
clients=module.webserver.connected_clients.keys(),
|
||||
target_element={
|
||||
"id": "server_status_widget_servertime"
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def update_logged_in_users(*args, **kwargs):
|
||||
module = args[0]
|
||||
updated_values_dict = kwargs.get("updated_values_dict", None)
|
||||
|
||||
webserver_logged_in_users = updated_values_dict.get("webserver_logged_in_users", [])
|
||||
|
||||
component_logged_in_users = module.templates.get_template('webserver_status_widget/component_logged_in_users.html')
|
||||
component_logged_in_users_view = module.template_render_hook(
|
||||
module,
|
||||
template=component_logged_in_users,
|
||||
webserver_logged_in_users=webserver_logged_in_users
|
||||
)
|
||||
|
||||
module.webserver.send_data_to_client_hook(
|
||||
module,
|
||||
payload=component_logged_in_users_view,
|
||||
data_type="element_content",
|
||||
method="replace",
|
||||
clients=module.webserver.connected_clients.keys(),
|
||||
target_element={
|
||||
"id": "server_status_widget_logged_in_users"
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
widget_meta = {
|
||||
"description": "shows all users with an active session for the webinterface and some other stats",
|
||||
"main_widget": select_view,
|
||||
"handlers": {
|
||||
"module_webserver/visibility/%steamid%/current_view": select_view,
|
||||
"module_webserver/webserver_logged_in_users": update_logged_in_users,
|
||||
"module_telnet/last_recorded_servertime": update_servertime
|
||||
},
|
||||
"enabled": True
|
||||
}
|
||||
|
||||
loaded_modules_dict["module_" + module_name].register_widget(widget_name, widget_meta)
|
||||
Reference in New Issue
Block a user