forked from Mapan/odoo17e
95 lines
3.5 KiB
JavaScript
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),
|
|
});
|
|
}
|