Pular para o conteúdo

Exportação de Dados

data_export.png

Exporte seus dados Firestore diretamente do seu painel de administração. O Plugin de Exportação de Dados adiciona exportação JSON e CSV com um único clique a qualquer coleção do FireCMS.

Primeiro, certifique-se de ter instalado as dependências necessárias. Para usar o plugin, você precisa ter o FireCMS configurado em seu projeto.

yarn add @firecms/data_export

ou

npm install @firecms/data_export

O plugin requer configuração mínima e pode ser facilmente integrado à sua configuração do FireCMS. Você pode personalizar o comportamento de exportação usando ExportPluginProps.

Abaixo estão os parâmetros que você pode configurar:

  • exportAllowed: Uma função que determina se a exportação é permitida com base nos parâmetros fornecidos.
    • Tipo: (props: ExportAllowedParams) => boolean
    • Padrão: undefined (a exportação é permitida por padrão)
  • notAllowedView: Um nó React para exibir quando a exportação não é permitida.
    • Tipo: React.ReactNode
    • Padrão: undefined
  • onAnalyticsEvent: Uma função callback acionada em eventos de analytics relacionados à exportação.
    • Tipo: (event: string, params?: any) => void
    • Padrão: undefined

O tipo ExportAllowedParams fornece contexto para a função exportAllowed:

  • collectionEntitiesCount: O número de entidades na coleção.
    • Tipo: number
  • path: O caminho da coleção no FireCMS.
    • Tipo: string
  • collection: A entidade de coleção.
    • Tipo: EntityCollection

O principal hook para utilizar a funcionalidade do plugin é useExportPlugin. Aqui está um exemplo de como usá-lo:

import React from "react";
import { FireCMS } from "@firecms/core";
import { useExportPlugin } from "@firecms/data_export";
function App() {
const exportPlugin = useExportPlugin({
exportAllowed: ({
collectionEntitiesCount,
path,
collection
}) => {
// Exemplo: Permitir exportação apenas se houver mais de 10 entidades
return collectionEntitiesCount > 10;
},
notAllowedView: <div>Exportação não é permitida.</div>,
onAnalyticsEvent: (event, params) => {
console.log(`Export Event: ${event}`, params);
},
});
const plugins = [exportPlugin];
const navigationController = useBuildNavigationController({
// ... restante da configuração
plugins
});
return (
<FireCMS
navigationController={navigationController}
{/*... restante da sua configuração */}
>
{({ context, loading }) => {
// ... seus componentes
}}
</FireCMS>
);
}
export default App;

Para integrar o Plugin de Exportação de Dados no FireCMS, use o hook useExportPlugin e passe o plugin resultante para a configuração do FireCMS. Você normalmente vai querer fazer isso no seu componente App principal.

Uma vez integrado o plugin, você pode usar a funcionalidade de exportação diretamente nas suas views de coleção. O plugin adiciona ações de exportação às suas views de coleção, permitindo que os usuários exportem dados como JSON ou CSV.

  1. Navegue até a coleção desejada no seu aplicativo FireCMS.
  2. Clique na ação Export na toolbar de ações da coleção.
  3. Escolha o formato de exportação desejado (JSON ou CSV).
  4. O arquivo exportado será baixado para o seu dispositivo.

Você pode personalizar como a funcionalidade de exportação se comporta fornecendo implementações personalizadas para as props exportAllowed, notAllowedView e onAnalyticsEvent.

Exemplo: Restringindo Exportação com Base no Papel do Usuário

Seção intitulada “Exemplo: Restringindo Exportação com Base no Papel do Usuário”
const exportPlugin = useExportPlugin({
exportAllowed: ({
collection,
path,
collectionEntitiesCount
}) => {
// Permitir exportação apenas para admins
return userRoles.includes('admin');
},
notAllowedView: <div>Apenas administradores podem exportar dados.</div>,
onAnalyticsEvent: (event, params) => {
// Registrar eventos de exportação para auditoria
logAnalytics(event, params);
},
});

Define as propriedades que podem ser passadas para o hook useExportPlugin.

export type ExportPluginProps = {
exportAllowed?: (props: ExportAllowedParams) => boolean;
notAllowedView?: React.ReactNode;
onAnalyticsEvent?: (event: string, params?: any) => void;
}

Fornece contexto para determinar se a exportação é permitida.

export type ExportAllowedParams = {
collectionEntitiesCount: number;
path: string;
collection: EntityCollection;
};