odoo18/addons/spreadsheet/static/src/actions/spreadsheet_download_action.js

30 lines
910 B
JavaScript

/** @odoo-module */
import { download } from "@web/core/network/download";
import { registry } from "@web/core/registry";
import { createSpreadsheetModel, waitForDataLoaded } from "@spreadsheet/helpers/model";
/**
* @param {import("@web/env").OdooEnv} env
* @param {object} action
*/
async function downloadSpreadsheet(env, action) {
let { name, data, stateUpdateMessages, xlsxData } = action.params;
if (!xlsxData) {
const model = await createSpreadsheetModel({ env, data, revisions: stateUpdateMessages });
await waitForDataLoaded(model);
xlsxData = model.exportXLSX();
}
await download({
url: "/spreadsheet/xlsx",
data: {
zip_name: `${name}.xlsx`,
files: JSON.stringify(xlsxData.files),
},
});
}
registry
.category("actions")
.add("action_download_spreadsheet", downloadSpreadsheet, { force: true });