[REF] web: Pivot with view layout
This commit rewrites the pivot view template to make use of the view layout component. X-original-commit: ebb046c5b9b6b629fd6731a419c5b7daf57a9f7d Part-of: odoo/odoo#77463
This commit is contained in:
@@ -4,11 +4,10 @@ import { _lt } from "@web/core/l10n/translation";
|
||||
import { download } from "@web/core/network/download";
|
||||
import { registry } from "@web/core/registry";
|
||||
import { useService } from "@web/core/utils/hooks";
|
||||
import { ControlPanel } from "@web/search/control_panel/control_panel";
|
||||
import { SearchPanel } from "@web/search/search_panel/search_panel";
|
||||
import { useModel } from "@web/views/helpers/model";
|
||||
import { standardViewProps } from "@web/views/helpers/standard_view_props";
|
||||
import { useSetupView } from "@web/views/helpers/view_hook";
|
||||
import { Layout } from "@web/views/layout";
|
||||
import { PivotArchParser } from "@web/views/pivot/pivot_arch_parser";
|
||||
import { PivotModel } from "@web/views/pivot/pivot_model";
|
||||
import { PivotRenderer } from "@web/views/pivot/pivot_renderer";
|
||||
@@ -130,8 +129,9 @@ export class PivotView extends Component {
|
||||
});
|
||||
|
||||
// retrieve form and list view ids from the action
|
||||
const { views = [] } = this.env.config;
|
||||
this.views = ["list", "form"].map((viewType) => {
|
||||
const view = this.props.info.views.find((view) => view[1] === viewType);
|
||||
const view = views.find((view) => view[1] === viewType);
|
||||
return [view ? view[0] : false, viewType];
|
||||
});
|
||||
|
||||
@@ -157,7 +157,7 @@ export class PivotView extends Component {
|
||||
|
||||
PivotView.template = "web.PivotView";
|
||||
PivotView.buttonTemplate = "web.PivotView.Buttons";
|
||||
PivotView.components = { ControlPanel, SearchPanel, Renderer: PivotRenderer };
|
||||
PivotView.components = { Renderer: PivotRenderer, Layout };
|
||||
|
||||
PivotView.props = {
|
||||
...standardViewProps,
|
||||
|
||||
@@ -17,30 +17,26 @@
|
||||
</t>
|
||||
|
||||
<t t-name="web.PivotView" owl="1">
|
||||
<div class="o_pivot_view" t-att-class="{o_view_sample_data: model.useSampleModel }">
|
||||
<ControlPanel t-if="env.searchModel.display.controlPanel" t-props="props.info">
|
||||
<t t-set-slot="control-panel-bottom-left">
|
||||
<t t-call="{{ constructor.buttonTemplate }}"/>
|
||||
<Layout viewType="'pivot'" useSampleModel="model.useSampleModel">
|
||||
<t t-set-slot="control-panel-bottom-left">
|
||||
<t t-call="{{ constructor.buttonTemplate }}"/>
|
||||
</t>
|
||||
<t t-set="displayNoContent" t-value="
|
||||
props.info.noContentHelp !== false and (
|
||||
!(model.hasData() and model.metaData.activeMeasures.length) or
|
||||
model.useSampleModel
|
||||
)"
|
||||
/>
|
||||
<t t-if="displayNoContent">
|
||||
<t t-if="props.info.noContentHelp" t-call="web.ActionHelper">
|
||||
<t t-set="noContentHelp" t-value="props.info.noContentHelp"/>
|
||||
</t>
|
||||
</ControlPanel>
|
||||
<div class="o_content">
|
||||
<SearchPanel t-if="env.searchModel.display.searchPanel" />
|
||||
<t t-set="displayNoContent" t-value="
|
||||
props.info.noContentHelp !== false and (
|
||||
!(model.hasData() and model.metaData.activeMeasures.length) or
|
||||
model.useSampleModel
|
||||
)" />
|
||||
<t t-if="displayNoContent">
|
||||
<t t-if="props.info.noContentHelp" t-call="web.ActionHelper">
|
||||
<t t-set="noContentHelp" t-value="props.info.noContentHelp"/>
|
||||
</t>
|
||||
<t t-else="" t-call="web.NoContentHelper"/>
|
||||
</t>
|
||||
<t t-if="model.hasData() and model.metaData.activeMeasures.length">
|
||||
<Renderer model="model" onCellClicked="cell => onOpenView(cell)"/>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
<t t-else="" t-call="web.NoContentHelper"/>
|
||||
</t>
|
||||
<t t-if="model.hasData() and model.metaData.activeMeasures.length">
|
||||
<Renderer model="model" onCellClicked="cell => onOpenView(cell)"/>
|
||||
</t>
|
||||
</Layout>
|
||||
</t>
|
||||
|
||||
</templates>
|
||||
|
||||
@@ -6,19 +6,21 @@ import { session } from "@web/session";
|
||||
import { makeFakeLocalizationService, makeFakeUserService } from "../helpers/mock_services";
|
||||
import {
|
||||
click,
|
||||
nextTick,
|
||||
legacyExtraNextTick,
|
||||
makeDeferred,
|
||||
mockDownload,
|
||||
nextTick,
|
||||
patchDate,
|
||||
patchWithCleanup,
|
||||
triggerEvent,
|
||||
triggerEvents,
|
||||
} from "../helpers/utils";
|
||||
import { makeView } from "./helpers";
|
||||
import {
|
||||
applyGroup,
|
||||
editFavoriteName,
|
||||
removeFacet,
|
||||
saveFavorite,
|
||||
selectGroup,
|
||||
setupControlPanelFavoriteMenuRegistry,
|
||||
setupControlPanelServiceRegistry,
|
||||
toggleAddCustomGroup,
|
||||
@@ -26,15 +28,13 @@ import {
|
||||
toggleFavoriteMenu,
|
||||
toggleFilterMenu,
|
||||
toggleGroupByMenu,
|
||||
toggleMenu,
|
||||
toggleMenuItem,
|
||||
toggleMenuItemOption,
|
||||
toggleSaveFavorite,
|
||||
saveFavorite,
|
||||
selectGroup,
|
||||
removeFacet,
|
||||
toggleMenu,
|
||||
} from "../search/helpers";
|
||||
import { createWebClient, doAction } from "../webclient/helpers";
|
||||
import { makeView } from "./helpers";
|
||||
|
||||
const serviceRegistry = registry.category("services");
|
||||
|
||||
@@ -438,12 +438,14 @@ QUnit.module("Views", (hooks) => {
|
||||
<field name="foo" type="measure"/>
|
||||
</pivot>`,
|
||||
context: { someKey: true, search_default_test: 3 },
|
||||
views: [
|
||||
[2, "form"],
|
||||
[5, "kanban"],
|
||||
[false, "list"],
|
||||
[false, "pivot"],
|
||||
],
|
||||
config: {
|
||||
views: [
|
||||
[2, "form"],
|
||||
[5, "kanban"],
|
||||
[false, "list"],
|
||||
[false, "pivot"],
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
assert.hasClass(pivot.el.querySelector("table"), "o_enable_linking");
|
||||
@@ -4689,7 +4691,9 @@ QUnit.module("Views", (hooks) => {
|
||||
serverData,
|
||||
context: { search_default_small_than_0: true },
|
||||
noContentHelp: '<p class="abc">click to add a foo</p>',
|
||||
views: [[false, "search"]],
|
||||
config: {
|
||||
views: [[false, "search"]],
|
||||
},
|
||||
});
|
||||
|
||||
assert.containsOnce(pivot, ".o_view_nocontent .abc");
|
||||
@@ -4720,7 +4724,9 @@ QUnit.module("Views", (hooks) => {
|
||||
serverData,
|
||||
context: { search_default_small_than_0: true },
|
||||
noContentHelp: '<p class="abc">click to add a foo</p>',
|
||||
views: [[false, "search"]],
|
||||
config: {
|
||||
views: [[false, "search"]],
|
||||
},
|
||||
});
|
||||
|
||||
assert.hasClass(pivot.el, "o_view_sample_data");
|
||||
@@ -4753,7 +4759,9 @@ QUnit.module("Views", (hooks) => {
|
||||
resModel: "partner",
|
||||
serverData,
|
||||
noContentHelp: '<p class="abc">click to add a foo</p>',
|
||||
views: [[false, "search"]],
|
||||
config: {
|
||||
views: [[false, "search"]],
|
||||
},
|
||||
});
|
||||
|
||||
assert.doesNotHaveClass(pivot.el, "o_view_sample_data");
|
||||
|
||||
Reference in New Issue
Block a user