Files
enterprise-addons/documents_spreadsheet_survey/static/src/spreadsheet/survey_menu_items.js
T

59 lines
1.9 KiB
JavaScript

import { _t } from "@web/core/l10n/translation";
import { navigateTo } from "@spreadsheet/actions/helpers";
import { registries } from "@odoo/o-spreadsheet";
const { cellMenuRegistry } = registries;
cellMenuRegistry.add("survey_see_record", {
name: (env) => {
const position = env.model.getters.getActivePosition();
const surveyCell = env.model.getters.getCorrespondingFormulaCell(position);
const surveyCellPosition = env.model.getters.getCellPosition(surveyCell.id);
return position.row === surveyCellPosition.row
? _t("See survey")
: _t("See survey participation");
},
sequence: 200,
execute: surveySeeRecord,
isVisible: canSeeSurveyRecord,
icon: "o-spreadsheet-Icon.SEE_RECORDS",
});
function canSeeSurveyRecord(env) {
const position = env.model.getters.getActivePosition();
const surveyId = env.model.getters.getSurveyIdFromPosition(position);
return surveyId !== undefined;
}
async function surveySeeRecord(env) {
const position = env.model.getters.getActivePosition();
const surveyId = env.model.getters.getSurveyIdFromPosition(position);
const userInputId = env.model.getters.getSurveyUserInputIdFromPosition(position);
if (userInputId !== undefined) {
await navigateTo(
env,
"survey.action_survey_user_input",
{
type: "ir.actions.act_window",
res_model: "survey.user_input",
res_id: userInputId,
views: [[false, "form"]],
},
{ viewType: "form" }
);
} else if (surveyId !== undefined) {
await navigateTo(
env,
"survey.action_survey",
{
type: "ir.actions.act_window",
res_model: "survey.survey",
res_id: surveyId,
views: [[false, "form"]],
},
{ viewType: "form" }
);
}
}