Pular para o conteúdo principal

Primeira Aplicação

Comandos para criar uma aplicação

Após configurar a plataforma, apresentamos a seguir os comandos básicos para criar uma aplicação e iniciar o servidor.

A aplicação deste tutorial consiste num formulário Modal e exportação PDF.

Comando para criar uma aplicação.

./netuno app name=minhaapp

Comando para iniciar o servidor.

./netuno server app=minhaapp

A partir de agora pode começar a desenvolver a sua aplicação.

Todos os ficheiros para desenvolvimento encontram-se em 📂 apps/minhaapp.

Por omissão, para aceder ao backoffice no ecrã de login insira as credenciais.

Utilizador: dev

Senha: dev

Criar uma Aplicação Simples

Agora que já temos uma base de conhecimentos do Netuno, vamos criar uma aplicação do início ao fim. Vamos adicionar ao ecrã inicial um botão para carregar o formulário numa modal e outro para gerar um PDF.

Seguiremos estes passos:

  • Modificar o HTML principal do dashboard
  • Adicionar dois botões com React
  • Construir o botão do Abrir Formulário Modal
  • Construir o botão Exportar PDF
  • Desenvolver o serviço que cria o PDF

No final verá a aplicação demonstrada na seguinte imagem.

Primeira App - 1

Primeira App - 2

Vamos começar!

Modificar o HTML principal da dashboard

Seguindo o tutorial em que ensinamos os comandos para criar uma aplicação, aceda ao diretório da aplicação, neste exemplo denominada de minhaapp.

Abra o ficheiro que tem o HTML principal do dashboard, que se encontra no seguinte diretório.

Localização do ficheiro

/apps/minhaapp/server/templates/dashboard.html

Copie este HTML e cole dentro do dashboard.html

<div class="row">
<div class="col-lg-12">
<div class="with-form">
<h1 class="page-header">Minha área de trabalho</h1>
<p>Abrir um Formulário Modal e Exportar um PDF</p>
</div>
</div>
</div>

<div id="app-dashboard"></div>

Adicionar os dois botões com React

Agora aceda ao ficheiro que tem o javascript principal do dashboard. Este ficheiro foi construído em React, e é nele que vamos adicionar os dois botões.

Localização do ficheiro:

/apps/minhaapp/ui/src/containers/DashboardContainer/index.jsx

Copie e cole este código dentro do ficheiro DashboardContainer.jsx:

import React, { Component } from "react";
import BotaoModal from '../../components/BotaoModal/index.jsx';
import BotaoPDF from '../../components/BotaoPDF/index.jsx';

export default class DashboardContainer extends Component {
constructor(props) {
super(props);
this.state = {
};
}

render() {
return (
<div className="my-dashboard">
<BotaoModal />
<BotaoPDF />
</div>
);
}
}

Construir o botão do Abrir Formulário Modal

Nesta etapa, vamos ter que criar um formulário chamado Teste e um campo chamado Nome.

Aprenda como criar formulários aqui.

Aprenda como criar campos aqui.

De seguida, vá ao formulário que criou, abra o inspector de elemento no browser e procure o uid no atributo netuno-form-uid, será importante para o próximo passo.

Primeira App - 3

Primeira App - 4

Agora, abra de novo o ficheiro que editou anteriormente dashboard.html e adicione o código antes de:

<div id="app-dashboard"></div>

e edite o atributo netuno-form-uid com o uid do passo anterior.

<div id="dashboard-modal-teste" class="modal">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">x</span></button>
</div>
<div class="modal-body">
<div id="dashboard-modal-teste-netuno-form" netuno-form netuno-form-uid="UID" netuno-form-name="teste" netuno-form-edit-only="" netuno-zone="dashboard-teste">
<div class="netuno-form-edit" netuno-form-edit="teste"></div>
</div>
</div>
</div>
</div>
</div>

Vamos criar um diretório BotaoModal e dentro dele o ficheiro index.jsx, dentro do seguinte diretório:

  • 📂 /apps/minhaapp/ui/src/components/

Agora, abra novamente o ficheiro que criou antes index.jsx e adicione o código abaixo:

Observe no seguinte código, que o método netuno.modal.create() abre o formulário denominado Teste.

No callback é possível testar os eventos de ações no formulário.

Localização do ficheiro:

/apps/minhaapp/ui/src/components/BotaoModal/index.jsx

Código

import React, { Component } from "react";

export default class BotaoModal extends Component {
constructor() {
super();
this.state = {};
this.handleClick = this.handleClick.bind(this);
}

handleClick(event) {
netuno.modal.create({
name: 'teste',
callback: function (modal) {
let form = modal.find('[netuno-form]');

form.on('netuno:new', () => {
console.log('Clicou em novo');
});

form.on('netuno:save', () => {
netuno.modal.hide(modal)
console.log('Clicou em salvar');
});

form.on('netuno:back', () => {
console.log('Clicou em voltar');
});

netuno.loadForm(form);
netuno.modal.show(modal);
}
});
}

render() {
return (
<button
onClick={this.handleClick}
className="btn btn-default">
Abrir Formulário Modal
</button>
);
}
}

Construir o botão Exportar PDF

O botão para gerar PDF vai depender de um serviço responsável para criar o PDF que será chamado quando houver um clique no botão Gerar PDF. Vamos ver como fazer o serviço mais abaixo.

Antes de ver o código do botão vamos criar um novo diretório BotaoPDF e dentro dele o ficheiro index.jsx, dentro do seguinte diretório:

  • 📂 /apps/minhaapp/ui/src/components/

Agora, abra de novo o ficheiro que criou anteriormente index.jsx e adicione o código abaixo.

Localização do ficheiro:

/apps/minhaapp/ui/src/components/BotaoPDF/index.jsx

Código:

import React, { Component } from "react";

export default class BotaoPDF extends Component {
constructor() {
super();
}

render() {
return (
<a
target='_blank'
href='/services/export-pdf.netuno'
className="btn btn-default">
Exportar PDF
</a>
);
}
}

Desenvolver o serviço que cria o PDF

Para finalizar, apresenta-se o código do serviço que será responsável por gerar o PDF.

Observe o excerto de código anterior em que só precisámos de adicionar a url do serviço no atributo href do botão.

Vamos criar o seguinte ficheiro export-pdf.js, no seguinte diretório:

/apps/minhaapp/server/services/

Copie e cole o seguinte código no ficheiro export-pdf.js

_header.contentType('pdf')

var pdfDocument = _pdf.newDocument(_pdf.pageSize('A5'));

var viksiScript = _pdf.font(_storage.filesystem('server', 'samples/export-pdf', 'viksi-script.ttf'), true);
var helvetica = _pdf.font('helvetica');

pdfDocument.add(
_pdf.image(_storage.filesystem('server', 'samples/export-pdf', 'logo.png'))
.scaleAbsolute(120, 36)
)

pdfDocument.add(
_pdf.paragraph('My Custom Font!')
.setFont(viksiScript)
.setFontSize(30)
.setFontColor(_pdf.color("#1abc9c"))
)

pdfDocument.add(
_pdf.paragraph('Helvetica!')
.setFont(helvetica)
.setFontSize(15)
)

pdfDocument.close()

Importante analisar o método _storage.filesystem().

É desta forma que importamos os ficheiros para dentro do PDF ou de qualquer outro recurso.

Para concluir a importação, vamos copiar a pasta export-pdf do seguinte diretório:

/apps/demo/storage/filesystem/server/samples/

Em seguida vamos colar a pasta no seguinte diretório:

/apps/minhaapp/storage/filesystem/server/samples/

Prontinho!! Agora já pode fazer os seus testes.