cartodb-4.42/lib/assets/javascripts/builder/components/modals/add-analysis/analysis-options.js

65 lines
2.2 KiB
JavaScript
Raw Normal View History

2024-04-06 13:25:13 +08:00
var _ = require('underscore');
var GeneratedAnalysisOptionModel = require('./analysis-option-models/generated-analysis-option-model');
var camshaftReference = require('camshaft-reference');
var latestCamshaftReference = camshaftReference.getVersion('latest');
var Analyses = require('builder/data/analyses');
/**
* Analysis definitions, organized in buckets per top-level category
*
* - {Obj} -> options (userModel, configModel, queryGeometryModel)
*/
module.exports = function (options) {
var categories = {
create_clean: {
title: _t('analysis-category.create-clean'),
analyses: Analyses.getAnalysesByModalCategory('create_clean', options)
},
data_transformation: {
title: _t('analysis-category.data-transformation'),
analyses: Analyses.getAnalysesByModalCategory('data_transformation', options)
},
analyze_predict: {
title: _t('analysis-category.analyze-predict'),
analyses: Analyses.getAnalysesByModalCategory('analyze_predict', options)
}
};
var alsoGenerateFromCamshaftReference = options.userModel.featureEnabled('generate_analysis_options');
if (alsoGenerateFromCamshaftReference) {
var implementedAnalyses = _.reduce(Object.keys(categories), function (memo, category) {
return memo.concat(
categories[category].analyses.map(function (analysis) {
return analysis.nodeAttrs.type;
})
);
}, []);
categories['generated'] = {
title: 'Generated analyses by the Camshaft reference v' + _.last(camshaftReference.versions),
analyses: _.compact(
Object
.keys(latestCamshaftReference.analyses)
.filter(function (type) {
return type !== 'source' && !_.contains(implementedAnalyses, type);
})
.map(function (type) {
if (!Analyses.isAnalysisValidByType(type, options)) {
return false;
}
return {
Model: GeneratedAnalysisOptionModel,
nodeAttrs: {type: type},
title: type,
desc: JSON.stringify(latestCamshaftReference.analyses[type])
};
})
)
};
}
return categories;
};