1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/spreadsheet_edition/static/tests/utils/webclient_helpers.js
2024-12-10 09:04:09 +07:00

95 lines
3.5 KiB
JavaScript

/** @odoo-module */
import { busService } from "@bus/services/bus_service";
import { busParametersService } from "@bus/bus_parameters_service";
import { multiTabService } from "@bus/multi_tab_service";
import { InsertListSpreadsheetMenu } from "@spreadsheet_edition/assets/list_view/insert_list_spreadsheet_menu_owl";
import { makeFakeUserService } from "@web/../tests/helpers/mock_services";
import { loadJS } from "@web/core/assets";
import { dialogService } from "@web/core/dialog/dialog_service";
import { hotkeyService } from "@web/core/hotkeys/hotkey_service";
import { ormService } from "@web/core/orm_service";
import { nameService } from "@web/core/name_service";
import { registry } from "@web/core/registry";
import { uiService } from "@web/core/ui/ui_service";
import { makeFakeSpreadsheetService } from "@spreadsheet_edition/../tests/utils/collaborative_helpers";
import { Spreadsheet } from "@odoo/o-spreadsheet";
import { SpreadsheetComponent } from "@spreadsheet_edition/bundle/actions/spreadsheet_component";
const serviceRegistry = registry.category("services");
export async function prepareWebClientForSpreadsheet() {
await loadJS("/web/static/lib/Chart/Chart.js");
serviceRegistry.add("spreadsheet_collaborative", makeFakeSpreadsheetService(), { force: true });
serviceRegistry.add(
"user",
makeFakeUserService(() => true),
{ force: true }
);
serviceRegistry.add("hotkey", hotkeyService);
serviceRegistry.add("dialog", dialogService);
serviceRegistry.add("ui", uiService);
serviceRegistry.add("name", nameService);
serviceRegistry.add("orm", ormService);
serviceRegistry.add("bus_service", busService);
serviceRegistry.add("bus.parameters", busParametersService);
serviceRegistry.add("multi_tab", multiTabService);
registry.category("favoriteMenu").add(
"insert-list-spreadsheet-menu",
{
Component: InsertListSpreadsheetMenu,
groupNumber: 4,
isDisplayed: ({ config, isSmall }) =>
!isSmall &&
config.actionType === "ir.actions.act_window" &&
config.viewType === "list",
},
{ sequence: 5 }
);
}
function getChildFromComponent(component, cls) {
return Object.values(component.__owl__.children).find((child) => child.component instanceof cls)
.component;
}
/**
* Return the odoo spreadsheet component
* @param {*} actionManager
* @returns {SpreadsheetComponent}
*/
export function getSpreadsheetComponent(actionManager) {
return getChildFromComponent(actionManager, SpreadsheetComponent);
}
/**
* Return the o-spreadsheet component
* @param {*} actionManager
* @returns {Component}
*/
export function getOSpreadsheetComponent(actionManager) {
return getChildFromComponent(getSpreadsheetComponent(actionManager), Spreadsheet);
}
/**
* Return the o-spreadsheet Model
*/
export function getSpreadsheetActionModel(actionManager) {
return getOSpreadsheetComponent(actionManager).model;
}
export function getSpreadsheetActionTransportService(actionManager) {
return actionManager.transportService;
}
export function getSpreadsheetActionEnv(actionManager) {
const model = getSpreadsheetActionModel(actionManager);
const component = getSpreadsheetComponent(actionManager);
const oComponent = getOSpreadsheetComponent(actionManager);
return Object.assign(Object.create(component.env), {
model,
openSidePanel: oComponent.openSidePanel.bind(oComponent),
});
}