forked from Techsystech/web
[FIX] web_advanced_search: Implement 'Add Advanced Filter' for owl widgets (pivot, graph)
Steps to reproduce: 1. Go to any Pivot or Graph view. 2. Open the filter menu. Result: 'Add Advanced Filter' option is not there15.0-ocabot-merge-pr-2789-by-pedrobaeza-bump-patch
parent
7de75a9600
commit
fbb9387d2a
|
@ -1,6 +1,6 @@
|
|||
/** @odoo-module **/
|
||||
|
||||
import {getHumanDomain} from "./utils.esm";
|
||||
import {getHumanDomain} from "../utils.esm";
|
||||
|
||||
import config from "web.config";
|
||||
import DomainSelectorDialog from "web.DomainSelectorDialog";
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import {patch} from "@web/core/utils/patch";
|
||||
import FilterMenu from "web.FilterMenu";
|
||||
import AdvancedFilterItem from "../AdvancedFilterItem.esm";
|
||||
import AdvancedFilterItem from "./AdvancedFilterItem.esm";
|
||||
|
||||
/**
|
||||
* Patches the FilterMenu for legacy widgets.
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
/** @odoo-module **/
|
||||
|
||||
import {getHumanDomain} from "../utils.esm";
|
||||
|
||||
import config from "web.config";
|
||||
import DomainSelectorDialog from "web.DomainSelectorDialog";
|
||||
import Domain from "web.Domain";
|
||||
import {ComponentAdapter} from "web.OwlCompatibility";
|
||||
|
||||
const {Component, hooks} = owl;
|
||||
const {useRef} = hooks;
|
||||
|
||||
export default class AdvancedFilterItem extends Component {
|
||||
setup() {
|
||||
this.itemRef = useRef("dropdown-item");
|
||||
}
|
||||
/**
|
||||
* Prevent propagation of dropdown-item-selected event, so that it
|
||||
* doesn't reaches the FilterMenu onFilterSelected event handler.
|
||||
*/
|
||||
mounted() {
|
||||
$(this.itemRef.el).on("dropdown-item-selected", (event) =>
|
||||
event.stopPropagation()
|
||||
);
|
||||
}
|
||||
/**
|
||||
* Open advanced search dialog
|
||||
*
|
||||
* @returns {DomainSelectorDialog} The opened dialog itself.
|
||||
*/
|
||||
onClick() {
|
||||
const adapterParent = new ComponentAdapter(null, {Component});
|
||||
const dialog = new DomainSelectorDialog(
|
||||
adapterParent,
|
||||
this.env.searchModel.resModel,
|
||||
"[]",
|
||||
{
|
||||
debugMode: config.isDebug(),
|
||||
readonly: false,
|
||||
}
|
||||
);
|
||||
// Add 1st domain node by default
|
||||
dialog.opened(() => dialog.domainSelector._onAddFirstButtonClick());
|
||||
// Configure handler
|
||||
dialog.on("domain_selected", this, function (e) {
|
||||
const preFilter = {
|
||||
description: getHumanDomain(dialog.domainSelector),
|
||||
domain: Domain.prototype.arrayToString(e.data.domain),
|
||||
type: "filter",
|
||||
};
|
||||
this.env.searchModel.createNewFilters([preFilter]);
|
||||
});
|
||||
return dialog.open();
|
||||
}
|
||||
}
|
||||
|
||||
AdvancedFilterItem.template = "web_advanced_search.AdvancedFilterItem";
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import {patch} from "@web/core/utils/patch";
|
||||
import {FilterMenu} from "@web/search/filter_menu/filter_menu";
|
||||
import AdvancedFilterItem from "../AdvancedFilterItem.esm";
|
||||
import AdvancedFilterItem from "./AdvancedFilterItem.esm";
|
||||
|
||||
/**
|
||||
* Patches the FilterMenu for owl widgets.
|
||||
|
|
|
@ -10,4 +10,9 @@
|
|||
<AdvancedFilterItem />
|
||||
</CustomFilterItem>
|
||||
</t>
|
||||
<t t-inherit="web.FilterMenu" t-inherit-mode="extension" owl="1">
|
||||
<CustomFilterItem position="after">
|
||||
<AdvancedFilterItem />
|
||||
</CustomFilterItem>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
Loading…
Reference in New Issue