from dash import dcc, html def create_date_dropdown(assesment_times: list) -> html.Div: """ Dropdown to select the date of the last available scan for each account. Args: assesment_times (list): List of dates of the last available scan for each account. Returns: html.Div: Dropdown to select the date of the last available scan for each account. """ return html.Div( [ html.Div( [ html.Label( "Assessment date (last available scan) ", className="text-prowler-stone-900 font-bold text-sm", ), html.Img( id="info-file-over", src="/assets/images/icons/help-black.png", className="w-5", title="The date of the last available scan for each account is displayed here. If you have not run prowler yet, the date will be empty.", ), ], style={"display": "inline-flex"}, ), dcc.Dropdown( id="report-date-filter", options=[ {"label": account, "value": account} for account in assesment_times ], value=assesment_times[0], clearable=False, multi=False, style={"color": "#000000", "width": "100%"}, ), ], ) def create_date_dropdown_compliance(assesment_times: list) -> html.Div: """ Dropdown to select the date of the last available scan for each account. Args: assesment_times (list): List of dates of the last available scan for each account. Returns: html.Div: Dropdown to select the date of the last available scan for each account. """ return html.Div( [ html.Label( "Assesment Date:", className="text-prowler-stone-900 font-bold text-sm" ), dcc.Dropdown( id="date-filter-analytics", options=[ {"label": account, "value": account} for account in assesment_times ], value=assesment_times[0], clearable=False, multi=False, style={"color": "#000000", "width": "100%"}, ), ], ) def create_region_dropdown(regions: list) -> html.Div: """ Dropdown to select the region of the account. Args: regions (list): List of regions of the account. Returns: html.Div: Dropdown to select the region of the account. """ return html.Div( [ html.Label( "Region / Location / Namespace :", className="text-prowler-stone-900 font-bold text-sm", ), dcc.Dropdown( id="region-filter", options=[{"label": region, "value": region} for region in regions], value=["All"], # Initial selection is ALL clearable=False, multi=True, style={"color": "#000000", "width": "100%"}, ), ], ) def create_region_dropdown_compliance(regions: list) -> html.Div: """ Dropdown to select the region of the account. Args: regions (list): List of regions of the account. Returns: html.Div: Dropdown to select the region of the account. """ return html.Div( [ html.Label( "Region / Location / Namespace :", className="text-prowler-stone-900 font-bold text-sm", ), dcc.Dropdown( id="region-filter-compliance", options=[{"label": region, "value": region} for region in regions], value=["All"], # Initial selection is ALL clearable=False, multi=True, style={"color": "#000000", "width": "100%"}, ), ], ) def create_account_dropdown(accounts: list) -> html.Div: """ Dropdown to select the account. Args: accounts (list): List of accounts. Returns: html.Div: Dropdown to select the account. """ return html.Div( [ html.Label( "Account / Subscription / Project / Cluster :", className="text-prowler-stone-900 font-bold text-sm", ), dcc.Dropdown( id="cloud-account-filter", options=[{"label": account, "value": account} for account in accounts], value=["All"], # Initial selection is ALL clearable=False, multi=True, style={"color": "#000000", "width": "100%"}, ), ], ) def create_account_dropdown_compliance(accounts: list) -> html.Div: """ Dropdown to select the account. Args: accounts (list): List of accounts. Returns: html.Div: Dropdown to select the account. """ return html.Div( [ html.Label( "Account / Subscription / Project / Cluster :", className="text-prowler-stone-900 font-bold text-sm", ), dcc.Dropdown( id="cloud-account-filter-compliance", options=[{"label": account, "value": account} for account in accounts], value=["All"], # Initial selection is ALL clearable=False, multi=True, style={"color": "#000000", "width": "100%"}, ), ], ) def create_compliance_dropdown(compliance: list) -> html.Div: """ Dropdown to select the compliance. Args: compliance (list): List of compliance. Returns: html.Div: Dropdown to select the compliance. """ return html.Div( [ html.Label( "Compliance:", className="text-prowler-stone-900 font-bold text-sm" ), dcc.Dropdown( id="report-compliance-filter", options=[{"label": i, "value": i} for i in compliance], value=compliance[0], clearable=False, style={"color": "#000000"}, ), ], ) def create_severity_dropdown(severity: list) -> html.Div: """ Dropdown to select the severity. Args: severity (list): List of severity. Returns: html.Div: Dropdown to select the severity. """ return html.Div( [ html.Label( "Severity:", className="text-prowler-stone-900 font-bold text-sm" ), dcc.Dropdown( id="severity-filter", options=[{"label": i, "value": i} for i in severity], value=["All"], clearable=False, multi=True, style={"color": "#000000"}, ), ], ) def create_service_dropdown(services: list) -> html.Div: """ Dropdown to select the service. Args: services (list): List of services. Returns: html.Div: Dropdown to select the service. """ return html.Div( [ html.Label( "Service:", className="text-prowler-stone-900 font-bold text-sm" ), dcc.Dropdown( id="service-filter", options=[{"label": i, "value": i} for i in services], value=["All"], clearable=False, multi=True, style={"color": "#000000"}, ), ], ) def create_provider_dropdown(providers: list) -> html.Div: """ Dropdown to select the provider. Args: providers (list): List of providers. Returns: html.Div: Dropdown to select the provider. """ return html.Div( [ html.Label( "Provider:", className="text-prowler-stone-900 font-bold text-sm" ), dcc.Dropdown( id="provider-filter", options=[{"label": i, "value": i} for i in providers], value=["All"], clearable=False, multi=True, style={"color": "#000000"}, ), ], ) def create_status_dropdown(status: list) -> html.Div: """ Dropdown to select the status. Args: status (list): List of status. Returns: html.Div: Dropdown to select the status. """ return html.Div( [ html.Label("Status:", className="text-prowler-stone-900 font-bold text-sm"), dcc.Dropdown( id="status-filter", options=[{"label": i, "value": i} for i in status], value=["All"], clearable=False, multi=True, style={"color": "#000000"}, ), ], ) def create_table_row_dropdown(table_rows: list) -> html.Div: """ Dropdown to select the number of rows in the table. Args: table_rows (list): List of number of rows. Returns: html.Div: Dropdown to select the number of rows in the table. """ return html.Div( [ dcc.Dropdown( id="table-rows", options=[{"label": i, "value": i} for i in table_rows], value=table_rows[0], clearable=False, style={"color": "#000000", "margin-right": "10px"}, ), ], )