ui: add material icons to page titles
Browse files- apps/ciq_2g_generator.py +1 -1
- apps/ciq_3g_generator.py +1 -1
- apps/ciq_4g_generator.py +1 -1
- apps/ciq_verification.py +1 -1
- apps/clustering.py +1 -1
- apps/core_dump_page.py +1 -1
- apps/database_page.py +1 -1
- apps/dbm_watt_calculator.py +1 -1
- apps/distance.py +1 -1
- apps/dump_analysis.py +1 -1
- apps/dump_compare.py +1 -1
- apps/fnb_parser.py +1 -1
- apps/gps_converter.py +1 -1
- apps/import_physical_db.py +1 -1
- apps/kpi_analysis/anomalie.py +1 -1
- apps/kpi_analysis/gsm_capacity.py +1 -1
- apps/kpi_analysis/gsm_lac_load.py +1 -1
- apps/kpi_analysis/lcg_analysis.py +1 -1
- apps/kpi_analysis/lte_capacity.py +1 -1
- apps/kpi_analysis/lte_drop_trafic.py +1 -1
- apps/kpi_analysis/trafic_analysis.py +1 -1
- apps/kpi_analysis/wbts_capacty.py +1 -1
- apps/kpi_analysis/wcel_capacity.py +1 -1
- apps/multi_points_distance_calculator.py +1 -1
- apps/parameters_distribution.py +1 -1
- apps/sector_kml_generator.py +1 -1
- apps/ue_capability_parser.py +1 -1
- documentations/index_doc.py +1 -1
apps/ciq_2g_generator.py
CHANGED
|
@@ -5,7 +5,7 @@ import streamlit as st
|
|
| 5 |
|
| 6 |
from queries.process_ciq_2g import generate_ciq_2g_excel, generate_free_bcf_excel
|
| 7 |
|
| 8 |
-
st.title("CIQ 2G Generator")
|
| 9 |
st.markdown(
|
| 10 |
"""
|
| 11 |
Génère les exports CIQ 2G à partir du dump OML + CIQ brut.
|
|
|
|
| 5 |
|
| 6 |
from queries.process_ciq_2g import generate_ciq_2g_excel, generate_free_bcf_excel
|
| 7 |
|
| 8 |
+
st.title(":material/description: CIQ 2G Generator")
|
| 9 |
st.markdown(
|
| 10 |
"""
|
| 11 |
Génère les exports CIQ 2G à partir du dump OML + CIQ brut.
|
apps/ciq_3g_generator.py
CHANGED
|
@@ -5,7 +5,7 @@ import streamlit as st
|
|
| 5 |
|
| 6 |
from queries.process_ciq_3g import generate_ciq_3g_excel
|
| 7 |
|
| 8 |
-
st.title("CIQ 3G Generator")
|
| 9 |
st.markdown(
|
| 10 |
"""
|
| 11 |
Génère les exports CIQ 3G (WBTS + WCEL) à partir du CIQ brut.
|
|
|
|
| 5 |
|
| 6 |
from queries.process_ciq_3g import generate_ciq_3g_excel
|
| 7 |
|
| 8 |
+
st.title(":material/description: CIQ 3G Generator")
|
| 9 |
st.markdown(
|
| 10 |
"""
|
| 11 |
Génère les exports CIQ 3G (WBTS + WCEL) à partir du CIQ brut.
|
apps/ciq_4g_generator.py
CHANGED
|
@@ -5,7 +5,7 @@ import streamlit as st
|
|
| 5 |
|
| 6 |
from queries.process_ciq_4g import generate_ciq_4g_excel
|
| 7 |
|
| 8 |
-
st.title("CIQ 4G Generator")
|
| 9 |
st.markdown(
|
| 10 |
"""
|
| 11 |
Génère les exports CIQ 4G à partir du CIQ brut.
|
|
|
|
| 5 |
|
| 6 |
from queries.process_ciq_4g import generate_ciq_4g_excel
|
| 7 |
|
| 8 |
+
st.title(":material/description: CIQ 4G Generator")
|
| 9 |
st.markdown(
|
| 10 |
"""
|
| 11 |
Génère les exports CIQ 4G à partir du CIQ brut.
|
apps/ciq_verification.py
CHANGED
|
@@ -19,7 +19,7 @@ from queries.verify_ciq import (
|
|
| 19 |
verify_lte,
|
| 20 |
)
|
| 21 |
|
| 22 |
-
st.title("
|
| 23 |
st.markdown(
|
| 24 |
"""
|
| 25 |
Vérifiez que les paramètres CIQ correspondent aux valeurs du dump OML.
|
|
|
|
| 19 |
verify_lte,
|
| 20 |
)
|
| 21 |
|
| 22 |
+
st.title(":material/fact_check: CIQ Verification")
|
| 23 |
st.markdown(
|
| 24 |
"""
|
| 25 |
Vérifiez que les paramètres CIQ correspondent aux valeurs du dump OML.
|
apps/clustering.py
CHANGED
|
@@ -132,7 +132,7 @@ def to_excel(df: pd.DataFrame) -> bytes:
|
|
| 132 |
return output.getvalue()
|
| 133 |
|
| 134 |
|
| 135 |
-
st.title("Automatic Site Clustering App")
|
| 136 |
|
| 137 |
# Add description
|
| 138 |
st.write(
|
|
|
|
| 132 |
return output.getvalue()
|
| 133 |
|
| 134 |
|
| 135 |
+
st.title(":material/hub: Automatic Site Clustering App")
|
| 136 |
|
| 137 |
# Add description
|
| 138 |
st.write(
|
apps/core_dump_page.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
import pandas as pd
|
| 2 |
import streamlit as st
|
| 3 |
|
| 4 |
-
st.title("Dump Core Parsing")
|
| 5 |
|
| 6 |
st.write(
|
| 7 |
"""This app allows you to parse core dump files int TXT format,
|
|
|
|
| 1 |
import pandas as pd
|
| 2 |
import streamlit as st
|
| 3 |
|
| 4 |
+
st.title(":material/terminal: Dump Core Parsing")
|
| 5 |
|
| 6 |
st.write(
|
| 7 |
"""This app allows you to parse core dump files int TXT format,
|
apps/database_page.py
CHANGED
|
@@ -22,7 +22,7 @@ from queries.process_wcdma import process_wcdma_data_to_excel, process_wcdma_dat
|
|
| 22 |
from utils.check_sheet_exist import DumpType, Technology, execute_checks_sheets_exist
|
| 23 |
from utils.utils_vars import GsmAnalysisData, UtilsVars, WcdmaAnalysisData
|
| 24 |
|
| 25 |
-
st.title("Database processing")
|
| 26 |
|
| 27 |
uploaded_file = st.file_uploader("Upload updated dump file", type="xlsb")
|
| 28 |
EXCLUDE_2G_BSC_SESSION_KEY = "exclude_decommissioned_2g_bsc"
|
|
|
|
| 22 |
from utils.check_sheet_exist import DumpType, Technology, execute_checks_sheets_exist
|
| 23 |
from utils.utils_vars import GsmAnalysisData, UtilsVars, WcdmaAnalysisData
|
| 24 |
|
| 25 |
+
st.title(":material/storage: Database processing")
|
| 26 |
|
| 27 |
uploaded_file = st.file_uploader("Upload updated dump file", type="xlsb")
|
| 28 |
EXCLUDE_2G_BSC_SESSION_KEY = "exclude_decommissioned_2g_bsc"
|
apps/dbm_watt_calculator.py
CHANGED
|
@@ -33,7 +33,7 @@ def render_result(label: str, value: float, unit: str):
|
|
| 33 |
st.write(f"Scientific: `{value:.6e}` {unit}")
|
| 34 |
|
| 35 |
|
| 36 |
-
st.title("dBm <> Watt Calculator")
|
| 37 |
st.write(
|
| 38 |
"Convert radio power between dBm, Watt (W), and milliwatt (mW). "
|
| 39 |
"Manual input only in this first version."
|
|
|
|
| 33 |
st.write(f"Scientific: `{value:.6e}` {unit}")
|
| 34 |
|
| 35 |
|
| 36 |
+
st.title(":material/bolt: dBm <> Watt Calculator")
|
| 37 |
st.write(
|
| 38 |
"Convert radio power between dBm, Watt (W), and milliwatt (mW). "
|
| 39 |
"Manual input only in this first version."
|
apps/distance.py
CHANGED
|
@@ -8,7 +8,7 @@ class DataFrames:
|
|
| 8 |
Dframe = pd.DataFrame()
|
| 9 |
|
| 10 |
|
| 11 |
-
st.title("Distance Calculator")
|
| 12 |
|
| 13 |
st.write(
|
| 14 |
"""This app allows you to calculate the distance between two points in a dataframe.
|
|
|
|
| 8 |
Dframe = pd.DataFrame()
|
| 9 |
|
| 10 |
|
| 11 |
+
st.title(":material/social_distance: Distance Calculator")
|
| 12 |
|
| 13 |
st.write(
|
| 14 |
"""This app allows you to calculate the distance between two points in a dataframe.
|
apps/dump_analysis.py
CHANGED
|
@@ -16,7 +16,7 @@ from utils.utils_vars import (
|
|
| 16 |
|
| 17 |
def dump_analysis_space():
|
| 18 |
|
| 19 |
-
st.title("ANALYTICS DATA")
|
| 20 |
|
| 21 |
####################### SITE ANALYTICS DATA #######################################
|
| 22 |
|
|
|
|
| 16 |
|
| 17 |
def dump_analysis_space():
|
| 18 |
|
| 19 |
+
st.title(":material/analytics: ANALYTICS DATA")
|
| 20 |
|
| 21 |
####################### SITE ANALYTICS DATA #######################################
|
| 22 |
|
apps/dump_compare.py
CHANGED
|
@@ -40,7 +40,7 @@ def detect_dist_col(columns):
|
|
| 40 |
|
| 41 |
# === Interface Streamlit ===
|
| 42 |
|
| 43 |
-
st.title("Dump Compare Tool")
|
| 44 |
st.markdown(
|
| 45 |
":blue[**Upload the old and new dumps, then input the object class (comma-separated) to compare**]"
|
| 46 |
)
|
|
|
|
| 40 |
|
| 41 |
# === Interface Streamlit ===
|
| 42 |
|
| 43 |
+
st.title(":material/compare_arrows: Dump Compare Tool")
|
| 44 |
st.markdown(
|
| 45 |
":blue[**Upload the old and new dumps, then input the object class (comma-separated) to compare**]"
|
| 46 |
)
|
apps/fnb_parser.py
CHANGED
|
@@ -243,7 +243,7 @@ def process_files_to_dataframe(uploaded_files) -> pd.DataFrame:
|
|
| 243 |
|
| 244 |
|
| 245 |
def main() -> None:
|
| 246 |
-
st.title("F4NB Extractor to Excel")
|
| 247 |
st.markdown(
|
| 248 |
"Convert F4NB Word documents into a tidy Excel / DataFrame containing site & sector information.\n"
|
| 249 |
"Upload one or many F4NB `.docx` files and hit **Process**."
|
|
|
|
| 243 |
|
| 244 |
|
| 245 |
def main() -> None:
|
| 246 |
+
st.title(":material/article: F4NB Extractor to Excel")
|
| 247 |
st.markdown(
|
| 248 |
"Convert F4NB Word documents into a tidy Excel / DataFrame containing site & sector information.\n"
|
| 249 |
"Upload one or many F4NB `.docx` files and hit **Process**."
|
apps/gps_converter.py
CHANGED
|
@@ -229,7 +229,7 @@ def _render_manual_mode():
|
|
| 229 |
st.error(f"Invalid DMS value. Details: {error}")
|
| 230 |
|
| 231 |
|
| 232 |
-
st.title("GPS Coordinate Converter")
|
| 233 |
st.write(
|
| 234 |
"Convert coordinates between Decimal and Degree-Minute-Second (DMS). "
|
| 235 |
"You can convert from an Excel file or by entering values manually."
|
|
|
|
| 229 |
st.error(f"Invalid DMS value. Details: {error}")
|
| 230 |
|
| 231 |
|
| 232 |
+
st.title(":material/explore: GPS Coordinate Converter")
|
| 233 |
st.write(
|
| 234 |
"Convert coordinates between Decimal and Degree-Minute-Second (DMS). "
|
| 235 |
"You can convert from an Excel file or by entering values manually."
|
apps/import_physical_db.py
CHANGED
|
@@ -7,7 +7,7 @@ import streamlit as st
|
|
| 7 |
url = r"./physical_db/physical_database.csv"
|
| 8 |
|
| 9 |
# Streamlit app title
|
| 10 |
-
st.title("Physical Database Verification")
|
| 11 |
|
| 12 |
if st.button("Show actual physical database"):
|
| 13 |
try:
|
|
|
|
| 7 |
url = r"./physical_db/physical_database.csv"
|
| 8 |
|
| 9 |
# Streamlit app title
|
| 10 |
+
st.title(":material/public: Physical Database Verification")
|
| 11 |
|
| 12 |
if st.button("Show actual physical database"):
|
| 13 |
try:
|
apps/kpi_analysis/anomalie.py
CHANGED
|
@@ -6,7 +6,7 @@ import plotly.graph_objs as go
|
|
| 6 |
import ruptures as rpt
|
| 7 |
import streamlit as st
|
| 8 |
|
| 9 |
-
st.title("KPIsAnomaly Detection")
|
| 10 |
|
| 11 |
uploaded_file = st.file_uploader("Upload KPI file", type=["csv"])
|
| 12 |
penalty = st.number_input("Penalty", min_value=1.0, max_value=100.0, value=2.5)
|
|
|
|
| 6 |
import ruptures as rpt
|
| 7 |
import streamlit as st
|
| 8 |
|
| 9 |
+
st.title(":material/warning: KPIsAnomaly Detection")
|
| 10 |
|
| 11 |
uploaded_file = st.file_uploader("Upload KPI file", type=["csv"])
|
| 12 |
penalty = st.number_input("Penalty", min_value=1.0, max_value=100.0, value=2.5)
|
apps/kpi_analysis/gsm_capacity.py
CHANGED
|
@@ -9,7 +9,7 @@ from utils.convert_to_excel import ( # Import convert_dfs from the appropriate
|
|
| 9 |
)
|
| 10 |
from utils.kpi_analysis_utils import GsmCapacity
|
| 11 |
|
| 12 |
-
st.title("GSM Capacity Analysis")
|
| 13 |
doc_col, image_col = st.columns(2)
|
| 14 |
|
| 15 |
with doc_col:
|
|
|
|
| 9 |
)
|
| 10 |
from utils.kpi_analysis_utils import GsmCapacity
|
| 11 |
|
| 12 |
+
st.title(":material/bar_chart: GSM Capacity Analysis")
|
| 13 |
doc_col, image_col = st.columns(2)
|
| 14 |
|
| 15 |
with doc_col:
|
apps/kpi_analysis/gsm_lac_load.py
CHANGED
|
@@ -173,7 +173,7 @@ def analyze_lac_load(dump_path: str, hourly_report_path: str) -> List[pd.DataFra
|
|
| 173 |
|
| 174 |
def display_ui() -> None:
|
| 175 |
"""Display the Streamlit user interface."""
|
| 176 |
-
st.title("GSM LAC Load Analysis")
|
| 177 |
doc_col, image_col = st.columns(2)
|
| 178 |
|
| 179 |
with doc_col:
|
|
|
|
| 173 |
|
| 174 |
def display_ui() -> None:
|
| 175 |
"""Display the Streamlit user interface."""
|
| 176 |
+
st.title(":material/sms: GSM LAC Load Analysis")
|
| 177 |
doc_col, image_col = st.columns(2)
|
| 178 |
|
| 179 |
with doc_col:
|
apps/kpi_analysis/lcg_analysis.py
CHANGED
|
@@ -11,7 +11,7 @@ class LcgCapacity:
|
|
| 11 |
|
| 12 |
|
| 13 |
# Streamlit UI
|
| 14 |
-
st.title("LCG Analysis")
|
| 15 |
doc_col, image_col = st.columns(2)
|
| 16 |
|
| 17 |
with doc_col:
|
|
|
|
| 11 |
|
| 12 |
|
| 13 |
# Streamlit UI
|
| 14 |
+
st.title(":material/stacked_line_chart: LCG Analysis")
|
| 15 |
doc_col, image_col = st.columns(2)
|
| 16 |
|
| 17 |
with doc_col:
|
apps/kpi_analysis/lte_capacity.py
CHANGED
|
@@ -6,7 +6,7 @@ from process_kpi.process_lte_capacity import process_lte_bh_report
|
|
| 6 |
from utils.convert_to_excel import convert_lte_analysis_dfs
|
| 7 |
from utils.kpi_analysis_utils import LteCapacity
|
| 8 |
|
| 9 |
-
st.title("LTE Capacity Analysis")
|
| 10 |
doc_col, image_col = st.columns(2)
|
| 11 |
|
| 12 |
with doc_col:
|
|
|
|
| 6 |
from utils.convert_to_excel import convert_lte_analysis_dfs
|
| 7 |
from utils.kpi_analysis_utils import LteCapacity
|
| 8 |
|
| 9 |
+
st.title(":material/signal_cellular_alt: LTE Capacity Analysis")
|
| 10 |
doc_col, image_col = st.columns(2)
|
| 11 |
|
| 12 |
with doc_col:
|
apps/kpi_analysis/lte_drop_trafic.py
CHANGED
|
@@ -6,7 +6,7 @@ import streamlit as st
|
|
| 6 |
|
| 7 |
from utils.utils_vars import get_physical_db
|
| 8 |
|
| 9 |
-
st.title("LTE Cell Traffic Drop Detection")
|
| 10 |
doc_col, image_col = st.columns(2)
|
| 11 |
|
| 12 |
with doc_col:
|
|
|
|
| 6 |
|
| 7 |
from utils.utils_vars import get_physical_db
|
| 8 |
|
| 9 |
+
st.title(":material/trending_down: LTE Cell Traffic Drop Detection")
|
| 10 |
doc_col, image_col = st.columns(2)
|
| 11 |
|
| 12 |
with doc_col:
|
apps/kpi_analysis/trafic_analysis.py
CHANGED
|
@@ -860,7 +860,7 @@ def monthly_data_analysis(df: pd.DataFrame) -> pd.DataFrame:
|
|
| 860 |
|
| 861 |
|
| 862 |
############################## UI #########################
|
| 863 |
-
st.title("Global Trafic Analysis - 2G / 3G / LTE")
|
| 864 |
doc_col, image_col = st.columns(2)
|
| 865 |
|
| 866 |
with doc_col:
|
|
|
|
| 860 |
|
| 861 |
|
| 862 |
############################## UI #########################
|
| 863 |
+
st.title(":material/monitoring: Global Trafic Analysis - 2G / 3G / LTE")
|
| 864 |
doc_col, image_col = st.columns(2)
|
| 865 |
|
| 866 |
with doc_col:
|
apps/kpi_analysis/wbts_capacty.py
CHANGED
|
@@ -7,7 +7,7 @@ from utils.convert_to_excel import convert_dfs
|
|
| 7 |
|
| 8 |
# Streamlit UI
|
| 9 |
|
| 10 |
-
st.title("WBTS Capacity Analysis")
|
| 11 |
doc_col, image_col = st.columns(2)
|
| 12 |
|
| 13 |
with doc_col:
|
|
|
|
| 7 |
|
| 8 |
# Streamlit UI
|
| 9 |
|
| 10 |
+
st.title(":material/developer_board: WBTS Capacity Analysis")
|
| 11 |
doc_col, image_col = st.columns(2)
|
| 12 |
|
| 13 |
with doc_col:
|
apps/kpi_analysis/wcel_capacity.py
CHANGED
|
@@ -10,7 +10,7 @@ from utils.convert_to_excel import convert_wcel_capacity_dfs
|
|
| 10 |
|
| 11 |
# Streamlit UI
|
| 12 |
|
| 13 |
-
st.title("WCEL Capacity Analysis")
|
| 14 |
doc_col, image_col = st.columns(2)
|
| 15 |
|
| 16 |
with doc_col:
|
|
|
|
| 10 |
|
| 11 |
# Streamlit UI
|
| 12 |
|
| 13 |
+
st.title(":material/cell_tower: WCEL Capacity Analysis")
|
| 14 |
doc_col, image_col = st.columns(2)
|
| 15 |
|
| 16 |
with doc_col:
|
apps/multi_points_distance_calculator.py
CHANGED
|
@@ -4,7 +4,7 @@ import streamlit as st
|
|
| 4 |
from utils.utils_functions import calculate_distances
|
| 5 |
|
| 6 |
# Streamlit UI
|
| 7 |
-
st.title("Multi Points Distance Calculator")
|
| 8 |
|
| 9 |
st.write(
|
| 10 |
"""This app allows you to calculate the distance between multiple points in 2 datasets.
|
|
|
|
| 4 |
from utils.utils_functions import calculate_distances
|
| 5 |
|
| 6 |
# Streamlit UI
|
| 7 |
+
st.title(":material/route: Multi Points Distance Calculator")
|
| 8 |
|
| 9 |
st.write(
|
| 10 |
"""This app allows you to calculate the distance between multiple points in 2 datasets.
|
apps/parameters_distribution.py
CHANGED
|
@@ -3,7 +3,7 @@ import plotly.express as px
|
|
| 3 |
import streamlit as st
|
| 4 |
from pyxlsb import open_workbook
|
| 5 |
|
| 6 |
-
st.title("Parameters distribution Analyzer")
|
| 7 |
|
| 8 |
uploaded_file = st.file_uploader("Upload an .xlsb Dump file", type="xlsb")
|
| 9 |
|
|
|
|
| 3 |
import streamlit as st
|
| 4 |
from pyxlsb import open_workbook
|
| 5 |
|
| 6 |
+
st.title(":material/tune: Parameters distribution Analyzer")
|
| 7 |
|
| 8 |
uploaded_file = st.file_uploader("Upload an .xlsb Dump file", type="xlsb")
|
| 9 |
|
apps/sector_kml_generator.py
CHANGED
|
@@ -5,7 +5,7 @@ import streamlit as st
|
|
| 5 |
|
| 6 |
from utils.kml_creator import generate_kml_from_df
|
| 7 |
|
| 8 |
-
st.title("Telecom Sector KML Generator")
|
| 9 |
|
| 10 |
|
| 11 |
# display mandatory columns
|
|
|
|
| 5 |
|
| 6 |
from utils.kml_creator import generate_kml_from_df
|
| 7 |
|
| 8 |
+
st.title(":material/map: Telecom Sector KML Generator")
|
| 9 |
|
| 10 |
|
| 11 |
# display mandatory columns
|
apps/ue_capability_parser.py
CHANGED
|
@@ -5,7 +5,7 @@ import streamlit as st
|
|
| 5 |
|
| 6 |
from queries.process_ue_capability import SHEET_ORDER, parse_uecap_files, to_excel_bytes
|
| 7 |
|
| 8 |
-
st.title("UE Capability Parser")
|
| 9 |
st.markdown(
|
| 10 |
"""
|
| 11 |
Parse UE Capability text exports (`.txt`) from drive-test/log tools (Actix/TEMS-like decoded RRC trees)
|
|
|
|
| 5 |
|
| 6 |
from queries.process_ue_capability import SHEET_ORDER, parse_uecap_files, to_excel_bytes
|
| 7 |
|
| 8 |
+
st.title(":material/memory: UE Capability Parser")
|
| 9 |
st.markdown(
|
| 10 |
"""
|
| 11 |
Parse UE Capability text exports (`.txt`) from drive-test/log tools (Actix/TEMS-like decoded RRC trees)
|
documentations/index_doc.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
import streamlit as st
|
| 2 |
|
| 3 |
-
st.title("Documentation Home")
|
| 4 |
st.markdown(
|
| 5 |
"""
|
| 6 |
Welcome to the in-app documentation hub.
|
|
|
|
| 1 |
import streamlit as st
|
| 2 |
|
| 3 |
+
st.title(":material/menu_book: Documentation Home")
|
| 4 |
st.markdown(
|
| 5 |
"""
|
| 6 |
Welcome to the in-app documentation hub.
|