Skip to content

vilpessoa/DAX-HTML-Render

Repository files navigation

DAX Render

SPA 100% client-side que reproduz o comportamento do visual HTML Content do Power BI Desktop: cole código DAX (uma measure que constrói uma string HTML via concatenação) no editor à esquerda e veja o HTML renderizado num iframe à direita.

Stack

  • Vite + React 18 + TypeScript
  • TailwindCSS v3 (variáveis CSS, dark mode via classe)
  • CodeMirror 6 com StreamLanguage DAX customizada
  • Radix UI primitives (Dialog, DropdownMenu) + Sonner para toasts
  • Sem backend, sem rede em runtime; persistência em localStorage

Scripts

npm install
npm run dev      # dev server em http://localhost:5173
npm run build    # build de produção
npm run preview  # preview do build

Parser

O núcleo (src/lib/daxParser/) é um avaliador pragmático — não um interpretador completo de DAX. Ele tokeniza o código, monta uma AST por descida recursiva e avalia para produzir a string final do RETURN. Funções de tabela (ALL, FILTER, ADDCOLUMNS, TOPN, RANKX, CONCATENATEX, SUMX, etc.) operam sobre tabelas fictícias geradas a partir dos JSONs em src/data/.

Assistente de IA (Gemini)

A toolbar do editor inclui um botão Sparkles que aciona o assistente Gemini para Refatorar, Indentar, Comentar ou Corrigir o código DAX atual.

Configuração

Por segurança, a GEMINI_API_KEY nunca é exposta no bundle do frontend. O app chama um proxy serverless que guarda a chave server-side.

  1. Faça deploy do proxy de exemplo em docs/serverless-proxy-example.ts (Vercel/Netlify/Cloudflare). Defina no provedor:
    • GEMINI_API_KEY=<sua chave>
    • ALLOWED_ORIGIN=https://seu-app... (opcional)
  2. Copie .env.example para .env.local e ajuste:
    VITE_GEMINI_PROXY_URL=https://seu-proxy.vercel.app/api/gemini
    
  3. Reinicie npm run dev. O prompt do sistema vive em src/assets/prompts/dax_analyst_prompt.txt e pode ser editado livremente.

Atalhos

  • Ctrl+Enter — renderizar
  • Ctrl+S — salvar rascuho atual
  • Ctrl+L — limpar editor

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages