feat(fusion_plating_shopfloor): FpSignatureConfirm dialog + asset registration
Confirm-with-preview dialog (saved-signature preview + Sign & Finish + Use a different signature). Registered after the signature_pad assets; version bump. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
'name': 'Fusion Plating — Shop Floor',
|
'name': 'Fusion Plating — Shop Floor',
|
||||||
'version': '19.0.37.1.0',
|
'version': '19.0.37.2.0',
|
||||||
'category': 'Manufacturing/Plating',
|
'category': 'Manufacturing/Plating',
|
||||||
'summary': 'Shop-floor tablet stations, QR scanning, bake window enforcer.',
|
'summary': 'Shop-floor tablet stations, QR scanning, bake window enforcer.',
|
||||||
'description': """
|
'description': """
|
||||||
@@ -79,6 +79,10 @@ Copyright (c) 2026 Nexa Systems Inc. All rights reserved.
|
|||||||
'fusion_plating_shopfloor/static/src/scss/components/_signature_pad.scss',
|
'fusion_plating_shopfloor/static/src/scss/components/_signature_pad.scss',
|
||||||
'fusion_plating_shopfloor/static/src/xml/components/signature_pad.xml',
|
'fusion_plating_shopfloor/static/src/xml/components/signature_pad.xml',
|
||||||
'fusion_plating_shopfloor/static/src/js/components/signature_pad.js',
|
'fusion_plating_shopfloor/static/src/js/components/signature_pad.js',
|
||||||
|
# Confirm-with-preview dialog (reuse saved Plating Signature on sign-off)
|
||||||
|
'fusion_plating_shopfloor/static/src/scss/components/_signature_confirm.scss',
|
||||||
|
'fusion_plating_shopfloor/static/src/xml/components/signature_confirm.xml',
|
||||||
|
'fusion_plating_shopfloor/static/src/js/components/signature_confirm.js',
|
||||||
'fusion_plating_shopfloor/static/src/scss/components/_hold_composer.scss',
|
'fusion_plating_shopfloor/static/src/scss/components/_hold_composer.scss',
|
||||||
'fusion_plating_shopfloor/static/src/xml/components/hold_composer.xml',
|
'fusion_plating_shopfloor/static/src/xml/components/hold_composer.xml',
|
||||||
'fusion_plating_shopfloor/static/src/js/components/hold_composer.js',
|
'fusion_plating_shopfloor/static/src/js/components/hold_composer.js',
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/** @odoo-module **/
|
||||||
|
// =============================================================================
|
||||||
|
// Fusion Plating — SignatureConfirm
|
||||||
|
//
|
||||||
|
// Confirm dialog shown when the operator already has a saved Plating
|
||||||
|
// Signature: previews it + "Sign & Finish" (props.onConfirm) or "Use a
|
||||||
|
// different signature" (props.onRedraw, opens the draw-pad). No drawing here.
|
||||||
|
// =============================================================================
|
||||||
|
import { Component } from "@odoo/owl";
|
||||||
|
import { Dialog } from "@web/core/dialog/dialog";
|
||||||
|
|
||||||
|
export class FpSignatureConfirm extends Component {
|
||||||
|
static template = "fusion_plating_shopfloor.SignatureConfirm";
|
||||||
|
static components = { Dialog };
|
||||||
|
static props = {
|
||||||
|
close: Function, // dialog service injects
|
||||||
|
title: { type: String, optional: true },
|
||||||
|
contextLabel: { type: String, optional: true },
|
||||||
|
signatureUrl: { type: String }, // data: URI of saved sig
|
||||||
|
onConfirm: { type: Function }, // () => commit (no drawing)
|
||||||
|
onRedraw: { type: Function }, // () => open draw-pad
|
||||||
|
};
|
||||||
|
|
||||||
|
onConfirm() {
|
||||||
|
this.props.onConfirm();
|
||||||
|
this.props.close();
|
||||||
|
}
|
||||||
|
onRedraw() {
|
||||||
|
this.props.onRedraw();
|
||||||
|
this.props.close();
|
||||||
|
}
|
||||||
|
onCancel() {
|
||||||
|
this.props.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
// Confirm-with-preview dialog for shop-floor sign-off. Explicit hex per the
|
||||||
|
// project card-styling rule (don't rely on var(--bs-border-color)).
|
||||||
|
.o_fp_sig_confirm {
|
||||||
|
.o_fp_sig_ctx {
|
||||||
|
font-size: 0.85rem;
|
||||||
|
color: #555;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
.o_fp_sig_preview {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 120px;
|
||||||
|
padding: 8px;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: 1px solid #d8dadd;
|
||||||
|
border-radius: 4px;
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 160px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_fp_sig_hint {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 6px;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<templates xml:space="preserve">
|
||||||
|
|
||||||
|
<t t-name="fusion_plating_shopfloor.SignatureConfirm">
|
||||||
|
<Dialog title="props.title or 'Confirm signature'" size="'md'">
|
||||||
|
<div class="o_fp_sig_confirm">
|
||||||
|
<div class="o_fp_sig_ctx" t-if="props.contextLabel">
|
||||||
|
<t t-esc="props.contextLabel"/>
|
||||||
|
</div>
|
||||||
|
<div class="o_fp_sig_preview">
|
||||||
|
<img t-att-src="props.signatureUrl" alt="Your saved signature"/>
|
||||||
|
</div>
|
||||||
|
<div class="o_fp_sig_hint">Your saved Plating Signature will be applied.</div>
|
||||||
|
</div>
|
||||||
|
<t t-set-slot="footer">
|
||||||
|
<button class="btn btn-link" t-on-click="onRedraw">Use a different signature</button>
|
||||||
|
<button class="btn btn-link" t-on-click="onCancel">Cancel</button>
|
||||||
|
<button class="btn btn-primary" t-on-click="onConfirm">Sign & Finish</button>
|
||||||
|
</t>
|
||||||
|
</Dialog>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
</templates>
|
||||||
Reference in New Issue
Block a user