54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
/** @odoo-module **/
|
|
// Fusion Claims - Preview Button Widget
|
|
// Copyright 2026 Nexa Systems Inc.
|
|
// License OPL-1
|
|
|
|
import { registry } from "@web/core/registry";
|
|
import { Component } from "@odoo/owl";
|
|
import { useService } from "@web/core/utils/hooks";
|
|
import { DocumentPreviewDialog } from "./document_preview";
|
|
|
|
class PreviewButtonComponent extends Component {
|
|
static template = "fusion_claims.PreviewButtonWidget";
|
|
static props = { "*": true };
|
|
|
|
setup() {
|
|
this.dialog = useService("dialog");
|
|
this.notification = useService("notification");
|
|
}
|
|
|
|
onClick() {
|
|
const record = this.props.record;
|
|
if (!record || !record.data) {
|
|
this.notification.add("No document to preview.", { type: "warning" });
|
|
return;
|
|
}
|
|
|
|
const attField = record.data.attachment_id;
|
|
let attachmentId = null;
|
|
if (Array.isArray(attField)) {
|
|
attachmentId = attField[0];
|
|
} else if (attField && typeof attField === "object" && attField.id) {
|
|
attachmentId = attField.id;
|
|
} else if (typeof attField === "number") {
|
|
attachmentId = attField;
|
|
}
|
|
|
|
const fileName = record.data.file_name || "Document Preview";
|
|
|
|
if (!attachmentId) {
|
|
this.notification.add("No document to preview.", { type: "warning" });
|
|
return;
|
|
}
|
|
|
|
this.dialog.add(DocumentPreviewDialog, {
|
|
attachmentId: attachmentId,
|
|
title: fileName,
|
|
});
|
|
}
|
|
}
|
|
|
|
registry.category("view_widgets").add("preview_button", {
|
|
component: PreviewButtonComponent,
|
|
});
|