schmeits / filament-umami-widgets
为 Filament 提供的 Umami 分析小部件
1.4.3
2024-09-05 06:47 UTC
Requires
- php: ^8.1|^8.2|^8.3
- filament/filament: ^3.0
- malzariey/filament-daterangepicker-filter: ^2.6
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.1
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
README
这些是 Filament 用于 Umami(网站分析)的一些小部件
安装
您可以通过 composer 安装此包
composer require schmeits/filament-umami-widgets
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="filament-umami-widgets-config"
可选地,您还可以发布视图
php artisan vendor:publish --tag="filament-umami-widgets-views"
或翻译
php artisan vendor:publish --tag="filament-umami-widgets-translations"
这是发布配置文件的内容
return [ /* |-------------------------------------------------------------------------- | Umami type |-------------------------------------------------------------------------- | | Which version of Umami are you using? | Option 1: self_hosted (https://umami.is/docs) | Option 2: cloud (https://umami.is/docs/cloud) | */ 'type' => env('UMAMI_TYPE', 'self-hosted'), /* |-------------------------------------------------------------------------- | Umami API Endpoint URL |-------------------------------------------------------------------------- | | For the self hosted version you should provide the API | endpoint e.g. https://your_url.com/api | | If you are using the Cloud type your values should be something | like: https://api.umami.is/v1 | */ 'api_endpoint_url' => env('UMAMI_API_ENDPOINT', 'https://api.umami.is/v1'), /* |-------------------------------------------------------------------------- | Umami Website ID |-------------------------------------------------------------------------- | | This is the ID of the website stats you want to show on the website | | In Umami Cloud you can find the ID by going to Websites | Click edit and use the Website ID provided | | In the self-hosted version navigate to Settings and edit the website | use the Website ID provided | */ 'website_id' => env('UMAMI_WEBSITE_ID', null), /* |-------------------------------------------------------------------------- | Umami Http options |-------------------------------------------------------------------------- | | The timeout options defines the default timeout for the API requests | in seconds | */ 'timeout' => env('UMAMI_TIMEOUT', 5), /* |-------------------------------------------------------------------------- | Self Hosted Options |-------------------------------------------------------------------------- | | Add a user to your Umami installation | https://umami.is/docs/add-a-user | */ 'username' => env('UMAMI_USERNAME', null), 'password' => env('UMAMI_PASSWORD', null), /* |-------------------------------------------------------------------------- | Cloud Options |-------------------------------------------------------------------------- | | Check the website how to obtain an API key | https://umami.is/docs/cloud/api-key | */ 'cloud_api_key' => env('UMAMI_API_KEY', null), /* |-------------------------------------------------------------------------- | Caching options |-------------------------------------------------------------------------- | | You can set the options for the caching here | cache_time is the time the values will be cached in seconds | */ 'cache_time' => 300, ];
用法
在 Filament/Pages/ 下创建一个名为 Dashboard.php 的新文件,内容如下
namespace App\Filament\Pages; use Schmeits\FilamentUmami\Concerns\HasFilter; class Dashboard extends \Filament\Pages\Dashboard { use HasFilter; }
从您的 PanelProvider 中移除默认的仪表板
->pages([ //Pages\Dashboard::class, ])
或者,如果您已经有自定义的仪表板,将 HasFilter 特性添加到您的仪表板文件中。
将插件添加到您的 PanelProvider
->plugins([ \Schmeits\FilamentUmami\FilamentUmamiPlugin::make() ])
将小部件添加到您的 PanelProvider
->widgets([ Widgets\AccountWidget::class, Widgets\FilamentInfoWidget::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetStatsGrouped::class, // <-- add this widget ])
在仪表板中可用不同预定义的小部件
->widgets([ // this is the grouped stats widget \Schmeits\FilamentUmami\Widgets\UmamiWidgetStatsGrouped::class, // these are the separate stats widgets \Schmeits\FilamentUmami\Widgets\UmamiWidgetStatsLiveVisitors::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetStatsPageViews::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetStatsVisitors::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetStatsVisits::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetStatsBounces::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetStatsTotalTime::class, // and some table widgets \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableUrls::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableTitle::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableReferrers::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableCountry::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableRegion::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableCity::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableDevice::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableOs::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableBrowser::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableLanguage::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableScreen::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableEvents::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableQuery::class, // grouped table widgets \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableGroupedPages::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableGroupedGeo::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetTableGroupedClientInfo::class, // chart widgets \Schmeits\FilamentUmami\Widgets\UmamiWidgetGraphPageViews::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetGraphSessions::class, \Schmeits\FilamentUmami\Widgets\UmamiWidgetGraphEvents::class, ])
统计小部件
实时访客
页面点击量
独立访客数量
会话数量
仅访问单个页面的访客数量
在网站上的时间(格式为 H:i)
指标小部件
引用者
访问页面的 URL
访问页面的标题
使用的浏览器
使用的操作系统
使用的设备系统
使用的语言
使用的屏幕分辨率
发生的事件
查询字符串
分组指标小部件
地理信息(国家、地区、城市)
访问的页面(URL、标题)
客户端信息(浏览器、操作系统、设备、屏幕、语言)
图表小部件
页面浏览量(过去 7 天)
会话(过去 7 天)
事件
配置插件
如果您想配置轮询间隔或定义在 UmamiWidgetStatsGrouped 中显示哪些小部件,可以将 StatWidgets 传递给 widgetsForGroupedStats 函数
\Schmeits\FilamentUmami\FilamentUmamiPlugin::make() ->pollingInterval("60s") //Auto polling interval ->widgetsForGroupedStats([ UmamiStatsWidgets::WIDGET_LIVE, UmamiStatsWidgets::WIDGET_PAGEVIEWS, UmamiStatsWidgets::WIDGET_VISITORS, UmamiStatsWidgets::WIDGET_TOTAL_TIME, UmamiStatsWidgets::WIDGET_BOUNCES, UmamiStatsWidgets::WIDGET_VISITS, ]),
使用原始分析函数
您还可以使用外观函数为自己的小部件。
定义过滤器
use Schmeits\FilamentUmami\Concerns\Filter; $filter = (new Filter()) ->setFrom(Carbon::now()->subDays(30)) ->setTo(Carbon::now());
获取不同的数据
use Schmeits\FilamentUmami\Facades\FilamentUmami; // Gets the number of active users on a website. $activeVisitors = FilamentUmami::activeVisitors($filter); // *** STATS *** // Pages hits $views = FilamentUmami::pageViews($filter); // Number of unique visitors $visitors = FilamentUmami::visitors($filter); // Number of sessions $visits = FilamentUmami::visits($filter); // Number of visitors who only visit a single page $bounces = FilamentUmami::bounces($filter); // Time spent on the website (formatted H:i) $total_time = FilamentUmami::totalTime($filter); // *** METRICS *** // Get pages visited url's $pages = FilamentUmami::metricsPages($filter); // or $pages = FilamentUmami::metrics($filter, \Schmeits\FilamentUmami\Enums\UmamiMetricTypes::METRIC_PAGES); // *** PAGEVIEWS LAST 7 DAYS *** $views_and_sessions = FilamentUmami::pageViewsAndSessions();
可用指标
enum UmamiMetricTypes: string { case METRIC_PAGES = 'url'; // Url's of the Pages visited case METRIC_TITLE = 'title'; // Titles of the Pages visited case METRIC_REFERRER = 'referrer'; // Referrers (where do the visitors come from) case METRIC_BROWSER = 'browser'; // Browser (Chrome, Edge, Safari, etc.) case METRIC_OS = 'os'; // Operating system (iOS, MacOS, etc.) case METRIC_DEVICE = 'device'; // Devices (Laptop, Mobile, etc.) case METRIC_COUNTRY = 'country'; // Countries (US, NL, etc.) case METRIC_REGION = 'region'; // Regions (NL-LI, US-AZ, NL-NH, etc.) case METRIC_CITY = 'city'; // Cities (Amsterdam, Netherlands / Phoenix, United States / etc) case METRIC_LANGUAGE = 'language'; // Languages (Dutch, English, etc.) case METRIC_SCREEN = 'screen'; // Screen resolutions (1440x900, 1920x1200, etc.) case METRIC_EVENT = 'event'; // Events (Clicked link, etc.) case METRIC_QUERY = 'query'; // Query parameters (search=test, etc.) }
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全漏洞
请审查 我们的安全策略 了解如何报告安全漏洞。
致谢
- Tally Schmeits
- 灵感来源于 Devlogx 的 Pirsch 小部件
- 灵感来源于 laravel 包 Laravel Umami
- 所有贡献者
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。






















