From 1da27ed6bfb332e36ca846463554d2f8a61b49a4 Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Fri, 1 May 2026 00:20:40 -0400 Subject: [PATCH] changes --- fusion_plating/fusion_plating/__manifest__.py | 2 +- .../static/src/js/recipe_tree_editor.js | 24 ++++++---- .../static/src/js/simple_recipe_editor.js | 11 +++++ .../views/fp_process_node_views.xml | 10 +++- .../__manifest__.py | 2 +- .../models/fp_process_node.py | 46 ++++++++++++++++++- .../static/src/js/fp_part_process_composer.js | 12 +++++ .../fp_process_node_part_scoped_views.xml | 22 +++++++++ 8 files changed, 117 insertions(+), 12 deletions(-) diff --git a/fusion_plating/fusion_plating/__manifest__.py b/fusion_plating/fusion_plating/__manifest__.py index 08c84a66..9af0a456 100644 --- a/fusion_plating/fusion_plating/__manifest__.py +++ b/fusion_plating/fusion_plating/__manifest__.py @@ -5,7 +5,7 @@ { 'name': 'Fusion Plating', - 'version': '19.0.18.8.0', + 'version': '19.0.18.11.0', 'category': 'Manufacturing/Plating', 'summary': 'Core plating / metal finishing ERP: facilities, processes, tanks, baths, jobs, operators.', 'description': """ diff --git a/fusion_plating/fusion_plating/static/src/js/recipe_tree_editor.js b/fusion_plating/fusion_plating/static/src/js/recipe_tree_editor.js index bd5e81af..5a63f01e 100644 --- a/fusion_plating/fusion_plating/static/src/js/recipe_tree_editor.js +++ b/fusion_plating/fusion_plating/static/src/js/recipe_tree_editor.js @@ -546,15 +546,23 @@ export class RecipeTreeEditor extends Component { // ---- Navigation --------------------------------------------------------- onBackToList() { - // If the editor was opened from the part-scoped Process Composer - // (context carried part_id), return to that part's form instead - // of the generic Recipes list. + // Pop this editor off the action stack and restore the + // previous controller — which is whatever opened the editor: + // * Recipes list → recipe form → editor ⇒ back to recipe form + // * Part form → composer → editor ⇒ back to composer + // * Part form → editor (direct link) ⇒ back to part form // - // clearBreadcrumbs: this is a semantic RETURN, not a forward - // navigation. Without it, every round-trip (part → composer → - // editor → back) leaves its intermediate pages on the breadcrumb - // stack, so a second visit shows "…/Process Composer/Process - // Editor/Process Composer/Process Editor/Part" nonsense. + // restore() preserves the full breadcrumb trail. + // clearBreadcrumbs: true (the old behaviour) would wipe parent + // crumbs and isolate the user on a single-crumb page. + try { + this.action.restore(); + return; + } catch (e) { + // No prior controller — fall through to a sensible default. + } + // Fallback: when opened directly via URL with no prior crumb, + // pick the most contextual landing page we have. if (this._partId) { this.action.doAction({ type: "ir.actions.act_window", diff --git a/fusion_plating/fusion_plating/static/src/js/simple_recipe_editor.js b/fusion_plating/fusion_plating/static/src/js/simple_recipe_editor.js index 49bac759..45dd1805 100644 --- a/fusion_plating/fusion_plating/static/src/js/simple_recipe_editor.js +++ b/fusion_plating/fusion_plating/static/src/js/simple_recipe_editor.js @@ -196,6 +196,17 @@ export class FpSimpleRecipeEditor extends Component { * breadcrumb stack so a second visit shows nonsense. */ onBackToList() { + // Pop this editor off the action stack and restore the + // previous controller — preserves the full breadcrumb trail + // (Recipes > LGPS1104 > Editor → back keeps "Recipes" + // visible; Part > Composer > Editor → back returns to the + // Composer with crumbs intact). + try { + this.action.restore(); + return; + } catch (e) { + // No prior controller — fall through to a sensible default. + } if (this._partId) { this.action.doAction( { diff --git a/fusion_plating/fusion_plating/views/fp_process_node_views.xml b/fusion_plating/fusion_plating/views/fp_process_node_views.xml index 5bd4014e..f18c6a91 100644 --- a/fusion_plating/fusion_plating/views/fp_process_node_views.xml +++ b/fusion_plating/fusion_plating/views/fp_process_node_views.xml @@ -51,7 +51,15 @@ class="oe_stat_button" icon="fa-sitemap" invisible="node_type != 'recipe'"> + string="Tree Editor"/> + + 2144A6201-105"). + // Falls back to the part form only when restore() throws (e.g. + // composer opened directly via URL with no prior crumb). + try { + this.action.restore(); + return; + } catch (e) { + // No prior controller — fall through to the part form. + } this.action.doAction({ type: "ir.actions.act_window", res_model: "fp.part.catalog", diff --git a/fusion_plating/fusion_plating_configurator/views/fp_process_node_part_scoped_views.xml b/fusion_plating/fusion_plating_configurator/views/fp_process_node_part_scoped_views.xml index 9e55200a..4f24728d 100644 --- a/fusion_plating/fusion_plating_configurator/views/fp_process_node_part_scoped_views.xml +++ b/fusion_plating/fusion_plating_configurator/views/fp_process_node_part_scoped_views.xml @@ -42,6 +42,28 @@ + + + + fusion.plating.process.node.form.linked.parts + fusion.plating.process.node + + + + + + + +