## Critical fixes - H1: Fix env_id/env/environment_id triple inconsistency in API route (_action_routes.py now passes 'environment_id', matches scheduler) - H2: Decompose BackupPlugin.execute() — CC 13 → 5 methods, CC ≤ 5 each - H3: Fix unhandled int() ValueError on non-numeric dashboard_ids - H4: Add concurrent guard test with API-style params (env key fallback) - H5: Make RetentionPolicy configurable via StorageConfig (retention_daily/weekly/monthly in config model + backend plugin) - Fix: storage DELETE route missing 'await' on async delete_file (bug) ## UI/UX overhaul - NEW: centralized cron utility (frontend/src/lib/utils/cron.ts) - validateCron(), calcNextCronRun(), formatNextRun() - Used by BackupManager, BackupDashboardModal - BackupManager: replace custom BackupList with shared FileList - Adds: download, delete, bulk actions, search, sort, pagination - Adds: cron next-run preview below schedule input - Adds: auto-open TaskDrawer on backup task creation - BackupDashboardModal: dead 'Cron Help' button removed - Adds: live cron validation + next-run preview - StorageSettings: adds retention daily/weekly/monthly fields - BackupCreateRequest type fixed to match actual API contract - i18n: 7 new keys for en/ru (next_run, retention_*)
144 lines
6.2 KiB
JSON
144 lines
6.2 KiB
JSON
{
|
|
"search": "Search dashboards...",
|
|
"title": "Title",
|
|
"last_modified": "Last Modified",
|
|
"status": "Status",
|
|
"git": "Git",
|
|
"showing": "Showing {start} to {end} of {total} dashboards",
|
|
"previous": "Previous",
|
|
"next": "Next",
|
|
"no_dashboards": "No dashboards found in this environment.",
|
|
"select_source": "Select a source environment to view dashboards.",
|
|
"overview": "Overview",
|
|
"charts": "Charts",
|
|
"validate": "Validate",
|
|
"validation_started": "Validation started for {title}",
|
|
"select_tool": "Select Tool",
|
|
"dashboard_validation": "Dashboard Validation",
|
|
"dataset_documentation": "Dataset Documentation",
|
|
"dashboard_id": "Dashboard ID",
|
|
"dataset_id": "Dataset ID",
|
|
"environment": "Environment",
|
|
"home": "Home",
|
|
"llm_provider": "LLM Provider (Optional)",
|
|
"use_default": "Use Default",
|
|
"screenshot_strategy": "Screenshot Strategy",
|
|
"headless_browser": "Headless Browser (Accurate)",
|
|
"api_thumbnail": "API Thumbnail (Fast)",
|
|
"include_logs": "Include Execution Logs",
|
|
"notify_on_failure": "Notify on Failure",
|
|
"update_metadata": "Update Metadata Automatically",
|
|
"run_task": "Run Task",
|
|
"running": "Running...",
|
|
"git_status": "Git Status",
|
|
"last_task": "Last Task",
|
|
"llm_status": "LLM Validation Status",
|
|
"changed_on": "Changed On",
|
|
"owners": "Owners",
|
|
"column_filter": "Column filter",
|
|
"actions": "Actions",
|
|
"action_migrate": "Migrate",
|
|
"action_backup": "Backup",
|
|
"action_validate": "Validate",
|
|
"action_commit": "Commit",
|
|
"select_all": "Select All",
|
|
"deselect_all": "Deselect All",
|
|
"select_visible": "Select Visible",
|
|
"deselect_visible": "Deselect Visible",
|
|
"selected_count": "{count} selected",
|
|
"open_overview": "Open dashboard overview",
|
|
"per_page_option": "{count} per page",
|
|
"bulk_migrate": "Migrate",
|
|
"bulk_backup": "Backup",
|
|
"migrate_modal_title": "Migrate {count} Dashboards",
|
|
"backup_modal_title": "Backup {count} Dashboards",
|
|
"read_only": "(read-only)",
|
|
"target_env_placeholder": "Select target environment...",
|
|
"view_summary": "View Summary",
|
|
"edit_mappings": "Edit Mappings",
|
|
"source_database": "Source Database",
|
|
"target_database": "Target Database",
|
|
"match_percent": "Match %",
|
|
"not_mapped": "Not mapped",
|
|
"no_databases_to_map": "No databases found to map",
|
|
"select_target_for_mappings": "Select target environment to see mappings",
|
|
"mapping_disabled_hint": "Database mapping is disabled. Dashboards will be imported with original database references.",
|
|
"saved": "Saved",
|
|
"suggested": "Suggested",
|
|
"fix_cross_filters_title": "Fix cross-filter bindings",
|
|
"fix_cross_filters_hint": "Automatically remap chart and dataset IDs in cross-filters to target environment IDs. Recommended when migrating dashboards with cross-filters.",
|
|
"selected_dashboards": "Selected Dashboards",
|
|
"starting": "Starting...",
|
|
"start_backup": "Start Backup",
|
|
"schedule": "Schedule",
|
|
"one_time_backup": "One-time backup",
|
|
"schedule_backup": "Schedule backup",
|
|
"cron_expression": "Cron expression",
|
|
"cron_help": "Help with cron syntax",
|
|
"cron_placeholder": "0 2 * * * (daily at 2 AM)",
|
|
"next_run": "Next: {time}",
|
|
"load_failed": "Failed to load dashboards",
|
|
"validation_start_failed": "Failed to start validation",
|
|
"unknown_error": "Unknown error",
|
|
"target_env_required": "Please select a target environment",
|
|
"migration_task_failed": "Failed to create migration task",
|
|
"backup_task_failed": "Failed to create backup task",
|
|
"missing_context": "Missing dashboard ID or environment ID",
|
|
"missing_context_hint": "No environment selected. Choose an environment from the top bar and reload the page.",
|
|
"load_detail_failed": "Failed to load dashboard details",
|
|
"no_charts": "No charts found for this dashboard.",
|
|
"no_datasets": "No datasets found for this dashboard.",
|
|
"view_task": "View task",
|
|
"task_running": "Running...",
|
|
"task_done": "Done",
|
|
"task_failed": "Failed",
|
|
"task_waiting": "Waiting",
|
|
"status_repo": "Repo linked",
|
|
"status_no_repo": "No repo",
|
|
"status_changes": "Changes pending",
|
|
"status_no_changes": "No changes",
|
|
"status_synced": "Synced",
|
|
"status_diff": "Diff",
|
|
"status_error": "Error",
|
|
"linked_resources": "Linked resources",
|
|
"git_history": "Git history",
|
|
"run_backup": "Run backup",
|
|
"run_llm_check": "Run LLM check",
|
|
"thumbnail_generating": "Thumbnail is being generated",
|
|
"thumbnail_failed": "Failed to load thumbnail",
|
|
"thumbnail_unavailable": "Thumbnail is unavailable",
|
|
"settings": "Settings",
|
|
"empty": "No dashboards found",
|
|
"hub_subtitle": "Manage Superset dashboards: migration, backups, validation, and Git status",
|
|
"create_validation_task": "Create Validation Task",
|
|
"date_range_placeholder": "Date range",
|
|
"date_from": "From",
|
|
"date_to": "To",
|
|
"date_preset_today": "Today",
|
|
"date_preset_days": "d",
|
|
"date_preset_month": "This month",
|
|
"date_preset_year": "This year",
|
|
"setup_badge": "Initial setup",
|
|
"setup_title": "Configure your first environment",
|
|
"setup_intro": "Dashboards need at least one Superset environment. Create it here instead of landing on an empty screen.",
|
|
"setup_open_advanced": "Advanced settings",
|
|
"setup_card_title": "What happens next",
|
|
"setup_card_body": "The wizard saves a Superset endpoint, validates login, and immediately adds the environment to the global selector.",
|
|
"setup_checklist_title": "Prepare these values",
|
|
"setup_checklist_url": "Superset base URL without /api/v1",
|
|
"setup_checklist_user": "Username with dashboard access",
|
|
"setup_checklist_pass": "Password for the selected Superset account",
|
|
"setup_step_title": "Starter flow",
|
|
"setup_step_one": "Create the first environment",
|
|
"setup_step_two": "Select it automatically for the current session",
|
|
"setup_step_three": "Load dashboards from the new environment",
|
|
"setup_start": "Start setup",
|
|
"setup_create": "Create environment",
|
|
"setup_creating": "Creating environment...",
|
|
"setup_required": "Fill in ID, name, URL, username, and password.",
|
|
"setup_failed": "Failed to create environment.",
|
|
"setup_created": "Environment created. Loading dashboards.",
|
|
"setup_empty_title": "No environments configured yet",
|
|
"setup_empty_body": "Add the first Superset environment to unlock dashboards, datasets, backups, and migrations."
|
|
}
|