mirror of
https://github.com/formbricks/formbricks.git
synced 2026-05-20 03:07:53 -05:00
fix: improve blocked state explanations across UI
Replace tooltip-only feedback with inline alerts that explain why an action is unavailable and link to the relevant settings or docs: - AI query section: show alert with reason-specific message and a link to organization settings or billing when AI is unavailable - Feedback directory settings: explain when no unassigned workspaces are available and list the conflicting assignments - Feedback directory unarchive: assert workspaces are not already assigned to another directory before restoring - Create connector modal: surface API ingestion setup details in an inline alert on the selection step
This commit is contained in:
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "Filter hinzufügen",
|
||||
"add_to_dashboard": "Zum Dashboard hinzufügen",
|
||||
"advanced_chart_builder_config_prompt": "Konfiguriere dein Diagramm und klicke auf \"Abfrage ausführen\", um eine Vorschau zu sehen",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "KI ist auf dieser Instanz nicht konfiguriert. Kontaktiere deinen Administrator.",
|
||||
"ai_not_available": "KI-Datenanalyse ist nicht verfügbar.",
|
||||
"ai_not_enabled": "KI-Datenanalyse ist für diese Organisation deaktiviert. Aktiviere sie in den Organisationseinstellungen.",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "z.B. Wie viele Nutzer haben sich letzte Woche angemeldet?",
|
||||
"ai_query_section_description": "Beschreibe, was du sehen möchtest, und lass die KI das Diagramm erstellen.",
|
||||
"ai_query_section_title": "Frag deine Daten",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "Bereits im Dashboard",
|
||||
"and_filter_logic": "UND",
|
||||
"apply_changes": "Änderungen übernehmen",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "Feedback-Verzeichnisse",
|
||||
"no_access": "Du hast keine Berechtigung, Feedback-Verzeichnisse zu verwalten.",
|
||||
"no_connectors": "Noch keine Feedback-Quellen mit diesem Verzeichnis verknüpft.",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "Wenn du diese Feedback-Quellen pausierst, werden keine neuen Einträge mehr hinzugefügt.",
|
||||
"pause_connectors_confirmation_title": "Verknüpfte Feedback-Quellen pausieren?",
|
||||
"select_workspaces_placeholder": "Workspaces auswählen...",
|
||||
"show_archived": "Archivierte anzeigen",
|
||||
"title": "Feedback-Verzeichnisse",
|
||||
"unarchive": "Aus Archiv wiederherstellen",
|
||||
"unarchive_workspace_conflict": "Dieses Verzeichnis kann nicht wiederhergestellt werden, weil ein oder mehrere zugewiesene Workspaces archiviert sind.",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "Organisiere Feedback-Datensätze in Verzeichnissen und leite Daten zum richtigen Workspace weiter. Verfügbar in den Pro- und Scale-Plänen.",
|
||||
"upgrade_prompt_title": "Upgrade durchführen, um Feedback-Datensatz-Verzeichnisse freizuschalten",
|
||||
"workspace_access": "Workspace-Zugriff",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "Bereits verknüpfte Workspaces",
|
||||
"workspaces_being_added": "Workspaces, denen Zugriff gewährt wird"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "Quelle hinzufügen",
|
||||
"allowed_values": "Zulässige Werte: {values}",
|
||||
"api_ingestion": "API-Erfassung",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Sende Feedback-Datensätze über die Management-API.",
|
||||
"auto_generated": "Automatisch generiert",
|
||||
"change_file": "Datei ändern",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "Wert (Boolescher Wert)",
|
||||
"value_date": "Wert (Datum)",
|
||||
"value_number": "Wert (Anzahl)",
|
||||
"value_text": "Wert (Text)"
|
||||
"value_text": "Wert (Text)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "Add filter",
|
||||
"add_to_dashboard": "Add to Dashboard",
|
||||
"advanced_chart_builder_config_prompt": "Configure your chart and click \"Run Query\" to preview",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "AI is not configured on this instance. Contact your administrator.",
|
||||
"ai_not_available": "AI data analysis is not available.",
|
||||
"ai_not_enabled": "AI data analysis is disabled for this organization. Enable it in organization settings.",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "e.g. How many users signed up last week?",
|
||||
"ai_query_section_description": "Describe what you want to see and let AI build the chart.",
|
||||
"ai_query_section_title": "Ask your data",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "Already on dashboard",
|
||||
"and_filter_logic": "AND",
|
||||
"apply_changes": "Apply Changes",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "Feedback Directories",
|
||||
"no_access": "You do not have permission to manage feedback directories.",
|
||||
"no_connectors": "No feedback sources linked to this directory yet.",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "Pausing these feedback sources will stop new records from being added.",
|
||||
"pause_connectors_confirmation_title": "Pause linked feedback sources?",
|
||||
"select_workspaces_placeholder": "Select workspaces...",
|
||||
"show_archived": "Show archived",
|
||||
"title": "Feedback Directories",
|
||||
"unarchive": "Unarchive",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces are archived.",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "Organize feedback records into directories and route data to the right workspace. Available on the Pro and Scale plans.",
|
||||
"upgrade_prompt_title": "Upgrade to unlock Feedback Directories",
|
||||
"workspace_access": "Workspace access",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "Already linked workspaces",
|
||||
"workspaces_being_added": "Workspaces being granted access"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "Add source",
|
||||
"allowed_values": "Allowed values: {values}",
|
||||
"api_ingestion": "API ingestion",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Send feedback records using the Management API.",
|
||||
"auto_generated": "Auto-generated",
|
||||
"change_file": "Change file",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "Value (Boolean)",
|
||||
"value_date": "Value (Date)",
|
||||
"value_number": "Value (Number)",
|
||||
"value_text": "Value (Text)"
|
||||
"value_text": "Value (Text)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "Añadir filtro",
|
||||
"add_to_dashboard": "Añadir al panel de control",
|
||||
"advanced_chart_builder_config_prompt": "Configura tu gráfico y haz clic en \"Ejecutar consulta\" para previsualizar",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "La IA no está configurada en esta instancia. Contacta con tu administrador.",
|
||||
"ai_not_available": "El análisis de datos con IA no está disponible.",
|
||||
"ai_not_enabled": "El análisis de datos con IA está desactivado para esta organización. Actívalo en la configuración de la organización.",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "p. ej. ¿Cuántos usuarios se registraron la semana pasada?",
|
||||
"ai_query_section_description": "Describe lo que quieres ver y deja que la IA construya el gráfico.",
|
||||
"ai_query_section_title": "Pregunta a tus datos",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "Ya está en el panel",
|
||||
"and_filter_logic": "Y",
|
||||
"apply_changes": "Aplicar cambios",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "Directorios de Feedback",
|
||||
"no_access": "No tienes permiso para gestionar directorios de feedback.",
|
||||
"no_connectors": "Aún no hay fuentes de comentarios vinculadas a este directorio.",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "Pausar estas fuentes de comentarios detendrá la adición de nuevos registros.",
|
||||
"pause_connectors_confirmation_title": "¿Pausar las fuentes de comentarios vinculadas?",
|
||||
"select_workspaces_placeholder": "Selecciona espacios de trabajo...",
|
||||
"show_archived": "Mostrar archivados",
|
||||
"title": "Directorios de feedback",
|
||||
"unarchive": "Desarchivar",
|
||||
"unarchive_workspace_conflict": "No se puede desarchivar este directorio porque uno o más espacios de trabajo asignados están archivados.",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "Organiza los registros de feedback en directorios y dirige los datos al espacio de trabajo adecuado. Disponible en los planes Pro y Scale.",
|
||||
"upgrade_prompt_title": "Mejora tu plan para desbloquear los Directorios de Registros de Feedback",
|
||||
"workspace_access": "Acceso al espacio de trabajo",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "Espacios de trabajo ya vinculados",
|
||||
"workspaces_being_added": "Espacios de trabajo a los que se concede acceso"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "Añadir fuente",
|
||||
"allowed_values": "Valores permitidos: {values}",
|
||||
"api_ingestion": "Ingesta de API",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Envía registros de feedback mediante la API de gestión.",
|
||||
"auto_generated": "Generado automáticamente",
|
||||
"change_file": "Cambiar archivo",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "Valor (booleano)",
|
||||
"value_date": "Valor (Fecha)",
|
||||
"value_number": "Valor (Número)",
|
||||
"value_text": "Valor (Texto)"
|
||||
"value_text": "Valor (Texto)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "Ajouter un filtre",
|
||||
"add_to_dashboard": "Ajouter au tableau de bord",
|
||||
"advanced_chart_builder_config_prompt": "Configurez votre graphique et cliquez sur « Exécuter la requête » pour prévisualiser",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "L'IA n'est pas configurée sur cette instance. Contacte ton administrateur.",
|
||||
"ai_not_available": "L'analyse de données par IA n'est pas disponible.",
|
||||
"ai_not_enabled": "L'analyse de données par IA est désactivée pour cette organisation. Active-la dans les paramètres de l'organisation.",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "ex. Combien d'utilisateurs se sont inscrits la semaine dernière ?",
|
||||
"ai_query_section_description": "Décrivez ce que vous souhaitez voir et laissez l'IA créer le graphique.",
|
||||
"ai_query_section_title": "Interrogez vos données",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "Déjà sur le tableau de bord",
|
||||
"and_filter_logic": "ET",
|
||||
"apply_changes": "Appliquer les modifications",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "Répertoires de feedback",
|
||||
"no_access": "Tu n'as pas la permission de gérer les répertoires de retours.",
|
||||
"no_connectors": "Aucune source de retours liée à ce répertoire pour le moment.",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "Mettre en pause ces sources de retours empêchera l'ajout de nouveaux enregistrements.",
|
||||
"pause_connectors_confirmation_title": "Mettre en pause les sources de retours liées ?",
|
||||
"select_workspaces_placeholder": "Sélectionner des espaces de travail...",
|
||||
"show_archived": "Afficher les éléments archivés",
|
||||
"title": "Répertoires de retours",
|
||||
"unarchive": "Désarchiver",
|
||||
"unarchive_workspace_conflict": "Impossible de désarchiver ce répertoire, car un ou plusieurs espaces de travail attribués sont archivés.",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "Organisez les enregistrements de feedback dans des répertoires et dirigez les données vers le bon espace de travail. Disponible avec les forfaits Pro et Scale.",
|
||||
"upgrade_prompt_title": "Passez à un forfait supérieur pour débloquer les Répertoires d'enregistrements de feedback",
|
||||
"workspace_access": "Accès à l’espace de travail",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "Espaces de travail déjà liés",
|
||||
"workspaces_being_added": "Espaces de travail en cours d'ajout"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "Ajouter une source",
|
||||
"allowed_values": "Valeurs autorisées : {values}",
|
||||
"api_ingestion": "Ingestion par API",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Envoyer des enregistrements de feedback via l'API de gestion.",
|
||||
"auto_generated": "Généré automatiquement",
|
||||
"change_file": "Changer de fichier",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "Valeur (booléenne)",
|
||||
"value_date": "Valeur (Date)",
|
||||
"value_number": "Valeur (Nombre)",
|
||||
"value_text": "Valeur (texte)"
|
||||
"value_text": "Valeur (texte)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "Szűrő hozzáadása",
|
||||
"add_to_dashboard": "Hozzáadás a vezérlőpulthoz",
|
||||
"advanced_chart_builder_config_prompt": "Állítsd be a diagramot, és kattints a \"Lekérdezés futtatása\" gombra az előnézethez",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "Az AI nincs konfigurálva ezen a példányon. Kérjük, lépjen kapcsolatba a rendszergazdával.",
|
||||
"ai_not_available": "Az AI adatelemzés nem elérhető.",
|
||||
"ai_not_enabled": "Az AI adatelemzés le van tiltva ezen szervezet számára. Kérjük, engedélyezze a szervezeti beállításokban.",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "pl. Hány felhasználó regisztrált a múlt héten?",
|
||||
"ai_query_section_description": "Írd le, mit szeretnél látni, és hagyd, hogy az AI elkészítse a diagramot.",
|
||||
"ai_query_section_title": "Kérdezd meg az adataidat",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "Már a vezérlőpulton van",
|
||||
"and_filter_logic": "ÉS",
|
||||
"apply_changes": "Módosítások alkalmazása",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "Visszajelzési könyvtárak",
|
||||
"no_access": "Önnek nincs jogosultsága a visszajelzési könyvtárak kezeléséhez.",
|
||||
"no_connectors": "Még nincsenek visszajelzési források kapcsolva ehhez a könyvtárhoz.",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "Ezen visszajelzési források szüneteltetése megállítja az új rekordok hozzáadását.",
|
||||
"pause_connectors_confirmation_title": "Szünetelteti a kapcsolódó visszajelzési forrásokat?",
|
||||
"select_workspaces_placeholder": "Munkaterületek kiválasztása...",
|
||||
"show_archived": "Archivált elemek megjelenítése",
|
||||
"title": "Visszajelzési könyvtárak",
|
||||
"unarchive": "Archiválás visszavonása",
|
||||
"unarchive_workspace_conflict": "A könyvtár nem állítható vissza, mert egy vagy több hozzárendelt munkaterület archiválva van.",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "Szervezze a visszajelzési rekordokat könyvtárakba, és irányítsa az adatokat a megfelelő munkaterületre. A Pro és Scale csomagokban érhető el.",
|
||||
"upgrade_prompt_title": "Frissítsen a csomagon, hogy feloldja a Visszajelzési Rekord Könyvtárakat",
|
||||
"workspace_access": "Munkaterület-hozzáférés",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "Már kapcsolt munkaterületek",
|
||||
"workspaces_being_added": "Hozzáférést kapó munkaterületek"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "Forrás hozzáadása",
|
||||
"allowed_values": "Engedélyezett értékek: {values}",
|
||||
"api_ingestion": "API betöltés",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Visszajelzési rekordok küldése a Management API használatával.",
|
||||
"auto_generated": "Automatikusan generált",
|
||||
"change_file": "Fájl módosítása",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "Érték (logikai)",
|
||||
"value_date": "Érték (dátum)",
|
||||
"value_number": "Érték (szám)",
|
||||
"value_text": "Érték (szöveg)"
|
||||
"value_text": "Érték (szöveg)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "フィルターを追加",
|
||||
"add_to_dashboard": "ダッシュボードに追加",
|
||||
"advanced_chart_builder_config_prompt": "チャートを設定して「クエリを実行」をクリックしてプレビューを表示",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "このインスタンスではAIが設定されていません。管理者にお問い合わせください。",
|
||||
"ai_not_available": "AIデータ分析は利用できません。",
|
||||
"ai_not_enabled": "この組織ではAIデータ分析が無効になっています。組織設定で有効にしてください。",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "例: 先週何人のユーザーが登録しましたか?",
|
||||
"ai_query_section_description": "表示したい内容を説明すると、AIがチャートを作成します。",
|
||||
"ai_query_section_title": "データに質問する",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "すでにダッシュボードに追加済み",
|
||||
"and_filter_logic": "AND",
|
||||
"apply_changes": "変更を適用",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "フィードバックディレクトリ",
|
||||
"no_access": "フィードバックディレクトリを管理する権限がありません。",
|
||||
"no_connectors": "このディレクトリにリンクされたフィードバックソースがまだありません。",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "これらのフィードバックソースを一時停止すると、新しいレコードの追加が停止されます。",
|
||||
"pause_connectors_confirmation_title": "リンクされたフィードバックソースを一時停止しますか?",
|
||||
"select_workspaces_placeholder": "ワークスペースを選択...",
|
||||
"show_archived": "アーカイブ済みを表示",
|
||||
"title": "フィードバックディレクトリ",
|
||||
"unarchive": "アーカイブ解除",
|
||||
"unarchive_workspace_conflict": "割り当てられているワークスペースの1つ以上がアーカイブされているため、このディレクトリをアーカイブ解除できません。",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "フィードバックレコードをディレクトリで整理し、適切なワークスペースにデータを振り分けられます。ProプランおよびScaleプランでご利用いただけます。",
|
||||
"upgrade_prompt_title": "アップグレードしてフィードバックレコードディレクトリを利用",
|
||||
"workspace_access": "ワークスペースアクセス",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "既にリンクされているワークスペース",
|
||||
"workspaces_being_added": "アクセス権が付与されるワークスペース"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "ソースを追加",
|
||||
"allowed_values": "許可される値: {values}",
|
||||
"api_ingestion": "API取り込み",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "管理APIを使用してフィードバックレコードを送信します。",
|
||||
"auto_generated": "自動生成",
|
||||
"change_file": "ファイルを変更",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "値 (ブール値)",
|
||||
"value_date": "値 (日付)",
|
||||
"value_number": "値(数値)",
|
||||
"value_text": "値 (テキスト)"
|
||||
"value_text": "値 (テキスト)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "Filter toevoegen",
|
||||
"add_to_dashboard": "Toevoegen aan dashboard",
|
||||
"advanced_chart_builder_config_prompt": "Configureer je grafiek en klik op \"Query uitvoeren\" om een voorbeeld te zien",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "AI is niet geconfigureerd op deze instantie. Neem contact op met je beheerder.",
|
||||
"ai_not_available": "AI-data-analyse is niet beschikbaar.",
|
||||
"ai_not_enabled": "AI-data-analyse is uitgeschakeld voor deze organisatie. Schakel het in bij de organisatie-instellingen.",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "bijv. Hoeveel gebruikers hebben zich vorige week aangemeld?",
|
||||
"ai_query_section_description": "Beschrijf wat je wilt zien en laat AI de grafiek bouwen.",
|
||||
"ai_query_section_title": "Vraag het aan je data",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "Al op dashboard",
|
||||
"and_filter_logic": "EN",
|
||||
"apply_changes": "Wijzigingen toepassen",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "Feedbackmappen",
|
||||
"no_access": "Je hebt geen toestemming om feedbackmappen te beheren.",
|
||||
"no_connectors": "Nog geen feedbackbronnen gekoppeld aan deze directory.",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "Het pauzeren van deze feedbackbronnen stopt het toevoegen van nieuwe gegevens.",
|
||||
"pause_connectors_confirmation_title": "Gekoppelde feedbackbronnen pauzeren?",
|
||||
"select_workspaces_placeholder": "Selecteer werkruimtes...",
|
||||
"show_archived": "Gearchiveerde weergeven",
|
||||
"title": "Feedbackmappen",
|
||||
"unarchive": "Dearchiveren",
|
||||
"unarchive_workspace_conflict": "Deze map kan niet worden gedearchiveerd omdat een of meer toegewezen workspaces zijn gearchiveerd.",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "Organiseer feedbackrecords in mappen en routeer gegevens naar de juiste workspace. Beschikbaar op de Pro- en Scale-abonnementen.",
|
||||
"upgrade_prompt_title": "Upgrade om Feedbackrecord Mappen te ontgrendelen",
|
||||
"workspace_access": "Workspace-toegang",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "Reeds gekoppelde werkruimtes",
|
||||
"workspaces_being_added": "Werkruimtes die toegang krijgen"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "Bron toevoegen",
|
||||
"allowed_values": "Toegestane waarden: {values}",
|
||||
"api_ingestion": "API-inname",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Verstuur feedbackrecords via de Management API.",
|
||||
"auto_generated": "Automatisch gegenereerd",
|
||||
"change_file": "Bestand wijzigen",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "Waarde (Booleaans)",
|
||||
"value_date": "Waarde (datum)",
|
||||
"value_number": "Waarde (getal)",
|
||||
"value_text": "Waarde (tekst)"
|
||||
"value_text": "Waarde (tekst)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "Adicionar filtro",
|
||||
"add_to_dashboard": "Adicionar ao painel",
|
||||
"advanced_chart_builder_config_prompt": "Configure seu gráfico e clique em \"Executar consulta\" para visualizar",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "A IA não está configurada nesta instância. Entre em contato com seu administrador.",
|
||||
"ai_not_available": "A análise de dados com IA não está disponível.",
|
||||
"ai_not_enabled": "A análise de dados com IA está desabilitada para esta organização. Habilite nas configurações da organização.",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "ex: Quantos usuários se cadastraram na semana passada?",
|
||||
"ai_query_section_description": "Descreva o que você quer ver e deixe a IA construir o gráfico.",
|
||||
"ai_query_section_title": "Pergunte aos seus dados",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "Já está no painel",
|
||||
"and_filter_logic": "E",
|
||||
"apply_changes": "Aplicar alterações",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "Diretórios de Feedback",
|
||||
"no_access": "Você não tem permissão para gerenciar diretórios de feedback.",
|
||||
"no_connectors": "Nenhuma fonte de feedback vinculada a este diretório ainda.",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "Pausar essas fontes de feedback impedirá que novos registros sejam adicionados.",
|
||||
"pause_connectors_confirmation_title": "Pausar fontes de feedback vinculadas?",
|
||||
"select_workspaces_placeholder": "Selecionar espaços de trabalho...",
|
||||
"show_archived": "Mostrar arquivados",
|
||||
"title": "Diretórios de Feedback",
|
||||
"unarchive": "Desarquivar",
|
||||
"unarchive_workspace_conflict": "Não é possível desarquivar este diretório porque um ou mais workspaces atribuídos estão arquivados.",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "Organize registros de feedback em diretórios e direcione dados para o workspace certo. Disponível nos planos Pro e Scale.",
|
||||
"upgrade_prompt_title": "Faça upgrade para desbloquear Diretórios de Registros de Feedback",
|
||||
"workspace_access": "Acesso ao workspace",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "Workspaces já vinculados",
|
||||
"workspaces_being_added": "Workspaces recebendo acesso"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "Adicionar fonte",
|
||||
"allowed_values": "Valores permitidos: {values}",
|
||||
"api_ingestion": "Ingestão de API",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Envie registros de feedback usando a API de Gerenciamento.",
|
||||
"auto_generated": "Gerado automaticamente",
|
||||
"change_file": "Alterar arquivo",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "Valor (Booleano)",
|
||||
"value_date": "Valor (Data)",
|
||||
"value_number": "Valor (Número)",
|
||||
"value_text": "Valor (Texto)"
|
||||
"value_text": "Valor (Texto)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "Adicionar filtro",
|
||||
"add_to_dashboard": "Adicionar ao painel",
|
||||
"advanced_chart_builder_config_prompt": "Configura o teu gráfico e clica em \"Executar consulta\" para pré-visualizar",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "A IA não está configurada nesta instância. Contacta o teu administrador.",
|
||||
"ai_not_available": "A análise de dados por IA não está disponível.",
|
||||
"ai_not_enabled": "A análise de dados por IA está desativada para esta organização. Ativa-a nas definições da organização.",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "ex: Quantos utilizadores se registaram na semana passada?",
|
||||
"ai_query_section_description": "Descreve o que queres ver e deixa a IA construir o gráfico.",
|
||||
"ai_query_section_title": "Pergunta aos teus dados",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "Já está no painel",
|
||||
"and_filter_logic": "E",
|
||||
"apply_changes": "Aplicar alterações",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "Diretórios de Feedback",
|
||||
"no_access": "Não tens permissão para gerir diretórios de feedback.",
|
||||
"no_connectors": "Ainda sem fontes de feedback associadas a este diretório.",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "Pausar estas fontes de feedback irá impedir a adição de novos registos.",
|
||||
"pause_connectors_confirmation_title": "Pausar fontes de feedback associadas?",
|
||||
"select_workspaces_placeholder": "Selecionar espaços de trabalho...",
|
||||
"show_archived": "Mostrar arquivados",
|
||||
"title": "Diretórios de Feedback",
|
||||
"unarchive": "Desarquivar",
|
||||
"unarchive_workspace_conflict": "Não é possível desarquivar este diretório porque um ou mais workspaces atribuídos estão arquivados.",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "Organiza os registos de feedback em diretórios e encaminha os dados para o workspace certo. Disponível nos planos Pro e Scale.",
|
||||
"upgrade_prompt_title": "Faz upgrade para desbloquear Diretórios de Registos de Feedback",
|
||||
"workspace_access": "Acesso ao workspace",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "Workspaces já vinculados",
|
||||
"workspaces_being_added": "Workspaces a receber acesso"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "Adicionar fonte",
|
||||
"allowed_values": "Valores permitidos: {values}",
|
||||
"api_ingestion": "Ingestão de API",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Envia registos de feedback através da API de gestão.",
|
||||
"auto_generated": "Gerado automaticamente",
|
||||
"change_file": "Alterar ficheiro",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "Valor (Booleano)",
|
||||
"value_date": "Valor (Data)",
|
||||
"value_number": "Valor (Número)",
|
||||
"value_text": "Valor (Texto)"
|
||||
"value_text": "Valor (Texto)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "Adaugă filtru",
|
||||
"add_to_dashboard": "Adaugă la Tablou de Bord",
|
||||
"advanced_chart_builder_config_prompt": "Configurează graficul și apasă pe \"Rulează interogarea\" pentru previzualizare",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "AI nu este configurat pe această instanță. Contactează administratorul.",
|
||||
"ai_not_available": "Analiza datelor cu AI nu este disponibilă.",
|
||||
"ai_not_enabled": "Analiza datelor cu AI este dezactivată pentru această organizație. Activează-o în setările organizației.",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "ex: Câți utilizatori s-au înscris săptămâna trecută?",
|
||||
"ai_query_section_description": "Descrie ce vrei să vezi și lasă AI-ul să construiască graficul.",
|
||||
"ai_query_section_title": "Întreabă-ți datele",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "Deja pe tabloul de bord",
|
||||
"and_filter_logic": "ȘI",
|
||||
"apply_changes": "Aplică modificările",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "Directoare de feedback",
|
||||
"no_access": "Nu ai permisiunea de a gestiona directoarele de feedback.",
|
||||
"no_connectors": "Nicio sursă de feedback conectată la acest director încă.",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "Pauza acestor surse de feedback va opri adăugarea de noi înregistrări.",
|
||||
"pause_connectors_confirmation_title": "Pui pe pauză sursele de feedback conectate?",
|
||||
"select_workspaces_placeholder": "Selectează spații de lucru...",
|
||||
"show_archived": "Afișează arhivate",
|
||||
"title": "Directoare de Feedback",
|
||||
"unarchive": "Dezarhivează",
|
||||
"unarchive_workspace_conflict": "Acest director nu poate fi dezarhivat deoarece unul sau mai multe spații de lucru alocate sunt arhivate.",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "Organizează înregistrările de feedback în directoare și direcționează datele către workspace-ul potrivit. Disponibile în planurile Pro și Scale.",
|
||||
"upgrade_prompt_title": "Actualizează pentru a debloca Directoarele pentru Înregistrări de Feedback",
|
||||
"workspace_access": "Acces la spațiul de lucru",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "Spații de lucru deja conectate",
|
||||
"workspaces_being_added": "Spații de lucru cărora li se acordă acces"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "Adaugă sursă",
|
||||
"allowed_values": "Valori permise: {values}",
|
||||
"api_ingestion": "Ingestie API",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Trimite înregistrări de feedback folosind API-ul de management.",
|
||||
"auto_generated": "Generat automat",
|
||||
"change_file": "Schimbă fișierul",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "Valoare (booleană)",
|
||||
"value_date": "Valoare (data)",
|
||||
"value_number": "Valoare (număr)",
|
||||
"value_text": "Valoare (Text)"
|
||||
"value_text": "Valoare (Text)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "Добавить фильтр",
|
||||
"add_to_dashboard": "Добавить на панель",
|
||||
"advanced_chart_builder_config_prompt": "Настрой график и нажми «Выполнить запрос», чтобы посмотреть предварительный просмотр",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "ИИ не настроен на этом экземпляре. Свяжитесь с администратором.",
|
||||
"ai_not_available": "Анализ данных с помощью ИИ недоступен.",
|
||||
"ai_not_enabled": "Анализ данных с помощью ИИ отключён для этой организации. Включите его в настройках организации.",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "например: Сколько пользователей зарегистрировались на прошлой неделе?",
|
||||
"ai_query_section_description": "Опиши, что хочешь увидеть, и AI построит график.",
|
||||
"ai_query_section_title": "Спроси свои данные",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "Уже на дашборде",
|
||||
"and_filter_logic": "И",
|
||||
"apply_changes": "Применить изменения",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "Каталоги отзывов",
|
||||
"no_access": "У тебя нет прав для управления директориями обратной связи.",
|
||||
"no_connectors": "К этому каталогу пока не привязаны источники отзывов.",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "Приостановка этих источников отзывов остановит добавление новых записей.",
|
||||
"pause_connectors_confirmation_title": "Приостановить связанные источники отзывов?",
|
||||
"select_workspaces_placeholder": "Выберите рабочие области...",
|
||||
"show_archived": "Показать архивные",
|
||||
"title": "Директории обратной связи",
|
||||
"unarchive": "Разархивировать",
|
||||
"unarchive_workspace_conflict": "Невозможно разархивировать этот каталог, потому что один или несколько назначенных рабочих пространств архивированы.",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "Организуй записи обратной связи в директории и направляй данные в нужное рабочее пространство. Доступно в тарифах Pro и Scale.",
|
||||
"upgrade_prompt_title": "Обнови тариф, чтобы получить доступ к директориям записей обратной связи",
|
||||
"workspace_access": "Доступ к рабочему пространству",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "Уже связанные рабочие пространства",
|
||||
"workspaces_being_added": "Рабочие пространства, которым предоставляется доступ"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "Добавить источник",
|
||||
"allowed_values": "Допустимые значения: {values}",
|
||||
"api_ingestion": "Импорт через API",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Отправляйте записи обратной связи через Management API.",
|
||||
"auto_generated": "Автоматически генерируется",
|
||||
"change_file": "Изменить файл",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "Значение (логическое)",
|
||||
"value_date": "Значение (Дата)",
|
||||
"value_number": "Значение (число)",
|
||||
"value_text": "Значение (текст)"
|
||||
"value_text": "Значение (текст)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "Lägg till filter",
|
||||
"add_to_dashboard": "Lägg till på instrumentpanelen",
|
||||
"advanced_chart_builder_config_prompt": "Konfigurera ditt diagram och klicka på \"Kör fråga\" för att förhandsgranska",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "AI är inte konfigurerad på denna instans. Kontakta din administratör.",
|
||||
"ai_not_available": "AI-dataanalys är inte tillgänglig.",
|
||||
"ai_not_enabled": "AI-dataanalys är inaktiverad för denna organisation. Aktivera det i organisationsinställningarna.",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "t.ex. Hur många användare registrerade sig förra veckan?",
|
||||
"ai_query_section_description": "Beskriv vad du vill se så bygger AI diagrammet åt dig.",
|
||||
"ai_query_section_title": "Fråga din data",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "Redan på instrumentpanelen",
|
||||
"and_filter_logic": "OCH",
|
||||
"apply_changes": "Verkställ ändringar",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "Feedbackkataloger",
|
||||
"no_access": "Du har inte behörighet att hantera feedback-kataloger.",
|
||||
"no_connectors": "Inga feedbackkällor länkade till den här katalogen ännu.",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "Att pausa dessa feedbackkällor kommer att stoppa nya poster från att läggas till.",
|
||||
"pause_connectors_confirmation_title": "Pausa länkade feedbackkällor?",
|
||||
"select_workspaces_placeholder": "Välj arbetsytor...",
|
||||
"show_archived": "Visa arkiverade",
|
||||
"title": "Feedback-kataloger",
|
||||
"unarchive": "Avarkivera",
|
||||
"unarchive_workspace_conflict": "Den här katalogen kan inte avarkiveras eftersom en eller flera tilldelade arbetsytor är arkiverade.",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "Organisera feedbackposter i kataloger och dirigera data till rätt arbetsyta. Tillgängligt på Pro- och Scale-planerna.",
|
||||
"upgrade_prompt_title": "Uppgradera för att låsa upp Feedbackpostkataloger",
|
||||
"workspace_access": "Arbetsyteåtkomst",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "Redan länkade arbetsytor",
|
||||
"workspaces_being_added": "Arbetsytor som beviljas åtkomst"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "Lägg till källa",
|
||||
"allowed_values": "Tillåtna värden: {values}",
|
||||
"api_ingestion": "API ingestion",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Send feedback records using the Management API.",
|
||||
"auto_generated": "Automatiskt genererad",
|
||||
"change_file": "Byt fil",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "Värde (booleskt)",
|
||||
"value_date": "Värde (datum)",
|
||||
"value_number": "Värde (antal)",
|
||||
"value_text": "Värde (text)"
|
||||
"value_text": "Värde (text)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "Filtre ekle",
|
||||
"add_to_dashboard": "Panoya Ekle",
|
||||
"advanced_chart_builder_config_prompt": "Grafiğini yapılandır ve önizleme için \"Sorguyu Çalıştır\"a tıkla",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "Bu örnekte AI yapılandırılmamış. Yöneticinle iletişime geç.",
|
||||
"ai_not_available": "AI veri analizi mevcut değil.",
|
||||
"ai_not_enabled": "Bu organizasyon için AI veri analizi devre dışı. Organizasyon ayarlarından etkinleştir.",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "örn. Geçen hafta kaç kullanıcı kaydoldu?",
|
||||
"ai_query_section_description": "Ne görmek istediğini anlat, AI grafiği oluştursun.",
|
||||
"ai_query_section_title": "Verilerine sor",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "Zaten panoda",
|
||||
"and_filter_logic": "VE",
|
||||
"apply_changes": "Değişiklikleri Uygula",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "Geri Bildirim Dizinleri",
|
||||
"no_access": "Geri bildirim dizinlerini yönetme yetkin yok.",
|
||||
"no_connectors": "Bu dizine henüz bağlı geri bildirim kaynağı yok.",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "Bu geri bildirim kaynaklarını duraklatmak, yeni kayıtların eklenmesini durdurur.",
|
||||
"pause_connectors_confirmation_title": "Bağlı geri bildirim kaynakları duraklatılsın mı?",
|
||||
"select_workspaces_placeholder": "Çalışma alanlarını seç...",
|
||||
"show_archived": "Arşivlenmişleri göster",
|
||||
"title": "Geri Bildirim Dizinleri",
|
||||
"unarchive": "Arşivden çıkar",
|
||||
"unarchive_workspace_conflict": "Atanmış çalışma alanlarından biri veya daha fazlası arşivlendiği için bu dizin arşivden çıkarılamaz.",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "Geri bildirim kayıtlarını dizinler halinde düzenleyin ve verileri doğru çalışma alanına yönlendirin. Pro ve Scale planlarında kullanılabilir.",
|
||||
"upgrade_prompt_title": "Geri Bildirim Kayıt Dizinlerinin Kilidini Açmak İçin Yükseltin",
|
||||
"workspace_access": "Çalışma alanı erişimi",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "Zaten bağlı çalışma alanları",
|
||||
"workspaces_being_added": "Erişim verilen çalışma alanları"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "Kaynak ekle",
|
||||
"allowed_values": "İzin verilen değerler: {values}",
|
||||
"api_ingestion": "API ingestion",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Send feedback records using the Management API.",
|
||||
"auto_generated": "Otomatik olarak oluşturuldu",
|
||||
"change_file": "Dosyayı değiştir",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "Değer (Boolean)",
|
||||
"value_date": "Değer (Tarih)",
|
||||
"value_number": "Değer (Sayı)",
|
||||
"value_text": "Değer (Metin)"
|
||||
"value_text": "Değer (Metin)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "添加过滤器",
|
||||
"add_to_dashboard": "添加到 Dashboard",
|
||||
"advanced_chart_builder_config_prompt": "配置你的图表,然后点击“运行查询”预览",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "此实例未配置 AI。请联系您的管理员。",
|
||||
"ai_not_available": "AI 数据分析不可用。",
|
||||
"ai_not_enabled": "此组织已禁用 AI 数据分析。请在组织设置中启用。",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "例如:上周有多少用户注册?",
|
||||
"ai_query_section_description": "描述你想要看到的内容,让 AI 帮你生成图表。",
|
||||
"ai_query_section_title": "向你的数据提问",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "已在仪表板上",
|
||||
"and_filter_logic": "且",
|
||||
"apply_changes": "应用更改",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "反馈目录",
|
||||
"no_access": "你没有管理反馈目录的权限。",
|
||||
"no_connectors": "暂未关联反馈来源到此目录。",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "暂停这些反馈来源后,将不会有新记录添加进来。",
|
||||
"pause_connectors_confirmation_title": "暂停关联反馈来源?",
|
||||
"select_workspaces_placeholder": "选择工作区...",
|
||||
"show_archived": "显示已归档",
|
||||
"title": "反馈目录",
|
||||
"unarchive": "取消归档",
|
||||
"unarchive_workspace_conflict": "无法取消归档该目录,因为一个或多个已分配工作区已归档。",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "将反馈记录整理到目录中,并将数据路由到正确的工作空间。专业版和规模版方案可用。",
|
||||
"upgrade_prompt_title": "升级以解锁反馈记录目录",
|
||||
"workspace_access": "工作区访问权限",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "已关联的工作区",
|
||||
"workspaces_being_added": "将被授权访问的工作区"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "添加来源",
|
||||
"allowed_values": "允许的值:{values}",
|
||||
"api_ingestion": "API ingestion",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Send feedback records using the Management API.",
|
||||
"auto_generated": "自动生成",
|
||||
"change_file": "更换文件",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "值(布尔值)",
|
||||
"value_date": "值(日期)",
|
||||
"value_number": "值(数量)",
|
||||
"value_text": "值(文本)"
|
||||
"value_text": "值(文本)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "客户努力评分",
|
||||
|
||||
@@ -1667,6 +1667,7 @@
|
||||
"add_filter": "新增篩選器",
|
||||
"add_to_dashboard": "新增到儀表板",
|
||||
"advanced_chart_builder_config_prompt": "設定你的圖表,然後點擊「執行查詢」預覽",
|
||||
"ai_enable_in_settings": "Enable it in organization settings.",
|
||||
"ai_instance_not_configured": "此執行個體未設定 AI。請聯絡您的管理員。",
|
||||
"ai_not_available": "AI 資料分析無法使用。",
|
||||
"ai_not_enabled": "此組織已停用 AI 資料分析。請在組織設定中啟用。",
|
||||
@@ -1674,6 +1675,7 @@
|
||||
"ai_query_placeholder": "例如:上週有多少用戶註冊?",
|
||||
"ai_query_section_description": "描述你想看到的內容,讓 AI 幫你建立圖表。",
|
||||
"ai_query_section_title": "詢問你的數據",
|
||||
"ai_upgrade_plan": "Upgrade plan.",
|
||||
"already_on_dashboard": "已在儀表板上",
|
||||
"and_filter_logic": "且",
|
||||
"apply_changes": "套用變更",
|
||||
@@ -2591,16 +2593,19 @@
|
||||
"nav_label": "意見回饋目錄",
|
||||
"no_access": "你沒有權限管理意見回饋目錄。",
|
||||
"no_connectors": "此目錄尚未連結任何回饋來源。",
|
||||
"no_unassigned_workspaces_description": "Every workspace is already linked to an active feedback directory. Remove a workspace from its current directory before assigning it here.",
|
||||
"no_unassigned_workspaces_title": "No unassigned workspaces available",
|
||||
"pause_connectors_confirmation_description": "暫停這些回饋來源將停止新增記錄。",
|
||||
"pause_connectors_confirmation_title": "暫停已連結的回饋來源?",
|
||||
"select_workspaces_placeholder": "選擇工作區...",
|
||||
"show_archived": "顯示已封存",
|
||||
"title": "意見回饋目錄",
|
||||
"unarchive": "取消封存",
|
||||
"unarchive_workspace_conflict": "無法取消封存此目錄,因為一個或多個已指派工作區已封存。",
|
||||
"unarchive_workspace_conflict": "Cannot unarchive this directory because one or more assigned workspaces already belong to another active feedback directory.",
|
||||
"upgrade_prompt_description": "將回饋記錄整理至目錄中,並將資料導向正確的工作區。專業版和企業版方案提供此功能。",
|
||||
"upgrade_prompt_title": "升級以解鎖回饋記錄目錄功能",
|
||||
"workspace_access": "工作區存取權限",
|
||||
"workspace_assigned_to_directory": "{workspaceName} is linked to {directoryName}",
|
||||
"workspaces_already_linked": "已連結的工作區",
|
||||
"workspaces_being_added": "正在授予存取權限的工作區"
|
||||
},
|
||||
@@ -3675,6 +3680,8 @@
|
||||
"add_source": "新增來源",
|
||||
"allowed_values": "允許的值:{values}",
|
||||
"api_ingestion": "API ingestion",
|
||||
"api_ingestion_setup_description": "Use the REST API to send feedback records directly into Formbricks. The API ingestion docs include the endpoint, payload shape, and authentication details.",
|
||||
"api_ingestion_setup_title": "Set up API ingestion",
|
||||
"api_ingestion_settings_description": "Send feedback records using the Management API.",
|
||||
"auto_generated": "自動生成",
|
||||
"change_file": "更換檔案",
|
||||
@@ -3865,7 +3872,8 @@
|
||||
"value_boolean": "值(布林值)",
|
||||
"value_date": "值(日期)",
|
||||
"value_number": "值(數量)",
|
||||
"value_text": "值(文字)"
|
||||
"value_text": "值(文字)",
|
||||
"view_rest_api_docs": "View REST API docs"
|
||||
},
|
||||
"xm-templates": {
|
||||
"ces": "CES",
|
||||
|
||||
@@ -8,10 +8,9 @@ import { useTranslation } from "react-i18next";
|
||||
import { getFormattedErrorMessage } from "@/lib/utils/helper";
|
||||
import { generateAIChartAction } from "@/modules/ee/analysis/charts/actions";
|
||||
import type { AnalyticsResponse } from "@/modules/ee/analysis/types/analysis";
|
||||
import { Alert } from "@/modules/ui/components/alert";
|
||||
import { Alert, AlertDescription } from "@/modules/ui/components/alert";
|
||||
import { Button } from "@/modules/ui/components/button";
|
||||
import { Input } from "@/modules/ui/components/input";
|
||||
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/modules/ui/components/tooltip";
|
||||
|
||||
interface AIQuerySectionProps {
|
||||
workspaceId: string;
|
||||
@@ -31,7 +30,13 @@ export function AIQuerySection({
|
||||
const [userQuery, setUserQuery] = useState("");
|
||||
const [isGenerating, setIsGenerating] = useState(false);
|
||||
const { t } = useTranslation();
|
||||
const showAIDataAnalysisDisabledAlert = !isAIAvailable && aiUnavailableReason === "not_enabled";
|
||||
|
||||
const aiUnavailableMessage =
|
||||
{
|
||||
not_in_plan: t("workspace.analysis.charts.ai_not_in_plan"),
|
||||
not_enabled: t("workspace.analysis.charts.ai_not_enabled"),
|
||||
instance_not_configured: t("workspace.analysis.charts.ai_instance_not_configured"),
|
||||
}[aiUnavailableReason ?? ""] ?? t("workspace.analysis.charts.ai_not_available");
|
||||
|
||||
const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
|
||||
e.preventDefault();
|
||||
@@ -83,54 +88,36 @@ export function AIQuerySection({
|
||||
maxLength={2000}
|
||||
disabled={!isAIAvailable || isGenerating}
|
||||
/>
|
||||
{showAIDataAnalysisDisabledAlert ? (
|
||||
<Button
|
||||
type="submit"
|
||||
variant="default"
|
||||
className="w-full"
|
||||
disabled={!isAIAvailable || !userQuery.trim() || isGenerating}
|
||||
loading={isGenerating}>
|
||||
<WandSparklesIcon className="h-4 w-4" />
|
||||
{t("workspace.analysis.charts.create_chart_with_ai")}
|
||||
</Button>
|
||||
) : (
|
||||
<TooltipProvider>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<div>
|
||||
<Button
|
||||
type="submit"
|
||||
variant="default"
|
||||
className="w-full"
|
||||
disabled={!isAIAvailable || !userQuery.trim() || isGenerating}
|
||||
loading={isGenerating}>
|
||||
<WandSparklesIcon className="h-4 w-4" />
|
||||
{t("workspace.analysis.charts.create_chart_with_ai")}
|
||||
</Button>
|
||||
</div>
|
||||
</TooltipTrigger>
|
||||
{!isAIAvailable && (
|
||||
<TooltipContent>
|
||||
{{
|
||||
not_in_plan: t("workspace.analysis.charts.ai_not_in_plan"),
|
||||
not_enabled: t("workspace.analysis.charts.ai_not_enabled"),
|
||||
instance_not_configured: t("workspace.analysis.charts.ai_instance_not_configured"),
|
||||
}[aiUnavailableReason ?? ""] ?? t("workspace.analysis.charts.ai_not_available")}
|
||||
</TooltipContent>
|
||||
)}
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
)}
|
||||
<Button
|
||||
type="submit"
|
||||
variant="default"
|
||||
className="w-full"
|
||||
disabled={!isAIAvailable || !userQuery.trim() || isGenerating}
|
||||
loading={isGenerating}>
|
||||
<WandSparklesIcon className="h-4 w-4" />
|
||||
{t("workspace.analysis.charts.create_chart_with_ai")}
|
||||
</Button>
|
||||
</form>
|
||||
</div>
|
||||
{showAIDataAnalysisDisabledAlert && (
|
||||
{!isAIAvailable && (
|
||||
<Alert variant="info" size="small">
|
||||
<span className="truncate">{t("workspace.surveys.edit.ai_data_analysis_disabled")}</span>
|
||||
<Link
|
||||
href={`/workspaces/${workspaceId}/settings/organization/general`}
|
||||
className="ml-2 inline-flex shrink-0 underline">
|
||||
Enable it in organization settings.
|
||||
</Link>
|
||||
<AlertDescription className="overflow-visible whitespace-normal">
|
||||
<span>{aiUnavailableMessage}</span>
|
||||
{aiUnavailableReason === "not_enabled" && (
|
||||
<Link
|
||||
href={`/workspaces/${workspaceId}/settings/organization/general`}
|
||||
className="ml-2 inline-flex shrink-0 underline">
|
||||
{t("workspace.analysis.charts.ai_enable_in_settings")}
|
||||
</Link>
|
||||
)}
|
||||
{aiUnavailableReason === "not_in_plan" && (
|
||||
<Link
|
||||
href={`/workspaces/${workspaceId}/settings/organization/billing`}
|
||||
className="ml-2 inline-flex shrink-0 underline">
|
||||
{t("workspace.analysis.charts.ai_upgrade_plan")}
|
||||
</Link>
|
||||
)}
|
||||
</AlertDescription>
|
||||
</Alert>
|
||||
)}
|
||||
</div>
|
||||
|
||||
+60
-1
@@ -23,6 +23,7 @@ import {
|
||||
getTranslatedFeedbackDirectoryError,
|
||||
} from "@/modules/ee/feedback-directory/types/feedback-directory";
|
||||
import { TOrganizationWorkspace } from "@/modules/ee/teams/team-list/types/workspace";
|
||||
import { Alert, AlertDescription, AlertTitle } from "@/modules/ui/components/alert";
|
||||
import { Button } from "@/modules/ui/components/button";
|
||||
import {
|
||||
Dialog,
|
||||
@@ -96,6 +97,34 @@ export const FeedbackDirectorySettingsModal = ({
|
||||
[orgWorkspaces, workspaceAccessMap, directory?.id]
|
||||
);
|
||||
|
||||
const workspaceConflictDetails = useMemo(
|
||||
() =>
|
||||
orgWorkspaces
|
||||
.map((workspace) => {
|
||||
const assignment = workspaceAccessMap.get(workspace.id);
|
||||
if (!assignment || assignment.feedbackDirectoryId === directory?.id) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
workspaceId: workspace.id,
|
||||
workspaceName: workspace.name,
|
||||
feedbackDirectoryName: assignment.feedbackDirectoryName,
|
||||
};
|
||||
})
|
||||
.filter(
|
||||
(
|
||||
conflict
|
||||
): conflict is {
|
||||
workspaceId: string;
|
||||
workspaceName: string;
|
||||
feedbackDirectoryName: string;
|
||||
} => conflict !== null
|
||||
)
|
||||
.sort((a, b) => a.workspaceName.localeCompare(b.workspaceName, undefined, { sensitivity: "base" })),
|
||||
[orgWorkspaces, workspaceAccessMap, directory?.id]
|
||||
);
|
||||
|
||||
const initialWorkspaceIds = useMemo(
|
||||
() => directory?.workspaces.map((workspace) => workspace.workspaceId) ?? [],
|
||||
[directory?.workspaces]
|
||||
@@ -117,6 +146,10 @@ export const FeedbackDirectorySettingsModal = ({
|
||||
setValue,
|
||||
reset,
|
||||
} = form;
|
||||
const selectedWorkspaceIds = form.watch("workspaceIds") ?? [];
|
||||
const hasUnassignedWorkspace = workspaceOptions.some((option) => !option.disabled);
|
||||
const showWorkspaceAccessBlockedExplanation =
|
||||
workspaceConflictDetails.length > 0 && !hasUnassignedWorkspace;
|
||||
|
||||
const workspaceNameById = useMemo(() => {
|
||||
const map = new Map(orgWorkspaces.map((workspace) => [workspace.id, workspace.name]));
|
||||
@@ -290,7 +323,7 @@ export const FeedbackDirectorySettingsModal = ({
|
||||
</Muted>
|
||||
<MultiSelect
|
||||
options={workspaceOptions}
|
||||
value={form.watch("workspaceIds") ?? []}
|
||||
value={selectedWorkspaceIds}
|
||||
onChange={(selected) => {
|
||||
setValue("workspaceIds", selected, { shouldDirty: true });
|
||||
}}
|
||||
@@ -298,6 +331,32 @@ export const FeedbackDirectorySettingsModal = ({
|
||||
placeholder={t("workspace.settings.feedback_directories.select_workspaces_placeholder")}
|
||||
containerClassName="focus-within:ring-0 focus-within:ring-offset-0"
|
||||
/>
|
||||
{showWorkspaceAccessBlockedExplanation && (
|
||||
<Alert variant="info" size="small" className="items-start">
|
||||
<div className="min-w-0 space-y-1">
|
||||
<AlertTitle className="truncate">
|
||||
{t("workspace.settings.feedback_directories.no_unassigned_workspaces_title")}
|
||||
</AlertTitle>
|
||||
<AlertDescription className="overflow-visible whitespace-normal">
|
||||
<p>
|
||||
{t(
|
||||
"workspace.settings.feedback_directories.no_unassigned_workspaces_description"
|
||||
)}
|
||||
</p>
|
||||
<ul className="mt-1 list-disc space-y-0.5 pl-4">
|
||||
{workspaceConflictDetails.map((conflict) => (
|
||||
<li key={conflict.workspaceId}>
|
||||
{t("workspace.settings.feedback_directories.workspace_assigned_to_directory", {
|
||||
workspaceName: conflict.workspaceName,
|
||||
directoryName: conflict.feedbackDirectoryName,
|
||||
})}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</AlertDescription>
|
||||
</div>
|
||||
</Alert>
|
||||
)}
|
||||
</div>
|
||||
|
||||
{isEdit && (
|
||||
|
||||
@@ -402,6 +402,7 @@ describe("FeedbackDirectory Service", () => {
|
||||
});
|
||||
|
||||
test("unarchives directory", async () => {
|
||||
vi.mocked(prisma.feedbackDirectory.findUnique).mockResolvedValueOnce(mockDirectoryDetailsDbRow as any);
|
||||
vi.mocked(prisma.feedbackDirectory.update).mockResolvedValueOnce({} as any);
|
||||
|
||||
const result = await updateFeedbackDirectory(mockDirectoryId, mockOrganizationId, {
|
||||
@@ -409,12 +410,35 @@ describe("FeedbackDirectory Service", () => {
|
||||
});
|
||||
|
||||
expect(result).toBe(true);
|
||||
expect(prisma.feedbackDirectoryWorkspace.findFirst).toHaveBeenCalledWith({
|
||||
where: {
|
||||
workspaceId: { in: [mockWorkspaceId1, mockWorkspaceId2] },
|
||||
feedbackDirectoryId: { not: mockDirectoryId },
|
||||
feedbackDirectory: { isArchived: false },
|
||||
},
|
||||
select: { workspaceId: true },
|
||||
});
|
||||
expect(prisma.feedbackDirectory.update).toHaveBeenCalledWith({
|
||||
where: { id: mockDirectoryId },
|
||||
data: { isArchived: false },
|
||||
});
|
||||
});
|
||||
|
||||
test("throws InvalidInputError when unarchiving would assign a workspace to two active directories", async () => {
|
||||
vi.mocked(prisma.feedbackDirectory.findUnique).mockResolvedValueOnce(mockDirectoryDetailsDbRow as any);
|
||||
vi.mocked(prisma.feedbackDirectoryWorkspace.findFirst).mockResolvedValueOnce({
|
||||
workspaceId: mockWorkspaceId1,
|
||||
} as any);
|
||||
|
||||
await expect(
|
||||
updateFeedbackDirectory(mockDirectoryId, mockOrganizationId, {
|
||||
isArchived: false,
|
||||
})
|
||||
).rejects.toThrow(new InvalidInputError("WORKSPACE_ALREADY_ASSIGNED_TO_DIFFERENT_DIRECTORY"));
|
||||
|
||||
expect(prisma.feedbackDirectory.update).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("updates workspace assignments with diff", async () => {
|
||||
// getFeedbackDirectoryDetails call
|
||||
vi.mocked(prisma.feedbackDirectory.findUnique).mockResolvedValueOnce(mockDirectoryDetailsDbRow as any);
|
||||
|
||||
@@ -383,6 +383,16 @@ const getArchiveUpdate = async (
|
||||
}
|
||||
|
||||
if (isArchived === false) {
|
||||
const currentDetails = await getFeedbackDirectoryDetails(directoryId);
|
||||
if (!currentDetails) {
|
||||
throw new ResourceNotFoundError("FeedbackDirectory", directoryId);
|
||||
}
|
||||
|
||||
await assertWorkspacesNotAssignedElsewhere(
|
||||
directoryId,
|
||||
currentDetails.workspaces.map((workspace) => workspace.workspaceId)
|
||||
);
|
||||
|
||||
return { isArchived: false };
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
importHistoricalResponsesAction,
|
||||
} from "@/lib/connector/actions";
|
||||
import { getFormattedErrorMessage } from "@/lib/utils/helper";
|
||||
import { Alert } from "@/modules/ui/components/alert";
|
||||
import { Alert, AlertDescription, AlertTitle } from "@/modules/ui/components/alert";
|
||||
import { Button } from "@/modules/ui/components/button";
|
||||
import {
|
||||
Dialog,
|
||||
@@ -66,6 +66,9 @@ import { ConnectorTypeSelector } from "./connector-type-selector";
|
||||
import { CsvConnectorUI } from "./csv-connector-ui";
|
||||
import { FormbricksQuestionList } from "./formbricks-question-list";
|
||||
|
||||
const API_INGESTION_DOCS_URL = "https://formbricks.com/docs/unify-feedback/api/rest-api";
|
||||
const FEEDBACK_RECORD_MCP_DOCS_URL = "https://formbricks.com/docs/unify-feedback/api/mcp";
|
||||
|
||||
interface CreateConnectorModalProps {
|
||||
open: boolean;
|
||||
onOpenChange: (open: boolean) => void;
|
||||
@@ -107,7 +110,7 @@ const getDialogDescription = (
|
||||
const getNextStepButtonLabel = (type: TConnectorOptionId | null, t: (key: string) => string): string => {
|
||||
if (type === "formbricks_survey") return t("workspace.unify.select_questions");
|
||||
if (type === "csv") return t("workspace.unify.configure_import");
|
||||
if (type === "api_ingestion") return t("common.learn_more");
|
||||
if (type === "api_ingestion") return t("workspace.unify.view_rest_api_docs");
|
||||
if (type === "feedback_record_mcp") return t("common.learn_more");
|
||||
return t("workspace.unify.create_mapping");
|
||||
};
|
||||
@@ -260,12 +263,12 @@ export const CreateConnectorModal = ({
|
||||
if (currentStep !== "selectType" || !selectedType) return;
|
||||
|
||||
if (selectedType === "api_ingestion") {
|
||||
window.open("https://formbricks.com/docs/unify-feedback/api/rest-api", "_blank", "noopener,noreferrer");
|
||||
window.open(API_INGESTION_DOCS_URL, "_blank", "noopener,noreferrer");
|
||||
return;
|
||||
}
|
||||
|
||||
if (selectedType === "feedback_record_mcp") {
|
||||
window.open("https://formbricks.com/docs/unify-feedback/api/mcp", "_blank", "noopener,noreferrer");
|
||||
window.open(FEEDBACK_RECORD_MCP_DOCS_URL, "_blank", "noopener,noreferrer");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -479,6 +482,16 @@ export const CreateConnectorModal = ({
|
||||
workspaceId={workspaceId}
|
||||
/>
|
||||
)}
|
||||
{currentStep === "selectType" && selectedType === "api_ingestion" && (
|
||||
<Alert variant="info" size="small" className="mt-3 items-start">
|
||||
<div className="min-w-0 space-y-1">
|
||||
<AlertTitle>{t("workspace.unify.api_ingestion_setup_title")}</AlertTitle>
|
||||
<AlertDescription className="overflow-visible whitespace-normal">
|
||||
<p>{t("workspace.unify.api_ingestion_setup_description")}</p>
|
||||
</AlertDescription>
|
||||
</div>
|
||||
</Alert>
|
||||
)}
|
||||
|
||||
{currentStep === "mapping" && selectedType === "formbricks_survey" && (
|
||||
<FormProvider {...formbricksForm}>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { createId } from "@paralleldrive/cuid2";
|
||||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import readline from "node:readline";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { createId } from "@paralleldrive/cuid2";
|
||||
import { logger } from "@formbricks/logger";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { type Prisma, PrismaClient } from "@prisma/client";
|
||||
import { exec } from "node:child_process";
|
||||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { promisify } from "node:util";
|
||||
import { type Prisma, PrismaClient } from "@prisma/client";
|
||||
import { logger } from "@formbricks/logger";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
|
||||
@@ -5,10 +5,10 @@ import { cn } from "@/lib/utils";
|
||||
|
||||
export type ButtonVariant = "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | "custom";
|
||||
export type ButtonSize = "default" | "custom" | "sm" | "lg" | "icon";
|
||||
type ButtonVariantProps = {
|
||||
interface ButtonVariantProps {
|
||||
variant?: ButtonVariant | null;
|
||||
size?: ButtonSize | null;
|
||||
};
|
||||
}
|
||||
type ButtonVariantClassProps =
|
||||
| (ButtonVariantProps & { class?: string; className?: never })
|
||||
| (ButtonVariantProps & { class?: never; className?: string })
|
||||
|
||||
Reference in New Issue
Block a user