Files
carto-4.2.2-1.js/src/analysis/camshaft-reference.js
T
2024-05-23 15:34:45 +08:00

52 lines
1.8 KiB
JavaScript

var camshaftReference = require('camshaft-reference').getVersion('latest');
var PARAM_TYPES = {
NODE: 'node',
NUMBER: 'number',
STRING: 'string',
ENUM: 'enum'
};
var SOURCE_ANALYSIS_TYPE = 'source';
var ANALYSIS_TYPE_TO_SOURCE_PARAM_NAMES_MAP = {};
ANALYSIS_TYPE_TO_SOURCE_PARAM_NAMES_MAP[SOURCE_ANALYSIS_TYPE] = [];
var ANALYSIS_TYPE_TO_PARAM_NAMES_MAP = {};
var analysesReference = camshaftReference.analyses;
if (!analysesReference) {
throw new Error('Error loading the reference for Camshaft analyses');
}
// Populate the analysis source and param names maps.
for (var analysisType in analysesReference) {
var analysisParams = analysesReference[analysisType].params;
for (var paramName in analysisParams) {
ANALYSIS_TYPE_TO_PARAM_NAMES_MAP[analysisType] = ANALYSIS_TYPE_TO_PARAM_NAMES_MAP[analysisType] || [];
ANALYSIS_TYPE_TO_PARAM_NAMES_MAP[analysisType].push(paramName);
ANALYSIS_TYPE_TO_SOURCE_PARAM_NAMES_MAP[analysisType] = ANALYSIS_TYPE_TO_SOURCE_PARAM_NAMES_MAP[analysisType] || [];
var paramType = analysisParams[paramName].type;
if (paramType === PARAM_TYPES.NODE) {
ANALYSIS_TYPE_TO_SOURCE_PARAM_NAMES_MAP[analysisType].push(paramName);
}
}
}
module.exports = {
getSourceNamesForAnalysisType: function (analysisType) {
var sourceNames = ANALYSIS_TYPE_TO_SOURCE_PARAM_NAMES_MAP[analysisType];
if (!sourceNames) {
throw new Error('source names for analysis of type ' + analysisType + " couldn't be found");
}
return sourceNames;
},
getParamNamesForAnalysisType: function (analysisType) {
var paramNames = ANALYSIS_TYPE_TO_PARAM_NAMES_MAP[analysisType];
if (!paramNames) {
throw new Error('param names for analysis of type ' + analysisType + " couldn't be found");
}
return paramNames;
}
};