From 858d02fbfc5bff1a24812784d44794b64b5c90d0 Mon Sep 17 00:00:00 2001 From: ryan-preble Date: Fri, 21 Feb 2025 12:00:05 -0500 Subject: [PATCH] Refactor tool compatibility on other tools to get compatibility in CXGN.Dataset.js --- js/source/entries/toolcompatibility.js | 62 ------------------------- js/source/legacy/solGS/Dataset.js | 2 + js/source/legacy/solGS/cluster.js | 15 +++++- js/source/legacy/solGS/correlation.js | 15 +++++- js/source/legacy/solGS/kinship.js | 15 +++++- js/source/legacy/solGS/pca.js | 15 +++++- lib/CXGN/Dataset.pm | 2 +- mason/solgs/tools/datatable_display.mas | 2 +- mason/tools/heritability/index.mas | 2 +- mason/tools/solgwas/index.mas | 2 +- mason/tools/stability/index.mas | 2 +- 11 files changed, 63 insertions(+), 71 deletions(-) delete mode 100644 js/source/entries/toolcompatibility.js diff --git a/js/source/entries/toolcompatibility.js b/js/source/entries/toolcompatibility.js deleted file mode 100644 index b493fd1053..0000000000 --- a/js/source/entries/toolcompatibility.js +++ /dev/null @@ -1,62 +0,0 @@ - - -const abbreviations = { - 'pca' : 'Population Structure', - 'cluster' : 'Clustering', - 'kinship' : 'Kinship & Inbreeding', - 'corr' : 'Correlation', - 'SolGWAS' : 'GWAS', - 'Heritability' : 'Heritability', - 'Stability' : 'Stability' -} - -function substituteCompatibilities(abbreviation) { - jQuery('[id^="compatibility_glyph"]').each(function(index, element){ - - var selector_id = element.id; - var dataset_id = selector_id.split("_")[2]; - var compatibility_message; - - $.ajax({ - url: '/ajax/dataset/retrieve/' + dataset_id + '/tool_compatibility' - }).then(function(response){ - if (response.error) { - compatibility_message = 'error'; - } else { - var tool_compatibility = JSON.parse(response.tool_compatibility); - if (tool_compatibility == "(not calculated)") { - compatibility_message = "(not calculated)"; - } else { - if (tool_compatibility[abbreviations[abbreviation]]['compatible'] == 0) { - compatibility_message = '' - } else { - if ('warn' in tool_compatibility[abbreviations[abbreviation]]) { - compatibility_message = ''; - } else { - compatibility_message = ''; - } - } - } - } - jQuery(`#compatibility_glyph_${dataset_id}`).html(compatibility_message); - }).catch(function(error) { - console.log(error.error); - jQuery(`#compatibility_glyph_${dataset_id}`).text('(not calculated)'); - }); - }); -} - -jQuery(document).ready(function() { - - jQuery('[id$=_pops_table]').each(function(index,element){ - var table_id = element.id; - var analysis_abbr = table_id.split("_")[0]; - var table = jQuery(`#${table_id}`); - - substituteCompatibilities(analysis_abbr); - - table.on('draw.dt', function() { - substituteCompatibilities(analysis_abbr); - }); - }); -}); diff --git a/js/source/legacy/solGS/Dataset.js b/js/source/legacy/solGS/Dataset.js index cd476785a4..4e2aad7c17 100644 --- a/js/source/legacy/solGS/Dataset.js +++ b/js/source/legacy/solGS/Dataset.js @@ -68,6 +68,7 @@ solGS.dataset = { name: name, type: datasetTypes[j], data_str: "dataset", + tool_compatibility: d.tool_compatibility }; datasetPops.push(dsObj); dsIds.push(id); @@ -96,6 +97,7 @@ solGS.dataset = { privateDatasets = this.addDataOwnerAttr(privateDatasets, 'private') var allDatasets = [privateDatasets, publicDatasets]; + console.log(allDatasets); return allDatasets.flat(); }, diff --git a/js/source/legacy/solGS/cluster.js b/js/source/legacy/solGS/cluster.js index c6717a6f96..f2ecb5d9e7 100644 --- a/js/source/legacy/solGS/cluster.js +++ b/js/source/legacy/solGS/cluster.js @@ -205,6 +205,7 @@ solGS.cluster = { var popId = clusterPop.id; var popName = clusterPop.name; var dataStr = clusterPop.data_str; + var tool_compatibility = clusterPop.tool_compatibility; var clusterPopId = solGS.cluster.getClusterPopId(popId, dataStr); var clusterTypeOpts = solGS.cluster.createClusterTypeSelect(clusterPopId); @@ -231,7 +232,19 @@ solGS.cluster = { var compatibility_message = ''; if (dataStr.match(/dataset/)) { popName = `${popName}`; - compatibility_message = `

Working...

`; + if (tool_compatibility == "(not calculated)"){ + compatibility_message = "(not calculated)"; + } else { + if (tool_compatibility["Clustering"]['compatible'] == 0) { + compatibility_message = '' + } else { + if ('warn' in tool_compatibility["Clustering"]) { + compatibility_message = ''; + } else { + compatibility_message = ''; + } + } + } } var rowData = [popName, dataStr, compatibility_message, clusterPop.owner, clusterTypeOpts, diff --git a/js/source/legacy/solGS/correlation.js b/js/source/legacy/solGS/correlation.js index fe8a0087cf..d1607dd11f 100644 --- a/js/source/legacy/solGS/correlation.js +++ b/js/source/legacy/solGS/correlation.js @@ -154,6 +154,7 @@ getSelectedPopCorrArgs: function (runCorrElemId) { var popId = corrPop.id; var popName = corrPop.name; var dataStr = corrPop.data_str; + var tool_compatibility = corrPop.tool_compatibility; var corrPopId = this.getCorrPopId(popId, dataStr); @@ -194,7 +195,19 @@ getSelectedPopCorrArgs: function (runCorrElemId) { var compatibility_message = ''; if (dataStr.match(/dataset/)) { popName = `${popName}`; - compatibility_message = `

Working...

`; + if (tool_compatibility == "(not calculated)"){ + compatibility_message = "(not calculated)"; + } else { + if (tool_compatibility["Correlation"]['compatible'] == 0) { + compatibility_message = '' + } else { + if ('warn' in tool_compatibility["Correlation"]) { + compatibility_message = ''; + } else { + compatibility_message = ''; + } + } + } } var rowData = [popName, diff --git a/js/source/legacy/solGS/kinship.js b/js/source/legacy/solGS/kinship.js index f910e4e8af..9c5297afa4 100644 --- a/js/source/legacy/solGS/kinship.js +++ b/js/source/legacy/solGS/kinship.js @@ -155,6 +155,7 @@ solGS.kinship = { var popId = kinshipPop.id; var popName = kinshipPop.name; var dataStr = kinshipPop.data_str; + var tool_compatibility = kinshipPop.tool_compatibility; var kinshipPopId = solGS.kinship.getKinshipPopId(popId, dataStr); @@ -197,7 +198,19 @@ solGS.kinship = { var compatibility_message = ''; if (dataStr.match(/dataset/)) { popName = `${popName}`; - compatibility_message = `

Working...

`; + if (tool_compatibility == "(not calculated)"){ + compatibility_message = "(not calculated)"; + } else { + if (tool_compatibility["Kinship & Inbreeding"]['compatible'] == 0) { + compatibility_message = '' + } else { + if ('warn' in tool_compatibility["Kinship & Inbreeding"]) { + compatibility_message = ''; + } else { + compatibility_message = ''; + } + } + } } var rowData = [popName, dataStr, compatibility_message, kinshipPop.owner, dataTypeOpts, runKinshipBtn, `${dataStr}_${popId}`]; diff --git a/js/source/legacy/solGS/pca.js b/js/source/legacy/solGS/pca.js index e9ac5028c7..794b7bd727 100644 --- a/js/source/legacy/solGS/pca.js +++ b/js/source/legacy/solGS/pca.js @@ -180,6 +180,7 @@ solGS.pca = { var popId = pcaPop.id; var popName = pcaPop.name; var dataStr = pcaPop.data_str; + var tool_compatibility = pcaPop.tool_compatibility; var pcaPopId = solGS.pca.getPcaPopId(popId, dataStr); @@ -224,7 +225,19 @@ solGS.pca = { if (dataStr.match(/dataset/)) { popName = `${popName}`; - compatibility_message = `

Working...

`; + if (tool_compatibility == "(not calculated)"){ + compatibility_message = "(not calculated)"; + } else { + if (tool_compatibility["Population Structure"]['compatible'] == 0) { + compatibility_message = '' + } else { + if ('warn' in tool_compatibility["Population Structure"]) { + compatibility_message = ''; + } else { + compatibility_message = ''; + } + } + } } var rowData = [popName, diff --git a/lib/CXGN/Dataset.pm b/lib/CXGN/Dataset.pm index c4358ac5a2..cd507a0d9a 100644 --- a/lib/CXGN/Dataset.pm +++ b/lib/CXGN/Dataset.pm @@ -597,7 +597,7 @@ sub get_dataset_data { $dataref->{category_order} = $self->category_order(); $dataref->{outliers} = $self->outliers() if $self->outliers; $dataref->{outlier_cutoffs} = $self->outlier_cutoffs() if $self->outliers; - $dataref->{tool_compatibility} = $self->tool_compatibility() if $self->tool_compatibility; + $dataref->{tool_compatibility} = ($self->tool_compatibility) ? $self->tool_compatibility() : '(not calculated)'; return $dataref; } diff --git a/mason/solgs/tools/datatable_display.mas b/mason/solgs/tools/datatable_display.mas index c4cb44c242..10fac36c94 100644 --- a/mason/solgs/tools/datatable_display.mas +++ b/mason/solgs/tools/datatable_display.mas @@ -23,7 +23,7 @@ my $analysis_abbr = $analysis_type =~ /correlation/ ? 'corr' : $analysis_type; $wizard_link_txt = 'Create a new list or dataset' if !$wizard_link_txt; -<& /util/import_javascript.mas, entries => ["toolcompatibility"], classes => [ "solGS.Dataset", "CXGN.List"] &> +<& /util/import_javascript.mas, classes => [ "solGS.Dataset", "CXGN.List"] &>
diff --git a/mason/tools/heritability/index.mas b/mason/tools/heritability/index.mas index a6de5b2a1c..ddc0eeda95 100644 --- a/mason/tools/heritability/index.mas +++ b/mason/tools/heritability/index.mas @@ -12,7 +12,7 @@ -<& '/util/import_javascript.mas', entries => ["toolcompatibility"], classes => ['jquery', 'jqueryui', 'CXGN.Login', 'd3.d3v4Min.js', 'CXGN.BreedersToolbox.HTMLSelect'] &> +<& '/util/import_javascript.mas', classes => ['jquery', 'jqueryui', 'CXGN.Login', 'd3.d3v4Min.js', 'CXGN.BreedersToolbox.HTMLSelect'] &> diff --git a/mason/tools/solgwas/index.mas b/mason/tools/solgwas/index.mas index 501de5fde5..57f86ee0d7 100644 --- a/mason/tools/solgwas/index.mas +++ b/mason/tools/solgwas/index.mas @@ -13,7 +13,7 @@ -<& '/util/import_javascript.mas', entries => ["toolcompatibility"], classes => ['jquery', 'jqueryui', 'CXGN.Login', 'd3.d3v4Min.js', 'CXGN.BreedersToolbox.HTMLSelect'] &> +<& '/util/import_javascript.mas', classes => ['jquery', 'jqueryui', 'CXGN.Login', 'd3.d3v4Min.js', 'CXGN.BreedersToolbox.HTMLSelect'] &> diff --git a/mason/tools/stability/index.mas b/mason/tools/stability/index.mas index c257f0d55a..261b95a35e 100644 --- a/mason/tools/stability/index.mas +++ b/mason/tools/stability/index.mas @@ -13,7 +13,7 @@ -<& '/util/import_javascript.mas', entries => ["toolcompatibility"], classes => ['jquery', 'jqueryui', 'CXGN.Login', 'd3.d3v4Min.js', 'CXGN.BreedersToolbox.HTMLSelect'] &> +<& '/util/import_javascript.mas', classes => ['jquery', 'jqueryui', 'CXGN.Login', 'd3.d3v4Min.js', 'CXGN.BreedersToolbox.HTMLSelect'] &>