From 44b6c6f0092f54cae08f56e19bc54921ecddf0b1 Mon Sep 17 00:00:00 2001
From: Lauri Himanen <lauri.himanen@gmail.com>
Date: Wed, 25 Sep 2024 05:54:29 +0000
Subject: [PATCH] Resolve "Add formulas and symmetry information to be
 available for topology"

---
 gui/src/components/search/FilterRegistry.js   | 25 +++++++++++++++----
 .../components/search/widgets/WidgetTerms.js  |  6 ++---
 2 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/gui/src/components/search/FilterRegistry.js b/gui/src/components/search/FilterRegistry.js
index ecab46a84f..d62e984df4 100644
--- a/gui/src/components/search/FilterRegistry.js
+++ b/gui/src/components/search/FilterRegistry.js
@@ -218,15 +218,21 @@ registerFilter(
   [
     {name: 'label', ...termQuantity},
     {name: 'method', ...termQuantity},
-    {name: 'dimensionality', ...termQuantity},
-    {name: 'building_block', ...termQuantity},
+    {name: 'description', ...termQuantity},
     {name: 'material_id', ...termQuantity},
     {name: 'material_name', ...termQuantity},
-    {name: 'symmetry.prototype_name', ...termQuantity},
-    {name: 'symmetry.prototype_label_aflow', ...termQuantity},
-    {name: 'n_atoms', ...numberHistogramQuantity},
+    {name: 'structural_type', ...termQuantity},
+    {name: 'dimensionality', ...termQuantity},
+    {name: 'building_block', ...termQuantity},
+    {name: 'elements', ...termQuantity},
+    {name: 'n_elements', ...numberHistogramQuantity},
+    {name: 'chemical_formula_hill', ...termQuantity, placeholder: "E.g. H2O2, C2H5Br"},
+    {name: 'chemical_formula_iupac', ...termQuantity, placeholder: "E.g. GaAs, SiC", label: 'Chemical formula IUPAC'},
+    {name: 'chemical_formula_reduced', ...termQuantity, placeholder: "E.g. H2NaO, ClNa"},
+    {name: 'chemical_formula_anonymous', ...termQuantity, placeholder: "E.g. A2B, A3B2C2"},
     {name: 'atomic_fraction', ...numberHistogramQuantity},
     {name: 'mass_fraction', ...numberHistogramQuantity},
+    {name: 'n_atoms', ...numberHistogramQuantity},
     {name: 'system_relation.type', ...termQuantity},
     {name: 'cell.a', ...numberHistogramQuantity},
     {name: 'cell.b', ...numberHistogramQuantity},
@@ -237,6 +243,14 @@ registerFilter(
     {name: 'cell.atomic_density', ...numberHistogramQuantity},
     {name: 'cell.mass_density', ...numberHistogramQuantity},
     {name: 'cell.volume', ...numberHistogramQuantity},
+    {name: 'symmetry.bravais_lattice', ...termQuantity},
+    {name: 'symmetry.crystal_system', ...termQuantity},
+    {name: 'symmetry.hall_symbol', ...termQuantity},
+    {name: 'symmetry.point_group', ...termQuantity, placeholder: "E.g. 6mm, m-3m, 6/mmm"},
+    {name: 'symmetry.space_group_symbol', ...termQuantity, placeholder: "E.g. Pnma, Fd-3m, P6_3mc"},
+    {name: 'symmetry.strukturbericht_designation', ...termQuantity, placeholder: "E.g. Pnma, Fd-3m, P6_3mc"},
+    {name: 'symmetry.prototype_name', ...termQuantity},
+    {name: 'symmetry.prototype_label_aflow', ...termQuantity},
     {name: 'sbu_type', ...termQuantity},
     {name: 'largest_cavity_diameter', ...numberHistogramQuantity},
     {name: 'pore_limiting_diameter', ...numberHistogramQuantity},
@@ -264,6 +278,7 @@ registerFilter(
   nestedQuantity,
   [
     {name: 'element', ...termQuantity},
+    {name: 'mass', ...numberHistogramQuantity},
     {name: 'atomic_fraction', ...numberHistogramQuantity},
     {name: 'mass_fraction', ...numberHistogramQuantity}
   ]
diff --git a/gui/src/components/search/widgets/WidgetTerms.js b/gui/src/components/search/widgets/WidgetTerms.js
index 8895872243..f368cc0bfd 100644
--- a/gui/src/components/search/widgets/WidgetTerms.js
+++ b/gui/src/components/search/widgets/WidgetTerms.js
@@ -127,7 +127,7 @@ export const WidgetTerms = React.memo((
     return config
   }, [aggSize, filterData, quantity])
   const agg = useAgg(quantity, !isNil(height), id, aggConfig)
-  const max = agg ? Math.max(...agg.data.map(option => option.count)) : 0
+  const max = agg ? Math.max(...agg.data.map(option => option.nested_count)) : 0
 
   const handleChange = useCallback((event, key, selected) => {
     setFilter(old => {
@@ -162,7 +162,7 @@ export const WidgetTerms = React.memo((
         const maxSize = Math.min(aggConfig.size, agg.data.length)
         for (let i = 0; i < maxSize; ++i) {
           const option = agg.data[i]
-          if (option.count > 0 && nShown < maxSize) {
+          if (option.nested_count > 0 && nShown < maxSize) {
             aggComp.push(<InputItem
               key={option.value}
               value={option.value}
@@ -170,7 +170,7 @@ export const WidgetTerms = React.memo((
               max={max}
               onChange={handleChange}
               variant="checkbox"
-              count={option.count}
+              count={option.nested_count}
               scale={scale}
             />)
             ++nShown
-- 
GitLab