Audit Log
کامپوننتهای x-audit-log و x-audit-detail-modal برای نمایش و بررسی رخدادهای سیستم (Audit Log) در صفحات Blade استفاده میشوند. این دو کامپوننت در کنار یکدیگر امکان نمایش خلاصه رخدادها، مشاهده جزئیات کامل، بررسی تغییرات دادهها و شخصیسازی اطلاعات را فراهم میکنند.
ویژگیها
- پشتیبانی از نمایش خلاصه و جزئیات رخدادهای سیستم
- نمایش اطلاعات کاربر، بخش، آدرس IP و زمان رخداد
- پشتیبانی از عملیات
create،updateوdelete - تبدیل خودکار تاریخ به شمسی
- نمایش توضیحات سفارشی
- نمایش دادههای Raw JSON
- نمایش جدول مقایسهای تغییرات (Old / New)
- امکان شخصیسازی اطلاعات از طریق کلاس
AuditDetailModal - طراحی Responsive و قابل استفاده در تمامی صفحات Blade
x-audit-log
کامپوننت x-audit-log برای نمایش خلاصه اطلاعات یک رخداد (Audit Log) استفاده میشود. این کامپوننت اطلاعات اصلی هر عملیات را در قالب یک کارت نمایش میدهد و در صورت تعیین شناسه Modal، امکان مشاهده جزئیات کامل رخداد را نیز فراهم میکند.
ورودیهای کامپوننت
| نام پراپ | نوع داده | مقدار پیشفرض | توضیحات |
|---|---|---|---|
type | string | - | نوع عملیات (create، update یا delete) |
userFullName | string | - | نام کاربر |
section | string | - | بخش یا ماژول سیستم |
ip | string | - | آدرس IP |
datetime | Carbon | - | تاریخ و زمان رخداد |
nationalCode | string | null | کد ملی کاربر |
logDetailModalId | string | null | شناسه Modal جهت نمایش جزئیات |
Slot
در صورت قرار دادن محتوا داخل کامپوننت، محتوای Slot به عنوان توضیحات رخداد در پایین کارت نمایش داده میشود.
<x-audit-log
...
>
اطلاعات کاربر با موفقیت بروزرسانی شد.
</x-audit-log>
مثال استفاده
<x-audit-log
type="update"
user-full-name="محمد محمدی"
section="کاربران"
ip="192.168.1.10"
:datetime="now()"
national-code="0019606737"
log-detail-modal-id="audit-log-modal"
>
اطلاعات کاربر با موفقیت بروزرسانی شد.
</x-audit-log>
x-audit-detail-modal
کامپوننت x-audit-detail-modal برای نمایش اطلاعات کامل یک رخداد در قالب Modal استفاده میشود. این کامپوننت علاوه بر نمایش اطلاعات کاربر و رویداد، امکان نمایش دادههای خام (Raw JSON)، مقایسه تغییرات (Old / New) و بروزرسانی اطلاعات به صورت داینامیک را نیز فراهم میکند.
ورودیهای کامپوننت
| نام پراپ | نوع داده | مقدار پیشفرض | توضیحات |
|---|---|---|---|
id | string | - | شناسه یکتای Modal |
type | string | - | نوع عملیات (create، update یا delete) |
userFullName | string | - | نام کاربر |
section | string | - | بخش سیستم |
ip | string | - | آدرس IP |
datetime | Carbon | - | تاریخ و زمان رخداد |
nationalCode | string | null | کد ملی |
badgeClass | string | null | کلاس سفارشی Badge |
description | string | null | توضیحات سفارشی |
نحوه استفاده
<x-audit-detail-modal
id="audit-log-modal"
type="update"
user-full-name="علی عابدی"
section="کاربران"
ip="192.168.1.1"
:datetime="now()"
national-code="0019606737"
description="اطلاعات کاربر بروزرسانی شد."
/>
استفاده همزمان از دو کامپوننت
در اکثر سناریوها، این دو کامپوننت در کنار یکدیگر استفاده میشوند. کامپوننت x-audit-log اطلاعات خلاصه را نمایش میدهد و با استفاده از پراپ logDetailModalId، Modal مربوطه را برای نمایش جزئیات باز میکند.
مقدار
logDetailModalIdدر کامپوننتx-audit-logباید دقیقاً با مقدارidدر کامپوننتx-audit-detail-modalیکسان باشد.
<x-audit-log
type="update"
user-full-name="علی عابدی"
section="کاربران"
ip="192.168.1.1"
:datetime="now()"
national-code="0019606737"
log-detail-modal-id="audit-log-modal"
>
اطلاعات کاربر بروزرسانی شد.
</x-audit-log>
<x-audit-detail-modal
id="audit-log-modal"
type="update"
user-full-name="علی عابدی"
section="کاربران"
ip="192.168.1.1"
:datetime="now()"
national-code="0019606737"
/>
کلاس AuditDetailModal
پس از Render شدن صفحه، میتوانید با استفاده از کلاس AuditDetailModal اطلاعات نمایش داده شده در Modal را به صورت داینامیک تغییر دهید. این قابلیت زمانی کاربرد دارد که اطلاعات از طریق Ajax یا API دریافت شوند و نیازی به Render مجدد Blade نباشد.
ایجاد نمونه
const auditDetailModal = new AuditDetailModal("audit-log-modal");
متدهای قابل استفاده
| متد | توضیحات |
|---|---|
setUser() | تغییر نام کاربر |
setNationalCode() | تغییر کد ملی |
setSection() | تغییر بخش سیستم |
setIp() | تغییر آدرس IP |
setDateTime() | تغییر تاریخ و زمان |
setLogType() | تغییر نوع عملیات |
setTitle() | تغییر عنوان Modal |
setDescription() | تغییر توضیحات |
setStatus() | تغییر وضعیت |
setBadgeValue() | تغییر متن Badge |
setBadgeClass() | تغییر کلاس Badge |
setIconClass() | تغییر آیکون |
setIconColor() | تغییر رنگ آیکون |
setColor() | تغییر رنگ متن |
setData() | بروزرس انی همزمان اطلاعات |
getData() | دریافت اطلاعات فعلی |
getValue() | دریافت مقدار یک فیلد |
init() | مقداردهی اطلاعات Activity و تولید جدول مقایسهای |
بروزرسانی اطلاعات
برای تغییر همزمان اطلاعات نمایش داده شده در Modal میتوانید از متد setData() استفاده کنید.
auditDetailModal.setData({
user: "علی عابدی",
section: "کاربران",
ip: "192.168.1.1",
logType: "update",
description: "اطلاعات کاربر بروزرسانی شد.",
});
نمایش اطلاعات Activity
برای نمایش دادههای قدیم و جدید و تولید جدول مقایسهای از متد init() استفاده کنید.
auditDetailModal.init(data);
ساختار داده باید به صورت زیر باشد:
const data = {
old: {
...
},
new: {
...
}
};
پس از فراخوانی این متد، کامپوننت به صورت خودکا ر:
- دادههای Raw JSON را نمایش میدهد.
- جدول مقایسهای تغییرات را ایجاد میکند.
- مقادیر قدیم و جدید را در کنار یکدیگر نمایش میدهد.
- مقدار
datetimeباید از نوعCarbonباشد. - مقدار
typeفقط یکی ازcreate،updateیاdeleteباشد. - مقدار
idدر کامپوننتx-audit-detail-modalباید یکتا باشد. - مقدار
logDetailModalIdدر کامپوننتx-audit-logباید باidکامپوننتx-audit-detail-modalیکسان باشد. - در صورت عدم ارسال
description، بخش توضیحات نمایش داده نخواهد شد. - دادههای Activity تنها با فراخوانی متد
init()نمایش داده میشوند.
نمونه کامل
<x-audit-log
type="update"
user-full-name="علی عابدی"
section="کاربران"
ip="192.168.1.1"
:datetime="now()"
national-code="0019606737"
log-detail-modal-id="audit-log-modal"
>
اطلاعات کاربر بروزرسانی شد.
</x-audit-log>
<x-audit-detail-modal
id="audit-log-modal"
type="update"
user-full-name="علی عابدی"
section="کاربران"
ip="192.168.1.1"
:datetime="now()"
national-code="0019606737"
/>
<script>
const auditDetailModal = new AuditDetailModal("audit-log-modal");
auditDetailModal.setTitle("جزئیات لاگ");
auditDetailModal.setData({
user: "علی عابدی",
section: "کاربران",
ip: "192.168.1.1",
logType: "update",
description: "اطلاعات کاربر بروزرسانی شد."
});
auditDetailModal.init(data);
</script>