logologo
Começar
Manual
Desenvolvimento
Plugins
API
Início
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Começar
Manual
Desenvolvimento
Plugins
API
Início
logologo
Visão Geral

Fontes de Dados

Gerenciamento de Fontes de Dados
Fonte de Dados Principal

Fonte de Dados Externa (Banco de Dados)

Introdução
MySQL Externo
MariaDB Externo
PostgreSQL Externo
MSSQL Externo
Oracle Externo
Comparação: Banco de Dados Principal vs. Externo
Fonte de Dados REST API
Fonte de Dados KingbaseES

Tabelas de Dados

Visão Geral
Tabela Comum
Tabela de Herança
Tabela de Arquivos
Tabela em Árvore
Tabela de Calendário
Tabela de Comentários
Tabela de Expressão
Tabela SQL
View de Banco de Dados

Campos da Tabela de Dados

Visão Geral
Validação de Campo

Tipos Básicos

Texto (Linha Única)
Texto (Múltiplas Linhas)
Número de Telefone
E-mail
URL
Inteiro
Número
Percentual
Senha
Cor
Ícone

Tipos de Seleção

Caixa de Seleção
Menu Suspenso (Seleção Única)
Menu Suspenso (Seleção Múltipla)
Botão de Rádio
Caixas de Seleção

Multimídia

Markdown
Markdown(Vditor)
Texto Rico
Anexo (Relação)
Anexo (URL)

Data e Hora

Visão Geral
Data e Hora (com fuso horário)
Data e Hora (sem fuso horário)
Timestamp Unix
Data (sem hora)
Hora

Formas Geométricas

Ponto
Linha
Círculo
Polígono

Tipos Avançados

UUID
Nano ID
Ordenação
Fórmula
Numeração Automática
JSON
Seletor de Tabela de Dados
Criptografado

Informações do Sistema

Data de Criação
Data da Última Modificação
Criado por
Modificado por
Espaço
Table OID

Tipos de Relação

Visão Geral
Um para Um
Um para Muitos
Muitos para Um
Muitos para Muitos
Muitos para Muitos (Array)

Desenvolvimento

Visão Geral
Next PageVisão Geral
Aviso de tradução por IA

Esta documentação foi traduzida automaticamente por IA.

#Desenvolvimento de Extensões

#Estendendo Tipos de Arquivo no Frontend

Para arquivos já carregados, a interface do usuário (UI) no frontend pode exibir diferentes pré-visualizações com base nos tipos de arquivo. O campo de anexo do gerenciador de arquivos possui uma pré-visualização de arquivo integrada baseada no navegador (embutida em um iframe), que suporta a maioria dos formatos de arquivo (como imagens, vídeos, áudios e PDFs) para visualização direta. Quando um tipo de arquivo não é suportado para pré-visualização no navegador, ou quando há necessidade de uma interação de pré-visualização especial, você pode estender os componentes de pré-visualização com base no tipo de arquivo.

#Exemplo

Por exemplo, se você quiser estender um componente de carrossel para arquivos de imagem, pode usar o seguinte código:

import match from 'mime-match';
import { Plugin, attachmentFileTypes } from '@nocobase/client';

class MyPlugin extends Plugin {
  load() {
    attachmentFileTypes.add({
      match(file) {
        return match(file.mimetype, 'image/*');
      },
      Previewer({ index, list, onSwitchIndex }) {
        const onDownload = useCallback(
          (e) => {
            e.preventDefault();
            const file = list[index];
            saveAs(file.url, `${file.title}${file.extname}`);
          },
          [index, list],
        );
        return (
          <LightBox
            // discourageDownloads={true}
            mainSrc={list[index]?.url}
            nextSrc={list[(index + 1) % list.length]?.url}
            prevSrc={list[(index + list.length - 1) % list.length]?.url}
            onCloseRequest={() => onSwitchIndex(null)}
            onMovePrevRequest={() => onSwitchIndex((index + list.length - 1) % list.length)}
            onMoveNextRequest={() => onSwitchIndex((index + 1) % list.length)}
            imageTitle={list[index]?.title}
            toolbarButtons={[
              <button
                key={'preview-img'}
                style={{ fontSize: 22, background: 'none', lineHeight: 1 }}
                type="button"
                aria-label="Download"
                title="Download"
                className="ril-zoom-in ril__toolbarItemChild ril__builtinButton"
                onClick={onDownload}
              >
                <DownloadOutlined />
              </button>,
            ]}
          />
        );
      },
    });
  }
}

O attachmentFileTypes é um objeto de entrada fornecido pelo pacote @nocobase/client para estender tipos de arquivo. Você pode usar o método add dele para estender um descritor de tipo de arquivo.

Cada tipo de arquivo deve implementar um método match() para verificar se o tipo de arquivo atende aos requisitos. No exemplo, o pacote mime-match é usado para verificar o atributo mimetype do arquivo. Se ele corresponder a image/*, é considerado um tipo de arquivo que precisa ser processado. Se não houver correspondência, ele retornará ao tratamento de tipo integrado.

A propriedade Previewer no descritor de tipo é o componente usado para pré-visualização. Quando o tipo de arquivo corresponde, este componente será renderizado para a pré-visualização. Geralmente, é recomendado usar um componente modal (como <Modal />) como contêiner base e colocar o conteúdo de pré-visualização e interação dentro desse componente para implementar a funcionalidade de pré-visualização.

#API

export interface FileModel {
  id: number;
  filename: string;
  path: string;
  title: string;
  url: string;
  extname: string;
  size: number;
  mimetype: string;
}

export interface PreviewerProps {
  index: number;
  list: FileModel[];
  onSwitchIndex(index): void;
}

export interface AttachmentFileType {
  match(file: any): boolean;
  Previewer?: React.ComponentType<PreviewerProps>;
}

export class AttachmentFileTypes {
  add(type: AttachmentFileType): void;
}

#attachmentFileTypes

attachmentFileTypes é uma instância global, importada do pacote @nocobase/client:

import { attachmentFileTypes } from '@nocobase/client';

#attachmentFileTypes.add()

Registra um novo descritor de tipo de arquivo no registro de tipos de arquivo. O tipo do descritor é AttachmentFileType.

#AttachmentFileType

#match()

Um método para corresponder formatos de arquivo.

O parâmetro file é um objeto de dados para o arquivo carregado, contendo propriedades que podem ser usadas para verificação de tipo:

  • mimetype: O mimetype do arquivo.
  • extname: A extensão do arquivo, incluindo o ..
  • path: O caminho de armazenamento relativo do arquivo.
  • url: A URL do arquivo.

Retorna um valor booleano indicando se o arquivo corresponde.

#Previewer

Um componente React para pré-visualizar o arquivo.

Parâmetros de Props:

  • index: O índice do arquivo na lista de anexos.
  • list: A lista de anexos.
  • onSwitchIndex: Uma função para alternar o arquivo pré-visualizado pelo seu índice.

A função onSwitchIndex pode ser chamada com qualquer índice da list para alternar para outro arquivo. Chamá-la com null fecha o componente de pré-visualização.

onSwitchIndex(null);