From 044a10a8a43ea511b8958a008b8a5f121cef38f4 Mon Sep 17 00:00:00 2001 From: Stefano Ricci <1219739+SteRiccio@users.noreply.github.com> Date: Thu, 30 Nov 2023 10:29:59 +0100 Subject: [PATCH] R chain: include schema summary (#3165) Co-authored-by: Stefano Ricci Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- common/apiRoutes/index.js | 3 ++- common/apiRoutes/survey.js | 2 ++ .../service/rChain/rFile/system/rFileReadData.js | 9 +++++++++ .../survey/service/schemaSummary/schemaSummary.js | 7 +++++-- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/common/apiRoutes/index.js b/common/apiRoutes/index.js index 7eda902725..f763fead7d 100644 --- a/common/apiRoutes/index.js +++ b/common/apiRoutes/index.js @@ -1,3 +1,4 @@ import * as rChain from './rChain' +import * as survey from './survey' -export { rChain } +export { rChain, survey } diff --git a/common/apiRoutes/survey.js b/common/apiRoutes/survey.js index 08b390cda5..66236f0bb0 100644 --- a/common/apiRoutes/survey.js +++ b/common/apiRoutes/survey.js @@ -1 +1,3 @@ export const getSurveyPath = (surveyId) => `/survey/${surveyId}` + +export const schemaSummary = ({ surveyId, cycle }) => `${getSurveyPath(surveyId)}/schema-summary/?cycle=${cycle}` diff --git a/server/modules/analysis/service/rChain/rFile/system/rFileReadData.js b/server/modules/analysis/service/rChain/rFile/system/rFileReadData.js index 21831cc579..a513f6a679 100644 --- a/server/modules/analysis/service/rChain/rFile/system/rFileReadData.js +++ b/server/modules/analysis/service/rChain/rFile/system/rFileReadData.js @@ -37,6 +37,13 @@ export default class RFileReadData extends RFileSystem { super(rChain, 'read-data') } + async initSchemaSummary() { + const { survey, cycle } = this.rChain + + const schemaSummaryCSV = arenaGetCSV(ApiRoutes.survey.schemaSummary({ surveyId: Survey.getId(survey), cycle })) + await this.appendContent(setVar('arena.schemaSummary', schemaSummaryCSV)) + } + async initEntitiesData() { const { chainUuid, survey, cycle, entities } = this.rChain @@ -119,6 +126,8 @@ export default class RFileReadData extends RFileSystem { const { listCategories, listTaxonomies } = this.rChain + await this.initSchemaSummary() + await this.initEntitiesData() // Append categories and taxoniomies initialization diff --git a/server/modules/survey/service/schemaSummary/schemaSummary.js b/server/modules/survey/service/schemaSummary/schemaSummary.js index 6e6b774799..52be7d1223 100644 --- a/server/modules/survey/service/schemaSummary/schemaSummary.js +++ b/server/modules/survey/service/schemaSummary/schemaSummary.js @@ -48,7 +48,7 @@ const getValidationsSummary = ({ nodeDef }) => { .join('\n') } -export const exportSchemaSummary = async ({ surveyId, cycle, outputStream }) => { +export const generateSchemaSummaryItems = async ({ surveyId, cycle }) => { const survey = await SurveyManager.fetchSurveyAndNodeDefsBySurveyId({ surveyId, draft: true, advanced: true }) const nodeDefs = Survey.getNodeDefsArray(survey).filter( (nodeDef) => @@ -85,7 +85,7 @@ export const exportSchemaSummary = async ({ surveyId, cycle, outputStream }) => return Taxonomy.getName(taxonomy) || '' } - const items = nodeDefs.map((nodeDef) => { + return nodeDefs.map((nodeDef) => { const { uuid, type } = nodeDef const languages = Survey.getLanguages(Survey.getSurveyInfo(survey)) @@ -123,6 +123,9 @@ export const exportSchemaSummary = async ({ surveyId, cycle, outputStream }) => cycle: String(NodeDef.getCycles(nodeDef).map(RecordCycle.getLabel)), // this is to show the user the value that they see into the UI -> https://github.com/openforis/arena/issues/1677 } }) +} +export const exportSchemaSummary = async ({ surveyId, cycle, outputStream }) => { + const items = await generateSchemaSummaryItems({ surveyId, cycle }) await CSVWriter.writeItemsToStream({ outputStream, items, options: { removeNewLines: false } }) }