From 096778b582491e9ec57405ea762b838db27c5a9f Mon Sep 17 00:00:00 2001 From: Matt Yoder Date: Fri, 1 Nov 2024 10:43:04 -0400 Subject: [PATCH] feat(resource-group-detail): use resource data from CIDeR --- .../bridges2.psc.access-ci.org.json | 11 - .../announcements.json | 9 - .../discussion.json | 25 - .../documentation.json | 12 - .../bridges2.psc.access-ci.org/events.json | 12 - .../projects/all.json | 70 -- .../projects/educator.json | 30 - .../projects/grad-student.json | 38 - .../projects/researcher.json | 66 -- .../queue-metrics/30.json | 31 - .../queue-metrics/365.json | 31 - .../queue-metrics/90.json | 31 - .../bridges2.psc.access-ci.org/resources.json | 97 --- .../bridges2.psc.access-ci.org/software.json | 678 ------------------ .../jetstream2.indiana.access-ci.org.json | 11 - public/api/resource-slides.json | 20 - src/grid.css | 1 - src/grid.jsx | 13 +- src/resource-detail.jsx | 26 +- src/resource-group-detail.jsx | 6 +- src/resource-group-hardware.jsx | 120 ++++ src/resource-group-resources.jsx | 46 -- src/resource-home.jsx | 9 +- src/resource-node-types.jsx | 35 - 24 files changed, 156 insertions(+), 1272 deletions(-) delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org.json delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org/announcements.json delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org/discussion.json delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org/documentation.json delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org/events.json delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org/projects/all.json delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org/projects/educator.json delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org/projects/grad-student.json delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org/projects/researcher.json delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org/queue-metrics/30.json delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org/queue-metrics/365.json delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org/queue-metrics/90.json delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org/resources.json delete mode 100644 public/api/resource-groups/bridges2.psc.access-ci.org/software.json delete mode 100644 public/api/resource-groups/jetstream2.indiana.access-ci.org.json delete mode 100644 public/api/resource-slides.json create mode 100644 src/resource-group-hardware.jsx delete mode 100644 src/resource-group-resources.jsx delete mode 100644 src/resource-node-types.jsx diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org.json b/public/api/resource-groups/bridges2.psc.access-ci.org.json deleted file mode 100644 index 14b2714..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "Bridges-2", - "resourceProvider": { - "resourceProviderId": 1, - "name": "Pittsburgh Supercomputing Center", - "iconUri": "https://i0.wp.com/www.psc.edu/wp-content/uploads/2020/09/cropped-PSClogo_Gradient-e1600870263745.jpg?fit=32%2C32&ssl=1" - }, - "imageUri": "https://i0.wp.com/www.psc.edu/wp-content/uploads/2024/02/bridges-2-50.png?w=694&ssl=1", - "description": "Bridges-2 provides transformative capability for rapidly evolving computation- and data-intensive research, and creates opportunities for collaboration and convergence research. It supports both traditional and non-traditional research communities and applications. Bridges-2 integrates new technologies for converged, scalable HPC, machine learning and data; prioritizes researcher productivity and ease of use; and provides an extensible architecture for interoperation with complementary data-intensive projects, campus resources, and clouds.", - "userGuideUri": "https://www.psc.edu/resources/bridges-2/user-guide/" -} diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org/announcements.json b/public/api/resource-groups/bridges2.psc.access-ci.org/announcements.json deleted file mode 100644 index a3d63d4..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org/announcements.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "announcements": [ - { - "type": "outage", - "description": "Bridges-2 compute, storage, and virtual machines will be unavailable on September 1, 2024 from 8:00 a.m. to 5:00 p.m. EDT for scheduled filesystem maintenance.", - "announcementUri": "https://www.psc.edu/resources/bridges-2/" - } - ] -} diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org/discussion.json b/public/api/resource-groups/bridges2.psc.access-ci.org/discussion.json deleted file mode 100644 index 59637f5..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org/discussion.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "categoryUri": "https://ask.cyberinfrastructure.org/c/access-forums/access-bridges/78", - "topics": [ - { - "topic": "Bridges-2 suitability for computational chemistry workloads (mainly Gaussian)?", - "updateDate": "2023-07-26", - "topicUri": "https://ask.cyberinfrastructure.org/t/bridges-2-suitability-for-computational-chemistry-workloads-mainly-gaussian/2886" - }, - { - "topic": "How do access Bridges2 globus endpoint", - "updateDate": "2023-05-26", - "topicUri": "https://ask.cyberinfrastructure.org/t/how-do-access-bridges2-globus-endpoint/2769" - }, - { - "topic": "AlphaFold 2 Bridges", - "updateDate": "2022-09-14", - "topicUri": "https://ask.cyberinfrastructure.org/t/alphafold-2-bridges/2493" - }, - { - "topic": "About the ACCESS-Bridges category", - "updateDate": "2022-08-29", - "topicUri": "https://ask.cyberinfrastructure.org/t/about-the-access-bridges-category/2474" - } - ] -} diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org/documentation.json b/public/api/resource-groups/bridges2.psc.access-ci.org/documentation.json deleted file mode 100644 index 72ea911..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org/documentation.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "documentation": [ - { - "name": "Bridges-2 Home Page", - "documentationUri": "https://www.psc.edu/resources/bridges-2/" - }, - { - "name": "Bridges-2 User Guide", - "documentationUri": "https://www.psc.edu/resources/bridges-2/user-guide/" - } - ] -} diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org/events.json b/public/api/resource-groups/bridges2.psc.access-ci.org/events.json deleted file mode 100644 index 3512c67..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org/events.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "events": [ - { - "title": "Bridges-2 Webinar: Scaling Up Ecological Monitoring with AI: How Supercomputing Is Unlocking the Value of Autonomous Acoustic Sensing", - "startDateTime": "2024-08-23T13:00:00-04:00", - "endDateTime": "2024-08-23T14:00:00-04:00", - "eventUri": "https://www.psc.edu/events/bridges-2-webinar-series/scaling-up-ecological-monitoring-with-ai/", - "speaker": "Sam Lapp, University of Pittsburgh", - "description": "Automated acoustic recording devices monitor wildlife at an unprecedented scale. Using hundreds of sensors, bioacoustic monitoring transforms our understanding of birds, bats, and frogs, aiding biodiversity management." - } - ] -} diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org/projects/all.json b/public/api/resource-groups/bridges2.psc.access-ci.org/projects/all.json deleted file mode 100644 index 723b16b..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org/projects/all.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "projects": { - "projectType": [ - { - "name": "Explore ACCESS", - "count": 354 - }, - { - "name": "Discover ACCESS", - "count": 191 - }, - { - "name": "Accelerate ACCESS", - "count": 87 - }, - { - "name": "Maximize ACCESS", - "count": 14 - } - ], - "fieldOfScience": [ - { - "name": "Materials Engineering", - "count": 157 - }, - { - "name": "Physical Chemistry", - "count": 143 - }, - { - "name": "Applied Computer Science", - "count": 126 - }, - { - "name": "Health Sciences", - "count": 114 - }, - { - "name": "Ecology", - "count": 90 - }, - { - "name": "Training", - "count": 16 - } - ], - "institution": [ - { - "name": "Carnegie Mellon University", - "count": 321 - }, - { - "name": "University of Pittsburgh", - "count": 190 - }, - { - "name": "University of Somewhere", - "count": 110 - }, - { - "name": "Another University", - "count": 16 - }, - { - "name": "Computing College", - "count": 9 - } - ] - } -} diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org/projects/educator.json b/public/api/resource-groups/bridges2.psc.access-ci.org/projects/educator.json deleted file mode 100644 index e259095..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org/projects/educator.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "projects": { - "projectType": [ - { - "name": "Explore ACCESS", - "count": 16 - } - ], - "fieldOfScience": [ - { - "name": "Applied Computer Science", - "count": 10 - }, - { - "name": "Training", - "count": 6 - } - ], - "institution": [ - { - "name": "Carnegie Mellon University", - "count": 8 - }, - { - "name": "University of Pittsburgh", - "count": 8 - } - ] - } -} diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org/projects/grad-student.json b/public/api/resource-groups/bridges2.psc.access-ci.org/projects/grad-student.json deleted file mode 100644 index 2aaf25a..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org/projects/grad-student.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "projects": { - "projectType": [ - { - "name": "Explore ACCESS", - "count": 52 - } - ], - "fieldOfScience": [ - { - "name": "Materials Engineering", - "count": 21 - }, - { - "name": "Physical Chemistry", - "count": 12 - }, - { - "name": "Applied Computer Science", - "count": 19 - } - ], - "institution": [ - { - "name": "University of Somewhere", - "count": 26 - }, - { - "name": "Another University", - "count": 22 - }, - { - "name": "Computing College", - "count": 4 - } - ] - } -} diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org/projects/researcher.json b/public/api/resource-groups/bridges2.psc.access-ci.org/projects/researcher.json deleted file mode 100644 index 07e8ed1..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org/projects/researcher.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "projects": { - "projectType": [ - { - "name": "Explore ACCESS", - "count": 264 - }, - { - "name": "Discover ACCESS", - "count": 36 - }, - { - "name": "Accelerate ACCESS", - "count": 9 - }, - { - "name": "Maximize ACCESS", - "count": 14 - } - ], - "fieldOfScience": [ - { - "name": "Materials Engineering", - "count": 99 - }, - { - "name": "Physical Chemistry", - "count": 67 - }, - { - "name": "Applied Computer Science", - "count": 66 - }, - { - "name": "Health Sciences", - "count": 49 - }, - { - "name": "Ecology", - "count": 42 - } - ], - "institution": [ - { - "name": "Carnegie Mellon University", - "count": 187 - }, - { - "name": "University of Pittsburgh", - "count": 65 - }, - { - "name": "University of Somewhere", - "count": 26 - }, - { - "name": "Another University", - "count": 36 - }, - { - "name": "Computing College", - "count": 9 - } - ] - } -} diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org/queue-metrics/30.json b/public/api/resource-groups/bridges2.psc.access-ci.org/queue-metrics/30.json deleted file mode 100644 index f52753d..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org/queue-metrics/30.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "queueMetrics": [ - { - "resourceId": 1, - "name": "Bridges-2 Regular Memory", - "resourceRepositoryKey": 2900, - "waitTime": 11.97372, - "wallTime": 3.080251, - "expansionFactor": 5.794, - "order": 1 - }, - { - "resourceId": 2, - "name": "Bridges-2 Extreme Memory", - "resourceRepositoryKey": 2903, - "waitTime": 4.266471, - "wallTime": 5.40701, - "expansionFactor": 1.7939, - "order": 2 - }, - { - "resourceId": 3, - "name": "Bridges-2 GPU", - "resourceRepositoryKey": 2902, - "waitTime": 57.526596, - "wallTime": 2.376414, - "expansionFactor": 25.0903, - "order": 3 - } - ] -} diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org/queue-metrics/365.json b/public/api/resource-groups/bridges2.psc.access-ci.org/queue-metrics/365.json deleted file mode 100644 index b5afd83..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org/queue-metrics/365.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "queueMetrics": [ - { - "resourceId": 1, - "name": "Bridges-2 Regular Memory", - "resourceRepositoryKey": 2900, - "waitTime": 7.820775, - "wallTime": 1.699045, - "expansionFactor": 6.1959, - "order": 1 - }, - { - "resourceId": 2, - "name": "Bridges-2 Extreme Memory", - "resourceRepositoryKey": 2903, - "waitTime": 9.848182, - "wallTime": 6.751228, - "expansionFactor": 2.4567, - "order": 2 - }, - { - "resourceId": 3, - "name": "Bridges-2 GPU", - "resourceRepositoryKey": 2902, - "waitTime": 14.737766, - "wallTime": 2.025538, - "expansionFactor": 8.2869, - "order": 3 - } - ] -} diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org/queue-metrics/90.json b/public/api/resource-groups/bridges2.psc.access-ci.org/queue-metrics/90.json deleted file mode 100644 index d844ed1..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org/queue-metrics/90.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "queueMetrics": [ - { - "resourceId": 1, - "name": "Bridges-2 Regular Memory", - "resourceRepositoryKey": 2900, - "waitTime": 12.564133, - "wallTime": 2.7384, - "expansionFactor": 7.684, - "order": 1 - }, - { - "resourceId": 2, - "name": "Bridges-2 Extreme Memory", - "resourceRepositoryKey": 2903, - "waitTime": 5.413989, - "wallTime": 6.426771, - "expansionFactor": 1.839, - "order": 2 - }, - { - "resourceId": 3, - "name": "Bridges-2 GPU", - "resourceRepositoryKey": 2902, - "waitTime": 44.75172, - "wallTime": 2.512934, - "expansionFactor": 18.7756, - "order": 3 - } - ] -} diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org/resources.json b/public/api/resource-groups/bridges2.psc.access-ci.org/resources.json deleted file mode 100644 index 15496d6..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org/resources.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "resources": [ - { - "resourceId": 1, - "name": "Bridges-2 Regular Memory", - "summary": "Regular Memory (RM) nodes provide extremely powerful general-purpose computing, pre- and post-processing, AI inferencing, and machine learning and data analytics. Most RM nodes contain 256GB of RAM, but 16 of them have 512GB.", - "resourceTypeId": 1, - "nodeTypes": [ - { - "count": 488, - "cpu": "2 AMD EPYC 7742 CPUs, 64 cores per CPU, 128 cores per node, 2.25-3.40 GHz", - "ram": "256GB", - "cache": "256MB L3, 8 memory channels", - "localStorage": "3.84TB NVMe SSD", - "network": "Mellanox ConnectX-6-HDR Infiniband 200Gb/s Adapter" - }, - { - "count": 16, - "cpu": "2 AMD EPYC 7742 CPUs, 64 cores per CPU, 128 cores per node, 2.25-3.40 GHz", - "ram": "512GB", - "cache": "256MB L3, 8 memory channels", - "localStorage": "3.84TB NVMe SSD", - "network": "Mellanox ConnectX-6-HDR Infiniband 200Gb/s Adapter" - } - ], - "order": 1 - }, - { - "resourceId": 2, - "name": "Bridges-2 Extreme Memory", - "summary": "Extreme Memory (EM) nodes provide 4TB of shared memory for statistics, graph analytics, genome sequence assembly, and other applications requiring a large amount of memory for which distributed-memory implementations are not available.", - "resourceTypeId": 1, - "nodeTypes": [ - { - "count": 4, - "cpu": "4 Intel Xeon Platinum 8260M Cascade lake CPUs, 24 cores per CPU, 96 cores per node, 2.40-3.90 GHz", - "ram": "4TB, DDR4-2933", - "cache": "37.75MB LLC, 6 memory channels", - "localStorage": "7.68TB NVMe SSD", - "network": "Mellanox ConnectX-6-HDR Infiniband 200Gb/s Adapter" - } - ], - "order": 2 - }, - { - "resourceId": 3, - "name": "Bridges-2 GPU", - "summary": "Bridges-2's GPU nodes provide exceptional performance and scalability for deep learning and accelerated computing, with a total of 40, 960 CUDA cores and 5,120 tensor cores. Bridges' GPU-AI resources have been migrated to Bridges-2, adding the DGX-2 and nine more V100 GPU nodes to Bridges-2's GPU resources.", - "resourceTypeId": 1, - "nodeTypes": [ - { - "count": 24, - "gpu": "8 NVIDIA Tesla V100-32GB SXM2", - "gpuMemory": "32 GB per GPU, 256GB total/node", - "gpuPerformance": "1 Pf/s tensor", - "cpu": "2 Intel Xeon Gold 6248 Cascade Lake CPUs, 20 cores per CPU, 40 cores per node, 2.50-3.90 GHz", - "ram": "512GB, DDR4-2933", - "interconnect": "NVLink", - "nvCache": "27.5MB LLC, 6 memory channels", - "localStorage": "7.68TB NVMe SSD", - "network": "2 Mellanox ConnectX-6 HDR Infiniband 200 Gbs/s Adapters" - }, - { - "count": 9, - "gpu": "8 NVIDIA V100-16GB", - "gpuMemory": "16GB per GPU, 128GB total/node", - "cpu": "2 Intel Xeon Gold 6148 CPUs, 20 cores per CPU, 40 cores per node, 2.4-3.7 GHz", - "ram": "192 GB, DDR4-2666", - "interconnect": "PCIe", - "localStorage": "4 NVMe SSDs, 2TB each (total 8TB)" - }, - { - "count": 1, - "gpu": "16 NVIDIA Volta V100-32GB", - "gpuMemory": "32GB per GPU, 512GB total", - "cpu": "2 Intel Xeon Platinum 8168, 24 cores per CPU, 48 cores total, 2.7-3.7 GHz", - "ram": "1.5 TB, DDR4-2666", - "interconnect": "NVLink", - "nvCache": "33MB", - "localStorage": "8 NVMe SSDs, 8.84TB each (total ~30TB)" - } - ], - "order": 3 - }, - { - "resourceId": 4, - "name": "Bridges-2 Ocean", - "summary": "Data management on Bridges-2 is accomplished through a unified, high performance filesystem for active project data, archive, and resilience, named Ocean. Used for active project data, Ocean is a high performance, internally resilient Lustre parallel filesystem with 15PB of usable capacity, configured to deliver up to 129GB/s and 142GB/s of read and write bandwidth, respectively.", - "resourceTypeId": 2, - "order": 4 - } - ], - "resourceTypes": [ - { "resourceTypeId": 1, "name": "Compute Resources" }, - { "resourceTypeId": 2, "name": "Storage Resources" } - ] -} diff --git a/public/api/resource-groups/bridges2.psc.access-ci.org/software.json b/public/api/resource-groups/bridges2.psc.access-ci.org/software.json deleted file mode 100644 index eaa8751..0000000 --- a/public/api/resource-groups/bridges2.psc.access-ci.org/software.json +++ /dev/null @@ -1,678 +0,0 @@ -{ - "software": [ - { - "softwareId": 0, - "name": "Abinit", - "summary": "Calculates electronic density and derived properties of materials (incl. molecules, surfaces & solids) within DFT using pseudopotentials and a planewave or wavelet basis" - }, - { - "softwareId": 1, - "name": "ABySS", - "summary": "Parallel assembler for short read sequence data" - }, - { - "softwareId": 2, - "name": "AI/ML/BD environments", - "summary": "Prebuilt environments of AI/ML/BD packages" - }, - { - "softwareId": 3, - "name": "AMBER", - "summary": "Package of molecular simulation programs" - }, - { - "softwareId": 4, - "name": "Anaconda", - "summary": "Open data science platform, includes popular Python, R and SCALA packages" - }, - { - "softwareId": 5, - "name": "ANSYS", - "summary": "General purpose finite element modeling package" - }, - { - "softwareId": 6, - "name": "AOCL", - "summary": "Numerical library suite optimized for AMD processors" - }, - { - "softwareId": 7, - "name": "Arriba", - "summary": "Detects gene fusions from RNA-Seq data" - }, - { - "softwareId": 8, - "name": "asciinema", - "summary": "Allows recording and sharing terminal sessions" - }, - { - "softwareId": 9, - "name": "AUGUSTUS", - "summary": "Predicts genes in eukaryotic genomic sequences" - }, - { - "softwareId": 10, - "name": "BAMTools", - "summary": "C++ API and toolkit for analyzing and managing BAM files" - }, - { - "softwareId": 11, - "name": "BCFTools", - "summary": "Utilities for variant calling and manipulating VCFs and BCFs" - }, - { - "softwareId": 12, - "name": "Bedops", - "summary": "Tools to address common questions raised in genomics studies" - }, - { - "softwareId": 13, - "name": "Bedtools", - "summary": "Utilities for comparing, summarizing and intersecting genomic features in the UCSC Genome Browser BED format" - }, - { - "softwareId": 14, - "name": "Bismark", - "summary": "Bisulfite read mapper and methylation caller" - }, - { - "softwareId": 15, - "name": "BLAST", - "summary": "Search tool that finds regions of local similarity between nucleotide or protein sequences" - }, - { - "softwareId": 16, - "name": "BLAT", - "summary": "Alignment tool like BLAST, but structured differently" - }, - { - "softwareId": 17, - "name": "Boost", - "summary": "Peer reviewed C++ source libraries" - }, - { - "softwareId": 18, - "name": "Bowtie2", - "summary": "Ultrafast, memory-efficient tool for aligning sequencing reads to long reference sequences. See related tool Bowtie." - }, - { - "softwareId": 19, - "name": "BUSCO", - "summary": "Assesses genome assembly and annotation completeness" - }, - { - "softwareId": 20, - "name": "BWA", - "summary": "Fast light-weight tool that aligns relatively short sequences to a sequence database" - }, - { - "softwareId": 21, - "name": "C, C++", - "summary": "Programming languages" - }, - { "softwareId": 22, "name": "Caffe", "summary": "Deep learning framework" }, - { - "softwareId": 23, - "name": "CheckM", - "summary": "Tools to assess the quality of genomes recovered from isolates, single cells, or metagenomes" - }, - { - "softwareId": 24, - "name": "Circos", - "summary": "Displays data in a circular layout" - }, - { - "softwareId": 25, - "name": "CMake", - "summary": "Tools to control the compilation process, build, test and package software" - }, - { - "softwareId": 26, - "name": "Conda", - "summary": "Environment manager for all languages" - }, - { - "softwareId": 27, - "name": "CP2K", - "summary": "Atomistic simulations of solid state, liquid, molecular, periodic, material, crystal, and biological systems" - }, - { - "softwareId": 28, - "name": "CUDA", - "summary": "Parallel computing platform and API model" - }, - { - "softwareId": 29, - "name": "Cutadapt", - "summary": "Reads a FASTA or FASTQ file, finds and removes adapters, writes the changed sequence to standard output" - }, - { - "softwareId": 30, - "name": "DDT", - "summary": "Debugger for C, C++ and Fortran 90 threaded and parallel codes" - }, - { - "softwareId": 31, - "name": "deal.ii", - "summary": "C++ library for finite element codes" - }, - { - "softwareId": 32, - "name": "Dorado", - "summary": "High-performance, easy-to-use, open source basecaller for Oxford Nanopore reads" - }, - { - "softwareId": 33, - "name": "DReAMM", - "summary": "Designs, renders and animates the output from a MCell simulation" - }, - { - "softwareId": 34, - "name": "FastANI", - "summary": "Fast alignment-free computation of whole-genome Average Nucleotide Identity (ANI)" - }, - { - "softwareId": 35, - "name": "FASTA-Splitter", - "summary": "Divides a single FASTA file into multiple files" - }, - { - "softwareId": 36, - "name": "FASTQ-Splitter", - "summary": "Divides a single FASTQ file into multiple files" - }, - { - "softwareId": 37, - "name": "FastQC", - "summary": "Quality control tool for high throughput sequence data" - }, - { - "softwareId": 38, - "name": "FASTX Toolkit", - "summary": "Command line tools for Short-Reads FASTA/FASTQ files preprocessing" - }, - { - "softwareId": 39, - "name": "FFTW3", - "summary": "C subroutine library for computing the DFT in one or more dimensions, of arbitrary input size, of both real and complex data" - }, - { - "softwareId": 40, - "name": "Filtlong", - "summary": "Tool to filter long reads by quality" - }, - { - "softwareId": 41, - "name": "FLASh", - "summary": "Fast and accurate tool to merge paired-end reads from NGS experiments" - }, - { - "softwareId": 42, - "name": "Fluent", - "summary": "Computational fluid dynamics, part of ANSYS" - }, - { - "softwareId": 43, - "name": "Fortran", - "summary": "Programming language" - }, - { - "softwareId": 44, - "name": "Funannotate", - "summary": "Genome prediction, annotation and comparison" - }, - { - "softwareId": 45, - "name": "GAMESS", - "summary": "Ab initio molecular quantum chemistry" - }, - { - "softwareId": 46, - "name": "GATK", - "summary": "Genome Analysis Toolkit, for high-throughput sequencing data" - }, - { - "softwareId": 47, - "name": "Gaussian", - "summary": "Electronic structure program" - }, - { - "softwareId": 48, - "name": "GCC", - "summary": "(GNU Compiler Collection) Compiler system supporting various programming languages" - }, - { - "softwareId": 49, - "name": "GeneMark-ES", - "summary": "Gene prediction in eukaryotes" - }, - { - "softwareId": 50, - "name": "GeNT", - "summary": "Computes the cross entropy for groups of sequences that have been assigned to groups on the basis of biochemical, physiological, or another biological property" - }, - { - "softwareId": 51, - "name": "Git", - "summary": "Version control system for tracking changes in files and coordinating work on files among multiple people" - }, - { - "softwareId": 52, - "name": "GNU Parallel", - "summary": "Shell tool for executing jobs in parallel using one or more computers" - }, - { - "softwareId": 53, - "name": "GROMACS", - "summary": "Molecular dynamics software primarily designed for biomolecular systems" - }, - { - "softwareId": 54, - "name": "Guppy", - "summary": "Data processing toolkit containing the Oxford Nanopore Technologies’ basecalling algorithms" - }, - { - "softwareId": 55, - "name": "Gurobi", - "summary": "Mathematical programming solver" - }, - { - "softwareId": 56, - "name": "hashdeep", - "summary": "Computes hash files, or message digests, for any number of files" - }, - { - "softwareId": 57, - "name": "HDF5/PHDF5", - "summary": "Data model, library, and file format for storing and managing data and its parallel version" - }, - { - "softwareId": 58, - "name": "HISAT2", - "summary": "Fast, sensitive alignment, mapping NGS reads (DNA & RNA) to a population of human genomes or against a single reference genome" - }, - { - "softwareId": 59, - "name": "HMMER", - "summary": "Biosequence analysis using profile hidden Markov models" - }, - { - "softwareId": 60, - "name": "Homer", - "summary": "Suite of tools for motif discovery and next-gen sequence analysis" - }, - { - "softwareId": 61, - "name": "HPN-SSH", - "summary": "Series of patches for OpenSSH to provide improved performance and functionality" - }, - { - "softwareId": 62, - "name": "HTSlib", - "summary": "C library for reading and writing high-throughput sequence data" - }, - { - "softwareId": 63, - "name": "iCommands", - "summary": "Library of commands to access iRODS servers" - }, - { - "softwareId": 64, - "name": "Infernal", - "summary": "Searches DNA sequence databases for RNA structure and sequence similarities" - }, - { - "softwareId": 65, - "name": "ICC (Intel)", - "summary": "Intel compilers, libraries and MPI implementation" - }, - { "softwareId": 66, "name": "Java", "summary": "Programming language" }, - { - "softwareId": 67, - "name": "Julia", - "summary": "High-level, high performance dynamic programming language for numerical computing" - }, - { - "softwareId": 68, - "name": "Jupyter", - "summary": "Create and share code, visualizations, equations, more" - }, - { - "softwareId": 69, - "name": "Keras", - "summary": "Minimalist, highly modular neural networks library written in Python and capable of running on top of either TensorFlow or Theano" - }, - { - "softwareId": 70, - "name": "Kracken2", - "summary": "Taxonomic sequence classifier that assigns taxonomic labels to DNA sequences" - }, - { - "softwareId": 71, - "name": "LAMMPS", - "summary": "Classical molecular dynamics code" - }, - { - "softwareId": 72, - "name": "lazygit", - "summary": "Simple terminal UI for git commands" - }, - { - "softwareId": 73, - "name": "lowcharts", - "summary": "Tool to draw low-resolution charts in the terminal" - }, - { - "softwareId": 74, - "name": "LSMS", - "summary": "Locally Self-consistent Multiple Scattering method, an order-N approach to the calculating the electronic structure of large systems within the local density approximation" - }, - { - "softwareId": 75, - "name": "MATLAB", - "summary": "High-level language and interactive environment, performs computationally intensive tasks faster than traditional languages" - }, - { - "softwareId": 76, - "name": "MCell", - "summary": "Monte Carlo Cell, simulates the movements and reactions of molecules within and between cells" - }, - { - "softwareId": 77, - "name": "MEME Suite", - "summary": "Collection of tools for the discovery and analysis of sequence motifs" - }, - { - "softwareId": 78, - "name": "Methylpy", - "summary": "Bisulfate sequencing data processing and differential methylation analysis" - }, - { - "softwareId": 79, - "name": "Minialign", - "summary": "A little bit fast and moderately accurate nucleotide sequence alignment tool for PacBio & Nanopore long reads" - }, - { - "softwareId": 80, - "name": "MKL", - "summary": "Math Kernel Library, highly optimized and threaded routines for linear algebra, FFTs, vector math and random number generators" - }, - { - "softwareId": 81, - "name": "MPI", - "summary": "Message Passing Interface. Both Intel MPI and Open MPI are available." - }, - { - "softwareId": 82, - "name": "MVAPICH", - "summary": "Library exploiting novel features and mechanisms of high performance networking technologies. Delivers improved performance and scalability to MPI applications." - }, - { - "softwareId": 83, - "name": "NAMD", - "summary": "Parallel, object-oriented molecular dynamics code designed for high performance simulation of large biomolecular systems" - }, - { - "softwareId": 84, - "name": "Nanoplot", - "summary": "Plotting tool for long read sequencing data and alignments" - }, - { "softwareId": 85, "name": "Ncdu", "summary": "Disk usage analyzer" }, - { - "softwareId": 86, - "name": "ncview", - "summary": "Viewer for netCDF format files" - }, - { - "softwareId": 87, - "name": "Nextflow", - "summary": "DSL for parallel and scalable computational pipelines" - }, - { - "softwareId": 88, - "name": "NVHPC", - "summary": "NVHPC (formerly called PGI) compilers and Tools" - }, - { - "softwareId": 89, - "name": "NWCHEM", - "summary": "Computes the properties of molecular and periodic systems using standard quantum mechanical descriptions of the electronic wavefunction or density" - }, - { - "softwareId": 90, - "name": "Octave", - "summary": "High-level programming language, intended for computation" - }, - { - "softwareId": 91, - "name": "OnDemand", - "summary": "Web browser interface to manage files, submit and track jobs on Bridges-2" - }, - { - "softwareId": 92, - "name": "OpenBLAS", - "summary": "Optimized BLAS library" - }, - { - "softwareId": 93, - "name": "OpenCV", - "summary": "Open source library of several hundred computer vision algorithms" - }, - { - "softwareId": 94, - "name": "OpenFOAM", - "summary": "Finite volume CFD package" - }, - { - "softwareId": 95, - "name": "OpenMPI", - "summary": "high performance message passing library" - }, - { - "softwareId": 96, - "name": "ORCA", - "summary": "Ab-initio quantum chemistry" - }, - { "softwareId": 97, "name": "Perl", "summary": "Programming language" }, - { - "softwareId": 98, - "name": "PGI", - "summary": "NVHPC (formerly called PGI) compilers and Tools" - }, - { - "softwareId": 99, - "name": "PHYLIP", - "summary": "Package for inferring phylogenies" - }, - { - "softwareId": 100, - "name": "Picard", - "summary": "Java-based command-line utilities that manipulate SAM files, and a Java API (SAM-JDK) for creating new programs that read and write SAM files" - }, - { - "softwareId": 101, - "name": "PLUMED", - "summary": "Library of enhanced sampling methods, free energy methods, tools to analyze data for MD simulations" - }, - { - "softwareId": 102, - "name": "Porechop", - "summary": "Tool which finds and removes adapters from Oxford Nanopore reads" - }, - { - "softwareId": 103, - "name": "pnetCDF", - "summary": "high performance, parallel library for files compatible with netCDF" - }, - { - "softwareId": 104, - "name": "Prodigal", - "summary": "Open source lightweight microbial genefinding program" - }, - { - "softwareId": 105, - "name": "Prokka", - "summary": "Software tool for rapid annotation of prokaryotic genomes" - }, - { - "softwareId": 106, - "name": "Python (including numpy, scipy)", - "summary": "Powerful, object-oriented programming language" - }, - { - "softwareId": 107, - "name": "PyTorch", - "summary": "Machine Learning framework" - }, - { - "softwareId": 108, - "name": "Quantum Espresso", - "summary": "Integrated suite of codes for electronic-structure calculations and materials modeling at the nanoscale" - }, - { - "softwareId": 109, - "name": "R", - "summary": "Language and environment and an IDE for statistical computing and graphs" - }, - { - "softwareId": 110, - "name": "RAPIDS", - "summary": "Framework bundling libraries to execute end-to-end data science pipelines on top of GPUs" - }, - { - "softwareId": 111, - "name": "RAxML", - "summary": "Maximum likelihood phylogeny estimation for interpreting relationships between sets of data" - }, - { - "softwareId": 112, - "name": "Rclone", - "summary": "Tool for managing files in cloud storage" - }, - { - "softwareId": 113, - "name": "RNAview", - "summary": "Generates 2-dimensional displays of RNA/DNA secondary structures with tertiary interactions" - }, - { - "softwareId": 114, - "name": "SAMtools", - "summary": "Utilities for manipulating alignments in SAM format" - }, - { - "softwareId": 115, - "name": "Scikit-learn", - "summary": "Simple and efficient tools for data mining and data analysis, built on NumPy, SciPy and matplotlib" - }, - { - "softwareId": 116, - "name": "Siesta", - "summary": "Performing efficient electronic structure calculations and ab initio molecular dynamics simulations of molecules and solids" - }, - { - "softwareId": 117, - "name": "Singularity", - "summary": "Open-source software container platform" - }, - { - "softwareId": 118, - "name": "SPAdes", - "summary": "St. Petersburg genome assembler – an assembly toolkit with various assembly pipelines" - }, - { - "softwareId": 119, - "name": "Spark", - "summary": "Open source software web application framework and domain-specific language written in Java" - }, - { - "softwareId": 120, - "name": "SRA toolkit", - "summary": "Collection of tools and libraries for using data in the INSDC Sequence Read Archives" - }, - { - "softwareId": 121, - "name": "STAR-Fusion", - "summary": "Uses the STAR aligner to identify candidate fusion transcripts supported by Illumina reads, maps junction and spanning reads to a reference annotation set" - }, - { - "softwareId": 122, - "name": "STAR Aligner", - "summary": "Spliced Transcripts Alignment to Reference, an alignment tool for RNA sequences" - }, - { - "softwareId": 123, - "name": "TensorFlow", - "summary": "Machine learning library for numerical computation using data flow graphs" - }, - { - "softwareId": 124, - "name": "Theano", - "summary": "Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently" - }, - { - "softwareId": 125, - "name": "TIGER", - "summary": "Precisely maps IGEs in bacterial and archaeal genomes" - }, - { - "softwareId": 126, - "name": "tmux", - "summary": "Terminal multiplexer; create and control multiple terminals" - }, - { - "softwareId": 127, - "name": "Trinity", - "summary": "Package which enables the efficient and robust de novo reconstruction of transcriptomes from RNA-Seq data" - }, - { - "softwareId": 128, - "name": "tRNAscan-se", - "summary": "Program for improved detection of transfer RNA genes in genomic sequence" - }, - { - "softwareId": 129, - "name": "VASP", - "summary": "Atomic scale materials modeling, e.g. electronic structure calculations and quantum-mechanical molecular dynamics, from first principles" - }, - { - "softwareId": 130, - "name": "VCF2MAF", - "summary": "Tool to convert VCFs to MAFs" - }, - { - "softwareId": 131, - "name": "VCFtools", - "summary": "Tool providing easily accessible methods for working with complex genetic variation data in the form of VCF files" - }, - { - "softwareId": 132, - "name": "VisiData", - "summary": "Interactive tool to manage tabula data" - }, - { - "softwareId": 133, - "name": "Visit", - "summary": "Interactive and scalable visualization, animation and analysis tool" - }, - { - "softwareId": 134, - "name": "VTune", - "summary": "Performance analysis tool for serial, multithreaded or MPI applications" - }, - { - "softwareId": 135, - "name": "WIEN2k", - "summary": "Electronic structure calculations of solids using DFT" - }, - { - "softwareId": 136, - "name": "Xfig and transfig", - "summary": "Interactive drawing tools" - }, - { - "softwareId": 137, - "name": "Zoltan", - "summary": "Data management services for unstructured, adaptive and dynamic applications" - } - ] -} diff --git a/public/api/resource-groups/jetstream2.indiana.access-ci.org.json b/public/api/resource-groups/jetstream2.indiana.access-ci.org.json deleted file mode 100644 index f6c9d44..0000000 --- a/public/api/resource-groups/jetstream2.indiana.access-ci.org.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "Jetstream2", - "resourceProvider": { - "resourceProviderId": 2, - "name": "Indiana University", - "iconUri": "https://www.iu.edu/favicon.ico" - }, - "imageUri": "https://jetstream-cloud.org/images/home/jetstream-2.png", - "description": "Jetstream2 is a user-friendly cloud computing environment for researchers and educators running on OpenStack and featuring Exosphere as the primary user interface. It is built on the successes of Jetstream1 and continues the main features of that system while extending to a broader range of hardware and services, including GPUs, large memory nodes, virtual clustering, programmable cyberinfrastructure with OpenStack Heat and Terraform, and many other features. It is designed to provide both infrastructure for gateways and other “always on” services as well as giving researchers access to interactive computing and data analysis resources on demand.", - "userGuideUri": "https://docs.jetstream-cloud.org/" -} diff --git a/public/api/resource-slides.json b/public/api/resource-slides.json deleted file mode 100644 index 7e13f07..0000000 --- a/public/api/resource-slides.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "slides": [ - { - "title": "Stampede3 Now Available!", - "description": "Stampede3, the latest resource from TACC, is now accepting allocation requests. This powerful Dell Technologies and Intel based supercomputer is the only system in the ACCESS environment to integrate the new Intel Max Series GPUs.", - "linkText": "Learn more about Stampede3", - "linkURI": "https://tacc.utexas.edu/systems/stampede3/", - "imageURI": "/access-ci-ui/images/stampede3.jpg", - "imageAltText": "Cattle cross a dirt road behind the logo for Stampede3" - }, - { - "title": "PSC Machine Room Tours", - "description": "Pittsburgh Supercomputing Center is offering tours of its machine room to interested uses of its Bridges-2 machine.", - "linkText": "Sign up for a tour", - "linkURI": "https://www.psc.edu/psc-machine-room-tours/", - "imageURI": "/access-ci-ui/images/psc-machine-room.jpg", - "imageAltText": "A PSC staff member explains the Bridges-2 supercomputer to a group of three visitors" - } - ] -} diff --git a/src/grid.css b/src/grid.css index 8f1eaef..34e2a40 100644 --- a/src/grid.css +++ b/src/grid.css @@ -1,6 +1,5 @@ .grid { border-top: 1px solid var(--contrast); - max-height: 400px; max-width: 100%; margin-bottom: 1rem; overflow: scroll; diff --git a/src/grid.jsx b/src/grid.jsx index 9c4bd7c..24212a4 100644 --- a/src/grid.jsx +++ b/src/grid.jsx @@ -11,6 +11,7 @@ export default function Grid({ rows, classes, frozenColumns = 0, + maxHeight = 400, minWidth, rowClasses = [], scrollResetOnUpdate = false, @@ -66,7 +67,17 @@ export default function Grid({ if (minWidth) style.minWidth = minWidth; return ( -
+
{th} diff --git a/src/resource-detail.jsx b/src/resource-detail.jsx index a5b22e5..03e62d3 100644 --- a/src/resource-detail.jsx +++ b/src/resource-detail.jsx @@ -1,10 +1,24 @@ -import ResourceNodeTypes from "./resource-node-types"; +import Accordion from "./accordion"; -export default function ResourceDetail({ summary, nodeTypes }) { +const toP = (text) => + text ? text.split(/[\n\r]+/g).map((p) =>

{p}

) : null; + +export default function ResourceDetail({ + resource_descriptive_name, + resource_description, + compute, + storage, +}) { + const recommendedUse = (compute || storage || {}).recommended_use; return ( - <> - {summary ?

{summary}

: null} - {nodeTypes ? : null} - + + {toP(resource_description)} + {recommendedUse ? ( + <> +

Recommended Use

+ {toP(recommendedUse)} + + ) : null} +
); } diff --git a/src/resource-group-detail.jsx b/src/resource-group-detail.jsx index 9d01433..b8e4b2e 100644 --- a/src/resource-group-detail.jsx +++ b/src/resource-group-detail.jsx @@ -3,9 +3,9 @@ import ResourceGroupDescription from "./resource-group-description"; import ResourceGroupDiscussion from "./resource-group-discussion"; import ResourceGroupDocumentation from "./resource-group-documentation"; import ResourceGroupEvents from "./resource-group-events"; +import ResourceGroupHardware from "./resource-group-hardware"; import ResourceGroupProjects from "./resource-group-projects"; import ResourceGroupQueueMetrics from "./resource-group-queue-metrics"; -import ResourceGroupResources from "./resource-group-resources"; import ResourceGroupSoftware from "./resource-group-software"; import SectionNavigation from "./section-navigation"; @@ -14,12 +14,12 @@ export default function ResourceGroupDetail({ baseUri, infoGroupId }) {
- + - + {/* */}
diff --git a/src/resource-group-hardware.jsx b/src/resource-group-hardware.jsx new file mode 100644 index 0000000..7ca5078 --- /dev/null +++ b/src/resource-group-hardware.jsx @@ -0,0 +1,120 @@ +import { useJSON, useResourceGroup } from "./utils"; + +import Grid from "./grid"; +import ResourceDetail from "./resource-detail"; +import Section from "./section"; + +export default function ResourceGroupHardware({ baseUri, infoGroupId }) { + const resourceGroup = useResourceGroup(infoGroupId); + const resources = useJSON( + resourceGroup + ? resourceGroup.infoResourceIds.map( + (infoResourceId) => + `https://operations-api.access-ci.org/wh2/cider/v1/info_resourceid/${infoResourceId}/?format=json` + ) + : null, + { defaultValue: [] } + ); + const computeComp = useJSON( + "https://operations-api.access-ci.org/wh2/cider/v1/coco/?format=json" + ); + const compLoaded = computeComp && !computeComp.error; + const computeColumns = + compLoaded && resourceGroup + ? Object.values(computeComp.results.resources) + .filter((res) => + resourceGroup.infoResourceIds.includes(res.info_resourceid) + ) + .map((res) => ({ + key: res.compute_resource_id, + name: res.short_name, + format: (value, row) => + row.format && value + ? row.format(value, row) + : value || <>—, + })) + : []; + + const computeRows = compLoaded + ? [ + { + name: "Nodes", + attr: "node_count", + format: (value) => value.toLocaleString("en-us"), + }, + { name: "CPU Type", attr: "cpu_type" }, + { + name: "CPU Speed", + attr: "cpu_speed_ghz", + format: (value) => `${value} Ghz`, + }, + { name: "CPU Cores per Node", attr: "cpu_count_per_node" }, + { + name: "RAM per CPU Core", + attr: "memory_per_cpu_gb", + format: (value) => `${value.toLocaleString("en-us")} GB`, + }, + { + name: "GPU", + attr: "gpu_description", + }, + { + name: "Local Storage per Node", + attr: "local_storage_per_node_gb", + format: (value) => `${value.toLocaleString("en-us")} GB`, + }, + { + name: "Network Interconnect", + attr: "interconnect", + }, + ] + .map((row) => ({ + ...row, + ...computeComp.results.attributes[row.attr], + })) + .filter((row) => computeColumns.some((col) => row[col.key])) + : []; + + const nameColumn = { + key: "name", + name: "Attribute", + format: (value) => {value}, + }; + + const hasComputeGrid = computeColumns.length > 0 && computeRows.length > 0; + const resourceTypes = { compute: [], storage: [], other: {} }; + for (let { results: res } of resources) + (resourceTypes[res.cider_type.toLowerCase()] || resourceTypes.other).push( + + ); + + return ( + <> + {hasComputeGrid || resourceTypes.compute.length > 0 ? ( +
+ {resourceTypes.compute} + {hasComputeGrid && ( + <> +

Hardware Specifications

+ + + )} +
+ ) : null} + {resourceTypes.storage.length > 0 ? ( +
+ {resourceTypes.storage} +
+ ) : null} + {resourceTypes.other.length > 0 ? ( +
+ {resourceTypes.storage} +
+ ) : null} + + ); +} diff --git a/src/resource-group-resources.jsx b/src/resource-group-resources.jsx deleted file mode 100644 index b629879..0000000 --- a/src/resource-group-resources.jsx +++ /dev/null @@ -1,46 +0,0 @@ -import { useMemo } from "preact/hooks"; -import { defaultIcons } from "./icons"; -import { useJSON } from "./utils"; - -import Accordion from "./accordion"; -import ResourceDetail from "./resource-detail"; -import Section from "./section"; - -const linkResourceData = ({ resources, resourceTypes }) => { - const resourceTypesMap = {}; - for (let resourceType of resourceTypes) { - resourceType.resources = []; - resourceTypesMap[resourceType.resourceTypeId] = resourceType; - } - - for (let resource of resources) { - let resourceType = resourceTypesMap[resource.resourceTypeId]; - resourceType.resources.push(resource); - resource.resourceType = resourceType; - } - - return { resources, resourceTypes }; -}; - -export default function ResourceGroupResources({ baseUri, infoGroupId }) { - const allTypes = useJSON( - `${baseUri}/api/resource-groups/${infoGroupId}/resources.json` - ); - const types = useMemo( - () => (allTypes && !allTypes.error ? linkResourceData(allTypes) : null), - [allTypes] - ); - if (!types) return; - return types.resourceTypes.map(({ name, resources }) => { - if (resources.length) - return ( -
- {resources.map((resource) => ( - - - - ))} -
- ); - }); -} diff --git a/src/resource-home.jsx b/src/resource-home.jsx index 6a6bf4c..a2fbbb1 100644 --- a/src/resource-home.jsx +++ b/src/resource-home.jsx @@ -1,14 +1,12 @@ import { useMemo, useState } from "preact/hooks"; -import { filterResourceGroups, useJSON, useResourceGroups } from "./utils"; +import { filterResourceGroups, useResourceGroups } from "./utils"; -import { Carousel, CarouselSlide } from "./carousel"; import { ResourceCategory } from "./resource-category"; import { ResourceFilters } from "./resource-filters"; import { ResourcePathways } from "./resource-pathways"; export default function ResourceHome({ baseUri, title, showTitle, slidesURI }) { const [activeTagIds, setActiveTagIds] = useState([]); - const slides = useJSON(`${baseUri}${slidesURI}`); const groups = useResourceGroups(); const active = useMemo( () => (groups ? filterResourceGroups(groups, activeTagIds) : null), @@ -28,11 +26,6 @@ export default function ResourceHome({ baseUri, title, showTitle, slidesURI }) { <> {title &&

{title}

} - {slides && slides.slides.length ? ( - - {slides.slides.map((slide) => CarouselSlide(slide))} - - ) : null}
{active ? ( fields.has(key)) - .map(({ key, name }) => ( -
- - {nodeTypes.map((nodeType) => ( - - ))} - - )); - - return ( -
{name}{nodeType[key]}
- {rows} -
- ); -}