From 82c8aafa0421ffa8c301a4d4b0ef0f00b9634436 Mon Sep 17 00:00:00 2001
From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr>
Date: Tue, 2 Apr 2024 11:07:21 +0200
Subject: [PATCH 1/3] fix: :adhesive_bandage: standardise details page chip
 lists style

---
 src/views/GuideView.vue        | 136 ++++++++++++++++++++-------------
 src/views/ModificationView.vue |  14 ++--
 src/views/TargetView.vue       |  39 ++++++----
 3 files changed, 119 insertions(+), 70 deletions(-)

diff --git a/src/views/GuideView.vue b/src/views/GuideView.vue
index 318094b..c905e92 100644
--- a/src/views/GuideView.vue
+++ b/src/views/GuideView.vue
@@ -443,7 +443,7 @@ const ontologyLinks = computed(() => ({
             }"
           >
             <Chip
-              class="ml-2 border-2 !border-slate-600 !bg-slate-100 !font-semibold !text-slate-600"
+              class="border-2 !border-slate-600 !bg-slate-100 !font-semibold !text-slate-600"
             >
               {{ guide.cluster.id }}
             </Chip>
@@ -459,72 +459,101 @@ const ontologyLinks = computed(() => ({
 
         <Divider class="col-span-2" />
 
-        <div class="col-span-2 text-left italic text-slate-400">
-          Guided modifications ({{ linkedModificationsCount }}):
-          <RouterLink
-            v-for="modification in guide?.modifications"
-            :key="modification.id"
-            :to="{
-              name: 'modificationDetails',
-              params: { id: modification.id }
-            }"
-          >
-            <Chip
-              class="ml-2 border-2 !border-sky-600 !bg-sky-100 !font-semibold !text-sky-600"
+        <div
+          class="col-span-2 flex items-center gap-4 text-left italic text-slate-400"
+        >
+          <span class="whitespace-nowrap">
+            Guided modifications ({{ linkedModificationsCount }}):
+          </span>
+          <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
+            <RouterLink
+              v-for="modification in guide?.modifications"
+              :key="modification.id"
+              :to="{
+                name: 'modificationDetails',
+                params: { id: modification.id }
+              }"
             >
-              {{ modification.name }}
-            </Chip>
-          </RouterLink>
+              <Chip
+                class="border-2 !border-sky-600 !bg-sky-100 !font-semibold !text-sky-600"
+              >
+                {{ modification.name }}
+              </Chip>
+            </RouterLink>
+            <!-- The following div is here to ensure that Chips stay left-aligned
+              in the flex div -->
+            <div class="flex-1" />
+          </div>
         </div>
 
         <Divider class="col-span-2" />
 
-        <div class="col-span-2 text-left italic text-slate-400">
-          Targets ({{ linkedTargetsCount }}):
-          <RouterLink
-            v-for="target in linkedTargets"
-            :key="target.id"
-            :to="{
-              name: 'targetDetails',
-              params: { id: target.id }
-            }"
-          >
-            <Chip
-              class="ml-2 border-2 !border-amber-600 !bg-amber-100 !font-semibold !text-amber-600"
+        <div
+          class="col-span-2 flex items-center gap-4 text-left italic text-slate-400"
+        >
+          <span class="whitespace-nowrap">
+            Targets ({{ linkedTargetsCount }}):
+          </span>
+          <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
+            <RouterLink
+              v-for="target in linkedTargets"
+              :key="target.id"
+              :to="{
+                name: 'targetDetails',
+                params: { id: target.id }
+              }"
             >
-              {{ target.name }} -
-              {{ target.type }}
-            </Chip>
-          </RouterLink>
+              <Chip
+                class="border-2 !border-amber-600 !bg-amber-100 !font-semibold !text-amber-600"
+              >
+                {{ target.name }} -
+                {{ target.type }}
+              </Chip>
+            </RouterLink>
+            <!-- The following div is here to ensure that Chips stay left-aligned
+              in the flex div -->
+            <div class="flex-1" />
+          </div>
         </div>
 
         <Divider class="col-span-2" />
 
-        <div class="col-span-2 text-left italic text-slate-400">
-          Isoforms ({{ isoformsCount }}):
-          <em v-if="isoformsCount === 0" class="ml-2 font-bold">None</em>
-          <RouterLink
-            v-for="isoformGuide in guideIsoforms"
-            :key="isoformGuide.id"
-            :to="{
-              name: 'guideDetails',
-              params: { id: isoformGuide.id }
-            }"
-          >
-            <Chip
-              class="ml-2 border-2 !border-lime-600 !bg-lime-100 !font-semibold !text-lime-600"
+        <div
+          class="col-span-2 flex items-center gap-4 text-left italic text-slate-400"
+        >
+          <span class="whitespace-nowrap">
+            Isoforms ({{ isoformsCount }}):
+          </span>
+          <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
+            <em v-if="isoformsCount === 0" class="font-bold">None</em>
+            <RouterLink
+              v-for="isoformGuide in guideIsoforms"
+              :key="isoformGuide.id"
+              :to="{
+                name: 'guideDetails',
+                params: { id: isoformGuide.id }
+              }"
             >
-              {{ isoformGuide.name }}
-              <!-- - {{ isoformGuide.type }} -->
-            </Chip>
-          </RouterLink>
+              <Chip
+                class="border-2 !border-lime-600 !bg-lime-100 !font-semibold !text-lime-600"
+              >
+                {{ isoformGuide.name }}
+                <!-- - {{ isoformGuide.type }} -->
+              </Chip>
+            </RouterLink>
+            <!-- The following div is here to ensure that Chips stay left-aligned
+              in the flex div -->
+            <div class="flex-1" />
+          </div>
         </div>
 
         <Divider class="col-span-2" />
 
-        <div class="col-span-2 text-left italic text-slate-400">
-          Ontologies:
-          <div class="ml-2 inline-flex gap-2">
+        <div
+          class="col-span-2 flex items-center gap-4 text-left italic text-slate-400"
+        >
+          <span class="whitespace-nowrap"> Ontologies: </span>
+          <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
             <a :href="ontologyLinks.SO">
               <BaseDescribedChip
                 :label="ontologyIdsCleaned.SO"
@@ -539,6 +568,9 @@ const ontologyLinks = computed(() => ({
                 color="red"
               />
             </a>
+            <!-- The following div is here to ensure that Chips stay left-aligned
+              in the flex div -->
+            <div class="flex-1" />
           </div>
         </div>
       </div>
diff --git a/src/views/ModificationView.vue b/src/views/ModificationView.vue
index 8aded83..74ea31c 100644
--- a/src/views/ModificationView.vue
+++ b/src/views/ModificationView.vue
@@ -292,10 +292,12 @@ const linkedGuidesCount = computed(() =>
 
         <Divider class="col-span-3" />
 
-        <div class="col-span-3 flex gap-2 text-left italic text-slate-400">
-          <span class="whitespace-nowrap"
-            >Guides ({{ linkedGuidesCount }}):</span
-          >
+        <div
+          class="col-span-3 flex items-center gap-4 text-left italic text-slate-400"
+        >
+          <span class="whitespace-nowrap">
+            Guides ({{ linkedGuidesCount }}):
+          </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
             <RouterLink
               v-for="linkedGuide in linkedGuides"
@@ -309,7 +311,9 @@ const linkedGuidesCount = computed(() =>
                 {{ linkedGuide.type }}
               </Chip>
             </RouterLink>
-            <div class="flex-1"></div>
+            <!-- The following div is here to ensure that Chips stay left-aligned
+              in the flex div -->
+            <div class="flex-1" />
           </div>
         </div>
 
diff --git a/src/views/TargetView.vue b/src/views/TargetView.vue
index fc6b1b2..4c25e7d 100644
--- a/src/views/TargetView.vue
+++ b/src/views/TargetView.vue
@@ -458,10 +458,12 @@ const ontologyLinks = computed(() => ({
 
         <Divider class="col-span-3" />
 
-        <div class="col-span-3 flex gap-2 text-left italic text-slate-400">
-          <span class="whitespace-nowrap"
-            >Modifications ({{ linkedModificationsCount }}):</span
-          >
+        <div
+          class="col-span-3 flex items-center gap-4 text-left italic text-slate-400"
+        >
+          <span class="whitespace-nowrap">
+            Modifications ({{ linkedModificationsCount }}):
+          </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
             <RouterLink
               v-for="modification in target?.modifications"
@@ -477,16 +479,20 @@ const ontologyLinks = computed(() => ({
                 {{ modification.name }}
               </Chip>
             </RouterLink>
-            <div class="flex-1"></div>
+            <!-- The following div is here to ensure that Chips stay left-aligned
+              in the flex div -->
+            <div class="flex-1" />
           </div>
         </div>
 
         <Divider class="col-span-3" />
 
-        <div class="col-span-3 flex gap-2 text-left italic text-slate-400">
-          <span class="whitespace-nowrap"
-            >Guides ({{ linkedGuidesCount }}):</span
-          >
+        <div
+          class="col-span-3 flex items-center gap-4 text-left italic text-slate-400"
+        >
+          <span class="whitespace-nowrap">
+            Guides ({{ linkedGuidesCount }}):
+          </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
             <RouterLink
               v-for="linkedGuide in linkedGuides"
@@ -500,15 +506,19 @@ const ontologyLinks = computed(() => ({
                 {{ linkedGuide.type }}
               </Chip>
             </RouterLink>
-            <div class="flex-1"></div>
+            <!-- The following div is here to ensure that Chips stay left-aligned
+              in the flex div -->
+            <div class="flex-1" />
           </div>
         </div>
 
         <Divider class="col-span-3" />
 
-        <div class="col-span-3 text-left italic text-slate-400">
-          Ontologies:
-          <div class="ml-2 inline-flex gap-2">
+        <div
+          class="col-span-3 flex items-center gap-4 text-left italic text-slate-400"
+        >
+          <span class="whitespace-nowrap"> Ontologies: </span>
+          <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
             <a :href="ontologyLinks.SO">
               <BaseDescribedChip
                 :label="ontologyIdsCleaned.SO"
@@ -523,6 +533,9 @@ const ontologyLinks = computed(() => ({
                 color="red"
               />
             </a>
+            <!-- The following div is here to ensure that Chips stay left-aligned
+              in the flex div -->
+            <div class="flex-1" />
           </div>
         </div>
       </div>
-- 
GitLab


From e0694941a626931c3d15571b768e690b8c8580a7 Mon Sep 17 00:00:00 2001
From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr>
Date: Tue, 2 Apr 2024 13:53:29 +0200
Subject: [PATCH 2/3] feat: :sparkles: show "None" in details page chip list
 when no item

---
 src/gql/codegen/gql.ts         | 4 ++--
 src/gql/codegen/graphql.ts     | 4 ++--
 src/gql/queries.ts             | 3 +++
 src/views/GuideView.vue        | 8 +++++++-
 src/views/ModificationView.vue | 1 +
 src/views/TargetView.vue       | 4 ++++
 6 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/src/gql/codegen/gql.ts b/src/gql/codegen/gql.ts
index 6956a3e..52351f8 100644
--- a/src/gql/codegen/gql.ts
+++ b/src/gql/codegen/gql.ts
@@ -17,7 +17,7 @@ const documents = {
     "\n  query tableEntriesQuery {\n    tableEntries {\n      id\n      modification {\n        id\n        name\n        position\n        result\n        type\n        target {\n          id\n          name\n          type\n          length\n          genome {\n            species {\n              id\n              name\n            }\n          }\n          parentConnection(where: { node: { featureType: Chromosome } }) {\n            edges {\n              start\n              end\n              strand\n              node {\n                id\n                name\n              }\n            }\n          }\n        }\n      }\n      guide {\n        id\n        name\n        type\n        subtype\n        length\n        seq\n        parentConnection(where: { node: { featureType: Chromosome } }) {\n          edges {\n            start\n            end\n            strand\n            node {\n              id\n              name\n              length\n            }\n          }\n        }\n      }\n    }\n  }\n": types.TableEntriesQueryDocument,
     "\n  query speciesByIdQuery(\n    $where: SpeciesWhere\n    $modificationsWhere: ModificationWhere\n    $targetsWhere: TargetWhere\n    $guidesWhere: GuideWhere\n  ) {\n    manySpecies(where: $where) {\n      id\n      name\n      shortname\n      genomes {\n        sequences(where: { featureType: Chromosome }) {\n          id\n          name\n          length\n          featureType\n          featuresConnection(where: { node: { featureType: Guide } }) {\n            totalCount\n          }\n        }\n      }\n    }\n    modifications(where: $modificationsWhere) {\n      id\n      name\n      result\n      type\n      guidesAggregate {\n        count\n      }\n    }\n    targets(where: $targetsWhere) {\n      id\n      name\n      type\n      modificationsAggregate {\n        count\n      }\n    }\n    guides(where: $guidesWhere) {\n      id\n      name\n      type\n      subtype\n      parentConnection(where: { node: { featureType: Chromosome } }) {\n        edges {\n          start\n          end\n          node {\n            id\n          }\n        }\n      }\n      modificationsAggregate {\n        count\n      }\n    }\n  }\n": types.SpeciesByIdQueryDocument,
     "\n  query modificationByIdQuery(\n    $where: ModificationWhere\n    $guidesWhere: GuideWhere\n    $interactionsWhere: InteractionWhere\n  ) {\n    modifications(where: $where) {\n      id\n      name\n      type\n      result\n      position\n      target {\n        id\n        name\n        type\n        genome {\n          species {\n            id\n            name\n          }\n        }\n      }\n      # chebi_id\n      # so_id\n    }\n    guides(where: $guidesWhere) {\n      id\n      name\n      type\n    }\n    interactions(where: $interactionsWhere) {\n      duplexes {\n        primaryStrandsConnection: strandsConnection(\n          where: { edge: { primary: true } }\n        ) {\n          edges {\n            start\n            end\n            primary\n            node {\n              seq\n              parentConnection {\n                edges {\n                  start\n                  end\n                }\n              }\n            }\n          }\n        }\n        secondaryStrandsConnection: strandsConnection(\n          where: { edge: { primary: false } }\n        ) {\n          edges {\n            start\n            end\n            primary\n            node {\n              seq\n              parentConnection {\n                edges {\n                  start\n                  end\n                }\n              }\n            }\n          }\n        }\n        index\n      }\n      guide {\n        id\n        name\n        subtype\n        type\n      }\n      target {\n        id\n        name\n        type\n      }\n    }\n  }\n": types.ModificationByIdQueryDocument,
-    "\n  query guideByIdQuery($where: GuideWhere, $targetsWhere: TargetWhere) {\n    guides(where: $where) {\n      id\n      name\n      length\n      subtype\n      type\n      parentConnection(where: { node: { featureType: Chromosome } }) {\n        edges {\n          start\n          end\n          strand\n          node {\n            id\n            name\n            length\n            featureType\n          }\n        }\n      }\n      seq\n      genome {\n        species {\n          id\n          name\n        }\n      }\n      modifications {\n        id\n        name\n        target {\n          id\n          name\n          type\n        }\n      }\n      modificationsAggregate {\n        count\n      }\n      interactions {\n        duplexes {\n          primaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: true } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          secondaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: false } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          index\n        }\n        modification {\n          id\n          name\n          position\n          result\n          type\n        }\n        target {\n          id\n          name\n          type\n        }\n      }\n      cluster {\n        id\n      }\n      clusterAggregate {\n        count\n      }\n      isoform {\n        guides {\n          id\n          name\n        }\n        guidesAggregate {\n          count\n        }\n      }\n      chebi_id\n      so_id\n    }\n    targets(where: $targetsWhere) {\n      id\n      name\n      type\n    }\n  }\n": types.GuideByIdQueryDocument,
+    "\n  query guideByIdQuery($where: GuideWhere, $targetsWhere: TargetWhere) {\n    guides(where: $where) {\n      id\n      name\n      length\n      subtype\n      type\n      parentConnection(where: { node: { featureType: Chromosome } }) {\n        edges {\n          start\n          end\n          strand\n          node {\n            id\n            name\n            length\n            featureType\n          }\n        }\n      }\n      seq\n      genome {\n        species {\n          id\n          name\n        }\n      }\n      modifications {\n        id\n        name\n        target {\n          id\n          name\n          type\n        }\n      }\n      modificationsAggregate {\n        count\n      }\n      interactions {\n        duplexes {\n          primaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: true } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          secondaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: false } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          index\n        }\n        modification {\n          id\n          name\n          position\n          result\n          type\n        }\n        target {\n          id\n          name\n          type\n        }\n      }\n      cluster {\n        id\n      }\n      clusterAggregate {\n        count\n      }\n      isoform {\n        guides {\n          id\n          name\n        }\n        guidesAggregate {\n          count\n        }\n      }\n      isoformAggregate {\n        count\n      }\n      chebi_id\n      so_id\n    }\n    targets(where: $targetsWhere) {\n      id\n      name\n      type\n    }\n  }\n": types.GuideByIdQueryDocument,
     "\n  query targetByIdQuery($where: TargetWhere, $guidesWhere: GuideWhere) {\n    targets(where: $where) {\n      id\n      name\n      length\n      type\n      parentConnection(where: { node: { featureType: Chromosome } }) {\n        edges {\n          start\n          end\n          strand\n          node {\n            name\n            featureType\n          }\n        }\n      }\n      seq\n      genome {\n        species {\n          id\n          name\n        }\n      }\n      modifications {\n        id\n        name\n        position\n        result\n        type\n      }\n      modificationsAggregate {\n        count\n      }\n      interactions {\n        duplexes {\n          primaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: true } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          secondaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: false } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          index\n        }\n        modification {\n          id\n          name\n          position\n          result\n          type\n        }\n        guide {\n          id\n          name\n          subtype\n          type\n        }\n      }\n      chebi_id\n      so_id\n      url\n      secondary_struct_file\n    }\n    guides(where: $guidesWhere) {\n      id\n      name\n      type\n    }\n  }\n": types.TargetByIdQueryDocument,
     "\n  query clusterByIdQuery($where: ClusterWhere) {\n    clusters(where: $where) {\n      id\n      guides {\n        id\n        name\n        type\n        subtype\n        modificationsAggregate {\n          count\n        }\n        parentConnection(where: { node: { featureType: Chromosome } }) {\n          edges {\n            start\n            end\n          }\n        }\n      }\n      guidesAggregate {\n        count\n      }\n      referenceGuide: guides(options: { limit: 1 }) {\n        parent {\n          id\n          name\n        }\n        genome {\n          species {\n            name\n            id\n          }\n        }\n      }\n    }\n  }\n": types.ClusterByIdQueryDocument,
 };
@@ -55,7 +55,7 @@ export function graphql(source: "\n  query modificationByIdQuery(\n    $where: M
 /**
  * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
  */
-export function graphql(source: "\n  query guideByIdQuery($where: GuideWhere, $targetsWhere: TargetWhere) {\n    guides(where: $where) {\n      id\n      name\n      length\n      subtype\n      type\n      parentConnection(where: { node: { featureType: Chromosome } }) {\n        edges {\n          start\n          end\n          strand\n          node {\n            id\n            name\n            length\n            featureType\n          }\n        }\n      }\n      seq\n      genome {\n        species {\n          id\n          name\n        }\n      }\n      modifications {\n        id\n        name\n        target {\n          id\n          name\n          type\n        }\n      }\n      modificationsAggregate {\n        count\n      }\n      interactions {\n        duplexes {\n          primaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: true } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          secondaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: false } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          index\n        }\n        modification {\n          id\n          name\n          position\n          result\n          type\n        }\n        target {\n          id\n          name\n          type\n        }\n      }\n      cluster {\n        id\n      }\n      clusterAggregate {\n        count\n      }\n      isoform {\n        guides {\n          id\n          name\n        }\n        guidesAggregate {\n          count\n        }\n      }\n      chebi_id\n      so_id\n    }\n    targets(where: $targetsWhere) {\n      id\n      name\n      type\n    }\n  }\n"): (typeof documents)["\n  query guideByIdQuery($where: GuideWhere, $targetsWhere: TargetWhere) {\n    guides(where: $where) {\n      id\n      name\n      length\n      subtype\n      type\n      parentConnection(where: { node: { featureType: Chromosome } }) {\n        edges {\n          start\n          end\n          strand\n          node {\n            id\n            name\n            length\n            featureType\n          }\n        }\n      }\n      seq\n      genome {\n        species {\n          id\n          name\n        }\n      }\n      modifications {\n        id\n        name\n        target {\n          id\n          name\n          type\n        }\n      }\n      modificationsAggregate {\n        count\n      }\n      interactions {\n        duplexes {\n          primaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: true } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          secondaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: false } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          index\n        }\n        modification {\n          id\n          name\n          position\n          result\n          type\n        }\n        target {\n          id\n          name\n          type\n        }\n      }\n      cluster {\n        id\n      }\n      clusterAggregate {\n        count\n      }\n      isoform {\n        guides {\n          id\n          name\n        }\n        guidesAggregate {\n          count\n        }\n      }\n      chebi_id\n      so_id\n    }\n    targets(where: $targetsWhere) {\n      id\n      name\n      type\n    }\n  }\n"];
+export function graphql(source: "\n  query guideByIdQuery($where: GuideWhere, $targetsWhere: TargetWhere) {\n    guides(where: $where) {\n      id\n      name\n      length\n      subtype\n      type\n      parentConnection(where: { node: { featureType: Chromosome } }) {\n        edges {\n          start\n          end\n          strand\n          node {\n            id\n            name\n            length\n            featureType\n          }\n        }\n      }\n      seq\n      genome {\n        species {\n          id\n          name\n        }\n      }\n      modifications {\n        id\n        name\n        target {\n          id\n          name\n          type\n        }\n      }\n      modificationsAggregate {\n        count\n      }\n      interactions {\n        duplexes {\n          primaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: true } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          secondaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: false } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          index\n        }\n        modification {\n          id\n          name\n          position\n          result\n          type\n        }\n        target {\n          id\n          name\n          type\n        }\n      }\n      cluster {\n        id\n      }\n      clusterAggregate {\n        count\n      }\n      isoform {\n        guides {\n          id\n          name\n        }\n        guidesAggregate {\n          count\n        }\n      }\n      isoformAggregate {\n        count\n      }\n      chebi_id\n      so_id\n    }\n    targets(where: $targetsWhere) {\n      id\n      name\n      type\n    }\n  }\n"): (typeof documents)["\n  query guideByIdQuery($where: GuideWhere, $targetsWhere: TargetWhere) {\n    guides(where: $where) {\n      id\n      name\n      length\n      subtype\n      type\n      parentConnection(where: { node: { featureType: Chromosome } }) {\n        edges {\n          start\n          end\n          strand\n          node {\n            id\n            name\n            length\n            featureType\n          }\n        }\n      }\n      seq\n      genome {\n        species {\n          id\n          name\n        }\n      }\n      modifications {\n        id\n        name\n        target {\n          id\n          name\n          type\n        }\n      }\n      modificationsAggregate {\n        count\n      }\n      interactions {\n        duplexes {\n          primaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: true } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          secondaryStrandsConnection: strandsConnection(\n            where: { edge: { primary: false } }\n          ) {\n            edges {\n              start\n              end\n              primary\n              node {\n                seq\n                parentConnection {\n                  edges {\n                    start\n                    end\n                  }\n                }\n              }\n            }\n          }\n          index\n        }\n        modification {\n          id\n          name\n          position\n          result\n          type\n        }\n        target {\n          id\n          name\n          type\n        }\n      }\n      cluster {\n        id\n      }\n      clusterAggregate {\n        count\n      }\n      isoform {\n        guides {\n          id\n          name\n        }\n        guidesAggregate {\n          count\n        }\n      }\n      isoformAggregate {\n        count\n      }\n      chebi_id\n      so_id\n    }\n    targets(where: $targetsWhere) {\n      id\n      name\n      type\n    }\n  }\n"];
 /**
  * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
  */
diff --git a/src/gql/codegen/graphql.ts b/src/gql/codegen/graphql.ts
index d0e4401..f8d9477 100644
--- a/src/gql/codegen/graphql.ts
+++ b/src/gql/codegen/graphql.ts
@@ -6118,7 +6118,7 @@ export type GuideByIdQueryQueryVariables = Exact<{
 }>;
 
 
-export type GuideByIdQueryQuery = { __typename?: 'Query', guides: Array<{ __typename?: 'Guide', id: string, name?: string | null, length: number, subtype: GuideType, type: SequenceType, seq?: string | null, chebi_id?: string | null, so_id?: string | null, parentConnection: { __typename?: 'GuideParentConnection', edges: Array<{ __typename?: 'GuideParentRelationship', start: number, end: number, strand?: Strand | null, node: { __typename?: 'Chromosome', id: string, name?: string | null, length: number, featureType: FeatureType } | { __typename?: 'FeatureSequence', id: string, name?: string | null, length: number, featureType: FeatureType } | { __typename?: 'Guide', id: string, name?: string | null, length: number, featureType: FeatureType } | { __typename?: 'Target', id: string, name?: string | null, length: number, featureType: FeatureType } }> }, genome?: { __typename?: 'Genome', species?: { __typename?: 'Species', id: number, name: string } | null } | null, modifications: Array<{ __typename?: 'Modification', id: string, name: string, target: { __typename?: 'Target', id: string, name?: string | null, type: SequenceType } }>, modificationsAggregate?: { __typename?: 'GuideModificationModificationsAggregationSelection', count: number } | null, interactions: Array<{ __typename?: 'Interaction', duplexes: Array<{ __typename?: 'Duplex', index: number, primaryStrandsConnection: { __typename?: 'DuplexStrandsConnection', edges: Array<{ __typename?: 'DuplexStrandsRelationship', start: number, end: number, primary?: boolean | null, node: { __typename?: 'FeatureSequence', seq?: string | null, parentConnection: { __typename?: 'FeatureSequenceParentConnection', edges: Array<{ __typename?: 'FeatureSequenceParentRelationship', start: number, end: number }> } } }> }, secondaryStrandsConnection: { __typename?: 'DuplexStrandsConnection', edges: Array<{ __typename?: 'DuplexStrandsRelationship', start: number, end: number, primary?: boolean | null, node: { __typename?: 'FeatureSequence', seq?: string | null, parentConnection: { __typename?: 'FeatureSequenceParentConnection', edges: Array<{ __typename?: 'FeatureSequenceParentRelationship', start: number, end: number }> } } }> } }>, modification: { __typename?: 'Modification', id: string, name: string, position: number, result: string, type?: ModifType | null }, target: { __typename?: 'Target', id: string, name?: string | null, type: SequenceType } }>, cluster?: { __typename?: 'Cluster', id: string } | null, clusterAggregate?: { __typename?: 'GuideClusterClusterAggregationSelection', count: number } | null, isoform?: { __typename?: 'Isoform', guides: Array<{ __typename?: 'Guide', id: string, name?: string | null }>, guidesAggregate?: { __typename?: 'IsoformGuideGuidesAggregationSelection', count: number } | null } | null }>, targets: Array<{ __typename?: 'Target', id: string, name?: string | null, type: SequenceType }> };
+export type GuideByIdQueryQuery = { __typename?: 'Query', guides: Array<{ __typename?: 'Guide', id: string, name?: string | null, length: number, subtype: GuideType, type: SequenceType, seq?: string | null, chebi_id?: string | null, so_id?: string | null, parentConnection: { __typename?: 'GuideParentConnection', edges: Array<{ __typename?: 'GuideParentRelationship', start: number, end: number, strand?: Strand | null, node: { __typename?: 'Chromosome', id: string, name?: string | null, length: number, featureType: FeatureType } | { __typename?: 'FeatureSequence', id: string, name?: string | null, length: number, featureType: FeatureType } | { __typename?: 'Guide', id: string, name?: string | null, length: number, featureType: FeatureType } | { __typename?: 'Target', id: string, name?: string | null, length: number, featureType: FeatureType } }> }, genome?: { __typename?: 'Genome', species?: { __typename?: 'Species', id: number, name: string } | null } | null, modifications: Array<{ __typename?: 'Modification', id: string, name: string, target: { __typename?: 'Target', id: string, name?: string | null, type: SequenceType } }>, modificationsAggregate?: { __typename?: 'GuideModificationModificationsAggregationSelection', count: number } | null, interactions: Array<{ __typename?: 'Interaction', duplexes: Array<{ __typename?: 'Duplex', index: number, primaryStrandsConnection: { __typename?: 'DuplexStrandsConnection', edges: Array<{ __typename?: 'DuplexStrandsRelationship', start: number, end: number, primary?: boolean | null, node: { __typename?: 'FeatureSequence', seq?: string | null, parentConnection: { __typename?: 'FeatureSequenceParentConnection', edges: Array<{ __typename?: 'FeatureSequenceParentRelationship', start: number, end: number }> } } }> }, secondaryStrandsConnection: { __typename?: 'DuplexStrandsConnection', edges: Array<{ __typename?: 'DuplexStrandsRelationship', start: number, end: number, primary?: boolean | null, node: { __typename?: 'FeatureSequence', seq?: string | null, parentConnection: { __typename?: 'FeatureSequenceParentConnection', edges: Array<{ __typename?: 'FeatureSequenceParentRelationship', start: number, end: number }> } } }> } }>, modification: { __typename?: 'Modification', id: string, name: string, position: number, result: string, type?: ModifType | null }, target: { __typename?: 'Target', id: string, name?: string | null, type: SequenceType } }>, cluster?: { __typename?: 'Cluster', id: string } | null, clusterAggregate?: { __typename?: 'GuideClusterClusterAggregationSelection', count: number } | null, isoform?: { __typename?: 'Isoform', guides: Array<{ __typename?: 'Guide', id: string, name?: string | null }>, guidesAggregate?: { __typename?: 'IsoformGuideGuidesAggregationSelection', count: number } | null } | null, isoformAggregate?: { __typename?: 'GuideIsoformIsoformAggregationSelection', count: number } | null }>, targets: Array<{ __typename?: 'Target', id: string, name?: string | null, type: SequenceType }> };
 
 export type TargetByIdQueryQueryVariables = Exact<{
   where?: InputMaybe<TargetWhere>;
@@ -6140,6 +6140,6 @@ export const SpeciesListQueryDocument = {"kind":"Document","definitions":[{"kind
 export const TableEntriesQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"tableEntriesQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tableEntries"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"modification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"result"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"target"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"genome"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"species"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"node"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"featureType"},"value":{"kind":"EnumValue","value":"Chromosome"}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"strand"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"guide"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"subtype"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"node"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"featureType"},"value":{"kind":"EnumValue","value":"Chromosome"}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"strand"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"length"}}]}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode<TableEntriesQueryQuery, TableEntriesQueryQueryVariables>;
 export const SpeciesByIdQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"speciesByIdQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"where"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"SpeciesWhere"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationsWhere"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ModificationWhere"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetsWhere"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"TargetWhere"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guidesWhere"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"manySpecies"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"where"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"shortname"}},{"kind":"Field","name":{"kind":"Name","value":"genomes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"sequences"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"featureType"},"value":{"kind":"EnumValue","value":"Chromosome"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"featureType"}},{"kind":"Field","name":{"kind":"Name","value":"featuresConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"node"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"featureType"},"value":{"kind":"EnumValue","value":"Guide"}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationsWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"result"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"guidesAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetsWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"modificationsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guidesWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"subtype"}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"node"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"featureType"},"value":{"kind":"EnumValue","value":"Chromosome"}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"modificationsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]}}]} as unknown as DocumentNode<SpeciesByIdQueryQuery, SpeciesByIdQueryQueryVariables>;
 export const ModificationByIdQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"modificationByIdQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"where"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ModificationWhere"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guidesWhere"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideWhere"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"interactionsWhere"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"InteractionWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"where"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"result"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"target"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"genome"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"species"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guidesWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"interactions"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"interactionsWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"duplexes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"primaryStrandsConnection"},"name":{"kind":"Name","value":"strandsConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"edge"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"primary"},"value":{"kind":"BooleanValue","value":true}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"primary"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}}]}}]}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"secondaryStrandsConnection"},"name":{"kind":"Name","value":"strandsConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"edge"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"primary"},"value":{"kind":"BooleanValue","value":false}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"primary"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"index"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guide"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"subtype"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"target"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}}]}}]}}]} as unknown as DocumentNode<ModificationByIdQueryQuery, ModificationByIdQueryQueryVariables>;
-export const GuideByIdQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideByIdQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"where"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideWhere"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetsWhere"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"TargetWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"where"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"subtype"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"node"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"featureType"},"value":{"kind":"EnumValue","value":"Chromosome"}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"strand"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"featureType"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"genome"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"species"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"target"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"modificationsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","name":{"kind":"Name","value":"interactions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"duplexes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"primaryStrandsConnection"},"name":{"kind":"Name","value":"strandsConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"edge"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"primary"},"value":{"kind":"BooleanValue","value":true}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"primary"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}}]}}]}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"secondaryStrandsConnection"},"name":{"kind":"Name","value":"strandsConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"edge"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"primary"},"value":{"kind":"BooleanValue","value":false}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"primary"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"index"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"result"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"target"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"cluster"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"clusterAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","name":{"kind":"Name","value":"isoform"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guidesAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"chebi_id"}},{"kind":"Field","name":{"kind":"Name","value":"so_id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetsWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}}]}}]} as unknown as DocumentNode<GuideByIdQueryQuery, GuideByIdQueryQueryVariables>;
+export const GuideByIdQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideByIdQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"where"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideWhere"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetsWhere"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"TargetWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"where"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"subtype"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"node"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"featureType"},"value":{"kind":"EnumValue","value":"Chromosome"}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"strand"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"featureType"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"genome"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"species"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"target"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"modificationsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","name":{"kind":"Name","value":"interactions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"duplexes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"primaryStrandsConnection"},"name":{"kind":"Name","value":"strandsConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"edge"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"primary"},"value":{"kind":"BooleanValue","value":true}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"primary"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}}]}}]}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"secondaryStrandsConnection"},"name":{"kind":"Name","value":"strandsConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"edge"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"primary"},"value":{"kind":"BooleanValue","value":false}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"primary"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"index"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"result"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"target"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"cluster"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"clusterAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","name":{"kind":"Name","value":"isoform"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guidesAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"isoformAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","name":{"kind":"Name","value":"chebi_id"}},{"kind":"Field","name":{"kind":"Name","value":"so_id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetsWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}}]}}]} as unknown as DocumentNode<GuideByIdQueryQuery, GuideByIdQueryQueryVariables>;
 export const TargetByIdQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"targetByIdQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"where"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"TargetWhere"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guidesWhere"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"where"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"node"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"featureType"},"value":{"kind":"EnumValue","value":"Chromosome"}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"strand"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"featureType"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"genome"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"species"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"result"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modificationsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","name":{"kind":"Name","value":"interactions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"duplexes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"primaryStrandsConnection"},"name":{"kind":"Name","value":"strandsConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"edge"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"primary"},"value":{"kind":"BooleanValue","value":true}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"primary"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}}]}}]}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"secondaryStrandsConnection"},"name":{"kind":"Name","value":"strandsConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"edge"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"primary"},"value":{"kind":"BooleanValue","value":false}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}},{"kind":"Field","name":{"kind":"Name","value":"primary"}},{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"index"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modification"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"position"}},{"kind":"Field","name":{"kind":"Name","value":"result"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guide"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"subtype"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"chebi_id"}},{"kind":"Field","name":{"kind":"Name","value":"so_id"}},{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"secondary_struct_file"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guidesWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}}]}}]} as unknown as DocumentNode<TargetByIdQueryQuery, TargetByIdQueryQueryVariables>;
 export const ClusterByIdQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"clusterByIdQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"where"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ClusterWhere"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clusters"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"where"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"subtype"}},{"kind":"Field","name":{"kind":"Name","value":"modificationsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","name":{"kind":"Name","value":"parentConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"node"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"featureType"},"value":{"kind":"EnumValue","value":"Chromosome"}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"guidesAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"referenceGuide"},"name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"options"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"1"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"genome"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"species"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode<ClusterByIdQueryQuery, ClusterByIdQueryQueryVariables>;
\ No newline at end of file
diff --git a/src/gql/queries.ts b/src/gql/queries.ts
index 4c2b418..c946404 100644
--- a/src/gql/queries.ts
+++ b/src/gql/queries.ts
@@ -341,6 +341,9 @@ export const guideByIdQuery = graphql(/* GraphQL */ `
           count
         }
       }
+      isoformAggregate {
+        count
+      }
       chebi_id
       so_id
     }
diff --git a/src/views/GuideView.vue b/src/views/GuideView.vue
index c905e92..bb01a49 100644
--- a/src/views/GuideView.vue
+++ b/src/views/GuideView.vue
@@ -279,7 +279,9 @@ const guideIsoforms = computed(() =>
  * equals to `'...'` if not fetched yet
  */
 const isoformsCount = computed(() =>
-  guide.value?.isoform?.guidesAggregate == null
+  guide.value?.isoformAggregate?.count === 0
+    ? 0
+    : guide.value?.isoform?.guidesAggregate == null
     ? '...'
     : guide.value?.isoform?.guidesAggregate?.count - 1
 )
@@ -466,6 +468,9 @@ const ontologyLinks = computed(() => ({
             Guided modifications ({{ linkedModificationsCount }}):
           </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
+            <em v-if="linkedModificationsCount === 0" class="font-bold">
+              None
+            </em>
             <RouterLink
               v-for="modification in guide?.modifications"
               :key="modification.id"
@@ -495,6 +500,7 @@ const ontologyLinks = computed(() => ({
             Targets ({{ linkedTargetsCount }}):
           </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
+            <em v-if="linkedTargetsCount === 0" class="font-bold">None</em>
             <RouterLink
               v-for="target in linkedTargets"
               :key="target.id"
diff --git a/src/views/ModificationView.vue b/src/views/ModificationView.vue
index 74ea31c..67ffe36 100644
--- a/src/views/ModificationView.vue
+++ b/src/views/ModificationView.vue
@@ -299,6 +299,7 @@ const linkedGuidesCount = computed(() =>
             Guides ({{ linkedGuidesCount }}):
           </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
+            <em v-if="linkedGuidesCount === 0" class="font-bold">None</em>
             <RouterLink
               v-for="linkedGuide in linkedGuides"
               :key="linkedGuide.id"
diff --git a/src/views/TargetView.vue b/src/views/TargetView.vue
index 4c25e7d..f2fcdf8 100644
--- a/src/views/TargetView.vue
+++ b/src/views/TargetView.vue
@@ -465,6 +465,9 @@ const ontologyLinks = computed(() => ({
             Modifications ({{ linkedModificationsCount }}):
           </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
+            <em v-if="linkedModificationsCount === 0" class="font-bold"
+              >None</em
+            >
             <RouterLink
               v-for="modification in target?.modifications"
               :key="modification.id"
@@ -494,6 +497,7 @@ const ontologyLinks = computed(() => ({
             Guides ({{ linkedGuidesCount }}):
           </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
+            <em v-if="linkedGuidesCount === 0" class="font-bold">None</em>
             <RouterLink
               v-for="linkedGuide in linkedGuides"
               :key="linkedGuide.id"
-- 
GitLab


From d9c22c1607b0b4b5c7851372a50aea91cbe6992f Mon Sep 17 00:00:00 2001
From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr>
Date: Tue, 2 Apr 2024 17:23:48 +0200
Subject: [PATCH 3/3] fix: :adhesive_bandage: plurals even when single object

---
 src/views/GuideView.vue        | 49 ++++++++++++++++++++++++++++++----
 src/views/ModificationView.vue | 14 +++++++++-
 src/views/TargetView.vue       | 30 +++++++++++++++++++--
 3 files changed, 85 insertions(+), 8 deletions(-)

diff --git a/src/views/GuideView.vue b/src/views/GuideView.vue
index bb01a49..cd027a4 100644
--- a/src/views/GuideView.vue
+++ b/src/views/GuideView.vue
@@ -258,6 +258,20 @@ const linkedModificationsCount = computed(() =>
     : guide.value.modificationsAggregate.count
 )
 
+/**
+ * Name of "Guided modification(s)" field in "Informations" panel (potentially
+ * plural).
+ */
+const linkedModificationsFieldName = computed(
+  () =>
+    `Guided modification${
+      typeof linkedModificationsCount.value === 'number' &&
+      linkedModificationsCount.value > 1
+        ? 's'
+        : ''
+    }`
+)
+
 /**
  * Number of targets linked to the guide, equals to `'...'` if not fetched yet
  */
@@ -266,7 +280,20 @@ const linkedTargetsCount = computed(() =>
 )
 
 /**
- * List of isoforms of the guide, the guide itself being removed from the list
+ * Name of "Target(s)" field in "Informations" panel (potentially plural).
+ */
+const linkedTargetsFieldName = computed(
+  () =>
+    `Target${
+      typeof linkedTargetsCount.value === 'number' &&
+      linkedTargetsCount.value > 1
+        ? 's'
+        : ''
+    }`
+)
+
+/**
+ * List of isoforms of the guide, the guide itself being removed from the list.
  */
 const guideIsoforms = computed(() =>
   guide.value?.isoform?.guides.filter(
@@ -276,7 +303,7 @@ const guideIsoforms = computed(() =>
 
 /**
  * Number of guides which are isoforms of to the guide,
- * equals to `'...'` if not fetched yet
+ * equals to `'...'` if not fetched yet.
  */
 const isoformsCount = computed(() =>
   guide.value?.isoformAggregate?.count === 0
@@ -286,6 +313,18 @@ const isoformsCount = computed(() =>
     : guide.value?.isoform?.guidesAggregate?.count - 1
 )
 
+/**
+ * Name of "Isoform(s)" field in "Informations" panel (potentially plural).
+ */
+const isoformsFieldName = computed(
+  () =>
+    `Isoform${
+      typeof isoformsCount.value === 'number' && isoformsCount.value > 1
+        ? 's'
+        : ''
+    }`
+)
+
 /**
  * Link between the guide and its parent chromosome, also containing the
  * chromosome object
@@ -465,7 +504,7 @@ const ontologyLinks = computed(() => ({
           class="col-span-2 flex items-center gap-4 text-left italic text-slate-400"
         >
           <span class="whitespace-nowrap">
-            Guided modifications ({{ linkedModificationsCount }}):
+            {{ linkedModificationsFieldName }} ({{ linkedModificationsCount }}):
           </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
             <em v-if="linkedModificationsCount === 0" class="font-bold">
@@ -497,7 +536,7 @@ const ontologyLinks = computed(() => ({
           class="col-span-2 flex items-center gap-4 text-left italic text-slate-400"
         >
           <span class="whitespace-nowrap">
-            Targets ({{ linkedTargetsCount }}):
+            {{ linkedTargetsFieldName }} ({{ linkedTargetsCount }}):
           </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
             <em v-if="linkedTargetsCount === 0" class="font-bold">None</em>
@@ -528,7 +567,7 @@ const ontologyLinks = computed(() => ({
           class="col-span-2 flex items-center gap-4 text-left italic text-slate-400"
         >
           <span class="whitespace-nowrap">
-            Isoforms ({{ isoformsCount }}):
+            {{ isoformsFieldName }} ({{ isoformsCount }}):
           </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
             <em v-if="isoformsCount === 0" class="font-bold">None</em>
diff --git a/src/views/ModificationView.vue b/src/views/ModificationView.vue
index 67ffe36..0ed8299 100644
--- a/src/views/ModificationView.vue
+++ b/src/views/ModificationView.vue
@@ -180,6 +180,18 @@ const linkedGuidesCount = computed(() =>
   linkedGuides.value === undefined ? '...' : linkedGuides.value.length
 )
 
+/**
+ * Name of "Guide(s)" field in "Informations" panel (potentially plural).
+ */
+const linkedGuidesFieldName = computed(
+  () =>
+    `Guide${
+      typeof linkedGuidesCount.value === 'number' && linkedGuidesCount.value > 1
+        ? 's'
+        : ''
+    }`
+)
+
 // /**
 //  * The various reference IDs, cleaned from their prefix
 //  */
@@ -296,7 +308,7 @@ const linkedGuidesCount = computed(() =>
           class="col-span-3 flex items-center gap-4 text-left italic text-slate-400"
         >
           <span class="whitespace-nowrap">
-            Guides ({{ linkedGuidesCount }}):
+            {{ linkedGuidesFieldName }} ({{ linkedGuidesCount }}):
           </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
             <em v-if="linkedGuidesCount === 0" class="font-bold">None</em>
diff --git a/src/views/TargetView.vue b/src/views/TargetView.vue
index f2fcdf8..377d102 100644
--- a/src/views/TargetView.vue
+++ b/src/views/TargetView.vue
@@ -293,6 +293,20 @@ const linkedModificationsCount = computed(() =>
     : target.value.modificationsAggregate.count
 )
 
+/**
+ * Name of "Guided modification(s)" field in "Informations" panel (potentially
+ * plural).
+ */
+const linkedModificationsFieldName = computed(
+  () =>
+    `Guided modification${
+      typeof linkedModificationsCount.value === 'number' &&
+      linkedModificationsCount.value > 1
+        ? 's'
+        : ''
+    }`
+)
+
 /**
  * Number of guides linked to the target, equals to `'...'` if not fetched yet
  */
@@ -300,6 +314,18 @@ const linkedGuidesCount = computed(() =>
   linkedGuides.value === undefined ? '...' : linkedGuides.value.length
 )
 
+/**
+ * Name of "Guide(s)" field in "Informations" panel (potentially plural).
+ */
+const linkedGuidesFieldName = computed(
+  () =>
+    `Guide${
+      typeof linkedGuidesCount.value === 'number' && linkedGuidesCount.value > 1
+        ? 's'
+        : ''
+    }`
+)
+
 /**
  * Link between the target and its parent chromosome, also containing the
  * chromosome object
@@ -462,7 +488,7 @@ const ontologyLinks = computed(() => ({
           class="col-span-3 flex items-center gap-4 text-left italic text-slate-400"
         >
           <span class="whitespace-nowrap">
-            Modifications ({{ linkedModificationsCount }}):
+            {{ linkedModificationsFieldName }} ({{ linkedModificationsCount }}):
           </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
             <em v-if="linkedModificationsCount === 0" class="font-bold"
@@ -494,7 +520,7 @@ const ontologyLinks = computed(() => ({
           class="col-span-3 flex items-center gap-4 text-left italic text-slate-400"
         >
           <span class="whitespace-nowrap">
-            Guides ({{ linkedGuidesCount }}):
+            {{ linkedGuidesFieldName }} ({{ linkedGuidesCount }}):
           </span>
           <div class="flex flex-wrap justify-between gap-x-2 gap-y-1">
             <em v-if="linkedGuidesCount === 0" class="font-bold">None</em>
-- 
GitLab