ActiveReportsJS — это полностью клиентский инструмент создания отчетов, не зависящий от сервера. Это означает, что вы можете использовать ActiveReportsJS и любой веб-сервер, включая приложение Golang. Эта статья содержит простое, но подробное руководство по интеграции ActiveReportsJS с приложением GoLang.
Предпосылки
Следующее содержимое предполагает, что на вашем компьютере установлен GoLang. Если у вас его нет, вы можете получить его на сайте GoLang. Было бы лучше, если бы на вашем компьютере также был установлен ActiveReportsJS. Если у вас его нет, вы можете получить его на веб-сайте ActiveReportsJS.
Создать приложение GoLang
Для этого урока мы будем использовать веб-фреймворк Echo Go.
Чтобы создать новое приложение GoLang, использующее веб-инфраструктуру Echo, выполните следующие команды из терминала или командной строки.
mkdir ReportingOnTheGo && cd ReportingOnTheGo
go mod init ReportingOnTheGo
go get github.com/labstack/echo/v4
Затем откройте только что созданный каталог ReportingOnTheGo в своем любимом редакторе кода, таком как Visual Studio Code, создайте новый файл с именем «server.go» и добавьте в начале следующий код:
package main
import (
"log"
"net/http"
"encoding/csv"
"strconv"
"os"
"github.com/labstack/echo/v4"
)
Создайте модель данных для JSON API
Мы будем использовать набор данных о продажах, который вы можете скачать с веб-сайта E for Excel. Он предлагает наборы данных различных размеров, от 100 записей до 5 миллионов записей. Для простоты мы будем использовать первый набор данных, содержащий 100 записей.
В наборе данных много полей, но в этом руководстве мы будем использовать только некоторые из них. Вставьте следующий фрагмент кода в файл server.go:
type Sale struct {
Region string `json:"region"`
ItemType string `json:"itemType"`
UnitsSold int `json:"unitsSold"`
}
Инициализировать данные из CSV-файла
Скачайте и разархивируйте данные из архива 100-Sales-Records.zip в каталог data приложения. Добавьте следующий код в файл server.go:
func ReadCsv(filename string) ([][]string, error) {
f, err := os.Open(filename)
if err != nil {
return [][]string{}, err
}
defer f.Close()
lines, err := csv.NewReader(f).ReadAll()
if err != nil {
return [][]string{}, err
}
return lines, nil
}
func main() {
lines, err := ReadCsv("data\\100 Sales Records.csv")
if err != nil {
log.Fatal(err)
}
var sales []Sale
for _, line := range lines[1:] {
unitsSold, err := strconv.Atoi(line[8])
if err != nil {
log.Fatal(err)
}
sale := Sale{
Region: line[0],
ItemType: line[2],
UnitsSold: unitsSold,
}
sales = append(sales, sale)
}
}
Настройка конечных точек JSON API
В конце функции main() добавьте следующий код, который инициализирует веб-сервер, добавляет конечную точку JSON, возвращающую данные о продажах, и обслуживает статические файлы из assets папка:
e := echo.New()
e.Static("/", "assets")
e.GET("api/sales", func(c echo.Context) error {
return c.JSON(http.StatusOK, sales)
} )
e.Logger.Fatal(e.Start(":3000"))
В командной строке или терминале запустите команду go run server.go из корневой папки приложения и откройте в браузере http://localhost:3000/api/sales, чтобы просмотреть данные, API JSON возвращается.
Создать отчет ActiveReportsJS
Давайте теперь создадим отчет, который визуализирует данные из JSON API.
В Автономном приложении дизайнера отчетов откройте меню Файл и выберите шаблон Непрерывный макет страницы для вновь созданного отчета.
Откройте Панель данных инспектора свойств и нажмите кнопку Добавить.
В диалоговом окне редактора источника данных введите http://localhost:3000/api/sales в поле ENDPOINT и нажмите кнопку Сохранить изменения.
Нажмите значок + рядом с DataSource на панели данных.
В диалоговом окне Редактор набора данных введите Продажи в поле ИМЯ и $.* в поле JSON Путь. .
Нажмите кнопку Проверить, убедитесь, что в разделе Поля базы данных отображается текст [3 элемента], и нажмите кнопку Сохранить изменения. > кнопка.
Разверните панель инструментов с помощью меню Hamburger, расположенного в левой части панели инструментов.
Перетащите элемент Диаграмма из панели инструментов в левый верхний угол области страницы отчета. Появится диалоговое окно Мастер диаграмм. Выберите тип панели и нажмите кнопку «Далее» на первом экране.
На втором экране диалогового окна настройте данные, как показано на следующем рисунке, и нажмите кнопку Далее.
На третьем экране нажмите кнопку Готово.
Измените размер элемента отчета диаграммы, чтобы заполнить всю ширину страницы отчета. Щелкните легенду диаграммы, чтобы загрузить ее свойства на панель свойств, и установите для свойства Ориентация значение Горизонтальное, а для свойства Положение значение Внизу.
Откройте меню Файл и сохраните только что созданный отчет в папке assets приложения под именем SalesReport.rdlx-json.
Создайте статическую HTML-страницу для отображения отчета
В папке с ресурсами приложения создайте файл index.html и замените его содержимое следующим кодом:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sales Report</title>
<link
rel="stylesheet"
href="https://cdn.grapecity.com/activereportsjs/3.latest/styles/ar-js-ui.css"
type="text/css"
/>
<link
rel="stylesheet"
href="https://cdn.grapecity.com/activereportsjs/3.latest/styles/ar-js-viewer.css"
type="text/css"
/>
<script src="https://cdn.grapecity.com/activereportsjs/3.latest/dist/ar-js-core.js"></script>
<script src="https://cdn.grapecity.com/activereportsjs/3.latest/dist/ar-js-viewer.js"></script>
<script src="https://cdn.grapecity.com/activereportsjs/3.latest/dist/ar-js-pdf.js"></script>
<style>
#viewer-host {
width: 100%;
height: 100vh;
}
</style>
</head>
<body>
<div id="viewer-host"></div>
<script>
var viewer = new ActiveReports.Viewer("#viewer-host");
viewer.open('SalesReport.rdlx-json');
</script>
</body>
</html>
Перезапустите приложение с помощью команды go run server.go и перейдите в браузере на http://localhost:3000/index.html, чтобы просмотреть отчет. Если вы правильно выполнили шаги, вы должны увидеть отчет, в котором отображаются данные из JSON API.
Первоначально опубликовано на https://www.grapecity.com 31 марта 2022 г.