Como usar o FastCube .NET com a aplicação Vue SPA

2021-04-14

O framework Vue.js é atualmente muito popular, e, está em alinhado com o Angular. Já consideramos como usar o FastReport.Core com Angular. Agora, vamos considerar como implementar a exibição de um relatório da web FastReport em um aplicativo de página única em Vue.js com back-end em ASP .NET Core.

Para isso, precisamos instalar o Node.js e, no mínimo, o NET Core SDK 2.0; no entanto, uma versão mais recente é ainda melhor. Por padrão, dotnet sdk não tem um modelo de aplicativo vue. Mas pode ser instalado! Para fazer isso, crie um catálogo, no qual seu aplicativo será colocado, e execute a linha de comando do PowerShell nele. Isso pode ser feito a partir do menu de contexto, que é invocado clicando com o botão direito no espaço vazio no diretório com o botão Shift pressionado.

Insira o comando na linha de comando:

dotnet new — install Microsoft.AspNetCore.SpaTemplates::*

Em seguida, você terá o modelo Vue disponível para gerar um aplicativo de demonstração. Use-o para criar o aplicativo com um comando:

dotnet new vue -o FRCubeVue

Depois de criar o aplicativo, você verá um aviso de que o seguinte comando deve ser executado:

npm install

Mas antes de executá-lo, você deve ir ao catálogo criado:

cd FRCubeVue

Depois que todos os pacotes necessários forem instalados, abra o arquivo de projeto .csproj.

Agora devemos adicionar bibliotecas FastCube ao projeto que criamos, mas primeiro elas devem ser montadas a partir dos códigos-fonte. Para isso, use a solução FastCube.Core.sln. Após a montagem, você obterá dois pacotes Nuget: FastCube.Web.2020.2.1.nupkg e FastCube.Core.2020.2.1.nupkg. Coloque-os em um diretório, que será usado como uma fonte local do pacote posteriormente.

Agora começamos a adicionar pacotes ao projeto com a ajuda do gerenciador de pacotes NuGet. É importante lembrar que os pacotes são armazenados localmente. Para inserir as configurações, clique no ícone de engrenagem no canto superior direito do gerenciador de pacotes e adicione uma nova fonte, que fará referência ao diretório local com seus pacotes nupkg:

Configurando fontes de pacotes

Selecione a fonte de pacotes adicionada na lista suspensa e instale os pacotes:

Instalando pacotes

Conecte o FastCube no método Configure () do arquivo Startup.cs adicionando um código:

app.UseFastCube();

O aplicativo baseado em modelo padrão está pronto para ser iniciado e contém um controlador e uma visualização. Podemos usá-lo para exibir nosso cubo de dados. Agora adicione um novo método para

 [HttpGet("[action]")]
 public IActionResult ShowCube()
 {
 Cube cube = new Cube();
 Slice slice = new Slice()
 {
 Cube = cube
 };
 FilterManager filterManager = new FilterManager()
 {
 Cube = cube
 };
 WebGrid grid;
 grid = new WebSliceGrid()
 {
 Slice = slice
 };
 
ViewBag.WebGrid = grid
 
 cube.SourceType = SourceType.File;
 cube.Load(Path.Combine("C:\\Users\\FR\\Downloads\\fastcube-net-master\\Demos\\Data\\", "Cubes", "calculated_measures.mdc"));
 return View(model);
 }

Vamos considerar essa técnica com mais detalhes. Aqui usamos os objetos Cube e Slice. Para exibir dados, usamos o objeto WebGrid, que pode receber dados de um cubo ou uma fatia por meio dos objetos inerentes correspondentes WebCubeGrid e WebSliceGrid. Neste caso, vamos mostrar uma fatia, assim, o segundo objeto é selecionado. Em seguida, baixamos o cubo existente do arquivo.

Para o método ShowCube adicionado, temos que criar um display - ShowCube.cshtml.cs com uma única linha de código:

@await ViewBag.WebGrid.Render()

Agora passamos para o aplicativo SPA. Como criamos o projeto com um modelo, ele já contém um aplicativo de demonstração de página única. Portanto, tudo o que precisamos fazer é adicionar um novo componente e definir o menu. Dois novos arquivos devem aparecer na estrutura do aplicativo:

Estrutura do aplicativo

O arquivo cube.vue.html é a exibição html do novo componente:

<template>
 <div>
 <button v-on:click="Clicked">Show</button>
 <div v-if="show">
 <iframe :id="report" height="1000" width="1000" :src="url"></iframe>
 </div>
 </div>
</template>
<script src="./cube.ts"></script>

O display formado no aplicativo ASP .Net Core será baixado no iframe.

O arquivo cube.ts é o script do novo componente:

import Vue from 'vue';
import { Component } from 'vue-property-decorator';
 
@Component
export default class CubeComponent extends Vue {
 url: string = '';
 show: boolean = false;
 cubeData: string ='';
 
 Clicked() {
 this.show = true;
 this.url = "api/SampleData/ShowCube";
 }
}

No script, definimos o url para a origem do iframe como um clique de botão.

Nesta fase, o novo componente deve ser cadastrado no arquivo boot.ts:

const routes = [
 ...
 { path: '/cube', component: require('./components/cube/cube.vue.html') }
];

Além disso, adicionamos o novo cabeçalho do menu no arquivo navmenu.vue.html:

<template>
 <div class="main-nav">
 <div class="navbar navbar-inverse">
 <div class="navbar-header">
 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
 <span class="sr-only">Toggle navigation</span>
 <span class="icon-bar"></span>
 <span class="icon-bar"></span>
 <span class="icon-bar"></span>
 <span class="icon-bar"></span>
 </button>
 <a class="navbar-brand" href="/">FRCubeVue</a>
 </div>
 <div class="clearfix"></div>
 <div class="navbar-collapse collapse">
 <ul class="nav navbar-nav">
 <li>
 <router-link to="/" :exact="true">
 <span class="glyphicon glyphicon-home"></span> Home
 </router-link>
 </li>
 <li>
 <router-link to="/counter">
 <span class="glyphicon glyphicon-education"></span> Counter
 </router-link>
 </li>
 <li>
 <router-link to="/fetchdata">
 <span class="glyphicon glyphicon-th-list"></span> FETCH data
 </router-link>
 </li>
 <li>
 <router-link to="/cube">
 <span class="glyphicon glyphicon-th-list"></span> Cube
 </router-link>
 </li>
 </ul>
 </div>
 </div>
 </div>
</template>
 
<style src="./navmenu.css" />

Agora nosso aplicativo está pronto para começar. Deixe-nos fazer:

Execute o projeto

Pressione o botão e veja seu cubo:

Execute o projeto

Como você pode ver, as partes do servidor e do cliente são bastante simples. Agora você pode usar cubos OLAP em seus aplicativos da web sem pagar mais por cada unidade de um aplicativo de desktop.

.NET .NET FastCube FastCube OLAP OLAP Core Core Vue Vue
04 de outubro de 2023

How to generate a report from an ASP.NET Core application using FastReport.Core.Skia

We tell you how to generate a report on Windows and Linux using FastReport.Core.Skia and a private NuGet server.
22 de março de 2023

Creating PDF report in JetBrains Rider (C#) on Ubuntu 22.04.1 LTS

In this article, we'll take a look at the world of the .NET platform on Ubuntu 22.04.1 LTS and create a PDF exportable report.
14 de fevereiro de 2023

How to set up an Apache2 web server for FastReport .NET

We are launching the Apache2 web server on the Linux operating system for FastReport.NET and .NET 5 with a few simple commands.
Fast Reports
  • 800-985-8986 (English, US)
  • +31 97 01025-8466 (English, EU)
  • +49 30 56837-3928 (German, DE)
  • +55 19 98147-8148 (Portuguese, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.