md0/regenerator

Laravel ReGenerator

dev-main 2023-10-10 09:53 UTC

This package is auto-updated.

Last update: 2024-09-10 11:55:01 UTC


README

基于SQL查询的Laravel快速报告生成器。

这是一个旨在为网站/应用管理员使用的工具,他们需要快速创建外观不错的报告以进行显示或导出,仅使用SQL选择语句和几个参数。使用Bootstrap 3/4类进行格式化,但如果需要自定义最终外观,也可以输出到数组。

此包不包括用于管理报告的GUI。如果您需要从管理界面编辑报告,请查看 Backpack ReGenerator

应适用于任何高于5.6版本的Laravel,但仅在v8上进行了测试。

安装

通过Composer要求包

composer require md0/reportgenerator 

运行数据库迁移

php artisan migrate

可选

发布资源(仅适用于图表)

php artisan vendor:publish --provider="MD0\ReGenerator\ReGeneratorServiceProvider" --tag="assets"

发布配置文件(以修改新报告的默认设置)

php artisan vendor:publish --provider="MD0\ReGenerator\ReGeneratorServiceProvider" --tag="config"

发布视图(以修改图表选项和/或PDF标题)

php artisan vendor:publish --provider="MD0\ReGenerator\ReGeneratorServiceProvider" --tag="views"

发布语言文件。只有三个可翻译的字符串(用于聚合函数),因此您可以在 resources/lang/vendor/regenerator 文件夹内编辑它们,或者直接将它们添加到主翻译文件中。

provider="MD0\ReGenerator\ReGeneratorServiceProvider" --tag="lang"

用法

要使用ReGenerator,您可以选择以下方式之一

  1. 动态使用类
use MD0\ReGenerator\Report;
class MyClass {
function report() {
	$report = new Report;
	$myReport = $report->setReport('my_report')->getHtml();
	}
}
  1. 使用 Report 外观
use MD0\ReGenerator\Facades\Report;
class MyClass {
	function report() {
		Report::setReport('my_report')->getHtml();
	}
}

入门

要开始,您需要的只是访问您需要从中提取报告的表/表以及您的实际选择语句

Report::set('query', 'select name, email from users')->getHtml();

这将生成一个临时(即时)报告。要使用默认选项集创建永久报告,请使用 create 方法

Report::create('my_report', 'select name, email from users')->getHtml();

这将向数据库添加新的报告并以HTML形式生成它。然后您可以在视图的任何位置包含它。

要访问之前创建的报告,您需要使用 setReport 方法,并在生成之前(可选)使用 set 任何自定义首选项

Report::setReport('my_report')
		->set('pdfPageSize', 'letter')
		->set('pdfPageOrientation', 'landscape')
		->getPdf();

要使任何自定义永久化,请使用 update 方法

Report::setReport('my_report')->update('PdfPageSize', 'letter');

请查看下一节,以获取您可以使用ReGenerator使用的完整方法列表和属性。

参考

属性

每个报告可以有一个或多个关联属性,可以在运行时设置或提交到数据库

  • name [必须保存]:报告的唯一名称。仅限字母数字字符、破折号或下划线。
  • query [必须]:用于生成报告的SQL查询。如果需要,使用标准blade标记({{ }})包含参数。
  • database:Laravel中定义的数据库名称。留空以使用默认值。确保使用Laravel定义的名称,而不是实际的数据库名称。
  • title:报告的描述性标题。也可以有可替换的内容(参数)。
  • reportType:要生成的报告类型。默认为 vertical(经典),使用 horizontal 用于转置报告(列在行上),或使用 slices 用于单个记录。
  • tag:用于将报告分组到集合中的标签。如果不需要,留空。
  • numericCols:包含数值的列号的逗号分隔列表。
  • thousandsSeparator:用作千位分隔符的字符。默认为
  • decimalsSeparator:用作小数分隔符的字符。默认为逗号
  • countCols:将显示计数总数的列号的逗号分隔列表。
  • sumCols:将显示求和聚合的列号的逗号分隔列表。
  • averageCols:将显示平均聚合的列号的逗号分隔列表。
  • pdfPageSize:由DomPdf使用,默认为A4。
  • pdfPageOrientation:PDF页面方向,纵向或横向。
  • pdfFontSize:PDF字体大小。以磅为单位,默认为10。
  • pdfTemplate:用于包装PDF报告的自定义视图。留空以使用默认值。
  • csvQuotes:用于包围CSV字段的引号类型。默认为无。
  • csvDelimiter:CSV字段分隔符。通常是逗号或分号,默认为逗号。
  • chartType:将生成的图表类型。选择线条柱状饼图之间。默认为线条
  • chartSeries:包含图表系列的列的逗号分隔列表。
  • chartLabels:包含图表标签的列号。
  • chartColors:在图表中使用的十六进制颜色代码的逗号分隔列表。
  • chartTemplate:用于生成的图表的自定义视图。留空以使用默认值。
  • parameters:要在SQL查询中替换的字符串。在下面的示例中,{{condition1}}和{{condition2}}字符串将在SQL查询中替换。
$validParameters = [
    'condition1' => 'where active=1',
    'condition2' => 'and verified=1',
];

方法

setReport(string $name): object | bool

设置活动报告。

  • name - 报告的名称。
set(string $property, string $value): object

为当前报告设置属性。可用于存储的报告(在setReport()之后)或与自身链接以生成临时报告。

  • property - 匹配的报告属性;
  • value - 分配给属性的值。
getValue(int $line, int $column): string | bool

从报告中返回特定值,当您有固定大小(x/y)报告时很有用。

  • line - 报告中的行;
  • column - 报告中的列。
getArray(): string

以关联数组形式返回当前报告。必须在setReport()set()之后调用。

getHtml(): string

以使用Bootstrap类格式化的HTML格式返回当前报告。必须在setReport()set()之后调用。

getPdf(): string

以PDF文件的形式返回当前报告,在变量中。必须在setReport()set()之后调用。要显示或下载PDF文件,请设置Content-TypeContent-Disposition头指令

return response()->make($pdfReport, 200, [
	'Content-Type' => 'application/pdf',
	'Content-Disposition' => 'inline; filename="test.pdf"',
]);
getChart(): string

以canvas Chart的形式返回当前报告,准备好插入任何视图。必须在setReport()set()之后调用。

getReports([string $property], [string $value]): array | bool

返回包含所有符合特定标准的报告的数组。如果没有提供属性,则该方法返回所有可用报告的列表。

  • property - 匹配的属性;
  • value - 用于过滤报告的属性的特定值。
create(string $name, string $query, [string $database], [array $parameters]): object | bool

在数据库中创建新的报告条目。

  • name - 报告的唯一名称;
  • query - 要执行的完整SQL查询;如果有参数,则必须也提供第4个参数;
  • database - 要运行查询的Laravel数据库名称;
  • parameters - 包含要替换在执行SQL查询之前SQL查询中的参数名称和值的数组。
 update(string | array $data, [string $value]): object | bool

更新报告。必须在setReport()方法之后调用。

  • data - 可以是报告的单个属性或包含属性-值对的数组;
  • value - 与单个属性关联的值。对于批量更新不需要。
delete(): bool

删除报告。必须在调用 setReport() 方法之后进行。

覆盖

更改默认参数

要更改新报告的默认参数,请按上述方式发布配置文件,并调整 defaults 数组以满足您的需求。

自定义PDF布局

要覆盖默认的PDF页面布局(例如添加标志等),发布视图并编辑 views/vendor/md0/regenerator/pdf/report.blade.php 以满足您的需求。如果您需要多个模板,请创建自己的视图,并通过 pdfTemplate 属性指向它们。

自定义图表选项

如果您需要调整Chart.js的设置,请发布视图并编辑 views/vendor/md0/regenerator/chart/report.blade.php。如果您需要多个模板,请创建自己的视图,并通过 chartTemplate 属性指向它们。

错误 & 建议

请将您的改进建议或错误报告/错误发送到 问题 部分。

许可证

在GPL-3.0许可证下分发。有关更多信息,请参阅 LICENSE 文件。

致谢

ReGenerator使用以下开源库生成报告。请参阅它们各自的页面,获取有关使用和可用的自定义信息的更多信息。