diff --git a/update_db.js b/update_db.js index 0af2edc..3e22b7e 100644 --- a/update_db.js +++ b/update_db.js @@ -369,7 +369,7 @@ function statsProfileOfIndicatorsAsVariable() { } // save indicator - // db.indicator.save(indicator); + db.indicator.save(indicator); } print("\n"); print("numOfNumbers: "+numOfNumbers); @@ -383,6 +383,94 @@ function statsProfileOfIndicatorsAsVariable() { } } +function addFundingLevelInFilters(filter) { + if(filter.groupFilters && filter.groupFilters.length > 0) { + let index = filter.groupFilters.findIndex(filter => filter.field.includes('project')); + if(index !== -1) { + print('before: ' + JSON.stringify(filter)); + let prefix = filter.groupFilters[index].field.substring(0, filter.groupFilters[index].field.indexOf('project')); + if(!filter.groupFilters.find(filter => filter.field === prefix + "project.funding level 1")) { + filter.groupFilters.push({ + "field": prefix + "project.funding level 1", + "type": "contains", + "values": [ + '((__index_shortName__))' + ] + }); + print('after: ' + JSON.stringify(filter)); + } else { + print('Already added'); + } + } + return filter; + } +} + +function addFundingStreamInDefaultMSCA() { + print("addFundingStreamInDefaultMSCA") + + let stakeholder = db.stakeholder.findOne({"alias": "default-funding-stream"}); + if(stakeholder) { + stakeholder.topics.forEach((topic) => { + let topicObj = db.topic.findOne({"_id": ObjectId(topic)}); + topicObj.categories.forEach((category) => { + let categoryObj = db.category.findOne({"_id": ObjectId(category)}); + categoryObj.subCategories.forEach((subCategory) => { + let subCategoryObj = db.subCategory.findOne({"_id": ObjectId(subCategory)}); + subCategoryObj.numbers.forEach((number) => { + let section = db.section.findOne({"_id": ObjectId(number)}); + section.indicators.forEach((indicator) => { + let indicatorObject = db.indicator.findOne({"_id": ObjectId(indicator)}); + if(indicatorObject.indicatorPaths[0].parameters) { + indicatorObject.indicatorPaths[0].parameters['index_shortName'] = stakeholder.index_shortName.toLowerCase(); + if(indicatorObject.indicatorPaths[0] && indicatorObject.indicatorPaths[0].chartObject) { + let json = JSON.parse(indicatorObject.indicatorPaths[0].chartObject); + if(json.series && json.series.length > 0) { + json.series.forEach(query => { + if(query.query && query.query.filters && query.query.filters.length > 0) { + query.query.filters.forEach(filter => { + filter = addFundingLevelInFilters(filter); + }); + } + }); + indicatorObject.indicatorPaths[0].chartObject = JSON.stringify(json); + db.indicator.save(indicatorObject); + } + } + } + }); + }); + subCategoryObj.charts.forEach((chart) => { + let section = db.section.findOne({"_id": ObjectId(chart)}); + section.indicators.forEach((indicator) => { + let indicatorObject = db.indicator.findOne({"_id": ObjectId(indicator)}); + if(indicatorObject.indicatorPaths[0] && indicatorObject.indicatorPaths[0].chartObject) { + let json = JSON.parse(indicatorObject.indicatorPaths[0].chartObject); + if(json.chartDescription && json.chartDescription.queries && json.chartDescription.queries.length > 0) { + json.chartDescription.queries.forEach(query => { + if(query.query && query.query.filters && query.query.filters.length > 0) { + query.query.filters.forEach(filter => { + filter = addFundingLevelInFilters(filter); + }) + } + }); + indicatorObject.indicatorPaths[0].chartObject = JSON.stringify(json); + db.indicator.save(indicatorObject); + } + } + }); + }); + }); + + }); + }); + } else { + print("Profile doesn't exist") + } + +} + + use monitordb; // use 1_openaire-mongodb-beta; // dev db @@ -409,4 +497,5 @@ use monitordb; // addFooterHelpTextForPortalType("organization"); // 11-04-2023 -statsProfileOfIndicatorsAsVariable(); \ No newline at end of file +statsProfileOfIndicatorsAsVariable(); +addFundingStreamInDefaultMSCA();